changeset 37: |
964e4427f5ad |
parent 36: |
963513ec0fcd |
child 38: |
891ace7526cc |
author: |
Richard Westhaver <ellis@rwest.io> |
date: |
Tue, 04 Jun 2024 21:46:48 -0400 |
files: |
.emacs.d/ellis.el |
description: |
sk templates |
1.1--- a/.emacs.d/ellis.el Tue Jun 04 18:54:01 2024 -0400
1.2+++ b/.emacs.d/ellis.el Tue Jun 04 21:46:48 2024 -0400
1.3@@ -97,7 +97,7 @@
1.4 smtpmail-debug-info t
1.5 message-default-mail-headers "Cc: \nBcc: \n"
1.6 message-kill-buffer-on-exit t
1.7- user-mail-address "ellis@rwest.io"
1.8+ user-mail-address "richard.westhaver@gmail.com"
1.9 user-full-name "Richard Westhaver"
1.10 notmuch-hello-sections '(notmuch-hello-insert-saved-searches
1.11 notmuch-hello-insert-search
1.12@@ -213,20 +213,6 @@
1.13 (use-package sh-script
1.14 :hook (sh-mode . flymake-mode))
1.15
1.16-(use-package tempo
1.17- :custom
1.18- tempo-interactive t
1.19- :config
1.20- (tempo-define-template
1.21- "org:readme"
1.22- '("#+TITLE: " p n>
1.23- "#+AUTHOR: " user-full-name " <" user-mail-address ">" n>)
1.24- "org:readme"
1.25- "Insert a readme.org file template.")
1.26- (tempo-define-template "org:src"
1.27- '("#+begin_src " p n>
1.28- "#+end_src" n>)
1.29- "org:src"))
1.30 ;;; Org Config
1.31 (keymap-set user-map "t" #'org-todo)
1.32
1.33@@ -281,7 +267,7 @@
1.34 (add-hook 'ibuffer-mode-hook #'all-the-icons-ibuffer-mode))
1.35
1.36 ;; strangerdanger
1.37-(setq slime-enable-evaluate-in-emacs t)
1.38+;; (setq slime-enable-evaluate-in-emacs t)
1.39
1.40 (defun org-word-count (beg end
1.41 &optional count-latex-macro-args?
1.42@@ -566,97 +552,123 @@
1.43 (add-hook 'after-init-hook 'org-set-agenda-files)
1.44
1.45 ;;; Skel Config
1.46-
1.47-(setopt skt-enable-tempo-elements t
1.48- skt-delete-duplicate-marks t)
1.49-
1.50-(keymap-set skt-minor-mode-map "b" #'tempo-backward-mark)
1.51-(keymap-set skt-minor-mode-map "f" #'tempo-forward-mark)
1.52-(keymap-set skt-minor-mode-map "SPC" #'tempo-complete-tag)
1.53-(keymap-set skt-minor-mode-map "t" #'skt-add-tag)
1.54-
1.55-(skt-define-template defmacro (:abbrev "defvar" :tag t :mode lisp-mode)
1.56- "(defmacro " (p "Name: ") " (" (p "Args: ") ")" > n> r ")")
1.57+(use-package skel
1.58+ :requires skel
1.59+ :load-path user-emacs-lib-directory
1.60+ :custom
1.61+ tempo-interactive t
1.62+ auto-insert 'unmodified
1.63+ auto-insert-query nil
1.64+ skt-enable-tempo-elements t
1.65+ skt-delete-duplicate-marks t
1.66+ :config
1.67+ (defvar skt-default-version "0.1.0")
1.68+ (skt-define-template readme (:mode org-mode :tag t)
1.69+ "#+title: " (p "title: ") n
1.70+ "#+description: " (p "description: ") n
1.71+ "#+author: " user-full-name n
1.72+ "#+email:" user-mail-address n
1.73+ "#+setupfile: clean.theme" n
1.74+ "#+export_file_name: index" n>
1.75+ p n> n>
1.76+ ":info:" n>
1.77+ "+ version :: " skt-default-version n
1.78+ ":end:" n>)
1.79+ (keymap-set skt-minor-mode-map "b" #'tempo-backward-mark)
1.80+ (keymap-set skt-minor-mode-map "f" #'tempo-forward-mark)
1.81+ (keymap-set skt-minor-mode-map "SPC" #'tempo-complete-tag)
1.82+ (keymap-set skt-minor-mode-map "t" #'skt-add-tag)
1.83
1.84-(skt-define-template defun (:abbrev "defvar" :tag t :mode lisp-mode)
1.85- "(defun " (p "Name: ") " (" (p "Args: ") ")" > n> r ")")
1.86-
1.87-(skt-define-template defvar (:abbrev "defvar" :tag t :mode lisp-mode)
1.88- > "(defvar " > r ")")
1.89-
1.90-(skt-define-function capture (:abbrev "capture" :tag t) org-capture)
1.91-(skt-define-function agenda (:abbrev "agenda" :tag t) org-agenda)
1.92-(skt-define-function mjump (:abbrev "mjump" :tag t) bookmark-jump)
1.93-(skt-define-function bjump (:abbrev "bjump" :tag t) ibuffer-jump)
1.94-(skt-define-function rjump (:abbrev "rjump" :tag t)
1.95- (lambda () (jump-to-register (read-char "register: "))))
1.96-(skt-define-function pjump (:abbrev "pjump" :tag t) (lambda () (project-switch-project default-directory)))
1.97-
1.98-(defvar skt-skeleton-path-function #'abbreviate-file-name
1.99- "Function to be called when expanding file-header skeletons. Useful to
1.100+ (defvar skt-skeleton-path-function #'abbreviate-file-name
1.101+ "Function to be called when expanding file-header skeletons. Useful to
1.102 rebind locally inside a project or module, where you want to delete some
1.103 prefix or replace it.")
1.104
1.105-(defun skt-buffer-path () (funcall skt-skeleton-path-function buffer-file-name))
1.106+ (defun skt-buffer-path () (funcall skt-skeleton-path-function buffer-file-name))
1.107
1.108-(defun skt-skelfile-path ()
1.109- (if (string= (file-name-nondirectory buffer-file-name) "skelfile")
1.110- "skelfile"
1.111- (skt-buffer-path)))
1.112+ (defun skt-skelfile-path ()
1.113+ (if (string= (file-name-nondirectory buffer-file-name) "skelfile")
1.114+ "skelfile"
1.115+ (skt-buffer-path)))
1.116+ ;; TODO 2024-06-04:
1.117+ ;; (skt-define-template defsystem (:mode lisp-mode :tag t :abbrev "defsystem"))
1.118+ ;; (skt-define-template defpackage (:mode lisp-mode :tag t :abbrev "defpackage"))
1.119+ ;; (skt-define-template defpkg (:mode lisp-mode :tag t :abbrev "defpkg"))
1.120+
1.121+ (skt-define-template defmacro (:abbrev "defvar" :tag t :mode lisp-mode)
1.122+ "(defmacro " (p "Name: ") " (" (p "Args: ") ")" > n> r ")")
1.123
1.124-(skt-define-skeleton head (:abbrev "head" :mode lisp-mode)
1.125- "title: "
1.126- ";;; " (skt-buffer-path) " --- " str \n \n \n ";;; Code:" \n > _)
1.127+ (skt-define-template defun (:abbrev "defvar" :tag t :mode lisp-mode)
1.128+ "(defun " (p "Name: ") " (" (p "Args: ") ")" > n> r ")")
1.129+
1.130+ (skt-define-template defvar (:abbrev "defvar" :tag t :mode lisp-mode)
1.131+ > "(defvar " > r ")")
1.132
1.133-(skt-define-skeleton head (:abbrev "head" :mode rust-mode)
1.134- "title: "
1.135- "//! " (skt-buffer-path) " --- " str \n \n "// " _ \n \n "//! Code:" \n > _)
1.136+ (skt-define-function capture (:abbrev "capture" :tag t) org-capture)
1.137+ (skt-define-function agenda (:abbrev "agenda" :tag t) org-agenda)
1.138+ (skt-define-function mjump (:abbrev "mjump" :tag t) bookmark-jump)
1.139+ (skt-define-function bjump (:abbrev "bjump" :tag t) ibuffer-jump)
1.140+ (skt-define-function rjump (:abbrev "rjump" :tag t)
1.141+ (lambda () (jump-to-register (read-char "register: "))))
1.142+ (skt-define-function pjump (:abbrev "pjump" :tag t) (lambda () (project-switch-project default-directory)))
1.143
1.144-(skt-define-skeleton head (:abbrev "head" :mode skel-mode)
1.145- "title: "
1.146- ";;; " (skt-skelfile-path) " --- " str " -*- mode: skel; -*-" \n _)
1.147+ (skt-define-skeleton head (:abbrev "head" :mode lisp-mode)
1.148+ "title: "
1.149+ ";;; " (skt-buffer-path) " --- " str \n \n \n ";;; Code:" \n > _)
1.150
1.151-(skt-define-skeleton head (:abbrev "head" :mode org-mode)
1.152- "title: "
1.153- "#+title: " str \n
1.154- "#+author: " (skeleton-read "author: ") \n
1.155- "#+description: " (skeleton-read "description: ") \n
1.156- "#+setupfile: clean.theme" \n > _)
1.157+ (skt-define-skeleton system-head (:abbrev "system-head" :mode lisp-mode)
1.158+ "name: "
1.159+ ";;; " (skt-buffer-path) " --- "
1.160+ '(setq v1 (file-name-base (skt-buffer-path))) (capitalize v1)
1.161+ " Sytem Definitions" \n
1.162+ > "(defsystem :" v1 \n
1.163+ > ":depends-on (:std :log)" \n
1.164+ > ":components ((:file \"pkg\")" _ "))")
1.165
1.166-(skt-define-skeleton local-vars
1.167- (:tag t :abbrev "local-vars"
1.168- :docstring "Insert a local variables section. Use current comment syntax if any.")
1.169- (completing-read "Mode: " obarray
1.170- (lambda (symbol)
1.171- (if (commandp symbol)
1.172- (string-match "-mode$" (symbol-name symbol))))
1.173- t)
1.174- '(save-excursion
1.175- (if (re-search-forward page-delimiter nil t)
1.176- (error "Not on last page")))
1.177- comment-start "Local Variables:" comment-end \n
1.178- comment-start "mode: " str
1.179- & -5 | '(kill-line 0) & -1 | comment-end \n
1.180- ( (completing-read (format "Variable, %s: " skeleton-subprompt)
1.181- obarray
1.182+ (skt-define-skeleton head (:abbrev "head" :mode skel-mode)
1.183+ "title: "
1.184+ ";;; " (skt-skelfile-path) " --- " str " -*- mode: skel; -*-" \n _)
1.185+
1.186+ (skt-define-skeleton head (:abbrev "head" :mode org-mode)
1.187+ "title: "
1.188+ "#+title: " str \n
1.189+ "#+author: " (skeleton-read "author: ") \n
1.190+ "#+description: " (skeleton-read "description: ") \n
1.191+ "#+setupfile: clean.theme" \n > _)
1.192+
1.193+ (skt-define-skeleton local-vars
1.194+ (:tag t :abbrev "local-vars"
1.195+ :docstring "Insert a local variables section. Use current comment syntax if any.")
1.196+ (completing-read "Mode: " obarray
1.197 (lambda (symbol)
1.198- (or (eq symbol 'eval)
1.199- (custom-variable-p symbol)))
1.200+ (if (commandp symbol)
1.201+ (string-match "-mode$" (symbol-name symbol))))
1.202 t)
1.203- comment-start str ": "
1.204- (read-from-minibuffer "Expression: " nil read-expression-map nil
1.205- 'read-expression-history) | _
1.206- comment-end \n)
1.207- resume:
1.208- comment-start "End:" comment-end \n)
1.209+ '(save-excursion
1.210+ (if (re-search-forward page-delimiter nil t)
1.211+ (error "Not on last page")))
1.212+ comment-start "Local Variables:" comment-end \n
1.213+ comment-start "mode: " str
1.214+ & -5 | '(kill-line 0) & -1 | comment-end \n
1.215+ ( (completing-read (format "Variable, %s: " skeleton-subprompt)
1.216+ obarray
1.217+ (lambda (symbol)
1.218+ (or (eq symbol 'eval)
1.219+ (custom-variable-p symbol)))
1.220+ t)
1.221+ comment-start str ": "
1.222+ (read-from-minibuffer "Expression: " nil read-expression-map nil
1.223+ 'read-expression-history) | _
1.224+ comment-end \n)
1.225+ resume:
1.226+ comment-start "End:" comment-end \n)
1.227
1.228-;; autoinsert
1.229-(skt-register-auto-insert "skelfile" #'skt-template-skel-head)
1.230-(setq auto-insert :unmodified)
1.231-(setq auto-insert-query nil)
1.232-(auto-insert-mode t)
1.233-
1.234-(keymap-set skel-minor-mode-map "C-<return>" 'company-tempo)
1.235+ ;; autoinsert
1.236+ (skt-register-auto-insert "skelfile" #'skt-template-skel-head)
1.237+ (skt-register-auto-insert "readme.org" #'skt-template-org-readme)
1.238+ (skt-register-auto-insert ".*[.]asd" #'skt-template-lisp-system-head)
1.239+ (auto-insert-mode t)
1.240+ (keymap-set skel-minor-mode-map "C-<return>" 'company-tempo))
1.241
1.242 (provide 'ellis)
1.243 ;;; ellis.el ends here