changelog shortlog graph tags branches changeset files file revisions raw help

Mercurial > infra > home / annotate .emacs.d/ellis.el

changeset 50: 4ff9d125b31f
parent: f3c32ffdbbef
child: 8bd50ea9a546
author: Richard Westhaver <ellis@rwest.io>
date: Mon, 01 Jul 2024 21:45:11 -0400
permissions: -rw-r--r--
description: paredit keys
47
02dec5169a1e emacs updates
Richard Westhaver <ellis@rwest.io>
parents: 42
diff changeset
1
 ;;; ellis.el --- Richard's custom Emacs config -*- lexical-binding: t; -*-
2
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
2
 
47
02dec5169a1e emacs updates
Richard Westhaver <ellis@rwest.io>
parents: 42
diff changeset
3
 ;; Copyright (C) 2024
2
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
4
 
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
5
 ;; Author: Richard Westhaver <ellis@rwest.io>
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
6
 
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
7
 ;; This program is free software; you can redistribute it and/or modify
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
8
 ;; it under the terms of the GNU General Public License as published by
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
9
 ;; the Free Software Foundation, either version 3 of the License, or
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
10
 ;; (at your option) any later version.
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
11
 
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
12
 ;; This program is distributed in the hope that it will be useful,
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
13
 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
14
 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
15
 ;; GNU General Public License for more details.
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
16
 
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
17
 ;; You should have received a copy of the GNU General Public License
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
18
 ;; along with this program.  If not, see <https://www.gnu.org/licenses/>.
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
19
 
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
20
 ;;; Commentary:
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
21
 
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
22
 ;; This is an example of what you may want to add to your custom
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
23
 ;; config file. Feel free to rip.
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
24
 
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
25
 ;;; Code:
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
26
 (require 'inbox)
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
27
 (require 'sk)
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
28
 (require 'sxp)
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
29
 (require 'ulang)
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
30
 
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
31
 (defalias 'make #'compile)
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
32
 
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
33
 (setopt default-theme 'modus-vivendi-tritanopia
19
ca703415cc62 add paredit.el
Richard Westhaver <ellis@rwest.io>
parents: 3
diff changeset
34
         user-lab-directory (join-paths user-home-directory "lab")
34
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
35
         company-source-directory (join-paths user-home-directory "comp"))
2
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
36
 
42
b9e2f76128bb sbcl update
Richard Westhaver <ellis@rwest.io>
parents: 41
diff changeset
37
 ;; (unless (display-graphic-p) (setq default-theme 'wheatgrass))
2
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
38
 
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
39
 (when (linux-p) (setq dired-listing-switches "-alsh"))
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
40
 
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
41
 (defvar emacs-config-source (join-paths company-source-directory "core/emacs"))
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
42
 
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
43
 ;;;###autoload
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
44
 (defun edit-emacs-config (&optional src)
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
45
   (interactive (list current-prefix-arg))
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
46
   (let ((file (if src 
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
47
                   (expand-file-name "default.el" emacs-config-source) 
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
48
                 user-custom-file)))
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
49
     (find-file file)))
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
50
 
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
51
 (keymap-set user-map "e c" #'edit-emacs-config)
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
52
 (keymap-set emacs-lisp-mode-map "C-c C-l" #'load-file)
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
53
 (keymap-set emacs-lisp-mode-map "C-c M-k" #'elisp-byte-compile-file)
34
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
54
 (keymap-set user-map "v t" #'org-tags-view)
2
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
55
 
19
ca703415cc62 add paredit.el
Richard Westhaver <ellis@rwest.io>
parents: 3
diff changeset
56
 (require 'paredit)
2
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
57
 (repeat-mode)
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
58
 
50
4ff9d125b31f paredit keys
Richard Westhaver <ellis@rwest.io>
parents: 49
diff changeset
59
 (keymap-set lisp-mode-shared-map "C-(" #'paredit-open-round)
4ff9d125b31f paredit keys
Richard Westhaver <ellis@rwest.io>
parents: 49
diff changeset
60
 (keymap-set lisp-mode-shared-map "M-(" #'paredit-wrap-sexp)
4ff9d125b31f paredit keys
Richard Westhaver <ellis@rwest.io>
parents: 49
diff changeset
61
 (keymap-set lisp-mode-shared-map "M-;" #'paredit-comment-dwim)
4ff9d125b31f paredit keys
Richard Westhaver <ellis@rwest.io>
parents: 49
diff changeset
62
 (keymap-set lisp-mode-shared-map "C-{" #'paredit-backward-barf-sexp)
4ff9d125b31f paredit keys
Richard Westhaver <ellis@rwest.io>
parents: 49
diff changeset
63
 (keymap-set lisp-mode-shared-map "C-}" #'paredit-forward-barf-sexp)
4ff9d125b31f paredit keys
Richard Westhaver <ellis@rwest.io>
parents: 49
diff changeset
64
 (keymap-set lisp-mode-shared-map "C-M-{" #'paredit-forward-slurp-sexp)
4ff9d125b31f paredit keys
Richard Westhaver <ellis@rwest.io>
parents: 49
diff changeset
65
 (keymap-set lisp-mode-shared-map "C-M-}" #'paredit-backward-slurp-sexp)
4ff9d125b31f paredit keys
Richard Westhaver <ellis@rwest.io>
parents: 49
diff changeset
66
 
2
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
67
 (defun remember-project ()
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
68
   (interactive)
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
69
   (project-remember-project (project-current))
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
70
   project--list)
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
71
 
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
72
 (defun remember-lab-projects ()
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
73
   (interactive)
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
74
   (project-remember-projects-under user-lab-directory t))
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
75
 
34
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
76
 (defun remember-comp-projects ()
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
77
   (interactive)
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
78
   (project-remember-projects-under company-source-directory t))
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
79
 
2
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
80
 (keymap-global-set "C-<tab>" #'hippie-expand)
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
81
 (keymap-set minibuffer-local-map "C-<tab>" #'hippie-expand)
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
82
 (keymap-set ctl-x-x-map "p p" #'remember-project)
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
83
 (keymap-set ctl-x-x-map "p l" #'remember-lab-projects)
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
84
 
36
963513ec0fcd skt-templates
Richard Westhaver <ellis@rwest.io>
parents: 34
diff changeset
85
 (add-hook 'prog-mode-hook #'skel-minor-mode)
963513ec0fcd skt-templates
Richard Westhaver <ellis@rwest.io>
parents: 34
diff changeset
86
 (add-hook 'org-mode-hook #'skel-minor-mode)
47
02dec5169a1e emacs updates
Richard Westhaver <ellis@rwest.io>
parents: 42
diff changeset
87
 ;; (add-hook 'prog-mode-hook #'company-mode)
2
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
88
 
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
89
 (add-hook 'notmuch-message-mode-hook #'turn-on-orgtbl)
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
90
 
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
91
 (use-package markdown-mode :ensure t)
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
92
 
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
93
 (use-package ol-notmuch :ensure t)
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
94
 
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
95
 (use-package notmuch 
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
96
   :ensure t
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
97
   :init
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
98
   (setopt
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
99
    mail-user-agent 'message-user-agent
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
100
    smtpmail-smtp-server "smtp.gmail.com"
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
101
    message-send-mail-function 'message-smtpmail-send-it
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
102
    smtpmail-debug-info t
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
103
    message-default-mail-headers "Cc: \nBcc: \n"
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
104
    message-kill-buffer-on-exit t
37
964e4427f5ad sk templates
Richard Westhaver <ellis@rwest.io>
parents: 36
diff changeset
105
    user-mail-address "richard.westhaver@gmail.com"
2
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
106
    user-full-name "Richard Westhaver"
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
107
    notmuch-hello-sections '(notmuch-hello-insert-saved-searches 
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
108
                             notmuch-hello-insert-search 
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
109
                             notmuch-hello-insert-recent-searches 
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
110
                             notmuch-hello-insert-alltags)
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
111
    notmuch-show-logo nil
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
112
    notmuch-search-oldest-first nil
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
113
    notmuch-hello-hide-tags '("kill")
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
114
    notmuch-saved-searches '((:name "inbox" :query "tag:inbox" :key "i")
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
115
                             (:name "unread" :query "tag:unread" :key "u")
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
116
                             (:name "new" :query "tag:new" :key "n")
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
117
                             (:name "sent" :query "tag:sent" :key "e")
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
118
                             (:name "drafts" :query "tag:draft" :key "d")
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
119
                             (:name "all mail" :query "*" :key "a")
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
120
                             (:name "todo" :query "tag:todo" :key "t")))
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
121
   :config
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
122
   ;;;###autoload
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
123
   (defun notmuch-exec-offlineimap ()
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
124
     "execute offlineimap command and tag new mail with notmuch"
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
125
     (interactive)
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
126
     (start-process-shell-command "offlineimap"
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
127
                                  "*offlineimap*"
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
128
                                  "offlineimap -o")
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
129
     (notmuch-refresh-all-buffers))
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
130
 
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
131
   (defun offlineimap-get-password (host port)
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
132
     (let* ((netrc (netrc-parse (expand-file-name "~/.netrc.gpg")))
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
133
            (hostentry (netrc-machine netrc host port port)))
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
134
       (when hostentry (netrc-get hostentry "password"))))
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
135
 
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
136
   (defun mark-as-read ()
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
137
     "mark message as read."
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
138
     (interactive)
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
139
     (notmuch-search-tag '("-new" "-unread" "-inbox")))
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
140
 
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
141
   (defun mark-as-todo ()
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
142
     "mark message as todo."
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
143
     (interactive)
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
144
     (mark-as-read)
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
145
     (notmuch-search-tag '("-new" "-unread" "-inbox" "+todo")))
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
146
 
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
147
   (defun mark-as-spam ()
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
148
     "mark message as spam."
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
149
     (interactive)
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
150
     (mark-as-read)
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
151
     (notmuch-search-tag (list "+spam")))
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
152
 
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
153
   (keymap-set user-map "e m" #'notmuch)
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
154
   (keymap-set user-map "e M" #'notmuch-exec-offlineimap)
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
155
   (keymap-set notmuch-search-mode-map "S" #'mark-as-spam)
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
156
   (keymap-set notmuch-search-mode-map "R" #'mark-as-read)
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
157
   (keymap-set notmuch-search-mode-map "T" #'mark-as-todo))
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
158
 
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
159
 (use-package elfeed 
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
160
   :ensure t
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
161
   :custom
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
162
   elfeed-feeds 
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
163
   '(("http://threesixty360.wordpress.com/feed/" blog math)
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
164
     ("http://www.50ply.com/atom.xml" blog dev)
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
165
     ("http://blog.cryptographyengineering.com/feeds/posts/default" blog)
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
166
     ("http://abstrusegoose.com/feed.xml" comic)
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
167
     ("http://accidental-art.tumblr.com/rss" image math)
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
168
     ("http://researchcenter.paloaltonetworks.com/unit42/feed/" security)
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
169
     ("http://curiousprogrammer.wordpress.com/feed/" blog dev)
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
170
     ("http://feeds.feedburner.com/amazingsuperpowers" comic)
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
171
     ("http://amitp.blogspot.com/feeds/posts/default" blog dev)
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
172
     ("http://pages.cs.wisc.edu/~psilord/blog/rssfeed.rss" blog)
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
173
     ("http://www.anticscomic.com/?feed=rss2" comic)
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
174
     ("http://feeds.feedburner.com/blogspot/TPQSS" blog dev)
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
175
     ("http://techchrunch.com/feeds" tech news)
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
176
     ("https://rss.nytimes.com/services/xml/rss/nyt/Technology.xml" tech news)
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
177
     ("https://static.fsf.org/fsforg/rss/news.xml" tech news)
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
178
     ("https://feeds.npr.org/1001/rss.xml" news)
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
179
     ("https://search.cnbc.com/rs/search/combinedcms/view.xml?partnerId=wrss01&id=10000664" fin news)
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
180
     ("https://search.cnbc.com/rs/search/combinedcms/view.xml?partnerId=wrss01&id=19854910" tech news)
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
181
     ("https://search.cnbc.com/rs/search/combinedcms/view.xml?partnerId=wrss01&id=100003114" us news)
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
182
     ("http://arxiv.org/rss/cs" cs rnd)
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
183
     ("http://arxiv.org/rss/math" math rnd)
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
184
     ("http://arxiv.org/rss/q-fin" q-fin rnd)
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
185
     ("http://arxiv.org/rss/stat" stat rnd)
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
186
     ("http://arxiv.org/rss/econ" econ rnd)
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
187
     ;; John Wiegley
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
188
     ("http://newartisans.com/rss.xml" dev blog)
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
189
     ;; comp
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
190
     ;; ("https://lab.rwest.io/comp.atom?feed_token=pHu9qwLkjy4CWJHx9rrJ" comp vc)
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
191
     ("https://www.reddit.com/r/listentothis/.rss" music reddit)
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
192
     ("https://www.ftc.gov/feeds/press-release-consumer-protection.xml" gov ftc)
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
193
     ("https://api2.fcc.gov/edocs/public/api/v1/rss/" gov fcc)
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
194
     )
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
195
   :init
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
196
   (defun yt-dl-it (url)
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
197
     "Downloads the URL in an async shell"
42
b9e2f76128bb sbcl update
Richard Westhaver <ellis@rwest.io>
parents: 41
diff changeset
198
     (let ((default-directory user-stash-directory))
b9e2f76128bb sbcl update
Richard Westhaver <ellis@rwest.io>
parents: 41
diff changeset
199
       (async-shell-command (format "yt-dlp %s" url))))
2
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
200
 
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
201
   (defun elfeed-youtube-dl (&optional use-generic-p)
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
202
     "Youtube-DL link"
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
203
     (interactive "P")
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
204
     (let ((entries (elfeed-search-selected)))
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
205
       (cl-loop for entry in entries
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
206
                do (elfeed-untag entry 'unread)
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
207
                when (elfeed-entry-link entry)
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
208
                do (yt-dl-it it))
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
209
       (mapc #'elfeed-search-update-entry entries)
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
210
       (unless (use-region-p) (forward-line))))
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
211
   :config
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
212
   (keymap-set elfeed-search-mode-map "d" 'elfeed-youtube-dl)
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
213
   (keymap-set user-map "e f" #'elfeed)
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
214
   (keymap-set user-map "e F" #'elfeed-update))
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
215
 
42
b9e2f76128bb sbcl update
Richard Westhaver <ellis@rwest.io>
parents: 41
diff changeset
216
 (use-package elfeed-tube
b9e2f76128bb sbcl update
Richard Westhaver <ellis@rwest.io>
parents: 41
diff changeset
217
   :ensure t
b9e2f76128bb sbcl update
Richard Westhaver <ellis@rwest.io>
parents: 41
diff changeset
218
   :after elfeed
b9e2f76128bb sbcl update
Richard Westhaver <ellis@rwest.io>
parents: 41
diff changeset
219
   :config
b9e2f76128bb sbcl update
Richard Westhaver <ellis@rwest.io>
parents: 41
diff changeset
220
   ;; (elfeed-tube-setup)
b9e2f76128bb sbcl update
Richard Westhaver <ellis@rwest.io>
parents: 41
diff changeset
221
   (elfeed-tube-add-feeds '("detroit techno" "boiler room dj" "brad mehldau" "chris 'daddy' dave"))
b9e2f76128bb sbcl update
Richard Westhaver <ellis@rwest.io>
parents: 41
diff changeset
222
   :bind (:map elfeed-show-mode-map
b9e2f76128bb sbcl update
Richard Westhaver <ellis@rwest.io>
parents: 41
diff changeset
223
          ("F" . elfeed-tube-fetch)
b9e2f76128bb sbcl update
Richard Westhaver <ellis@rwest.io>
parents: 41
diff changeset
224
          ([remap save-buffer] . elfeed-tube-save)
b9e2f76128bb sbcl update
Richard Westhaver <ellis@rwest.io>
parents: 41
diff changeset
225
          :map elfeed-search-mode-map
b9e2f76128bb sbcl update
Richard Westhaver <ellis@rwest.io>
parents: 41
diff changeset
226
          ("F" . elfeed-tube-fetch)
b9e2f76128bb sbcl update
Richard Westhaver <ellis@rwest.io>
parents: 41
diff changeset
227
          ([remap save-buffer] . elfeed-tube-save)))
b9e2f76128bb sbcl update
Richard Westhaver <ellis@rwest.io>
parents: 41
diff changeset
228
 
b9e2f76128bb sbcl update
Richard Westhaver <ellis@rwest.io>
parents: 41
diff changeset
229
 (use-package elfeed-tube-mpv
b9e2f76128bb sbcl update
Richard Westhaver <ellis@rwest.io>
parents: 41
diff changeset
230
   :ensure t
b9e2f76128bb sbcl update
Richard Westhaver <ellis@rwest.io>
parents: 41
diff changeset
231
   :bind (:map elfeed-show-mode-map
b9e2f76128bb sbcl update
Richard Westhaver <ellis@rwest.io>
parents: 41
diff changeset
232
               ("C-c C-f" . elfeed-tube-mpv-follow-mode)
b9e2f76128bb sbcl update
Richard Westhaver <ellis@rwest.io>
parents: 41
diff changeset
233
               ("C-c C-w" . elfeed-tube-mpv-where)))
b9e2f76128bb sbcl update
Richard Westhaver <ellis@rwest.io>
parents: 41
diff changeset
234
 
2
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
235
 (use-package org-mime :ensure t)
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
236
 
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
237
 (use-package sh-script
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
238
   :hook (sh-mode . flymake-mode))
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
239
 
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
240
 ;;; Org Config
49
f3c32ffdbbef publish-dir remote
Richard Westhaver <ellis@rwest.io>
parents: 47
diff changeset
241
 (setq publish-dir "/ssh:rurik:/srv/http/compiler.company")
2
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
242
 (keymap-set user-map "t" #'org-todo)
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
243
 
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
244
 ;; populate org-babel
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
245
 (org-babel-do-load-languages
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
246
  ;; TODO 2021-10-24: bqn, apl, k
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
247
  'org-babel-load-languages '((shell . t)
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
248
 			     (emacs-lisp . t)
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
249
 			     (lisp . t)
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
250
 			     (org . t)
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
251
 			     (eshell . t)
34
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
252
                              (calc . t)
2
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
253
 			     (sed . t)
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
254
 			     (awk . t)
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
255
 			     (dot . t)
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
256
 			     (js . t)
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
257
 			     (C . t)
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
258
 			     (python . t)
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
259
 			     (lua . t)
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
260
 			     (lilypond . t)))
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
261
 ;;; IRC
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
262
 (setq erc-format-nick-function 'erc-format-@nick)
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
263
 
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
264
 (defun start-erc ()
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
265
   "Connect to IRC."
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
266
   (interactive)
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
267
   (erc-tls :server "irc.libera.chat" :port 6697
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
268
            :client-certificate '("/mnt/y/data/private/krypt/libera.pem"))
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
269
   (setq erc-autojoin-channels-alist '(("irc.libera.chat" "#emacs")
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
270
                                       ("irc.libera.chat" "#linux")
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
271
                                       ("irc.libera.chat" "#rust")
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
272
                                       ("irc.libera.chat" "#btrfs")
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
273
                                       ("irc.libera.chat" "#lisp")
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
274
                                       ("irc.libera.chat" "#sbcl")
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
275
                                       ("irc.oftc.net" "#llvm"))))
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
276
 ;;; Tags
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
277
 ;;;###autoload
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
278
 (defun refresh-tags ()
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
279
   "Refresh TAGS database in `user-emacs-directory'."
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
280
   (interactive)
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
281
   (let ((default-directory user-emacs-directory))
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
282
     (async-shell-command 
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
283
      "etags ./*.el \\
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
284
 ./lib/*.el \\
19
ca703415cc62 add paredit.el
Richard Westhaver <ellis@rwest.io>
parents: 3
diff changeset
285
 ~/comp/core/emacs/*.el \\
ca703415cc62 add paredit.el
Richard Westhaver <ellis@rwest.io>
parents: 3
diff changeset
286
 ~/comp/core/emacs/lib/*.el \\
2
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
287
 -o TAGS")))
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
288
 
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
289
 (unless (string-equal "hyde"  system-name)
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
290
   (add-hook 'dired-mode-hook #'all-the-icons-dired-mode)
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
291
   (add-hook 'ibuffer-mode-hook #'all-the-icons-ibuffer-mode))
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
292
 
24
Richard Westhaver <ellis@rwest.io>
parents: 19
diff changeset
293
 ;; strangerdanger
37
964e4427f5ad sk templates
Richard Westhaver <ellis@rwest.io>
parents: 36
diff changeset
294
 ;; (setq slime-enable-evaluate-in-emacs t)
24
Richard Westhaver <ellis@rwest.io>
parents: 19
diff changeset
295
 
34
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
296
 (defun org-word-count (beg end
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
297
                            &optional count-latex-macro-args?
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
298
                            count-footnotes?)
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
299
   "Report the number of words in the Org mode buffer or selected region.
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
300
 Ignores:
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
301
 - comments
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
302
 - tables
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
303
 - source code blocks (#+BEGIN_SRC ... #+END_SRC, and inline blocks)
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
304
 - hyperlinks (but does count words in hyperlink descriptions)
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
305
 - tags, priorities, and TODO keywords in headers
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
306
 - sections tagged as 'not for export'.
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
307
 
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
308
 The text of footnote definitions is ignored, unless the optional argument
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
309
 COUNT-FOOTNOTES? is non-nil.
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
310
 
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
311
 If the optional argument COUNT-LATEX-MACRO-ARGS? is non-nil, the word count
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
312
 includes LaTeX macro arguments (the material between {curly braces}).
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
313
 Otherwise, and by default, every LaTeX macro counts as 1 word regardless
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
314
 of its arguments."
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
315
   (interactive "r")
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
316
   (unless mark-active
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
317
     (setf beg (point-min)
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
318
           end (point-max)))
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
319
   (let ((wc 0)
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
320
         (latex-macro-regexp "\\\\[A-Za-z]+\\(\\[[^]]*\\]\\|\\){\\([^}]*\\)}"))
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
321
     (save-excursion
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
322
       (goto-char beg)
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
323
       (while (< (point) end)
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
324
         (cond
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
325
          ;; Ignore comments.
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
326
          ((or (org-in-commented-line) (org-at-table-p))
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
327
           nil)
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
328
          ;; Ignore hyperlinks. But if link has a description, count
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
329
          ;; the words within the description.
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
330
          ((looking-at org-bracket-link-analytic-regexp)
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
331
           (when (match-string-no-properties 5)
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
332
             (let ((desc (match-string-no-properties 5)))
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
333
               (save-match-data
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
334
                 (cl-incf wc (length (remove "" (org-split-string
42
b9e2f76128bb sbcl update
Richard Westhaver <ellis@rwest.io>
parents: 41
diff changeset
335
                                                 desc "\\W")))))))
34
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
336
           (goto-char (match-end 0)))
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
337
          ((looking-at org-any-link-re)
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
338
           (goto-char (match-end 0)))
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
339
          ;; Ignore source code blocks.
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
340
          ((org-in-regexps-block-p "^#\\+BEGIN_SRC\\W" "^#\\+END_SRC\\W")
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
341
           nil)
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
342
          ;; Ignore inline source blocks, counting them as 1 word.
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
343
          ((save-excursion
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
344
             (backward-char)
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
345
             (looking-at org-babel-inline-src-block-regexp))
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
346
           (goto-char (match-end 0))
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
347
           (setf wc (+ 2 wc)))
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
348
          ;; Count latex macros as 1 word, ignoring their arguments.
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
349
          ((save-excursion
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
350
             (backward-char)
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
351
             (looking-at latex-macro-regexp))
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
352
           (goto-char (if count-latex-macro-args?
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
353
                          (match-beginning 2)
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
354
                        (match-end 0)))
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
355
           (setf wc (+ 2 wc)))
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
356
          ;; Ignore footnotes.
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
357
          ((and (not count-footnotes?)
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
358
                (or (org-footnote-at-definition-p)
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
359
                    (org-footnote-at-reference-p)))
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
360
           nil)
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
361
          (t
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
362
           (let ((contexts (org-context)))
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
363
             (cond
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
364
              ;; Ignore tags and TODO keywords, etc.
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
365
              ((or (assoc :todo-keyword contexts)
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
366
                   (assoc :priority contexts)
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
367
                   (assoc :keyword contexts)
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
368
                   (assoc :checkbox contexts))
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
369
               nil)
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
370
              ;; Ignore sections marked with tags that are
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
371
              ;; excluded from export.
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
372
              ((assoc :tags contexts)
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
373
               (if (intersection (org-get-tags-at) org-export-exclude-tags
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
374
                                 :test 'equal)
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
375
                   (org-forward-same-level 1)
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
376
                 nil))
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
377
              (t
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
378
               (cl-incf wc))))))
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
379
         (re-search-forward "\\w+\\W*")))
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
380
     (message (format "%d words in %s." wc
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
381
                      (if mark-active "region" "buffer")))))
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
382
 
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
383
 (defun org-check-misformatted-subtree ()
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
384
   "Check misformatted entries in the current buffer."
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
385
   (interactive)
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
386
   (show-all)
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
387
   (org-map-entries
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
388
    (lambda ()
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
389
      (when (and (move-beginning-of-line 2)
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
390
                 (not (looking-at org-heading-regexp)))
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
391
        (if (or (and (org-get-scheduled-time (point))
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
392
                     (not (looking-at (concat "^.*" org-scheduled-regexp))))
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
393
                (and (org-get-deadline-time (point))
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
394
                     (not (looking-at (concat "^.*" org-deadline-regexp)))))
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
395
            (when (y-or-n-p "Fix this subtree? ")
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
396
              (message "Call the function again when you're done fixing this subtree.")
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
397
              (recursive-edit))
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
398
          (message "All subtrees checked."))))))
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
399
 
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
400
 (defun org-sort-list-by-checkbox-type ()
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
401
   "Sort list items according to Checkbox state."
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
402
   (interactive)
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
403
   (org-sort-list
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
404
    nil ?f
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
405
    (lambda ()
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
406
      (if (looking-at org-list-full-item-re)
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
407
          (cdr (assoc (match-string 3)
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
408
                      '(("[X]" . 1) ("[-]" . 2) ("[ ]" . 3) (nil . 4))))
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
409
        4))))
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
410
 
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
411
 (defun org-time-string-to-seconds (s)
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
412
   "Convert a string HH:MM:SS to a number of seconds."
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
413
   (cond
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
414
    ((and (stringp s)
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
415
          (string-match "\\([0-9]+\\):\\([0-9]+\\):\\([0-9]+\\)" s))
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
416
     (let ((hour (string-to-number (match-string 1 s)))
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
417
           (min (string-to-number (match-string 2 s)))
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
418
           (sec (string-to-number (match-string 3 s))))
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
419
       (+ (* hour 3600) (* min 60) sec)))
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
420
    ((and (stringp s)
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
421
          (string-match "\\([0-9]+\\):\\([0-9]+\\)" s))
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
422
     (let ((min (string-to-number (match-string 1 s)))
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
423
           (sec (string-to-number (match-string 2 s))))
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
424
       (+ (* min 60) sec)))
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
425
    ((stringp s) (string-to-number s))
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
426
    (t s)))
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
427
 
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
428
 (defun org-time-seconds-to-string (secs)
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
429
   "Convert a number of seconds to a time string."
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
430
   (cond ((>= secs 3600) (format-seconds "%h:%.2m:%.2s" secs))
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
431
         ((>= secs 60) (format-seconds "%m:%.2s" secs))
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
432
         (t (format-seconds "%s" secs))))
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
433
 
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
434
 (defmacro with-time (time-output-p &rest exprs)
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
435
   "Evaluate an org-table formula, converting all fields that look
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
436
 like time data to integer seconds.  If TIME-OUTPUT-P then return
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
437
 the result as a time value."
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
438
   (list
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
439
    (if time-output-p 'org-time-seconds-to-string 'identity)
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
440
    (cons 'progn
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
441
          (mapcar
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
442
           (lambda (expr)
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
443
             `,(cons (car expr)
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
444
                     (mapcar
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
445
                      (lambda (el)
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
446
                        (if (listp el)
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
447
                            (list 'with-time nil el)
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
448
                          (org-time-string-to-seconds el)))
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
449
                      (cdr expr))))
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
450
           `,@exprs))))
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
451
 
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
452
 (defun org-hex-strip-lead (str)
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
453
   (if (and (> (length str) 2) (string= (substring str 0 2) "0x"))
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
454
       (substring str 2) str))
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
455
 
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
456
 (defun org-hex-to-hex (int)
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
457
   (format "0x%x" int))
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
458
 
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
459
 (defun org-hex-to-dec (str)
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
460
   (cond
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
461
    ((and (stringp str)
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
462
          (string-match "\\([0-9a-f]+\\)" (setf str (org-hex-strip-lead str))))
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
463
     (let ((out 0))
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
464
       (mapc
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
465
        (lambda (ch)
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
466
          (setf out (+ (* out 16)
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
467
                       (if (and (>= ch 48) (<= ch 57)) (- ch 48) (- ch 87)))))
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
468
        (coerce (match-string 1 str) 'list))
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
469
       out))
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
470
    ((stringp str) (string-to-number str))
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
471
    (t str)))
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
472
 
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
473
 (defmacro with-hex (hex-output-p &rest exprs)
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
474
   "Evaluate an org-table formula, converting all fields that look
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
475
     like hexadecimal to decimal integers.  If HEX-OUTPUT-P then
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
476
     return the result as a hex value."
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
477
   (list
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
478
    (if hex-output-p 'org-hex-to-hex 'identity)
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
479
    (cons 'progn
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
480
          (mapcar
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
481
           (lambda (expr)
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
482
             `,(cons (car expr)
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
483
                     (mapcar (lambda (el)
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
484
                               (if (listp el)
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
485
                                   (list 'with-hex nil el)
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
486
                                 (org-hex-to-dec el)))
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
487
                             (cdr expr))))
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
488
           `,@exprs))))
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
489
 
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
490
 (require 'mm-url) ; to include mm-url-decode-entities-string
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
491
 
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
492
 (defun org-insert-link-with-title ()
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
493
   "Insert org link where default description is set to html title."
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
494
   (interactive)
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
495
   (let* ((url (read-string "URL: "))
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
496
          (title (get-html-title-from-url url)))
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
497
     (org-insert-link nil url title)))
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
498
 
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
499
 (defun get-html-title-from-url (url)
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
500
   "Return content in <title> tag."
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
501
   (let (x1 x2 (download-buffer (url-retrieve-synchronously url)))
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
502
     (save-excursion
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
503
       (set-buffer download-buffer)
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
504
       (beginning-of-buffer)
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
505
       (setq x1 (search-forward "<title>"))
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
506
       (search-forward "</title>")
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
507
       (setq x2 (search-backward "<"))
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
508
       (mm-url-decode-entities-string (buffer-substring-no-properties x1 x2)))))
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
509
 
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
510
 (defun org-remove-empty-propert-drawers ()
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
511
   "*Remove all empty property drawers in current file."
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
512
   (interactive)
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
513
   (unless (eq major-mode 'org-mode)
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
514
     (error "You need to turn on Org mode for this function."))
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
515
   (save-excursion
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
516
     (goto-char (point-min))
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
517
     (while (re-search-forward ":PROPERTIES:" nil t)
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
518
       (save-excursion
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
519
         (org-remove-empty-drawer-at "PROPERTIES" (match-beginning 0))))))
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
520
 
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
521
 (defun check-for-clock-out-note ()
42
b9e2f76128bb sbcl update
Richard Westhaver <ellis@rwest.io>
parents: 41
diff changeset
522
   (interactive)
b9e2f76128bb sbcl update
Richard Westhaver <ellis@rwest.io>
parents: 41
diff changeset
523
   (save-excursion
b9e2f76128bb sbcl update
Richard Westhaver <ellis@rwest.io>
parents: 41
diff changeset
524
     (org-back-to-heading)
b9e2f76128bb sbcl update
Richard Westhaver <ellis@rwest.io>
parents: 41
diff changeset
525
     (let ((tags (org-get-tags)))
b9e2f76128bb sbcl update
Richard Westhaver <ellis@rwest.io>
parents: 41
diff changeset
526
       (and tags (message "tags: %s " tags)
b9e2f76128bb sbcl update
Richard Westhaver <ellis@rwest.io>
parents: 41
diff changeset
527
            (when (member "clocknote" tags)
b9e2f76128bb sbcl update
Richard Westhaver <ellis@rwest.io>
parents: 41
diff changeset
528
              (org-add-note))))))
34
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
529
 
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
530
 (add-hook 'org-clock-out-hook 'check-for-clock-out-note)
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
531
 
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
532
 (defun org-list-files (dirs ext)
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
533
   "Function to create list of org files in multiple subdirectories.
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
534
 This can be called to generate a list of files for
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
535
 org-agenda-files or org-refile-targets.
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
536
 
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
537
 DIRS is a list of directories.
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
538
 
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
539
 EXT is a list of the extensions of files to be included."
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
540
   (let ((dirs (if (listp dirs)
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
541
                   dirs
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
542
                 (list dirs)))
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
543
         (ext (if (listp ext)
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
544
                  ext
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
545
                (list ext)))
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
546
         files)
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
547
     (mapc
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
548
      (lambda (x)
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
549
        (mapc
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
550
         (lambda (y)
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
551
           (setq files
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
552
                 (append files
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
553
                         (file-expand-wildcards
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
554
                          (concat (file-name-as-directory x) "*" y)))))
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
555
         ext))
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
556
      dirs)
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
557
     (mapc
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
558
      (lambda (x)
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
559
        (when (or (string-match "/.#" x)
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
560
                  (string-match "#$" x))
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
561
          (setq files (delete x files))))
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
562
      files)
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
563
     files))
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
564
 
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
565
 (defvar org-agenda-directories (list org-directory user-lab-directory)
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
566
   "List of directories containing org files.")
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
567
 (defvar org-agenda-extensions '(".org")
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
568
   "List of extensions of agenda files")
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
569
 
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
570
 (defun org-set-agenda-files ()
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
571
   (interactive)
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
572
   (setq org-agenda-files (org-list-files
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
573
                           org-agenda-directories
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
574
                           org-agenda-extensions)))
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
575
 
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
576
 (add-hook 'after-init-hook 'org-set-agenda-files)
6eef2d50b7fd sbclrc update
Richard Westhaver <ellis@rwest.io>
parents: 24
diff changeset
577
 
36
963513ec0fcd skt-templates
Richard Westhaver <ellis@rwest.io>
parents: 34
diff changeset
578
 ;;; Skel Config
37
964e4427f5ad sk templates
Richard Westhaver <ellis@rwest.io>
parents: 36
diff changeset
579
 (use-package skel
42
b9e2f76128bb sbcl update
Richard Westhaver <ellis@rwest.io>
parents: 41
diff changeset
580
   :requires skel
37
964e4427f5ad sk templates
Richard Westhaver <ellis@rwest.io>
parents: 36
diff changeset
581
   :load-path user-emacs-lib-directory
42
b9e2f76128bb sbcl update
Richard Westhaver <ellis@rwest.io>
parents: 41
diff changeset
582
   :custom
b9e2f76128bb sbcl update
Richard Westhaver <ellis@rwest.io>
parents: 41
diff changeset
583
   tempo-interactive t  
b9e2f76128bb sbcl update
Richard Westhaver <ellis@rwest.io>
parents: 41
diff changeset
584
   auto-insert 'no-modify
b9e2f76128bb sbcl update
Richard Westhaver <ellis@rwest.io>
parents: 41
diff changeset
585
   auto-insert-query nil)
b9e2f76128bb sbcl update
Richard Westhaver <ellis@rwest.io>
parents: 41
diff changeset
586
 
b9e2f76128bb sbcl update
Richard Westhaver <ellis@rwest.io>
parents: 41
diff changeset
587
 (use-package skt
b9e2f76128bb sbcl update
Richard Westhaver <ellis@rwest.io>
parents: 41
diff changeset
588
   :requires (skel skt)
b9e2f76128bb sbcl update
Richard Westhaver <ellis@rwest.io>
parents: 41
diff changeset
589
   :load-path user-emacs-lib-directory
b9e2f76128bb sbcl update
Richard Westhaver <ellis@rwest.io>
parents: 41
diff changeset
590
   :custom
b9e2f76128bb sbcl update
Richard Westhaver <ellis@rwest.io>
parents: 41
diff changeset
591
   skt-enable-tempo-elements t
b9e2f76128bb sbcl update
Richard Westhaver <ellis@rwest.io>
parents: 41
diff changeset
592
   skt-delete-duplicate-marks t
37
964e4427f5ad sk templates
Richard Westhaver <ellis@rwest.io>
parents: 36
diff changeset
593
   :config
964e4427f5ad sk templates
Richard Westhaver <ellis@rwest.io>
parents: 36
diff changeset
594
   (defvar skt-default-version "0.1.0")
964e4427f5ad sk templates
Richard Westhaver <ellis@rwest.io>
parents: 36
diff changeset
595
   (keymap-set skt-minor-mode-map "b" #'tempo-backward-mark)
964e4427f5ad sk templates
Richard Westhaver <ellis@rwest.io>
parents: 36
diff changeset
596
   (keymap-set skt-minor-mode-map "f" #'tempo-forward-mark)
964e4427f5ad sk templates
Richard Westhaver <ellis@rwest.io>
parents: 36
diff changeset
597
   (keymap-set skt-minor-mode-map "SPC" #'tempo-complete-tag)
964e4427f5ad sk templates
Richard Westhaver <ellis@rwest.io>
parents: 36
diff changeset
598
   (keymap-set skt-minor-mode-map "t" #'skt-add-tag)
36
963513ec0fcd skt-templates
Richard Westhaver <ellis@rwest.io>
parents: 34
diff changeset
599
 
37
964e4427f5ad sk templates
Richard Westhaver <ellis@rwest.io>
parents: 36
diff changeset
600
   (defvar skt-skeleton-path-function #'abbreviate-file-name
964e4427f5ad sk templates
Richard Westhaver <ellis@rwest.io>
parents: 36
diff changeset
601
     "Function to be called when expanding file-header skeletons. Useful to
36
963513ec0fcd skt-templates
Richard Westhaver <ellis@rwest.io>
parents: 34
diff changeset
602
 rebind locally inside a project or module, where you want to delete some
963513ec0fcd skt-templates
Richard Westhaver <ellis@rwest.io>
parents: 34
diff changeset
603
 prefix or replace it.")
963513ec0fcd skt-templates
Richard Westhaver <ellis@rwest.io>
parents: 34
diff changeset
604
 
39
86ce16b512b7 templates
Richard Westhaver <ellis@rwest.io>
parents: 38
diff changeset
605
   (defun skt-buffer-path (&optional function)
86ce16b512b7 templates
Richard Westhaver <ellis@rwest.io>
parents: 38
diff changeset
606
     (let ((path (or buffer-file-name (format "%s.lisp" (gensym "scratch-")))))
86ce16b512b7 templates
Richard Westhaver <ellis@rwest.io>
parents: 38
diff changeset
607
       (funcall (or function skt-skeleton-path-function) path)))
36
963513ec0fcd skt-templates
Richard Westhaver <ellis@rwest.io>
parents: 34
diff changeset
608
 
37
964e4427f5ad sk templates
Richard Westhaver <ellis@rwest.io>
parents: 36
diff changeset
609
   (defun skt-skelfile-path ()
964e4427f5ad sk templates
Richard Westhaver <ellis@rwest.io>
parents: 36
diff changeset
610
     (if (string= (file-name-nondirectory buffer-file-name) "skelfile")
964e4427f5ad sk templates
Richard Westhaver <ellis@rwest.io>
parents: 36
diff changeset
611
         "skelfile"
964e4427f5ad sk templates
Richard Westhaver <ellis@rwest.io>
parents: 36
diff changeset
612
       (skt-buffer-path)))
38
891ace7526cc fix use-package decl
Richard Westhaver <ellis@rwest.io>
parents: 37
diff changeset
613
 
891ace7526cc fix use-package decl
Richard Westhaver <ellis@rwest.io>
parents: 37
diff changeset
614
   ;; functions
891ace7526cc fix use-package decl
Richard Westhaver <ellis@rwest.io>
parents: 37
diff changeset
615
   (skt-define-function capture (:abbrev "capture" :tag t) org-capture)
891ace7526cc fix use-package decl
Richard Westhaver <ellis@rwest.io>
parents: 37
diff changeset
616
   (skt-define-function agenda (:abbrev "agenda" :tag t) org-agenda)
891ace7526cc fix use-package decl
Richard Westhaver <ellis@rwest.io>
parents: 37
diff changeset
617
   (skt-define-function mjump (:abbrev "mjump" :tag t) bookmark-jump)
891ace7526cc fix use-package decl
Richard Westhaver <ellis@rwest.io>
parents: 37
diff changeset
618
   (skt-define-function bjump (:abbrev "bjump" :tag t) ibuffer-jump)
891ace7526cc fix use-package decl
Richard Westhaver <ellis@rwest.io>
parents: 37
diff changeset
619
   (skt-define-function rjump (:abbrev "rjump" :tag t)
891ace7526cc fix use-package decl
Richard Westhaver <ellis@rwest.io>
parents: 37
diff changeset
620
     (lambda () (jump-to-register (read-char "register: "))))
891ace7526cc fix use-package decl
Richard Westhaver <ellis@rwest.io>
parents: 37
diff changeset
621
   (skt-define-function pjump (:abbrev "pjump" :tag t) (lambda () (project-switch-project default-directory)))
891ace7526cc fix use-package decl
Richard Westhaver <ellis@rwest.io>
parents: 37
diff changeset
622
 
891ace7526cc fix use-package decl
Richard Westhaver <ellis@rwest.io>
parents: 37
diff changeset
623
   ;; templates
891ace7526cc fix use-package decl
Richard Westhaver <ellis@rwest.io>
parents: 37
diff changeset
624
   (skt-define-template readme (:mode org-mode :tag t)
891ace7526cc fix use-package decl
Richard Westhaver <ellis@rwest.io>
parents: 37
diff changeset
625
     "#+title: " (p "title: ") n
891ace7526cc fix use-package decl
Richard Westhaver <ellis@rwest.io>
parents: 37
diff changeset
626
     "#+description: " (p "description: ") n
891ace7526cc fix use-package decl
Richard Westhaver <ellis@rwest.io>
parents: 37
diff changeset
627
     "#+author: " user-full-name n
891ace7526cc fix use-package decl
Richard Westhaver <ellis@rwest.io>
parents: 37
diff changeset
628
     "#+email:" user-mail-address n
891ace7526cc fix use-package decl
Richard Westhaver <ellis@rwest.io>
parents: 37
diff changeset
629
     "#+setupfile: clean.theme" n
891ace7526cc fix use-package decl
Richard Westhaver <ellis@rwest.io>
parents: 37
diff changeset
630
     "#+export_file_name: index" n>
891ace7526cc fix use-package decl
Richard Westhaver <ellis@rwest.io>
parents: 37
diff changeset
631
     p n> n>
891ace7526cc fix use-package decl
Richard Westhaver <ellis@rwest.io>
parents: 37
diff changeset
632
     ":info:" n>
891ace7526cc fix use-package decl
Richard Westhaver <ellis@rwest.io>
parents: 37
diff changeset
633
     "+ version :: " skt-default-version n
891ace7526cc fix use-package decl
Richard Westhaver <ellis@rwest.io>
parents: 37
diff changeset
634
     ":end:" n>)
891ace7526cc fix use-package decl
Richard Westhaver <ellis@rwest.io>
parents: 37
diff changeset
635
 
42
b9e2f76128bb sbcl update
Richard Westhaver <ellis@rwest.io>
parents: 41
diff changeset
636
   (skt-define-template clean.theme (:mode org-mode :tag t)
b9e2f76128bb sbcl update
Richard Westhaver <ellis@rwest.io>
parents: 41
diff changeset
637
     "#+setupfile: " (join-paths company-cdn-url "org/clean.theme"))
b9e2f76128bb sbcl update
Richard Westhaver <ellis@rwest.io>
parents: 41
diff changeset
638
 
37
964e4427f5ad sk templates
Richard Westhaver <ellis@rwest.io>
parents: 36
diff changeset
639
   ;; TODO 2024-06-04: 
964e4427f5ad sk templates
Richard Westhaver <ellis@rwest.io>
parents: 36
diff changeset
640
   ;; (skt-define-template defsystem (:mode lisp-mode :tag t :abbrev "defsystem"))
964e4427f5ad sk templates
Richard Westhaver <ellis@rwest.io>
parents: 36
diff changeset
641
   ;; (skt-define-template defpackage (:mode lisp-mode :tag t :abbrev "defpackage"))
964e4427f5ad sk templates
Richard Westhaver <ellis@rwest.io>
parents: 36
diff changeset
642
   ;; (skt-define-template defpkg (:mode lisp-mode :tag t :abbrev "defpkg"))
38
891ace7526cc fix use-package decl
Richard Westhaver <ellis@rwest.io>
parents: 37
diff changeset
643
 
39
86ce16b512b7 templates
Richard Westhaver <ellis@rwest.io>
parents: 38
diff changeset
644
   (skt-define-template defmacro (:abbrev "(defmacro" :tag t :mode lisp-mode)
37
964e4427f5ad sk templates
Richard Westhaver <ellis@rwest.io>
parents: 36
diff changeset
645
     "(defmacro " (p "Name: ") " (" (p "Args: ") ")" > n> r ")")
36
963513ec0fcd skt-templates
Richard Westhaver <ellis@rwest.io>
parents: 34
diff changeset
646
 
39
86ce16b512b7 templates
Richard Westhaver <ellis@rwest.io>
parents: 38
diff changeset
647
   (skt-define-template defun (:abbrev "(defun" :tag t :mode lisp-mode)
37
964e4427f5ad sk templates
Richard Westhaver <ellis@rwest.io>
parents: 36
diff changeset
648
     "(defun " (p "Name: ") " (" (p "Args: ") ")" > n> r ")")
964e4427f5ad sk templates
Richard Westhaver <ellis@rwest.io>
parents: 36
diff changeset
649
 
39
86ce16b512b7 templates
Richard Westhaver <ellis@rwest.io>
parents: 38
diff changeset
650
   (skt-define-template defvar (:abbrev "(defvar" :tag t :mode lisp-mode)
37
964e4427f5ad sk templates
Richard Westhaver <ellis@rwest.io>
parents: 36
diff changeset
651
     > "(defvar " > r ")")
36
963513ec0fcd skt-templates
Richard Westhaver <ellis@rwest.io>
parents: 34
diff changeset
652
 
38
891ace7526cc fix use-package decl
Richard Westhaver <ellis@rwest.io>
parents: 37
diff changeset
653
   ;; skeletons
37
964e4427f5ad sk templates
Richard Westhaver <ellis@rwest.io>
parents: 36
diff changeset
654
   (skt-define-skeleton head (:abbrev "head" :mode lisp-mode)
42
b9e2f76128bb sbcl update
Richard Westhaver <ellis@rwest.io>
parents: 41
diff changeset
655
     "description: "
b9e2f76128bb sbcl update
Richard Westhaver <ellis@rwest.io>
parents: 41
diff changeset
656
     ";;; " (skt-buffer-path 'file-name-nondirectory) " --- " str \n \n ";; " _ \n \n ";;; Code:" \n >)
36
963513ec0fcd skt-templates
Richard Westhaver <ellis@rwest.io>
parents: 34
diff changeset
657
 
37
964e4427f5ad sk templates
Richard Westhaver <ellis@rwest.io>
parents: 36
diff changeset
658
   (skt-define-skeleton head (:abbrev "head" :mode skel-mode)
39
86ce16b512b7 templates
Richard Westhaver <ellis@rwest.io>
parents: 38
diff changeset
659
     "description: "
37
964e4427f5ad sk templates
Richard Westhaver <ellis@rwest.io>
parents: 36
diff changeset
660
     ";;; " (skt-skelfile-path) " --- " str " -*- mode: skel; -*-" \n _)
964e4427f5ad sk templates
Richard Westhaver <ellis@rwest.io>
parents: 36
diff changeset
661
 
964e4427f5ad sk templates
Richard Westhaver <ellis@rwest.io>
parents: 36
diff changeset
662
   (skt-define-skeleton head (:abbrev "head" :mode org-mode)
964e4427f5ad sk templates
Richard Westhaver <ellis@rwest.io>
parents: 36
diff changeset
663
     "title: "
964e4427f5ad sk templates
Richard Westhaver <ellis@rwest.io>
parents: 36
diff changeset
664
     "#+title: " str \n
964e4427f5ad sk templates
Richard Westhaver <ellis@rwest.io>
parents: 36
diff changeset
665
     "#+author: " (skeleton-read "author: ") \n
964e4427f5ad sk templates
Richard Westhaver <ellis@rwest.io>
parents: 36
diff changeset
666
     "#+description: " (skeleton-read "description: ") \n
964e4427f5ad sk templates
Richard Westhaver <ellis@rwest.io>
parents: 36
diff changeset
667
     "#+setupfile: clean.theme" \n > _)
964e4427f5ad sk templates
Richard Westhaver <ellis@rwest.io>
parents: 36
diff changeset
668
 
39
86ce16b512b7 templates
Richard Westhaver <ellis@rwest.io>
parents: 38
diff changeset
669
   (skt-define-skeleton head (:abbrev "head" :mode rust-mode)
86ce16b512b7 templates
Richard Westhaver <ellis@rwest.io>
parents: 38
diff changeset
670
     "description: "
86ce16b512b7 templates
Richard Westhaver <ellis@rwest.io>
parents: 38
diff changeset
671
     "//! " (skt-buffer-path 'file-name-nondirectory) " --- " str \n \n "// " _ \n \n "//! Code: " \n >)
86ce16b512b7 templates
Richard Westhaver <ellis@rwest.io>
parents: 38
diff changeset
672
 
86ce16b512b7 templates
Richard Westhaver <ellis@rwest.io>
parents: 38
diff changeset
673
   (skt-define-skeleton system-head (:abbrev "system-head" :mode lisp-mode)
86ce16b512b7 templates
Richard Westhaver <ellis@rwest.io>
parents: 38
diff changeset
674
     "system-name: "
86ce16b512b7 templates
Richard Westhaver <ellis@rwest.io>
parents: 38
diff changeset
675
     ";;; " (skt-buffer-path) " --- "
86ce16b512b7 templates
Richard Westhaver <ellis@rwest.io>
parents: 38
diff changeset
676
     '(setq v1 (file-name-base (skt-buffer-path))) (capitalize v1)
86ce16b512b7 templates
Richard Westhaver <ellis@rwest.io>
parents: 38
diff changeset
677
     " Sytem Definitions" \n
86ce16b512b7 templates
Richard Westhaver <ellis@rwest.io>
parents: 38
diff changeset
678
     > "(defsystem :" v1 \n
86ce16b512b7 templates
Richard Westhaver <ellis@rwest.io>
parents: 38
diff changeset
679
     > ":depends-on (:std :log)" \n
86ce16b512b7 templates
Richard Westhaver <ellis@rwest.io>
parents: 38
diff changeset
680
     > ":components ((:file \"pkg\")" _ "))")
86ce16b512b7 templates
Richard Westhaver <ellis@rwest.io>
parents: 38
diff changeset
681
 
41
Richard Westhaver <ellis@rwest.io>
parents: 39
diff changeset
682
   (skt-define-skeleton pkg-head (:abbrev "pkg-head" :mode lisp-mode)
Richard Westhaver <ellis@rwest.io>
parents: 39
diff changeset
683
     "ignored"
Richard Westhaver <ellis@rwest.io>
parents: 39
diff changeset
684
     ";;; " (skt-buffer-path 'file-name-nondirectory) " --- "
Richard Westhaver <ellis@rwest.io>
parents: 39
diff changeset
685
     '(setq v1 (skeleton-read "name: ")) v1 " Package Definitions" \n
Richard Westhaver <ellis@rwest.io>
parents: 39
diff changeset
686
     > "(defpkg :" v1 \n
Richard Westhaver <ellis@rwest.io>
parents: 39
diff changeset
687
     > ":use (:std :log))" \n \n
Richard Westhaver <ellis@rwest.io>
parents: 39
diff changeset
688
     > "(in-package :" v1 ")" \n >)
42
b9e2f76128bb sbcl update
Richard Westhaver <ellis@rwest.io>
parents: 41
diff changeset
689
   
39
86ce16b512b7 templates
Richard Westhaver <ellis@rwest.io>
parents: 38
diff changeset
690
   (skt-define-skeleton crate-head (:abbrev "crate-head" :mode conf-toml-mode)
86ce16b512b7 templates
Richard Westhaver <ellis@rwest.io>
parents: 38
diff changeset
691
     "ignored"
86ce16b512b7 templates
Richard Westhaver <ellis@rwest.io>
parents: 38
diff changeset
692
     "### " (skt-buffer-path 'file-name-nondirectory) " --- " 
86ce16b512b7 templates
Richard Westhaver <ellis@rwest.io>
parents: 38
diff changeset
693
     '(setq v1 (skeleton-read "name: ")) v1 " Cargo Manifest" \n >
86ce16b512b7 templates
Richard Westhaver <ellis@rwest.io>
parents: 38
diff changeset
694
     "[package]" \n
86ce16b512b7 templates
Richard Westhaver <ellis@rwest.io>
parents: 38
diff changeset
695
     "name = \"" v1 "\"" \n
86ce16b512b7 templates
Richard Westhaver <ellis@rwest.io>
parents: 38
diff changeset
696
     "version = \"" skt-default-version "\"" \n
86ce16b512b7 templates
Richard Westhaver <ellis@rwest.io>
parents: 38
diff changeset
697
     "[dependencies]" \n >)
86ce16b512b7 templates
Richard Westhaver <ellis@rwest.io>
parents: 38
diff changeset
698
 
37
964e4427f5ad sk templates
Richard Westhaver <ellis@rwest.io>
parents: 36
diff changeset
699
   (skt-define-skeleton local-vars
964e4427f5ad sk templates
Richard Westhaver <ellis@rwest.io>
parents: 36
diff changeset
700
       (:tag t :abbrev "local-vars"
964e4427f5ad sk templates
Richard Westhaver <ellis@rwest.io>
parents: 36
diff changeset
701
             :docstring "Insert a local variables section.  Use current comment syntax if any.")
964e4427f5ad sk templates
Richard Westhaver <ellis@rwest.io>
parents: 36
diff changeset
702
     (completing-read "Mode: " obarray
36
963513ec0fcd skt-templates
Richard Westhaver <ellis@rwest.io>
parents: 34
diff changeset
703
 		     (lambda (symbol)
37
964e4427f5ad sk templates
Richard Westhaver <ellis@rwest.io>
parents: 36
diff changeset
704
 		       (if (commandp symbol)
964e4427f5ad sk templates
Richard Westhaver <ellis@rwest.io>
parents: 36
diff changeset
705
 			   (string-match "-mode$" (symbol-name symbol))))
36
963513ec0fcd skt-templates
Richard Westhaver <ellis@rwest.io>
parents: 34
diff changeset
706
 		     t)
37
964e4427f5ad sk templates
Richard Westhaver <ellis@rwest.io>
parents: 36
diff changeset
707
     '(save-excursion
964e4427f5ad sk templates
Richard Westhaver <ellis@rwest.io>
parents: 36
diff changeset
708
        (if (re-search-forward page-delimiter nil t)
964e4427f5ad sk templates
Richard Westhaver <ellis@rwest.io>
parents: 36
diff changeset
709
 	   (error "Not on last page")))
964e4427f5ad sk templates
Richard Westhaver <ellis@rwest.io>
parents: 36
diff changeset
710
     comment-start "Local Variables:" comment-end \n
964e4427f5ad sk templates
Richard Westhaver <ellis@rwest.io>
parents: 36
diff changeset
711
     comment-start "mode: " str
964e4427f5ad sk templates
Richard Westhaver <ellis@rwest.io>
parents: 36
diff changeset
712
     & -5 | '(kill-line 0) & -1 | comment-end \n
964e4427f5ad sk templates
Richard Westhaver <ellis@rwest.io>
parents: 36
diff changeset
713
     ( (completing-read (format "Variable, %s: " skeleton-subprompt)
964e4427f5ad sk templates
Richard Westhaver <ellis@rwest.io>
parents: 36
diff changeset
714
 		       obarray
964e4427f5ad sk templates
Richard Westhaver <ellis@rwest.io>
parents: 36
diff changeset
715
 		       (lambda (symbol)
964e4427f5ad sk templates
Richard Westhaver <ellis@rwest.io>
parents: 36
diff changeset
716
 		         (or (eq symbol 'eval)
964e4427f5ad sk templates
Richard Westhaver <ellis@rwest.io>
parents: 36
diff changeset
717
 			     (custom-variable-p symbol)))
964e4427f5ad sk templates
Richard Westhaver <ellis@rwest.io>
parents: 36
diff changeset
718
 		       t)
964e4427f5ad sk templates
Richard Westhaver <ellis@rwest.io>
parents: 36
diff changeset
719
       comment-start str ": "
964e4427f5ad sk templates
Richard Westhaver <ellis@rwest.io>
parents: 36
diff changeset
720
       (read-from-minibuffer "Expression: " nil read-expression-map nil
964e4427f5ad sk templates
Richard Westhaver <ellis@rwest.io>
parents: 36
diff changeset
721
 			    'read-expression-history) | _
964e4427f5ad sk templates
Richard Westhaver <ellis@rwest.io>
parents: 36
diff changeset
722
       comment-end \n)
964e4427f5ad sk templates
Richard Westhaver <ellis@rwest.io>
parents: 36
diff changeset
723
     resume:
964e4427f5ad sk templates
Richard Westhaver <ellis@rwest.io>
parents: 36
diff changeset
724
     comment-start "End:" comment-end \n)
36
963513ec0fcd skt-templates
Richard Westhaver <ellis@rwest.io>
parents: 34
diff changeset
725
 
37
964e4427f5ad sk templates
Richard Westhaver <ellis@rwest.io>
parents: 36
diff changeset
726
   ;; autoinsert
964e4427f5ad sk templates
Richard Westhaver <ellis@rwest.io>
parents: 36
diff changeset
727
   (skt-register-auto-insert "skelfile" #'skt-template-skel-head)
964e4427f5ad sk templates
Richard Westhaver <ellis@rwest.io>
parents: 36
diff changeset
728
   (skt-register-auto-insert "readme.org" #'skt-template-org-readme)
39
86ce16b512b7 templates
Richard Westhaver <ellis@rwest.io>
parents: 38
diff changeset
729
   (skt-register-auto-insert "Cargo.toml" #'skt-template-conf-toml-crate-head)
41
Richard Westhaver <ellis@rwest.io>
parents: 39
diff changeset
730
   (skt-register-auto-insert "pkg.lisp" #'skt-template-lisp-pkg-head)
37
964e4427f5ad sk templates
Richard Westhaver <ellis@rwest.io>
parents: 36
diff changeset
731
   (skt-register-auto-insert ".*[.]asd" #'skt-template-lisp-system-head)
39
86ce16b512b7 templates
Richard Westhaver <ellis@rwest.io>
parents: 38
diff changeset
732
   (skt-register-auto-insert ".*[.]lisp" #'skt-template-lisp-head)
86ce16b512b7 templates
Richard Westhaver <ellis@rwest.io>
parents: 38
diff changeset
733
   (skt-register-auto-insert ".*[.].rs" #'skt-template-rust-head)
37
964e4427f5ad sk templates
Richard Westhaver <ellis@rwest.io>
parents: 36
diff changeset
734
   (auto-insert-mode t)
964e4427f5ad sk templates
Richard Westhaver <ellis@rwest.io>
parents: 36
diff changeset
735
   (keymap-set skel-minor-mode-map "C-<return>" 'company-tempo))
36
963513ec0fcd skt-templates
Richard Westhaver <ellis@rwest.io>
parents: 34
diff changeset
736
 
2
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
737
 (provide 'ellis)
2cd49f7c09bb import ellis home
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
738
 ;;; ellis.el ends here