changelog shortlog graph tags branches files raw help

Mercurial > infra > home / changeset: skt-templates

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