changelog shortlog graph tags branches files raw help

Mercurial > infra > home / changeset: sk templates

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