Compare commits

..

No commits in common. "a4823651a147dd37fca9b2834bbc1d5beaf5894a" and "2d6b40088ed1cd973529376d75551b69c28be924" have entirely different histories.

2 changed files with 24 additions and 47 deletions

23
init.el
View File

@ -741,7 +741,7 @@
org-dblock-write:db/org-workload-report org-dblock-write:db/org-workload-report
endless/org-ispell endless/org-ispell
db/org-agenda-list-deadlines db/org-agenda-list-deadlines
db/org-agenda-insert-active-filters db/org-agenda-skip-tag
hydra-org-agenda-view/body hydra-org-agenda-view/body
db/org-agenda-insert-efforts db/org-agenda-insert-efforts
db/org-eval-subtree-no-confirm db/org-eval-subtree-no-confirm
@ -1134,6 +1134,9 @@
org-agenda-search-headline-for-time nil org-agenda-search-headline-for-time nil
org-agenda-search-view-always-boolean t org-agenda-search-view-always-boolean t
;; Show daily efforts directly in the agenda
org-agenda-finalize-hook '(db/org-agenda-insert-efforts)
org-agenda-clock-consistency-checks org-agenda-clock-consistency-checks
'(:max-duration 9999999 '(:max-duration 9999999
:min-duration 0 :min-duration 0
@ -1254,24 +1257,14 @@
(org-agenda-skip-deadline-prewarning-if-scheduled t))))))) (org-agenda-skip-deadline-prewarning-if-scheduled t)))))))
:config (progn :config (progn
;; Avoid important buffers to end up in `org-agenda-new-buffers by ;; avoid important buffers to end up in `org-agenda-new-buffers by
;; opening them manually ;; opening them manually
(mapc #'find-file-noselect org-agenda-files) (mapc #'find-file-noselect org-agenda-files)
;; Check that all expected agenda files are being displayed.
(advice-add 'org-agenda
:before #'db/check-special-org-files-in-agenda)
(add-hook 'org-agenda-mode-hook #'hl-line-mode 'append) (add-hook 'org-agenda-mode-hook #'hl-line-mode 'append)
;; Show daily efforts directly in the agenda (advice-add 'org-agenda
(add-hook 'org-agenda-finalize-hook #'db/org-agenda-insert-efforts) :before #'db/check-special-org-files-in-agenda)
;; Prominently display active filters on top of agenda view; also
;; update current agenda view when updating filters to make sure our
;; display is always correct.
(add-hook 'org-agenda-finalize-hook #'db/org-agenda-insert-active-filters)
(add-hook 'org-agenda-filter-hook #'org-agenda-redo-all)
(define-advice org-agenda-redo-all (:around (old-func &rest r) goto-top-and-execute) (define-advice org-agenda-redo-all (:around (old-func &rest r) goto-top-and-execute)
"Avoid recentering the Org agenda buffer after redo by moving "Avoid recentering the Org agenda buffer after redo by moving
@ -2798,7 +2791,7 @@ With given ARG, display files in `db/important-document-path."
;; General Stuff first ;; General Stuff first
(use-package lisp-mode (use-package lisp-mode
:init (setq lisp-indent-function #'common-lisp-indent-function)) :init (setq lisp-indent-function #'lisp-indent-function))
(use-package lispy (use-package lispy
:ensure t :ensure t

View File

@ -112,39 +112,23 @@ deadlines."
(setq buffer-read-only t) (setq buffer-read-only t)
(message "")))) (message ""))))
(defun db/org-agenda-insert-active-filters (&optional match) (defun db/org-agenda-skip-tag (tag &optional others)
"Insert string showing the current agenda filters. ;; https://stackoverflow.com/questions/10074016/org-mode-filter-on-tag-in-agenda-view
"Skip all entries that correspond to TAG.
The filter display is added after the structural header. If OTHERS is true, skip all entries that do not correspond to TAG."
(let* ((next-headline (save-mark-and-excursion
If no agenda filters are active, nothing will be inserted. (or (outline-next-heading) (point-max))))
(current-headline (or (and (org-at-heading-p)
Add this function to `org-agenda-finalize-hook' to enable this." (point))
;; First delete any present active filter display, as it might be obsolete. (save-mark-and-excursion
(save-excursion ;; remember to also consider invisible headings
(when-let ((pos (text-property-any (org-back-to-heading t))))
(point) (point-max) 'db/active-filter-display t))) (has-tag (member tag (org-get-tags current-headline))))
(goto-char pos) (if (or (and others (not has-tag))
(kill-line))) (and (not others) has-tag))
next-headline
;; Insert current active filters if there are any. nil)))
(when (org-agenda-filter-any)
(save-excursion
(when-let ((pos (text-property-any
(point) (point-max) 'org-agenda-structural-header t)))
(goto-char pos)
(end-of-line)
;; Current filter display shamelessly stolen from `org-agenda-filter'.
;; Is there a function to do this?
(let* ((cf (mapconcat #'identity org-agenda-category-filter ""))
(tf (mapconcat #'identity org-agenda-tag-filter ""))
(ef (replace-regexp-in-string "^\\+" "" (or (car org-agenda-effort-filter) "")))
(rf (replace-regexp-in-string "^\\+" "" (or (car org-agenda-regexp-filter) "")))
(ff (concat cf tf ef (when (not (equal rf "")) (concat "/" rf "/")))))
(insert-and-inherit
(propertize (format " [%s]" ff)
'db/active-filter-display t)))))))
;; A Hydra for changing agenda appearance ;; A Hydra for changing agenda appearance
;; http://oremacs.com/2016/04/04/hydra-doc-syntax/ ;; http://oremacs.com/2016/04/04/hydra-doc-syntax/