changelog shortlog graph tags branches changeset files file revisions raw help

Mercurial > core / annotate emacs/default.el

changeset 215: 0d11384aae81
parent: 0d46ef787334
child: 97ad564cd68d
author: Richard Westhaver <ellis@rwest.io>
date: Sun, 25 Feb 2024 20:19:46 -0500
permissions: -rw-r--r--
description: rt tests
21
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
1
 ;;; default.el --- default config -*- lexical-binding: t -*-
27
1142c97f92ab emacs config
ellis <ellis@rwest.io>
parents: 26
diff changeset
2
 
1142c97f92ab emacs config
ellis <ellis@rwest.io>
parents: 26
diff changeset
3
 ;;; Code:
30
bb274c6c126a emacs defaults and keys
ellis <ellis@rwest.io>
parents: 29
diff changeset
4
 ;;; Settings
21
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
5
 (put 'upcase-region 'disabled nil)
30
bb274c6c126a emacs defaults and keys
ellis <ellis@rwest.io>
parents: 29
diff changeset
6
 (put 'list-threads 'disabled nil)
bb274c6c126a emacs defaults and keys
ellis <ellis@rwest.io>
parents: 29
diff changeset
7
 (put 'list-timers 'disabled nil)
34
882a5c1e7b9f emacs config
ellis <ellis@rwest.io>
parents: 33
diff changeset
8
 (setq show-paren-context-when-offscreen 'overlay)
882a5c1e7b9f emacs config
ellis <ellis@rwest.io>
parents: 33
diff changeset
9
 (setopt
882a5c1e7b9f emacs config
ellis <ellis@rwest.io>
parents: 33
diff changeset
10
  ;; tabs = bad
882a5c1e7b9f emacs config
ellis <ellis@rwest.io>
parents: 33
diff changeset
11
  indent-tabs-mode nil
31
f28229bc9b58 emacs defaults
ellis <ellis@rwest.io>
parents: 30
diff changeset
12
  make-backup-files nil
f28229bc9b58 emacs defaults
ellis <ellis@rwest.io>
parents: 30
diff changeset
13
  auto-save-list-file-prefix (expand-file-name "auto-save/." user-emacs-directory)
f28229bc9b58 emacs defaults
ellis <ellis@rwest.io>
parents: 30
diff changeset
14
  tramp-auto-save-directory (expand-file-name "auto-save/tramp/" user-emacs-directory)
f28229bc9b58 emacs defaults
ellis <ellis@rwest.io>
parents: 30
diff changeset
15
  dired-free-space nil
34
882a5c1e7b9f emacs config
ellis <ellis@rwest.io>
parents: 33
diff changeset
16
  mml-attach-file-at-the-end t
882a5c1e7b9f emacs config
ellis <ellis@rwest.io>
parents: 33
diff changeset
17
  dired-mouse-drag-files t
31
f28229bc9b58 emacs defaults
ellis <ellis@rwest.io>
parents: 30
diff changeset
18
  confirm-kill-emacs nil
f28229bc9b58 emacs defaults
ellis <ellis@rwest.io>
parents: 30
diff changeset
19
  confirm-kill-processes nil
f28229bc9b58 emacs defaults
ellis <ellis@rwest.io>
parents: 30
diff changeset
20
  use-short-answers t
f28229bc9b58 emacs defaults
ellis <ellis@rwest.io>
parents: 30
diff changeset
21
  display-time-format "%Y-%m-%d %H:%M"
f28229bc9b58 emacs defaults
ellis <ellis@rwest.io>
parents: 30
diff changeset
22
  ring-bell-function 'ignore
f28229bc9b58 emacs defaults
ellis <ellis@rwest.io>
parents: 30
diff changeset
23
  completion-ignore-case t
33
e3b0ec661dfa added inbox.el, more emacs config
ellis <ellis@rwest.io>
parents: 32
diff changeset
24
  ;; NOTE 2023-11-04: you need to add the following lines to ~/.gnupg/gpg-agent.conf:
e3b0ec661dfa added inbox.el, more emacs config
ellis <ellis@rwest.io>
parents: 32
diff changeset
25
  ;; allow-emacs-pinentry
e3b0ec661dfa added inbox.el, more emacs config
ellis <ellis@rwest.io>
parents: 32
diff changeset
26
  ;; allow-loopback-pinentry
41
2b878ae73a84 emacs, skel, krypt
ellis <ellis@rwest.io>
parents: 38
diff changeset
27
  epg-pinentry-mode 'loopback
31
f28229bc9b58 emacs defaults
ellis <ellis@rwest.io>
parents: 30
diff changeset
28
  shr-use-colors nil
f28229bc9b58 emacs defaults
ellis <ellis@rwest.io>
parents: 30
diff changeset
29
  shr-use-fonts nil
f28229bc9b58 emacs defaults
ellis <ellis@rwest.io>
parents: 30
diff changeset
30
  shr-max-image-proportion 0.6
f28229bc9b58 emacs defaults
ellis <ellis@rwest.io>
parents: 30
diff changeset
31
  shr-image-animate nil
f28229bc9b58 emacs defaults
ellis <ellis@rwest.io>
parents: 30
diff changeset
32
  shr-discard-aria-hidden t
f28229bc9b58 emacs defaults
ellis <ellis@rwest.io>
parents: 30
diff changeset
33
  bookmark-default-file (expand-file-name "bookmarks" user-emacs-directory)
f28229bc9b58 emacs defaults
ellis <ellis@rwest.io>
parents: 30
diff changeset
34
  project-list-file (expand-file-name "projects" user-emacs-directory)
148
0d9d5cd46af5 added net/stream.rs, change def-ts-lang to macrolet form
ellis <ellis@rwest.io>
parents: 126
diff changeset
35
  project-mode-line t
0d9d5cd46af5 added net/stream.rs, change def-ts-lang to macrolet form
ellis <ellis@rwest.io>
parents: 126
diff changeset
36
  project-file-history-behavior 'relativize
31
f28229bc9b58 emacs defaults
ellis <ellis@rwest.io>
parents: 30
diff changeset
37
  emms-directory (expand-file-name "emms" user-emacs-directory)
f28229bc9b58 emacs defaults
ellis <ellis@rwest.io>
parents: 30
diff changeset
38
  gnus-cache-directory (expand-file-name "gnus" user-emacs-directory)
f28229bc9b58 emacs defaults
ellis <ellis@rwest.io>
parents: 30
diff changeset
39
  url-cache-directory (expand-file-name "url" user-emacs-directory)
f28229bc9b58 emacs defaults
ellis <ellis@rwest.io>
parents: 30
diff changeset
40
  tab-always-indent 'complete
f28229bc9b58 emacs defaults
ellis <ellis@rwest.io>
parents: 30
diff changeset
41
  shr-cookie-policy nil
34
882a5c1e7b9f emacs config
ellis <ellis@rwest.io>
parents: 33
diff changeset
42
  ;; NOTE 2023-11-04: EXPERIMENTAL
148
0d9d5cd46af5 added net/stream.rs, change def-ts-lang to macrolet form
ellis <ellis@rwest.io>
parents: 126
diff changeset
43
  ediff-floating-control-frame t
0d9d5cd46af5 added net/stream.rs, change def-ts-lang to macrolet form
ellis <ellis@rwest.io>
parents: 126
diff changeset
44
  register-use-preview nil
34
882a5c1e7b9f emacs config
ellis <ellis@rwest.io>
parents: 33
diff changeset
45
  shr-use-xwidgets-for-media t
31
f28229bc9b58 emacs defaults
ellis <ellis@rwest.io>
parents: 30
diff changeset
46
  browse-url-browser-function 'browse-url-default-browser
34
882a5c1e7b9f emacs config
ellis <ellis@rwest.io>
parents: 33
diff changeset
47
  eww-auto-rename-buffer 'title
31
f28229bc9b58 emacs defaults
ellis <ellis@rwest.io>
parents: 30
diff changeset
48
  eww-search-prefix "https://duckduckgo.com/html?q="
34
882a5c1e7b9f emacs config
ellis <ellis@rwest.io>
parents: 33
diff changeset
49
  view-read-only t)
27
1142c97f92ab emacs config
ellis <ellis@rwest.io>
parents: 26
diff changeset
50
 
30
bb274c6c126a emacs defaults and keys
ellis <ellis@rwest.io>
parents: 29
diff changeset
51
 ;;; Variables
33
e3b0ec661dfa added inbox.el, more emacs config
ellis <ellis@rwest.io>
parents: 32
diff changeset
52
 (defvar user-custom-file (expand-file-name (format "%s.el" user-login-name) user-emacs-directory))
32
62d07dc38929 user directories
ellis <ellis@rwest.io>
parents: 31
diff changeset
53
 (defvar user-home-directory (expand-file-name "~"))
62d07dc38929 user directories
ellis <ellis@rwest.io>
parents: 31
diff changeset
54
 (defvar user-lab-directory (expand-file-name "lab" user-home-directory))
62d07dc38929 user directories
ellis <ellis@rwest.io>
parents: 31
diff changeset
55
 (defvar user-stash-directory (expand-file-name "stash" user-home-directory))
62d07dc38929 user directories
ellis <ellis@rwest.io>
parents: 31
diff changeset
56
 (defvar user-store-directory (expand-file-name "store" user-home-directory))
62d07dc38929 user directories
ellis <ellis@rwest.io>
parents: 31
diff changeset
57
 (defvar user-shed-directory (expand-file-name "shed" user-home-directory))
62d07dc38929 user directories
ellis <ellis@rwest.io>
parents: 31
diff changeset
58
 (defvar user-mail-directory (expand-file-name "mail" user-home-directory))
62d07dc38929 user directories
ellis <ellis@rwest.io>
parents: 31
diff changeset
59
 (defvar user-media-directory (expand-file-name "media" user-home-directory))
62d07dc38929 user directories
ellis <ellis@rwest.io>
parents: 31
diff changeset
60
 
41
2b878ae73a84 emacs, skel, krypt
ellis <ellis@rwest.io>
parents: 38
diff changeset
61
 (defvar default-theme 'leuven-dark)
2b878ae73a84 emacs, skel, krypt
ellis <ellis@rwest.io>
parents: 38
diff changeset
62
 (defvar company-source-directory (join-paths user-lab-directory "comp"))
2b878ae73a84 emacs, skel, krypt
ellis <ellis@rwest.io>
parents: 38
diff changeset
63
 (defvar company-domain "compiler.company")
2b878ae73a84 emacs, skel, krypt
ellis <ellis@rwest.io>
parents: 38
diff changeset
64
 (defvar company-name "The Compiler Company, LLC")
2b878ae73a84 emacs, skel, krypt
ellis <ellis@rwest.io>
parents: 38
diff changeset
65
 (defvar company-vc-domain "vc.compiler.company")
2b878ae73a84 emacs, skel, krypt
ellis <ellis@rwest.io>
parents: 38
diff changeset
66
 (defvar company-home "the.compiler.company")
2b878ae73a84 emacs, skel, krypt
ellis <ellis@rwest.io>
parents: 38
diff changeset
67
 
30
bb274c6c126a emacs defaults and keys
ellis <ellis@rwest.io>
parents: 29
diff changeset
68
 ;;; Theme
34
882a5c1e7b9f emacs config
ellis <ellis@rwest.io>
parents: 33
diff changeset
69
 (defun load-default-theme () (interactive) (load-theme default-theme))
882a5c1e7b9f emacs config
ellis <ellis@rwest.io>
parents: 33
diff changeset
70
 
882a5c1e7b9f emacs config
ellis <ellis@rwest.io>
parents: 33
diff changeset
71
 (add-hook 'after-init-hook #'load-default-theme)
27
1142c97f92ab emacs config
ellis <ellis@rwest.io>
parents: 26
diff changeset
72
 
1142c97f92ab emacs config
ellis <ellis@rwest.io>
parents: 26
diff changeset
73
 ;;; Packages
1142c97f92ab emacs config
ellis <ellis@rwest.io>
parents: 26
diff changeset
74
 (with-eval-after-load 'package
34
882a5c1e7b9f emacs config
ellis <ellis@rwest.io>
parents: 33
diff changeset
75
   (setq package-archives
882a5c1e7b9f emacs config
ellis <ellis@rwest.io>
parents: 33
diff changeset
76
     '(("gnu" . "https://elpa.gnu.org/packages/")
882a5c1e7b9f emacs config
ellis <ellis@rwest.io>
parents: 33
diff changeset
77
       ("nongnu" . "https://elpa.nongnu.org/nongnu/")
882a5c1e7b9f emacs config
ellis <ellis@rwest.io>
parents: 33
diff changeset
78
       ("melpa" . "https://melpa.org/packages/"))
882a5c1e7b9f emacs config
ellis <ellis@rwest.io>
parents: 33
diff changeset
79
     use-package-always-ensure t
882a5c1e7b9f emacs config
ellis <ellis@rwest.io>
parents: 33
diff changeset
80
     use-package-expand-minimally t)
28
bc174808bc53 emacs and rust/lib/tenex
ellis <ellis@rwest.io>
parents: 27
diff changeset
81
   (add-packages
187
a962648ad6d5 add dir-locals and eglot-x
Richard Westhaver <ellis@rwest.io>
parents: 182
diff changeset
82
    eglot-x ;; LSP extensions
33
e3b0ec661dfa added inbox.el, more emacs config
ellis <ellis@rwest.io>
parents: 32
diff changeset
83
    org-web-tools ;; web parsing
e3b0ec661dfa added inbox.el, more emacs config
ellis <ellis@rwest.io>
parents: 32
diff changeset
84
    citeproc ;; citations
e3b0ec661dfa added inbox.el, more emacs config
ellis <ellis@rwest.io>
parents: 32
diff changeset
85
    all-the-icons all-the-icons-dired all-the-icons-ibuffer ;; icons
214
0d46ef787334 db updates
Richard Westhaver <ellis@rwest.io>
parents: 206
diff changeset
86
    hide-mode-line ;; ui
44
cc85ab013035 added slime-cape, config stuff
ellis <ellis@rwest.io>
parents: 41
diff changeset
87
    corfu orderless cape ;; completion
33
e3b0ec661dfa added inbox.el, more emacs config
ellis <ellis@rwest.io>
parents: 32
diff changeset
88
    slime ;; common lisp server
149
2d1fe1d7b738 ffi update to support darwin, smh
ellis <ellis@rwest.io>
parents: 148
diff changeset
89
    bbdb
215
0d11384aae81 rt tests
Richard Westhaver <ellis@rwest.io>
parents: 214
diff changeset
90
    ;; slime-company
33
e3b0ec661dfa added inbox.el, more emacs config
ellis <ellis@rwest.io>
parents: 32
diff changeset
91
    which-key ;; key helper
e3b0ec661dfa added inbox.el, more emacs config
ellis <ellis@rwest.io>
parents: 32
diff changeset
92
    ;; langs
e3b0ec661dfa added inbox.el, more emacs config
ellis <ellis@rwest.io>
parents: 32
diff changeset
93
    rust-mode)
28
bc174808bc53 emacs and rust/lib/tenex
ellis <ellis@rwest.io>
parents: 27
diff changeset
94
   (package-install-selected-packages t))
26
51a8370766f7 emacs config
ellis <ellis@rwest.io>
parents: 24
diff changeset
95
 
45
ad67a57b0134 rocksdb bindings and emacs config
ellis <ellis@rwest.io>
parents: 44
diff changeset
96
 ;;; Env
62
e310b68526b9 elisp and lisp
ellis <ellis@rwest.io>
parents: 60
diff changeset
97
 (require 'exec-path-from-shell)
e310b68526b9 elisp and lisp
ellis <ellis@rwest.io>
parents: 60
diff changeset
98
 (exec-path-from-shell-copy-env "SSH_AGENT_PID")
e310b68526b9 elisp and lisp
ellis <ellis@rwest.io>
parents: 60
diff changeset
99
 (exec-path-from-shell-copy-env "SSH_AUTH_SOCK")
e310b68526b9 elisp and lisp
ellis <ellis@rwest.io>
parents: 60
diff changeset
100
 (exec-path-from-shell-copy-env "PATH")
45
ad67a57b0134 rocksdb bindings and emacs config
ellis <ellis@rwest.io>
parents: 44
diff changeset
101
 (add-to-list 'exec-path (expand-file-name "~/.cargo/bin/"))
ad67a57b0134 rocksdb bindings and emacs config
ellis <ellis@rwest.io>
parents: 44
diff changeset
102
 (add-to-list 'exec-path (expand-file-name "~/.local/bin/"))
ad67a57b0134 rocksdb bindings and emacs config
ellis <ellis@rwest.io>
parents: 44
diff changeset
103
 (add-to-list 'exec-path "/bin/")
ad67a57b0134 rocksdb bindings and emacs config
ellis <ellis@rwest.io>
parents: 44
diff changeset
104
 (add-to-list 'exec-path "/usr/local/sbin/")
ad67a57b0134 rocksdb bindings and emacs config
ellis <ellis@rwest.io>
parents: 44
diff changeset
105
 
33
e3b0ec661dfa added inbox.el, more emacs config
ellis <ellis@rwest.io>
parents: 32
diff changeset
106
 ;;; Completions
e3b0ec661dfa added inbox.el, more emacs config
ellis <ellis@rwest.io>
parents: 32
diff changeset
107
 (use-package corfu
44
cc85ab013035 added slime-cape, config stuff
ellis <ellis@rwest.io>
parents: 41
diff changeset
108
   :init (global-corfu-mode))
cc85ab013035 added slime-cape, config stuff
ellis <ellis@rwest.io>
parents: 41
diff changeset
109
 
cc85ab013035 added slime-cape, config stuff
ellis <ellis@rwest.io>
parents: 41
diff changeset
110
 (use-package cape
cc85ab013035 added slime-cape, config stuff
ellis <ellis@rwest.io>
parents: 41
diff changeset
111
   ;; Bind dedicated completion commands
cc85ab013035 added slime-cape, config stuff
ellis <ellis@rwest.io>
parents: 41
diff changeset
112
   ;; Alternative prefix keys: C-c p, M-p, M-+, ...
cc85ab013035 added slime-cape, config stuff
ellis <ellis@rwest.io>
parents: 41
diff changeset
113
   :bind (("C-c p p" . completion-at-point) ;; capf
cc85ab013035 added slime-cape, config stuff
ellis <ellis@rwest.io>
parents: 41
diff changeset
114
          ("C-c p t" . complete-tag)        ;; etags
cc85ab013035 added slime-cape, config stuff
ellis <ellis@rwest.io>
parents: 41
diff changeset
115
          ("C-c p d" . cape-dabbrev)        ;; or dabbrev-completion
cc85ab013035 added slime-cape, config stuff
ellis <ellis@rwest.io>
parents: 41
diff changeset
116
          ("C-c p h" . cape-history)
cc85ab013035 added slime-cape, config stuff
ellis <ellis@rwest.io>
parents: 41
diff changeset
117
          ("C-c p f" . cape-file)
cc85ab013035 added slime-cape, config stuff
ellis <ellis@rwest.io>
parents: 41
diff changeset
118
          ("C-c p k" . cape-keyword)
cc85ab013035 added slime-cape, config stuff
ellis <ellis@rwest.io>
parents: 41
diff changeset
119
          ("C-c p s" . cape-elisp-symbol)
cc85ab013035 added slime-cape, config stuff
ellis <ellis@rwest.io>
parents: 41
diff changeset
120
          ("C-c p e" . cape-elisp-block)
cc85ab013035 added slime-cape, config stuff
ellis <ellis@rwest.io>
parents: 41
diff changeset
121
          ("C-c p a" . cape-abbrev)
cc85ab013035 added slime-cape, config stuff
ellis <ellis@rwest.io>
parents: 41
diff changeset
122
          ("C-c p l" . cape-line)
cc85ab013035 added slime-cape, config stuff
ellis <ellis@rwest.io>
parents: 41
diff changeset
123
          ("C-c p w" . cape-dict)
cc85ab013035 added slime-cape, config stuff
ellis <ellis@rwest.io>
parents: 41
diff changeset
124
          ("C-c p :" . cape-emoji)
cc85ab013035 added slime-cape, config stuff
ellis <ellis@rwest.io>
parents: 41
diff changeset
125
          ("C-c p \\" . cape-tex)
cc85ab013035 added slime-cape, config stuff
ellis <ellis@rwest.io>
parents: 41
diff changeset
126
          ("C-c p _" . cape-tex)
cc85ab013035 added slime-cape, config stuff
ellis <ellis@rwest.io>
parents: 41
diff changeset
127
          ("C-c p ^" . cape-tex)
cc85ab013035 added slime-cape, config stuff
ellis <ellis@rwest.io>
parents: 41
diff changeset
128
          ("C-c p &" . cape-sgml)
cc85ab013035 added slime-cape, config stuff
ellis <ellis@rwest.io>
parents: 41
diff changeset
129
          ("C-c p r" . cape-rfc1345))
cc85ab013035 added slime-cape, config stuff
ellis <ellis@rwest.io>
parents: 41
diff changeset
130
   :init
cc85ab013035 added slime-cape, config stuff
ellis <ellis@rwest.io>
parents: 41
diff changeset
131
   ;; Add to the global default value of `completion-at-point-functions' which is
cc85ab013035 added slime-cape, config stuff
ellis <ellis@rwest.io>
parents: 41
diff changeset
132
   ;; used by `completion-at-point'.  The order of the functions matters, the
cc85ab013035 added slime-cape, config stuff
ellis <ellis@rwest.io>
parents: 41
diff changeset
133
   ;; first function returning a result wins.  Note that the list of buffer-local
cc85ab013035 added slime-cape, config stuff
ellis <ellis@rwest.io>
parents: 41
diff changeset
134
   ;; completion functions takes precedence over the global list.
215
0d11384aae81 rt tests
Richard Westhaver <ellis@rwest.io>
parents: 214
diff changeset
135
   ;; (add-to-list 'completion-at-point-functions #'cape-dabbrev)
0d11384aae81 rt tests
Richard Westhaver <ellis@rwest.io>
parents: 214
diff changeset
136
   ;; (add-to-list 'completion-at-point-functions #'cape-abbrev)
59
ce1a5c531abf el cleanup
ellis <ellis@rwest.io>
parents: 58
diff changeset
137
   ;; (add-to-list 'completion-at-point-functions #'cape-history)
60
ee94191a3fb0 add zstd, todos
ellis <ellis@rwest.io>
parents: 59
diff changeset
138
   ;; (add-to-list 'completion-at-point-functions #'cape-keyword)
215
0d11384aae81 rt tests
Richard Westhaver <ellis@rwest.io>
parents: 214
diff changeset
139
   ;; (add-to-list 'completion-at-point-functions #'cape-file)
59
ce1a5c531abf el cleanup
ellis <ellis@rwest.io>
parents: 58
diff changeset
140
   ;; (add-to-list 'completion-at-point-functions #'cape-line)
ce1a5c531abf el cleanup
ellis <ellis@rwest.io>
parents: 58
diff changeset
141
   ;; (add-to-list 'completion-at-point-functions #'cape-elisp-block)
60
ee94191a3fb0 add zstd, todos
ellis <ellis@rwest.io>
parents: 59
diff changeset
142
   ;; (add-to-list 'completion-at-point-functions #'cape-tex)
59
ce1a5c531abf el cleanup
ellis <ellis@rwest.io>
parents: 58
diff changeset
143
   ;; (add-to-list 'completion-at-point-functions #'cape-sgml)
ce1a5c531abf el cleanup
ellis <ellis@rwest.io>
parents: 58
diff changeset
144
   ;; (add-to-list 'completion-at-point-functions #'cape-rfc1345)
ce1a5c531abf el cleanup
ellis <ellis@rwest.io>
parents: 58
diff changeset
145
   ;; (add-to-list 'completion-at-point-functions #'cape-dict)
ce1a5c531abf el cleanup
ellis <ellis@rwest.io>
parents: 58
diff changeset
146
   ;; (add-to-list 'completion-at-point-functions #'cape-elisp-symbol)
ce1a5c531abf el cleanup
ellis <ellis@rwest.io>
parents: 58
diff changeset
147
   ;; (add-to-list 'completion-at-point-functions #'cape-emoji)
ce1a5c531abf el cleanup
ellis <ellis@rwest.io>
parents: 58
diff changeset
148
   )
33
e3b0ec661dfa added inbox.el, more emacs config
ellis <ellis@rwest.io>
parents: 32
diff changeset
149
 
e3b0ec661dfa added inbox.el, more emacs config
ellis <ellis@rwest.io>
parents: 32
diff changeset
150
 (use-package orderless
34
882a5c1e7b9f emacs config
ellis <ellis@rwest.io>
parents: 33
diff changeset
151
   :custom
215
0d11384aae81 rt tests
Richard Westhaver <ellis@rwest.io>
parents: 214
diff changeset
152
   (completion-styles '(orderless basic partial-completion shorthand flex))
33
e3b0ec661dfa added inbox.el, more emacs config
ellis <ellis@rwest.io>
parents: 32
diff changeset
153
   (completion-category-overrides '((file (styles basic partial-completion)))))
e3b0ec661dfa added inbox.el, more emacs config
ellis <ellis@rwest.io>
parents: 32
diff changeset
154
 
30
bb274c6c126a emacs defaults and keys
ellis <ellis@rwest.io>
parents: 29
diff changeset
155
 ;;; Desktop
34
882a5c1e7b9f emacs config
ellis <ellis@rwest.io>
parents: 33
diff changeset
156
 (setopt desktop-dirname (expand-file-name "sessions" user-emacs-directory))
33
e3b0ec661dfa added inbox.el, more emacs config
ellis <ellis@rwest.io>
parents: 32
diff changeset
157
 
30
bb274c6c126a emacs defaults and keys
ellis <ellis@rwest.io>
parents: 29
diff changeset
158
 ;;; Multisession
bb274c6c126a emacs defaults and keys
ellis <ellis@rwest.io>
parents: 29
diff changeset
159
 (setq multisession-storage 'sqlite)
bb274c6c126a emacs defaults and keys
ellis <ellis@rwest.io>
parents: 29
diff changeset
160
 
148
0d9d5cd46af5 added net/stream.rs, change def-ts-lang to macrolet form
ellis <ellis@rwest.io>
parents: 126
diff changeset
161
 ;;; Kill Ring
0d9d5cd46af5 added net/stream.rs, change def-ts-lang to macrolet form
ellis <ellis@rwest.io>
parents: 126
diff changeset
162
 (kill-ring-deindent-mode)
0d9d5cd46af5 added net/stream.rs, change def-ts-lang to macrolet form
ellis <ellis@rwest.io>
parents: 126
diff changeset
163
 
21
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
164
 ;;; VC
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
165
 ;; use rhg, fallback to hg. see hgrc
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
166
 (if (file-exists-p "~/.local/bin/rhg")
34
882a5c1e7b9f emacs config
ellis <ellis@rwest.io>
parents: 33
diff changeset
167
     (setq hg-binary "~/.local/bin/rhg"))
21
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
168
 
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
169
 ;;; Dired
26
51a8370766f7 emacs config
ellis <ellis@rwest.io>
parents: 24
diff changeset
170
 
21
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
171
 ;;; Lisp
26
51a8370766f7 emacs config
ellis <ellis@rwest.io>
parents: 24
diff changeset
172
 (use-package lisp-mode
51a8370766f7 emacs config
ellis <ellis@rwest.io>
parents: 24
diff changeset
173
   :ensure nil
33
e3b0ec661dfa added inbox.el, more emacs config
ellis <ellis@rwest.io>
parents: 32
diff changeset
174
   :custom
126
d111e98f7c18 back to organ and skel :)
ellis <ellis@rwest.io>
parents: 96
diff changeset
175
   inferior-lisp-program "sbcl --dynamic-space-size=8G"
33
e3b0ec661dfa added inbox.el, more emacs config
ellis <ellis@rwest.io>
parents: 32
diff changeset
176
   scheme-program-name "gsi"
e3b0ec661dfa added inbox.el, more emacs config
ellis <ellis@rwest.io>
parents: 32
diff changeset
177
   guile-program "guile"
e3b0ec661dfa added inbox.el, more emacs config
ellis <ellis@rwest.io>
parents: 32
diff changeset
178
   cmulisp-program "lisp"
e3b0ec661dfa added inbox.el, more emacs config
ellis <ellis@rwest.io>
parents: 32
diff changeset
179
   scsh-program "scsh")
26
51a8370766f7 emacs config
ellis <ellis@rwest.io>
parents: 24
diff changeset
180
 
51a8370766f7 emacs config
ellis <ellis@rwest.io>
parents: 24
diff changeset
181
 (use-package slime
44
cc85ab013035 added slime-cape, config stuff
ellis <ellis@rwest.io>
parents: 41
diff changeset
182
   :ensure t
26
51a8370766f7 emacs config
ellis <ellis@rwest.io>
parents: 24
diff changeset
183
   :config
215
0d11384aae81 rt tests
Richard Westhaver <ellis@rwest.io>
parents: 214
diff changeset
184
   (require 'slime-autoloads)
0d11384aae81 rt tests
Richard Westhaver <ellis@rwest.io>
parents: 214
diff changeset
185
   (setq slime-contribs '(slime-fancy
0d11384aae81 rt tests
Richard Westhaver <ellis@rwest.io>
parents: 214
diff changeset
186
                          slime-quicklisp
0d11384aae81 rt tests
Richard Westhaver <ellis@rwest.io>
parents: 214
diff changeset
187
                          slime-hyperdoc
0d11384aae81 rt tests
Richard Westhaver <ellis@rwest.io>
parents: 214
diff changeset
188
                          slime-listener-hooks
0d11384aae81 rt tests
Richard Westhaver <ellis@rwest.io>
parents: 214
diff changeset
189
                          slime-enclosing-context
0d11384aae81 rt tests
Richard Westhaver <ellis@rwest.io>
parents: 214
diff changeset
190
                          slime-media
0d11384aae81 rt tests
Richard Westhaver <ellis@rwest.io>
parents: 214
diff changeset
191
                          slime-mrepl
0d11384aae81 rt tests
Richard Westhaver <ellis@rwest.io>
parents: 214
diff changeset
192
                          slime-sbcl-exts
0d11384aae81 rt tests
Richard Westhaver <ellis@rwest.io>
parents: 214
diff changeset
193
                          ;; slime-snapshot
0d11384aae81 rt tests
Richard Westhaver <ellis@rwest.io>
parents: 214
diff changeset
194
                          slime-sprof
0d11384aae81 rt tests
Richard Westhaver <ellis@rwest.io>
parents: 214
diff changeset
195
                          slime-tramp
0d11384aae81 rt tests
Richard Westhaver <ellis@rwest.io>
parents: 214
diff changeset
196
                          ;; slime-typeout-frame
0d11384aae81 rt tests
Richard Westhaver <ellis@rwest.io>
parents: 214
diff changeset
197
                          slime-xref-browser
0d11384aae81 rt tests
Richard Westhaver <ellis@rwest.io>
parents: 214
diff changeset
198
                          ;; slime-highlight-edits
0d11384aae81 rt tests
Richard Westhaver <ellis@rwest.io>
parents: 214
diff changeset
199
                          slime-asdf))
53
daad2b8bb63f init nlp
ellis <ellis@rwest.io>
parents: 45
diff changeset
200
   (put 'make-instance 'common-lisp-indent-function 1)
daad2b8bb63f init nlp
ellis <ellis@rwest.io>
parents: 45
diff changeset
201
   (put 'reinitialize-instance 'common-lisp-indent-function 1)
215
0d11384aae81 rt tests
Richard Westhaver <ellis@rwest.io>
parents: 214
diff changeset
202
   (slime-setup)
26
51a8370766f7 emacs config
ellis <ellis@rwest.io>
parents: 24
diff changeset
203
   (defvar slime-toggle nil)
51a8370766f7 emacs config
ellis <ellis@rwest.io>
parents: 24
diff changeset
204
   (defun slime-toggle ()
51a8370766f7 emacs config
ellis <ellis@rwest.io>
parents: 24
diff changeset
205
     "toggle between lisp file and slime-repl"
51a8370766f7 emacs config
ellis <ellis@rwest.io>
parents: 24
diff changeset
206
     (interactive)
188
34bacb513d55 config fixes
Richard Westhaver <ellis@rwest.io>
parents: 187
diff changeset
207
     (unless (slime-connected-p) (slime))
26
51a8370766f7 emacs config
ellis <ellis@rwest.io>
parents: 24
diff changeset
208
     (if (eq major-mode 'slime-repl-mode)
126
d111e98f7c18 back to organ and skel :)
ellis <ellis@rwest.io>
parents: 96
diff changeset
209
         (setq slime-toggle (pop-to-buffer (or slime-toggle (read-buffer "lisp file: "))))
21
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
210
       (progn
44
cc85ab013035 added slime-cape, config stuff
ellis <ellis@rwest.io>
parents: 41
diff changeset
211
         (setq slime-toggle (current-buffer))
53
daad2b8bb63f init nlp
ellis <ellis@rwest.io>
parents: 45
diff changeset
212
         (slime-repl))))
daad2b8bb63f init nlp
ellis <ellis@rwest.io>
parents: 45
diff changeset
213
 
daad2b8bb63f init nlp
ellis <ellis@rwest.io>
parents: 45
diff changeset
214
   (defun clouseau-inspect (string)
daad2b8bb63f init nlp
ellis <ellis@rwest.io>
parents: 45
diff changeset
215
     "Inspect a lisp value with Clouseau. make sure to load clouseau
daad2b8bb63f init nlp
ellis <ellis@rwest.io>
parents: 45
diff changeset
216
 with a custom core or in your init file before using this
daad2b8bb63f init nlp
ellis <ellis@rwest.io>
parents: 45
diff changeset
217
 function: '(ql:quickload :clouseau)'."
daad2b8bb63f init nlp
ellis <ellis@rwest.io>
parents: 45
diff changeset
218
     (interactive
daad2b8bb63f init nlp
ellis <ellis@rwest.io>
parents: 45
diff changeset
219
      (list (slime-read-from-minibuffer
daad2b8bb63f init nlp
ellis <ellis@rwest.io>
parents: 45
diff changeset
220
             "Inspect value (evaluated): "
daad2b8bb63f init nlp
ellis <ellis@rwest.io>
parents: 45
diff changeset
221
             (slime-sexp-at-point))))
daad2b8bb63f init nlp
ellis <ellis@rwest.io>
parents: 45
diff changeset
222
     (let ((inspector 'cl-user::*clouseau-inspector*))
daad2b8bb63f init nlp
ellis <ellis@rwest.io>
parents: 45
diff changeset
223
       (slime-eval-async
daad2b8bb63f init nlp
ellis <ellis@rwest.io>
parents: 45
diff changeset
224
           `(cl:progn
daad2b8bb63f init nlp
ellis <ellis@rwest.io>
parents: 45
diff changeset
225
             (cl:defvar ,inspector nil)
daad2b8bb63f init nlp
ellis <ellis@rwest.io>
parents: 45
diff changeset
226
             ;; (Re)start the inspector if necessary.
daad2b8bb63f init nlp
ellis <ellis@rwest.io>
parents: 45
diff changeset
227
             (cl:unless (cl:and (clim:application-frame-p ,inspector)
daad2b8bb63f init nlp
ellis <ellis@rwest.io>
parents: 45
diff changeset
228
                                (clim-internals::frame-process ,inspector))
daad2b8bb63f init nlp
ellis <ellis@rwest.io>
parents: 45
diff changeset
229
                        (cl:setf ,inspector (cl:nth-value 1 (clouseau:inspect nil :new-process t))))
daad2b8bb63f init nlp
ellis <ellis@rwest.io>
parents: 45
diff changeset
230
             ;; Tell the inspector to visualize the correct datum.
daad2b8bb63f init nlp
ellis <ellis@rwest.io>
parents: 45
diff changeset
231
             (cl:setf (clouseau:root-object ,inspector :run-hook-p t)
daad2b8bb63f init nlp
ellis <ellis@rwest.io>
parents: 45
diff changeset
232
                      (cl:eval (cl:read-from-string ,string)))
daad2b8bb63f init nlp
ellis <ellis@rwest.io>
parents: 45
diff changeset
233
             ;; Return nothing.
daad2b8bb63f init nlp
ellis <ellis@rwest.io>
parents: 45
diff changeset
234
             (cl:values)))))
daad2b8bb63f init nlp
ellis <ellis@rwest.io>
parents: 45
diff changeset
235
 
206
a0f64fed8f2a refactor nu ci, skel and homer updates
Richard Westhaver <ellis@rwest.io>
parents: 204
diff changeset
236
   ;; (define-key slime-prefix-map (kbd "i") 'clouseau-inspect)
182
0e972410eb3e nu invasion
Richard Westhaver <ellis@rwest.io>
parents: 149
diff changeset
237
   (setq slime-threads-update-interval 1))
21
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
238
 
187
a962648ad6d5 add dir-locals and eglot-x
Richard Westhaver <ellis@rwest.io>
parents: 182
diff changeset
239
 ;;; Eglot
a962648ad6d5 add dir-locals and eglot-x
Richard Westhaver <ellis@rwest.io>
parents: 182
diff changeset
240
 (with-eval-after-load 'eglot
a962648ad6d5 add dir-locals and eglot-x
Richard Westhaver <ellis@rwest.io>
parents: 182
diff changeset
241
   (unless (package-installed-p 'eglot-x)
a962648ad6d5 add dir-locals and eglot-x
Richard Westhaver <ellis@rwest.io>
parents: 182
diff changeset
242
     (package-vc-install '(eglot-x :url "https://vc.compiler.company/packy/eglot-x.git")))
a962648ad6d5 add dir-locals and eglot-x
Richard Westhaver <ellis@rwest.io>
parents: 182
diff changeset
243
   (require 'eglot-x)
a962648ad6d5 add dir-locals and eglot-x
Richard Westhaver <ellis@rwest.io>
parents: 182
diff changeset
244
   (add-to-list 'eglot-server-programs
a962648ad6d5 add dir-locals and eglot-x
Richard Westhaver <ellis@rwest.io>
parents: 182
diff changeset
245
                '((rust-ts-mode rust-mode) .
a962648ad6d5 add dir-locals and eglot-x
Richard Westhaver <ellis@rwest.io>
parents: 182
diff changeset
246
                  ("rust-analyzer" :initializationOptions (:check (:command "clippy")))))
a962648ad6d5 add dir-locals and eglot-x
Richard Westhaver <ellis@rwest.io>
parents: 182
diff changeset
247
   (eglot-x-setup))
a962648ad6d5 add dir-locals and eglot-x
Richard Westhaver <ellis@rwest.io>
parents: 182
diff changeset
248
 
21
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
249
 ;;; Rust
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
250
 (add-hook 'rust-mode-hook 'eglot-ensure)
187
a962648ad6d5 add dir-locals and eglot-x
Richard Westhaver <ellis@rwest.io>
parents: 182
diff changeset
251
 
30
bb274c6c126a emacs defaults and keys
ellis <ellis@rwest.io>
parents: 29
diff changeset
252
 (setq rust-rustfmt-switches nil
bb274c6c126a emacs defaults and keys
ellis <ellis@rwest.io>
parents: 29
diff changeset
253
       rust-indent-offset 2)
bb274c6c126a emacs defaults and keys
ellis <ellis@rwest.io>
parents: 29
diff changeset
254
 
bb274c6c126a emacs defaults and keys
ellis <ellis@rwest.io>
parents: 29
diff changeset
255
 ;;; Python
bb274c6c126a emacs defaults and keys
ellis <ellis@rwest.io>
parents: 29
diff changeset
256
 (setq python-indent-offset 2)
bb274c6c126a emacs defaults and keys
ellis <ellis@rwest.io>
parents: 29
diff changeset
257
 (add-hook 'python-mode-hook 'eglot-ensure)
bb274c6c126a emacs defaults and keys
ellis <ellis@rwest.io>
parents: 29
diff changeset
258
 
189
3d78bed56188 apply clippy fixes
Richard Westhaver <ellis@rwest.io>
parents: 188
diff changeset
259
 ;;; Javascript
3d78bed56188 apply clippy fixes
Richard Westhaver <ellis@rwest.io>
parents: 188
diff changeset
260
 (setq js-indent-level 2)
3d78bed56188 apply clippy fixes
Richard Westhaver <ellis@rwest.io>
parents: 188
diff changeset
261
 
30
bb274c6c126a emacs defaults and keys
ellis <ellis@rwest.io>
parents: 29
diff changeset
262
 ;;; Bash
bb274c6c126a emacs defaults and keys
ellis <ellis@rwest.io>
parents: 29
diff changeset
263
 (setq sh-basic-offset 2)
bb274c6c126a emacs defaults and keys
ellis <ellis@rwest.io>
parents: 29
diff changeset
264
 
31
f28229bc9b58 emacs defaults
ellis <ellis@rwest.io>
parents: 30
diff changeset
265
 ;;; Comments
f28229bc9b58 emacs defaults
ellis <ellis@rwest.io>
parents: 30
diff changeset
266
 (defcustom prog-comment-keywords
f28229bc9b58 emacs defaults
ellis <ellis@rwest.io>
parents: 30
diff changeset
267
   '("TODO" "REVIEW" "FIX" "HACK" "RESEARCH")
f28229bc9b58 emacs defaults
ellis <ellis@rwest.io>
parents: 30
diff changeset
268
   "List of strings with comment keywords."
f28229bc9b58 emacs defaults
ellis <ellis@rwest.io>
parents: 30
diff changeset
269
   :group 'default)
f28229bc9b58 emacs defaults
ellis <ellis@rwest.io>
parents: 30
diff changeset
270
 
f28229bc9b58 emacs defaults
ellis <ellis@rwest.io>
parents: 30
diff changeset
271
 (defcustom prog-comment-timestamp-format-concise "%F"
f28229bc9b58 emacs defaults
ellis <ellis@rwest.io>
parents: 30
diff changeset
272
   "Specifier for date in `prog-comment-timestamp-keyword'.
f28229bc9b58 emacs defaults
ellis <ellis@rwest.io>
parents: 30
diff changeset
273
 Refer to the doc string of `format-time-string' for the available
f28229bc9b58 emacs defaults
ellis <ellis@rwest.io>
parents: 30
diff changeset
274
 options."
f28229bc9b58 emacs defaults
ellis <ellis@rwest.io>
parents: 30
diff changeset
275
   :group 'default)
f28229bc9b58 emacs defaults
ellis <ellis@rwest.io>
parents: 30
diff changeset
276
 
f28229bc9b58 emacs defaults
ellis <ellis@rwest.io>
parents: 30
diff changeset
277
 (defcustom prog-comment-timestamp-format-verbose "%F %T %z"
f28229bc9b58 emacs defaults
ellis <ellis@rwest.io>
parents: 30
diff changeset
278
   "Like `prog-comment-timestamp-format-concise', but longer."
f28229bc9b58 emacs defaults
ellis <ellis@rwest.io>
parents: 30
diff changeset
279
   :group 'default)
f28229bc9b58 emacs defaults
ellis <ellis@rwest.io>
parents: 30
diff changeset
280
 
f28229bc9b58 emacs defaults
ellis <ellis@rwest.io>
parents: 30
diff changeset
281
 ;;;###autoload
f28229bc9b58 emacs defaults
ellis <ellis@rwest.io>
parents: 30
diff changeset
282
 (defun prog-comment-dwim (arg)
f28229bc9b58 emacs defaults
ellis <ellis@rwest.io>
parents: 30
diff changeset
283
   "Flexible, do-what-I-mean commenting.
f28229bc9b58 emacs defaults
ellis <ellis@rwest.io>
parents: 30
diff changeset
284
 
f28229bc9b58 emacs defaults
ellis <ellis@rwest.io>
parents: 30
diff changeset
285
 If region is active and ARG is either a numeric argument greater
f28229bc9b58 emacs defaults
ellis <ellis@rwest.io>
parents: 30
diff changeset
286
 than one or a universal prefix (\\[universal-argument]), then
f28229bc9b58 emacs defaults
ellis <ellis@rwest.io>
parents: 30
diff changeset
287
 apply `comment-kill' on all comments in the region.
f28229bc9b58 emacs defaults
ellis <ellis@rwest.io>
parents: 30
diff changeset
288
 
f28229bc9b58 emacs defaults
ellis <ellis@rwest.io>
parents: 30
diff changeset
289
 If the region is active and no ARG is supplied, or is equal to a
f28229bc9b58 emacs defaults
ellis <ellis@rwest.io>
parents: 30
diff changeset
290
 numeric prefix of 1, then toggle the comment status of the region.
f28229bc9b58 emacs defaults
ellis <ellis@rwest.io>
parents: 30
diff changeset
291
 
f28229bc9b58 emacs defaults
ellis <ellis@rwest.io>
parents: 30
diff changeset
292
 Else toggle the comment status of the line at point.  With a
f28229bc9b58 emacs defaults
ellis <ellis@rwest.io>
parents: 30
diff changeset
293
 numeric prefix ARG, do so for ARGth lines (negative prefix
f28229bc9b58 emacs defaults
ellis <ellis@rwest.io>
parents: 30
diff changeset
294
 operates on the lines before point)."
f28229bc9b58 emacs defaults
ellis <ellis@rwest.io>
parents: 30
diff changeset
295
   (interactive "p")
f28229bc9b58 emacs defaults
ellis <ellis@rwest.io>
parents: 30
diff changeset
296
   (cond
f28229bc9b58 emacs defaults
ellis <ellis@rwest.io>
parents: 30
diff changeset
297
    ((and (> arg 1) (use-region-p))
f28229bc9b58 emacs defaults
ellis <ellis@rwest.io>
parents: 30
diff changeset
298
     (let* ((beg (region-beginning))
f28229bc9b58 emacs defaults
ellis <ellis@rwest.io>
parents: 30
diff changeset
299
            (end (region-end))
f28229bc9b58 emacs defaults
ellis <ellis@rwest.io>
parents: 30
diff changeset
300
            (num (count-lines beg end)))
f28229bc9b58 emacs defaults
ellis <ellis@rwest.io>
parents: 30
diff changeset
301
       (save-excursion
f28229bc9b58 emacs defaults
ellis <ellis@rwest.io>
parents: 30
diff changeset
302
         (goto-char beg)
f28229bc9b58 emacs defaults
ellis <ellis@rwest.io>
parents: 30
diff changeset
303
         (comment-kill num))))
f28229bc9b58 emacs defaults
ellis <ellis@rwest.io>
parents: 30
diff changeset
304
    ((use-region-p)
f28229bc9b58 emacs defaults
ellis <ellis@rwest.io>
parents: 30
diff changeset
305
     (comment-or-uncomment-region (region-beginning) (region-end)))
f28229bc9b58 emacs defaults
ellis <ellis@rwest.io>
parents: 30
diff changeset
306
    (t
f28229bc9b58 emacs defaults
ellis <ellis@rwest.io>
parents: 30
diff changeset
307
     (save-excursion (comment-line (or arg 1))))))
f28229bc9b58 emacs defaults
ellis <ellis@rwest.io>
parents: 30
diff changeset
308
 
f28229bc9b58 emacs defaults
ellis <ellis@rwest.io>
parents: 30
diff changeset
309
 (defvar prog-comment--keyword-hist '()
f28229bc9b58 emacs defaults
ellis <ellis@rwest.io>
parents: 30
diff changeset
310
   "Input history of selected comment keywords.")
f28229bc9b58 emacs defaults
ellis <ellis@rwest.io>
parents: 30
diff changeset
311
 
f28229bc9b58 emacs defaults
ellis <ellis@rwest.io>
parents: 30
diff changeset
312
 (defun prog-comment--keyword-prompt (keywords)
f28229bc9b58 emacs defaults
ellis <ellis@rwest.io>
parents: 30
diff changeset
313
   "Prompt for candidate among KEYWORDS."
f28229bc9b58 emacs defaults
ellis <ellis@rwest.io>
parents: 30
diff changeset
314
   (let ((def (car prog-comment--keyword-hist)))
f28229bc9b58 emacs defaults
ellis <ellis@rwest.io>
parents: 30
diff changeset
315
     (completing-read
f28229bc9b58 emacs defaults
ellis <ellis@rwest.io>
parents: 30
diff changeset
316
      (format "Select keyword [%s]: " def)
f28229bc9b58 emacs defaults
ellis <ellis@rwest.io>
parents: 30
diff changeset
317
      keywords nil nil nil 'prog-comment--keyword-hist def)))
f28229bc9b58 emacs defaults
ellis <ellis@rwest.io>
parents: 30
diff changeset
318
 
f28229bc9b58 emacs defaults
ellis <ellis@rwest.io>
parents: 30
diff changeset
319
 
f28229bc9b58 emacs defaults
ellis <ellis@rwest.io>
parents: 30
diff changeset
320
 ;;;###autoload
f28229bc9b58 emacs defaults
ellis <ellis@rwest.io>
parents: 30
diff changeset
321
 (defun prog-comment-timestamp-keyword (keyword &optional verbose)
f28229bc9b58 emacs defaults
ellis <ellis@rwest.io>
parents: 30
diff changeset
322
   "Add timestamped comment with KEYWORD.
f28229bc9b58 emacs defaults
ellis <ellis@rwest.io>
parents: 30
diff changeset
323
 
f28229bc9b58 emacs defaults
ellis <ellis@rwest.io>
parents: 30
diff changeset
324
 When called interactively, the list of possible keywords is that
f28229bc9b58 emacs defaults
ellis <ellis@rwest.io>
parents: 30
diff changeset
325
 of `prog-comment-keywords', though it is possible to
f28229bc9b58 emacs defaults
ellis <ellis@rwest.io>
parents: 30
diff changeset
326
 input arbitrary text.
f28229bc9b58 emacs defaults
ellis <ellis@rwest.io>
parents: 30
diff changeset
327
 
f28229bc9b58 emacs defaults
ellis <ellis@rwest.io>
parents: 30
diff changeset
328
 If point is at the beginning of the line or if line is empty (no
f28229bc9b58 emacs defaults
ellis <ellis@rwest.io>
parents: 30
diff changeset
329
 characters at all or just indentation), the comment is started
f28229bc9b58 emacs defaults
ellis <ellis@rwest.io>
parents: 30
diff changeset
330
 there in accordance with `comment-style'.  Any existing text
f28229bc9b58 emacs defaults
ellis <ellis@rwest.io>
parents: 30
diff changeset
331
 after the point will be pushed to a new line and will not be
f28229bc9b58 emacs defaults
ellis <ellis@rwest.io>
parents: 30
diff changeset
332
 turned into a comment.
f28229bc9b58 emacs defaults
ellis <ellis@rwest.io>
parents: 30
diff changeset
333
 
f28229bc9b58 emacs defaults
ellis <ellis@rwest.io>
parents: 30
diff changeset
334
 If point is anywhere else on the line, the comment is indented
f28229bc9b58 emacs defaults
ellis <ellis@rwest.io>
parents: 30
diff changeset
335
 with `comment-indent'.
f28229bc9b58 emacs defaults
ellis <ellis@rwest.io>
parents: 30
diff changeset
336
 
f28229bc9b58 emacs defaults
ellis <ellis@rwest.io>
parents: 30
diff changeset
337
 The comment is always formatted as 'DELIMITER KEYWORD DATE:',
f28229bc9b58 emacs defaults
ellis <ellis@rwest.io>
parents: 30
diff changeset
338
 with the date format being controlled by the variable
f28229bc9b58 emacs defaults
ellis <ellis@rwest.io>
parents: 30
diff changeset
339
 `prog-comment-timestamp-format-concise'.
f28229bc9b58 emacs defaults
ellis <ellis@rwest.io>
parents: 30
diff changeset
340
 
f28229bc9b58 emacs defaults
ellis <ellis@rwest.io>
parents: 30
diff changeset
341
 With optional VERBOSE argument (such as a prefix argument
f28229bc9b58 emacs defaults
ellis <ellis@rwest.io>
parents: 30
diff changeset
342
 `\\[universal-argument]'), use an alternative date format, as
f28229bc9b58 emacs defaults
ellis <ellis@rwest.io>
parents: 30
diff changeset
343
 specified by `prog-comment-timestamp-format-verbose'."
f28229bc9b58 emacs defaults
ellis <ellis@rwest.io>
parents: 30
diff changeset
344
   (interactive
f28229bc9b58 emacs defaults
ellis <ellis@rwest.io>
parents: 30
diff changeset
345
    (list
f28229bc9b58 emacs defaults
ellis <ellis@rwest.io>
parents: 30
diff changeset
346
     (prog-comment--keyword-prompt prog-comment-keywords)
f28229bc9b58 emacs defaults
ellis <ellis@rwest.io>
parents: 30
diff changeset
347
     current-prefix-arg))
f28229bc9b58 emacs defaults
ellis <ellis@rwest.io>
parents: 30
diff changeset
348
   (let* ((date (if verbose
f28229bc9b58 emacs defaults
ellis <ellis@rwest.io>
parents: 30
diff changeset
349
                    comment-timestamp-format-verbose
34
882a5c1e7b9f emacs config
ellis <ellis@rwest.io>
parents: 33
diff changeset
350
          prog-comment-timestamp-format-concise))
882a5c1e7b9f emacs config
ellis <ellis@rwest.io>
parents: 33
diff changeset
351
      (string (format "%s %s: " keyword (format-time-string date)))
31
f28229bc9b58 emacs defaults
ellis <ellis@rwest.io>
parents: 30
diff changeset
352
          (beg (point)))
f28229bc9b58 emacs defaults
ellis <ellis@rwest.io>
parents: 30
diff changeset
353
     (cond
f28229bc9b58 emacs defaults
ellis <ellis@rwest.io>
parents: 30
diff changeset
354
      ((or (eq beg (point-at-bol))
f28229bc9b58 emacs defaults
ellis <ellis@rwest.io>
parents: 30
diff changeset
355
           (default-line-regexp-p 'empty))
f28229bc9b58 emacs defaults
ellis <ellis@rwest.io>
parents: 30
diff changeset
356
       (let* ((maybe-newline (unless (default-line-regexp-p 'empty 1) "\n")))
f28229bc9b58 emacs defaults
ellis <ellis@rwest.io>
parents: 30
diff changeset
357
         ;; NOTE 2021-07-24: we use this `insert' instead of
f28229bc9b58 emacs defaults
ellis <ellis@rwest.io>
parents: 30
diff changeset
358
         ;; `comment-region' because of a yet-to-be-determined bug that
f28229bc9b58 emacs defaults
ellis <ellis@rwest.io>
parents: 30
diff changeset
359
         ;; traps `undo' to the two states between the insertion of the
f28229bc9b58 emacs defaults
ellis <ellis@rwest.io>
parents: 30
diff changeset
360
         ;; string and its transformation into a comment.
f28229bc9b58 emacs defaults
ellis <ellis@rwest.io>
parents: 30
diff changeset
361
         (insert
f28229bc9b58 emacs defaults
ellis <ellis@rwest.io>
parents: 30
diff changeset
362
          (concat comment-start
f28229bc9b58 emacs defaults
ellis <ellis@rwest.io>
parents: 30
diff changeset
363
                  ;; NOTE 2021-07-24: See function `comment-add' for
f28229bc9b58 emacs defaults
ellis <ellis@rwest.io>
parents: 30
diff changeset
364
                  ;; why we need this.
f28229bc9b58 emacs defaults
ellis <ellis@rwest.io>
parents: 30
diff changeset
365
                  (make-string
f28229bc9b58 emacs defaults
ellis <ellis@rwest.io>
parents: 30
diff changeset
366
                   (comment-add nil)
f28229bc9b58 emacs defaults
ellis <ellis@rwest.io>
parents: 30
diff changeset
367
                   (string-to-char comment-start))
f28229bc9b58 emacs defaults
ellis <ellis@rwest.io>
parents: 30
diff changeset
368
                  comment-padding
f28229bc9b58 emacs defaults
ellis <ellis@rwest.io>
parents: 30
diff changeset
369
                  string
f28229bc9b58 emacs defaults
ellis <ellis@rwest.io>
parents: 30
diff changeset
370
                  comment-end))
f28229bc9b58 emacs defaults
ellis <ellis@rwest.io>
parents: 30
diff changeset
371
         (indent-region beg (point))
f28229bc9b58 emacs defaults
ellis <ellis@rwest.io>
parents: 30
diff changeset
372
         (when maybe-newline
f28229bc9b58 emacs defaults
ellis <ellis@rwest.io>
parents: 30
diff changeset
373
           (save-excursion (insert maybe-newline)))))
f28229bc9b58 emacs defaults
ellis <ellis@rwest.io>
parents: 30
diff changeset
374
      (t
f28229bc9b58 emacs defaults
ellis <ellis@rwest.io>
parents: 30
diff changeset
375
       (comment-indent t)
f28229bc9b58 emacs defaults
ellis <ellis@rwest.io>
parents: 30
diff changeset
376
       (insert (concat " " string))))))
f28229bc9b58 emacs defaults
ellis <ellis@rwest.io>
parents: 30
diff changeset
377
 
34
882a5c1e7b9f emacs config
ellis <ellis@rwest.io>
parents: 33
diff changeset
378
 (setq hexl-bits 8)
31
f28229bc9b58 emacs defaults
ellis <ellis@rwest.io>
parents: 30
diff changeset
379
 (setq tab-width 4)
f28229bc9b58 emacs defaults
ellis <ellis@rwest.io>
parents: 30
diff changeset
380
 
21
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
381
 ;;; Keyboard Macros
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
382
 (defun toggle-macro-recording ()
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
383
   (interactive)
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
384
   (if defining-kbd-macro
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
385
       (end-kbd-macro)
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
386
     (start-kbd-macro nil)))
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
387
 
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
388
 (defun play-macro-if-not-playing ()
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
389
   (interactive)
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
390
   (if defining-kbd-macro
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
391
       (end-kbd-macro)
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
392
     (call-last-kbd-macro)))
30
bb274c6c126a emacs defaults and keys
ellis <ellis@rwest.io>
parents: 29
diff changeset
393
 
bb274c6c126a emacs defaults and keys
ellis <ellis@rwest.io>
parents: 29
diff changeset
394
 ;;; Registers
bb274c6c126a emacs defaults and keys
ellis <ellis@rwest.io>
parents: 29
diff changeset
395
 ;; - additional register vtypes: buffer
bb274c6c126a emacs defaults and keys
ellis <ellis@rwest.io>
parents: 29
diff changeset
396
 (defun decrement-register (number register)
bb274c6c126a emacs defaults and keys
ellis <ellis@rwest.io>
parents: 29
diff changeset
397
   "Subtract NUMBER from the contents of register REGISTER.
bb274c6c126a emacs defaults and keys
ellis <ellis@rwest.io>
parents: 29
diff changeset
398
 Interactively, NUMBER is the prefix arg."
bb274c6c126a emacs defaults and keys
ellis <ellis@rwest.io>
parents: 29
diff changeset
399
   (interactive "p\ncDecrement register: ")
bb274c6c126a emacs defaults and keys
ellis <ellis@rwest.io>
parents: 29
diff changeset
400
   (increment-register (- number) register))
bb274c6c126a emacs defaults and keys
ellis <ellis@rwest.io>
parents: 29
diff changeset
401
 
bb274c6c126a emacs defaults and keys
ellis <ellis@rwest.io>
parents: 29
diff changeset
402
 (defun copy-register (a b)
bb274c6c126a emacs defaults and keys
ellis <ellis@rwest.io>
parents: 29
diff changeset
403
   "Copy register A to B."
bb274c6c126a emacs defaults and keys
ellis <ellis@rwest.io>
parents: 29
diff changeset
404
   (interactive
bb274c6c126a emacs defaults and keys
ellis <ellis@rwest.io>
parents: 29
diff changeset
405
    (list (register-read-with-preview "From register: ")
34
882a5c1e7b9f emacs config
ellis <ellis@rwest.io>
parents: 33
diff changeset
406
      (register-read-with-preview "To register: ")))
30
bb274c6c126a emacs defaults and keys
ellis <ellis@rwest.io>
parents: 29
diff changeset
407
   (set-register b (get-register a)))
bb274c6c126a emacs defaults and keys
ellis <ellis@rwest.io>
parents: 29
diff changeset
408
 
bb274c6c126a emacs defaults and keys
ellis <ellis@rwest.io>
parents: 29
diff changeset
409
 (defun buffer-to-register (register &optional delete)
bb274c6c126a emacs defaults and keys
ellis <ellis@rwest.io>
parents: 29
diff changeset
410
   "Put current buffer in register - this would also work for
bb274c6c126a emacs defaults and keys
ellis <ellis@rwest.io>
parents: 29
diff changeset
411
   just buffers, as switch-to-buffer can use both, but it
bb274c6c126a emacs defaults and keys
ellis <ellis@rwest.io>
parents: 29
diff changeset
412
   facilitates for easier saving/restoring of registers."
bb274c6c126a emacs defaults and keys
ellis <ellis@rwest.io>
parents: 29
diff changeset
413
   (interactive "cPut current buffername in register: \nP.")
bb274c6c126a emacs defaults and keys
ellis <ellis@rwest.io>
parents: 29
diff changeset
414
   (set-register register (cons 'buffer (buffer-name (current-buffer)))))
34
882a5c1e7b9f emacs config
ellis <ellis@rwest.io>
parents: 33
diff changeset
415
 
30
bb274c6c126a emacs defaults and keys
ellis <ellis@rwest.io>
parents: 29
diff changeset
416
 (defun file-to-register (register &optional delete)
bb274c6c126a emacs defaults and keys
ellis <ellis@rwest.io>
parents: 29
diff changeset
417
   "This is better than put-buffer-in-register for file-buffers, because a closed
bb274c6c126a emacs defaults and keys
ellis <ellis@rwest.io>
parents: 29
diff changeset
418
    file can be opened again, but does not work for no-file-buffers."
bb274c6c126a emacs defaults and keys
ellis <ellis@rwest.io>
parents: 29
diff changeset
419
   (interactive "cPut the filename of current buffer in register: \nP")
bb274c6c126a emacs defaults and keys
ellis <ellis@rwest.io>
parents: 29
diff changeset
420
   (set-register register (cons 'file (buffer-file-name (current-buffer)))))
34
882a5c1e7b9f emacs config
ellis <ellis@rwest.io>
parents: 33
diff changeset
421
 
30
bb274c6c126a emacs defaults and keys
ellis <ellis@rwest.io>
parents: 29
diff changeset
422
 (defun file-query-to-register (register &optional delete)
34
882a5c1e7b9f emacs config
ellis <ellis@rwest.io>
parents: 33
diff changeset
423
   (interactive
882a5c1e7b9f emacs config
ellis <ellis@rwest.io>
parents: 33
diff changeset
424
    (list
30
bb274c6c126a emacs defaults and keys
ellis <ellis@rwest.io>
parents: 29
diff changeset
425
     (register-read-with-preview "File query to register: ")))
bb274c6c126a emacs defaults and keys
ellis <ellis@rwest.io>
parents: 29
diff changeset
426
   (set-register register (list 'file-query (buffer-file-name (current-buffer)) (point))))
bb274c6c126a emacs defaults and keys
ellis <ellis@rwest.io>
parents: 29
diff changeset
427
 
bb274c6c126a emacs defaults and keys
ellis <ellis@rwest.io>
parents: 29
diff changeset
428
 ;; additional register-val handlers
bb274c6c126a emacs defaults and keys
ellis <ellis@rwest.io>
parents: 29
diff changeset
429
 ;; (cl-defmethod register-val-jump-to :around ((val cons) delete)
bb274c6c126a emacs defaults and keys
ellis <ellis@rwest.io>
parents: 29
diff changeset
430
 ;;   (cond
bb274c6c126a emacs defaults and keys
ellis <ellis@rwest.io>
parents: 29
diff changeset
431
 ;;    (t (cl-call-next-method val delete))))
bb274c6c126a emacs defaults and keys
ellis <ellis@rwest.io>
parents: 29
diff changeset
432
 
21
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
433
 ;;; Outlines
34
882a5c1e7b9f emacs config
ellis <ellis@rwest.io>
parents: 33
diff changeset
434
 (defun outline-hook (&optional rx)
21
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
435
   "Enable `outline-minor-mode' and set `outline-regexp'."
57
be036d2eefea emacs updates
ellis <ellis@rwest.io>
parents: 53
diff changeset
436
   (when rx (setq-local outline-regexp rx))
be036d2eefea emacs updates
ellis <ellis@rwest.io>
parents: 53
diff changeset
437
   (outline-minor-mode 1))
21
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
438
 
57
be036d2eefea emacs updates
ellis <ellis@rwest.io>
parents: 53
diff changeset
439
 (setq outline-minor-mode-use-buttons nil)
34
882a5c1e7b9f emacs config
ellis <ellis@rwest.io>
parents: 33
diff changeset
440
 
882a5c1e7b9f emacs config
ellis <ellis@rwest.io>
parents: 33
diff changeset
441
 (defun add-outline-hook (mode &optional rx)
882a5c1e7b9f emacs config
ellis <ellis@rwest.io>
parents: 33
diff changeset
442
   (let ((sym (symb mode "-hook")))
882a5c1e7b9f emacs config
ellis <ellis@rwest.io>
parents: 33
diff changeset
443
     (add-hook sym (lambda () (outline-hook rx)))))
21
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
444
 
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
445
 (defmacro outline-hooks (&rest pairs)
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
446
   `(mapc (lambda (x) (add-outline-hook (car x) (cadr x))) ',pairs))
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
447
 
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
448
 (outline-hooks (asm-mode ";;;+")
34
882a5c1e7b9f emacs config
ellis <ellis@rwest.io>
parents: 33
diff changeset
449
            (nasm-mode ";;;+")
882a5c1e7b9f emacs config
ellis <ellis@rwest.io>
parents: 33
diff changeset
450
            (rust-mode "\\(//!\\|////+\\)")
882a5c1e7b9f emacs config
ellis <ellis@rwest.io>
parents: 33
diff changeset
451
            (sh-mode "###+")
882a5c1e7b9f emacs config
ellis <ellis@rwest.io>
parents: 33
diff changeset
452
            (sh-script-mode "###+")
882a5c1e7b9f emacs config
ellis <ellis@rwest.io>
parents: 33
diff changeset
453
            (makefile-mode "###+")
57
be036d2eefea emacs updates
ellis <ellis@rwest.io>
parents: 53
diff changeset
454
            (conf-mode "###+")
be036d2eefea emacs updates
ellis <ellis@rwest.io>
parents: 53
diff changeset
455
            (common-lisp-mode)
be036d2eefea emacs updates
ellis <ellis@rwest.io>
parents: 53
diff changeset
456
            (emacs-lisp-mode)
be036d2eefea emacs updates
ellis <ellis@rwest.io>
parents: 53
diff changeset
457
            (lisp-data-mode)
be036d2eefea emacs updates
ellis <ellis@rwest.io>
parents: 53
diff changeset
458
            (org-mode)
be036d2eefea emacs updates
ellis <ellis@rwest.io>
parents: 53
diff changeset
459
            (css-mode)
be036d2eefea emacs updates
ellis <ellis@rwest.io>
parents: 53
diff changeset
460
            (html-mode)
be036d2eefea emacs updates
ellis <ellis@rwest.io>
parents: 53
diff changeset
461
            (skel-mode))
30
bb274c6c126a emacs defaults and keys
ellis <ellis@rwest.io>
parents: 29
diff changeset
462
 
21
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
463
 ;;; Scratch
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
464
 (defcustom default-scratch-buffer-mode 'lisp-interaction-mode
34
882a5c1e7b9f emacs config
ellis <ellis@rwest.io>
parents: 33
diff changeset
465
   "Default major mode for new scratch buffers"
882a5c1e7b9f emacs config
ellis <ellis@rwest.io>
parents: 33
diff changeset
466
   :group 'default)
21
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
467
 
30
bb274c6c126a emacs defaults and keys
ellis <ellis@rwest.io>
parents: 29
diff changeset
468
 ;; Adapted from the `scratch.el' package by Ian Eure.
bb274c6c126a emacs defaults and keys
ellis <ellis@rwest.io>
parents: 29
diff changeset
469
 (defun default-scratch-list-modes ()
bb274c6c126a emacs defaults and keys
ellis <ellis@rwest.io>
parents: 29
diff changeset
470
   "List known major modes."
bb274c6c126a emacs defaults and keys
ellis <ellis@rwest.io>
parents: 29
diff changeset
471
   (cl-loop for sym the symbols of obarray
bb274c6c126a emacs defaults and keys
ellis <ellis@rwest.io>
parents: 29
diff changeset
472
            for name = (symbol-name sym)
bb274c6c126a emacs defaults and keys
ellis <ellis@rwest.io>
parents: 29
diff changeset
473
            when (and (functionp sym)
bb274c6c126a emacs defaults and keys
ellis <ellis@rwest.io>
parents: 29
diff changeset
474
                      (not (member sym minor-mode-list))
bb274c6c126a emacs defaults and keys
ellis <ellis@rwest.io>
parents: 29
diff changeset
475
                      (string-match "-mode$" name)
bb274c6c126a emacs defaults and keys
ellis <ellis@rwest.io>
parents: 29
diff changeset
476
                      (not (string-match "--" name)))
bb274c6c126a emacs defaults and keys
ellis <ellis@rwest.io>
parents: 29
diff changeset
477
            collect name))
bb274c6c126a emacs defaults and keys
ellis <ellis@rwest.io>
parents: 29
diff changeset
478
 
bb274c6c126a emacs defaults and keys
ellis <ellis@rwest.io>
parents: 29
diff changeset
479
 (defun default-scratch-buffer-setup (region &optional mode)
bb274c6c126a emacs defaults and keys
ellis <ellis@rwest.io>
parents: 29
diff changeset
480
   "Add contents to `scratch' buffer and name it accordingly.
bb274c6c126a emacs defaults and keys
ellis <ellis@rwest.io>
parents: 29
diff changeset
481
 
bb274c6c126a emacs defaults and keys
ellis <ellis@rwest.io>
parents: 29
diff changeset
482
 REGION is added to the contents to the new buffer.
bb274c6c126a emacs defaults and keys
ellis <ellis@rwest.io>
parents: 29
diff changeset
483
 
bb274c6c126a emacs defaults and keys
ellis <ellis@rwest.io>
parents: 29
diff changeset
484
 Use the current buffer's major mode by default.  With optional
bb274c6c126a emacs defaults and keys
ellis <ellis@rwest.io>
parents: 29
diff changeset
485
 MODE use that major mode instead."
bb274c6c126a emacs defaults and keys
ellis <ellis@rwest.io>
parents: 29
diff changeset
486
   (let* ((major (or mode major-mode))
bb274c6c126a emacs defaults and keys
ellis <ellis@rwest.io>
parents: 29
diff changeset
487
          (string (format "Scratch buffer for: %s\n\n" major))
bb274c6c126a emacs defaults and keys
ellis <ellis@rwest.io>
parents: 29
diff changeset
488
          (text (concat string region))
bb274c6c126a emacs defaults and keys
ellis <ellis@rwest.io>
parents: 29
diff changeset
489
          (buf (format "*Scratch for %s*" major)))
bb274c6c126a emacs defaults and keys
ellis <ellis@rwest.io>
parents: 29
diff changeset
490
     (with-current-buffer (get-buffer-create buf)
bb274c6c126a emacs defaults and keys
ellis <ellis@rwest.io>
parents: 29
diff changeset
491
       (funcall major)
34
882a5c1e7b9f emacs config
ellis <ellis@rwest.io>
parents: 33
diff changeset
492
       (save-excursion
30
bb274c6c126a emacs defaults and keys
ellis <ellis@rwest.io>
parents: 29
diff changeset
493
         (insert text)
bb274c6c126a emacs defaults and keys
ellis <ellis@rwest.io>
parents: 29
diff changeset
494
         (goto-char (point-min))
bb274c6c126a emacs defaults and keys
ellis <ellis@rwest.io>
parents: 29
diff changeset
495
         (comment-region (point-at-bol) (point-at-eol)))
34
882a5c1e7b9f emacs config
ellis <ellis@rwest.io>
parents: 33
diff changeset
496
       (vertical-motion 2))
30
bb274c6c126a emacs defaults and keys
ellis <ellis@rwest.io>
parents: 29
diff changeset
497
     (pop-to-buffer buf)))
bb274c6c126a emacs defaults and keys
ellis <ellis@rwest.io>
parents: 29
diff changeset
498
 
bb274c6c126a emacs defaults and keys
ellis <ellis@rwest.io>
parents: 29
diff changeset
499
 ;;;###autoload
bb274c6c126a emacs defaults and keys
ellis <ellis@rwest.io>
parents: 29
diff changeset
500
 (defun default-scratch-buffer (&optional arg)
bb274c6c126a emacs defaults and keys
ellis <ellis@rwest.io>
parents: 29
diff changeset
501
   "Produce a bespoke scratch buffer matching current major mode.
bb274c6c126a emacs defaults and keys
ellis <ellis@rwest.io>
parents: 29
diff changeset
502
 
bb274c6c126a emacs defaults and keys
ellis <ellis@rwest.io>
parents: 29
diff changeset
503
 With optional ARG as a prefix argument (\\[universal-argument]),
bb274c6c126a emacs defaults and keys
ellis <ellis@rwest.io>
parents: 29
diff changeset
504
 use `default-scratch-buffer-mode'.
bb274c6c126a emacs defaults and keys
ellis <ellis@rwest.io>
parents: 29
diff changeset
505
 
bb274c6c126a emacs defaults and keys
ellis <ellis@rwest.io>
parents: 29
diff changeset
506
 With ARG as a double prefix argument, prompt for a major mode
bb274c6c126a emacs defaults and keys
ellis <ellis@rwest.io>
parents: 29
diff changeset
507
 with completion.
bb274c6c126a emacs defaults and keys
ellis <ellis@rwest.io>
parents: 29
diff changeset
508
 
bb274c6c126a emacs defaults and keys
ellis <ellis@rwest.io>
parents: 29
diff changeset
509
 If region is active, copy its contents to the new scratch
bb274c6c126a emacs defaults and keys
ellis <ellis@rwest.io>
parents: 29
diff changeset
510
 buffer."
bb274c6c126a emacs defaults and keys
ellis <ellis@rwest.io>
parents: 29
diff changeset
511
   (interactive "P")
bb274c6c126a emacs defaults and keys
ellis <ellis@rwest.io>
parents: 29
diff changeset
512
   (let* ((default-mode default-scratch-buffer-mode)
bb274c6c126a emacs defaults and keys
ellis <ellis@rwest.io>
parents: 29
diff changeset
513
          (modes (default-scratch-list-modes))
bb274c6c126a emacs defaults and keys
ellis <ellis@rwest.io>
parents: 29
diff changeset
514
          (region (with-current-buffer (current-buffer)
bb274c6c126a emacs defaults and keys
ellis <ellis@rwest.io>
parents: 29
diff changeset
515
                    (if (region-active-p)
bb274c6c126a emacs defaults and keys
ellis <ellis@rwest.io>
parents: 29
diff changeset
516
                        (buffer-substring-no-properties
bb274c6c126a emacs defaults and keys
ellis <ellis@rwest.io>
parents: 29
diff changeset
517
                         (region-beginning)
bb274c6c126a emacs defaults and keys
ellis <ellis@rwest.io>
parents: 29
diff changeset
518
                         (region-end))
bb274c6c126a emacs defaults and keys
ellis <ellis@rwest.io>
parents: 29
diff changeset
519
                      "")))
bb274c6c126a emacs defaults and keys
ellis <ellis@rwest.io>
parents: 29
diff changeset
520
          (m))
bb274c6c126a emacs defaults and keys
ellis <ellis@rwest.io>
parents: 29
diff changeset
521
     (pcase (prefix-numeric-value arg)
bb274c6c126a emacs defaults and keys
ellis <ellis@rwest.io>
parents: 29
diff changeset
522
       (16 (progn
bb274c6c126a emacs defaults and keys
ellis <ellis@rwest.io>
parents: 29
diff changeset
523
             (setq m (intern (completing-read "Select major mode: " modes nil t)))
bb274c6c126a emacs defaults and keys
ellis <ellis@rwest.io>
parents: 29
diff changeset
524
             (default-scratch-buffer-setup region m)))
bb274c6c126a emacs defaults and keys
ellis <ellis@rwest.io>
parents: 29
diff changeset
525
       (4 (default-scratch-buffer-setup region default-mode))
bb274c6c126a emacs defaults and keys
ellis <ellis@rwest.io>
parents: 29
diff changeset
526
       (_ (default-scratch-buffer-setup region)))))
bb274c6c126a emacs defaults and keys
ellis <ellis@rwest.io>
parents: 29
diff changeset
527
 
bb274c6c126a emacs defaults and keys
ellis <ellis@rwest.io>
parents: 29
diff changeset
528
 ;;;###autoload
bb274c6c126a emacs defaults and keys
ellis <ellis@rwest.io>
parents: 29
diff changeset
529
 (defun scratch-new ()
bb274c6c126a emacs defaults and keys
ellis <ellis@rwest.io>
parents: 29
diff changeset
530
   "create a new scratch buffer. (could be *scratch* - *scratchN*)"
bb274c6c126a emacs defaults and keys
ellis <ellis@rwest.io>
parents: 29
diff changeset
531
   (interactive)
bb274c6c126a emacs defaults and keys
ellis <ellis@rwest.io>
parents: 29
diff changeset
532
   (let ((n 0)
bb274c6c126a emacs defaults and keys
ellis <ellis@rwest.io>
parents: 29
diff changeset
533
         bufname)
bb274c6c126a emacs defaults and keys
ellis <ellis@rwest.io>
parents: 29
diff changeset
534
     (while (progn
bb274c6c126a emacs defaults and keys
ellis <ellis@rwest.io>
parents: 29
diff changeset
535
              (setq bufname
34
882a5c1e7b9f emacs config
ellis <ellis@rwest.io>
parents: 33
diff changeset
536
            (concat "*scratch"
30
bb274c6c126a emacs defaults and keys
ellis <ellis@rwest.io>
parents: 29
diff changeset
537
                            (if (= n 0) "" (int-to-string n))
bb274c6c126a emacs defaults and keys
ellis <ellis@rwest.io>
parents: 29
diff changeset
538
                            "*"))
bb274c6c126a emacs defaults and keys
ellis <ellis@rwest.io>
parents: 29
diff changeset
539
              (setq n (1+ n))
bb274c6c126a emacs defaults and keys
ellis <ellis@rwest.io>
parents: 29
diff changeset
540
              (get-buffer bufname)))
bb274c6c126a emacs defaults and keys
ellis <ellis@rwest.io>
parents: 29
diff changeset
541
     (switch-to-buffer (get-buffer-create bufname))
bb274c6c126a emacs defaults and keys
ellis <ellis@rwest.io>
parents: 29
diff changeset
542
     (insert initial-scratch-message)
bb274c6c126a emacs defaults and keys
ellis <ellis@rwest.io>
parents: 29
diff changeset
543
     (lisp-interaction-mode)))
bb274c6c126a emacs defaults and keys
ellis <ellis@rwest.io>
parents: 29
diff changeset
544
 
21
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
545
 ;;; Shell
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
546
 (defun set-no-process-query-on-exit ()
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
547
   (let ((proc (get-buffer-process (current-buffer))))
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
548
     (when (processp proc)
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
549
       (set-process-query-on-exit-flag proc nil))))
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
550
 
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
551
 (add-hook 'shell-mode-hook 'set-no-process-query-on-exit)
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
552
 (add-hook 'term-exec-hook 'set-no-process-query-on-exit)
30
bb274c6c126a emacs defaults and keys
ellis <ellis@rwest.io>
parents: 29
diff changeset
553
 
21
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
554
 ;;; Eshell
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
555
 (defun eshell-new()
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
556
   "Open a new instance of eshell."
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
557
   (interactive)
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
558
   (eshell 'Z))
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
559
 
30
bb274c6c126a emacs defaults and keys
ellis <ellis@rwest.io>
parents: 29
diff changeset
560
 (setq eshell-highlight-prompt t
21
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
561
       eshell-hist-ignoredups t
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
562
       eshell-save-history-on-exit t
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
563
       eshell-prefer-lisp-functions nil
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
564
       eshell-destroy-buffer-when-process-dies t)
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
565
 
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
566
 (add-hook 'eshell-mode-hook
34
882a5c1e7b9f emacs config
ellis <ellis@rwest.io>
parents: 33
diff changeset
567
       (lambda ()
882a5c1e7b9f emacs config
ellis <ellis@rwest.io>
parents: 33
diff changeset
568
         (eshell/alias "d" "dired $1")
882a5c1e7b9f emacs config
ellis <ellis@rwest.io>
parents: 33
diff changeset
569
         (eshell/alias "ff" "find-file $1")
41
2b878ae73a84 emacs, skel, krypt
ellis <ellis@rwest.io>
parents: 38
diff changeset
570
         (eshell/alias "hgfe" "hg-fast-export.sh")))
21
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
571
 
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
572
 (defun eshell/clear ()
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
573
   "Clear the eshell buffer."
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
574
   (let ((inhibit-read-only t))
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
575
     (erase-buffer)
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
576
     (eshell-send-input)))
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
577
 
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
578
 (defun eshell-quit-or-delete-char (arg)
34
882a5c1e7b9f emacs config
ellis <ellis@rwest.io>
parents: 33
diff changeset
579
   (interactive "p")
882a5c1e7b9f emacs config
ellis <ellis@rwest.io>
parents: 33
diff changeset
580
   (if (and (eolp) (looking-back eshell-prompt-regexp))
882a5c1e7b9f emacs config
ellis <ellis@rwest.io>
parents: 33
diff changeset
581
       (progn
882a5c1e7b9f emacs config
ellis <ellis@rwest.io>
parents: 33
diff changeset
582
         (eshell-life-is-too-much) ; Why not? (eshell/exit)
882a5c1e7b9f emacs config
ellis <ellis@rwest.io>
parents: 33
diff changeset
583
         (ignore-errors
882a5c1e7b9f emacs config
ellis <ellis@rwest.io>
parents: 33
diff changeset
584
           (delete-window)))
882a5c1e7b9f emacs config
ellis <ellis@rwest.io>
parents: 33
diff changeset
585
     (delete-forward-char arg)))
21
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
586
 
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
587
 (add-hook 'eshell-mode-hook
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
588
           (lambda ()
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
589
             (bind-keys :map eshell-mode-map
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
590
                        ("C-d" . eshell-quit-or-delete-char))))
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
591
 
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
592
 (defun eshell-next-prompt (n)
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
593
   "Move to end of Nth next prompt in the buffer. See `eshell-prompt-regexp'."
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
594
   (interactive "p")
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
595
   (re-search-forward eshell-prompt-regexp nil t n)
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
596
   (when eshell-highlight-prompt
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
597
     (while (not (get-text-property (line-beginning-position) 'read-only) )
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
598
       (re-search-forward eshell-prompt-regexp nil t n)))
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
599
   (eshell-skip-prompt))
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
600
 
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
601
 (defun eshell-previous-prompt (n)
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
602
   "Move to end of Nth previous prompt in the buffer. See `eshell-prompt-regexp'."
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
603
   (interactive "p")
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
604
   (backward-char)
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
605
   (eshell-next-prompt (- n)))
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
606
 
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
607
 (defun eshell-insert-history ()
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
608
   "Displays the eshell history to select and insert back into your eshell."
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
609
   (interactive)
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
610
   (insert (ido-completing-read "Eshell history: "
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
611
                                (delete-dups
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
612
                                 (ring-elements eshell-history-ring)))))
34
882a5c1e7b9f emacs config
ellis <ellis@rwest.io>
parents: 33
diff changeset
613
 ;;; Tramp
882a5c1e7b9f emacs config
ellis <ellis@rwest.io>
parents: 33
diff changeset
614
 
882a5c1e7b9f emacs config
ellis <ellis@rwest.io>
parents: 33
diff changeset
615
 (setopt tramp-default-method "ssh"
882a5c1e7b9f emacs config
ellis <ellis@rwest.io>
parents: 33
diff changeset
616
         tramp-default-user user-login-name
882a5c1e7b9f emacs config
ellis <ellis@rwest.io>
parents: 33
diff changeset
617
         tramp-default-host "localhost")
21
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
618
 ;;; Org
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
619
 ;; todos
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
620
 (setq org-todo-keywords
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
621
       '((type "TBD(0!)" "TODO(t!)" "|")
93
17b6d1f39506 rdb refactor, skel stuff
ellis <ellis@rwest.io>
parents: 75
diff changeset
622
         (type "WIP(w!)" "|")
17b6d1f39506 rdb refactor, skel stuff
ellis <ellis@rwest.io>
parents: 75
diff changeset
623
         (sequence "FIND(q!)" "READ(r@!)" "WATCH(W@!)" "|")
17b6d1f39506 rdb refactor, skel stuff
ellis <ellis@rwest.io>
parents: 75
diff changeset
624
         (sequence "RESEARCH(s!)" "RECORD(e!)" "|")
17b6d1f39506 rdb refactor, skel stuff
ellis <ellis@rwest.io>
parents: 75
diff changeset
625
         (sequence "OUTLINE(O!)" "RESEARCH(A!)" "DRAFT(M!)" "REVIEW(R!)" "|")
17b6d1f39506 rdb refactor, skel stuff
ellis <ellis@rwest.io>
parents: 75
diff changeset
626
         (sequence "FIX(i!)" "TEST(t!)" "|")
17b6d1f39506 rdb refactor, skel stuff
ellis <ellis@rwest.io>
parents: 75
diff changeset
627
         (type "GOTO(g!)" "HACK(h!)" "NOTE(n!)" "CODE(c!)" "LINK(l!)" "|")
17b6d1f39506 rdb refactor, skel stuff
ellis <ellis@rwest.io>
parents: 75
diff changeset
628
         (type "KLUDGE(k@!)" "|")
17b6d1f39506 rdb refactor, skel stuff
ellis <ellis@rwest.io>
parents: 75
diff changeset
629
         (sequence "|" "DONE(d!)" "NOPE(x@!)" "FOUND(f@!)")))
21
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
630
 ;; captures
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
631
 (setq org-capture-templates
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
632
       '(("t" "task" entry (file "inbox.org") "* %^{title}\n- %?" :prepend t)
34
882a5c1e7b9f emacs config
ellis <ellis@rwest.io>
parents: 33
diff changeset
633
     ("1" "current-task-item" item (clock) "%i%?")
882a5c1e7b9f emacs config
ellis <ellis@rwest.io>
parents: 33
diff changeset
634
     ("2" "current-task-checkbox" checkitem (clock) "%i%?")
882a5c1e7b9f emacs config
ellis <ellis@rwest.io>
parents: 33
diff changeset
635
     ("3" "current-task-region" plain (clock) "%i" :immediate-finish t :empty-lines 1)
882a5c1e7b9f emacs config
ellis <ellis@rwest.io>
parents: 33
diff changeset
636
     ("4" "current-task-kill" plain (clock) "%c" :immediate-finish t :empty-lines 1)
882a5c1e7b9f emacs config
ellis <ellis@rwest.io>
parents: 33
diff changeset
637
     ("l" "log" item (file+headline "log.org" "log") "%U %?" :prepend t)
882a5c1e7b9f emacs config
ellis <ellis@rwest.io>
parents: 33
diff changeset
638
     ("s" "secret" table-line (file+function "krypt" org-ask-location) "| %^{key} | %^{val} |" :immediate-finish t :kill-buffer t)
882a5c1e7b9f emacs config
ellis <ellis@rwest.io>
parents: 33
diff changeset
639
     ("n" "note" plain (file+function "notes.org" org-ask-location) "%?")
882a5c1e7b9f emacs config
ellis <ellis@rwest.io>
parents: 33
diff changeset
640
     ("i" "idea" entry (file "inbox.org") "* OUTLINE %?\n:notes:\n:end:\n- _outline_ [/]\n  - [ ] \n  - [ ] \n- _refs_" :prepend t)
882a5c1e7b9f emacs config
ellis <ellis@rwest.io>
parents: 33
diff changeset
641
     ("b" "bug" entry (file "inbox.org") "* FIX %?\n- _review_\n- _fix_\n- _test_" :prepend t)
882a5c1e7b9f emacs config
ellis <ellis@rwest.io>
parents: 33
diff changeset
642
     ("r" "research" entry (file "inbox.org") "* RESEARCH %?\n:notes:\n:end:\n- _refs_" :prepend t)))
21
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
643
 (setq org-html-htmlize-output-type 'css
41
2b878ae73a84 emacs, skel, krypt
ellis <ellis@rwest.io>
parents: 38
diff changeset
644
       org-html-head-include-default-style nil
2b878ae73a84 emacs, skel, krypt
ellis <ellis@rwest.io>
parents: 38
diff changeset
645
       ;; comp2 default
2b878ae73a84 emacs, skel, krypt
ellis <ellis@rwest.io>
parents: 38
diff changeset
646
       org-ascii-text-width 80)
21
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
647
 
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
648
 (org-crypt-use-before-save-magic)
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
649
 
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
650
 (setq org-structure-template-alist
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
651
       '(("s" . "src")
34
882a5c1e7b9f emacs config
ellis <ellis@rwest.io>
parents: 33
diff changeset
652
     ("e" . "src emacs-lisp")
882a5c1e7b9f emacs config
ellis <ellis@rwest.io>
parents: 33
diff changeset
653
     ("x" . "src shell")
882a5c1e7b9f emacs config
ellis <ellis@rwest.io>
parents: 33
diff changeset
654
     ("l" . "src lisp")
882a5c1e7b9f emacs config
ellis <ellis@rwest.io>
parents: 33
diff changeset
655
     ("h" . "export html")
882a5c1e7b9f emacs config
ellis <ellis@rwest.io>
parents: 33
diff changeset
656
     ("p" . "src python")
882a5c1e7b9f emacs config
ellis <ellis@rwest.io>
parents: 33
diff changeset
657
     ("r" . "src rust")
882a5c1e7b9f emacs config
ellis <ellis@rwest.io>
parents: 33
diff changeset
658
     ("E" . "example")
882a5c1e7b9f emacs config
ellis <ellis@rwest.io>
parents: 33
diff changeset
659
     ("q" . "quote")
882a5c1e7b9f emacs config
ellis <ellis@rwest.io>
parents: 33
diff changeset
660
     ("c" . "center")
882a5c1e7b9f emacs config
ellis <ellis@rwest.io>
parents: 33
diff changeset
661
     ("C" . "comment")
882a5c1e7b9f emacs config
ellis <ellis@rwest.io>
parents: 33
diff changeset
662
     ("v" . "verse")))
21
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
663
 
96
301fd45bbe73 big refactor of lisp code
ellis <ellis@rwest.io>
parents: 93
diff changeset
664
 (setopt org-preview-latex-image-directory "~/.emacs.d/.cache/ltximg"
301fd45bbe73 big refactor of lisp code
ellis <ellis@rwest.io>
parents: 93
diff changeset
665
         org-latex-image-default-width "8cm"
301fd45bbe73 big refactor of lisp code
ellis <ellis@rwest.io>
parents: 93
diff changeset
666
         org-refile-use-cache t
301fd45bbe73 big refactor of lisp code
ellis <ellis@rwest.io>
parents: 93
diff changeset
667
         org-refile-allow-creating-parent-nodes 'confirm
21
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
668
 
96
301fd45bbe73 big refactor of lisp code
ellis <ellis@rwest.io>
parents: 93
diff changeset
669
         org-refile-targets '((nil :maxlevel . 3)
301fd45bbe73 big refactor of lisp code
ellis <ellis@rwest.io>
parents: 93
diff changeset
670
                              (org-agenda-files :maxlevel . 3))
301fd45bbe73 big refactor of lisp code
ellis <ellis@rwest.io>
parents: 93
diff changeset
671
         org-confirm-babel-evaluate nil
301fd45bbe73 big refactor of lisp code
ellis <ellis@rwest.io>
parents: 93
diff changeset
672
         org-src-fontify-natively t
301fd45bbe73 big refactor of lisp code
ellis <ellis@rwest.io>
parents: 93
diff changeset
673
         org-src-tabs-act-natively t
301fd45bbe73 big refactor of lisp code
ellis <ellis@rwest.io>
parents: 93
diff changeset
674
         org-footnote-section nil
301fd45bbe73 big refactor of lisp code
ellis <ellis@rwest.io>
parents: 93
diff changeset
675
         org-log-into-drawer t
301fd45bbe73 big refactor of lisp code
ellis <ellis@rwest.io>
parents: 93
diff changeset
676
         org-log-states-order-reversed nil
301fd45bbe73 big refactor of lisp code
ellis <ellis@rwest.io>
parents: 93
diff changeset
677
         org-clock-persist 'history)
21
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
678
 
96
301fd45bbe73 big refactor of lisp code
ellis <ellis@rwest.io>
parents: 93
diff changeset
679
 (add-hook 'after-init-hook #'org-clock-persistence-insinuate)
21
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
680
 
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
681
 (defun org-todo-at-date (date)
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
682
   "create a todo entry for a given date."
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
683
   (interactive (list (org-time-string-to-time (org-read-date))))
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
684
   (cl-flet ((org-current-effective-time (&rest r) date)
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
685
             (org-today (&rest r) (time-to-days date)))
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
686
     (cond ((eq major-mode 'org-mode) (org-todo))
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
687
           ((eq major-mode 'org-agenda-mode) (org-agenda-todo)))))
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
688
 
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
689
 (defun org-ask-location ()
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
690
   "prompt for a location\"\""
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
691
   (let* ((org-refile-targets '((nil :maxlevel . 9)))
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
692
          (hd (condition-case nil
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
693
                  (car (org-refile-get-location))
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
694
                (error (car org-refile-history)))))
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
695
     (goto-char (point-min))
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
696
     (outline-next-heading)
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
697
     (if (re-search-forward
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
698
          (format org-complex-heading-regexp-format (regexp-quote hd))
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
699
          nil t)
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
700
         (goto-char (point-at-bol))
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
701
       (goto-char (point-max))
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
702
       (or (bolp) (insert "\n"))
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
703
       (insert "* " hd "\n")))
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
704
   (end-of-line))
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
705
 
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
706
 (defun org-capture-fileref-snippet (f type headers func-name)
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
707
   (let* ((code-snippet
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
708
           (buffer-substring-no-properties (mark) (- (point) 1)))
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
709
          (file-name   (buffer-file-name))
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
710
          (file-base   (file-name-nondirectory file-name))
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
711
          (line-number (line-number-at-pos (region-beginning)))
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
712
          (initial-txt (if (null func-name)
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
713
                           (format "From [[file:%s::%s][%s]]:"
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
714
                                   file-name line-number file-base)
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
715
                         (format "From ~%s~ (in [[file:%s::%s][%s]]):"
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
716
                                 func-name file-name line-number
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
717
                                 file-base))))
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
718
     (format "
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
719
     %s
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
720
     #+BEGIN_%s %s
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
721
  %s
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
722
     #+END_%s" initial-txt type headers code-snippet type)))
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
723
 
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
724
 (defun org-capture-clip-snippet (f)
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
725
   "Given a file, F, this captures the currently selected text
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
726
      within an Org EXAMPLE block and a backlink to the file."
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
727
   (with-current-buffer (find-buffer-visiting f)
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
728
     (org-capture-fileref-snippet f "EXAMPLE" "" nil)))
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
729
 
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
730
 (defun org-capture-code-snippet (f)
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
731
   "Given a file, F, this captures the currently selected text
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
732
      within an Org SRC block with a language based on the current mode
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
733
      and a backlink to the function and the file."
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
734
   (with-current-buffer (find-buffer-visiting f)
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
735
     (let ((org-src-mode (replace-regexp-in-string "-mode" "" (format "%s" major-mode)))
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
736
           (func-name (which-function)))
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
737
       (org-capture-fileref-snippet f "SRC" org-src-mode func-name))))
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
738
 
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
739
 (defun region-to-clocked-task (start end)
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
740
   "Copies the selected text to the currently clocked in org-mode task."
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
741
   (interactive "r")
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
742
   (org-capture-string (buffer-substring-no-properties start end) "3"))
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
743
 
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
744
 (setq org-global-properties
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
745
       '(quote (("EFFORT_ALL" . "0:15 0:30 0:45 1:00 2:00 3:00 4:00 5:00 6:00 0:00")
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
746
                ("STYLE_ALL" . "habit"))))
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
747
 
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
748
 (defun org-mode-ask-effort ()
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
749
   "Ask for an effort estimate when clocking in."
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
750
   (unless (org-entry-get (point) "Effort")
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
751
     (let ((effort
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
752
            (completing-read
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
753
             "Effort: "
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
754
             (org-entry-get-multivalued-property (point) "Effort"))))
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
755
       (unless (equal effort "")
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
756
         (org-set-property "Effort" effort)))))
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
757
 
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
758
 (add-hook 'org-clock-in-prepare-hook
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
759
           'org-mode-ask-effort)
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
760
 
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
761
 ;;;###autoload
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
762
 (defun org-adjust-tags-column-reset-tags ()
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
763
   "In org-mode buffers it will reset tag position according to
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
764
 `org-tags-column'."
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
765
   (when (and
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
766
          (not (string= (buffer-name) "*Remember*"))
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
767
          (eql major-mode 'org-mode))
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
768
     (let ((b-m-p (buffer-modified-p)))
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
769
       (condition-case nil
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
770
           (save-excursion
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
771
             (goto-char (point-min))
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
772
             (command-execute 'outline-next-visible-heading)
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
773
             ;; disable (message) that org-set-tags generates
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
774
             (flet ((message (&rest ignored) nil))
34
882a5c1e7b9f emacs config
ellis <ellis@rwest.io>
parents: 33
diff changeset
775
           (org-set-tags 1 t))
21
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
776
             (set-buffer-modified-p b-m-p))
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
777
         (error nil)))))
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
778
 
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
779
 ;;;###autoload
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
780
 (defun org-align-all-tables ()
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
781
   "align all tables in current buffer"
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
782
   (interactive)
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
783
   (org-table-map-tables 'org-table-align 'quietly))
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
784
 
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
785
 (defun org-remove-redundant-tags ()
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
786
   "Remove redundant tags of headlines in current buffer.
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
787
 
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
788
 A tag is considered redundant if it is local to a headline and
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
789
 inherited by a parent headline."
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
790
   (interactive)
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
791
   (when (eq major-mode 'org-mode)
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
792
     (save-excursion
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
793
       (org-map-entries
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
794
        (lambda ()
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
795
          (let ((alltags (split-string (or (org-entry-get (point) "ALLTAGS") "") ":"))
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
796
                local inherited tag)
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
797
            (dolist (tag alltags)
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
798
              (if (get-text-property 0 'inherited tag)
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
799
                  (push tag inherited) (push tag local)))
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
800
            (dolist (tag local)
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
801
              (if (member tag inherited) (org-toggle-tag tag 'off)))))
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
802
        t nil))))
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
803
 ;;;; Agenda
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
804
 (defvar org-agenda-overriding-header)
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
805
 (defvar org-agenda-sorting-strategy)
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
806
 (defvar org-agenda-restrict)
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
807
 (defvar org-agenda-restrict-begin)
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
808
 (defvar org-agenda-restrict-end)
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
809
 
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
810
 ;;;###autoload
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
811
 (defun org-agenda-reschedule-to-today ()
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
812
   (interactive)
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
813
   (flet ((org-read-date (&rest rest) (current-time)))
34
882a5c1e7b9f emacs config
ellis <ellis@rwest.io>
parents: 33
diff changeset
814
     (call-interactively 'org-agenda-schedule)))
21
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
815
 
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
816
 ;; Patch org-mode to use vertical splitting
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
817
 (defadvice org-prepare-agenda (after org-fix-split)
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
818
   (toggle-window-split))
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
819
 (ad-activate 'org-prepare-agenda)
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
820
 
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
821
 (add-hook 'org-agenda-mode-hook (lambda () (hl-line-mode 1)))
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
822
 
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
823
 (defun org-agenda-log-mode-colorize-block ()
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
824
   "Set different line spacing based on clock time duration."
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
825
   (save-excursion
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
826
     (let* ((colors (cl-case (alist-get 'background-mode (frame-parameters))
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
827
                      (light
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
828
                       (list "#F6B1C3" "#FFFF9D" "#BEEB9F" "#ADD5F7"))
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
829
                      (dark
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
830
                       (list "#aa557f" "DarkGreen" "DarkSlateGray" "DarkSlateBlue"))))
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
831
            pos
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
832
            duration)
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
833
       (nconc colors colors)
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
834
       (goto-char (point-min))
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
835
       (while (setq pos (next-single-property-change (point) 'duration))
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
836
         (goto-char pos)
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
837
         (when (and (not (equal pos (point-at-eol)))
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
838
                    (setq duration (org-get-at-bol 'duration)))
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
839
           ;; larger duration bar height
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
840
           (let ((line-height (if (< duration 15) 1.0 (+ 0.5 (/ duration 30))))
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
841
                 (ov (make-overlay (point-at-bol) (1+ (point-at-eol)))))
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
842
             (overlay-put ov 'face `(:background ,(car colors) :foreground "black"))
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
843
             (setq colors (cdr colors))
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
844
             (overlay-put ov 'line-height line-height)
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
845
             (overlay-put ov 'line-spacing (1- line-height))))))))
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
846
 
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
847
 (add-hook 'org-agenda-finalize-hook #'org-agenda-log-mode-colorize-block)
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
848
 
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
849
 ;;;###autoload
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
850
 (defun org-agenda-current-subtree-or-region (only-todos)
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
851
   "Display an agenda view for the current subtree or region.
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
852
  With prefix, display only TODO-keyword items."
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
853
   (interactive "P")
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
854
   (let ((starting-point (point))
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
855
         header)
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
856
     (with-current-buffer (or (buffer-base-buffer (current-buffer))
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
857
                              (current-buffer))
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
858
       (if (use-region-p)
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
859
           (progn
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
860
             (setq header "Region")
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
861
             (put 'org-agenda-files 'org-restrict (list (buffer-file-name (current-buffer))))
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
862
             (setq org-agenda-restrict (current-buffer))
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
863
             (move-marker org-agenda-restrict-begin (region-beginning))
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
864
             (move-marker org-agenda-restrict-end
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
865
                          (save-excursion
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
866
                            ;; If point is at beginning of line, include
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
867
                            ;; heading on that line by moving forward 1.
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
868
                            (goto-char (1+ (region-end)))
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
869
                            (org-end-of-subtree))))
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
870
         ;; No region; restrict to subtree.
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
871
         (save-excursion
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
872
           (save-restriction
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
873
             ;; In case the command was called from an indirect buffer, set point
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
874
             ;; in the base buffer to the same position while setting restriction.
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
875
             (widen)
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
876
             (goto-char starting-point)
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
877
             (setq header "Subtree")
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
878
             (org-agenda-set-restriction-lock))))
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
879
       ;; NOTE: Unlike other agenda commands, binding `org-agenda-sorting-strategy'
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
880
       ;; around `org-search-view' seems to have no effect.
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
881
       (let ((org-agenda-sorting-strategy '(priority-down timestamp-up))
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
882
             (org-agenda-overriding-header header))
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
883
         (org-search-view (if only-todos t nil) "*"))
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
884
       (org-agenda-remove-restriction-lock t)
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
885
       (message nil))))
3a0dac7e29ae Signed-off-by: ellis <ellis@rwest.io>
ellis <ellis@rwest.io>
parents:
diff changeset
886
 
24
35ec32058823 tenex updates - util wrappers
ellis <ellis@rwest.io>
parents: 21
diff changeset
887
 ;;; Tempo
35ec32058823 tenex updates - util wrappers
ellis <ellis@rwest.io>
parents: 21
diff changeset
888
 (setq tempo-interactive t)
26
51a8370766f7 emacs config
ellis <ellis@rwest.io>
parents: 24
diff changeset
889
 
51a8370766f7 emacs config
ellis <ellis@rwest.io>
parents: 24
diff changeset
890
 (provide 'default)
27
1142c97f92ab emacs config
ellis <ellis@rwest.io>
parents: 26
diff changeset
891
 ;; default.el ends here