changeset 36: |
963513ec0fcd |
parent 35: |
20209a75a410 |
child 37: |
964e4427f5ad |
author: |
Richard Westhaver <ellis@rwest.io> |
date: |
Tue, 04 Jun 2024 18:54:01 -0400 |
files: |
.emacs.d/ellis.el |
description: |
skt-templates |
1.1--- a/.emacs.d/ellis.el Mon Jun 03 19:40:43 2024 -0400
1.2+++ b/.emacs.d/ellis.el Tue Jun 04 18:54:01 2024 -0400
1.3@@ -77,20 +77,12 @@
1.4 (keymap-set ctl-x-x-map "p p" #'remember-project)
1.5 (keymap-set ctl-x-x-map "p l" #'remember-lab-projects)
1.6
1.7-(add-hook 'prog-mode-hook #'skt-mode)
1.8-(add-hook 'org-mode-hook #'skt-mode)
1.9+(add-hook 'prog-mode-hook #'skel-minor-mode)
1.10+(add-hook 'org-mode-hook #'skel-minor-mode)
1.11 (add-hook 'prog-mode-hook #'company-mode)
1.12
1.13 (add-hook 'notmuch-message-mode-hook #'turn-on-orgtbl)
1.14
1.15-(setopt skt-enable-tempo-elements t
1.16- skt-completing-read t
1.17- skt-delete-duplicate-marks t)
1.18-
1.19-(keymap-set skt-mode-map "C-c M-b" #'tempo-backward-mark)
1.20-(keymap-set skt-mode-map "C-c M-f" #'tempo-forward-mark)
1.21-(keymap-set skt-mode-map "C-c M-a" #'tempo-complete-tag)
1.22-
1.23 (use-package markdown-mode :ensure t)
1.24
1.25 (use-package ol-notmuch :ensure t)
1.26@@ -573,5 +565,98 @@
1.27
1.28 (add-hook 'after-init-hook 'org-set-agenda-files)
1.29
1.30+;;; Skel Config
1.31+
1.32+(setopt skt-enable-tempo-elements t
1.33+ skt-delete-duplicate-marks t)
1.34+
1.35+(keymap-set skt-minor-mode-map "b" #'tempo-backward-mark)
1.36+(keymap-set skt-minor-mode-map "f" #'tempo-forward-mark)
1.37+(keymap-set skt-minor-mode-map "SPC" #'tempo-complete-tag)
1.38+(keymap-set skt-minor-mode-map "t" #'skt-add-tag)
1.39+
1.40+(skt-define-template defmacro (:abbrev "defvar" :tag t :mode lisp-mode)
1.41+ "(defmacro " (p "Name: ") " (" (p "Args: ") ")" > n> r ")")
1.42+
1.43+(skt-define-template defun (:abbrev "defvar" :tag t :mode lisp-mode)
1.44+ "(defun " (p "Name: ") " (" (p "Args: ") ")" > n> r ")")
1.45+
1.46+(skt-define-template defvar (:abbrev "defvar" :tag t :mode lisp-mode)
1.47+ > "(defvar " > r ")")
1.48+
1.49+(skt-define-function capture (:abbrev "capture" :tag t) org-capture)
1.50+(skt-define-function agenda (:abbrev "agenda" :tag t) org-agenda)
1.51+(skt-define-function mjump (:abbrev "mjump" :tag t) bookmark-jump)
1.52+(skt-define-function bjump (:abbrev "bjump" :tag t) ibuffer-jump)
1.53+(skt-define-function rjump (:abbrev "rjump" :tag t)
1.54+ (lambda () (jump-to-register (read-char "register: "))))
1.55+(skt-define-function pjump (:abbrev "pjump" :tag t) (lambda () (project-switch-project default-directory)))
1.56+
1.57+(defvar skt-skeleton-path-function #'abbreviate-file-name
1.58+ "Function to be called when expanding file-header skeletons. Useful to
1.59+rebind locally inside a project or module, where you want to delete some
1.60+prefix or replace it.")
1.61+
1.62+(defun skt-buffer-path () (funcall skt-skeleton-path-function buffer-file-name))
1.63+
1.64+(defun skt-skelfile-path ()
1.65+ (if (string= (file-name-nondirectory buffer-file-name) "skelfile")
1.66+ "skelfile"
1.67+ (skt-buffer-path)))
1.68+
1.69+(skt-define-skeleton head (:abbrev "head" :mode lisp-mode)
1.70+ "title: "
1.71+ ";;; " (skt-buffer-path) " --- " str \n \n \n ";;; Code:" \n > _)
1.72+
1.73+(skt-define-skeleton head (:abbrev "head" :mode rust-mode)
1.74+ "title: "
1.75+ "//! " (skt-buffer-path) " --- " str \n \n "// " _ \n \n "//! Code:" \n > _)
1.76+
1.77+(skt-define-skeleton head (:abbrev "head" :mode skel-mode)
1.78+ "title: "
1.79+ ";;; " (skt-skelfile-path) " --- " str " -*- mode: skel; -*-" \n _)
1.80+
1.81+(skt-define-skeleton head (:abbrev "head" :mode org-mode)
1.82+ "title: "
1.83+ "#+title: " str \n
1.84+ "#+author: " (skeleton-read "author: ") \n
1.85+ "#+description: " (skeleton-read "description: ") \n
1.86+ "#+setupfile: clean.theme" \n > _)
1.87+
1.88+(skt-define-skeleton local-vars
1.89+ (:tag t :abbrev "local-vars"
1.90+ :docstring "Insert a local variables section. Use current comment syntax if any.")
1.91+ (completing-read "Mode: " obarray
1.92+ (lambda (symbol)
1.93+ (if (commandp symbol)
1.94+ (string-match "-mode$" (symbol-name symbol))))
1.95+ t)
1.96+ '(save-excursion
1.97+ (if (re-search-forward page-delimiter nil t)
1.98+ (error "Not on last page")))
1.99+ comment-start "Local Variables:" comment-end \n
1.100+ comment-start "mode: " str
1.101+ & -5 | '(kill-line 0) & -1 | comment-end \n
1.102+ ( (completing-read (format "Variable, %s: " skeleton-subprompt)
1.103+ obarray
1.104+ (lambda (symbol)
1.105+ (or (eq symbol 'eval)
1.106+ (custom-variable-p symbol)))
1.107+ t)
1.108+ comment-start str ": "
1.109+ (read-from-minibuffer "Expression: " nil read-expression-map nil
1.110+ 'read-expression-history) | _
1.111+ comment-end \n)
1.112+ resume:
1.113+ comment-start "End:" comment-end \n)
1.114+
1.115+;; autoinsert
1.116+(skt-register-auto-insert "skelfile" #'skt-template-skel-head)
1.117+(setq auto-insert :unmodified)
1.118+(setq auto-insert-query nil)
1.119+(auto-insert-mode t)
1.120+
1.121+(keymap-set skel-minor-mode-map "C-<return>" 'company-tempo)
1.122+
1.123 (provide 'ellis)
1.124 ;;; ellis.el ends here