From 4cf9b056fa56adfd8761b5959ccee02042370b71 Mon Sep 17 00:00:00 2001 From: Don Armstrong Date: Sat, 8 Jun 2019 21:03:03 -0700 Subject: [PATCH] adjust indentation --- emacs_el/configuration/don-configuration.org | 949 ++++++++++--------- 1 file changed, 477 insertions(+), 472 deletions(-) diff --git a/emacs_el/configuration/don-configuration.org b/emacs_el/configuration/don-configuration.org index 51b159e..478cff1 100644 --- a/emacs_el/configuration/don-configuration.org +++ b/emacs_el/configuration/don-configuration.org @@ -1059,109 +1059,111 @@ This can be used to link things pretty quickly if necessary #+END_SRC ** LaTeX #+BEGIN_SRC emacs-lisp - (use-package tex - :defer t - :ensure auctex +(use-package tex + :defer t + :ensure auctex + :config + ; (add-to-list 'TeX-style-path '"/home/don/lib/emacs_el/auctex/style") + ;; REFTEX (much enhanced management of cross-ref, labels, etc) + ;; http://www.strw.leidenuniv.nl/~dominik/Tools/reftex/ + ; (autoload 'reftex-mode "reftex" "RefTeX Minor Mode" t) + ; (autoload 'turn-on-reftex "reftex" "RefTeX Minor Mode" nil) + ; (autoload 'reftex-citation "reftex-cite" "Make citation" nil) + ; (autoload 'reftex-index-phrase-mode "reftex-index" "Phrase mode" t) + (add-hook 'LaTeX-mode-hook 'turn-on-reftex) ; with AUCTeX LaTeX mode + (add-hook 'latex-mode-hook 'turn-on-reftex) ; with Emacs latex mode + (add-hook 'LaTeX-mode-hook 'outline-minor-mode) ; with AUCTeX LaTeX mode + (add-hook 'latex-mode-hook 'outline-minor-mode) ; with Emacs latex mode + + (setq-default reftex-plug-into-AUCTeX t) + ;; support fake section headers + (setq TeX-outline-extra + '(("%chapter" 1) + ("%section" 2) + ("%subsection" 3) + ("%subsubsection" 4) + ("%paragraph" 5))) + ;; add font locking to the headers + (font-lock-add-keywords + 'latex-mode + '(("^%\\(chapter\\|\\(sub\\|subsub\\)?section\\|paragraph\\)" + 0 'font-lock-keyword-face t) + ("^%chapter{\\(.*\\)}" 1 'font-latex-sectioning-1-face t) + ("^%section{\\(.*\\)}" 1 'font-latex-sectioning-2-face t) + ("^%subsection{\\(.*\\)}" 1 'font-latex-sectioning-3-face t) + ("^%subsubsection{\\(.*\\)}" 1 'font-latex-sectioning-4-face t) + ("^%paragraph{\\(.*\\)}" 1 'font-latex-sectioning-5-face t))) + + ;; use smart quotes by default instead of `` and '' + ;; taken from http://kieranhealy.org/esk/kjhealy.html + (setq TeX-open-quote "“") + (setq TeX-close-quote "”") + + ;; (TeX-add-style-hook + ;; "latex" + ;; (lambda () + ;; (TeX-add-symbols + ;; '("DLA" 1)))) + ;; (custom-set-variables + ;; '(font-latex-user-keyword-classes + ;; '(("fixme" + ;; ("DLA" "RZ") + ;; font-lock-function-name-face 2 (command 1 t)))) + ;; ) + (setq-default TeX-parse-self t) + (setq-default TeX-auto-save t) + (setq-default TeX-master nil) + (add-to-list 'LaTeX-font-list + '(?\C-a "\\alert{","}")) + (eval-after-load + "latex" + '(TeX-add-style-hook + "cleveref" + (lambda () + (if (boundp 'reftex-ref-style-alist) + (add-to-list + 'reftex-ref-style-alist + '("Cleveref" "cleveref" + (("\\cref" ?c) ("\\Cref" ?C) ("\\cpageref" ?d) ("\\Cpageref" ?D))))) + (reftex-ref-style-activate "Cleveref") + (TeX-add-symbols + '("cref" TeX-arg-ref) + '("Cref" TeX-arg-ref) + '("cpageref" TeX-arg-ref) + '("Cpageref" TeX-arg-ref))))) + (eval-after-load + "latex" + '(add-to-list 'LaTeX-fill-excluded-macros + '("Sexpr"))) + + (use-package font-latex :config - ; (add-to-list 'TeX-style-path '"/home/don/lib/emacs_el/auctex/style") - ;; REFTEX (much enhanced management of cross-ref, labels, etc) - ;; http://www.strw.leidenuniv.nl/~dominik/Tools/reftex/ - ; (autoload 'reftex-mode "reftex" "RefTeX Minor Mode" t) - ; (autoload 'turn-on-reftex "reftex" "RefTeX Minor Mode" nil) - ; (autoload 'reftex-citation "reftex-cite" "Make citation" nil) - ; (autoload 'reftex-index-phrase-mode "reftex-index" "Phrase mode" t) - (add-hook 'LaTeX-mode-hook 'turn-on-reftex) ; with AUCTeX LaTeX mode - (add-hook 'latex-mode-hook 'turn-on-reftex) ; with Emacs latex mode - (add-hook 'LaTeX-mode-hook 'outline-minor-mode) ; with AUCTeX LaTeX mode - (add-hook 'latex-mode-hook 'outline-minor-mode) ; with Emacs latex mode - - (setq-default reftex-plug-into-AUCTeX t) - ;; support fake section headers - (setq TeX-outline-extra - '(("%chapter" 1) - ("%section" 2) - ("%subsection" 3) - ("%subsubsection" 4) - ("%paragraph" 5))) - ;; add font locking to the headers - (font-lock-add-keywords - 'latex-mode - '(("^%\\(chapter\\|\\(sub\\|subsub\\)?section\\|paragraph\\)" - 0 'font-lock-keyword-face t) - ("^%chapter{\\(.*\\)}" 1 'font-latex-sectioning-1-face t) - ("^%section{\\(.*\\)}" 1 'font-latex-sectioning-2-face t) - ("^%subsection{\\(.*\\)}" 1 'font-latex-sectioning-3-face t) - ("^%subsubsection{\\(.*\\)}" 1 'font-latex-sectioning-4-face t) - ("^%paragraph{\\(.*\\)}" 1 'font-latex-sectioning-5-face t))) - - ;; use smart quotes by default instead of `` and '' - ;; taken from http://kieranhealy.org/esk/kjhealy.html - (setq TeX-open-quote "“") - (setq TeX-close-quote "”") - - ;; (TeX-add-style-hook - ;; "latex" - ;; (lambda () - ;; (TeX-add-symbols - ;; '("DLA" 1)))) - ;; (custom-set-variables - ;; '(font-latex-user-keyword-classes - ;; '(("fixme" - ;; ("DLA" "RZ") - ;; font-lock-function-name-face 2 (command 1 t)))) - ;; ) - (setq-default TeX-parse-self t) - (setq-default TeX-auto-save t) - (setq-default TeX-master nil) - (eval-after-load - "latex" - '(TeX-add-style-hook - "cleveref" - (lambda () - (if (boundp 'reftex-ref-style-alist) - (add-to-list - 'reftex-ref-style-alist - '("Cleveref" "cleveref" - (("\\cref" ?c) ("\\Cref" ?C) ("\\cpageref" ?d) ("\\Cpageref" ?D))))) - (reftex-ref-style-activate "Cleveref") - (TeX-add-symbols - '("cref" TeX-arg-ref) - '("Cref" TeX-arg-ref) - '("cpageref" TeX-arg-ref) - '("Cpageref" TeX-arg-ref))))) - (eval-after-load - "latex" - '(add-to-list 'LaTeX-fill-excluded-macros - '("Sexpr"))) - - (use-package font-latex - :config - (setq font-latex-match-reference-keywords - '( - ("fref" "{") - ("Fref" "{") - ("citep" "{") - ("citet" "{") - ("acs" "{") - ("acsp" "{") - ("ac" "{") - ("acp" "{") - ("acl" "{") - ("aclp" "{") - ("acsu" "{") - ("aclu" "{") - ("acused" "{") - ("DLA" "{") - ("RZ" "{") - ("OM" "{") - ("DL" "{") - ("fixme" "{")) - ) - ) - (setq font-latex-fontify-script nil) - (setq font-latex-fontify-sectioning (quote color)) - (setq font-latex-script-display (quote (nil))) - ) + (setq font-latex-match-reference-keywords + '( + ("fref" "{") + ("Fref" "{") + ("citep" "{") + ("citet" "{") + ("acs" "{") + ("acsp" "{") + ("ac" "{") + ("acp" "{") + ("acl" "{") + ("aclp" "{") + ("acsu" "{") + ("aclu" "{") + ("acused" "{") + ("DLA" "{") + ("RZ" "{") + ("OM" "{") + ("DL" "{") + ("fixme" "{")) + ) + ) + (setq font-latex-fontify-script nil) + (setq font-latex-fontify-sectioning (quote color)) + (setq font-latex-script-display (quote (nil))) +) #+END_SRC ** ESS @@ -1999,386 +2001,389 @@ From http://julien.danjou.info/projects/emacs-packages#rainbow-mode, this colori :ID: 7135ba17-6a50-4eed-84ca-b90afa5b12f8 :END: #+BEGIN_SRC emacs-lisp - (require 'ox-latex) - (add-to-list 'org-latex-classes - '("memarticle" - "\\documentclass[11pt,oneside,article]{memoir}\n" - ("\\section{%s}" . "\\section*{%s}") - ("\\subsection{%s}" . "\\subsection*{%s}") - ("\\subsubsection{%s}" . "\\subsubsection*{%s}") - ("\\paragraph{%s}" . "\\paragraph*{%s}") - ("\\subparagraph{%s}" . "\\subparagraph*{%s}"))) - - (setq org-beamer-outline-frame-options "") - (add-to-list 'org-latex-classes - '("beamer" - "\\documentclass[ignorenonframetext]{beamer} - [NO-DEFAULT-PACKAGES] - [PACKAGES] - [EXTRA]" - ("\\section{%s}" . "\\section*{%s}") - ("\\subsection{%s}" . "\\subsection*{%s}") - ("\\subsubsection{%s}" . "\\subsubsection*{%s}") - ("\\paragraph{%s}" . "\\paragraph*{%s}") - ("\\subparagraph{%s}" . "\\subparagraph*{%s}"))) - - (add-to-list 'org-latex-classes - '("membook" - "\\documentclass[11pt,oneside]{memoir}\n" - ("\\chapter{%s}" . "\\chapter*{%s}") - ("\\section{%s}" . "\\section*{%s}") - ("\\subsection{%s}" . "\\subsection*{%s}") - ("\\subsubsection{%s}" . "\\subsubsection*{%s}"))) - - (add-to-list 'org-latex-classes - '("letter" - "\\documentclass[11pt]{letter} - [NO-DEFAULT-PACKAGES] - [PACKAGES] - [EXTRA]" - ("\\section{%s}" . "\\section*{%s}") - ("\\subsection{%s}" . "\\subsection*{%s}") - ("\\subsubsection{%s}" . "\\subsubsection*{%s}") - ("\\paragraph{%s}" . "\\paragraph*{%s}") - ("\\subparagraph{%s}" . "\\subparagraph*{%s}"))) - - (add-to-list 'org-latex-classes - '("dlacv" - "\\documentclass{dlacv} - [NO-DEFAULT-PACKAGES] - [NO-PACKAGES] - [NO-EXTRA]" - ("\\section{%s}" . "\\section*{%s}") - ("\\subsection{%s}" . "\\subsection*{%s}") - ("\\subsubsection{%s}" . "\\subsubsection*{%s}") - ("\\paragraph{%s}" . "\\paragraph*{%s}") - ("\\subparagraph{%s}" . "\\subparagraph*{%s}"))) - - - (add-to-list 'org-latex-classes - '("dlaresume" - "\\documentclass{dlaresume} - [NO-DEFAULT-PACKAGES] - [NO-PACKAGES] - [NO-EXTRA]" - ("\\section{%s}" . "\\section*{%s}") - ("\\subsection{%s}" . "\\subsection*{%s}") - ("\\subsubsection{%s}" . "\\subsubsection*{%s}") - ("\\paragraph{%s}" . "\\paragraph*{%s}") - ("\\subparagraph{%s}" . "\\subparagraph*{%s}"))) - - - ;; Originally taken from Bruno Tavernier: http://thread.gmane.org/gmane.emacs.orgmode/31150/focus=31432 - ;; but adapted to use latexmk 4.22 or higher. - (setq org-latex-pdf-process '("latexmk -f -pdflatex=xelatex -bibtex -use-make -pdf %f")) - - ;; Default packages included in /every/ tex file, latex, pdflatex or xelatex - (setq org-latex-default-packages-alist - '(("" "amsmath" t) - ("" "unicode-math" t) - )) - (setq org-latex-packages-alist - '(("" "graphicx" t) - ("" "fontspec" t) - ("" "xunicode" t) - ("" "hyperref" t) - ("" "url" t) - ("" "rotating" t) - ("" "longtable" nil) - ("" "float" ))) - - ;; make equations larger - (setq org-format-latex-options (plist-put org-format-latex-options :scale 2.0)) - - (defun org-create-formula--latex-header () - "Return LaTeX header appropriate for previewing a LaTeX snippet." - (let ((info (org-combine-plists (org-export--get-global-options - (org-export-get-backend 'latex)) - (org-export--get-inbuffer-options - (org-export-get-backend 'latex))))) - (org-latex-guess-babel-language - (org-latex-guess-inputenc - (org-splice-latex-header - org-format-latex-header - org-latex-default-packages-alist - nil t - (plist-get info :latex-header))) - info))) - - - ; support ignoring headers in org mode export to latex - ; from http://article.gmane.org/gmane.emacs.orgmode/67692 - (defadvice org-latex-headline (around my-latex-skip-headlines - (headline contents info) activate) - (if (member "ignoreheading" (org-element-property :tags headline)) - (setq ad-return-value contents) - ad-do-it)) - - ;; keep latex logfiles - - (setq org-latex-remove-logfiles nil) - - ;; Resume clocking task when emacs is restarted - (org-clock-persistence-insinuate) - ;; - ;; Show lot of clocking history so it's easy to pick items off the C-F11 list - (setq org-clock-history-length 23) - ;; Resume clocking task on clock-in if the clock is open - (setq org-clock-in-resume t) - ;; Change tasks to NEXT when clocking in; this avoids clocking in when - ;; there are things like PHONE calls - (setq org-clock-in-switch-to-state 'bh/clock-in-to-next) - ;; Separate drawers for clocking and logs - (setq org-drawers (quote ("PROPERTIES" "LOGBOOK"))) - ;; Save clock data and state changes and notes in the LOGBOOK drawer - (setq org-clock-into-drawer t) - (setq org-log-into-drawer t) - ;; Sometimes I change tasks I'm clocking quickly - this removes clocked tasks with 0:00 duration - (setq org-clock-out-remove-zero-time-clocks t) - ;; Clock out when moving task to a done state - (setq org-clock-out-when-done t) - ;; Save the running clock and all clock history when exiting Emacs, load it on startup - (setq org-clock-persist t) - ;; Do not prompt to resume an active clock - (setq org-clock-persist-query-resume nil) - ;; Enable auto clock resolution for finding open clocks - (setq org-clock-auto-clock-resolution (quote when-no-clock-is-running)) - ;; Include current clocking task in clock reports - (setq org-clock-report-include-clocking-task t) - - ;; the cache seems to be broken - (setq org-element-use-cache nil) - - (defvar bh/keep-clock-running nil) - - (defun bh/is-task-p () - "Any task with a todo keyword and no subtask" - (save-restriction - (widen) - (let ((has-subtask) - (subtree-end (save-excursion (org-end-of-subtree t))) - (is-a-task (member (nth 2 (org-heading-components)) org-todo-keywords-1))) - (save-excursion - (forward-line 1) - (while (and (not has-subtask) - (< (point) subtree-end) - (re-search-forward "^\*+ " subtree-end t)) - (when (member (org-get-todo-state) org-todo-keywords-1) - (setq has-subtask t)))) - (and is-a-task (not has-subtask))))) - (defun bh/is-project-p () - "Any task with a todo keyword subtask" - (save-restriction - (widen) - (let ((has-subtask) - (subtree-end (save-excursion (org-end-of-subtree t))) - (is-a-task (member (nth 2 (org-heading-components)) org-todo-keywords-1))) - (save-excursion - (forward-line 1) - (while (and (not has-subtask) - (< (point) subtree-end) - (re-search-forward "^\*+ " subtree-end t)) - (when (member (org-get-todo-state) org-todo-keywords-1) - (setq has-subtask t)))) - (and is-a-task has-subtask)))) - - (defun bh/is-subproject-p () - "Any task which is a subtask of another project" - (let ((is-subproject) +(use-package ox-extra + :config + (ox-extras-activate '(ignore-headlines))) +(require 'ox-latex) +(add-to-list 'org-latex-classes + '("memarticle" + "\\documentclass[11pt,oneside,article]{memoir}\n" + ("\\section{%s}" . "\\section*{%s}") + ("\\subsection{%s}" . "\\subsection*{%s}") + ("\\subsubsection{%s}" . "\\subsubsection*{%s}") + ("\\paragraph{%s}" . "\\paragraph*{%s}") + ("\\subparagraph{%s}" . "\\subparagraph*{%s}"))) + +(setq org-beamer-outline-frame-options "") +(add-to-list 'org-latex-classes + '("beamer" + "\\documentclass[ignorenonframetext]{beamer} +[NO-DEFAULT-PACKAGES] +[PACKAGES] +[EXTRA]" + ("\\section{%s}" . "\\section*{%s}") + ("\\subsection{%s}" . "\\subsection*{%s}") + ("\\subsubsection{%s}" . "\\subsubsection*{%s}") + ("\\paragraph{%s}" . "\\paragraph*{%s}") + ("\\subparagraph{%s}" . "\\subparagraph*{%s}"))) + +(add-to-list 'org-latex-classes + '("membook" + "\\documentclass[11pt,oneside]{memoir}\n" + ("\\chapter{%s}" . "\\chapter*{%s}") + ("\\section{%s}" . "\\section*{%s}") + ("\\subsection{%s}" . "\\subsection*{%s}") + ("\\subsubsection{%s}" . "\\subsubsection*{%s}"))) + +(add-to-list 'org-latex-classes + '("letter" + "\\documentclass[11pt]{letter} +[NO-DEFAULT-PACKAGES] +[PACKAGES] +[EXTRA]" + ("\\section{%s}" . "\\section*{%s}") + ("\\subsection{%s}" . "\\subsection*{%s}") + ("\\subsubsection{%s}" . "\\subsubsection*{%s}") + ("\\paragraph{%s}" . "\\paragraph*{%s}") + ("\\subparagraph{%s}" . "\\subparagraph*{%s}"))) + +(add-to-list 'org-latex-classes + '("dlacv" + "\\documentclass{dlacv} +[NO-DEFAULT-PACKAGES] +[NO-PACKAGES] +[NO-EXTRA]" + ("\\section{%s}" . "\\section*{%s}") + ("\\subsection{%s}" . "\\subsection*{%s}") + ("\\subsubsection{%s}" . "\\subsubsection*{%s}") + ("\\paragraph{%s}" . "\\paragraph*{%s}") + ("\\subparagraph{%s}" . "\\subparagraph*{%s}"))) + + +(add-to-list 'org-latex-classes + '("dlaresume" + "\\documentclass{dlaresume} +[NO-DEFAULT-PACKAGES] +[NO-PACKAGES] +[NO-EXTRA]" + ("\\section{%s}" . "\\section*{%s}") + ("\\subsection{%s}" . "\\subsection*{%s}") + ("\\subsubsection{%s}" . "\\subsubsection*{%s}") + ("\\paragraph{%s}" . "\\paragraph*{%s}") + ("\\subparagraph{%s}" . "\\subparagraph*{%s}"))) + + +;; Originally taken from Bruno Tavernier: http://thread.gmane.org/gmane.emacs.orgmode/31150/focus=31432 +;; but adapted to use latexmk 4.22 or higher. +(setq org-latex-pdf-process '("latexmk -f -pdflatex=xelatex -bibtex -use-make -pdf %f")) + +;; Default packages included in /every/ tex file, latex, pdflatex or xelatex +(setq org-latex-default-packages-alist + '(("" "amsmath" t) + ("" "unicode-math" t) + )) +(setq org-latex-packages-alist + '(("" "graphicx" t) + ("" "fontspec" t) + ("" "xunicode" t) + ("" "hyperref" t) + ("" "url" t) + ("" "rotating" t) + ("" "longtable" nil) + ("" "float" ))) + +;; make equations larger +(setq org-format-latex-options (plist-put org-format-latex-options :scale 2.0)) + +(defun org-create-formula--latex-header () + "Return LaTeX header appropriate for previewing a LaTeX snippet." + (let ((info (org-combine-plists (org-export--get-global-options + (org-export-get-backend 'latex)) + (org-export--get-inbuffer-options + (org-export-get-backend 'latex))))) + (org-latex-guess-babel-language + (org-latex-guess-inputenc + (org-splice-latex-header + org-format-latex-header + org-latex-default-packages-alist + nil t + (plist-get info :latex-header))) + info))) + + +; support ignoring headers in org mode export to latex +; from http://article.gmane.org/gmane.emacs.orgmode/67692 +(defadvice org-latex-headline (around my-latex-skip-headlines + (headline contents info) activate) + (if (member "ignoreheading" (org-element-property :tags headline)) + (setq ad-return-value contents) + ad-do-it)) + +;; keep latex logfiles + +(setq org-latex-remove-logfiles nil) + +;; Resume clocking task when emacs is restarted +(org-clock-persistence-insinuate) +;; +;; Show lot of clocking history so it's easy to pick items off the C-F11 list +(setq org-clock-history-length 23) +;; Resume clocking task on clock-in if the clock is open +(setq org-clock-in-resume t) +;; Change tasks to NEXT when clocking in; this avoids clocking in when +;; there are things like PHONE calls +(setq org-clock-in-switch-to-state 'bh/clock-in-to-next) +;; Separate drawers for clocking and logs +(setq org-drawers (quote ("PROPERTIES" "LOGBOOK"))) +;; Save clock data and state changes and notes in the LOGBOOK drawer +(setq org-clock-into-drawer t) +(setq org-log-into-drawer t) +;; Sometimes I change tasks I'm clocking quickly - this removes clocked tasks with 0:00 duration +(setq org-clock-out-remove-zero-time-clocks t) +;; Clock out when moving task to a done state +(setq org-clock-out-when-done t) +;; Save the running clock and all clock history when exiting Emacs, load it on startup +(setq org-clock-persist t) +;; Do not prompt to resume an active clock +(setq org-clock-persist-query-resume nil) +;; Enable auto clock resolution for finding open clocks +(setq org-clock-auto-clock-resolution (quote when-no-clock-is-running)) +;; Include current clocking task in clock reports +(setq org-clock-report-include-clocking-task t) + +;; the cache seems to be broken +(setq org-element-use-cache nil) + +(defvar bh/keep-clock-running nil) + +(defun bh/is-task-p () + "Any task with a todo keyword and no subtask" + (save-restriction + (widen) + (let ((has-subtask) + (subtree-end (save-excursion (org-end-of-subtree t))) (is-a-task (member (nth 2 (org-heading-components)) org-todo-keywords-1))) (save-excursion - (while (and (not is-subproject) (org-up-heading-safe)) - (when (member (nth 2 (org-heading-components)) org-todo-keywords-1) - (setq is-subproject t)))) - (and is-a-task is-subproject))) + (forward-line 1) + (while (and (not has-subtask) + (< (point) subtree-end) + (re-search-forward "^\*+ " subtree-end t)) + (when (member (org-get-todo-state) org-todo-keywords-1) + (setq has-subtask t)))) + (and is-a-task (not has-subtask))))) +(defun bh/is-project-p () + "Any task with a todo keyword subtask" + (save-restriction + (widen) + (let ((has-subtask) + (subtree-end (save-excursion (org-end-of-subtree t))) + (is-a-task (member (nth 2 (org-heading-components)) org-todo-keywords-1))) + (save-excursion + (forward-line 1) + (while (and (not has-subtask) + (< (point) subtree-end) + (re-search-forward "^\*+ " subtree-end t)) + (when (member (org-get-todo-state) org-todo-keywords-1) + (setq has-subtask t)))) + (and is-a-task has-subtask)))) + +(defun bh/is-subproject-p () + "Any task which is a subtask of another project" + (let ((is-subproject) + (is-a-task (member (nth 2 (org-heading-components)) org-todo-keywords-1))) + (save-excursion + (while (and (not is-subproject) (org-up-heading-safe)) + (when (member (nth 2 (org-heading-components)) org-todo-keywords-1) + (setq is-subproject t)))) + (and is-a-task is-subproject))) - (defun bh/clock-in-to-next (kw) - "Switch a task from TODO to NEXT when clocking in. - Skips capture tasks, projects, and subprojects. - Switch projects and subprojects from NEXT back to TODO" - (when (not (and (boundp 'org-capture-mode) org-capture-mode)) - (cond - ((and (member (org-get-todo-state) (list "TODO")) - (bh/is-task-p)) - "NEXT") - ((and (member (org-get-todo-state) (list "NEXT")) - (bh/is-project-p)) - "TODO")))) - - (defun bh/punch-in (arg) - "Start continuous clocking and set the default task to the - selected task. If no task is selected set the Organization task - as the default task." - (interactive "p") - (setq bh/keep-clock-running t) - (if (equal major-mode 'org-agenda-mode) +(defun bh/clock-in-to-next (kw) + "Switch a task from TODO to NEXT when clocking in. +Skips capture tasks, projects, and subprojects. +Switch projects and subprojects from NEXT back to TODO" + (when (not (and (boundp 'org-capture-mode) org-capture-mode)) + (cond + ((and (member (org-get-todo-state) (list "TODO")) + (bh/is-task-p)) + "NEXT") + ((and (member (org-get-todo-state) (list "NEXT")) + (bh/is-project-p)) + "TODO")))) + +(defun bh/punch-in (arg) + "Start continuous clocking and set the default task to the +selected task. If no task is selected set the Organization task +as the default task." + (interactive "p") + (setq bh/keep-clock-running t) + (if (equal major-mode 'org-agenda-mode) + ;; + ;; We're in the agenda + ;; + (let* ((marker (org-get-at-bol 'org-hd-marker)) + (tags (org-with-point-at marker (org-get-tags-at)))) + (if (and (eq arg 4) tags) + (org-agenda-clock-in '(16)) + (bh/clock-in-organization-task-as-default))) ;; - ;; We're in the agenda + ;; We are not in the agenda ;; - (let* ((marker (org-get-at-bol 'org-hd-marker)) - (tags (org-with-point-at marker (org-get-tags-at)))) - (if (and (eq arg 4) tags) - (org-agenda-clock-in '(16)) - (bh/clock-in-organization-task-as-default))) - ;; - ;; We are not in the agenda - ;; - (save-restriction - (widen) - ; Find the tags on the current task - (if (and (equal major-mode 'org-mode) (not (org-before-first-heading-p)) (eq arg 4)) - (org-clock-in '(16)) - (bh/clock-in-organization-task-as-default))))) - - (defun bh/punch-out () - (interactive) - (setq bh/keep-clock-running nil) - (when (org-clock-is-active) - (org-clock-out)) - (org-agenda-remove-restriction-lock)) - - (defun bh/clock-in-default-task () - (save-excursion - (org-with-point-at org-clock-default-task - (org-clock-in)))) - - (defun bh/clock-in-parent-task () - "Move point to the parent (project) task if any and clock in" - (let ((parent-task)) - (save-excursion (save-restriction - (widen) - (while (and (not parent-task) (org-up-heading-safe)) - (when (member (nth 2 (org-heading-components)) org-todo-keywords-1) - (setq parent-task (point)))) - (if parent-task - (org-with-point-at parent-task - (org-clock-in)) - (when bh/keep-clock-running - (bh/clock-in-default-task))))))) + (widen) + ; Find the tags on the current task + (if (and (equal major-mode 'org-mode) (not (org-before-first-heading-p)) (eq arg 4)) + (org-clock-in '(16)) + (bh/clock-in-organization-task-as-default))))) + +(defun bh/punch-out () + (interactive) + (setq bh/keep-clock-running nil) + (when (org-clock-is-active) + (org-clock-out)) + (org-agenda-remove-restriction-lock)) + +(defun bh/clock-in-default-task () + (save-excursion + (org-with-point-at org-clock-default-task + (org-clock-in)))) - (defvar bh/organization-task-id "e22cb8bf-07c7-408b-8f60-ff3aadac95e4") +(defun bh/clock-in-parent-task () + "Move point to the parent (project) task if any and clock in" + (let ((parent-task)) + (save-excursion + (save-restriction + (widen) + (while (and (not parent-task) (org-up-heading-safe)) + (when (member (nth 2 (org-heading-components)) org-todo-keywords-1) + (setq parent-task (point)))) + (if parent-task + (org-with-point-at parent-task + (org-clock-in)) + (when bh/keep-clock-running + (bh/clock-in-default-task))))))) + +(defvar bh/organization-task-id "e22cb8bf-07c7-408b-8f60-ff3aadac95e4") + +(defun bh/clock-in-organization-task-as-default () + (interactive) + (org-with-point-at (org-id-find bh/organization-task-id 'marker) + (org-clock-in '(16)))) + +(defun bh/clock-out-maybe () + (when (and bh/keep-clock-running + (not org-clock-clocking-in) + (marker-buffer org-clock-default-task) + (not org-clock-resolving-clocks-due-to-idleness)) + (bh/clock-in-parent-task))) + +; (add-hook 'org-clock-out-hook 'bh/clock-out-maybe 'append) + +(require 'org-id) +(defun bh/clock-in-task-by-id (id) + "Clock in a task by id" + (org-with-point-at (org-id-find id 'marker) + (org-clock-in nil))) + +(defun bh/clock-in-last-task (arg) + "Clock in the interrupted task if there is one +Skip the default task and get the next one. +A prefix arg forces clock in of the default task." + (interactive "p") + (let ((clock-in-to-task + (cond + ((eq arg 4) org-clock-default-task) + ((and (org-clock-is-active) + (equal org-clock-default-task (cadr org-clock-history))) + (caddr org-clock-history)) + ((org-clock-is-active) (cadr org-clock-history)) + ((equal org-clock-default-task (car org-clock-history)) (cadr org-clock-history)) + (t (car org-clock-history))))) + (widen) + (org-with-point-at clock-in-to-task + (org-clock-in nil)))) + + +(defun org-export-to-ods () + (interactive) + (let ((csv-file "data.csv")) + (org-table-export csv-file "orgtbl-to-csv") + (org-odt-convert csv-file "ods" 'open))) + +; allow for zero-width-space to be a break in regexp too +; (setcar org-emphasis-regexp-components "​ [:space:] \t('\"{") +; (setcar (nthcdr 1 org-emphasis-regexp-components) "​ [:space:]- \t.,:!?;'\")}\\") +; (org-set-emph-re 'org-emphasis-regexp-components org-emphasis-regexp-components) + +;; support inserting screen shots +(defun my/org-insert-screenshot () + "Take a screenshot into a time stamped unique-named file in the +same directory as the org-buffer and insert a link to this file." + (interactive) + (defvar my/org-insert-screenshot/filename) + (setq my/org-insert-screenshot/filename + (read-file-name + "Screenshot to insert: " + nil + (concat (buffer-file-name) "_" (format-time-string "%Y%m%d_%H%M%S") ".png") + ) + ) + (call-process "import" nil nil nil my/org-insert-screenshot/filename) + (insert (concat "[[" my/org-insert-screenshot/filename "]]")) + (org-display-inline-images)) - (defun bh/clock-in-organization-task-as-default () - (interactive) - (org-with-point-at (org-id-find bh/organization-task-id 'marker) - (org-clock-in '(16)))) - - (defun bh/clock-out-maybe () - (when (and bh/keep-clock-running - (not org-clock-clocking-in) - (marker-buffer org-clock-default-task) - (not org-clock-resolving-clocks-due-to-idleness)) - (bh/clock-in-parent-task))) - - ; (add-hook 'org-clock-out-hook 'bh/clock-out-maybe 'append) - - (require 'org-id) - (defun bh/clock-in-task-by-id (id) - "Clock in a task by id" - (org-with-point-at (org-id-find id 'marker) - (org-clock-in nil))) - - (defun bh/clock-in-last-task (arg) - "Clock in the interrupted task if there is one - Skip the default task and get the next one. - A prefix arg forces clock in of the default task." - (interactive "p") - (let ((clock-in-to-task - (cond - ((eq arg 4) org-clock-default-task) - ((and (org-clock-is-active) - (equal org-clock-default-task (cadr org-clock-history))) - (caddr org-clock-history)) - ((org-clock-is-active) (cadr org-clock-history)) - ((equal org-clock-default-task (car org-clock-history)) (cadr org-clock-history)) - (t (car org-clock-history))))) - (widen) - (org-with-point-at clock-in-to-task - (org-clock-in nil)))) - - - (defun org-export-to-ods () - (interactive) - (let ((csv-file "data.csv")) - (org-table-export csv-file "orgtbl-to-csv") - (org-odt-convert csv-file "ods" 'open))) - - ; allow for zero-width-space to be a break in regexp too - ; (setcar org-emphasis-regexp-components "​ [:space:] \t('\"{") - ; (setcar (nthcdr 1 org-emphasis-regexp-components) "​ [:space:]- \t.,:!?;'\")}\\") - ; (org-set-emph-re 'org-emphasis-regexp-components org-emphasis-regexp-components) - - ;; support inserting screen shots - (defun my/org-insert-screenshot () - "Take a screenshot into a time stamped unique-named file in the - same directory as the org-buffer and insert a link to this file." - (interactive) - (defvar my/org-insert-screenshot/filename) - (setq my/org-insert-screenshot/filename - (read-file-name - "Screenshot to insert: " - nil - (concat (buffer-file-name) "_" (format-time-string "%Y%m%d_%H%M%S") ".png") - ) - ) - (call-process "import" nil nil nil my/org-insert-screenshot/filename) - (insert (concat "[[" my/org-insert-screenshot/filename "]]")) - (org-display-inline-images)) - - (defun my/fix-inline-images () - (when org-inline-image-overlays - (org-redisplay-inline-images))) - - (add-hook 'org-babel-after-execute-hook 'my/fix-inline-images) - - ;; use xelatex to preview with imagemagick - (add-to-list 'org-preview-latex-process-alist - '(xelateximagemagick - :programs ("xelatex" "convert") - :description "pdf > png" - :message "you need to install xelatex and imagemagick" - :use-xcolor t - :image-input-type "pdf" - :image-output-type "png" - :image-size-adjust (1.0 . 1.0) - :latex-compiler ("xelatex -interaction nonstopmode -output-directory %o %f") - :image-converter ("convert -density %D -trim -antialias %f -quality 100 %O")) - ) - ;; use xelatex by default - (setq org-preview-latex-default-process 'xelateximagemagick) +(defun my/fix-inline-images () + (when org-inline-image-overlays + (org-redisplay-inline-images))) - ; from http://orgmode.org/Changes.html - (defun my/org-repair-property-drawers () - "Fix properties drawers in current buffer. - Ignore non Org buffers." - (interactive) - (when (eq major-mode 'org-mode) - (org-with-wide-buffer - (goto-char (point-min)) - (let ((case-fold-search t) - (inline-re (and (featurep 'org-inlinetask) - (concat (org-inlinetask-outline-regexp) - "END[ \t]*$")))) - (org-map-entries - (lambda () - (unless (and inline-re (org-looking-at-p inline-re)) - (save-excursion - (let ((end (save-excursion (outline-next-heading) (point)))) - (forward-line) - (when (org-looking-at-p org-planning-line-re) (forward-line)) - (when (and (< (point) end) - (not (org-looking-at-p org-property-drawer-re)) - (save-excursion - (and (re-search-forward org-property-drawer-re end t) - (eq (org-element-type - (save-match-data (org-element-at-point))) - 'drawer)))) - (insert (delete-and-extract-region - (match-beginning 0) - (min (1+ (match-end 0)) end))) - (unless (bolp) (insert "\n")))))))))))) +(add-hook 'org-babel-after-execute-hook 'my/fix-inline-images) + +;; use xelatex to preview with imagemagick +(add-to-list 'org-preview-latex-process-alist + '(xelateximagemagick + :programs ("xelatex" "convert") + :description "pdf > png" + :message "you need to install xelatex and imagemagick" + :use-xcolor t + :image-input-type "pdf" + :image-output-type "png" + :image-size-adjust (1.0 . 1.0) + :latex-compiler ("xelatex -interaction nonstopmode -output-directory %o %f") + :image-converter ("convert -density %D -trim -antialias %f -quality 100 %O")) + ) +;; use xelatex by default +(setq org-preview-latex-default-process 'xelateximagemagick) + +; from http://orgmode.org/Changes.html +(defun my/org-repair-property-drawers () + "Fix properties drawers in current buffer. + Ignore non Org buffers." + (interactive) + (when (eq major-mode 'org-mode) + (org-with-wide-buffer + (goto-char (point-min)) + (let ((case-fold-search t) + (inline-re (and (featurep 'org-inlinetask) + (concat (org-inlinetask-outline-regexp) + "END[ \t]*$")))) + (org-map-entries + (lambda () + (unless (and inline-re (org-looking-at-p inline-re)) + (save-excursion + (let ((end (save-excursion (outline-next-heading) (point)))) + (forward-line) + (when (org-looking-at-p org-planning-line-re) (forward-line)) + (when (and (< (point) end) + (not (org-looking-at-p org-property-drawer-re)) + (save-excursion + (and (re-search-forward org-property-drawer-re end t) + (eq (org-element-type + (save-match-data (org-element-at-point))) + 'drawer)))) + (insert (delete-and-extract-region + (match-beginning 0) + (min (1+ (match-end 0)) end))) + (unless (bolp) (insert "\n")))))))))))) #+END_SRC ** Org-Gcal -- 2.39.2