summaryrefslogtreecommitdiff
path: root/conf/om.el
blob: 333d553312e4589075b95dda5133c4cf0514c795 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
;;; om.el - org mode config
;; created 24 Nov 2011

;;;; org-mode
(setq org-log-done t)
(setq org-todo-keywords
      '((sequence "TODO" "STARTED" "|" "DONE" "NA")))

                                        ;(setq org-agenda-files (list "~/notes/tasks.org"))

;; next 6 lines merged from prelude-org
(global-set-key "\C-cl" 'org-store-link)
(global-set-key "\C-ca" 'org-agenda)
(global-set-key "\C-cb" 'org-iswitchb)
(setq org-log-done t)
(defun prelude-org-mode-defaults ()
  (electric-indent-mode -1))

;; allow for file to end in txt
(add-to-list 'auto-mode-alist '("\\.org.txt$" . org-mode))

;; set up capture
;; (setq org-default-notes-file (expand-file-name "~/notes/tasks.org"))
(setq org-capture-templates
      '(("c" "cal" entry (file+headline "~/notes/calendar.org" "misc")
         "* %?")
        ("t" "Todo" entry (file+headline "~/notes/tasks.org" "To file")
         "* TODO %?")
        ("m" "mail todo" entry (file+headline "~/notes/tasks.org" "mail")
         "* TODO %?\nSource: %u, %c\n%i")
        ("d" "mail date" entry (file+headline "~/notes/calendar.org" "mail")
         "* %?\nSource: %u, %c\n%i")))

;; for mutt capture
(require 'org-protocol)
;; ensure that emacsclient will show just the note to be edited when invoked
;; from Mutt, and that it will shut down emacsclient once finished;
;; fallback to legacy behavior when not invoked via org-protocol.
(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 capture finalization"
  (progn (if my-org-protocol-flag (delete-frame))
         (setq my-org-protocol-flag nil)))
(defadvice org-capture-kill (after delete-frame-at-end activate)
  "Delete frame at capture abort"
  (progn (if my-org-protocol-flag (delete-frame))
         (setq my-org-protocol-flag nil)))
(defadvice org-protocol-capture (before set-org-protocol-flag activate)
  (setq my-org-protocol-flag t))

(custom-set-variables
 '(org-agenda-files (quote ("~/notes/calendar.org" "~/notes/tasks.org")))
 '(org-default-notes-file "~/notes/tasks.org")
 '(org-agenda-ndays 7)
;; '(org-deadline-warning-days 14)
 '(org-agenda-show-all-dates t)
 '(org-agenda-skip-deadline-if-done t)
 '(org-agenda-skip-scheduled-if-done t)
 '(org-agenda-start-on-weekday nil)
 '(org-reverse-note-order t)
 '(org-fast-tag-selection-single-key (quote expert))
 '(org-agenda-custom-commands
   (quote (("d" todo "DONE" nil)
           ("s" todo "STARTED" nil)
           ("A" agenda ""
            ((org-agenda-skip-function
              (lambda nil
                (org-agenda-skip-entry-if (quote notregexp) "\\=.*\\[#A\\]")))
             (org-agenda-ndays 1)
             (org-agenda-overriding-header "Today's Priority #A tasks: ")))
           ("u" alltodo ""
            ((org-agenda-skip-function
              (lambda nil
                (org-agenda-skip-entry-if (quote scheduled) (quote deadline)
                                          (quote regexp) "\n]+>")))
             (org-agenda-overriding-header "Unscheduled TODO entries: ")))))))

;; other customization in prelude's org module

;; have font colors in code blocks
(setq org-src-fontify-natively t)

;; from http://doc.norang.ca/org-mode.html
;; this should prevent blank lines from being inserted
;; before headers
(setq org-blank-before-new-entry (quote ((heading)
                                         (plain-list-item . auto))))
(setq org-cycle-separator-lines 1)

;; for evil setup
;; put here because wasn't loading when in evil config file
(eval-after-load "org"
  '(progn
     (defun always-insert-item ()
       (interactive)
       (if (not (org-in-item-p))
           (insert "\n- ")
         (org-insert-item)))

     (evil-define-key 'normal org-mode-map "O" (lambda ()
                                                 (interactive)
                                                 (end-of-line)
                                                 (org-insert-heading t)
                                                 (evil-append nil)
                                                 ))

     (evil-define-key 'normal org-mode-map "o" (lambda ()
                                                 (interactive)
                                                 (end-of-line)
                                                 (always-insert-item)
                                                 (evil-append nil)
                                                 ))
                                        ; mark a TODO item as DONE
                                        ; s - status
     (evil-define-key 'normal org-mode-map ",s" 'org-todo)
                                        ;change bullet style
     (evil-define-key 'normal org-mode-map "-" 'org-cycle-list-bullet)
     ;; (evil-define-key 'normal org-mode-map "L" 'org-shiftright)
     ;; (evil-define-key 'normal org-mode-map "H" 'org-shiftleft)
     ;; (evil-define-key 'normal org-mode-map "K" 'org-shiftup)
     ;; (evil-define-key 'normal org-mode-map "J" 'org-shiftdown)
     (evil-define-key 'normal org-mode-map (kbd "M-l") 'org-metaright)
     (evil-define-key 'normal org-mode-map (kbd "M-h") 'org-metaleft)
     (evil-define-key 'normal org-mode-map (kbd "M-k") 'org-metaup)
     (evil-define-key 'normal org-mode-map (kbd "M-j") 'org-metadown)
     (evil-define-key 'normal org-mode-map (kbd "M-L") 'org-shiftmetaright)
     (evil-define-key 'normal org-mode-map (kbd "M-H") 'org-shiftmetaleft)
     (evil-define-key 'normal org-mode-map (kbd "M-K") 'org-shiftmetaup)
     (evil-define-key 'normal org-mode-map (kbd "M-J") 'org-shiftmetadown)

     ;; ;;; org agenda -- leave in emacs mode but add j & k
     ;;      (define-key org-agenda-mode-map "j" 'evil-next-line)
     ;;      (define-key org-agenda-mode-map "k" 'evil-previous-line))
     ))

;; from http://doc.norang.ca/org-mode.html
(setq org-refile-targets (quote ((nil :maxlevel . 5)
                                 (org-agenda-files :maxlevel . 5))))

;; Stop using paths for refile targets - we file directly with IDO
(setq org-refile-use-outline-path nil)

;; Targets complete directly with IDO
(setq org-outline-path-complete-in-steps nil)

;; 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))

;;;; Refile settings
;; Exclude DONE state tasks from refile targets
(defun bh/verify-refile-target ()
  "Exclude todo keywords with a done state from refile targets"
  (not (member (nth 2 (org-heading-components)) org-done-keywords)))

(setq org-refile-target-verify-function 'bh/verify-refile-target)

;; set up babel languages
(org-babel-do-load-languages
 'org-babel-load-languages
 '( (perl . t)
    (sh . t)
    (python . t)
    (R . t)
    (emacs-lisp . t)
    (latex . t)
    (ditaa . t)
    ))
;; don't ask for confirmation before running code
(setq org-confirm-babel-evaluate nil)

;; babel minted latex export
;; modified from
;; http://orgmode.org/worg/org-tutorials/org-latex-export.html
(setq org-export-latex-listings 'minted)
(setq org-export-latex-custom-lang-environments
      '(
        (R "rcode")
        (sh "shcode")
        (python "pythoncode")
        ))
;; (setq org-export-latex-custom-lang-environments
;;       '(
;;         (emacs-lisp "common-lispcode")
;;         ))
;; (setq org-export-latex-minted-options
;;       '(("frame" "lines")
;;         ("fontsize" "\\scriptsize")
;;         ("linenos" "")))
(setq org-latex-to-pdf-process
      '("pdflatex -shell-escape -interaction nonstopmode -output-directory %o %f"
        "pdflatex -shell-escape -interaction nonstopmode -output-directory %o %f"
        "pdflatex -shell-escape -interaction nonstopmode -output-directory %o %f"))

;; ditaa giving error
;; could not find elpa/contrib/scripts/ditaa.jar
(setq org-ditaa-jar-path "/usr/share/ditaa/ditaa.jar")