diff --git a/global.org b/global.org index 1fba36e..4cb4886 100644 --- a/global.org +++ b/global.org @@ -630,7 +630,7 @@ ( mu4e-compose-signature . (concat "Jacopo De Simoi \n" - "Assistant Professor — U Toronto\n")))))) + "Associate Professor — U Toronto\n")))))) ;; set `mu4e-context-policy` and `mu4e-compose-policy` to tweak when mu4e should ;; guess or ask the correct context, e.g. @@ -999,76 +999,78 @@ (tags-todo "5m") (tags-todo "20m"))))) #+end_src + Custom agenda view - #+begin_src emacs-lisp - (defun org-agenda-prepare (&optional name) - (let ((filter-alist (if org-agenda-persistent-filter - (with-current-buffer - (get-buffer-create org-agenda-buffer-name) - (list `(tag . ,org-agenda-tag-filter) - `(re . ,org-agenda-regexp-filter) - `(effort . ,org-agenda-effort-filter) - `(cat . ,org-agenda-category-filter)))))) - (if (org-agenda-use-sticky-p) - (progn - (put 'org-agenda-tag-filter :preset-filter nil) - (put 'org-agenda-category-filter :preset-filter nil) - (put 'org-agenda-regexp-filter :preset-filter nil) - ;; Popup existing buffer - (org-agenda-prepare-window (get-buffer org-agenda-buffer-name) - filter-alist) - (message "Sticky Agenda buffer, use `r' to refresh") - (or org-agenda-multi (org-agenda-fit-window-to-buffer)) - (throw 'exit "Sticky Agenda buffer, use `r' to refresh")) - (setq org-todo-keywords-for-agenda nil) - (put 'org-agenda-tag-filter :preset-filter - org-agenda-tag-filter-preset) - (put 'org-agenda-category-filter :preset-filter - org-agenda-category-filter-preset) - (put 'org-agenda-regexp-filter :preset-filter - org-agenda-regexp-filter-preset) - (put 'org-agenda-effort-filter :preset-filter - org-agenda-effort-filter-preset) - (if org-agenda-multi - (progn - (setq buffer-read-only nil) - (goto-char (point-max)) - (unless (or (bobp) org-agenda-compact-blocks - (not org-agenda-block-separator)) - (insert "\n" - (if (stringp org-agenda-block-separator) - org-agenda-block-separator - (make-string (window-width) org-agenda-block-separator)) - "\n\n")) - (narrow-to-region (point) (point-max))) - (setq org-done-keywords-for-agenda nil) - ;; Setting any org variables that are in org-agenda-local-vars - ;; list need to be done after the prepare call - (org-agenda-prepare-window - (get-buffer-create org-agenda-buffer-name) filter-alist) - (setq buffer-read-only nil) - (org-agenda-reset-markers) - (let ((inhibit-read-only t)) (erase-buffer)) - (org-agenda-mode) - (setq org-refile-targets '((org-agenda-files :level . 1))) - (setq org-refile-use-outline-path 'file) - (setq org-agenda-buffer (current-buffer)) - (setq org-agenda-contributing-files nil) - (setq org-agenda-columns-active nil) - (org-agenda-prepare-buffers (org-agenda-files nil 'ifmode)) - (setq org-todo-keywords-for-agenda - (org-uniquify org-todo-keywords-for-agenda)) - (setq org-done-keywords-for-agenda - (org-uniquify org-done-keywords-for-agenda)) - (setq org-agenda-last-prefix-arg current-prefix-arg) - (setq org-agenda-this-buffer-name org-agenda-buffer-name) - (and name (not org-agenda-name) - (setq-local org-agenda-name name))) - (setq buffer-read-only nil)))) - - (add-hook 'org-agenda-mode-hook - (lambda () (setq truncate-lines t - show-trailing-whitespace nil))) + - cleanup stuff (TODO, what is this doing, exactly? ) + #+begin_src emacs-lisp + (defun org-agenda-prepare (&optional name) + (let ((filter-alist (if org-agenda-persistent-filter + (with-current-buffer + (get-buffer-create org-agenda-buffer-name) + (list `(tag . ,org-agenda-tag-filter) + `(re . ,org-agenda-regexp-filter) + `(effort . ,org-agenda-effort-filter) + `(cat . ,org-agenda-category-filter)))))) + (if (org-agenda-use-sticky-p) + (progn + (put 'org-agenda-tag-filter :preset-filter nil) + (put 'org-agenda-category-filter :preset-filter nil) + (put 'org-agenda-regexp-filter :preset-filter nil) + ;; Popup existing buffer + (org-agenda-prepare-window (get-buffer org-agenda-buffer-name) + filter-alist) + (message "Sticky Agenda buffer, use `r' to refresh") + (or org-agenda-multi (org-agenda-fit-window-to-buffer)) + (throw 'exit "Sticky Agenda buffer, use `r' to refresh")) + (setq org-todo-keywords-for-agenda nil) + (put 'org-agenda-tag-filter :preset-filter + org-agenda-tag-filter-preset) + (put 'org-agenda-category-filter :preset-filter + org-agenda-category-filter-preset) + (put 'org-agenda-regexp-filter :preset-filter + org-agenda-regexp-filter-preset) + (put 'org-agenda-effort-filter :preset-filter + org-agenda-effort-filter-preset) + (if org-agenda-multi + (progn + (setq buffer-read-only nil) + (goto-char (point-max)) + (unless (or (bobp) org-agenda-compact-blocks + (not org-agenda-block-separator)) + (insert "\n" + (if (stringp org-agenda-block-separator) + org-agenda-block-separator + (make-string (window-width) org-agenda-block-separator)) + "\n\n")) + (narrow-to-region (point) (point-max))) + (setq org-done-keywords-for-agenda nil) + ;; Setting any org variables that are in org-agenda-local-vars + ;; list need to be done after the prepare call + (org-agenda-prepare-window + (get-buffer-create org-agenda-buffer-name) filter-alist) + (setq buffer-read-only nil) + (org-agenda-reset-markers) + (let ((inhibit-read-only t)) (erase-buffer)) + (org-agenda-mode) + (setq org-refile-targets '((org-agenda-files :level . 1))) + (setq org-refile-use-outline-path 'file) + (setq org-agenda-buffer (current-buffer)) + (setq org-agenda-contributing-files nil) + (setq org-agenda-columns-active nil) + (org-agenda-prepare-buffers (org-agenda-files nil 'ifmode)) + (setq org-todo-keywords-for-agenda + (org-uniquify org-todo-keywords-for-agenda)) + (setq org-done-keywords-for-agenda + (org-uniquify org-done-keywords-for-agenda)) + (setq org-agenda-last-prefix-arg current-prefix-arg) + (setq org-agenda-this-buffer-name org-agenda-buffer-name) + (and name (not org-agenda-name) + (setq-local org-agenda-name name))) + (setq buffer-read-only nil)))) + + (add-hook 'org-agenda-mode-hook + (lambda () (setq truncate-lines t + show-trailing-whitespace nil))) #+end_src *** Automate saving @@ -1197,7 +1199,15 @@ (setq org-clock-clocktable-default-properties '(:maxlevel 2 :scope subtree)) (org-clock-persistence-insinuate) #+end_src -*** Tangle to different files +*** COMMENT Tangle to different files + This has been broken by commit 3ebee033103ccd3c3e8c354bad01c15332b9d901 + and a2cb9b853d30fc301f4553d1556dba4ee6bc1ead. + Try some workarounds to pinpoint the issue: + #+begin_src emacs-lisp + (setq org-babel-tangle-use-relative-file-links nil) + #+end_src + ---- + This is some some super-clever stuff. See [https://emacs.stackexchange.com/questions/39032/tangle-the-same-src-block-to-different-files] #+begin_src emacs-lisp @@ -1236,35 +1246,37 @@ "Can be used as :around advice for `org-babel-tangle-single-block'. If the :tangle header arg is a list of files. Handle all files" (let* ((info (org-babel-get-src-block-info)) - (params (nth 2 info)) - (tfiles (cdr (assoc :tangle params)))) - (message nil) - (if (null (and only-this-block (consp tfiles))) - (funcall oldfun block-counter only-this-block) - (cl-assert (listp tfiles) nil - ":tangle only allows a tangle file name or a list of tangle file names") - (let ((ret (mapcar - (lambda (tfile) - (message tfile) - (sleep-for 1) - (let (old-get-info) - (cl-letf* (((symbol-function 'old-get-info) (symbol-function 'org-babel-get-src-block-info)) - ((symbol-function 'org-babel-get-src-block-info) - `(lambda (&rest get-info-args) - (let* ((info (apply 'old-get-info get-info-args)) - (params (nth 2 info)) - (tfile-cons (assoc :tangle params))) - (setcdr tfile-cons ,tfile) - info)))) - (funcall oldfun block-counter only-this-block)))) - tfiles))) - (if only-this-block - (list (cons (cl-caaar ret) (mapcar #'cadar ret))) - ret))))) - - - (advice-add 'org-babel-tangle-collect-blocks :override #'org-babel-tangle-collect-blocks-handle-tangle-list) - (advice-add 'org-babel-tangle-single-block :around #'org-babel-tangle-single-block-handle-tangle-list) + (params (nth 2 info)) + (tfiles (cdr (assoc :tangle params)))) + (message nil) + (if (null (and only-this-block (consp tfiles))) + (funcall oldfun block-counter only-this-block) + (cl-assert (listp tfiles) nil + ":tangle only allows a tangle file name or a list of tangle file names") + (let ((ret (mapcar + (lambda (tfile) + (message tfile) + (sleep-for 1) + (let (old-get-info) + (cl-letf* (((symbol-function 'old-get-info) (symbol-function 'org-babel-get-src-block-info)) + ((symbol-function 'org-babel-get-src-block-info) + `(lambda (&rest get-info-args) + (let* ((info (apply 'old-get-info get-info-args)) + (params (nth 2 info)) + (tfile-cons (assoc :tangle params))) + (setcdr tfile-cons ,tfile) + info)))) + (funcall oldfun block-counter only-this-block)))) + tfiles))) + (if only-this-block + (list (cons (cl-caaar ret) (mapcar #'cadar ret))) + ret))))) + + + (advice-add 'org-babel-tangle-collect-blocks :override + #'org-babel-tangle-collect-blocks-handle-tangle-list) + (advice-add 'org-babel-tangle-single-block :around + #'org-babel-tangle-single-block-handle-tangle-list) #+end_src *** Append tangle #+begin_src emacs-lisp @@ -2205,6 +2217,7 @@ (set-face-bold 'bold nil) (wilder/fixup-faces) (with-eval-after-load "info" (wilder/fixup-faces) nil) + (with-eval-after-load "mu4e" (wilder/fixup-faces) nil) (with-eval-after-load "vterm" (wilder/fixup-faces) nil) #+end_src