aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Ponce2005-10-14 09:05:15 +0000
committerDavid Ponce2005-10-14 09:05:15 +0000
commitb6b5618c15e0d836edc2e91b25718a249ffde7ee (patch)
tree6786a814e324a3a89cc75b09fa1065a3a40e3a0e
parentfc5c75503bfc9f04b32be4cfe2400ec24f29ca7b (diff)
downloademacs-b6b5618c15e0d836edc2e91b25718a249ffde7ee.tar.gz
emacs-b6b5618c15e0d836edc2e91b25718a249ffde7ee.zip
(recentf-track-opened-file)
(recentf-track-closed-file, recentf-update-menu) (recentf-used-hooks, recentf-enabled-p): Move before dialog stuff. (recentf-dialog-mode-map): Map follow-link to RET, so dialogs obey mouse-1-click-follows-link.
-rw-r--r--lisp/ChangeLog8
-rw-r--r--lisp/recentf.el106
2 files changed, 62 insertions, 52 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index 00c71e23aeb..914eec4ab64 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,11 @@
12005-10-14 David Ponce <david@dponce.com>
2
3 * recentf.el (recentf-track-opened-file)
4 (recentf-track-closed-file, recentf-update-menu)
5 (recentf-used-hooks, recentf-enabled-p): Move before dialog stuff.
6 (recentf-dialog-mode-map): Map follow-link to RET, so dialogs obey
7 mouse-1-click-follows-link.
8
12005-10-13 Jan Dj,Ad(Brv <jan.h.d@swipnet.se> 92005-10-13 Jan Dj,Ad(Brv <jan.h.d@swipnet.se>
2 10
3 * toolbar/diropen.xpm, toolbar/diropen.pbm: New versions made from 11 * toolbar/diropen.xpm, toolbar/diropen.pbm: New versions made from
diff --git a/lisp/recentf.el b/lisp/recentf.el
index dee7a8d438d..b14997d604f 100644
--- a/lisp/recentf.el
+++ b/lisp/recentf.el
@@ -985,6 +985,54 @@ unchanged."
985 t))))) 985 t)))))
986 l)) 986 l))
987 987
988;;; Hooks
989;;
990(defun recentf-track-opened-file ()
991 "Insert the name of the file just opened or written into the recent list."
992 (and buffer-file-name
993 (recentf-add-file buffer-file-name))
994 ;; Must return nil because it is run from `write-file-functions'.
995 nil)
996
997(defun recentf-track-closed-file ()
998 "Update the recent list when a buffer is killed.
999That is, remove a non kept file from the recent list."
1000 (and buffer-file-name
1001 (recentf-remove-if-non-kept buffer-file-name)))
1002
1003(defun recentf-update-menu ()
1004 "Update the recentf menu from the current recent list."
1005 (let ((cache (cons default-directory recentf-list)))
1006 ;; Does nothing, if nothing has changed.
1007 (unless (equal recentf-data-cache cache)
1008 (setq recentf-data-cache cache)
1009 (condition-case err
1010 (easy-menu-add-item
1011 (recentf-menu-bar) recentf-menu-path
1012 (easy-menu-create-menu recentf-menu-title
1013 (recentf-make-menu-items))
1014 recentf-menu-before)
1015 (error
1016 (message "recentf update menu failed: %s"
1017 (error-message-string err)))))))
1018
1019(defconst recentf-used-hooks
1020 '(
1021 (find-file-hook recentf-track-opened-file)
1022 (write-file-functions recentf-track-opened-file)
1023 (kill-buffer-hook recentf-track-closed-file)
1024 (menu-bar-update-hook recentf-update-menu)
1025 (kill-emacs-hook recentf-save-list)
1026 )
1027 "Hooks used by recentf.")
1028
1029(defsubst recentf-enabled-p ()
1030 "Return non-nil if recentf mode is currently enabled."
1031 (memq 'recentf-update-menu menu-bar-update-hook))
1032
1033;;; Commands
1034;;
1035
988;;; Common dialog stuff 1036;;; Common dialog stuff
989;; 1037;;
990(defun recentf-cancel-dialog (&rest ignore) 1038(defun recentf-cancel-dialog (&rest ignore)
@@ -1011,7 +1059,7 @@ Go to the beginning of buffer if not found."
1011 (let ((km (copy-keymap recentf--shortcuts-keymap))) 1059 (let ((km (copy-keymap recentf--shortcuts-keymap)))
1012 (set-keymap-parent km widget-keymap) 1060 (set-keymap-parent km widget-keymap)
1013 (define-key km "q" 'recentf-cancel-dialog) 1061 (define-key km "q" 'recentf-cancel-dialog)
1014 (define-key km [down-mouse-1] 'widget-button-click) 1062 (define-key km [follow-link] "\C-m")
1015 km) 1063 km)
1016 "Keymap used in recentf dialogs.") 1064 "Keymap used in recentf dialogs.")
1017 1065
@@ -1038,54 +1086,6 @@ Go to the beginning of buffer if not found."
1038 (widget-setup) 1086 (widget-setup)
1039 (switch-to-buffer (current-buffer)))) 1087 (switch-to-buffer (current-buffer))))
1040 1088
1041;;; Hooks
1042;;
1043(defun recentf-track-opened-file ()
1044 "Insert the name of the file just opened or written into the recent list."
1045 (and buffer-file-name
1046 (recentf-add-file buffer-file-name))
1047 ;; Must return nil because it is run from `write-file-functions'.
1048 nil)
1049
1050(defun recentf-track-closed-file ()
1051 "Update the recent list when a buffer is killed.
1052That is, remove a non kept file from the recent list."
1053 (and buffer-file-name
1054 (recentf-remove-if-non-kept buffer-file-name)))
1055
1056(defun recentf-update-menu ()
1057 "Update the recentf menu from the current recent list."
1058 (let ((cache (cons default-directory recentf-list)))
1059 ;; Does nothing, if nothing has changed.
1060 (unless (equal recentf-data-cache cache)
1061 (setq recentf-data-cache cache)
1062 (condition-case err
1063 (easy-menu-add-item
1064 (recentf-menu-bar) recentf-menu-path
1065 (easy-menu-create-menu recentf-menu-title
1066 (recentf-make-menu-items))
1067 recentf-menu-before)
1068 (error
1069 (message "recentf update menu failed: %s"
1070 (error-message-string err)))))))
1071
1072(defconst recentf-used-hooks
1073 '(
1074 (find-file-hook recentf-track-opened-file)
1075 (write-file-functions recentf-track-opened-file)
1076 (kill-buffer-hook recentf-track-closed-file)
1077 (menu-bar-update-hook recentf-update-menu)
1078 (kill-emacs-hook recentf-save-list)
1079 )
1080 "Hooks used by recentf.")
1081
1082(defsubst recentf-enabled-p ()
1083 "Return non-nil if recentf mode is currently enabled."
1084 (memq 'recentf-update-menu menu-bar-update-hook))
1085
1086;;; Commands
1087;;
1088
1089;;; Edit list dialog 1089;;; Edit list dialog
1090;; 1090;;
1091(defvar recentf-edit-list nil) 1091(defvar recentf-edit-list nil)
@@ -1140,7 +1140,7 @@ Click on Cancel or type `q' to cancel.\n")
1140 :notify 'recentf-cancel-dialog 1140 :notify 'recentf-cancel-dialog
1141 "Cancel") 1141 "Cancel")
1142 (recentf-dialog-goto-first 'checkbox))) 1142 (recentf-dialog-goto-first 'checkbox)))
1143 1143
1144;;; Open file dialog 1144;;; Open file dialog
1145;; 1145;;
1146(defun recentf-open-files-action (widget &rest ignore) 1146(defun recentf-open-files-action (widget &rest ignore)
@@ -1252,7 +1252,7 @@ Optional argument N must be a valid digit number. It defaults to 1.
1252 (when recentf--files-with-key 1252 (when recentf--files-with-key
1253 (kill-buffer (current-buffer))) 1253 (kill-buffer (current-buffer)))
1254 (funcall recentf-menu-action file))) 1254 (funcall recentf-menu-action file)))
1255 1255
1256;;; Save/load/cleanup the recent list 1256;;; Save/load/cleanup the recent list
1257;; 1257;;
1258(defconst recentf-save-file-header 1258(defconst recentf-save-file-header
@@ -1316,7 +1316,9 @@ That is, remove duplicates, non-kept, and excluded files."
1316 (message "File %s removed from the recentf list" f))) 1316 (message "File %s removed from the recentf list" f)))
1317 (message "Cleaning up the recentf list...done (%d removed)" n) 1317 (message "Cleaning up the recentf list...done (%d removed)" n)
1318 (setq recentf-list (nreverse newlist)))) 1318 (setq recentf-list (nreverse newlist))))
1319 1319
1320;;; The minor mode
1321;;
1320(defvar recentf-mode-map (make-sparse-keymap) 1322(defvar recentf-mode-map (make-sparse-keymap)
1321 "Keymap to use in recentf mode.") 1323 "Keymap to use in recentf mode.")
1322 1324