Using saved parent location: http://bzr.savannah.gnu.org/r/emacs/trunk/ Now on revision 100155. ------------------------------------------------------------ revno: 100155 [merge] committer: Katsumi Yamaoka branch nick: trunk timestamp: Thu 2010-05-06 03:28:13 +0000 message: Synch with Gnus trunk. (mml-generate-mime-1,mml-compute-boundary-1): Update 'mml handles on recursive mml-to-mime translation and check them for boundary delimiter collisions. Reported by: Greg Troxel. diff: === modified file 'lisp/gnus/ChangeLog' --- lisp/gnus/ChangeLog 2010-05-03 22:38:50 +0000 +++ lisp/gnus/ChangeLog 2010-05-06 03:27:20 +0000 @@ -21,6 +21,12 @@ * gnus-dired.el (gnus-dired-mode-map): Initialize in declaration. (gnus-dired-mode): Use define-minor-mode. +2010-05-01 Andreas Seltenreich + + * mml.el (mml-generate-mime-1,mml-compute-boundary-1): Update 'mml + handles on recursive mml-to-mime translation and check them for + boundary delimiter collisions. Reported by: Greg Troxel. + 2010-04-27 Katsumi Yamaoka * gnus-util.el: Don't load tm and apel XEmacs packages when compiling. === modified file 'lisp/gnus/mml.el' --- lisp/gnus/mml.el 2010-05-03 00:41:45 +0000 +++ lisp/gnus/mml.el 2010-05-06 03:27:20 +0000 @@ -520,7 +520,10 @@ ;; `m-g-d-t' will be bound to "message/rfc822" ;; when encoding an article to be forwarded. (mml-generate-default-type "text/plain")) - (mml-to-mime)) + (mml-to-mime) + ;; Update handle so mml-compute-boundary can + ;; detect collisions with the nested parts. + (setcdr (assoc 'contents cont) (buffer-string))) (let ((mm-7bit-chars (concat mm-7bit-chars "\x1b"))) ;; ignore 0x1b, it is part of iso-2022-jp (setq encoding (mm-body-7-or-8)))) @@ -699,7 +702,7 @@ (defun mml-compute-boundary-1 (cont) (let (filename) (cond - ((eq (car cont) 'part) + ((member (car cont) '(part mml)) (with-temp-buffer (cond ((cdr (assq 'buffer cont)) ------------------------------------------------------------ revno: 100154 committer: Stefan Monnier branch nick: trunk timestamp: Wed 2010-05-05 22:59:07 -0400 message: Extract common suffix for * in partial-completion. * minibuffer.el (completion--sreverse, completion--common-suffix): New functions. (completion-pcm--merge-completions): Extract common suffix when safe. diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2010-05-06 02:53:56 +0000 +++ lisp/ChangeLog 2010-05-06 02:59:07 +0000 @@ -1,5 +1,9 @@ 2010-05-06 Stefan Monnier + * minibuffer.el (completion--sreverse, completion--common-suffix): + New functions. + (completion-pcm--merge-completions): Extract common suffix when safe. + * emacs-lisp/easy-mmode.el (define-minor-mode): Make :variable more flexible. * files.el (auto-save-mode): Use it to define using define-minor-mode. === modified file 'lisp/minibuffer.el' --- lisp/minibuffer.el 2010-05-01 01:08:43 +0000 +++ lisp/minibuffer.el 2010-05-06 02:59:07 +0000 @@ -1983,6 +1983,17 @@ (nconc (completion-pcm--hilit-commonality pattern all) (length prefix))))) +(defun completion--sreverse (str) + "Like `reverse' but for a string STR rather than a list." + (apply 'string (nreverse (mapcar 'identity str)))) + +(defun completion--common-suffix (strs) + "Return the common suffix of the strings STRS." + (completion--sreverse + (try-completion + "" + (mapcar 'completion--sreverse comps)))) + (defun completion-pcm--merge-completions (strs pattern) "Extract the commonality in STRS, with the help of PATTERN." ;; When completing while ignoring case, we want to try and avoid @@ -2044,7 +2055,17 @@ ;; `any' into a `star' because the surrounding context has ;; changed such that string->pattern wouldn't add an `any' ;; here any more. - (unless unique (push elem res)) + (unless unique + (push elem res) + (when (memq elem '(star point)) + ;; Extract common suffix additionally to common prefix. + ;; Only do it for `point' and `star' since for + ;; `any' it could lead to a merged completion that + ;; doesn't itself match the candidates. + (let ((suffix (completion--common-suffix comps))) + (assert (stringp suffix)) + (unless (equal suffix "") + (push suffix res))))) (setq fixed ""))))) ;; We return it in reverse order. res))))) ------------------------------------------------------------ revno: 100153 committer: Stefan Monnier branch nick: trunk timestamp: Wed 2010-05-05 22:53:56 -0400 message: Define auto-save-mode with define-minor-mode. * emacs-lisp/easy-mmode.el (define-minor-mode): Make :variable more flexible. * files.el (auto-save-mode): Use it to define using define-minor-mode. diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2010-05-05 21:56:15 +0000 +++ lisp/ChangeLog 2010-05-06 02:53:56 +0000 @@ -1,3 +1,9 @@ +2010-05-06 Stefan Monnier + + * emacs-lisp/easy-mmode.el (define-minor-mode): + Make :variable more flexible. + * files.el (auto-save-mode): Use it to define using define-minor-mode. + 2010-05-05 Juri Linkov Add `slow' and `history' tags to the desktop data. @@ -20,8 +26,8 @@ (ange-ftp-delete-file): Add FORCE arg. (ange-ftp-rename-remote-to-remote) (ange-ftp-rename-local-to-remote, ange-ftp-rename-remote-to-local) - (ange-ftp-load, ange-ftp-compress, ange-ftp-uncompress): Force - file deletion. + (ange-ftp-load, ange-ftp-compress, ange-ftp-uncompress): + Force file deletion. * net/tramp-compat.el (tramp-compat-delete-file): New defun. @@ -39,8 +45,8 @@ (tramp-fish-handle-make-symbolic-link) (tramp-fish-handle-process-file): Use `tramp-compat-delete-file'. - * net/tramp-ftp.el (tramp-ftp-file-name-handler): Use - `tramp-compat-delete-file'. + * net/tramp-ftp.el (tramp-ftp-file-name-handler): + Use `tramp-compat-delete-file'. * net/tramp-gvfs.el (tramp-gvfs-handle-delete-file): Add FORCE arg. (tramp-gvfs-handle-write-region): Use `tramp-compat-delete-file'. === modified file 'lisp/emacs-lisp/easy-mmode.el' --- lisp/emacs-lisp/easy-mmode.el 2010-05-05 02:08:25 +0000 +++ lisp/emacs-lisp/easy-mmode.el 2010-05-06 02:53:56 +0000 @@ -117,7 +117,10 @@ :keymap MAP Same as the KEYMAP argument. :require SYM Same as in `defcustom'. :variable PLACE The location (as can be used with `setf') to use instead - of the variable MODE to store the state of the mode. + of the variable MODE to store the state of the mode. PLACE + can also be of the form (GET . SET) where GET is an expression + that returns the current state and SET is a function that takes + a new state and sets it. For example, you could write (define-minor-mode foo-mode \"If enabled, foo on you!\" @@ -149,8 +152,9 @@ (type nil) (extra-args nil) (extra-keywords nil) - (variable nil) - (modefun mode) + (variable nil) ;The PLACE where the state is stored. + (setter nil) ;The function (if any) to set the mode var. + (modefun mode) ;The minor mode function name we're defining. (require t) (hook (intern (concat mode-name "-hook"))) (hook-on (intern (concat mode-name "-on-hook"))) @@ -171,7 +175,12 @@ (:type (setq type (list :type (pop body)))) (:require (setq require (pop body))) (:keymap (setq keymap (pop body))) - (:variable (setq variable (setq mode (pop body)))) + (:variable (setq variable (pop body)) + (if (not (functionp (cdr-safe variable))) + ;; PLACE is not of the form (GET . SET). + (setq mode variable) + (setq mode (car variable)) + (setq setter (cdr variable)))) (t (push keyw extra-keywords) (push (pop body) extra-keywords)))) (setq keymap-sym (if (and keymap (symbolp keymap)) keymap @@ -230,7 +239,8 @@ ;; repeat-command still does the toggling correctly. (interactive (list (or current-prefix-arg 'toggle))) (let ((,last-message (current-message))) - (,(if (symbolp mode) 'setq 'setf) ,mode + (,@(if setter (list setter) + (list (if (symbolp mode) 'setq 'setf) mode)) (if (eq arg 'toggle) (not ,mode) ;; A nil argument also means ON now. @@ -240,7 +250,8 @@ (run-hooks ',hook (if ,mode ',hook-on ',hook-off)) (if (called-interactively-p 'any) (progn - ,(if globalp `(customize-mark-as-set ',mode)) + ,(if (and globalp (symbolp mode)) + `(customize-mark-as-set ',mode)) ;; Avoid overwriting a message shown by the body, ;; but do overwrite previous messages. (unless (and (current-message) @@ -265,10 +276,15 @@ (t (error "Invalid keymap %S" ,keymap)))) ,(format "Keymap for `%s'." mode-name))) - ,(unless variable - `(add-minor-mode ',mode ',lighter + ,(if (not (symbolp mode)) + (if (or lighter keymap) + (error ":lighter and :keymap unsupported with mode expression %s" mode)) + `(with-no-warnings + (add-minor-mode ',mode ',lighter ,(if keymap keymap-sym - `(if (boundp ',keymap-sym) ,keymap-sym))))))) + `(if (boundp ',keymap-sym) ,keymap-sym)) + nil + ,(unless (eq mode modefun) 'modefun))))))) ;;; ;;; make global minor mode === modified file 'lisp/files.el' --- lisp/files.el 2010-04-21 03:02:58 +0000 +++ lisp/files.el 2010-05-06 02:53:56 +0000 @@ -5150,29 +5150,25 @@ (kill-buffer-ask buffer))))) -(defun auto-save-mode (arg) +(define-minor-mode auto-save-mode "Toggle auto-saving of contents of current buffer. With prefix argument ARG, turn auto-saving on if positive, else off." - (interactive "P") - (setq buffer-auto-save-file-name - (and (if (null arg) - (or (not buffer-auto-save-file-name) - ;; If auto-save is off because buffer has shrunk, - ;; then toggling should turn it on. - (< buffer-saved-size 0)) - (or (eq arg t) (listp arg) (and (integerp arg) (> arg 0)))) - (if (and buffer-file-name auto-save-visited-file-name - (not buffer-read-only)) - buffer-file-name - (make-auto-save-file-name)))) + :variable ((and buffer-auto-save-file-name + ;; If auto-save is off because buffer has shrunk, + ;; then toggling should turn it on. + (>= buffer-saved-size 0)) + . (lambda (val) + (setq buffer-auto-save-file-name + (cond + ((null val) nil) + ((and buffer-file-name auto-save-visited-file-name + (not buffer-read-only)) + buffer-file-name) + (t (make-auto-save-file-name)))))) ;; If -1 was stored here, to temporarily turn off saving, ;; turn it back on. (and (< buffer-saved-size 0) - (setq buffer-saved-size 0)) - (if (called-interactively-p 'interactive) - (message "Auto-save %s (in this buffer)" - (if buffer-auto-save-file-name "on" "off"))) - buffer-auto-save-file-name) + (setq buffer-saved-size 0))) (defun rename-auto-save-file () "Adjust current buffer's auto save file name for current conditions. ------------------------------------------------------------ revno: 100152 committer: Juanma Barranquero branch nick: trunk timestamp: Thu 2010-05-06 00:14:15 +0200 message: lib-src/ChangeLog: Remove duplicate entry. diff: === modified file 'lib-src/ChangeLog' --- lib-src/ChangeLog 2010-05-04 02:56:19 +0000 +++ lib-src/ChangeLog 2010-05-05 22:14:15 +0000 @@ -7,12 +7,6 @@ * Makefile.in (LIBS_MACHINE): Remove all uses, unused. -2010-04-18 Juanma Barranquero - - Add stubs for Windows, required after CVE-2010-0825 change. - * ntlib.c (getgid, getegid, setegid): New stubs. - * ntlib.h (getgid, getegid, setegid): Declare them. - 2010-04-12 Dan Nicolaescu * Makefile.in (ALL_CFLAGS, LINK_CFLAGS, CPP_CFLAGS): Move to the @@ -3003,7 +2997,7 @@ 2000-03-02 Gerd Moellmann - * etags.c (lisp_suffixes) Add `LSP'. + * etags.c (lisp_suffixes): Add `LSP'. 2000-02-10 Francesco Potortì ------------------------------------------------------------ revno: 100151 committer: Juri Linkov branch nick: trunk timestamp: Thu 2010-05-06 00:56:15 +0300 message: Add `slow' and `history' tags to the desktop data. * info.el (Info-virtual-nodes) [*Index*]: Add `slow' tag. (Info-virtual-files) [*Apropos*]: Add `slow' tag. (Info-finder-find-node): Require `finder.el' to be able to restore node from the desktop. (Info-desktop-buffer-misc-data): Save all nodes. Save additional data `Info-history' and `slow' tag in the assoc list. (Info-restore-desktop-buffer): Don't restore nodes with the `slow' tag. Restore `Info-history'. diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2010-05-05 10:20:23 +0000 +++ lisp/ChangeLog 2010-05-05 21:56:15 +0000 @@ -1,3 +1,16 @@ +2010-05-05 Juri Linkov + + Add `slow' and `history' tags to the desktop data. + + * info.el (Info-virtual-nodes) [*Index*]: Add `slow' tag. + (Info-virtual-files) [*Apropos*]: Add `slow' tag. + (Info-finder-find-node): Require `finder.el' to be able + to restore node from the desktop. + (Info-desktop-buffer-misc-data): Save all nodes. Save additional + data `Info-history' and `slow' tag in the assoc list. + (Info-restore-desktop-buffer): Don't restore nodes with the + `slow' tag. Restore `Info-history'. + 2010-05-05 Michael Albinus Add FORCE argument to `delete-file'. === modified file 'lisp/info.el' --- lisp/info.el 2010-04-20 18:52:07 +0000 +++ lisp/info.el 2010-05-05 21:56:15 +0000 @@ -3104,6 +3104,7 @@ (add-to-list 'Info-virtual-nodes '("\\`\\*Index.*\\*\\'" (find-node . Info-virtual-index-find-node) + (slow . t) )) (defvar Info-virtual-index-nodes nil @@ -3193,6 +3194,7 @@ (toc-nodes . Info-apropos-toc-nodes) (find-file . Info-apropos-find-file) (find-node . Info-apropos-find-node) + (slow . t) )) (defvar Info-apropos-file "*Apropos*" @@ -3348,6 +3350,7 @@ (defun Info-finder-find-node (filename nodename &optional no-going-back) "Finder-specific implementation of Info-find-node-2." + (require 'finder) (cond ((equal nodename "Top") ;; Display Top menu with descriptions of the keywords @@ -4836,21 +4839,35 @@ (defun Info-desktop-buffer-misc-data (desktop-dirname) "Auxiliary information to be saved in desktop file." - (unless (Info-virtual-file-p Info-current-file) - (list Info-current-file Info-current-node))) + (list Info-current-file + Info-current-node + ;; Additional data as an association list. + (delq nil (list + (and Info-history + (cons 'history Info-history)) + (and (Info-virtual-fun + 'slow Info-current-file Info-current-node) + (cons 'slow t)))))) (defun Info-restore-desktop-buffer (desktop-buffer-file-name desktop-buffer-name desktop-buffer-misc) "Restore an Info buffer specified in a desktop file." - (let ((first (nth 0 desktop-buffer-misc)) - (second (nth 1 desktop-buffer-misc))) - (when (and first second) - (when desktop-buffer-name - (set-buffer (get-buffer-create desktop-buffer-name)) - (Info-mode)) - (Info-find-node first second) - (current-buffer)))) + (let* ((file (nth 0 desktop-buffer-misc)) + (node (nth 1 desktop-buffer-misc)) + (data (nth 2 desktop-buffer-misc)) + (hist (assq 'history data)) + (slow (assq 'slow data))) + ;; Don't restore nodes slow to regenerate. + (unless slow + (when (and file node) + (when desktop-buffer-name + (set-buffer (get-buffer-create desktop-buffer-name)) + (Info-mode)) + (Info-find-node file node) + (when hist + (setq Info-history (cdr hist))) + (current-buffer))))) (add-to-list 'desktop-buffer-mode-handlers '(Info-mode . Info-restore-desktop-buffer)) ------------------------------------------------------------ revno: 100150 committer: Stefan Monnier branch nick: trunk timestamp: Wed 2010-05-05 13:51:40 -0400 message: * syntax.c (Fchar_syntax): Check the arg is a character. diff: === modified file 'src/ChangeLog' --- src/ChangeLog 2010-05-05 15:51:32 +0000 +++ src/ChangeLog 2010-05-05 17:51:40 +0000 @@ -1,3 +1,7 @@ +2010-05-05 Stefan Monnier + + * syntax.c (Fchar_syntax): Check the arg is a character (bug#6080). + 2010-05-05 Lawrence Mitchell * m/sparc.h: Fix typo in earlier change. === modified file 'src/syntax.c' --- src/syntax.c 2010-03-10 14:45:21 +0000 +++ src/syntax.c 2010-05-05 17:51:40 +0000 @@ -858,7 +858,7 @@ Lisp_Object character; { int char_int; - CHECK_NUMBER (character); + CHECK_CHARACTER (character); char_int = XINT (character); SETUP_BUFFER_SYNTAX_TABLE (); return make_number (syntax_code_spec[(int) SYNTAX (char_int)]); ------------------------------------------------------------ revno: 100149 author: Lawrence Mitchell committer: Glenn Morris branch nick: trunk timestamp: Wed 2010-05-05 08:51:32 -0700 message: * src/m/sparc.h: Fix typo in earlier change. diff: === modified file 'src/ChangeLog' --- src/ChangeLog 2010-05-04 18:21:32 +0000 +++ src/ChangeLog 2010-05-05 15:51:32 +0000 @@ -1,3 +1,7 @@ +2010-05-05 Lawrence Mitchell + + * m/sparc.h: Fix typo in earlier change. + 2010-05-04 Stefan Monnier Misc tweaks. === modified file 'src/m/sparc.h' --- src/m/sparc.h 2010-04-27 03:14:14 +0000 +++ src/m/sparc.h 2010-05-05 15:51:32 +0000 @@ -52,7 +52,6 @@ #ifdef __arch64__ /* GCC, 64-bit ABI. */ #define BITS_PER_LONG 64 -#endif #ifndef _LP64 #define _LP64 /* Done on Alpha -- not sure if it ------------------------------------------------------------ revno: 100148 committer: Michael Albinus branch nick: trunk timestamp: Wed 2010-05-05 12:20:23 +0200 message: Add FORCE argument to `delete-file'. * net/ange-ftp.el (ange-ftp-del-tmp-name): Make it a defun, forcing to delete the temporary file. (ange-ftp-delete-file): Add FORCE arg. (ange-ftp-rename-remote-to-remote) (ange-ftp-rename-local-to-remote, ange-ftp-rename-remote-to-local) (ange-ftp-load, ange-ftp-compress, ange-ftp-uncompress): Force file deletion. * net/tramp-compat.el (tramp-compat-delete-file): New defun. * net/tramp.el (tramp-handle-delete-file): Add FORCE arg. (tramp-handle-make-symbolic-link, tramp-handle-load) (tramp-do-copy-or-rename-file-via-buffer) (tramp-do-copy-or-rename-file-directly) (tramp-do-copy-or-rename-file-out-of-band) (tramp-handle-process-file, tramp-handle-call-process-region) (tramp-handle-shell-command, tramp-handle-file-local-copy) (tramp-handle-insert-file-contents, tramp-handle-write-region) (tramp-delete-temp-file-function): Use `tramp-compat-delete-file'. * net/tramp-fish.el (tramp-fish-handle-delete-file): Add FORCE arg. (tramp-fish-handle-make-symbolic-link) (tramp-fish-handle-process-file): Use `tramp-compat-delete-file'. * net/tramp-ftp.el (tramp-ftp-file-name-handler): Use `tramp-compat-delete-file'. * net/tramp-gvfs.el (tramp-gvfs-handle-delete-file): Add FORCE arg. (tramp-gvfs-handle-write-region): Use `tramp-compat-delete-file'. * net/tramp-imap.el (tramp-imap-handle-delete-file): Add FORCE arg. (tramp-imap-do-copy-or-rename-file): Use `tramp-compat-delete-file'. * net/tramp-smb.el (tramp-smb-handle-delete-file): Add FORCE arg. (tramp-smb-handle-copy-file, tramp-smb-handle-file-local-copy) (tramp-smb-handle-rename-file, tramp-smb-handle-write-region): Use `tramp-compat-delete-file'. diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2010-05-05 04:27:16 +0000 +++ lisp/ChangeLog 2010-05-05 10:20:23 +0000 @@ -1,3 +1,45 @@ +2010-05-05 Michael Albinus + + Add FORCE argument to `delete-file'. + + * net/ange-ftp.el (ange-ftp-del-tmp-name): Make it a defun, + forcing to delete the temporary file. + (ange-ftp-delete-file): Add FORCE arg. + (ange-ftp-rename-remote-to-remote) + (ange-ftp-rename-local-to-remote, ange-ftp-rename-remote-to-local) + (ange-ftp-load, ange-ftp-compress, ange-ftp-uncompress): Force + file deletion. + + * net/tramp-compat.el (tramp-compat-delete-file): New defun. + + * net/tramp.el (tramp-handle-delete-file): Add FORCE arg. + (tramp-handle-make-symbolic-link, tramp-handle-load) + (tramp-do-copy-or-rename-file-via-buffer) + (tramp-do-copy-or-rename-file-directly) + (tramp-do-copy-or-rename-file-out-of-band) + (tramp-handle-process-file, tramp-handle-call-process-region) + (tramp-handle-shell-command, tramp-handle-file-local-copy) + (tramp-handle-insert-file-contents, tramp-handle-write-region) + (tramp-delete-temp-file-function): Use `tramp-compat-delete-file'. + + * net/tramp-fish.el (tramp-fish-handle-delete-file): Add FORCE arg. + (tramp-fish-handle-make-symbolic-link) + (tramp-fish-handle-process-file): Use `tramp-compat-delete-file'. + + * net/tramp-ftp.el (tramp-ftp-file-name-handler): Use + `tramp-compat-delete-file'. + + * net/tramp-gvfs.el (tramp-gvfs-handle-delete-file): Add FORCE arg. + (tramp-gvfs-handle-write-region): Use `tramp-compat-delete-file'. + + * net/tramp-imap.el (tramp-imap-handle-delete-file): Add FORCE arg. + (tramp-imap-do-copy-or-rename-file): Use `tramp-compat-delete-file'. + + * net/tramp-smb.el (tramp-smb-handle-delete-file): Add FORCE arg. + (tramp-smb-handle-copy-file, tramp-smb-handle-file-local-copy) + (tramp-smb-handle-rename-file, tramp-smb-handle-write-region): Use + `tramp-compat-delete-file'. + 2010-05-05 Stefan Monnier Minor cleanups. === modified file 'lisp/net/ange-ftp.el' --- lisp/net/ange-ftp.el 2010-04-23 14:12:05 +0000 +++ lisp/net/ange-ftp.el 2010-05-05 10:20:23 +0000 @@ -1734,7 +1734,10 @@ ange-ftp-gateway-tmp-name-template ange-ftp-tmp-name-template))) -(defalias 'ange-ftp-del-tmp-name 'delete-file) +(defun ange-ftp-del-tmp-name (filename) + "Force to delete temporary file." + (delete-file filename 'force)) + ;;;; ------------------------------------------------------------ ;;;; Interactive gateway program support. @@ -3504,7 +3507,7 @@ (file-exists-p file) (ange-ftp-real-file-executable-p file)))) -(defun ange-ftp-delete-file (file) +(defun ange-ftp-delete-file (file &optional force) (interactive "fDelete file: ") (setq file (expand-file-name file)) (let ((parsed (ange-ftp-ftp-name file))) @@ -3523,7 +3526,7 @@ (format "FTP Error: \"%s\"" (cdr result)) file))) (ange-ftp-delete-file-entry file)) - (ange-ftp-real-delete-file file)))) + (ange-ftp-real-delete-file file force)))) (defun ange-ftp-file-modtime (file) "Return the modification time of remote file FILE. @@ -3894,7 +3897,7 @@ (ange-ftp-add-file-entry newname) (ange-ftp-delete-file-entry filename)) (ange-ftp-copy-file-internal filename newname t nil) - (delete-file filename)))) + (delete-file filename 'force)))) (defun ange-ftp-rename-local-to-remote (filename newname) "Rename local file FILENAME to remote file NEWNAME." @@ -3903,7 +3906,7 @@ (msg (format "Renaming %s to %s" fabbr nabbr))) (ange-ftp-copy-file-internal filename newname t nil msg) (let (ange-ftp-process-verbose) - (delete-file filename)))) + (delete-file filename 'force)))) (defun ange-ftp-rename-remote-to-local (filename newname) "Rename remote file FILENAME to local file NEWNAME." @@ -3912,7 +3915,7 @@ (msg (format "Renaming %s to %s" fabbr nabbr))) (ange-ftp-copy-file-internal filename newname t nil msg) (let (ange-ftp-process-verbose) - (delete-file filename)))) + (delete-file filename 'force)))) (defun ange-ftp-rename-file (filename newname &optional ok-if-already-exists) (interactive "fRename file: \nFRename %s to file: \np") @@ -4193,7 +4196,7 @@ (if copy (unwind-protect (funcall 'load copy noerror nomessage nosuffix) - (delete-file copy)) + (delete-file copy 'force)) (or noerror (signal 'file-error (list "Cannot open load file" file))) nil)) @@ -4264,7 +4267,7 @@ (if (zerop (buffer-size)) (progn (let (ange-ftp-process-verbose) - (delete-file file)) + (delete-file file 'force)) (ange-ftp-copy-file-internal tmp2 nfile t nil msg2)))) (ange-ftp-del-tmp-name tmp1) (ange-ftp-del-tmp-name tmp2)))) @@ -4300,7 +4303,7 @@ (if (zerop (buffer-size)) (progn (let (ange-ftp-process-verbose) - (delete-file file)) + (delete-file file 'force)) (ange-ftp-copy-file-internal tmp2 nfile t nil msg2)))) (ange-ftp-del-tmp-name tmp1) (ange-ftp-del-tmp-name tmp2)))) === modified file 'lisp/net/tramp-compat.el' --- lisp/net/tramp-compat.el 2010-04-10 12:50:31 +0000 +++ lisp/net/tramp-compat.el 2010-05-05 10:20:23 +0000 @@ -317,6 +317,17 @@ (if keep-time (set-file-times newname (nth 5 (file-attributes directory)))))))) +;; FORCE has been introduced with Emacs 24.1. +(defun tramp-compat-delete-file (filename &optional force) + "Like `delete-file' for Tramp files (compat function)." + (condition-case nil + (funcall (symbol-function 'delete-file) filename force) + ;; This Emacs version does not support the FORCE flag. Setting + ;; `delete-by-moving-to-trash' shall give us the same effect. + (error + (let ((delete-by-moving-to-trash (null force))) + (delete-file filename))))) + ;; RECURSIVE has been introduced with Emacs 23.2. (defun tramp-compat-delete-directory (directory &optional recursive) "Like `delete-directory' for Tramp files (compat function)." === modified file 'lisp/net/tramp-fish.el' --- lisp/net/tramp-fish.el 2010-04-23 14:12:05 +0000 +++ lisp/net/tramp-fish.el 2010-05-05 10:20:23 +0000 @@ -332,7 +332,7 @@ (tramp-flush-directory-property v localname) (tramp-fish-send-command-and-check v (format "#RMD %s" localname))))) -(defun tramp-fish-handle-delete-file (filename) +(defun tramp-fish-handle-delete-file (filename &optional force) "Like `delete-file' for Tramp files." (when (file-exists-p filename) (with-parsed-tramp-file-name (expand-file-name filename) nil @@ -658,7 +658,7 @@ localname))))) (tramp-error v 'file-already-exists "File %s already exists" localname) - (delete-file linkname))) + (tramp-compat-delete-file linkname 'force))) ;; If FILENAME is a Tramp name, use just the localname component. (when (tramp-tramp-file-p filename) @@ -837,8 +837,8 @@ ;; Provide error file. (when tmpstderr (rename-file tmpstderr (cadr destination) t)) ;; Cleanup. - (when tmpinput (delete-file tmpinput)) - (when tmpoutput (delete-file tmpoutput)) + (when tmpinput (tramp-compat-delete-file tmpinput 'force)) + (when tmpoutput (tramp-compat-delete-file tmpoutput 'force)) ;; Return exit status. ret))) === modified file 'lisp/net/tramp-ftp.el' --- lisp/net/tramp-ftp.el 2010-01-13 08:35:10 +0000 +++ lisp/net/tramp-ftp.el 2010-05-05 10:20:23 +0000 @@ -1,7 +1,7 @@ ;;; tramp-ftp.el --- Tramp convenience functions for Ange-FTP -;; Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, -;; 2008, 2009, 2010 Free Software Foundation, Inc. +;; Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, +;; 2009, 2010 Free Software Foundation, Inc. ;; Author: Michael Albinus ;; Keywords: comm, processes @@ -182,7 +182,7 @@ (unwind-protect (rename-file tmpfile newname (car args)) ;; Cleanup. - (ignore-errors (delete-file tmpfile))))) + (ignore-errors (tramp-compat-delete-file tmpfile 'force))))) ;; Normally, the handlers must be discarded. ;; `inhibit-file-name-handlers' isn't sufficient, because the === modified file 'lisp/net/tramp-gvfs.el' --- lisp/net/tramp-gvfs.el 2010-04-23 14:12:05 +0000 +++ lisp/net/tramp-gvfs.el 2010-05-05 10:20:23 +0000 @@ -533,9 +533,9 @@ (tramp-compat-delete-directory (tramp-gvfs-fuse-file-name directory) recursive)) -(defun tramp-gvfs-handle-delete-file (filename) +(defun tramp-gvfs-handle-delete-file (filename &optional force) "Like `delete-file' for Tramp files." - (delete-file (tramp-gvfs-fuse-file-name filename))) + (tramp-compat-delete-file (tramp-gvfs-fuse-file-name filename) force)) (defun tramp-gvfs-handle-directory-files (directory &optional full match nosort) @@ -741,7 +741,7 @@ "gvfs-save" tmpfile (tramp-get-buffer v) nil (tramp-gvfs-url-file-name filename))) (signal (car err) (cdr err))) - (delete-file tmpfile))))) + (tramp-compat-delete-file tmpfile 'force))))) ;; Set file modification time. (when (or (eq visit t) (stringp visit)) === modified file 'lisp/net/tramp-imap.el' --- lisp/net/tramp-imap.el 2010-04-23 14:12:05 +0000 +++ lisp/net/tramp-imap.el 2010-05-05 10:20:23 +0000 @@ -268,7 +268,7 @@ (tramp-message v 0 "Transferring %s to %s...done" filename newname)) (when (eq op 'rename) - (delete-file filename)))) + (tramp-compat-delete-file filename 'force)))) ;; TODO: revise this much (defun tramp-imap-handle-expand-file-name (name &optional dir) @@ -553,7 +553,7 @@ ;; (file-exists-p (file-name-directory filename))) (file-directory-p (file-name-directory filename))) -(defun tramp-imap-handle-delete-file (filename) +(defun tramp-imap-handle-delete-file (filename &optional force) "Like `delete-file' for Tramp files." (cond ((not (file-exists-p filename)) nil) === modified file 'lisp/net/tramp-smb.el' --- lisp/net/tramp-smb.el 2010-04-23 14:12:05 +0000 +++ lisp/net/tramp-smb.el 2010-05-05 10:20:23 +0000 @@ -342,7 +342,7 @@ (condition-case err (rename-file tmpfile newname ok-if-already-exists) ((error quit) - (delete-file tmpfile) + (tramp-compat-delete-file tmpfile 'force) (signal (car err) (cdr err)))) ;; Remote newname. @@ -404,7 +404,7 @@ (tramp-error v 'file-error "%s `%s'" (match-string 0) directory)))))) -(defun tramp-smb-handle-delete-file (filename) +(defun tramp-smb-handle-delete-file (filename &optional force) "Like `delete-file' for Tramp files." (setq filename (expand-file-name filename)) (when (file-exists-p filename) @@ -611,7 +611,7 @@ (tramp-message v 4 "Fetching %s to tmp file %s...done" filename tmpfile) ;; Oops, an error. We shall cleanup. - (delete-file tmpfile) + (tramp-compat-delete-file tmpfile 'force) (tramp-error v 'file-error "Cannot make local copy of file `%s'" filename)) tmpfile))) @@ -858,7 +858,7 @@ (condition-case err (rename-file tmpfile newname ok-if-already-exists) ((error quit) - (delete-file tmpfile) + (tramp-compat-delete-file tmpfile 'force) (signal (car err) (cdr err)))) ;; Remote newname. @@ -881,7 +881,7 @@ v 0 "Copying file %s to file %s...done" filename newname) (tramp-error v 'file-error "Cannot rename `%s'" filename))))) - (delete-file filename)) + (tramp-compat-delete-file filename 'force)) (defun tramp-smb-handle-set-file-modes (filename mode) "Like `set-file-modes' for Tramp files." @@ -945,7 +945,7 @@ (tramp-message v 5 "Writing tmp file %s to file %s...done" tmpfile filename) (tramp-error v 'file-error "Cannot write `%s'" filename)) - (delete-file tmpfile)) + (tramp-compat-delete-file tmpfile 'force)) (unless (equal curbuf (current-buffer)) (tramp-error === modified file 'lisp/net/tramp.el' --- lisp/net/tramp.el 2010-05-04 08:44:47 +0000 +++ lisp/net/tramp.el 2010-05-05 10:20:23 +0000 @@ -2511,7 +2511,7 @@ l-localname))))) (tramp-error l 'file-already-exists "File %s already exists" l-localname) - (delete-file linkname))) + (tramp-compat-delete-file linkname 'force))) ;; If FILENAME is a Tramp name, use just the localname component. (when (tramp-tramp-file-p filename) @@ -2559,7 +2559,7 @@ ;; MUST-SUFFIX doesn't exist on XEmacs, so let it default to nil. (unwind-protect (load local-copy noerror t t) - (delete-file local-copy))) + (tramp-compat-delete-file local-copy 'force))) (unless nomessage (tramp-message v 0 "Loading %s...done" file)) t))) @@ -3737,7 +3737,7 @@ ;; Set the mode. (set-file-modes newname (tramp-default-file-modes filename)) ;; If the operation was `rename', delete the original file. - (unless (eq op 'copy) (delete-file filename))) + (unless (eq op 'copy) (tramp-compat-delete-file filename 'force))) (defun tramp-do-copy-or-rename-file-directly (op filename newname ok-if-already-exists keep-date preserve-uid-gid) @@ -3892,7 +3892,7 @@ ;; Save exit. (condition-case nil - (delete-file tmpfile) + (tramp-compat-delete-file tmpfile 'force) (error))))))))) ;; Set the time and mode. Mask possible errors. @@ -3932,7 +3932,7 @@ (if dir-flag (tramp-compat-delete-directory (expand-file-name ".." tmpfile) 'recursive) - (delete-file tmpfile)) + (tramp-compat-delete-file tmpfile 'force)) (error)))) ;; Expand hops. Might be necessary for gateway methods. @@ -4050,7 +4050,7 @@ ;; If the operation was `rename', delete the original file. (unless (eq op 'copy) (if (file-regular-p filename) - (delete-file filename) + (tramp-compat-delete-file filename 'force) (tramp-compat-delete-directory filename 'recursive)))))) (defun tramp-handle-make-directory (dir &optional parents) @@ -4080,7 +4080,7 @@ (tramp-shell-quote-argument localname)))) (tramp-error v 'file-error "Couldn't delete %s" directory)))) -(defun tramp-handle-delete-file (filename) +(defun tramp-handle-delete-file (filename &optional force) "Like `delete-file' for Tramp files." (setq filename (expand-file-name filename)) (with-parsed-tramp-file-name filename nil @@ -4599,7 +4599,7 @@ ;; Cleanup. We remove all file cache values for the connection, ;; because the remote process could have changed them. - (when tmpinput (delete-file tmpinput)) + (when tmpinput (tramp-compat-delete-file tmpinput 'force)) ;; `process-file-side-effects' has been introduced with GNU ;; Emacs 23.2. If set to `nil', no remote file will be changed @@ -4636,7 +4636,7 @@ (when delete (delete-region start end)) (unwind-protect (apply 'call-process program tmpfile buffer display args) - (delete-file tmpfile)))) + (tramp-compat-delete-file tmpfile 'force)))) (defun tramp-handle-shell-command (command &optional output-buffer error-buffer) @@ -4701,7 +4701,7 @@ (when (listp buffer) (with-current-buffer error-buffer (insert-file-contents (cadr buffer))) - (delete-file (cadr buffer))) + (tramp-compat-delete-file (cadr buffer) 'force)) (if current-buffer-p ;; This is like exchange-point-and-mark, but doesn't ;; activate the mark. It is cleaner to avoid activation, @@ -4783,7 +4783,7 @@ filename loc-dec) (unwind-protect (tramp-call-local-coding-command loc-dec tmpfile2 tmpfile) - (delete-file tmpfile2)))) + (tramp-compat-delete-file tmpfile2 'force)))) (tramp-message v 5 "Decoding remote file %s...done" filename) ;; Set proper permissions. @@ -4797,7 +4797,7 @@ ;; Error handling. ((error quit) - (delete-file tmpfile) + (tramp-compat-delete-file tmpfile 'force) (signal (car err) (cdr err)))) (run-hooks 'tramp-handle-file-local-copy-hook) @@ -4943,10 +4943,11 @@ (set-buffer-modified-p nil)) (when (and (stringp local-copy) (or remote-copy (null tramp-temp-buffer-file-name))) - (delete-file local-copy)) + (tramp-compat-delete-file local-copy 'force)) (when (stringp remote-copy) - (delete-file - (tramp-make-tramp-file-name method user host remote-copy)))))) + (tramp-compat-delete-file + (tramp-make-tramp-file-name method user host remote-copy) + 'force))))) ;; Result. (list (expand-file-name filename) @@ -5136,7 +5137,7 @@ (list start end tmpfile append 'no-message lockname confirm)) ((error quit) (setq tramp-temp-buffer-file-name nil) - (delete-file tmpfile) + (tramp-compat-delete-file tmpfile 'force) (signal (car err) (cdr err)))) ;; Now, `last-coding-system-used' has the right value. Remember it. @@ -5180,13 +5181,13 @@ (copy-file tmpfile filename t) ((error quit) (setq tramp-temp-buffer-file-name nil) - (delete-file tmpfile) + (tramp-compat-delete-file tmpfile 'force) (signal (car err) (cdr err))))) (setq tramp-temp-buffer-file-name nil) ;; Don't rename, in order to keep context in SELinux. (unwind-protect (copy-file tmpfile filename t) - (delete-file tmpfile)))) + (tramp-compat-delete-file tmpfile 'force)))) ;; Use inline file transfer. (rem-dec @@ -5270,7 +5271,7 @@ v 5 "Decoding region into remote file %s...done" filename)) ;; Save exit. - (delete-file tmpfile))) + (tramp-compat-delete-file tmpfile 'force))) ;; That's not expected. (t @@ -6350,7 +6351,7 @@ "Remove temporary files related to current buffer." (when (stringp tramp-temp-buffer-file-name) (condition-case nil - (delete-file tramp-temp-buffer-file-name) + (tramp-compat-delete-file tramp-temp-buffer-file-name 'force) (error nil)))) (add-hook 'kill-buffer-hook 'tramp-delete-temp-file-function) ------------------------------------------------------------ revno: 100147 committer: Stefan Monnier branch nick: trunk timestamp: Wed 2010-05-05 00:27:16 -0400 message: Minor cleanups. * org-table.el (orgtbl-setup): * org-agenda.el (org-agenda-entry-text-mode): Simplify. * subr.el (add-minor-mode): Use push. * mail/supercite.el (sc-electric-mode): Use more descriptive arg name. * emulation/edt.el (edt-select-mode): Simplify. diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2010-05-05 03:45:21 +0000 +++ lisp/ChangeLog 2010-05-05 04:27:16 +0000 @@ -1,5 +1,10 @@ 2010-05-05 Stefan Monnier + Minor cleanups. + * subr.el (add-minor-mode): Use push. + * mail/supercite.el (sc-electric-mode): Use more descriptive arg name. + * emulation/edt.el (edt-select-mode): Simplify. + Use define-minor-mode in more cases. * term/tvi970.el (tvi970-set-keypad-mode): * simple.el (auto-fill-mode, overwrite-mode, binary-overwrite-mode) === modified file 'lisp/emulation/edt.el' --- lisp/emulation/edt.el 2010-01-16 02:51:50 +0000 +++ lisp/emulation/edt.el 2010-05-05 04:27:16 +0000 @@ -858,8 +858,7 @@ In select mode, selected text is highlighted." (if arg (progn - (make-local-variable 'edt-select-mode) - (setq edt-select-mode 'edt-select-mode-current) + (set (make-local-variable 'edt-select-mode) 'edt-select-mode-current) (setq rect-start-point (window-point))) (progn (kill-local-variable 'edt-select-mode))) === modified file 'lisp/mail/supercite.el' --- lisp/mail/supercite.el 2010-03-18 06:13:45 +0000 +++ lisp/mail/supercite.el 2010-05-05 04:27:16 +0000 @@ -1619,21 +1619,20 @@ (cadr err) sc-eref-style) (beep)))))) -(defun sc-electric-mode (&optional arg) - " -Mode for viewing Supercite reference headers. Commands are: +(defun sc-electric-mode (&optional style) + "Mode for viewing Supercite reference headers. Commands are: \n\\{sc-electric-mode-map} `sc-electric-mode' is not intended to be run interactively, but rather accessed through Supercite's electric reference feature. See -`sc-insert-reference' for more details. Optional ARG is the initial +`sc-insert-reference' for more details. Optional STYLE is the initial header style to use, unless not supplied or invalid, in which case `sc-preferred-header-style' is used." (let ((info sc-mail-info)) (setq sc-eref-style - (or (sc-valid-index-p arg) + (or (sc-valid-index-p style) (sc-valid-index-p sc-preferred-header-style) 0)) === modified file 'lisp/net/rlogin.el' --- lisp/net/rlogin.el 2010-01-13 08:35:10 +0000 +++ lisp/net/rlogin.el 2010-05-05 04:27:16 +0000 @@ -249,7 +249,7 @@ ``\\[universal-argument] 1 M-x rlogin-directory-tracking-mode\'', then do directory tracking but assume the remote filesystem is the same as the local system. This only works in general if the remote machine and the -local one share the same directories (through NFS)." +local one share the same directories (e.g. through NFS)." (interactive "P") (cond ((or (null prefix) === modified file 'lisp/org/ChangeLog' --- lisp/org/ChangeLog 2010-05-03 06:23:01 +0000 +++ lisp/org/ChangeLog 2010-05-05 04:27:16 +0000 @@ -1,3 +1,8 @@ +2010-05-05 Stefan Monnier + + * org-table.el (orgtbl-setup): + * org-agenda.el (org-agenda-entry-text-mode): Simplify. + 2010-05-03 Stefan Monnier * org-table.el (orgtbl-mode): Use define-minor-mode. === modified file 'lisp/org/org-agenda.el' --- lisp/org/org-agenda.el 2010-04-15 10:11:52 +0000 +++ lisp/org/org-agenda.el 2010-05-05 04:27:16 +0000 @@ -5916,9 +5916,8 @@ (defun org-agenda-entry-text-mode (&optional arg) "Toggle entry text mode in an agenda buffer." (interactive "P") - (if (integerp arg) - (setq org-agenda-entry-text-mode t) - (setq org-agenda-entry-text-mode (not org-agenda-entry-text-mode))) + (setq org-agenda-entry-text-mode (or (integerp arg) + (not org-agenda-entry-text-mode))) (org-agenda-entry-text-hide) (and org-agenda-entry-text-mode (let ((org-agenda-entry-text-maxlines === modified file 'lisp/org/org-table.el' --- lisp/org/org-table.el 2010-05-03 02:29:46 +0000 +++ lisp/org/org-table.el 2010-05-05 04:27:16 +0000 @@ -3514,34 +3514,33 @@ "Setup orgtbl keymaps." (let ((nfunc 0) (bindings - (list - '([(meta shift left)] org-table-delete-column) - '([(meta left)] org-table-move-column-left) - '([(meta right)] org-table-move-column-right) - '([(meta shift right)] org-table-insert-column) - '([(meta shift up)] org-table-kill-row) - '([(meta shift down)] org-table-insert-row) - '([(meta up)] org-table-move-row-up) - '([(meta down)] org-table-move-row-down) - '("\C-c\C-w" org-table-cut-region) - '("\C-c\M-w" org-table-copy-region) - '("\C-c\C-y" org-table-paste-rectangle) - '("\C-c-" org-table-insert-hline) - '("\C-c}" org-table-toggle-coordinate-overlays) - '("\C-c{" org-table-toggle-formula-debugger) - '("\C-m" org-table-next-row) - '([(shift return)] org-table-copy-down) - '("\C-c?" org-table-field-info) - '("\C-c " org-table-blank-field) - '("\C-c+" org-table-sum) - '("\C-c=" org-table-eval-formula) - '("\C-c'" org-table-edit-formulas) - '("\C-c`" org-table-edit-field) - '("\C-c*" org-table-recalculate) - '("\C-c^" org-table-sort-lines) - '("\M-a" org-table-beginning-of-field) - '("\M-e" org-table-end-of-field) - '([(control ?#)] org-table-rotate-recalc-marks))) + '(([(meta shift left)] org-table-delete-column) + ([(meta left)] org-table-move-column-left) + ([(meta right)] org-table-move-column-right) + ([(meta shift right)] org-table-insert-column) + ([(meta shift up)] org-table-kill-row) + ([(meta shift down)] org-table-insert-row) + ([(meta up)] org-table-move-row-up) + ([(meta down)] org-table-move-row-down) + ("\C-c\C-w" org-table-cut-region) + ("\C-c\M-w" org-table-copy-region) + ("\C-c\C-y" org-table-paste-rectangle) + ("\C-c-" org-table-insert-hline) + ("\C-c}" org-table-toggle-coordinate-overlays) + ("\C-c{" org-table-toggle-formula-debugger) + ("\C-m" org-table-next-row) + ([(shift return)] org-table-copy-down) + ("\C-c?" org-table-field-info) + ("\C-c " org-table-blank-field) + ("\C-c+" org-table-sum) + ("\C-c=" org-table-eval-formula) + ("\C-c'" org-table-edit-formulas) + ("\C-c`" org-table-edit-field) + ("\C-c*" org-table-recalculate) + ("\C-c^" org-table-sort-lines) + ("\M-a" org-table-beginning-of-field) + ("\M-e" org-table-end-of-field) + ([(control ?#)] org-table-rotate-recalc-marks))) elt key fun cmd) (while (setq elt (pop bindings)) (setq nfunc (1+ nfunc)) === modified file 'lisp/subr.el' --- lisp/subr.el 2010-04-20 23:05:30 +0000 +++ lisp/subr.el 2010-05-05 04:27:16 +0000 @@ -1477,8 +1477,7 @@ (let ((rest (cdr found))) (setcdr found nil) (nconc found (list (list toggle name)) rest)) - (setq minor-mode-alist (cons (list toggle name) - minor-mode-alist))))))) + (push (list toggle name) minor-mode-alist)))))) ;; Add the toggle to the minor-modes menu if requested. (when (get toggle :included) (define-key mode-line-mode-menu @@ -1507,8 +1506,7 @@ (let ((rest (cdr found))) (setcdr found nil) (nconc found (list (cons toggle keymap)) rest)) - (setq minor-mode-map-alist (cons (cons toggle keymap) - minor-mode-map-alist)))))))) + (push (cons toggle keymap) minor-mode-map-alist))))))) ;;; Load history ------------------------------------------------------------ revno: 100146 committer: Stefan Monnier branch nick: trunk timestamp: Tue 2010-05-04 23:45:21 -0400 message: Use define-minor-mode in more cases. * term/tvi970.el (tvi970-set-keypad-mode): * simple.el (auto-fill-mode, overwrite-mode, binary-overwrite-mode) (normal-erase-is-backspace-mode): * scroll-bar.el (scroll-bar-mode): Use it and define-minor-mode. (set-scroll-bar-mode-1): (Re)move to its sole caller. (get-scroll-bar-mode): New function. * emacs-lisp/cl-macs.el (eq): Handle a non-variable first arg. diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2010-05-05 02:08:25 +0000 +++ lisp/ChangeLog 2010-05-05 03:45:21 +0000 @@ -1,5 +1,15 @@ 2010-05-05 Stefan Monnier + Use define-minor-mode in more cases. + * term/tvi970.el (tvi970-set-keypad-mode): + * simple.el (auto-fill-mode, overwrite-mode, binary-overwrite-mode) + (normal-erase-is-backspace-mode): + * scroll-bar.el (scroll-bar-mode): Use it and define-minor-mode. + (set-scroll-bar-mode-1): (Re)move to its sole caller. + (get-scroll-bar-mode): New function. + * emacs-lisp/cl-macs.el (eq): Handle a non-variable first arg. + + Use define-minor-mode for less obvious cases. * emacs-lisp/easy-mmode.el (define-minor-mode): Add :variable keyword. * emacs-lisp/cl-macs.el (terminal-parameter, eq): Add setf method. * international/iso-ascii.el (iso-ascii-mode): === modified file 'lisp/emacs-lisp/cl-loaddefs.el' --- lisp/emacs-lisp/cl-loaddefs.el 2010-04-21 02:05:24 +0000 +++ lisp/emacs-lisp/cl-loaddefs.el 2010-05-05 03:45:21 +0000 @@ -282,7 +282,7 @@ ;;;;;; flet progv psetq do-all-symbols do-symbols dotimes dolist ;;;;;; do* do loop return-from return block etypecase typecase ecase ;;;;;; case load-time-value eval-when destructuring-bind function* -;;;;;; defmacro* defun* gentemp gensym) "cl-macs" "cl-macs.el" "7fad7dd60f2f96ba90432f885015d61b") +;;;;;; defmacro* defun* gentemp gensym) "cl-macs" "cl-macs.el" "0faa39d8f21ae59f2cc1baa835e28a5f") ;;; Generated autoloads from cl-macs.el (autoload 'gensym "cl-macs" "\ === modified file 'lisp/emacs-lisp/cl-macs.el' --- lisp/emacs-lisp/cl-macs.el 2010-05-05 02:08:25 +0000 +++ lisp/emacs-lisp/cl-macs.el 2010-05-05 03:45:21 +0000 @@ -1826,7 +1826,17 @@ ;; (setq a 7) or (setq a nil) depending on whether B is nil or not. ;; This is useful when you have control over the PLACE but not over ;; the VALUE, as is the case in define-minor-mode's :variable. -(defsetf eq (a b) (v) `(setf ,a (if ,v ,b (not ,b)))) +(define-setf-method eq (place val) + (let ((method (get-setf-method place cl-macro-environment)) + (val-temp (make-symbol "--eq-val--")) + (store-temp (make-symbol "--eq-store--"))) + (list (append (nth 0 method) (list val-temp)) + (append (nth 1 method) (list val)) + (list store-temp) + `(let ((,(car (nth 2 method)) + (if ,store-temp ,val-temp (not ,val-temp)))) + ,(nth 3 method) ,store-temp) + `(eq ,(nth 4 method) ,val-temp)))) ;;; More complex setf-methods. ;; These should take &environment arguments, but since full arglists aren't === modified file 'lisp/scroll-bar.el' --- lisp/scroll-bar.el 2010-02-28 14:36:34 +0000 +++ lisp/scroll-bar.el 2010-05-05 03:45:21 +0000 @@ -29,6 +29,7 @@ ;;; Code: (require 'mouse) +(eval-when-compile (require 'cl)) ;;;; Utilities. @@ -79,9 +80,6 @@ "Non-nil means `set-scroll-bar-mode' should really do something. This is nil while loading `scroll-bar.el', and t afterward.") -(defun set-scroll-bar-mode-1 (ignore value) - (set-scroll-bar-mode value)) - (defun set-scroll-bar-mode (value) "Set `scroll-bar-mode' to VALUE and put the new value into effect." (if scroll-bar-mode @@ -107,27 +105,23 @@ ;; The default value for :initialize would try to use :set ;; when processing the file in cus-dep.el. :initialize 'custom-initialize-default - :set 'set-scroll-bar-mode-1) + :set (lambda (sym val) (set-scroll-bar-mode val))) ;; We just set scroll-bar-mode, but that was the default. ;; If it is set again, that is for real. (setq scroll-bar-mode-explicit t) -(defun scroll-bar-mode (&optional flag) +(defun get-scroll-bar-mode () scroll-bar-mode) +(defsetf get-scroll-bar-mode set-scroll-bar-mode) +(define-minor-mode scroll-bar-mode "Toggle display of vertical scroll bars on all frames. This command applies to all frames that exist and frames to be created in the future. With a numeric argument, if the argument is positive turn on scroll bars; otherwise turn off scroll bars." - (interactive "P") - - ;; Tweedle the variable according to the argument. - (set-scroll-bar-mode (if (if (null flag) - (not scroll-bar-mode) - (setq flag (prefix-numeric-value flag)) - (or (not (numberp flag)) (> flag 0))) - (or previous-scroll-bar-mode - default-frame-scroll-bars)))) + :variable (eq (get-scroll-bar-mode) + (or previous-scroll-bar-mode + default-frame-scroll-bars))) (defun toggle-scroll-bar (arg) "Toggle whether or not the selected frame has vertical scroll bars. === modified file 'lisp/simple.el' --- lisp/simple.el 2010-05-02 05:56:30 +0000 +++ lisp/simple.el 2010-05-05 03:45:21 +0000 @@ -5149,7 +5149,7 @@ (put 'auto-fill-function 'safe-local-variable 'null) ;; FIXME: turn into a proper minor mode. ;; Add a global minor mode version of it. -(defun auto-fill-mode (&optional arg) +(define-minor-mode auto-fill-mode "Toggle Auto Fill mode. With ARG, turn Auto Fill mode on if and only if ARG is positive. In Auto Fill mode, inserting a space at a column beyond `current-fill-column' @@ -5157,14 +5157,7 @@ The value of `normal-auto-fill-function' specifies the function to use for `auto-fill-function' when turning Auto Fill mode on." - (interactive "P") - (prog1 (setq auto-fill-function - (if (if (null arg) - (not auto-fill-function) - (> (prefix-numeric-value arg) 0)) - normal-auto-fill-function - nil)) - (force-mode-line-update))) + :variable (eq auto-fill-function normal-auto-fill-function)) ;; This holds a document string used to document auto-fill-mode. (defun auto-fill-function () @@ -5263,7 +5256,7 @@ (defvar overwrite-mode-binary (purecopy " Bin Ovwrt") "The string displayed in the mode line when in binary overwrite mode.") -(defun overwrite-mode (arg) +(define-minor-mode overwrite-mode "Toggle overwrite mode. With prefix argument ARG, turn overwrite mode on if ARG is positive, otherwise turn it off. In overwrite mode, printing characters typed @@ -5272,14 +5265,9 @@ Before a tab, such characters insert until the tab is filled in. \\[quoted-insert] still inserts characters in overwrite mode; this is supposed to make it easier to insert characters when necessary." - (interactive "P") - (setq overwrite-mode - (if (if (null arg) (not overwrite-mode) - (> (prefix-numeric-value arg) 0)) - 'overwrite-mode-textual)) - (force-mode-line-update)) + :variable (eq overwrite-mode 'overwrite-mode-textual)) -(defun binary-overwrite-mode (arg) +(define-minor-mode binary-overwrite-mode "Toggle binary overwrite mode. With prefix argument ARG, turn binary overwrite mode on if ARG is positive, otherwise turn it off. In binary overwrite mode, printing @@ -5292,13 +5280,7 @@ Note that binary overwrite mode is not its own minor mode; it is a specialization of overwrite mode, entered by setting the `overwrite-mode' variable to `overwrite-mode-binary'." - (interactive "P") - (setq overwrite-mode - (if (if (null arg) - (not (eq overwrite-mode 'overwrite-mode-binary)) - (> (prefix-numeric-value arg) 0)) - 'overwrite-mode-binary)) - (force-mode-line-update)) + :variable (eq overwrite-mode 'overwrite-mode-binary)) (define-minor-mode line-number-mode "Toggle Line Number mode. @@ -6438,7 +6420,7 @@ normal-erase-is-backspace) 1 0))))) -(defun normal-erase-is-backspace-mode (&optional arg) +(define-minor-mode normal-erase-is-backspace-mode "Toggle the Erase and Delete mode of the Backspace and Delete keys. With numeric ARG, turn the mode on if and only if ARG is positive. @@ -6468,13 +6450,10 @@ have both Backspace, Delete and F1 keys. See also `normal-erase-is-backspace'." - (interactive "P") - (let ((enabled (or (and arg (> (prefix-numeric-value arg) 0)) - (not (or arg - (eq 1 (terminal-parameter - nil 'normal-erase-is-backspace))))))) - (set-terminal-parameter nil 'normal-erase-is-backspace - (if enabled 1 0)) + :variable (eq (terminal-parameter + nil 'normal-erase-is-backspace) 1) + (let ((enabled (eq 1 (terminal-parameter + nil 'normal-erase-is-backspace)))) (cond ((or (memq window-system '(x w32 ns pc)) (memq system-type '(ms-dos windows-nt))) @@ -6510,7 +6489,6 @@ (keyboard-translate ?\C-h ?\C-h) (keyboard-translate ?\C-? ?\C-?)))) - (run-hooks 'normal-erase-is-backspace-hook) (if (called-interactively-p 'interactive) (message "Delete key deletes %s" (if (eq 1 (terminal-parameter nil 'normal-erase-is-backspace)) === modified file 'lisp/term/tvi970.el' --- lisp/term/tvi970.el 2010-01-13 08:35:10 +0000 +++ lisp/term/tvi970.el 2010-05-05 03:45:21 +0000 @@ -28,6 +28,8 @@ ;;; Code: +(eval-when-compile (require 'cl)) + (defvar tvi970-terminal-map (let ((map (make-sparse-keymap))) @@ -102,7 +104,7 @@ ;; Should keypad numbers send ordinary digits or distinct escape sequences? -(defun tvi970-set-keypad-mode (&optional arg) +(define-minor-mode tvi970-set-keypad-mode "Set the current mode of the TVI 970 numeric keypad. In ``numeric keypad mode'', the number keys on the keypad act as ordinary digits. In ``alternate keypad mode'', the keys send distinct @@ -111,12 +113,9 @@ With no argument, toggle between the two possible modes. With a positive argument, select alternate keypad mode. With a negative argument, select numeric keypad mode." - (interactive "P") - (let ((newval (if (null arg) - (not (terminal-parameter nil 'tvi970-keypad-numeric)) - (> (prefix-numeric-value arg) 0)))) - (set-terminal-parameter nil 'tvi970-keypad-numeric newval) - (send-string-to-terminal (if newval "\e=" "\e>")))) + :variable (terminal-parameter nil 'tvi970-keypad-numeric) + (send-string-to-terminal + (if (terminal-parameter nil 'tvi970-keypad-numeric) "\e=" "\e>"))) ;; arch-tag: c1334cf0-1462-41c3-a963-c077d175f8f0 ;;; tvi970.el ends here ------------------------------------------------------------ Use --include-merges or -n0 to see merged revisions.