X-Git-Url: https://code.delx.au/gnu-emacs/blobdiff_plain/a3e44e793796153ff1534be9c74fcab50b45de30..3b922c70d6ac2e278e839bf9dda91aaaebac3d92:/lisp/mh-e/mh-utils.el diff --git a/lisp/mh-e/mh-utils.el b/lisp/mh-e/mh-utils.el index 01780bed18..375efacb0e 100644 --- a/lisp/mh-e/mh-utils.el +++ b/lisp/mh-e/mh-utils.el @@ -1,8 +1,7 @@ ;;; mh-utils.el --- MH-E general utilities -;; Copyright (C) 1993, 1995, 1997, -;; 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 -;; Free Software Foundation, Inc. +;; Copyright (C) 1993, 1995, 1997, 2000-2014 Free Software Foundation, +;; Inc. ;; Author: Bill Wohler ;; Maintainer: Bill Wohler @@ -486,18 +485,18 @@ no effect." folder) (defmacro mh-children-p (folder) - "Return t if FOLDER from sub-folders cache has children. -The car of folder is the name, and the cdr is either t or some -sort of count that I do not understand. It's too small to be the -number of messages in the sub-folders and too large to be the -number of sub-folders. XXX" + "Return t if FOLDER from sub-folders cache has children." +;; The car of folder is the name, and the cdr is either t or some +;; sort of count that I do not understand. It's too small to be the +;; number of messages in the sub-folders and too large to be the +;; number of sub-folders. XXX `(if (cdr ,folder) t nil)) ;;;###mh-autoload (defun mh-folder-list (folder) - "Return FOLDER and its descendents. + "Return FOLDER and its descendants. FOLDER may have a + prefix. Returns a list of strings without the + prefix. If FOLDER is nil, then all folders are considered. For example, if your Mail directory only contains the folders +inbox, @@ -704,36 +703,37 @@ See Info node `(elisp) Programmed Completion' for details." (remainder (cond (last-complete (substring name (1+ last-slash))) (name (substring name 1)) (t "")))) - (cond ((eq flag nil) + (cond ((eq (car-safe flag) 'boundaries) + (list* 'boundaries + (let ((slash (mh-search-from-end ?/ orig-name))) + (if slash (1+ slash) + (if (string-match "\\`\\+" orig-name) 1 0))) + (if (cdr flag) (string-match "/" (cdr flag))))) + ((eq flag nil) (let ((try-res (try-completion - name - (mapcar (lambda (x) - (cons (concat (or last-complete "+") (car x)) - (cdr x))) - (mh-sub-folders last-complete t)) + remainder + (mh-sub-folders last-complete t) predicate))) (cond ((eq try-res nil) nil) ((and (eq try-res t) (equal name orig-name)) t) ((eq try-res t) name) - (t try-res)))) + (t (concat (or last-complete "+") try-res))))) ((eq flag t) - (mapcar (lambda (x) - (concat (or last-complete "+") x)) - (all-completions - remainder (mh-sub-folders last-complete t) predicate))) + (all-completions + remainder (mh-sub-folders last-complete t) predicate)) ((eq flag 'lambda) (let ((path (concat (unless (and (> (length name) 1) (eq (aref name 1) ?/)) mh-user-path) (substring name 1)))) - (cond (mh-allow-root-folder-flag (file-exists-p path)) + (cond (mh-allow-root-folder-flag (file-directory-p path)) ((equal path mh-user-path) nil) - (t (file-exists-p path)))))))) + (t (file-directory-p path)))))))) ;; Shush compiler. -(defvar completion-root-regexp) ; XEmacs -(defvar minibuffer-completing-file-name) ; XEmacs +(mh-do-in-xemacs + (defvar completion-root-regexp)) (defun mh-folder-completing-read (prompt default allow-root-folder-flag) "Read folder name with PROMPT and default result DEFAULT.