commit - 1f595c0978daa39795209bc3fbefaaa42b695dd5
commit + 6a68ad1081bf3cd6dca5f3dee58b738eb53d8269
blob - 215e982797826bcac188fef386f9fdee7aaf122b
blob + d3ca6b4f4c6fe1f4650f40701818c62165c37443
--- extras/base.el
+++ extras/base.el
(use-package embark
:ensure t
:demand t
- :after avy
+ :after (avy embark-consult)
:bind (("C-c a" . embark-act)) ; bind this to an easy key to hit
:init
;; Add the option to run embark when using avy
blob - fe535f53a608a69a8a4c9bfd2acd3723a3297074
blob + cf0530e3fffd988dbd79053bc6ce40797d7b215e
--- extras/dev.el
+++ extras/dev.el
;;; - Version Control
;;; - Common file types
;;; - Eglot, the built-in LSP client for Emacs
+;;; - Templating
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;
;; Configure hooks to automatically turn-on eglot for selected modes
; :hook
- ; (((python-mode ruby-mode elixir-mode) . eglot))
+ ; (((python-mode ruby-mode elixir-mode) . eglot-ensure))
:custom
(eglot-send-changes-idle-time 0.1)
; (add-to-list 'eglot-server-programs
; '(haskell-mode . ("haskell-language-server-wrapper" "--lsp")))
)
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;;
+;;; Templating
+;;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(use-package tempel
+ :ensure t
+ ;; By default, tempel looks at the file "templates" in
+ ;; user-emacs-directory, but you can customize that with the
+ ;; tempel-path variable:
+ ;; :custom
+ ;; (tempel-path (concat user-emacs-directory "custom_template_file"))
+ :bind (("M-*" . tempel-insert)
+ ("M-+" . tempel-complete)
+ :map tempel-map
+ ("C-c RET" . tempel-done)
+ ("C-<down>" . tempel-next)
+ ("C-<up>" . tempel-previous)
+ ("M-<down>" . tempel-next)
+ ("M-<up>" . tempel-previous))
+ :init
+ ;; Make a function that adds the tempel expansion function to the
+ ;; list of completion-at-point-functions (capf).
+ (defun tempel-setup-capf ()
+ (add-hook 'completion-at-point-functions #'tempel-expand -1 'local))
+ ;; Put tempel-expand on the list whenever you start programming or
+ ;; writing prose.
+ (add-hook 'prog-mode-hook 'tempel-setup-capf)
+ (add-hook 'text-mode-hook 'tempel-setup-capf))
blob - /dev/null
blob + aab8a98fa56a047df501cec68d0b93de55434476 (mode 644)
--- /dev/null
+++ templates
+;; -*- mode: emacs-lisp -*-
+
+;; This file is for templates for use with Tempel
+;; (https://github.com/minad/tempel). You can move this file around as
+;; you like; you just need to customize the tempel-path variable.
+;;
+;; Templates are defined on a per-major-mode basis. The name of a mode
+;; alone on a line starts templates for that major mode. See the
+;; documentation for tempel for more details.
+;;
+;; Template syntax:
+;;
+;; "string" Inserts a string literal.
+;; p Inserts an unnamed placeholder field.
+;; n Inserts a newline.
+;; > Indents with indent-according-to-mode.
+;; r Inserts the current region. If no region is active, quits the containing template when jumped to.
+;; r> Acts like r, but indent region.
+;; n> Inserts a newline and indents.
+;; & Insert newline unless there is only whitespace between line start and point.
+;; % Insert newline unless there is only whitespace between point and line end.
+;; o Like % but leaves the point before newline.
+;; (s NAME) Inserts a named field.
+;; (p PROMPT <NAME> <NOINSERT>) Insert an optionally named field with a prompt. The PROMPT is displayed directly in the buffer as default value. If NOINSERT is non-nil, no field is inserted. Then the minibuffer is used for prompting and the value is bound to NAME.
+;; (r PROMPT <NAME> <NOINSERT>) Insert region or act like (p ...).
+;; (r> PROMPT <NAME> <NOINSERT>) Act like (r ...), but indent region.
+;;
+;; (p FORM <NAME> <NOINSERT>) Like p described above, but FORM is evaluated.
+;; (FORM ...) Other Lisp forms are evaluated. Named fields are lexically bound.
+;; q Quits the containing template when jumped to.
+
+
+text-mode
+
+(-- "–")
+(--- "—")
+(shrug "¯\\_(ツ)_/¯")
+
+(box "┌─" (make-string (length str) ?─) "─┐" n
+ "│ " (s str) " │" n
+ "└─" (make-string (length str) ?─) "─┘" n)
+(abox "+-" (make-string (length str) ?-) "-+" n
+ "| " (s str) " |" n
+ "+-" (make-string (length str) ?-) "-+" n)
+(rot13 (p "plain text" text) n "----" n (rot13 text))
+(calc (p "taylor(sin(x),x=0,3)" formula) n "----" n (format "%s" (calc-eval formula)))
+
+
+prog-mode
+
+(fixme (if (or (derived-mode-p 'racket-mode) (derived-mode-p 'emacs-lisp-mode)) ";; " comment-start) "FIXME: ")
+(todo (if (or (derived-mode-p 'racket-mode) (derived-mode-p 'emacs-lisp-mode)) ";; " comment-start) "TODO: ")
+(bug (if (or (derived-mode-p 'racket-mode) (derived-mode-p 'emacs-lisp-mode)) ";; " comment-start) "BUG: ")
+(hack (if (or (derived-mode-p 'racket-mode) (derived-mode-p 'emacs-lisp-mode)) ";; " comment-start) "HACK: ")
+(working (if (or (derived-mode-p 'racket-mode) (derived-mode-p 'emacs-lisp-mode)) ";; " comment-start) "WORKING HERE: ")
+
+
+;; See the README of Tempel for more template ideas