emacs-orgmode
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[O] Suggested patch for org-agenda.el


From: Stefan Monnier
Subject: [O] Suggested patch for org-agenda.el
Date: Mon, 06 May 2019 19:07:39 -0400
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/27.0.50 (gnu/linux)

Misc changes:

- Assume Emacs≥22 (we're using defvaralias already anyway).
- Try to make sure <foo>-function only contain functions (and never nil).
- Use define-minor-mode and define-derived-mode.
- Use command remapping.
- Initialize map from within its definition.
- Use suppress-keymap.

There'd be more to do if we can assume ≥24.1, of course.


        Stefan


diff --git a/lisp/org/org-agenda.el b/lisp/org/org-agenda.el
index 23ee8d71e6..48e66c7acf 100644
--- a/lisp/org/org-agenda.el
+++ b/lisp/org/org-agenda.el
@@ -1928,7 +1928,7 @@ org-agenda-fontify-priorities
                                   (string :tag "Color")
                                   (sexp :tag "Face"))))))
 
-(defcustom org-agenda-day-face-function nil
+(defcustom org-agenda-day-face-function #'org-agenda--day-face-default
   "Function called to determine what face should be used to display a day.
 The only argument passed to that function is the day.  It should
 returns a face, or nil if does not want to specify a face and let
@@ -2067,10 +2067,6 @@ org-add-agenda-custom-command
 
 ;;; Define the org-agenda-mode
 
-(defvaralias 'org-agenda-keymap 'org-agenda-mode-map)
-(defvar org-agenda-mode-map (make-sparse-keymap)
-  "Keymap for `org-agenda-mode'.")
-
 (defvar org-agenda-menu) ; defined later in this file.
 (defvar org-agenda-restrict nil) ; defined later in this file.
 (defvar org-agenda-follow-mode nil)
@@ -2094,31 +2090,16 @@ org-agenda-current-date
 
 ;;; Multiple agenda buffers support
 
-(defcustom org-agenda-sticky nil
-  "Non-nil means agenda q key will bury agenda buffers.
-Agenda commands will then show existing buffer instead of generating new ones.
-When nil, `q' will kill the single agenda buffer."
-  :group 'org-agenda
-  :version "24.3"
-  :type 'boolean)
-
+(define-obsolete-variable-alias 'org-agenda-sticky 'org-agenda-sticky-mode 
"27.1")

 ;;;###autoload
-(defun org-toggle-sticky-agenda (&optional arg)
-  "Toggle `org-agenda-sticky'."
-  (interactive "P")
-  (let ((new-value (if arg
-                      (> (prefix-numeric-value arg) 0)
-                    (not org-agenda-sticky))))
-    (if (equal new-value org-agenda-sticky)
-       (and (called-interactively-p 'interactive)
-            (message "Sticky agenda was already %s"
-                     (if org-agenda-sticky "enabled" "disabled")))
-      (setq org-agenda-sticky new-value)
-      (org-agenda-kill-all-agenda-buffers)
-      (and (called-interactively-p 'interactive)
-          (message "Sticky agenda %s"
-                   (if org-agenda-sticky "enabled" "disabled"))))))
+(define-obsolete-function-alias 'org-toggle-sticky-agenda 
#'org-agenda-sticky-mode "27.1")
+(define-minor-mode org-agenda-sticky-mode
+  "When enabled, agenda `q' key will bury agenda buffers.
+Agenda commands will then show existing buffer instead of generating new ones.
+When this minor mode is disabled, `q' will kill the single agenda buffer."
+  :global t
+  (org-agenda-kill-all-agenda-buffers))
 
 (defvar org-agenda-buffer nil
   "Agenda buffer currently being generated.")
@@ -2159,51 +2140,191 @@ org-agenda-local-vars
     org-agenda-cycle-counter
     org-agenda-last-prefix-arg)
   "Variables that must be local in agenda buffers to allow multiple buffers.")
+(dolist (var org-agenda-local-vars)
+  (put var 'permanant-local t))
+
+(defvaralias 'org-agenda-keymap 'org-agenda-mode-map) ;FIXME: Unused!
+(defvar org-agenda-mode-map
+  (let ((map (make-sparse-keymap)))
+    (suppress-keymap map) ;FIXME: Derive from special-mode instead (Emacs≥23).
+    (org-defkey map [remap undo] org-agenda-undo)
+    (org-defkey map "\C-i"     'org-agenda-goto)
+    (org-defkey map [(tab)]    'org-agenda-goto)
+    (org-defkey map "\C-m"     'org-agenda-switch-to)
+    (org-defkey map "\C-k"     'org-agenda-kill)
+    (org-defkey map "\C-c\C-w" 'org-agenda-refile)
+    (org-defkey map [(meta down)] 'org-agenda-drag-line-forward)
+    (org-defkey map [(meta up)] 'org-agenda-drag-line-backward)
+    (org-defkey map "m"        'org-agenda-bulk-mark)
+    (org-defkey map "\M-m"     'org-agenda-bulk-toggle)
+    (org-defkey map "*"        'org-agenda-bulk-mark-all)
+    (org-defkey map "\M-*"     'org-agenda-bulk-toggle-all)
+    (org-defkey map "#"        'org-agenda-dim-blocked-tasks)
+    (org-defkey map "%"        'org-agenda-bulk-mark-regexp)
+    (org-defkey map "u"        'org-agenda-bulk-unmark)
+    (org-defkey map "U"        'org-agenda-bulk-unmark-all)
+    (org-defkey map "B"        'org-agenda-bulk-action)
+    (org-defkey map "k"        'org-agenda-capture)
+    (org-defkey map "A"        'org-agenda-append-agenda)
+    (org-defkey map "\C-c\C-x!" 'org-reload)
+    (org-defkey map "\C-c\C-x\C-a" 'org-agenda-archive-default)
+    (org-defkey map "\C-c\C-xa"    'org-agenda-toggle-archive-tag)
+    (org-defkey map "\C-c\C-xA"    'org-agenda-archive-to-archive-sibling)
+    (org-defkey map "\C-c\C-x\C-s" 'org-agenda-archive)
+    (org-defkey map "\C-c$"        'org-agenda-archive)
+    (org-defkey map "$"        'org-agenda-archive)
+    (org-defkey map "\C-c\C-o" 'org-agenda-open-link)
+    (org-defkey map " "        'org-agenda-show-and-scroll-up)
+    (org-defkey map [backspace] 'org-agenda-show-scroll-down)
+    (org-defkey map "\d" 'org-agenda-show-scroll-down)
+    (org-defkey map [(control shift right)] 'org-agenda-todo-nextset)
+    (org-defkey map [(control shift left)]  'org-agenda-todo-previousset)
+    (org-defkey map "\C-c\C-xb" 'org-agenda-tree-to-indirect-buffer)
+    (org-defkey map "o"        'delete-other-windows)
+    (org-defkey map "L"        'org-agenda-recenter)
+    (org-defkey map "\C-c\C-t" 'org-agenda-todo)
+    (org-defkey map "t"        'org-agenda-todo)
+    (org-defkey map "a"        'org-agenda-archive-default-with-confirmation)
+    (org-defkey map ":"        'org-agenda-set-tags)
+    (org-defkey map "\C-c\C-q" 'org-agenda-set-tags)
+    (org-defkey map "."        'org-agenda-goto-today)
+    (org-defkey map "j"        'org-agenda-goto-date)
+    (org-defkey map "d"        'org-agenda-day-view)
+    (org-defkey map "w"        'org-agenda-week-view)
+    (org-defkey map "y"        'org-agenda-year-view)
+    (org-defkey map "\C-c\C-z" 'org-agenda-add-note)
+    (org-defkey map "z"        'org-agenda-add-note)
+    (org-defkey map [(shift right)] 'org-agenda-do-date-later)
+    (org-defkey map [(shift left)] 'org-agenda-do-date-earlier)
+    (org-defkey map [?\C-c ?\C-x (right)] 'org-agenda-do-date-later)
+    (org-defkey map [?\C-c ?\C-x (left)] 'org-agenda-do-date-earlier)
+
+    (org-defkey map ">" 'org-agenda-date-prompt)
+    (org-defkey map "\C-c\C-s" 'org-agenda-schedule)
+    (org-defkey map "\C-c\C-d" 'org-agenda-deadline)
+
+    (org-defkey map "F" 'org-agenda-follow-mode)
+    (org-defkey map "R" 'org-agenda-clockreport-mode)
+    (org-defkey map "E" 'org-agenda-entry-text-mode)
+    (org-defkey map "l" 'org-agenda-log-mode)
+    (org-defkey map "v" 'org-agenda-view-mode-dispatch)
+    (org-defkey map "D" 'org-agenda-toggle-diary)
+    (org-defkey map "!" 'org-agenda-toggle-deadlines)
+    (org-defkey map "G" 'org-agenda-toggle-time-grid)
+    (org-defkey map "r" 'org-agenda-redo)
+    (org-defkey map "g" 'org-agenda-redo-all)
+    (org-defkey map "e" 'org-agenda-set-effort)
+    (org-defkey map "\C-c\C-xe" 'org-agenda-set-effort)
+    (org-defkey map "\C-c\C-x\C-e" 'org-clock-modify-effort-estimate)
+    (org-defkey map "\C-c\C-xp" 'org-agenda-set-property)
+    (org-defkey map "q" 'org-agenda-quit)
+    (org-defkey map "Q" 'org-agenda-Quit)
+    (org-defkey map "x" 'org-agenda-exit)
+    (org-defkey map "\C-x\C-w" 'org-agenda-write)
+    (org-defkey map "\C-x\C-s" 'org-save-all-org-buffers)
+    (org-defkey map "s" 'org-save-all-org-buffers)
+    (org-defkey map "T" 'org-agenda-show-tags)
+    (org-defkey map "n" 'org-agenda-next-line)
+    (org-defkey map "p" 'org-agenda-previous-line)
+    (org-defkey map "N" 'org-agenda-next-item)
+    (org-defkey map "P" 'org-agenda-previous-item)
+    (org-defkey map [remap next-line]     'org-agenda-next-line)
+    (org-defkey map [remap previous-line] 'org-agenda-previous-line)
+    (org-defkey map "\C-c\C-a" 'org-attach)
+    (org-defkey map "\C-c\C-n" 'org-agenda-next-date-line)
+    (org-defkey map "\C-c\C-p" 'org-agenda-previous-date-line)
+    (org-defkey map "\C-c," 'org-agenda-priority)
+    (org-defkey map "," 'org-agenda-priority)
+    (org-defkey map "i" 'org-agenda-diary-entry)
+    (org-defkey map "c" 'org-agenda-goto-calendar)
+    (org-defkey map "C" 'org-agenda-convert-date)
+    (org-defkey map "M" 'org-agenda-phases-of-moon)
+    (org-defkey map "S" 'org-agenda-sunrise-sunset)
+    (org-defkey map "h" 'org-agenda-holidays)
+    (org-defkey map "H" 'org-agenda-holidays)
+    (org-defkey map "\C-c\C-x\C-i" 'org-agenda-clock-in)
+    (org-defkey map "I" 'org-agenda-clock-in)
+    (org-defkey map "\C-c\C-x\C-o" 'org-agenda-clock-out)
+    (org-defkey map "O" 'org-agenda-clock-out)
+    (org-defkey map "\C-c\C-x\C-x" 'org-agenda-clock-cancel)
+    (org-defkey map "X" 'org-agenda-clock-cancel)
+    (org-defkey map "\C-c\C-x\C-j" 'org-clock-goto)
+    (org-defkey map "J" 'org-agenda-clock-goto)
+    (org-defkey map "+" 'org-agenda-priority-up)
+    (org-defkey map "-" 'org-agenda-priority-down)
+    (org-defkey map [(shift up)] 'org-agenda-priority-up)
+    (org-defkey map [(shift down)] 'org-agenda-priority-down)
+    (org-defkey map [?\C-c ?\C-x (up)] 'org-agenda-priority-up)
+    (org-defkey map [?\C-c ?\C-x (down)] 'org-agenda-priority-down)
+    (org-defkey map "f" 'org-agenda-later)
+    (org-defkey map "b" 'org-agenda-earlier)
+    (org-defkey map "\C-c\C-x\C-c" 'org-agenda-columns)
+    (org-defkey map "\C-c\C-x>" 'org-agenda-remove-restriction-lock)
+    (org-defkey map "\C-c\C-x<" 'org-agenda-set-restriction-lock-from-agenda)
+
+    (org-defkey map "[" 'org-agenda-manipulate-query-add)
+    (org-defkey map "]" 'org-agenda-manipulate-query-subtract)
+    (org-defkey map "{" 'org-agenda-manipulate-query-add-re)
+    (org-defkey map "}" 'org-agenda-manipulate-query-subtract-re)
+    (org-defkey map "/" 'org-agenda-filter-by-tag)
+    (org-defkey map "_" 'org-agenda-filter-by-effort)
+    (org-defkey map "=" 'org-agenda-filter-by-regexp)
+    (org-defkey map "|" 'org-agenda-filter-remove-all)
+    (org-defkey map "~" 'org-agenda-limit-interactively)
+    (org-defkey map "<" 'org-agenda-filter-by-category)
+    (org-defkey map "^" 'org-agenda-filter-by-top-headline)
+    (org-defkey map ";" 'org-timer-set-timer)
+    (org-defkey map "\C-c\C-x_" 'org-timer-stop)
+    (define-key map "?" 'org-agenda-show-the-flagging-note)
+    (org-defkey map "\C-c\C-x\C-mg"    'org-mobile-pull)
+    (org-defkey map "\C-c\C-x\C-mp"    'org-mobile-push)
+
+    (org-defkey map [mouse-2] 'org-agenda-goto-mouse)
+    (org-defkey map [mouse-3] 'org-agenda-show-mouse)
+
+    (define-key map [remap forward-paragraph] 'org-agenda-forward-block)
+    (define-key map [remap backward-paragraph] 'org-agenda-backward-block)
+
+    (when org-agenda-mouse-1-follows-link
+      (org-defkey map [follow-link] 'mouse-face))
+    map)
+  "Keymap for `org-agenda-mode'.")
 
-(defun org-agenda-mode ()
+(define-derived-mode org-agenda-mode fundamental-mode "Org-Agenda"
+  ;; FIXME: Derive from special-mode (Emacs≥23)
   "Mode for time-sorted view on action items in Org files.
 
 The following commands are available:
 
 \\{org-agenda-mode-map}"
-  (interactive)
   (cond (org-agenda-doing-sticky-redo
         ;; Refreshing sticky agenda-buffer
-        ;;
-        ;; Preserve the value of `org-agenda-local-vars' variables,
-        ;; while letting `kill-all-local-variables' kill the rest
-        (let ((save (buffer-local-variables)))
-          (kill-all-local-variables)
-          (mapc #'make-local-variable org-agenda-local-vars)
-          (dolist (elem save)
-            (pcase elem
-              (`(,var . ,val)          ;ignore unbound variables
-               (when (and val (memq var org-agenda-local-vars))
-                 (set var val))))))
         (setq-local org-agenda-this-buffer-is-sticky t))
        (org-agenda-sticky
         ;; Creating a sticky Agenda buffer for the first time
-        (kill-all-local-variables)
-        (mapc 'make-local-variable org-agenda-local-vars)
+         ;; FIXME: Not sure if kill-local-variable is needed since it's
+         ;; presumably a "new" buffer, but the old code uses
+         ;; non-permanent-local vars, so this better reproduces the
+         ;; old behavior.
+         (mapc #'kill-local-variable org-agenda-local-vars)
+         (mapc #'make-local-variable org-agenda-local-vars)
         (setq-local org-agenda-this-buffer-is-sticky t))
        (t
         ;; Creating a non-sticky agenda buffer
         (kill-all-local-variables)
+         (mapc #'kill-local-variable org-agenda-local-vars)
         (setq-local org-agenda-this-buffer-is-sticky nil)))
   (setq org-agenda-undo-list nil
        org-agenda-pending-undo-list nil
        org-agenda-bulk-marked-entries nil)
-  (setq major-mode 'org-agenda-mode)
   ;; Keep global-font-lock-mode from turning on font-lock-mode
   (setq-local font-lock-global-modes (list 'not major-mode))
-  (setq mode-name "Org-Agenda")
   (setq indent-tabs-mode nil)
-  (use-local-map org-agenda-mode-map)
   (easy-menu-add org-agenda-menu)
   (if org-startup-truncated (setq truncate-lines t))
   (setq-local line-move-visual nil)
-  (add-hook 'post-command-hook 'org-agenda-update-agenda-type nil 'local)
-  (add-hook 'pre-command-hook 'org-unhighlight nil 'local)
+  (add-hook 'post-command-hook #'org-agenda-update-agenda-type nil 'local)
+  (add-hook 'pre-command-hook #'org-unhighlight nil 'local)
   ;; Make sure properties are removed when copying text
   (if (boundp 'filter-buffer-substring-functions)
       (add-hook 'filter-buffer-substring-functions
@@ -2231,159 +2352,9 @@ org-agenda-mode
       '(org-edit-agenda-file-list)
       (not (get 'org-agenda-files 'org-restrict)))
      "--")
-    (mapcar 'org-file-menu-entry (org-agenda-files))))
-  (org-agenda-set-mode-name)
-  (apply
-   (if (fboundp 'run-mode-hooks) 'run-mode-hooks 'run-hooks)
-   (list 'org-agenda-mode-hook)))
-
-(substitute-key-definition 'undo 'org-agenda-undo
-                          org-agenda-mode-map global-map)
-(org-defkey org-agenda-mode-map "\C-i"     'org-agenda-goto)
-(org-defkey org-agenda-mode-map [(tab)]    'org-agenda-goto)
-(org-defkey org-agenda-mode-map "\C-m"     'org-agenda-switch-to)
-(org-defkey org-agenda-mode-map "\C-k"     'org-agenda-kill)
-(org-defkey org-agenda-mode-map "\C-c\C-w" 'org-agenda-refile)
-(org-defkey org-agenda-mode-map [(meta down)] 'org-agenda-drag-line-forward)
-(org-defkey org-agenda-mode-map [(meta up)] 'org-agenda-drag-line-backward)
-(org-defkey org-agenda-mode-map "m"        'org-agenda-bulk-mark)
-(org-defkey org-agenda-mode-map "\M-m"     'org-agenda-bulk-toggle)
-(org-defkey org-agenda-mode-map "*"        'org-agenda-bulk-mark-all)
-(org-defkey org-agenda-mode-map "\M-*"     'org-agenda-bulk-toggle-all)
-(org-defkey org-agenda-mode-map "#"        'org-agenda-dim-blocked-tasks)
-(org-defkey org-agenda-mode-map "%"        'org-agenda-bulk-mark-regexp)
-(org-defkey org-agenda-mode-map "u"        'org-agenda-bulk-unmark)
-(org-defkey org-agenda-mode-map "U"        'org-agenda-bulk-unmark-all)
-(org-defkey org-agenda-mode-map "B"        'org-agenda-bulk-action)
-(org-defkey org-agenda-mode-map "k"        'org-agenda-capture)
-(org-defkey org-agenda-mode-map "A"        'org-agenda-append-agenda)
-(org-defkey org-agenda-mode-map "\C-c\C-x!" 'org-reload)
-(org-defkey org-agenda-mode-map "\C-c\C-x\C-a" 'org-agenda-archive-default)
-(org-defkey org-agenda-mode-map "\C-c\C-xa"    'org-agenda-toggle-archive-tag)
-(org-defkey org-agenda-mode-map "\C-c\C-xA"    
'org-agenda-archive-to-archive-sibling)
-(org-defkey org-agenda-mode-map "\C-c\C-x\C-s" 'org-agenda-archive)
-(org-defkey org-agenda-mode-map "\C-c$"        'org-agenda-archive)
-(org-defkey org-agenda-mode-map "$"        'org-agenda-archive)
-(org-defkey org-agenda-mode-map "\C-c\C-o" 'org-agenda-open-link)
-(org-defkey org-agenda-mode-map " "        'org-agenda-show-and-scroll-up)
-(org-defkey org-agenda-mode-map [backspace] 'org-agenda-show-scroll-down)
-(org-defkey org-agenda-mode-map "\d" 'org-agenda-show-scroll-down)
-(org-defkey org-agenda-mode-map [(control shift right)] 
'org-agenda-todo-nextset)
-(org-defkey org-agenda-mode-map [(control shift left)]  
'org-agenda-todo-previousset)
-(org-defkey org-agenda-mode-map "\C-c\C-xb" 
'org-agenda-tree-to-indirect-buffer)
-(org-defkey org-agenda-mode-map "o"        'delete-other-windows)
-(org-defkey org-agenda-mode-map "L"        'org-agenda-recenter)
-(org-defkey org-agenda-mode-map "\C-c\C-t" 'org-agenda-todo)
-(org-defkey org-agenda-mode-map "t"        'org-agenda-todo)
-(org-defkey org-agenda-mode-map "a"        
'org-agenda-archive-default-with-confirmation)
-(org-defkey org-agenda-mode-map ":"        'org-agenda-set-tags)
-(org-defkey org-agenda-mode-map "\C-c\C-q" 'org-agenda-set-tags)
-(org-defkey org-agenda-mode-map "."        'org-agenda-goto-today)
-(org-defkey org-agenda-mode-map "j"        'org-agenda-goto-date)
-(org-defkey org-agenda-mode-map "d"        'org-agenda-day-view)
-(org-defkey org-agenda-mode-map "w"        'org-agenda-week-view)
-(org-defkey org-agenda-mode-map "y"        'org-agenda-year-view)
-(org-defkey org-agenda-mode-map "\C-c\C-z" 'org-agenda-add-note)
-(org-defkey org-agenda-mode-map "z"        'org-agenda-add-note)
-(org-defkey org-agenda-mode-map [(shift right)] 'org-agenda-do-date-later)
-(org-defkey org-agenda-mode-map [(shift left)] 'org-agenda-do-date-earlier)
-(org-defkey org-agenda-mode-map [?\C-c ?\C-x (right)] 
'org-agenda-do-date-later)
-(org-defkey org-agenda-mode-map [?\C-c ?\C-x (left)] 
'org-agenda-do-date-earlier)
-
-(org-defkey org-agenda-mode-map ">" 'org-agenda-date-prompt)
-(org-defkey org-agenda-mode-map "\C-c\C-s" 'org-agenda-schedule)
-(org-defkey org-agenda-mode-map "\C-c\C-d" 'org-agenda-deadline)
-(let ((l '(1 2 3 4 5 6 7 8 9 0)))
-  (while l (org-defkey org-agenda-mode-map
-                      (int-to-string (pop l)) 'digit-argument)))
-
-(org-defkey org-agenda-mode-map "F" 'org-agenda-follow-mode)
-(org-defkey org-agenda-mode-map "R" 'org-agenda-clockreport-mode)
-(org-defkey org-agenda-mode-map "E" 'org-agenda-entry-text-mode)
-(org-defkey org-agenda-mode-map "l" 'org-agenda-log-mode)
-(org-defkey org-agenda-mode-map "v" 'org-agenda-view-mode-dispatch)
-(org-defkey org-agenda-mode-map "D" 'org-agenda-toggle-diary)
-(org-defkey org-agenda-mode-map "!" 'org-agenda-toggle-deadlines)
-(org-defkey org-agenda-mode-map "G" 'org-agenda-toggle-time-grid)
-(org-defkey org-agenda-mode-map "r" 'org-agenda-redo)
-(org-defkey org-agenda-mode-map "g" 'org-agenda-redo-all)
-(org-defkey org-agenda-mode-map "e" 'org-agenda-set-effort)
-(org-defkey org-agenda-mode-map "\C-c\C-xe" 'org-agenda-set-effort)
-(org-defkey org-agenda-mode-map "\C-c\C-x\C-e"
-           'org-clock-modify-effort-estimate)
-(org-defkey org-agenda-mode-map "\C-c\C-xp" 'org-agenda-set-property)
-(org-defkey org-agenda-mode-map "q" 'org-agenda-quit)
-(org-defkey org-agenda-mode-map "Q" 'org-agenda-Quit)
-(org-defkey org-agenda-mode-map "x" 'org-agenda-exit)
-(org-defkey org-agenda-mode-map "\C-x\C-w" 'org-agenda-write)
-(org-defkey org-agenda-mode-map "\C-x\C-s" 'org-save-all-org-buffers)
-(org-defkey org-agenda-mode-map "s" 'org-save-all-org-buffers)
-(org-defkey org-agenda-mode-map "T" 'org-agenda-show-tags)
-(org-defkey org-agenda-mode-map "n" 'org-agenda-next-line)
-(org-defkey org-agenda-mode-map "p" 'org-agenda-previous-line)
-(org-defkey org-agenda-mode-map "N" 'org-agenda-next-item)
-(org-defkey org-agenda-mode-map "P" 'org-agenda-previous-item)
-(substitute-key-definition 'next-line 'org-agenda-next-line
-                          org-agenda-mode-map global-map)
-(substitute-key-definition 'previous-line 'org-agenda-previous-line
-                          org-agenda-mode-map global-map)
-(org-defkey org-agenda-mode-map "\C-c\C-a" 'org-attach)
-(org-defkey org-agenda-mode-map "\C-c\C-n" 'org-agenda-next-date-line)
-(org-defkey org-agenda-mode-map "\C-c\C-p" 'org-agenda-previous-date-line)
-(org-defkey org-agenda-mode-map "\C-c," 'org-agenda-priority)
-(org-defkey org-agenda-mode-map "," 'org-agenda-priority)
-(org-defkey org-agenda-mode-map "i" 'org-agenda-diary-entry)
-(org-defkey org-agenda-mode-map "c" 'org-agenda-goto-calendar)
-(org-defkey org-agenda-mode-map "C" 'org-agenda-convert-date)
-(org-defkey org-agenda-mode-map "M" 'org-agenda-phases-of-moon)
-(org-defkey org-agenda-mode-map "S" 'org-agenda-sunrise-sunset)
-(org-defkey org-agenda-mode-map "h" 'org-agenda-holidays)
-(org-defkey org-agenda-mode-map "H" 'org-agenda-holidays)
-(org-defkey org-agenda-mode-map "\C-c\C-x\C-i" 'org-agenda-clock-in)
-(org-defkey org-agenda-mode-map "I" 'org-agenda-clock-in)
-(org-defkey org-agenda-mode-map "\C-c\C-x\C-o" 'org-agenda-clock-out)
-(org-defkey org-agenda-mode-map "O" 'org-agenda-clock-out)
-(org-defkey org-agenda-mode-map "\C-c\C-x\C-x" 'org-agenda-clock-cancel)
-(org-defkey org-agenda-mode-map "X" 'org-agenda-clock-cancel)
-(org-defkey org-agenda-mode-map "\C-c\C-x\C-j" 'org-clock-goto)
-(org-defkey org-agenda-mode-map "J" 'org-agenda-clock-goto)
-(org-defkey org-agenda-mode-map "+" 'org-agenda-priority-up)
-(org-defkey org-agenda-mode-map "-" 'org-agenda-priority-down)
-(org-defkey org-agenda-mode-map [(shift up)] 'org-agenda-priority-up)
-(org-defkey org-agenda-mode-map [(shift down)] 'org-agenda-priority-down)
-(org-defkey org-agenda-mode-map [?\C-c ?\C-x (up)] 'org-agenda-priority-up)
-(org-defkey org-agenda-mode-map [?\C-c ?\C-x (down)] 'org-agenda-priority-down)
-(org-defkey org-agenda-mode-map "f" 'org-agenda-later)
-(org-defkey org-agenda-mode-map "b" 'org-agenda-earlier)
-(org-defkey org-agenda-mode-map "\C-c\C-x\C-c" 'org-agenda-columns)
-(org-defkey org-agenda-mode-map "\C-c\C-x>" 
'org-agenda-remove-restriction-lock)
-(org-defkey org-agenda-mode-map "\C-c\C-x<" 
'org-agenda-set-restriction-lock-from-agenda)
-
-(org-defkey org-agenda-mode-map "[" 'org-agenda-manipulate-query-add)
-(org-defkey org-agenda-mode-map "]" 'org-agenda-manipulate-query-subtract)
-(org-defkey org-agenda-mode-map "{" 'org-agenda-manipulate-query-add-re)
-(org-defkey org-agenda-mode-map "}" 'org-agenda-manipulate-query-subtract-re)
-(org-defkey org-agenda-mode-map "/" 'org-agenda-filter-by-tag)
-(org-defkey org-agenda-mode-map "_" 'org-agenda-filter-by-effort)
-(org-defkey org-agenda-mode-map "=" 'org-agenda-filter-by-regexp)
-(org-defkey org-agenda-mode-map "|" 'org-agenda-filter-remove-all)
-(org-defkey org-agenda-mode-map "~" 'org-agenda-limit-interactively)
-(org-defkey org-agenda-mode-map "<" 'org-agenda-filter-by-category)
-(org-defkey org-agenda-mode-map "^" 'org-agenda-filter-by-top-headline)
-(org-defkey org-agenda-mode-map ";" 'org-timer-set-timer)
-(org-defkey org-agenda-mode-map "\C-c\C-x_" 'org-timer-stop)
-(define-key org-agenda-mode-map "?" 'org-agenda-show-the-flagging-note)
-(org-defkey org-agenda-mode-map "\C-c\C-x\C-mg"    'org-mobile-pull)
-(org-defkey org-agenda-mode-map "\C-c\C-x\C-mp"    'org-mobile-push)
-
-(org-defkey org-agenda-mode-map [mouse-2] 'org-agenda-goto-mouse)
-(org-defkey org-agenda-mode-map [mouse-3] 'org-agenda-show-mouse)
-
-(define-key org-agenda-mode-map [remap forward-paragraph] 
'org-agenda-forward-block)
-(define-key org-agenda-mode-map [remap backward-paragraph] 
'org-agenda-backward-block)
-
-(when org-agenda-mouse-1-follows-link
-  (org-defkey org-agenda-mode-map [follow-link] 'mouse-face))
+    (mapcar #'org-file-menu-entry (org-agenda-files))))
+  (org-agenda-set-mode-name))
+
 (easy-menu-define org-agenda-menu org-agenda-mode-map "Agenda menu"
   '("Agenda"
     ("Agenda Files")
@@ -3012,7 +2983,8 @@ org-agenda-get-restriction-and-command
                (if (org-string-nw-p match)
                    (add-text-properties
                     0 (length line) (list 'help-echo
-                                          (concat "Matcher: " match)) line)))
+                                          (concat "Matcher: " match))
+                     line)))
              (push line lines)))
          (setq lines (nreverse lines))
          (when prefixes
@@ -3253,7 +3225,7 @@ org-batch-agenda-csv
        (setq org-agenda-info
              (org-fix-agenda-info (text-properties-at 0 line)))
        (princ
-        (mapconcat 'org-agenda-export-csv-mapper
+        (mapconcat #'org-agenda-export-csv-mapper
                    '(org-category txt type todo tags date time extra
                                   priority-letter priority agenda-day)
                    ","))
@@ -3264,7 +3236,7 @@ org-fix-agenda-info
 This ensures the export commands can easily use it."
   (let (tmp re)
     (when (setq tmp (plist-get props 'tags))
-      (setq props (plist-put props 'tags (mapconcat 'identity tmp ":"))))
+      (setq props (plist-put props 'tags (mapconcat #'identity tmp ":"))))
     (when (setq tmp (plist-get props 'date))
       (if (integerp tmp) (setq tmp (calendar-gregorian-from-absolute tmp)))
       (let ((calendar-date-display-form '(year "-" month "-" day)))
@@ -3793,7 +3765,7 @@ org-agenda-finalize
                  (put-text-property (point-at-bol) (point-at-eol)
                                     'tags (org-with-point-at mrk
                                             (delete-dups
-                                             (mapcar 'downcase 
(org-get-tags-at))))))))))
+                                             (mapcar #'downcase 
(org-get-tags-at))))))))))
        (run-hooks 'org-agenda-finalize-hook)
        (when org-agenda-top-headline-filter
          (org-agenda-filter-top-headline-apply
@@ -3818,7 +3790,7 @@ org-agenda-finalize
        (when (get 'org-agenda-effort-filter :preset-filter)
          (org-agenda-filter-apply
           (get 'org-agenda-effort-filter :preset-filter) 'effort))
-       (add-hook 'kill-buffer-hook 'org-agenda-reset-markers 'append 
'local)))))
+       (add-hook 'kill-buffer-hook #'org-agenda-reset-markers 'append 
'local)))))
 
 (defun org-agenda-mark-clocking-task ()
   "Mark the current clock entry in the agenda if it is present."
@@ -4062,9 +4034,11 @@ org-agenda-entry-text-hide
 
 (defun org-agenda-get-day-face (date)
   "Return the face DATE should be displayed with."
-  (cond ((and (functionp org-agenda-day-face-function)
-             (funcall org-agenda-day-face-function date)))
-       ((org-agenda-today-p date) 'org-agenda-date-today)
+  (funcall (or org-agenda-day-face-function
+               #'org-agenda--day-face-default)
+           date))
+(defun org-agenda--day-face-default (face)
+  (cond ((org-agenda-today-p date) 'org-agenda-date-today)
        ((memq (calendar-day-of-week date) org-agenda-weekend-days)
         'org-agenda-date-weekend)
        (t 'org-agenda-date)))
@@ -4215,11 +4189,11 @@ org-agenda-list
                (setq rtn (org-agenda-get-day-entries
                           file date :closed)))
               (org-agenda-show-log-scoped
-               (setq rtn (apply 'org-agenda-get-day-entries
+               (setq rtn (apply #'org-agenda-get-day-entries
                                 file date
                                 (append '(:closed) org-agenda-entry-types))))
               (t
-               (setq rtn (apply 'org-agenda-get-day-entries
+               (setq rtn (apply #'org-agenda-get-day-entries
                                 file date
                                 org-agenda-entry-types)))))
            (setq rtnall (append rtnall rtn)))) ;; all entries
@@ -4260,7 +4234,7 @@ org-agenda-list
          (setq p (plist-put p :tstart clocktable-start))
          (setq p (plist-put p :tend clocktable-end))
          (setq p (plist-put p :scope 'agenda))
-         (setq tbl (apply 'org-clock-get-clocktable p))
+         (setq tbl (apply #'org-clock-get-clocktable p))
          (insert tbl)))
       (goto-char (point-min))
       (or org-agenda-multi (org-agenda-fit-window-to-buffer))
@@ -4478,7 +4452,7 @@ org-search-view
                      (setq re (regexp-quote (downcase w)))))
                  (if neg (push re regexps-) (push re regexps+)))
                words)
-       (push (mapconcat (lambda (w) (regexp-quote w)) words "\\s-+")
+       (push (mapconcat #'regexp-quote words "\\s-+")
              regexps+))
       (setq regexps+ (sort regexps+ (lambda (a b) (> (length a) (length b)))))
       (if (not regexps+)
@@ -5022,19 +4996,21 @@ diary-time-regexp
 (defun org-get-entries-from-diary (date)
   "Get the (Emacs Calendar) diary entries for DATE."
   (require 'diary-lib)
+  (declare-function diary-fancy-display "diary-lib" ())
   (let* ((diary-fancy-buffer "*temporary-fancy-diary-buffer*")
-        (diary-display-function 'diary-fancy-display)
+        (diary-display-function #'diary-fancy-display)
         (pop-up-frames nil)
         (diary-list-entries-hook
-         (cons 'org-diary-default-entry diary-list-entries-hook))
+         (cons #'org-diary-default-entry diary-list-entries-hook))
         (diary-file-name-prefix nil) ; turn this feature off
-        (diary-modify-entry-list-string-function 
'org-modify-diary-entry-string)
+        (diary-modify-entry-list-string-function
+          #'org-modify-diary-entry-string)
         entries
         (org-disable-agenda-to-diary t))
     (save-excursion
       (save-window-excursion
        (funcall (if (fboundp 'diary-list-entries)
-                    'diary-list-entries 'list-diary-entries)
+                    #'diary-list-entries 'list-diary-entries)
                 date 1)))
     (if (not (get-buffer diary-fancy-buffer))
        (setq entries nil)
@@ -5095,18 +5071,6 @@ org-agenda-cleanup-fancy-diary
   (run-hooks 'org-agenda-cleanup-fancy-diary-hook))
 
 ;; Make sure entries from the diary have the right text properties.
-(eval-after-load "diary-lib"
-  '(if (boundp 'diary-modify-entry-list-string-function)
-       ;; We can rely on the hook, nothing to do
-       nil
-     ;; Hook not available, must use advice to make this work
-     (defadvice add-to-diary-list (before org-mark-diary-entry activate)
-       "Make the position visible."
-       (if (and org-disable-agenda-to-diary  ;; called from org-agenda
-               (stringp string)
-               buffer-file-name)
-          (setq string (org-modify-diary-entry-string string))))))
-
 (defun org-modify-diary-entry-string (string)
   "Add text properties to string, allowing Org to act on it."
   (org-add-props string nil
@@ -5130,7 +5094,7 @@ org-diary-default-entry
 
 (defun org-add-to-diary-list (&rest args)
   (if (fboundp 'diary-add-to-list)
-      (apply 'diary-add-to-list args)
+      (apply #'diary-add-to-list args)
     (apply 'add-to-diary-list args)))
 
 (defvar org-diary-last-run-time nil)
@@ -5186,12 +5150,13 @@ org-diary
     ;; the calendar.  Org Agenda will list these entries itself.
     (if org-disable-agenda-to-diary (setq files nil))
     (while (setq file (pop files))
-      (setq rtn (apply 'org-agenda-get-day-entries file date args))
+      (setq rtn (apply #'org-agenda-get-day-entries file date args))
       (setq results (append results rtn)))
     (when results
       (setq results
            (mapcar (lambda (i) (replace-regexp-in-string
-                                org-bracket-link-regexp "\\3" i)) results))
+                                org-bracket-link-regexp "\\3" i))
+                    results))
       (concat (org-agenda-finalize-entries results) "\n"))))
 
 ;;; Agenda entry finders
@@ -5328,7 +5293,7 @@ org-agenda-get-todos
                           org-todo-regexp)
                          (org-select-this-todo-keyword
                           (concat "\\("
-                                  (mapconcat 'identity
+                                  (mapconcat #'identity
                                              (org-split-string
                                               org-select-this-todo-keyword
                                               "|")
@@ -5732,7 +5697,7 @@ org-agenda-get-progress
                 (if (memq 'clock items) (concat "\\<" org-clock-string))
                 (if (memq 'state items)
                     (format "- State \"%s\".*?" org-todo-regexp)))))
-        (parts-re (if parts (mapconcat 'identity parts "\\|")
+        (parts-re (if parts (mapconcat #'identity parts "\\|")
                     (error "`org-agenda-log-mode-items' is empty")))
         (regexp (concat
                  "\\(" parts-re "\\)"
@@ -6563,7 +6528,7 @@ org-agenda-format-item
        (remove-text-properties 0 (length rtn) '(line-prefix t wrap-prefix t) 
rtn)
        (org-add-props rtn nil
          'org-category category
-         'tags (mapcar 'org-downcase-keep-props tags)
+         'tags (mapcar #'org-downcase-keep-props tags)
          'org-highest-priority org-highest-priority
          'org-lowest-priority org-lowest-priority
          'time-of-day time-of-day
@@ -6762,7 +6727,7 @@ org-get-time-of-day
                         (int-to-string t0))))
        (if string (concat (substring t1 -4 -2) ":" (substring t1 -2)) t0)))))
 
-(defvar org-agenda-before-sorting-filter-function nil
+(defvar org-agenda-before-sorting-filter-function #'identity
   "Function to be applied to agenda items prior to sorting.
 Prior to sorting also means just before they are inserted into the agenda.
 
@@ -6797,13 +6762,13 @@ org-agenda-finalize-entries
        (max-entries (cond ((listp org-agenda-max-entries)
                            (cdr (assoc type org-agenda-max-entries)))
                           (t org-agenda-max-entries))))
-    (when org-agenda-before-sorting-filter-function
+    (when (memq org-agenda-before-sorting-filter-function '(nil identity))
       (setq list
            (delq nil
                  (mapcar
                   org-agenda-before-sorting-filter-function list))))
-    (setq list (mapcar 'org-agenda-highlight-todo list)
-         list (mapcar 'identity (sort list 'org-entries-lessp)))
+    (setq list (mapcar #'org-agenda-highlight-todo list)
+         list (mapcar #'identity (sort list 'org-entries-lessp)))
     (when max-effort
       (setq list (org-agenda-limit-entries
                  list 'effort-minutes max-effort
@@ -6817,7 +6782,7 @@ org-agenda-finalize-entries
       (setq list (org-agenda-limit-entries list 'org-hd-marker max-entries)))
     (when (and org-agenda-dim-blocked-tasks org-blocker-hook)
       (setq list (mapcar #'org-agenda--mark-blocked-entry list)))
-    (mapconcat 'identity list "\n")))
+    (mapconcat #'identity list "\n")))
 
 (defun org-agenda-limit-entries (list prop limit &optional fn)
   "Limit the number of agenda entries."
@@ -7268,7 +7233,7 @@ org-agenda-kill-all-agenda-buffers
     (dolist (buf (buffer-list))
       (when (with-current-buffer buf (eq major-mode 'org-agenda-mode))
        (push buf blist)))
-    (mapc 'kill-buffer blist)))
+    (mapc #'kill-buffer blist)))
 
 (defun org-agenda-execute (arg)
   "Execute another agenda command, keeping same window.
@@ -8137,7 +8102,7 @@ org-unhighlight
 
 (defun org-unhighlight-once ()
   "Remove the highlight from its position, and this function from the hook."
-  (remove-hook 'pre-command-hook 'org-unhighlight-once)
+  (remove-hook 'pre-command-hook #'org-unhighlight-once)
   (org-unhighlight))
 
 (defvar org-agenda-pre-follow-window-conf nil)
@@ -8282,7 +8247,7 @@ org-agenda-set-mode-name
                  '(:eval (propertize
                           (concat " <"
                                   (mapconcat
-                                   'identity
+                                   #'identity
                                    (append
                                     (get 'org-agenda-category-filter 
:preset-filter)
                                     org-agenda-category-filter)
@@ -8295,7 +8260,7 @@ org-agenda-set-mode-name
                  '(:eval (propertize
                           (concat " {"
                                   (mapconcat
-                                   'identity
+                                   #'identity
                                    (append
                                     (get 'org-agenda-tag-filter :preset-filter)
                                     org-agenda-tag-filter)
@@ -8308,7 +8273,7 @@ org-agenda-set-mode-name
                  '(:eval (propertize
                           (concat " {"
                                   (mapconcat
-                                   'identity
+                                   #'identity
                                    (append
                                     (get 'org-agenda-effort-filter 
:preset-filter)
                                     org-agenda-effort-filter)
@@ -8321,7 +8286,7 @@ org-agenda-set-mode-name
                  '(:eval (propertize
                           (concat " ["
                                   (mapconcat
-                                   'identity
+                                   #'identity
                                    (append
                                     (get 'org-agenda-regexp-filter 
:preset-filter)
                                     org-agenda-regexp-filter)
@@ -8395,7 +8360,7 @@ org-agenda-show-tags
   (let* ((tags (org-get-at-bol 'tags)))
     (if tags
        (message "Tags are :%s:"
-                (org-no-properties (mapconcat 'identity tags ":")))
+                (org-no-properties (mapconcat #'identity tags ":")))
       (message "No tags associated with this line"))))
 
 (defun org-agenda-goto (&optional highlight)
@@ -9991,8 +9956,8 @@ org-agenda-bulk-action
              (let (org-loop-over-headlines-in-active-region) (funcall cmd))
              ;; `post-command-hook' is not run yet.  We make sure any
              ;; pending log note is processed.
-             (when (or (memq 'org-add-log-note (default-value 
'post-command-hook))
-                       (memq 'org-add-log-note post-command-hook))
+             (when (or (memq #'org-add-log-note (default-value 
'post-command-hook))
+                       (memq #'org-add-log-note post-command-hook))
                (org-add-log-note))
              (cl-incf processed))))
        (when redo-at-end (org-agenda-redo))
@@ -10166,7 +10131,7 @@ org-agenda-to-appt
       (setq entries
             (delq nil
                   (append entries
-                          (apply 'org-agenda-get-day-entries
+                          (apply #'org-agenda-get-day-entries
                                  file today scope)))))
     ;; Map thru entries and find if we should filter them out
     (mapc



reply via email to

[Prev in Thread] Current Thread [Next in Thread]