changelog shortlog graph tags branches changeset files file revisions raw help

Mercurial > core / annotate emacs/default.el

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