diff options
author | Aryadev Chavali <aryadev@aryadevchavali.com> | 2021-09-01 16:04:08 +0100 |
---|---|---|
committer | Aryadev Chavali <aryadev@aryadevchavali.com> | 2021-09-15 12:13:40 +0100 |
commit | 1ab74174c64e708abf81385b2b2dacd1af1e9663 (patch) | |
tree | a2a9ba0c9088182010db23622b32fc126823aa5f /Emacs/.config/emacs | |
parent | 6869eb5260540319f43319fed0de214747254bcf (diff) | |
download | dotfiles-1ab74174c64e708abf81385b2b2dacd1af1e9663.tar.gz dotfiles-1ab74174c64e708abf81385b2b2dacd1af1e9663.tar.bz2 dotfiles-1ab74174c64e708abf81385b2b2dacd1af1e9663.zip |
(Emacs)+auto run command after save hook
Useful macro for running commands on certain buffers after save.
Check the specific heading for details.
Diffstat (limited to 'Emacs/.config/emacs')
-rw-r--r-- | Emacs/.config/emacs/config.org | 52 |
1 files changed, 50 insertions, 2 deletions
diff --git a/Emacs/.config/emacs/config.org b/Emacs/.config/emacs/config.org index e47403f..7beec40 100644 --- a/Emacs/.config/emacs/config.org +++ b/Emacs/.config/emacs/config.org @@ -1,5 +1,5 @@ #+title: Emacs configuration -#+author: Oreodave +#+author: Aryadev Chavali #+description: My new Emacs configuration #+property: header-args:emacs-lisp :tangle config.el :comments link #+options: toc:nil @@ -182,6 +182,35 @@ the buffer with name buf-name and creation function buf-create." (display-buffer buffer) (select-window (get-buffer-window buffer))))))) #+end_src +** Auto-run command after-save-hook +Macro that defines functionality that runs after a buffer save. +Requires a list of conditions (so it doesn't happen FOR ALL saved +buffers) and a function to run if the buffer satisfies the condition. +Then automatically adds it to the ~after-save-hook~. + +On a Luke Smith video on YouTube, I saw a vim feature which I really +liked. He uses it in his DWM videos, but it's essentially an +"autocmd" call that, upon saving a certain file with vim, will run +a shell command (such as =make= or =pdflatex=). + +It's arbitrary to program this functionality in Emacs. This macro +essentially performs the same task. In particular if you use +=start-process-shell-command= in the =to-run= function then you also +get a generated buffer of output from the command, useful for checking +errors and general messages. Better than vim, eh? + +#+begin_src emacs-lisp +(use-package simple + :straight nil + :config + (defmacro +dx/create-auto-save (func-name conditions &rest to-run) + `(progn + (defun ,func-name () + (interactive) + (when ,conditions + ,@to-run)) + (add-hook 'after-save-hook (quote ,func-name))))) +#+end_src ** Power function Basic, tail recursive algorithm for calculating powers. #+begin_src emacs-lisp @@ -781,6 +810,8 @@ when expansion is a function." ,ABBREV "" (proc (insert ,EXPANSION)))) + + (setq save-abbrevs nil) :config (+autotyping/deff-abbrev global-abbrev-table @@ -1142,7 +1173,7 @@ If I want some cool emoticons to seem hip on my README, I'll use this. :defer t :general (leader - "te" #'unicode-emoticons-mode)) + "tE" #'unicode-emoticons-mode)) #+end_src ** (Rip)grep Grep is likely one of the most important programs ever invented; a @@ -2136,6 +2167,23 @@ learnt the basics of org). preview-scale 1.4)))) (margin . "0 -0.35em"))))) #+end_src +*** Org on save +If ~+org/compile-to-pdf-on-save-p~ is non-nil, then compile to \(\LaTeX\) +and run an async process to compile it to a pdf. Doesn't make Emacs +hang (like ~org-latex-export-to-pdf~) and doesn't randomly crash (like +the async handler for org-export). +#+begin_src emacs-lisp +(use-package org + :config + (defvar +org/compile-to-pdf-on-save-p + nil + "Non-nil to activate compile functionality.") + (+dx/create-auto-save + +org/compile-to-pdf-on-save-f + (and (eq major-mode 'org-mode) +org/compile-to-pdf-on-save-p) + (start-process-shell-command "" "*pdflatex*" (concat "pdflatex -shell-escape " + (org-latex-export-to-latex))))) +#+end_src *** Evil Org Evil org for some nice bindings. #+begin_src emacs-lisp |