Using saved parent location: http://bzr.savannah.gnu.org/r/emacs/trunk/ Now on revision 103966. ------------------------------------------------------------ revno: 103966 committer: Katsumi Yamaoka branch nick: trunk timestamp: Thu 2011-04-21 02:48:04 +0000 message: shr.el (shr-expand-url): Fix typo. diff: === modified file 'lisp/gnus/shr.el' --- lisp/gnus/shr.el 2011-04-21 02:22:56 +0000 +++ lisp/gnus/shr.el 2011-04-21 02:48:04 +0000 @@ -402,7 +402,7 @@ (not shr-base)) url) ((and (not (string-match "/\\'" shr-base)) - (not (string-match "\\`" url))) + (not (string-match "\\`/" url))) (concat shr-base "/" url)) (t (concat shr-base url)))) ------------------------------------------------------------ revno: 103965 author: Lars Magne Ingebrigtsen committer: Katsumi Yamaoka branch nick: trunk timestamp: Thu 2011-04-21 02:22:56 +0000 message: shr.el (shr-expand-url): Protect against null urls. diff: === modified file 'lisp/gnus/ChangeLog' --- lisp/gnus/ChangeLog 2011-04-21 00:24:27 +0000 +++ lisp/gnus/ChangeLog 2011-04-21 02:22:56 +0000 @@ -1,3 +1,7 @@ +2011-04-21 Lars Magne Ingebrigtsen + + * shr.el (shr-expand-url): Protect against null urls. + 2011-04-20 Lars Magne Ingebrigtsen * shr.el (shr-base): New binding. === modified file 'lisp/gnus/shr.el' --- lisp/gnus/shr.el 2011-04-21 00:24:27 +0000 +++ lisp/gnus/shr.el 2011-04-21 02:22:56 +0000 @@ -397,7 +397,8 @@ (defun shr-expand-url (url) (cond ;; Absolute URL. - ((or (string-match "\\`[a-z]*:" url) + ((or (not url) + (string-match "\\`[a-z]*:" url) (not shr-base)) url) ((and (not (string-match "/\\'" shr-base)) ------------------------------------------------------------ revno: 103964 author: Lars Magne Ingebrigtsen committer: Katsumi Yamaoka branch nick: trunk timestamp: Thu 2011-04-21 00:24:27 +0000 message: shr.el (shr-base): New binding. (shr-tag-base): Keep track of . (shr-expand-url): New function used throughout. diff: === modified file 'lisp/gnus/ChangeLog' --- lisp/gnus/ChangeLog 2011-04-20 22:12:08 +0000 +++ lisp/gnus/ChangeLog 2011-04-21 00:24:27 +0000 @@ -1,3 +1,9 @@ +2011-04-20 Lars Magne Ingebrigtsen + + * shr.el (shr-base): New binding. + (shr-tag-base): Keep track of . + (shr-expand-url): New function used throughout. + 2011-04-20 Teodor Zlatanov * gnus-registry.el === modified file 'lisp/gnus/shr.el' --- lisp/gnus/shr.el 2011-03-18 13:45:04 +0000 +++ lisp/gnus/shr.el 2011-04-21 00:24:27 +0000 @@ -99,6 +99,7 @@ (defvar shr-kinsoku-shorten nil) (defvar shr-table-depth 0) (defvar shr-stylesheet nil) +(defvar shr-base nil) (defvar shr-map (let ((map (make-sparse-keymap))) @@ -127,6 +128,7 @@ (setq shr-content-cache nil) (let ((shr-state nil) (shr-start nil) + (shr-base nil) (shr-width (or shr-width (window-width)))) (shr-descend (shr-transform-dom dom)))) @@ -392,6 +394,18 @@ (forward-char 1)))) (not failed))) +(defun shr-expand-url (url) + (cond + ;; Absolute URL. + ((or (string-match "\\`[a-z]*:" url) + (not shr-base)) + url) + ((and (not (string-match "/\\'" shr-base)) + (not (string-match "\\`" url))) + (concat shr-base "/" url)) + (t + (concat shr-base url)))) + (defun shr-ensure-newline () (unless (zerop (current-column)) (insert "\n"))) @@ -773,13 +787,16 @@ plist))))) plist))) +(defun shr-tag-base (cont) + (setq shr-base (cdr (assq :href cont)))) + (defun shr-tag-a (cont) (let ((url (cdr (assq :href cont))) (title (cdr (assq :title cont))) (start (point)) shr-start) (shr-generic cont) - (shr-urlify (or shr-start start) url title))) + (shr-urlify (or shr-start start) (shr-expand-url url) title))) (defun shr-tag-object (cont) (let ((start (point)) @@ -792,7 +809,7 @@ (setq url (or url (cdr (assq :value (cdr elem))))))) (when url (shr-insert " [multimedia] ") - (shr-urlify start url)) + (shr-urlify start (shr-expand-url url))) (shr-generic cont))) (defun shr-tag-video (cont) @@ -800,7 +817,7 @@ (url (cdr (assq :src cont))) (start (point))) (shr-tag-img nil image) - (shr-urlify start url))) + (shr-urlify start (shr-expand-url url)))) (defun shr-tag-img (cont &optional url) (when (or url @@ -810,7 +827,7 @@ (not (eq shr-state 'image))) (insert "\n")) (let ((alt (cdr (assq :alt cont))) - (url (or url (cdr (assq :src cont))))) + (url (shr-expand-url (or url (cdr (assq :src cont)))))) (let ((start (point-marker))) (when (zerop (length alt)) (setq alt "*")) ------------------------------------------------------------ revno: 103963 committer: Juanma Barranquero branch nick: trunk timestamp: Thu 2011-04-21 01:34:00 +0200 message: lisp/vc/vc.el (ediff-vc-internal): Declare function. diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2011-04-20 22:31:06 +0000 +++ lisp/ChangeLog 2011-04-20 23:34:00 +0000 @@ -1,3 +1,7 @@ +2011-04-20 Juanma Barranquero + + * vc/vc.el (ediff-vc-internal): Declare function. + 2011-04-20 Stefan Monnier * shell.el: Use lexical-binding and std completion UI. === modified file 'lisp/vc/vc.el' --- lisp/vc/vc.el 2011-04-20 17:39:39 +0000 +++ lisp/vc/vc.el 2011-04-20 23:34:00 +0000 @@ -1684,6 +1684,8 @@ (vc-diff-internal t (vc-deduce-fileset t) nil nil (called-interactively-p 'interactive)))) +(declare-function ediff-vc-internal (rev1 rev2 &optional startup-hooks)) + ;;;###autoload (defun vc-version-ediff (files rev1 rev2) "Show differences between revisions of the fileset in the ------------------------------------------------------------ revno: 103962 committer: Stefan Monnier branch nick: trunk timestamp: Wed 2011-04-20 19:31:06 -0300 message: * lisp/shell.el: Use lexical-binding and std completion UI. (shell-filter-ctrl-a-ctrl-b): Work as a preoutput filter. (shell-mode): Put shell-filter-ctrl-a-ctrl-b on comint-preoutput-filter-functions rather than on comint-output-filter-functions. (shell-command-completion, shell--command-completion-data) (shell-filename-completion, shell-environment-variable-completion) (shell-c-a-p-replace-by-expanded-directory): New functions. (shell-dynamic-complete-functions, shell-dynamic-complete-command) (shell-dynamic-complete-filename, shell-replace-by-expanded-directory) (shell-dynamic-complete-environment-variable): Use them. (shell-dynamic-complete-as-environment-variable) (shell-dynamic-complete-as-command): Remove. (shell-match-partial-variable): Match past point. * lisp/comint.el: Clean up use of completion-at-point-functions. (comint-completion-at-point): New function. (comint-mode): Use it completion-at-point-functions. (comint-dynamic-complete): Make it obsolete. (comint-replace-by-expanded-history-before-point): Add dry-run arg. (comint-c-a-p-replace-by-expanded-history): New function. (comint-dynamic-complete-functions) (comint-replace-by-expanded-history): Use it. * lisp/minibuffer.el (completion-table-with-terminator): Allow dynamic termination strings. Try harder to avoid second try-completion. (completion-in-region-mode-map): Disable bindings that don't work yet. diff: === modified file 'etc/NEWS' --- etc/NEWS 2011-04-20 17:33:09 +0000 +++ etc/NEWS 2011-04-20 22:31:06 +0000 @@ -370,6 +370,8 @@ * Changes in Specialized Modes and Packages in Emacs 24.1 +** comint and modes derived from it use the generic completion code. + ** The compile.el mode can be used without font-lock-mode. `compilation-parse-errors-function' is now obsolete. === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2011-04-20 19:05:50 +0000 +++ lisp/ChangeLog 2011-04-20 22:31:06 +0000 @@ -1,5 +1,31 @@ 2011-04-20 Stefan Monnier + * shell.el: Use lexical-binding and std completion UI. + (shell-filter-ctrl-a-ctrl-b): Work as a preoutput filter. + (shell-mode): Put shell-filter-ctrl-a-ctrl-b on + comint-preoutput-filter-functions rather than on + comint-output-filter-functions. + (shell-command-completion, shell--command-completion-data) + (shell-filename-completion, shell-environment-variable-completion) + (shell-c-a-p-replace-by-expanded-directory): New functions. + (shell-dynamic-complete-functions, shell-dynamic-complete-command) + (shell-dynamic-complete-filename, shell-replace-by-expanded-directory) + (shell-dynamic-complete-environment-variable): Use them. + (shell-dynamic-complete-as-environment-variable) + (shell-dynamic-complete-as-command): Remove. + (shell-match-partial-variable): Match past point. + * comint.el: Clean up use of completion-at-point-functions. + (comint-completion-at-point): New function. + (comint-mode): Use it completion-at-point-functions. + (comint-dynamic-complete): Make it obsolete. + (comint-replace-by-expanded-history-before-point): Add dry-run arg. + (comint-c-a-p-replace-by-expanded-history): New function. + (comint-dynamic-complete-functions) + (comint-replace-by-expanded-history): Use it. + * minibuffer.el (completion-table-with-terminator): Allow dynamic + termination strings. Try harder to avoid second try-completion. + (completion-in-region-mode-map): Disable bindings that don't work yet. + * comint.el: Use lexical-binding. Require CL. (comint-dynamic-complete-functions): Use comint-filename-completion. (comint-completion-addsuffix): Tweak custom type. @@ -9,6 +35,7 @@ (comint-dynamic-complete-as-filename, comint-dynamic-complete-filename) (comint-dynamic-list-filename-completions): Use them. (comint-dynamic-simple-complete): Make obsolete. + * minibuffer.el (completion-in-region-mode): Keep completion-in-region-mode--predicate global. (completion-in-region--postch): === modified file 'lisp/comint.el' --- lisp/comint.el 2011-04-20 19:05:50 +0000 +++ lisp/comint.el 2011-04-20 22:31:06 +0000 @@ -367,7 +367,7 @@ `comint-use-prompt-regexp'.") (defvar comint-dynamic-complete-functions - '(comint-replace-by-expanded-history comint-filename-completion) + '(comint-c-a-p-replace-by-expanded-history comint-filename-completion) "List of functions called to perform completion. Works like `completion-at-point-functions'. See also `comint-dynamic-complete'. @@ -493,7 +493,7 @@ (define-key map [menu-bar completion complete-file] '("Complete File Name" . comint-dynamic-complete-filename)) (define-key map [menu-bar completion complete] - '("Complete Before Point" . comint-dynamic-complete)) + '("Complete at Point" . completion-at-point)) ;; Input history: (define-key map [menu-bar inout] (cons "In/Out" (make-sparse-keymap "In/Out"))) @@ -683,6 +683,7 @@ (setq font-lock-defaults '(nil t)) (add-hook 'change-major-mode-hook 'font-lock-defontify nil t) (add-hook 'isearch-mode-hook 'comint-history-isearch-setup nil t) + (add-hook 'completion-at-point-functions 'comint-completion-at-point nil t) ;; This behavior is not useful in comint buffers, and is annoying (set (make-local-variable 'next-line-add-newlines) nil)) @@ -1231,6 +1232,12 @@ Returns t if successful." (interactive) + (let ((f (comint-c-a-p-replace-by-expanded-history silent start))) + (if f (funcall f)))) + +(defun comint-c-a-p-replace-by-expanded-history (&optional silent start) + "Expand input command history at point. +For use on `completion-at-point-functions'." (if (and comint-input-autoexpand (if comint-use-prompt-regexp ;; Use comint-prompt-regexp @@ -1240,20 +1247,28 @@ ;; Use input fields. User input that hasn't been entered ;; yet, at the end of the buffer, has a nil `field' property. (and (null (get-char-property (point) 'field)) - (string-match "!\\|^\\^" (field-string))))) - ;; Looks like there might be history references in the command. - (let ((previous-modified-tick (buffer-modified-tick))) - (comint-replace-by-expanded-history-before-point silent start) - (/= previous-modified-tick (buffer-modified-tick))))) - - -(defun comint-replace-by-expanded-history-before-point (silent &optional start) + (string-match "!\\|^\\^" (field-string)))) + (catch 'dry-run + (comint-replace-by-expanded-history-before-point + silent start 'dry-run))) + (lambda () + ;; Looks like there might be history references in the command. + (let ((previous-modified-tick (buffer-modified-tick))) + (comint-replace-by-expanded-history-before-point silent start) + (/= previous-modified-tick (buffer-modified-tick)))))) + + +(defun comint-replace-by-expanded-history-before-point + (silent &optional start dry-run) "Expand directory stack reference before point. See `comint-replace-by-expanded-history'. Returns t if successful. If the optional argument START is non-nil, that specifies the start of the text to scan for history references, rather -than the logical beginning of line." +than the logical beginning of line. + +If DRY-RUN is non-nil, throw to DRY-RUN before performing any +actual side-effect." (save-excursion (let ((toend (- (line-end-position) (point))) (start (or start (comint-line-beginning-position)))) @@ -1274,10 +1289,12 @@ (goto-char (1+ (point)))) ((looking-at "![0-9]+\\($\\|[^-]\\)") ;; We cannot know the interpreter's idea of input line numbers. + (if dry-run (throw dry-run 'message)) (goto-char (match-end 0)) (message "Absolute reference cannot be expanded")) ((looking-at "!-\\([0-9]+\\)\\(:?[0-9^$*-]+\\)?") ;; Just a number of args from `number' lines backward. + (if dry-run (throw dry-run 'history)) (let ((number (1- (string-to-number (buffer-substring (match-beginning 1) (match-end 1)))))) @@ -1293,6 +1310,7 @@ (message "Relative reference exceeds input history size")))) ((or (looking-at "!!?:?\\([0-9^$*-]+\\)") (looking-at "!!")) ;; Just a number of args from the previous input line. + (if dry-run (throw dry-run 'expand)) (replace-match (comint-args (comint-previous-input-string 0) (match-beginning 1) (match-end 1)) t t) @@ -1301,6 +1319,7 @@ "!\\??\\({\\(.+\\)}\\|\\(\\sw+\\)\\)\\(:?[0-9^$*-]+\\)?") ;; Most recent input starting with or containing (possibly ;; protected) string, maybe just a number of args. Phew. + (if dry-run (throw dry-run 'expand)) (let* ((mb1 (match-beginning 1)) (me1 (match-end 1)) (mb2 (match-beginning 2)) (me2 (match-end 2)) (exp (buffer-substring (or mb2 mb1) (or me2 me1))) @@ -1322,6 +1341,7 @@ (message "History item: %d" (1+ pos))))) ((looking-at "\\^\\([^^]+\\)\\^?\\([^^]*\\)\\^?") ;; Quick substitution on the previous input line. + (if dry-run (throw dry-run 'expand)) (let ((old (buffer-substring (match-beginning 1) (match-end 1))) (new (buffer-substring (match-beginning 2) (match-end 2))) (pos nil)) @@ -1334,7 +1354,8 @@ (replace-match new t t) (message "History item: substituted")))) (t - (forward-char 1))))))) + (forward-char 1))))) + nil)) (defun comint-magic-space (arg) @@ -1740,9 +1761,9 @@ (insert copy) copy))) (input (if (not (eq comint-input-autoexpand 'input)) - ;; Just whatever's already there + ;; Just whatever's already there. intxt - ;; Expand and leave it visible in buffer + ;; Expand and leave it visible in buffer. (comint-replace-by-expanded-history t pmark) (buffer-substring pmark (point)))) (history (if (not (eq comint-input-autoexpand 'history)) @@ -2990,16 +3011,12 @@ (setq i (+ 1 (match-beginning 0))))) filename))) - -(defun comint-dynamic-complete () - "Dynamically perform completion at point. -Calls the functions in `comint-dynamic-complete-functions' to perform -completion until a function returns non-nil, at which point completion is -assumed to have occurred." - (interactive) - (let ((completion-at-point-functions comint-dynamic-complete-functions)) - (completion-at-point))) - +(defun comint-completion-at-point () + (run-hook-with-args-until-success 'comint-dynamic-complete-functions)) + +(define-obsolete-function-alias + 'comint-dynamic-complete + 'completion-at-point "24.1") (defun comint-dynamic-complete-filename () "Dynamically complete the filename at point. === modified file 'lisp/minibuffer.el' --- lisp/minibuffer.el 2011-04-20 19:05:50 +0000 +++ lisp/minibuffer.el 2011-04-20 22:31:06 +0000 @@ -247,7 +247,9 @@ in which case TERMINATOR-REGEXP is a regular expression whose submatch number 1 should match TERMINATOR. This is used when there is a need to distinguish occurrences of the TERMINATOR strings which are really terminators -from others (e.g. escaped)." +from others (e.g. escaped). In this form, the car of TERMINATOR can also be, +instead of a string, a function that takes the completion and returns the +\"terminated\" string." ;; FIXME: This implementation is not right since it only adds the terminator ;; in try-completion, so any completion-style that builds the completion via ;; all-completions won't get the terminator, and selecting an entry in @@ -258,22 +260,28 @@ (bounds (completion-boundaries string table pred suffix)) (terminator-regexp (if (consp terminator) (cdr terminator) (regexp-quote terminator))) - (max (string-match terminator-regexp suffix))) + (max (and terminator-regexp + (string-match terminator-regexp suffix)))) (list* 'boundaries (car bounds) (min (cdr bounds) (or max (length suffix)))))) ((eq action nil) (let ((comp (try-completion string table pred))) (if (consp terminator) (setq terminator (car terminator))) (if (eq comp t) - (concat string terminator) - (if (and (stringp comp) - ;; FIXME: Try to avoid this second call, especially since + (if (functionp terminator) + (funcall terminator string) + (concat string terminator)) + (if (and (stringp comp) (not (zerop (length comp))) + ;; Try to avoid the second call to try-completion, since ;; it may be very inefficient (because `comp' made us ;; jump to a new boundary, so we complete in that ;; boundary with an empty start string). - ;; completion-boundaries might help. + (let ((newbounds (completion-boundaries comp table pred ""))) + (< (car newbounds) (length comp))) (eq (try-completion comp table pred) t)) - (concat comp terminator) + (if (functionp terminator) + (funcall terminator comp) + (concat comp terminator)) comp)))) ((eq action t) ;; FIXME: We generally want the `try' and `all' behaviors to be @@ -1294,6 +1302,8 @@ (defvar completion-in-region-mode-map (let ((map (make-sparse-keymap))) + ;; FIXME: Only works if completion-in-region-mode was activated via + ;; completion-at-point called directly. (define-key map "?" 'completion-help-at-point) (define-key map "\t" 'completion-at-point) map) === modified file 'lisp/shell.el' --- lisp/shell.el 2011-04-19 13:44:55 +0000 +++ lisp/shell.el 2011-04-20 22:31:06 +0000 @@ -1,4 +1,4 @@ -;;; shell.el --- specialized comint.el for running the shell +;;; shell.el --- specialized comint.el for running the shell -*- lexical-binding: t -*- ;; Copyright (C) 1988, 1993-1997, 2000-2011 Free Software Foundation, Inc. @@ -79,7 +79,7 @@ ;; Shell Mode Commands: ;; shell Fires up the shell process -;; tab comint-dynamic-complete Complete filename/command/history +;; tab completion-at-point Complete filename/command/history ;; m-? comint-dynamic-list-filename-completions ;; List completions in help buffer ;; m-c-f shell-forward-command Forward a shell command @@ -96,6 +96,7 @@ ;;; Code: +(eval-when-compile (require 'cl)) (require 'comint) ;;; Customization and Buffer Variables @@ -181,12 +182,12 @@ This is a fine thing to set in your `.emacs' file.") (defvar shell-dynamic-complete-functions - '(comint-replace-by-expanded-history - shell-dynamic-complete-environment-variable - shell-dynamic-complete-command - shell-replace-by-expanded-directory - shell-dynamic-complete-filename - comint-dynamic-complete-filename) + '(comint-c-a-p-replace-by-expanded-history + shell-environment-variable-completion + shell-command-completion + shell-c-a-p-replace-by-expanded-directory + shell-filename-completion + comint-filename-completion) "List of functions called to perform completion. This variable is used to initialize `comint-dynamic-complete-functions' in the shell buffer. @@ -312,7 +313,7 @@ If the value is `input', then the expansion is seen on input. If the value is `history', then the expansion is only when inserting into the buffer's input ring. See also `comint-magic-space' and -`comint-dynamic-complete'. +`comint-dynamic-complete-functions'. This variable supplies a default for `comint-input-autoexpand', for Shell mode only." @@ -339,7 +340,7 @@ (let ((map (nconc (make-sparse-keymap) comint-mode-map))) (define-key map "\C-c\C-f" 'shell-forward-command) (define-key map "\C-c\C-b" 'shell-backward-command) - (define-key map "\t" 'comint-dynamic-complete) + (define-key map "\t" 'completion-at-point) (define-key map (kbd "M-RET") 'shell-resync-dirs) (define-key map "\M-?" 'comint-dynamic-list-filename-completions) (define-key map [menu-bar completion] @@ -486,7 +487,7 @@ (t "dirs"))) ;; Bypass a bug in certain versions of bash. (when (string-equal shell "bash") - (add-hook 'comint-output-filter-functions + (add-hook 'comint-preoutput-filter-functions 'shell-filter-ctrl-a-ctrl-b nil t))) (when shell-dir-cookie-re ;; Watch for magic cookies in the output to track the current dir. @@ -494,7 +495,7 @@ 'shell-dir-cookie-watcher nil t)) (comint-read-input-ring t))) -(defun shell-filter-ctrl-a-ctrl-b (_string) +(defun shell-filter-ctrl-a-ctrl-b (string) "Remove `^A' and `^B' characters from comint output. Bash uses these characters as internal quoting characters in its @@ -504,15 +505,10 @@ Rendition (SGR) control sequences (formerly known as ANSI escape sequences) are used to color the prompt. -This function can be put on `comint-output-filter-functions'. -The argument STRING is ignored." - (let ((pmark (process-mark (get-buffer-process (current-buffer))))) - (save-excursion - (goto-char (or (and (markerp comint-last-output-start) - (marker-position comint-last-output-start)) - (point-min))) - (while (re-search-forward "[\C-a\C-b]" pmark t) - (replace-match ""))))) +This function can be put on `comint-preoutput-filter-functions'." + (if (string-match "[\C-a\C-b]" string) + (replace-regexp-in-string "[\C-a\C-b]" "" string t t) + string)) (defun shell-write-history-on-exit (process event) "Called when the shell process is stopped. @@ -1011,30 +1007,36 @@ path. Completion is dependent on the value of `shell-completion-execonly', plus -those that effect file completion. See `shell-dynamic-complete-as-command'. +those that effect file completion. Returns t if successful." (interactive) + (let ((data (shell-command-completion))) + (if data + (prog2 (unless (window-minibuffer-p (selected-window)) + (message "Completing command name...")) + (apply #'completion-in-region data))))) + +(defun shell-command-completion () + "Return the completion data for the command at point, if any." (let ((filename (comint-match-partial-filename))) (if (and filename (save-match-data (not (string-match "[~/]" filename))) (eq (match-beginning 0) (save-excursion (shell-backward-command 1) (point)))) - (prog2 (unless (window-minibuffer-p (selected-window)) - (message "Completing command name...")) - (shell-dynamic-complete-as-command))))) - - -(defun shell-dynamic-complete-as-command () - "Dynamically complete at point as a command. -See `shell-dynamic-complete-filename'. Returns t if successful." + (shell--command-completion-data)))) + +(defun shell--command-completion-data () + "Return the completion data for the command at point." (let* ((filename (or (comint-match-partial-filename) "")) + (start (if (zerop (length filename)) (point) (match-beginning 0))) + (end (if (zerop (length filename)) (point) (match-end 0))) (filenondir (file-name-nondirectory filename)) - (path-dirs (cdr (reverse exec-path))) + (path-dirs (cdr (reverse exec-path))) ;FIXME: Why `cdr'? (cwd (file-name-as-directory (expand-file-name default-directory))) (ignored-extensions (and comint-completion-fignore - (mapconcat (function (lambda (x) (concat (regexp-quote x) "$"))) + (mapconcat (function (lambda (x) (concat (regexp-quote x) "\\'"))) comint-completion-fignore "\\|"))) (dir "") (comps-in-dir ()) (file "") (abs-file-name "") (completions ())) @@ -1058,18 +1060,31 @@ (setq comps-in-dir (cdr comps-in-dir))) (setq path-dirs (cdr path-dirs))) ;; OK, we've got a list of completions. - (let ((success (let ((comint-completion-addsuffix nil)) - (comint-dynamic-simple-complete filenondir completions)))) - (if (and (memq success '(sole shortest)) comint-completion-addsuffix - (not (file-directory-p (comint-match-partial-filename)))) - (insert " ")) - success))) + (list + start end + (lambda (string pred action) + (completion-table-with-terminator + " " (lambda (string pred action) + (if (string-match "/" string) + (completion-file-name-table string pred action) + (complete-with-action action completions string pred))) + string pred action))))) + +;; (defun shell-dynamic-complete-as-command () +;; "Dynamically complete at point as a command. +;; See `shell-dynamic-complete-filename'. Returns t if successful." +;; (apply #'completion-in-region shell--command-completion-data)) (defun shell-dynamic-complete-filename () "Dynamically complete the filename at point. This completes only if point is at a suitable position for a filename argument." (interactive) + (let ((data (shell-filename-completion))) + (if data (apply #'completion-in-region data)))) + +(defun shell-filename-completion () + "Return the completion data for file name at point, if any." (let ((opoint (point)) (beg (comint-line-beginning-position))) (when (save-excursion @@ -1077,24 +1092,21 @@ (match-end 0) beg)) (re-search-forward "[^ \t][ \t]" opoint t)) - (comint-dynamic-complete-as-filename)))) + (comint-filename-completion)))) (defun shell-match-partial-variable () "Return the shell variable at point, or nil if none is found." (save-excursion - (let ((limit (point))) - (if (re-search-backward "[^A-Za-z0-9_{}]" nil 'move) - (or (looking-at "\\$") (forward-char 1))) - ;; Anchor the search forwards. - (if (or (eolp) (looking-at "[^A-Za-z0-9_{}$]")) - nil - (re-search-forward "\\$?{?[A-Za-z0-9_]*}?" limit) - (buffer-substring (match-beginning 0) (match-end 0)))))) + (if (re-search-backward "[^A-Za-z0-9_{(]" nil 'move) + (or (looking-at "\\$") (forward-char 1))) + (if (or (eolp) (looking-at "[^A-Za-z0-9_{($]")) + nil + (looking-at "\\$?[{(]?[A-Za-z0-9_]*[})]?") + (buffer-substring (match-beginning 0) (match-end 0))))) (defun shell-dynamic-complete-environment-variable () "Dynamically complete the environment variable at point. Completes if after a variable, i.e., if it starts with a \"$\". -See `shell-dynamic-complete-as-environment-variable'. This function is similar to `comint-dynamic-complete-filename', except that it searches `process-environment' for completion candidates. Note that this may @@ -1106,38 +1118,69 @@ Returns non-nil if successful." (interactive) - (let ((variable (shell-match-partial-variable))) - (if (and variable (string-match "^\\$" variable)) + (let ((data (shell-environment-variable-completion))) + (if data (prog2 (unless (window-minibuffer-p (selected-window)) (message "Completing variable name...")) - (shell-dynamic-complete-as-environment-variable))))) - - -(defun shell-dynamic-complete-as-environment-variable () - "Dynamically complete at point as an environment variable. -Used by `shell-dynamic-complete-environment-variable'. -Uses `comint-dynamic-simple-complete'." - (let* ((var (or (shell-match-partial-variable) "")) - (variable (substring var (or (string-match "[^$({]\\|$" var) 0))) - (variables (mapcar (function (lambda (x) - (substring x 0 (string-match "=" x)))) - process-environment)) - (addsuffix comint-completion-addsuffix) - (comint-completion-addsuffix nil) - (success (comint-dynamic-simple-complete variable variables))) - (if (memq success '(sole shortest)) - (let* ((var (shell-match-partial-variable)) - (variable (substring var (string-match "[^$({]" var))) - (protection (cond ((string-match "{" var) "}") - ((string-match "(" var) ")") - (t ""))) - (suffix (cond ((null addsuffix) "") - ((file-directory-p - (comint-directory (getenv variable))) "/") - (t " ")))) - (insert protection suffix))) - success)) - + (apply #'completion-in-region data))))) + + +(defun shell-environment-variable-completion () + "Completion data for an environment variable at point, if any." + (let* ((var (shell-match-partial-variable)) + (end (match-end 0))) + (when (and (not (zerop (length var))) (eq (aref var 0) ?$)) + (let* ((start + (save-excursion + (goto-char (match-beginning 0)) + (looking-at "\\$?[({]*") + (match-end 0))) + (variables (mapcar (lambda (x) + (substring x 0 (string-match "=" x))) + process-environment)) + (suffix (case (char-before start) (?\{ "}") (?\( ")") (t "")))) + (list + start end + (apply-partially + #'completion-table-with-terminator + (cons (lambda (comp) + (concat comp + suffix + (if (file-directory-p + (comint-directory (getenv comp))) + "/"))) + "\\`a\\`") + variables)))))) + + +(defun shell-c-a-p-replace-by-expanded-directory () + "Expand directory stack reference before point. +For use on `completion-at-point-functions'." + (when (comint-match-partial-filename) + (save-excursion + (goto-char (match-beginning 0)) + (let ((stack (cons default-directory shell-dirstack)) + (index (cond ((looking-at "=-/?") + (length shell-dirstack)) + ((looking-at "=\\([0-9]+\\)/?") + (string-to-number + (buffer-substring + (match-beginning 1) (match-end 1))))))) + (when index + (let ((start (match-beginning 0)) + (end (match-end 0)) + (replacement (file-name-as-directory (nth index stack)))) + (lambda () + (cond + ((>= index (length stack)) + (error "Directory stack not that deep")) + (t + (save-excursion + (goto-char start) + (insert replacement) + (delete-char (- end start))) + (message "Directory item: %d" index) + t))))))))) (defun shell-replace-by-expanded-directory () "Expand directory stack reference before point. @@ -1146,24 +1189,8 @@ Returns t if successful." (interactive) - (if (comint-match-partial-filename) - (save-excursion - (goto-char (match-beginning 0)) - (let ((stack (cons default-directory shell-dirstack)) - (index (cond ((looking-at "=-/?") - (length shell-dirstack)) - ((looking-at "=\\([0-9]+\\)/?") - (string-to-number - (buffer-substring - (match-beginning 1) (match-end 1))))))) - (cond ((null index) - nil) - ((>= index (length stack)) - (error "Directory stack not that deep")) - (t - (replace-match (file-name-as-directory (nth index stack)) t t) - (message "Directory item: %d" index) - t)))))) + (let ((f (shell-c-a-p-replace-by-expanded-directory))) + (if f (funcall f)))) (provide 'shell) ------------------------------------------------------------ revno: 103961 author: Teodor Zlatanov committer: Katsumi Yamaoka branch nick: trunk timestamp: Wed 2011-04-20 22:12:08 +0000 message: gnus-registry.el (gnus-registry--split-fancy-with-parent-internal): Fix loop bugs. (gnus-registry-ignored-groups): New variable. (gnus-registry-ignore-group-p): Use it. (gnus-registry-handle-action): Use `gnus-registry-ignore-group-p' and set the destination group to nil (same as delete) if it's ignored. diff: === modified file 'lisp/gnus/ChangeLog' --- lisp/gnus/ChangeLog 2011-04-20 00:43:48 +0000 +++ lisp/gnus/ChangeLog 2011-04-20 22:12:08 +0000 @@ -1,3 +1,12 @@ +2011-04-20 Teodor Zlatanov + + * gnus-registry.el + (gnus-registry--split-fancy-with-parent-internal): Fix loop bugs. + (gnus-registry-ignored-groups): New variable. + (gnus-registry-ignore-group-p): Use it. + (gnus-registry-handle-action): Use `gnus-registry-ignore-group-p' and + set the destination group to nil (same as delete) if it's ignored. + 2011-04-20 Katsumi Yamaoka * gnus-registry.el (gnus-registry-action) === modified file 'lisp/gnus/gnus-registry.el' --- lisp/gnus/gnus-registry.el 2011-04-20 00:43:48 +0000 +++ lisp/gnus/gnus-registry.el 2011-04-20 22:12:08 +0000 @@ -137,6 +137,16 @@ :group 'gnus-registry :type '(repeat regexp)) +(defcustom gnus-registry-ignored-groups + '("delayed$" "drafts$" "queue$" "INBOX$" "^nnmairix:" "archive") + "List of groups that the Gnus Registry will ignore. +The group names are matched, they don't have to be fully +qualified. + +nnmairix groups are specifically excluded because they are ephemeral." + :group 'gnus-registry + :type '(repeat regexp)) + (defcustom gnus-registry-install 'ask "Whether the registry should be installed." :group 'gnus-registry @@ -341,6 +351,8 @@ 10 "gnus-registry-handle-action %S" (list id from to subject sender recipients)) (let ((db gnus-registry-db) + ;; if the group is ignored, set the destination to nil (same as delete) + (to (if (gnus-registry-ignore-group-p to) nil to)) ;; safe if not found (entry (gnus-registry-get-or-make-entry id)) (subject (gnus-string-remove-all-properties @@ -442,8 +454,10 @@ (gnus-message 9 "%s is looking up %s" log-agent reference) (loop for group in (gnus-registry-get-id-key reference 'group) when (gnus-registry-follow-group-p group) - do (gnus-message 7 "%s traced %s to %s" log-agent reference group) - do (push group found))) + do + (progn + (gnus-message 7 "%s traced %s to %s" log-agent reference group) + (push group found)))) ;; filter the found groups and return them ;; the found groups are the full groups (setq found (gnus-registry-post-process-groups @@ -468,7 +482,7 @@ (if gnus-registry-track-extra 7 9) "%s (extra tracking) traced subject '%s' to %s" log-agent subject group) - collect group)) + and collect group)) ;; filter the found groups and return them ;; the found groups are NOT the full groups (setq found (gnus-registry-post-process-groups @@ -495,7 +509,7 @@ (if gnus-registry-track-extra 7 9) "%s (extra tracking) traced sender '%s' to %s" log-agent sender group) - collect group))) + and collect group))) ;; filter the found groups and return them ;; the found groups are NOT the full groups @@ -525,7 +539,7 @@ (if gnus-registry-track-extra 7 9) "%s (extra tracking) traced recipient '%s' to %s" log-agent recp group) - collect group))))) + and collect group))))) ;; filter the found groups and return them ;; the found groups are NOT the full groups @@ -641,6 +655,18 @@ group nnmail-split-fancy-with-parent-ignore-groups))))) +(defun gnus-registry-ignore-group-p (group) + "Determines if a group name should be ignored. +Consults `gnus-registry-ignored-groups' and +`nnmail-split-fancy-with-parent-ignore-groups'." + (and group + (not (or (gnus-grep-in-list + group + gnus-registry-ignored-groups) + (gnus-grep-in-list + group + nnmail-split-fancy-with-parent-ignore-groups))))) + (defun gnus-registry-wash-for-keywords (&optional force) "Get the keywords of the current article. Overrides existing keywords with FORCE set non-nil." ------------------------------------------------------------ revno: 103960 committer: Stefan Monnier branch nick: trunk timestamp: Wed 2011-04-20 16:05:50 -0300 message: * lisp/comint.el: Use lexical-binding. Use std completion UI. Require CL. (comint-dynamic-complete-functions): Use comint-filename-completion. (comint-completion-addsuffix): Tweak custom type. (comint-filename-completion, comint--common-suffix) (comint--common-quoted-suffix, comint--table-subvert) (comint--complete-file-name-data): New functions. (comint-dynamic-complete-as-filename, comint-dynamic-complete-filename) (comint-dynamic-list-filename-completions): Use them. (comint-dynamic-simple-complete): Make obsolete. * lisp/minibuffer.el (completion-in-region-mode): Keep completion-in-region-mode--predicate global. (completion-in-region--postch): Assume completion-in-region-mode--predicate is not null. diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2011-04-20 18:08:21 +0000 +++ lisp/ChangeLog 2011-04-20 19:05:50 +0000 @@ -1,5 +1,19 @@ 2011-04-20 Stefan Monnier + * comint.el: Use lexical-binding. Require CL. + (comint-dynamic-complete-functions): Use comint-filename-completion. + (comint-completion-addsuffix): Tweak custom type. + (comint-filename-completion, comint--common-suffix) + (comint--common-quoted-suffix, comint--table-subvert) + (comint--complete-file-name-data): New functions. + (comint-dynamic-complete-as-filename, comint-dynamic-complete-filename) + (comint-dynamic-list-filename-completions): Use them. + (comint-dynamic-simple-complete): Make obsolete. + * minibuffer.el (completion-in-region-mode): + Keep completion-in-region-mode--predicate global. + (completion-in-region--postch): + Assume completion-in-region-mode--predicate is not null. + * progmodes/flymake.el (flymake-start-syntax-check-process): Obey `dir'. Simplify. === modified file 'lisp/comint.el' --- lisp/comint.el 2011-04-19 13:44:55 +0000 +++ lisp/comint.el 2011-04-20 19:05:50 +0000 @@ -1,4 +1,4 @@ -;;; comint.el --- general command interpreter in a window stuff +;;; comint.el --- general command interpreter in a window stuff -*- lexical-binding: t -*- ;; Copyright (C) 1988, 1990, 1992-2011 Free Software Foundation, Inc. @@ -101,6 +101,7 @@ ;;; Code: +(eval-when-compile (require 'cl)) (require 'ring) ;; Buffer Local Variables: @@ -366,7 +367,7 @@ `comint-use-prompt-regexp'.") (defvar comint-dynamic-complete-functions - '(comint-replace-by-expanded-history comint-dynamic-complete-filename) + '(comint-replace-by-expanded-history comint-filename-completion) "List of functions called to perform completion. Works like `completion-at-point-functions'. See also `comint-dynamic-complete'. @@ -2831,10 +2832,9 @@ ;; comint-dynamic-list-filename-completions List completions in help buffer. ;; comint-replace-by-expanded-filename Expand and complete filename at point; ;; replace with expanded/completed name. -;; comint-dynamic-simple-complete Complete stub given candidates. -;; These are not installed in the comint-mode keymap. But they are -;; available for people who want them. Shell-mode installs them: +;; These are not installed in the comint-mode keymap. But they are +;; available for people who want them. Shell-mode installs them: ;; (define-key shell-mode-map "\t" 'comint-dynamic-complete) ;; (define-key shell-mode-map "\M-?" ;; 'comint-dynamic-list-filename-completions))) @@ -2849,14 +2849,16 @@ :group 'comint-completion) (defcustom comint-completion-addsuffix t - "If non-nil, add a `/' to completed directories, ` ' to file names. -If a cons pair, it should be of the form (DIRSUFFIX . FILESUFFIX) where -DIRSUFFIX and FILESUFFIX are strings added on unambiguous or exact completion. + "If non-nil, add ` ' to file names. +It can either be a string FILESUFFIX or a cons (DIRSUFFIX . FILESUFFIX) +where DIRSUFFIX is ignored and FILESUFFIX is a string added on unambiguous +or exact completion. This mirrors the optional behavior of tcsh." :type '(choice (const :tag "None" nil) - (const :tag "Add /" t) - (cons :tag "Suffix pair" - (string :tag "Directory suffix") + (const :tag "Add SPC" t) + (string :tag "File suffix") + (cons :tag "Obsolete suffix pair" + (string :tag "Ignored") (string :tag "File suffix"))) :group 'comint-completion) @@ -3016,73 +3018,125 @@ (when (comint--match-partial-filename) (unless (window-minibuffer-p (selected-window)) (message "Completing file name...")) - (comint-dynamic-complete-as-filename))) - -(defun comint-dynamic-complete-as-filename () - "Dynamically complete at point as a filename. -See `comint-dynamic-complete-filename'. Returns t if successful." - (let* ((completion-ignore-case read-file-name-completion-ignore-case) - (completion-ignored-extensions comint-completion-fignore) - ;; If we bind this, it breaks remote directory tracking in rlogin.el. - ;; I think it was originally bound to solve file completion problems, - ;; but subsequent changes may have made this unnecessary. sm. - ;;(file-name-handler-alist nil) - (minibuffer-p (window-minibuffer-p (selected-window))) - (success t) - (dirsuffix (cond ((not comint-completion-addsuffix) "") - ((not (consp comint-completion-addsuffix)) "/") - (t (car comint-completion-addsuffix)))) - (filesuffix (cond ((not comint-completion-addsuffix) "") + (apply #'completion-in-region (comint--complete-file-name-data)))) + +(defun comint-filename-completion () + "Return completion data for filename at point, if any." + (when (comint--match-partial-filename) + (comint--complete-file-name-data))) + +;; FIXME: comint--common-suffix, comint--common-quoted-suffix, and +;; comint--table-subvert copied from pcomplete. And they don't fully solve +;; the problem, since selecting a file from *Completions* won't quote it. + +(defun comint--common-suffix (s1 s2) + (assert (not (or (string-match "\n" s1) (string-match "\n" s2)))) + ;; Since S2 is expected to be the "unquoted/expanded" version of S1, + ;; there shouldn't be any case difference, even if the completion is + ;; case-insensitive. + (let ((case-fold-search nil)) + (string-match ".*?\\(.*\\)\n.*\\1\\'" (concat s1 "\n" s2)) + (- (match-end 1) (match-beginning 1)))) + +(defun comint--common-quoted-suffix (s1 s2) + "Find the common suffix between S1 and S2 where S1 is the expanded S2. +S1 is expected to be the unquoted and expanded version of S1. +Returns (PS1 . PS2), i.e. the shortest prefixes of S1 and S2, such that +S1 = (concat PS1 SS1) and S2 = (concat PS2 SS2) and +SS1 = (unquote SS2)." + (let* ((cs (comint--common-suffix s1 s2)) + (ss1 (substring s1 (- (length s1) cs))) + (qss1 (comint-quote-filename ss1)) + qc) + (if (and (not (equal ss1 qss1)) + (setq qc (comint-quote-filename (substring ss1 0 1))) + (eq t (compare-strings s2 (- (length s2) cs (length qc) -1) + (- (length s2) cs -1) + qc nil nil))) + ;; The difference found is just that one char is quoted in S2 + ;; but not in S1, keep looking before this difference. + (comint--common-quoted-suffix + (substring s1 0 (- (length s1) cs)) + (substring s2 0 (- (length s2) cs (length qc) -1))) + (cons (substring s1 0 (- (length s1) cs)) + (substring s2 0 (- (length s2) cs)))))) + +(defun comint--table-subvert (table s1 s2 string pred action) + "Completion table that replaces the prefix S1 with S2 in STRING. +When TABLE, S1 and S2 are provided by `apply-partially', the result +is a completion table which completes strings of the form (concat S1 S) +in the same way as TABLE completes strings of the form (concat S2 S)." + (let* ((str (if (eq t (compare-strings string 0 (length s1) s1 nil nil + completion-ignore-case)) + (concat s2 (comint-unquote-filename + (substring string (length s1)))))) + (res (if str (complete-with-action action table str pred)))) + (when res + (cond + ((and (eq (car-safe action) 'boundaries)) + (let ((beg (or (and (eq (car-safe res) 'boundaries) (cadr res)) 0))) + (list* 'boundaries + (max (length s1) + ;; FIXME: Adjust because of quoting/unquoting. + (+ beg (- (length s1) (length s2)))) + (and (eq (car-safe res) 'boundaries) (cddr res))))) + ((stringp res) + (if (eq t (compare-strings res 0 (length s2) s2 nil nil + completion-ignore-case)) + (concat s1 (comint-quote-filename + (substring res (length s2)))))) + ((eq action t) + (let ((bounds (completion-boundaries str table pred ""))) + (if (>= (car bounds) (length s2)) + res + (let ((re (concat "\\`" + (regexp-quote (substring s2 (car bounds)))))) + (delq nil + (mapcar (lambda (c) + (if (string-match re c) + (substring c (match-end 0)))) + res)))))) + ;; E.g. action=nil and it's the only completion. + (res))))) + +(defun comint--complete-file-name-data () + "Return the completion data for file name at point." + (let* ((filesuffix (cond ((not comint-completion-addsuffix) "") + ((stringp comint-completion-addsuffix) + comint-completion-addsuffix) ((not (consp comint-completion-addsuffix)) " ") (t (cdr comint-completion-addsuffix)))) - (filename (comint-match-partial-filename)) + (filename (comint--match-partial-filename)) (filename-beg (if filename (match-beginning 0) (point))) (filename-end (if filename (match-end 0) (point))) - (filename (or filename "")) - (filedir (file-name-directory filename)) - (filenondir (file-name-nondirectory filename)) - (directory (if filedir (comint-directory filedir) default-directory)) - (completion (file-name-completion filenondir directory))) - (cond ((null completion) - (if minibuffer-p - (minibuffer-message "No completions of %s" filename) - (message "No completions of %s" filename)) - (setq success nil)) - ((eq completion t) ; Means already completed "file". - (insert filesuffix) - (unless minibuffer-p - (message "Sole completion"))) - ((string-equal completion "") ; Means completion on "directory/". - (comint-dynamic-list-filename-completions)) - (t ; Completion string returned. - (let ((file (concat (file-name-as-directory directory) completion))) - ;; Insert completion. Note that the completion string - ;; may have a different case than what's in the prompt, - ;; if read-file-name-completion-ignore-case is non-nil, - (delete-region filename-beg filename-end) - (if filedir (insert (comint-quote-filename filedir))) - (insert (comint-quote-filename (directory-file-name completion))) - (cond ((symbolp (file-name-completion completion directory)) - ;; We inserted a unique completion. - (insert (if (file-directory-p file) dirsuffix filesuffix)) - (unless minibuffer-p - (message "Completed"))) - ((and comint-completion-recexact comint-completion-addsuffix - (string-equal filenondir completion) - (file-exists-p file)) - ;; It's not unique, but user wants shortest match. - (insert (if (file-directory-p file) dirsuffix filesuffix)) - (unless minibuffer-p - (message "Completed shortest"))) - ((or comint-completion-autolist - (string-equal filenondir completion)) - ;; It's not unique, list possible completions. - (comint-dynamic-list-filename-completions)) - (t - (unless minibuffer-p - (message "Partially completed"))))))) - success)) + (unquoted (if filename (comint--unquote&expand-filename filename) "")) + (table + (let ((prefixes (comint--common-quoted-suffix + unquoted filename))) + (apply-partially + #'comint--table-subvert + #'completion-file-name-table + (cdr prefixes) (car prefixes))))) + (list + filename-beg filename-end + (lambda (string pred action) + (let ((completion-ignore-case read-file-name-completion-ignore-case) + (completion-ignored-extensions comint-completion-fignore)) + (if (zerop (length filesuffix)) + (complete-with-action action table string pred) + ;; Add a space at the end of completion. Use a terminator-regexp + ;; that never matches since the terminator cannot appear + ;; within the completion field anyway. + (completion-table-with-terminator + (cons filesuffix "\\`a\\`") + table string pred action))))))) +(defun comint-dynamic-complete-as-filename () + "Dynamically complete at point as a filename. +See `comint-dynamic-complete-filename'. Returns t if successful." + (apply #'completion-in-region (comint--complete-file-name-data))) +(make-obsolete 'comint-dynamic-complete-as-filename + 'comint-filename-completion "24.1") (defun comint-replace-by-expanded-filename () "Dynamically expand and complete the filename at point. @@ -3155,28 +3209,20 @@ (unless minibuffer-p (message "Partially completed")) 'partial))))))) +(make-obsolete 'comint-dynamic-simple-complete 'completion-in-region "24.1") (defun comint-dynamic-list-filename-completions () "Display a list of possible completions for the filename at point." (interactive) - (let* ((completion-ignore-case read-file-name-completion-ignore-case) - ;; If we bind this, it breaks remote directory tracking in rlogin.el. - ;; I think it was originally bound to solve file completion problems, - ;; but subsequent changes may have made this unnecessary. sm. - ;;(file-name-handler-alist nil) - (filename (or (comint-match-partial-filename) "")) - (filedir (file-name-directory filename)) - (filenondir (file-name-nondirectory filename)) - (directory (if filedir (comint-directory filedir) default-directory)) - (completions (file-name-all-completions filenondir directory))) - (if (not completions) - (if (window-minibuffer-p (selected-window)) - (minibuffer-message "No completions of %s" filename) - (message "No completions of %s" filename)) - (comint-dynamic-list-completions - (mapcar 'comint-quote-filename completions) - (comint-quote-filename filenondir))))) + (let* ((data (comint--complete-file-name-data)) + (minibuffer-completion-table (nth 2 data)) + (minibuffer-completion-predicate nil) + (ol (make-overlay (nth 0 data) (nth 1 data) nil nil t))) + (overlay-put ol 'field 'completion) + (unwind-protect + (call-interactively 'minibuffer-completion-help) + (delete-overlay ol)))) ;; This is bound locally in a *Completions* buffer to the list of @@ -3244,7 +3290,6 @@ (if (eq first ?\s) (set-window-configuration comint-dynamic-list-completions-config) (setq unread-command-events (listify-key-sequence key))))))) - (defun comint-get-next-from-history () "After fetching a line from input history, this fetches the following line. @@ -3742,9 +3787,8 @@ ;; ;; For modes that use comint-mode, comint-dynamic-complete-functions is the ;; hook to add completion functions to. Functions on this list should return -;; non-nil if completion occurs (i.e., further completion should not occur). -;; You could use comint-dynamic-simple-complete to do the bulk of the -;; completion job. +;; the completion data according to the documentation of +;; `completion-at-point-functions' (provide 'comint) === modified file 'lisp/minibuffer.el' --- lisp/minibuffer.el 2011-04-14 00:16:11 +0000 +++ lisp/minibuffer.el 2011-04-20 19:05:50 +0000 @@ -58,6 +58,8 @@ ;;; Todo: +;; - Make things like icomplete-mode or lightning-completion work with +;; completion-in-region-mode. ;; - completion-insert-complete-hook (called after inserting a complete ;; completion), typically used for "complete-abbrev" where it would expand ;; the abbrev. Tho we'd probably want to provide it from the @@ -1314,8 +1316,7 @@ (save-excursion (goto-char (nth 2 completion-in-region--data)) (line-end-position))) - (when completion-in-region-mode--predicate - (funcall completion-in-region-mode--predicate)))) + (funcall completion-in-region-mode--predicate))) (completion-in-region-mode -1))) ;; (defalias 'completion-in-region--prech 'completion-in-region--postch) @@ -1330,12 +1331,12 @@ (delq (assq 'completion-in-region-mode minor-mode-overriding-map-alist) minor-mode-overriding-map-alist)) (if (null completion-in-region-mode) - (unless (or (equal "*Completions*" (buffer-name (window-buffer))) - (null completion-in-region-mode--predicate)) + (unless (equal "*Completions*" (buffer-name (window-buffer))) (minibuffer-hide-completions)) ;; (add-hook 'pre-command-hook #'completion-in-region--prech) - (set (make-local-variable 'completion-in-region-mode--predicate) - completion-in-region-mode-predicate) + (assert completion-in-region-mode-predicate) + (setq completion-in-region-mode--predicate + completion-in-region-mode-predicate) (add-hook 'post-command-hook #'completion-in-region--postch) (push `(completion-in-region-mode . ,completion-in-region-mode-map) minor-mode-overriding-map-alist))) ------------------------------------------------------------ revno: 103959 committer: Stefan Monnier branch nick: trunk timestamp: Wed 2011-04-20 15:08:21 -0300 message: * lisp/progmodes/flymake.el (flymake-start-syntax-check-process): Obey `dir'. diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2011-04-20 17:39:39 +0000 +++ lisp/ChangeLog 2011-04-20 18:08:21 +0000 @@ -1,5 +1,8 @@ 2011-04-20 Stefan Monnier + * progmodes/flymake.el (flymake-start-syntax-check-process): + Obey `dir'. Simplify. + * vc/vc.el (vc-version-ediff): Call ediff-vc-internal directly, since we're in VC after all. === modified file 'lisp/progmodes/flymake.el' --- lisp/progmodes/flymake.el 2011-01-26 08:36:39 +0000 +++ lisp/progmodes/flymake.el 2011-04-20 18:08:21 +0000 @@ -1152,35 +1152,34 @@ (defun flymake-start-syntax-check-process (cmd args dir) "Start syntax check process." - (let* ((process nil)) - (condition-case err - (progn - (when dir - (let ((default-directory dir)) - (flymake-log 3 "starting process on dir %s" default-directory))) - (setq process (apply 'start-file-process - "flymake-proc" (current-buffer) cmd args)) - (set-process-sentinel process 'flymake-process-sentinel) - (set-process-filter process 'flymake-process-filter) - (push process flymake-processes) - - (setq flymake-is-running t) - (setq flymake-last-change-time nil) - (setq flymake-check-start-time (flymake-float-time)) - - (flymake-report-status nil "*") - (flymake-log 2 "started process %d, command=%s, dir=%s" - (process-id process) (process-command process) - default-directory) - process) - (error - (let* ((err-str (format "Failed to launch syntax check process '%s' with args %s: %s" - cmd args (error-message-string err))) - (source-file-name buffer-file-name) - (cleanup-f (flymake-get-cleanup-function source-file-name))) - (flymake-log 0 err-str) - (funcall cleanup-f) - (flymake-report-fatal-status "PROCERR" err-str)))))) + (condition-case err + (let* ((process + (let ((default-directory (or dir default-directory))) + (when dir + (flymake-log 3 "starting process on dir %s" dir)) + (apply 'start-file-process + "flymake-proc" (current-buffer) cmd args)))) + (set-process-sentinel process 'flymake-process-sentinel) + (set-process-filter process 'flymake-process-filter) + (push process flymake-processes) + + (setq flymake-is-running t) + (setq flymake-last-change-time nil) + (setq flymake-check-start-time (flymake-float-time)) + + (flymake-report-status nil "*") + (flymake-log 2 "started process %d, command=%s, dir=%s" + (process-id process) (process-command process) + default-directory) + process) + (error + (let* ((err-str (format "Failed to launch syntax check process '%s' with args %s: %s" + cmd args (error-message-string err))) + (source-file-name buffer-file-name) + (cleanup-f (flymake-get-cleanup-function source-file-name))) + (flymake-log 0 err-str) + (funcall cleanup-f) + (flymake-report-fatal-status "PROCERR" err-str))))) (defun flymake-kill-process (proc) "Kill process PROC." ------------------------------------------------------------ revno: 103958 committer: Stefan Monnier branch nick: trunk timestamp: Wed 2011-04-20 14:39:39 -0300 message: * lisp/vc/vc.el (vc-version-ediff): Call ediff-vc-internal directly, since we're in VC after all. diff: === modified file 'doc/emacs/ChangeLog' --- doc/emacs/ChangeLog 2011-04-20 17:33:09 +0000 +++ doc/emacs/ChangeLog 2011-04-20 17:39:39 +0000 @@ -1,7 +1,6 @@ 2011-04-20 Christoph Scholtes - * maintaining.texi (Old Revisions): Add paragraph on new function - vc-ediff. + * maintaining.texi (Old Revisions): Mention new function vc-ediff. 2011-03-26 Chong Yidong === modified file 'doc/emacs/maintaining.texi' --- doc/emacs/maintaining.texi 2011-04-20 17:33:09 +0000 +++ doc/emacs/maintaining.texi 2011-04-20 17:39:39 +0000 @@ -746,10 +746,10 @@ @findex vc-ediff The function @code{vc-ediff} works like @code{vc-diff} and provides a way to -visually compare two revisions of a file an Ediff session, @pxref{Top, Ediff, -ediff, The Ediff Manual}. It compares the file associated with the current -buffer with the last repository revision. To compare two arbitrary revisions -of the current file, call @code{vc-ediff} with a prefix argument. +visually compare two revisions of a file in an Ediff session, @pxref{Top, +Ediff, ediff, The Ediff Manual}. It compares the file associated with the +current buffer with the last repository revision. To compare two arbitrary +revisions of the current file, call @code{vc-ediff} with a prefix argument. @vindex vc-diff-switches @vindex vc-rcs-diff-switches === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2011-04-20 17:33:09 +0000 +++ lisp/ChangeLog 2011-04-20 17:39:39 +0000 @@ -1,7 +1,12 @@ +2011-04-20 Stefan Monnier + + * vc/vc.el (vc-version-ediff): Call ediff-vc-internal directly, since + we're in VC after all. + 2011-04-20 Christoph Scholtes * vc/vc.el (vc-diff-build-argument-list-internal) - (vc-version-ediff, vc-ediff): New functions. + (vc-version-ediff, vc-ediff): New commands. (vc-version-diff): Use vc-diff-build-argument-list-internal. 2011-04-20 Stefan Monnier === modified file 'lisp/vc/vc.el' --- lisp/vc/vc.el 2011-04-20 17:33:09 +0000 +++ lisp/vc/vc.el 2011-04-20 17:39:39 +0000 @@ -1704,10 +1704,8 @@ ;; We could spin off an ediff session per file in the file set. ((= (length files) 1) (ediff-load-version-control) - (find-file (car files)) - (funcall - (intern (format "ediff-%S-internal" ediff-version-control-package)) - rev1 rev2 nil)) + (find-file (car files)) ;FIXME: find-file from Elisp is bad. + (ediff-vc-internal rev1 rev2 nil)) (t (error "More than one file is not supported")))) ------------------------------------------------------------ revno: 103957 author: Christoph Scholtes committer: Stefan Monnier branch nick: trunk timestamp: Wed 2011-04-20 14:33:09 -0300 message: * lisp/vc/vc.el (vc-diff-build-argument-list-internal) (vc-version-ediff, vc-ediff): New functions. (vc-version-diff): Use vc-diff-build-argument-list-internal. * doc/emacs/maintaining.texi (Old Revisions): Add paragraph on new function vc-ediff. * etc/NEWS: Document new function `vc-ediff'. diff: === modified file 'doc/emacs/ChangeLog' --- doc/emacs/ChangeLog 2011-04-08 18:53:26 +0000 +++ doc/emacs/ChangeLog 2011-04-20 17:33:09 +0000 @@ -1,3 +1,8 @@ +2011-04-20 Christoph Scholtes + + * maintaining.texi (Old Revisions): Add paragraph on new function + vc-ediff. + 2011-03-26 Chong Yidong * display.texi (Auto Scrolling): Fix scroll-up/scroll-down confusion. @@ -22,8 +27,8 @@ 2011-03-09 Eli Zaretskii - * ack.texi (Acknowledgments): Convert to ISO-8859-1 encoding. Use - Texinfo @-commands for non Latin-1 characters. + * ack.texi (Acknowledgments): Convert to ISO-8859-1 encoding. + Use Texinfo @-commands for non Latin-1 characters. * makefile.w32-in (MAKEINFO_OPTS): Add --enable-encoding. @@ -231,8 +236,8 @@ (Old Revisions): Document revert-buffer for vc-diff. (Log Buffer): Promote to a subsection. Document header lines. - * macos.texi (Mac / GNUstep Basics): Document - ns-right-alternate-modifier. + * macos.texi (Mac / GNUstep Basics): + Document ns-right-alternate-modifier. * emacs.texi (Top): Update node listing. @@ -553,8 +558,8 @@ mail-self-blind, mail-default-reply-to, and mail-archive-file-name in favor of mail-default-headers. Ad index entries for user-full-name and user-mail-address. - (Citing Mail): Update changes in Message mode behavior. Document - mail-yank-prefix. + (Citing Mail): Update changes in Message mode behavior. + Document mail-yank-prefix. (Mail Signature): New node, moved from Mail Misc. (Mail Aliases): Mail abbrevs are the default with Message mode. (Mail Methods): Note that Message mode is now the default. @@ -724,8 +729,8 @@ * files.texi (Visiting): * buffers.texi (Buffers): Max buffer size is now 512 MB. - * frames.texi (Cut/Paste Other App): Document - save-interprogram-paste-before-kill. + * frames.texi (Cut/Paste Other App): + Document save-interprogram-paste-before-kill. * killing.texi (Kill Options): New node. @@ -813,8 +818,8 @@ * entering.texi (Exiting): C-z is now bound to suspend-frame. * custom.texi (Init Examples): Replace Rumseld with Cheny (Bug#3519). - (Key Bindings): Reference Init Rebinding in introductory text. Shift - some of the introduction to Keymaps node. + (Key Bindings): Reference Init Rebinding in introductory text. + Shift some of the introduction to Keymaps node. (Keymaps): Simplify. (Local Keymaps): Simplify. Move binding example to Init Rebinding. (Minibuffer Maps): Remove mention of Mocklisp. @@ -1080,8 +1085,8 @@ * misc.texi (Interactive Shell, Saving Emacs Sessions) (Shell History Copying, Terminal emulator): Copyedits. - * xresources.texi (Resources): Simplify descriptions. Shorten - description of editres, which is not very useful these days. + * xresources.texi (Resources): Simplify descriptions. + Shorten description of editres, which is not very useful these days. (Table of Resources): Document fontBackend resource. * trouble.texi (Quitting): Add other undo bindings to table. @@ -1102,8 +1107,8 @@ (Enabling Multibyte): Remove obsolete discussion. Copyedits. (Language Environments): Add language environments new to Emacs 23. (Multibyte Conversion): Node deleted. - (Coding Systems): Remove obsolete unify-8859-on-decoding-mode. Don't - mention obsolete emacs-mule coding system. + (Coding Systems): Remove obsolete unify-8859-on-decoding-mode. + Don't mention obsolete emacs-mule coding system. (Output Coding): Copyedits. * emacs.texi (Top): Update node listing. @@ -1159,8 +1164,8 @@ * mini.texi (Completion Commands): Describe Emacs 23 completion rules. (Completion Options): Document read-file-name-completion-ignore-case, - read-buffer-completion-ignore-case, and completion-styles. Remove - description of partial-completion-mode. + read-buffer-completion-ignore-case, and completion-styles. + Remove description of partial-completion-mode. 2009-03-14 Glenn Morris @@ -1582,8 +1587,8 @@ * files.texi (Visiting): Document new behavior of confirm-nonexistent-file-or-buffer. - * buffers.texi (Select Buffer): Document - confirm-nonexistent-file-or-buffer. + * buffers.texi (Select Buffer): + Document confirm-nonexistent-file-or-buffer. * picture-xtra.texi (Picture Mode): Use picture-mode instead of edit-picture. @@ -1708,8 +1713,8 @@ * dired.texi (Dired): Mention C-x C-d too. (Dired Enter): Document M-n in the Dired minibuffer. - (Dired Navigation): Explain dired-goto-file more clearly. Document - dired-isearch-filenames. + (Dired Navigation): Explain dired-goto-file more clearly. + Document dired-isearch-filenames. (Dired Deletion): Remove unnecessary "expunged" terminology. (Flagging Many Files): & is now rebound to `% &'. (Shell Commands in Dired): Document dired-do-async-shell-command. @@ -1731,8 +1736,8 @@ open-paren-in-column-0-is-defun-start more concisely. (Which Function, Program Indent, Info Lookup): Minor edits. (Basic Indent): If region is active, TAB indents the region. - (Multi-line Indent): If region is active, TAB indents the region. Note - that indent-region is useful when Transient Mark mode is off. + (Multi-line Indent): If region is active, TAB indents the region. + Note that indent-region is useful when Transient Mark mode is off. (Matching): The delimiter at the cursor is highlighted---the character changes color. (Symbol Completion): Link to Completion node. @@ -1761,12 +1766,12 @@ 2008-10-31 Chong Yidong - * misc.texi (Document View): Renamed from Document Files, moved here + * misc.texi (Document View): Rename from Document Files, moved here from files.texi. - * files.texi (Version Control): Moved to maintaining.texi. Subnodes - moved as well. - (Document Files): Moved to misc.texi. + * files.texi (Version Control): Move to maintaining.texi. + Subnodes moved as well. + (Document Files): Move to misc.texi. * maintaining.texi (Change Log): Document log-edit-insert-changelog and vc-update-change-log. @@ -1782,8 +1787,8 @@ 2008-10-31 Chong Yidong - * building.texi (Compilation Mode): Document - compilation-auto-jump-to-first-error. + * building.texi (Compilation Mode): + Document compilation-auto-jump-to-first-error. (Debuggers): Lower GUD subsections to subsubsections. (Starting GUD): Add cindex. (Lisp Interaction): Note that scratch is no longer the initial buffer. @@ -1801,8 +1806,8 @@ * emacs.texi (Top): Update node listings. - * misc.texi (Emacs Server): Rewrite. Document daemon-mode. Don't - mention obsolete emacs.bash script. + * misc.texi (Emacs Server): Rewrite. Document daemon-mode. + Don't mention obsolete emacs.bash script. (Invoking emacsclient): Rewrite, moving optional arguments to emacsclient Options. (emacsclient Options): New node. Document server-use-tcp and @@ -1842,7 +1847,7 @@ 2008-10-22 Tassilo Horn - * emacs.texi (Acknowledgments): Added myself to Acknowledgments + * emacs.texi (Acknowledgments): Add myself to Acknowledgments section. 2008-10-21 Chong Yidong @@ -1877,15 +1882,15 @@ crucial to using distributed version control systems. (Comparing Files): Note that diff uses the minibuffer, and that the output is shown using Diff mode. - (Diff Mode): Explain what "patch" and "hunk" mean. Document - diff-update-on-the-fly, diff-refine-hunk, and + (Diff Mode): Explain what "patch" and "hunk" mean. + Document diff-update-on-the-fly, diff-refine-hunk, and diff-show-trailing-whitespaces. (File Archives): Add rar support. * major.texi (Choosing Modes): Make mode selection sequence more obvious by describing the steps in order of priority. Note that - magic-mode-alist is nil by default. Document - magic-fallback-mode-alist. + magic-mode-alist is nil by default. + Document magic-fallback-mode-alist. 2008-10-20 Chong Yidong @@ -1944,8 +1949,8 @@ 2008-10-12 Chong Yidong * mini.texi (Minibuffer File): Add xref to File Names. - (Minibuffer File): Add discussion of `~' in file names. Add - insert-default-directory index reference. + (Minibuffer File): Add discussion of `~' in file names. + Add insert-default-directory index reference. * files.texi (File Names): Reorganize description. (Visiting): Add xref to Mode Line. Copyedits. @@ -1990,8 +1995,8 @@ * msdog-xtra.texi (MS-DOS Printing, MS-DOS and MULE): No need to create cpNNN coding systems anymore. (MS-DOS and MULE): Don't mention code-pages.el. Don't mention support - for unibyte mode. Don't mention line-drawing characters. Don't - mention dos-unsupported-char-glyph. + for unibyte mode. Don't mention line-drawing characters. + Don't mention dos-unsupported-char-glyph. 2008-09-25 Chong Yidong @@ -2022,12 +2027,12 @@ * kmacro.texi (Basic Keyboard Macro): Make F3 and F4 the preferred interface for defining macros. Simplify examples. Note that C-g quits macro definitions. - (Keyboard Macro Counter): Document using F3 to insert counter. Give - usage example. + (Keyboard Macro Counter): Document using F3 to insert counter. + Give usage example. (Keyboard Macro Query): Organize query responses in a table. - * fixit.texi (Fixit): Favor C-/ keybinding for undo throughout. Link - to Erasing node. + * fixit.texi (Fixit): Favor C-/ keybinding for undo throughout. + Link to Erasing node. (Undo): Reorganize paragraphs for logical flow. Move keybinding rationale to a footnote. (Kill Errors): Remove node, due to redundancy with Erasing. @@ -2229,8 +2234,8 @@ * display.texi (Visual Line Mode): New node. * basic.texi (Inserting Text): Move DEL to deletion node. - (Moving Point): Add additional alternative key bindings. Describe - line-move-visual. + (Moving Point): Add additional alternative key bindings. + Describe line-move-visual. (Erasing): Describe DEL. (Basic Undo, Blank Lines, Arguments): Copyedit. (Continuation Lines): Mention Visual Line mode. @@ -2349,8 +2354,8 @@ 2008-06-04 Miles Bader - * display.texi (Temporary Face Changes): Add - `adjust-buffer-face-height'. Rewrite description of + * display.texi (Temporary Face Changes): + Add `adjust-buffer-face-height'. Rewrite description of `increase-buffer-face-height' and `decrease-default-face-height' now that they aren't bound by default. @@ -2514,8 +2519,8 @@ (Replace, Unconditional Replace, Other Repeating Search): Describe Transient Mark mode as the default. - * text.texi (Words, Pages, Fill Commands, HTML Mode): Describe - Transient Mark mode as the default. + * text.texi (Words, Pages, Fill Commands, HTML Mode): + Describe Transient Mark mode as the default. (Paragraphs): Describe how M-h behaves when region is active. * trouble.texi (Quitting): Clarify effects of C-g. @@ -2661,8 +2666,8 @@ 2007-11-10 Paul Pogonyshev - * search.texi (Query Replace): Mention - `query-replace-show-replacement'. + * search.texi (Query Replace): + Mention `query-replace-show-replacement'. 2007-11-09 Nick Roberts @@ -3015,8 +3020,8 @@ 2007-04-20 David Koppelman - * display.texi (Highlight Interactively): Document - hi-lock-file-patterns-policy. + * display.texi (Highlight Interactively): + Document hi-lock-file-patterns-policy. 2007-04-20 Martin Rudalics @@ -3574,8 +3579,8 @@ 2006-08-10 Richard Stallman * text.texi (Format Faces): Substantial rewrites to deal - with face merging. Empty regions don't count. Clarify - face property inheritance. + with face merging. Empty regions don't count. + Clarify face property inheritance. 2006-08-08 Romain Francoise @@ -4034,7 +4039,7 @@ of emacs-xtra.texi. Convert each @chapter into @section, @section into @subsection, etc. - * emacs-xtra.texi (MS-DOS): Renamed from "MS-DOG". All references + * emacs-xtra.texi (MS-DOS): Rename from "MS-DOG". All references updated. * msdog.texi (Microsoft Windows): Rename from "Emacs and Microsoft @@ -4071,7 +4076,7 @@ (Comparing Files): Delete what duplicates new node. (Files): Put Diff Mode in menu. - * misc.texi (Diff Mode): Moved to files.texi. + * misc.texi (Diff Mode): Move to files.texi. * emacs.texi (Top): Update menu for Diff Mode. @@ -4997,8 +5002,8 @@ 2005-11-01 Nick Roberts - * building.texi (Other GDB User Interface Buffers): Describe - the command gdb-use-inferior-io-buffer. + * building.texi (Other GDB User Interface Buffers): + Describe the command gdb-use-inferior-io-buffer. 2005-10-31 Romain Francoise @@ -5036,8 +5041,8 @@ 2005-10-25 Nick Roberts - * building.texi (GDB Graphical Interface): Describe - gdb-mouse-until. + * building.texi (GDB Graphical Interface): + Describe gdb-mouse-until. 2005-10-23 Richard M. Stallman @@ -5104,7 +5109,7 @@ 2005-10-09 Jan Djärv - * cmdargs.texi (Icons X): Removed options -i, -itype, --icon-type, + * cmdargs.texi (Icons X): Remove options -i, -itype, --icon-type, added -nb, --no-bitmap-icon. 2005-10-07 Nick Roberts @@ -5141,16 +5146,16 @@ emulation and related variables. (Mac International): Mention Central European and Cyrillic support. Now `keyboard-coding-system' is dynamically changed. - Add description about coding system for selection. Add - description about language environment. - (Mac Environment Variables): Mention - `~/.MacOSX/environment.plist'. Give example of command line + Add description about coding system for selection. + Add description about language environment. + (Mac Environment Variables): + Mention `~/.MacOSX/environment.plist'. Give example of command line arguments. Add Preferences support. (Mac Directories): Explicitly state that this node is for Mac OS Classic only. - (Mac Font Specs): Mention specification for scalable fonts. List - supported charsets. Add preferred way of creating fontsets. Add - description about `mac-allow-anti-aliasing'. + (Mac Font Specs): Mention specification for scalable fonts. + List supported charsets. Add preferred way of creating fontsets. + Add description about `mac-allow-anti-aliasing'. (Mac Functions): Add descriptions about `mac-set-file-creator', `mac-get-file-creator', `mac-set-file-type', `mac-get-file-type', and `mac-get-preference'. @@ -5312,8 +5317,8 @@ 2005-07-16 Eli Zaretskii * display.texi (Standard Faces): Explain that customization of - `menu' face has no effect on w32 and with GTK. Add - cross-references. + `menu' face has no effect on w32 and with GTK. + Add cross-references. * cmdargs.texi (General Variables): Clarify the default location of $HOME on w32 systems. @@ -5325,8 +5330,8 @@ 2005-07-08 Kenichi Handa - * mule.texi (Recognize Coding): Recommend - revert-buffer-with-coding-system instead of revert-buffer. + * mule.texi (Recognize Coding): + Recommend revert-buffer-with-coding-system instead of revert-buffer. 2005-07-07 Richard M. Stallman @@ -5374,12 +5379,12 @@ 2005-06-23 Richard M. Stallman - * anti.texi (Antinews): Renamed show-nonbreak-escape to + * anti.texi (Antinews): Rename show-nonbreak-escape to nobreak-char-display. * emacs.texi (Top): Update detailed node listing. - * display.texi (Text Display): Renamed show-nonbreak-escape + * display.texi (Text Display): Rename show-nonbreak-escape to nobreak-char-display and no-break-space to nobreak-space. (Standard Faces): Split up the list of standard faces and put it in a separate node. Add nobreak-space and @@ -5391,8 +5396,8 @@ 2005-06-23 Kenichi Handa - * mule.texi (International): List all supported scripts. Adjust - text for that leim is now included in the normal Emacs + * mule.texi (International): List all supported scripts. + Adjust text for that leim is now included in the normal Emacs distribution. (Language Environments): List all language environments. Intlfonts contains fonts for most supported scripts, not all.. @@ -5634,8 +5639,8 @@ * ack.texi (Acknowledgments): Delete info about iso-acc.el. - * dired.texi (Misc Dired Features): Document - dired-compare-directories. + * dired.texi (Misc Dired Features): + Document dired-compare-directories. * files.texi (Filesets): New node. (File Conveniences): Document Image mode. @@ -6023,8 +6028,8 @@ 2005-03-19 Eli Zaretskii - * anti.texi (Antinews): Refer to Emacs 21.4, not 21.3. Update - copyright years. + * anti.texi (Antinews): Refer to Emacs 21.4, not 21.3. + Update copyright years. 2005-03-14 Nick Roberts @@ -6231,7 +6236,7 @@ (Scrolling): For C-l, don't presume text terminal. (Horizontal Scrolling): Simplify intro. (Follow Mode): Clarify. - (Cursor Display): Moved before Display Custom. + (Cursor Display): Move before Display Custom. (Display Custom): Explain no-redraw-on-reenter is for text terminals. Doc default-tab-width. Doc line truncation more thoroughly. @@ -6401,8 +6406,8 @@ cross-references to mailutils documentation. Describe various methods of specifying mailbox names, user names and user passwords for rmail. - (Remote Mailboxes): New section. Describe - how movemail handles remote mailboxes. Describe configuration + (Remote Mailboxes): New section. + Describe how movemail handles remote mailboxes. Describe configuration options used to control its behavior. (Other Mailbox Formats): Explain handling of various mailbox formats. @@ -6576,8 +6581,8 @@ 2004-11-10 Andre Spiegel * files.texi (Version Control): Rewrite the introduction about - version systems, mentioning the new ones that we support. Thanks - to Alex Ott, Karl Fogel, Stefan Monnier, and David Kastrup for + version systems, mentioning the new ones that we support. + Thanks to Alex Ott, Karl Fogel, Stefan Monnier, and David Kastrup for suggestions. 2004-11-03 Jan Djärv @@ -7072,8 +7077,8 @@ 2004-02-21 Juri Linkov - * cmdargs.texi (Action Arguments): Add alias --find-file. Add - --directory, --help, --version. Move text about command-line-args + * cmdargs.texi (Action Arguments): Add alias --find-file. + Add --directory, --help, --version. Move text about command-line-args to Command Arguments. (Initial Options): Add @cindex for --script. Fix @cindex for -q. Add --no-desktop. Add alias --no-multibyte, --no-unibyte. @@ -7093,7 +7098,7 @@ 2004-01-24 Richard M. Stallman - * emacs.texi (Acknowledgments): Renamed from Acknowledgements. + * emacs.texi (Acknowledgments): Rename from Acknowledgements. Include it only @ifnotinfo. Patch the preceding and following node headers to point to each other. @@ -7176,8 +7181,8 @@ 2003-09-24 Luc Teirlinck - * cmdargs.texi (Font X): Mention new default font. More - fully describe long font names, wildcard patterns and the + * cmdargs.texi (Font X): Mention new default font. + More fully describe long font names, wildcard patterns and the problems involved. (Result of discussion on emacs-devel.) 2003-09-22 Luc Teirlinck @@ -7199,8 +7204,8 @@ * screen.texi (Mode Line): Say that POS comes before LINE. Mention `size-indication-mode'. - * display.texi (Optional Mode Line): Document - `size-indication-mode'. + * display.texi (Optional Mode Line): + Document `size-indication-mode'. * basic.texi (Position Info): Mention `size-indication-mode'. 2003-09-07 Luc Teirlinck === modified file 'doc/emacs/maintaining.texi' --- doc/emacs/maintaining.texi 2011-03-01 04:14:00 +0000 +++ doc/emacs/maintaining.texi 2011-04-20 17:33:09 +0000 @@ -744,6 +744,13 @@ buffer, these commands generate a diff of all registered files in the current directory and its subdirectories. +@findex vc-ediff +The function @code{vc-ediff} works like @code{vc-diff} and provides a way to +visually compare two revisions of a file an Ediff session, @pxref{Top, Ediff, +ediff, The Ediff Manual}. It compares the file associated with the current +buffer with the last repository revision. To compare two arbitrary revisions +of the current file, call @code{vc-ediff} with a prefix argument. + @vindex vc-diff-switches @vindex vc-rcs-diff-switches @kbd{C-x v =} works by running a variant of the @code{diff} utility === modified file 'etc/ChangeLog' --- etc/ChangeLog 2011-04-06 19:38:46 +0000 +++ etc/ChangeLog 2011-04-20 17:33:09 +0000 @@ -1,3 +1,7 @@ +2011-04-08 Christoph Scholtes + + * NEWS: Document new function `vc-ediff'. + 2011-04-06 Juanma Barranquero * NEWS: New variable `revert-buffer-in-progress-p'. === modified file 'etc/NEWS' --- etc/NEWS 2011-04-18 23:21:31 +0000 +++ etc/NEWS 2011-04-20 17:33:09 +0000 @@ -672,6 +672,9 @@ **** Packages using Log View mode can enable this functionality by binding `log-view-expanded-log-entry-function' to a suitable function. +*** New command `vc-ediff' allows visual comparison of two revisions +of a file similar to `vc-diff', but using ediff backend. + ** Miscellaneous --- === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2011-04-20 17:28:07 +0000 +++ lisp/ChangeLog 2011-04-20 17:33:09 +0000 @@ -1,3 +1,9 @@ +2011-04-20 Christoph Scholtes + + * vc/vc.el (vc-diff-build-argument-list-internal) + (vc-version-ediff, vc-ediff): New functions. + (vc-version-diff): Use vc-diff-build-argument-list-internal. + 2011-04-20 Stefan Monnier * emacs-lisp/byte-opt.el (byte-decompile-bytecode-1): Remove dead code, === modified file 'lisp/vc/vc.el' --- lisp/vc/vc.el 2011-03-07 08:56:30 +0000 +++ lisp/vc/vc.el 2011-04-20 17:33:09 +0000 @@ -653,6 +653,7 @@ (require 'vc-hooks) (require 'vc-dispatcher) +(require 'ediff) (eval-when-compile (require 'cl) @@ -1617,45 +1618,48 @@ nil nil initial-input nil default) (read-string prompt initial-input nil default)))) +(defun vc-diff-build-argument-list-internal () + "Build argument list for calling internal diff functions." + (let* ((vc-fileset (vc-deduce-fileset t)) ;FIXME: why t? --Stef + (files (cadr vc-fileset)) + (backend (car vc-fileset)) + (first (car files)) + (rev1-default nil) + (rev2-default nil)) + (cond + ;; someday we may be able to do revision completion on non-singleton + ;; filesets, but not yet. + ((/= (length files) 1) + nil) + ;; if it's a directory, don't supply any revision default + ((file-directory-p first) + nil) + ;; if the file is not up-to-date, use working revision as older revision + ((not (vc-up-to-date-p first)) + (setq rev1-default (vc-working-revision first))) + ;; if the file is not locked, use last and previous revisions as defaults + (t + (setq rev1-default (vc-call-backend backend 'previous-revision first + (vc-working-revision first))) + (when (string= rev1-default "") (setq rev1-default nil)) + (setq rev2-default (vc-working-revision first)))) + ;; construct argument list + (let* ((rev1-prompt (if rev1-default + (concat "Older revision (default " + rev1-default "): ") + "Older revision: ")) + (rev2-prompt (concat "Newer revision (default " + (or rev2-default "current source") "): ")) + (rev1 (vc-read-revision rev1-prompt files backend rev1-default)) + (rev2 (vc-read-revision rev2-prompt files backend rev2-default))) + (when (string= rev1 "") (setq rev1 nil)) + (when (string= rev2 "") (setq rev2 nil)) + (list files rev1 rev2)))) + ;;;###autoload (defun vc-version-diff (files rev1 rev2) "Report diffs between revisions of the fileset in the repository history." - (interactive - (let* ((vc-fileset (vc-deduce-fileset t)) ;FIXME: why t? --Stef - (files (cadr vc-fileset)) - (backend (car vc-fileset)) - (first (car files)) - (rev1-default nil) - (rev2-default nil)) - (cond - ;; someday we may be able to do revision completion on non-singleton - ;; filesets, but not yet. - ((/= (length files) 1) - nil) - ;; if it's a directory, don't supply any revision default - ((file-directory-p first) - nil) - ;; if the file is not up-to-date, use working revision as older revision - ((not (vc-up-to-date-p first)) - (setq rev1-default (vc-working-revision first))) - ;; if the file is not locked, use last and previous revisions as defaults - (t - (setq rev1-default (vc-call-backend backend 'previous-revision first - (vc-working-revision first))) - (when (string= rev1-default "") (setq rev1-default nil)) - (setq rev2-default (vc-working-revision first)))) - ;; construct argument list - (let* ((rev1-prompt (if rev1-default - (concat "Older revision (default " - rev1-default "): ") - "Older revision: ")) - (rev2-prompt (concat "Newer revision (default " - (or rev2-default "current source") "): ")) - (rev1 (vc-read-revision rev1-prompt files backend rev1-default)) - (rev2 (vc-read-revision rev2-prompt files backend rev2-default))) - (when (string= rev1 "") (setq rev1 nil)) - (when (string= rev2 "") (setq rev2 nil)) - (list files rev1 rev2)))) + (interactive (vc-diff-build-argument-list-internal)) ;; All that was just so we could do argument completion! (when (and (not rev1) rev2) (error "Not a valid revision range")) @@ -1681,6 +1685,48 @@ (called-interactively-p 'interactive)))) ;;;###autoload +(defun vc-version-ediff (files rev1 rev2) + "Show differences between revisions of the fileset in the +repository history using ediff." + (interactive (vc-diff-build-argument-list-internal)) + ;; All that was just so we could do argument completion! + (when (and (not rev1) rev2) + (error "Not a valid revision range")) + + (message "%s" (format "Finding changes in %s..." (vc-delistify files))) + + ;; Functions ediff-(vc|rcs)-internal use "" instead of nil. + (when (null rev1) (setq rev1 "")) + (when (null rev2) (setq rev2 "")) + + (cond + ;; FIXME We only support running ediff on one file for now. + ;; We could spin off an ediff session per file in the file set. + ((= (length files) 1) + (ediff-load-version-control) + (find-file (car files)) + (funcall + (intern (format "ediff-%S-internal" ediff-version-control-package)) + rev1 rev2 nil)) + (t + (error "More than one file is not supported")))) + +;;;###autoload +(defun vc-ediff (historic &optional not-urgent) + "Display diffs between file revisions using ediff. +Normally this compares the currently selected fileset with their +working revisions. With a prefix argument HISTORIC, it reads two revision +designators specifying which revisions to compare. + +The optional argument NOT-URGENT non-nil means it is ok to say no to +saving the buffer." + (interactive (list current-prefix-arg t)) + (if historic + (call-interactively 'vc-version-ediff) + (when buffer-file-name (vc-buffer-sync not-urgent)) + (vc-version-ediff (cadr (vc-deduce-fileset t)) nil nil))) + +;;;###autoload (defun vc-root-diff (historic &optional not-urgent) "Display diffs between VC-controlled whole tree revisions. Normally, this compares the tree corresponding to the current ------------------------------------------------------------ revno: 103956 committer: Stefan Monnier branch nick: trunk timestamp: Wed 2011-04-20 14:28:07 -0300 message: * lisp/emacs-lisp/byte-opt.el (byte-decompile-bytecode-1): Remove dead code, add sanity check. diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2011-04-20 17:18:34 +0000 +++ lisp/ChangeLog 2011-04-20 17:28:07 +0000 @@ -1,5 +1,8 @@ 2011-04-20 Stefan Monnier + * emacs-lisp/byte-opt.el (byte-decompile-bytecode-1): Remove dead code, + add sanity check. + * obsolete/erc-hecomplete.el: Make obsolete. * obsolete/: Standardize obsolescence info in the header. === modified file 'lisp/emacs-lisp/byte-opt.el' --- lisp/emacs-lisp/byte-opt.el 2011-04-01 15:16:50 +0000 +++ lisp/emacs-lisp/byte-opt.el 2011-04-20 17:28:07 +0000 @@ -1364,8 +1364,7 @@ (defun byte-decompile-bytecode-1 (bytes constvec &optional make-spliceable) (let ((length (length bytes)) (bytedecomp-ptr 0) optr tags bytedecomp-op offset - lap tmp - endtag) + lap tmp) (while (not (= bytedecomp-ptr length)) (or make-spliceable (push bytedecomp-ptr lap)) @@ -1373,7 +1372,9 @@ optr bytedecomp-ptr ;; This uses dynamic-scope magic. offset (disassemble-offset bytes)) - (setq bytedecomp-op (aref byte-code-vector bytedecomp-op)) + (let ((opcode (aref byte-code-vector bytedecomp-op))) + (assert opcode) + (setq bytedecomp-op opcode)) (cond ((memq bytedecomp-op byte-goto-ops) ;; It's a pc. (setq offset @@ -1417,8 +1418,6 @@ (setq rest (cdr rest)))) (setq rest (cdr rest)))) (if tags (error "optimizer error: missed tags %s" tags)) - (if endtag - (setq lap (cons (cons nil endtag) lap))) ;; Remove addrs, lap = ( [ (op . arg) | (TAG tagno) ]* ) (mapcar (function (lambda (elt) (if (numberp elt) ------------------------------------------------------------ revno: 103955 committer: Stefan Monnier branch nick: trunk timestamp: Wed 2011-04-20 14:23:30 -0300 message: * Makefile.in (config.status): Don't erase in case of error. In case it disappeared, rebuild it with `configure'. diff: === modified file 'ChangeLog' --- ChangeLog 2011-04-20 02:18:13 +0000 +++ ChangeLog 2011-04-20 17:23:30 +0000 @@ -1,3 +1,8 @@ +2011-04-20 Stefan Monnier + + * Makefile.in (config.status): Don't erase in case of error. + In case it disappeared, rebuild it with `configure'. + 2011-04-20 Ken Brown * configure.in (use_mmap_for_buffers): Set to yes on Cygwin. === modified file 'Makefile.in' --- Makefile.in 2011-04-01 20:19:36 +0000 +++ Makefile.in 2011-04-20 17:23:30 +0000 @@ -402,8 +402,15 @@ $(srcdir)/test/automated/Makefile.in ./config.status +# Don't erase config.status if make is interrupted while refreshing it. +.PRECIOUS: config.status + config.status: ${srcdir}/configure ${srcdir}/lisp/version.el - ./config.status --recheck + if [ -x ./config.status ]; then \ + ./config.status --recheck; \ + else \ + ./configure; \ + fi AUTOCONF_INPUTS = @MAINT@ $(srcdir)/configure.in $(srcdir)/aclocal.m4 ------------------------------------------------------------ revno: 103954 committer: Stefan Monnier branch nick: trunk timestamp: Wed 2011-04-20 14:18:34 -0300 message: * lisp/obsolete/erc-hecomplete.el: Make obsolete. * obsolete/: Standardize obsolescence info in the header. diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2011-04-20 02:09:06 +0000 +++ lisp/ChangeLog 2011-04-20 17:18:34 +0000 @@ -1,3 +1,8 @@ +2011-04-20 Stefan Monnier + + * obsolete/erc-hecomplete.el: Make obsolete. + * obsolete/: Standardize obsolescence info in the header. + 2011-04-20 Glenn Morris * calendar/solar.el (solar-horizontal-coordinates): === modified file 'lisp/obsolete/awk-mode.el' --- lisp/obsolete/awk-mode.el 2011-01-25 04:08:28 +0000 +++ lisp/obsolete/awk-mode.el 2011-04-20 17:18:34 +0000 @@ -4,6 +4,7 @@ ;; Maintainer: FSF ;; Keywords: unix, languages +;; Obsolete-since: 22.1 ;; This file is part of GNU Emacs. @@ -22,8 +23,6 @@ ;;; Commentary: -;; This file has been obsolete since Emacs 22.1. - ;; Sets up C-mode with support for awk-style #-comments and a lightly ;; hacked syntax table. === renamed file 'lisp/erc/erc-hecomplete.el' => 'lisp/obsolete/erc-hecomplete.el' --- lisp/erc/erc-hecomplete.el 2011-01-25 04:08:28 +0000 +++ lisp/obsolete/erc-hecomplete.el 2011-04-20 17:18:34 +0000 @@ -4,6 +4,7 @@ ;; Author: Alex Schroeder ;; URL: http://www.emacswiki.org/cgi-bin/wiki.pl?ErcCompletion +;; Obsolete-since: 24.1 ;; This file is part of GNU Emacs. @@ -108,16 +109,14 @@ This is a function to put on `hippie-expand-try-functions-list'. Then use \\[hippie-expand] to expand nicks. The type of completion depends on `erc-nick-completion'." - (cond ((eq erc-nick-completion 'pals) - (try-complete-erc-nick old erc-pals)) - ((eq erc-nick-completion 'all) - (try-complete-erc-nick old (append + (try-complete-erc-nick old (cond ((eq erc-nick-completion 'pals) erc-pals) + ((eq erc-nick-completion 'all) + (append (erc-get-channel-nickname-list) - (erc-command-list)))) - ((functionp erc-nick-completion) - (try-complete-erc-nick old (funcall erc-nick-completion))) - (t - (try-complete-erc-nick old erc-nick-completion)))) + (erc-command-list))) + ((functionp erc-nick-completion) + (funcall erc-nick-completion)) + (t erc-nick-completion)))) (defvar try-complete-erc-nick-window-configuration nil "The window configuration for `try-complete-erc-nick'. === modified file 'lisp/obsolete/fast-lock.el' --- lisp/obsolete/fast-lock.el 2011-03-06 00:30:16 +0000 +++ lisp/obsolete/fast-lock.el 2011-04-20 17:18:34 +0000 @@ -6,6 +6,7 @@ ;; Maintainer: FSF ;; Keywords: faces files ;; Version: 3.14 +;; Obsolete-since: 22.1 ;; This file is part of GNU Emacs. @@ -24,8 +25,6 @@ ;;; Commentary: -;; This file has been obsolete since Emacs 22.1. - ;; Fast Lock mode is a Font Lock support mode. ;; It makes visiting a file in Font Lock mode faster by restoring its face text ;; properties from automatically saved associated Font Lock cache files. === modified file 'lisp/obsolete/iso-acc.el' --- lisp/obsolete/iso-acc.el 2011-01-25 04:08:28 +0000 +++ lisp/obsolete/iso-acc.el 2011-04-20 17:18:34 +0000 @@ -5,6 +5,7 @@ ;; Author: Johan Vromans ;; Maintainer: FSF ;; Keywords: i18n +;; Obsolete-since: 22.1 ;; This file is part of GNU Emacs. @@ -23,8 +24,6 @@ ;;; Commentary: -;; This file has been obsolete since Emacs 22.1. - ;; Function `iso-accents-mode' activates a minor mode in which ;; typewriter "dead keys" are emulated. The purpose of this emulation ;; is to provide a simple means for inserting accented characters === modified file 'lisp/obsolete/iso-insert.el' --- lisp/obsolete/iso-insert.el 2011-01-25 04:08:28 +0000 +++ lisp/obsolete/iso-insert.el 2011-04-20 17:18:34 +0000 @@ -5,6 +5,7 @@ ;; Author: Howard Gayle ;; Maintainer: FSF ;; Keywords: i18n +;; Obsolete-since: 22.1 ;; This file is part of GNU Emacs. @@ -23,8 +24,6 @@ ;;; Commentary: -;; This file has been obsolete since Emacs 22.1. - ;; Provides keys for inserting ISO Latin-1 characters. They use the ;; prefix key C-x 8. Type C-x 8 C-h for a list. === modified file 'lisp/obsolete/iso-swed.el' --- lisp/obsolete/iso-swed.el 2011-01-25 04:08:28 +0000 +++ lisp/obsolete/iso-swed.el 2011-04-20 17:18:34 +0000 @@ -5,6 +5,7 @@ ;; Author: Howard Gayle ;; Maintainer: FSF ;; Keywords: i18n +;; Obsolete-since: 22.1 ;; This file is part of GNU Emacs. @@ -23,8 +24,6 @@ ;;; Commentary: -;; This file has been obsolete since Emacs 22.1. - ;; Written by Howard Gayle. See case-table.el for details. ;;; Code: === modified file 'lisp/obsolete/keyswap.el' --- lisp/obsolete/keyswap.el 2011-01-25 04:08:28 +0000 +++ lisp/obsolete/keyswap.el 2011-04-20 17:18:34 +0000 @@ -4,6 +4,7 @@ ;; Author: Eric S. Raymond ;; Keywords: terminals +;; Obsolete-since: 22.1 ;; This file is part of GNU Emacs. @@ -22,8 +23,6 @@ ;;; Commentary: -;; This file has been obsolete since Emacs 22.1. - ;; This package is meant to be called by other terminal packages. ;;; Code: === modified file 'lisp/obsolete/lazy-lock.el' --- lisp/obsolete/lazy-lock.el 2011-01-25 04:08:28 +0000 +++ lisp/obsolete/lazy-lock.el 2011-04-20 17:18:34 +0000 @@ -6,6 +6,7 @@ ;; Maintainer: FSF ;; Keywords: faces files ;; Version: 2.11 +;; Obsolete-since: 22.1 ;; This file is part of GNU Emacs. @@ -24,8 +25,6 @@ ;;; Commentary: -;; This file has been obsolete since Emacs 22.1. - ;; Purpose: ;; ;; Lazy Lock mode is a Font Lock support mode. === modified file 'lisp/obsolete/old-whitespace.el' --- lisp/obsolete/old-whitespace.el 2011-01-25 04:08:28 +0000 +++ lisp/obsolete/old-whitespace.el 2011-04-20 17:18:34 +0000 @@ -4,6 +4,7 @@ ;; Author: Rajesh Vaidheeswarran ;; Keywords: convenience +;; Obsolete-since: 23.1 ;; This file is part of GNU Emacs. @@ -22,8 +23,6 @@ ;;; Commentary: -;; This file has been obsolete since Emacs 23.1. - ;; URL: http://www.dsmit.com/lisp/ ;; ;; The whitespace library is intended to find and help fix five different types === modified file 'lisp/obsolete/options.el' --- lisp/obsolete/options.el 2011-01-25 04:08:28 +0000 +++ lisp/obsolete/options.el 2011-04-20 17:18:34 +0000 @@ -3,6 +3,7 @@ ;; Copyright (C) 1985, 2001-2011 Free Software Foundation, Inc. ;; Maintainer: FSF +;; Obsolete-since: 22.1 ;; This file is part of GNU Emacs. @@ -21,8 +22,6 @@ ;;; Commentary: -;; This file has been obsolete since Emacs 22.1. - ;; This code provides functions to list and edit the values of all global ;; option variables known to loaded Emacs Lisp code. There are two entry ;; points, `list-options' and `edit' options'. The latter enters a major === modified file 'lisp/obsolete/resume.el' --- lisp/obsolete/resume.el 2011-01-25 04:08:28 +0000 +++ lisp/obsolete/resume.el 2011-04-20 17:18:34 +0000 @@ -5,6 +5,7 @@ ;; Author: Joe Wells ;; Adapted-By: ESR ;; Keywords: processes +;; Obsolete-since: 23.1 ;; This file is part of GNU Emacs. @@ -23,8 +24,6 @@ ;;; Commentary: -;; This file has been obsolete since Emacs 23.1. - ;; The purpose of this library is to handle command line arguments ;; when you resume an existing Emacs job. === modified file 'lisp/obsolete/scribe.el' --- lisp/obsolete/scribe.el 2011-01-25 04:08:28 +0000 +++ lisp/obsolete/scribe.el 2011-04-20 17:18:34 +0000 @@ -6,6 +6,7 @@ ;; (according to ack.texi) ;; Maintainer: FSF ;; Keywords: wp +;; Obsolete-since: 22.1 ;; This file is part of GNU Emacs. @@ -24,8 +25,6 @@ ;;; Commentary: -;; This file has been obsolete since Emacs 22.1. - ;; A major mode for editing source in written for the Scribe text formatter. ;; Knows about Scribe syntax and standard layout rules. The command to ;; run Scribe on a buffer is bogus; someone interested should fix it. === modified file 'lisp/obsolete/swedish.el' --- lisp/obsolete/swedish.el 2011-01-26 08:36:39 +0000 +++ lisp/obsolete/swedish.el 2011-04-20 17:18:34 +0000 @@ -5,6 +5,7 @@ ;; Author: Howard Gayle ;; Maintainer: FSF ;; Keywords: i18n +;; Obsolete-since: 22.1 ;; This file is part of GNU Emacs. @@ -23,8 +24,6 @@ ;;; Commentary: -;; This file has been obsolete since Emacs 22.1. - ;; Fixme: Is this actually used? if so, it should be in language, ;; possibly as a feature property of Swedish, probably defining a ;; `swascii' coding system. === modified file 'lisp/obsolete/vc-mcvs.el' --- lisp/obsolete/vc-mcvs.el 2011-01-26 08:36:39 +0000 +++ lisp/obsolete/vc-mcvs.el 2011-04-20 17:18:34 +0000 @@ -4,6 +4,7 @@ ;; Author: FSF (see vc.el for full credits) ;; Maintainer: None +;; Obsolete-since: 23.1 ;; This file is part of GNU Emacs. @@ -30,9 +31,6 @@ ;; ;; ********** READ THIS! ********** -;; This file has been obsolete and unsupported since Emacs 23.1. - - ;; The home page of the Meta-CVS version control system is at ;; ;; http://users.footprints.net/~kaz/mcvs.html ------------------------------------------------------------ revno: 103953 committer: Glenn Morris branch nick: trunk timestamp: Wed 2011-04-20 06:23:12 -0400 message: Auto-commit of loaddefs files. diff: === modified file 'lisp/dired.el' --- lisp/dired.el 2011-04-04 09:28:26 +0000 +++ lisp/dired.el 2011-04-20 10:23:12 +0000 @@ -3629,7 +3629,7 @@ ;;;;;; dired-run-shell-command dired-do-shell-command dired-do-async-shell-command ;;;;;; dired-clean-directory dired-do-print dired-do-touch dired-do-chown ;;;;;; dired-do-chgrp dired-do-chmod dired-compare-directories dired-backup-diff -;;;;;; dired-diff) "dired-aux" "dired-aux.el" "0488aa71a7abdb8dcc9ce90201114ebc") +;;;;;; dired-diff) "dired-aux" "dired-aux.el" "e34e1bbdb701078d52466c319d8e0cda") ;;; Generated autoloads from dired-aux.el (autoload 'dired-diff "dired-aux" "\ @@ -4089,7 +4089,7 @@ ;;;*** ;;;### (autoloads (dired-do-relsymlink dired-jump-other-window dired-jump) -;;;;;; "dired-x" "dired-x.el" "87fd4ae2fdade7e0f11c4a0b1cfdeda2") +;;;;;; "dired-x" "dired-x.el" "94bd5ca0bd260e43402e3cd9f114970c") ;;; Generated autoloads from dired-x.el (autoload 'dired-jump "dired-x" "\ ------------------------------------------------------------ revno: 103952 committer: Glenn Morris branch nick: trunk timestamp: Wed 2011-04-20 06:18:10 -0400 message: Auto-commit of generated files. diff: === modified file 'autogen/configure' --- autogen/configure 2011-04-18 10:17:49 +0000 +++ autogen/configure 2011-04-20 10:18:10 +0000 @@ -9323,7 +9323,7 @@ use_mmap_for_buffers=no case "$opsys" in - freebsd|irix6-5) use_mmap_for_buffers=yes ;; + cygwin|freebsd|irix6-5) use_mmap_for_buffers=yes ;; esac ------------------------------------------------------------ revno: 103951 committer: Ken Brown branch nick: trunk timestamp: Tue 2011-04-19 22:18:13 -0400 message: * configure.in (use_mmap_for_buffers): Set to yes on Cygwin. diff: === modified file 'ChangeLog' --- ChangeLog 2011-04-12 03:55:07 +0000 +++ ChangeLog 2011-04-20 02:18:13 +0000 @@ -1,3 +1,7 @@ +2011-04-20 Ken Brown + + * configure.in (use_mmap_for_buffers): Set to yes on Cygwin. + 2011-04-12 Glenn Morris * configure.in: Require ImageMagick >= 6.2.8. (Bug#7955) === modified file 'configure.in' --- configure.in 2011-04-12 03:55:07 +0000 +++ configure.in 2011-04-20 02:18:13 +0000 @@ -1631,7 +1631,7 @@ use_mmap_for_buffers=no case "$opsys" in - freebsd|irix6-5) use_mmap_for_buffers=yes ;; + cygwin|freebsd|irix6-5) use_mmap_for_buffers=yes ;; esac AC_FUNC_MMAP