X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=emacs_el%2Fconfiguration%2Forg-mode-configuration.el;h=0a905f889bb36f5a6c9e6edf9c60747ab845e1ce;hb=ac4309ee32678f6ab90dfaa8e1b702d8320ab32b;hp=a8b427ce8769107b1b4db41d82e79aacc530986e;hpb=102e63f80004e76d1532e97f73508e9eea2ada9e;p=lib.git diff --git a/emacs_el/configuration/org-mode-configuration.el b/emacs_el/configuration/org-mode-configuration.el index a8b427c..0a905f8 100644 --- a/emacs_el/configuration/org-mode-configuration.el +++ b/emacs_el/configuration/org-mode-configuration.el @@ -5,6 +5,10 @@ ;; The following lines are always needed. Choose your own keys. (add-to-list 'auto-mode-alist '("\\.\\(org\\|org_archive\\|txt\\)$" . org-mode)) (require 'org) +(require 'org-agenda) +(require 'org-habit) +(eval-when-compile + (require 'cl)) (global-set-key "\C-cl" 'org-store-link) (global-set-key "\C-ca" 'org-agenda) (global-set-key "\C-cb" 'org-iswitchb) @@ -91,44 +95,60 @@ ; org mode agenda files (setq org-agenda-files - (quote ("~/projects/debbugs/debbugs.org" - "~/projects/notes/notes.org" - "~/projects/notes/refile.org" - "~/projects/notes/diary.org" - "~/projects/origins_of_life/ool.org" - "~/projects/sysadmin/sndservers/sndservers.org" - "~/projects/chaim/chaim.org" - "~/projects/chaim/papers/gwas_paper_2012/gwas_paper.org" - "~/projects/reviews/reviews.org" - "~/projects/fh/fh.org"))) + (quote ("~/projects/org-notes/debbugs.org" + "~/projects/org-notes/notes.org" + "~/projects/org-notes/refile.org" + "~/projects/org-notes/diary.org" + "~/projects/org-notes/ool.org" + "~/projects/org-notes/sndservers.org" + "~/projects/org-notes/chaim.org" + "~/projects/org-notes/wildman.org" + "~/projects/org-notes/uddin.org" + "~/projects/org-notes/reviews.org" + "~/projects/org-notes/hpcbio.org" + "~/projects/org-notes/fh.org"))) + +(set-register ?n (cons 'file "~/projects/org-notes/notes.org")) +(set-register ?r (cons 'file "~/projects/org-notes/refile.org")) +(set-register ?o (cons 'file "~/projects/org-notes/ool.org")) +(set-register ?s (cons 'file "~/projects/org-notes/sndservers.org")) +(set-register ?c (cons 'file "~/projects/org-notes/chaim.org")) +(set-register ?w (cons 'file "~/projects/org-notes/wildman.org")) +(set-register ?u (cons 'file "~/projects/org-notes/uddin.org")) +(set-register ?R (cons 'file "~/projects/reviews/reviews.org")) +(set-register ?d (cons 'file "~/projects/org-notes/diary.org")) (setq org-global-properties '(("Effort_ALL 0 0:10 0:30 1:00 2:00 3:00 4:00 5:00 6:00 7:00"))) (setq org-columns-default-format "%40ITEM(Task) %6Effort{:} %CLOCKSUM %PRIORITY %TODO %13SCHEDULED %13DEADLINE %TAGS") -(setq org-default-notes-file "~/projects/notes/notes.org") +(setq org-default-notes-file "~/projects/org-notes/notes.org") (setq org-capture-templates ;; mail-specific note template, identified by "m" - '(("m" "Mail" entry (file+headline "~/projects/notes/refile.org" "Mail") + '(("m" "Mail" entry (file+headline "~/projects/org-notes/refile.org" "Mail") "* %?\n\n Source: %u, %c\n %i") - ("t" "todo" entry (file "~/projects/notes/refile.org") + ("t" "todo" entry (file "~/projects/org-notes/refile.org") "* TODO %?\n%U\n%a\n" :clock-in t :clock-resume t) - ("r" "respond" entry (file "~/projects/notes/refile.org") + ("r" "respond" entry (file "~/projects/org-notes/refile.org") "* NEXT Respond to %:from on %:subject\nSCHEDULED: %t\n%U\n%a\n" :clock-in t :clock-resume t :immediate-finish t) - ("n" "note" entry (file "~/projects/notes/refile.org") + ("n" "note" entry (file "~/projects/org-notes/refile.org") "* %? :NOTE:\n%U\n%a\n" :clock-in t :clock-resume t) - ("s" "schedule" entry (file "~/projects/notes/refile.org") + ("s" "schedule" entry (file "~/projects/org-notes/refile.org") "* %? \n%^{scheduled:}t\n%U\n%a\n" :clock-in t :clock-resume t) - ("j" "Journal" entry (file+datetree "~/projects/notes/diary.org") + ("j" "Journal" entry (file+datetree "~/projects/org-notes/diary.org") "* %?\n%U\n" :clock-in t :clock-resume t) - ("w" "org-protocol" entry (file "~/projects/notes/refile.org") + ("w" "org-protocol" entry (file "~/projects/org-notes/refile.org") "* TODO Review %c\n%U\n" :immediate-finish t) - ("m" "Meeting" entry (file "~/projects/notes/refile.org") + ("M" "Meeting" entry (file "~/projects/org-notes/refile.org") "* MEETING with %? :MEETING:\n%U" :clock-in t :clock-resume t) - ("p" "Phone call" entry (file "~/projects/notes/refile.org") + ("S" "Seminar" entry (file "~/projects/org-notes/refile.org") + "* SEMINAR notes %? :SEMINAR:\n%U" :clock-in t :clock-resume t) + ("P" "Paper to read" entry (file+headline "~/projects/research/papers_to_read.org" "Refile") + "* TODO Get/Read %? \n%U" :clock-in t :clock-resume t) + ("p" "Phone call" entry (file "~/projects/org-notes/refile.org") "* PHONE %? :PHONE:\n%U" :clock-in t :clock-resume t) - ("J" "job" entry (file "~/projects/notes/refile.org") - "* TODO Apply for %a%? :job:\n%U\n" :clock-in t :clock-resume t) - ("h" "Habit" entry (file "~/projects/notes/refile.org") - "* NEXT %?\n%U\n%a\nSCHEDULED: %(format-time-string \"<%Y-%m-%d %a .+1d/3d>\")\n:PROPERTIES:\n:STYLE: habit\n:REPEAT_TO_STATE: NEXT\n:END:\n") + ("J" "job" entry (file "~/projects/org-notes/refile.org") + "* TODO Apply for %a%? :job:\nSCHEDULED: %(format-time-string \"<%Y-%m-%d 17:00-17:30>\")\n%U\n%a\n" :clock-in t :clock-resume t) + ("h" "Habit" entry (file "~/projects/org-notes/refile.org") + "* NEXT %?\n%U\n%a\nSCHEDULED: %(format-time-string \"<%Y-%m-%d .+1d/3d>\")\n:PROPERTIES:\n:STYLE: habit\n:REPEAT_TO_STATE: NEXT\n:END:\n%a\n") ) ) @@ -137,7 +157,7 @@ (interactive) (save-excursion (beginning-of-line 0) - (org-remove-empty-drawer-at "LOGBOOK" (point)))) + (org-remove-empty-drawer-at (point)))) (defun my/org-add-id () (interactive) @@ -167,9 +187,9 @@ ; change the outline mode prefix from C-c @ to C-c C-2 (setq outline-minor-mode-prefix "C-c C-2") -(add-hook 'outline-minor-mode-hook - (lambda () (local-set-key (kbd "C-c C-2") - outline-mode-prefix-map))) +;(add-hook 'outline-minor-mode-hook +; (lambda () (local-set-key (kbd "C-c C-2") +; outline-mode-prefix-map))) (global-set-key (kbd " I") 'bh/punch-in) (global-set-key (kbd " O") 'bh/punch-out) @@ -249,7 +269,7 @@ -(add-hook 'org-clock-out-hook 'bh/remove-empty-drawer-on-clock-out 'append) +; (add-hook 'org-clock-out-hook 'bh/remove-empty-drawer-on-clock-out 'append) ; add ids on creation of nodes (add-hook 'org-capture-prepare-finalize-hook 'my/org-add-id) ; create function to create headlines in file. This comes from @@ -286,16 +306,16 @@ do not already have one." ; Allow refile to create parent tasks with confirmation (setq org-refile-allow-creating-parent-nodes (quote confirm)) -; Use IDO for both buffer and file completion and ido-everywhere to t -(setq org-completion-use-ido t) -(setq ido-everywhere t) -(setq ido-max-directory-size 100000) -(ido-mode (quote both)) -; Use the current window when visiting files and buffers with ido -(setq ido-default-file-method 'selected-window) -(setq ido-default-buffer-method 'selected-window) -; Use the current window for indirect buffer display -(setq org-indirect-buffer-display 'current-window) +; ; Use IDO for both buffer and file completion and ido-everywhere to t +; (setq org-completion-use-ido t) +; (setq ido-everywhere t) +; (setq ido-max-directory-size 100000) +; (ido-mode (quote both)) +; ; Use the current window when visiting files and buffers with ido +; (setq ido-default-file-method 'selected-window) +; (setq ido-default-buffer-method 'selected-window) +; ; Use the current window for indirect buffer display +; (setq org-indirect-buffer-display 'current-window) ;;;; Refile settings @@ -310,7 +330,7 @@ do not already have one." ;; from Mutt, and that it will shut down emacsclient once finished; ;; fallback to legacy behavior when not invoked via org-protocol. (require 'org-protocol) -(add-hook 'org-capture-mode-hook 'delete-other-windows) +; (add-hook 'org-capture-mode-hook 'delete-other-windows) (setq my-org-protocol-flag nil) (defadvice org-capture-finalize (after delete-frame-at-end activate) "Delete frame at remember finalization" @@ -363,7 +383,7 @@ Maildir, or by Message-ID." '((?b . "[[bib:%l][%l-bib]]") (?n . "[[notes:%l][%l-notes]]") (?c . "\\cite{%l}") - (?h . "*** %t\n:PROPERTIES:\n:Custom_ID: %l\n:END:\n[[papers:%l][%l paper]]"))) + (?h . "*** %t\n:PROPERTIES:\n:Custom_ID: %l\n:END:\n[[papers:%l][%l xoj]] [[papers-pdf:%l][pdf]]"))) )) (define-key org-mode-map (kbd "C-c )") 'reftex-citation) (define-key org-mode-map (kbd "C-c [") 'reftex-citation) @@ -383,6 +403,13 @@ Maildir, or by Message-ID." (format "%s %s" (substitute-in-file-name "$HOME/bin/bibtex_to_paper") bibtexkey))) (org-add-link-type "papers" 'open-research-paper) +(defun open-research-paper-pdf (bibtexkey) + "Open a paper pdf by bibtex key" + (interactive "bibtex key: ") + (shell-command + (format "%s -p evince %s" + (substitute-in-file-name "$HOME/bin/bibtex_to_paper") bibtexkey))) +(org-add-link-type "papers-pdf" 'open-research-paper-pdf) (add-to-list 'org-link-abbrev-alist '("notes" . @@ -390,8 +417,12 @@ Maildir, or by Message-ID." ; I pretty much always want hiearchical checkboxes (setq org-hierachical-checkbox-statistics nil) - -;; stolen from + +;; Add \begin{equation}\end{equation} templates to the org mode easy templates +(add-to-list 'org-structure-template-alist + '("E" "\\begin{equation}\n?\n\\end{equation}")) + + ;; stolen from ;; http://www-public.it-sudparis.eu/~berger_o/weblog/2012/03/23/how-to-manage-and-export-bibliographic-notesrefs-in-org-mode/ (defun my-rtcite-export-handler (path desc format) (message "my-rtcite-export-handler is called : path = %s, desc = %s, format = %s" path desc format) @@ -410,6 +441,8 @@ Maildir, or by Message-ID." (setq-default org-mobile-directory "/rzlab.ucr.edu:/sites/dav.donarmstrong.com/root/org/") +(when (string= system-name "rzlab.ucr.edu") + (setq-default org-mobile-directory "/sites/dav.donarmstrong.com/root/org/")) (setq-default org-directory "/home/don/org-mode/") (setq-default org-mobile-inbox-for-pull "/home/don/org-mode/from-mobile.org") @@ -468,6 +501,8 @@ Maildir, or by Message-ID." ("\\paragraph{%s}" . "\\paragraph*{%s}") ("\\subparagraph{%s}" . "\\subparagraph*{%s}"))) +(setq org-beamer-outline-frame-options "") +(require 'ox-beamer) (add-to-list 'org-latex-classes '("beamer" "\\documentclass[ignorenonframetext]{beamer} @@ -506,7 +541,7 @@ Maildir, or by Message-ID." ;; Default packages included in /every/ tex file, latex, pdflatex or xelatex (setq org-latex-default-packages-alist - '()) + '(("" "amsmath" t))) (setq org-latex-packages-alist '(("" "graphicx" t) ("" "fontspec" t) @@ -908,7 +943,7 @@ as the 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) +; (add-hook 'org-clock-out-hook 'bh/clock-out-maybe 'append) (require 'org-id) (defun bh/clock-in-task-by-id (id) @@ -935,7 +970,30 @@ A prefix arg forces clock in of the default 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) +; (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))