From c315004248d1cc5333639b0be0b25e7685bc217b Mon Sep 17 00:00:00 2001 From: jao Date: Tue, 5 Oct 2021 14:37:59 +0100 Subject: el-spice instead of copied code --- init.org | 119 +++++---------------------------------------------------------- org.org | 6 ++-- 2 files changed, 11 insertions(+), 114 deletions(-) diff --git a/init.org b/init.org index 4d98134..7f23382 100644 --- a/init.org +++ b/init.org @@ -2214,116 +2214,15 @@ #+end_src * Programming languages *** Elisp -***** Functions to operate on elisp sexps a la slime or geiser - - #+begin_src emacs-lisp - (defun elisp-disassemble (function) - (interactive (list (function-called-at-point))) - (disassemble function)) - - (defun elisp-pp (sexp) - (with-output-to-temp-buffer "*Pp Eval Output*" - (pp sexp) - (with-current-buffer standard-output - (emacs-lisp-mode)))) - - (defun elisp-macroexpand (form) - (interactive (list (form-at-point 'sexp))) - (elisp-pp (macroexpand form))) - - (defun elisp-macroexpand-all (form) - (interactive (list (form-at-point 'sexp))) - (elisp-pp (cl-macroexpand-all form))) - - (defun elisp-push-point-marker () - (require 'etags) - (cond ((featurep 'xemacs) - (push-tag-mark)) - (t (ring-insert find-tag-marker-ring (point-marker))))) - - (defun elisp-pop-found-function () - (interactive) - (cond ((featurep 'xemacs) (pop-tag-mark nil)) - (t (pop-tag-mark)))) - - (defun elisp-find-definition (name) - "Jump to the definition of the function (or variable) at point." - (interactive (list (thing-at-point 'symbol))) - (cond (name - (let ((symbol (intern-soft name)) - (search (lambda (fun sym) - (let* ((r (save-excursion (funcall fun sym))) - (buffer (car r)) - (point (cdr r))) - (cond ((not point) - (error "Found no definition for %s in %s" - name buffer)) - (t - (switch-to-buffer buffer) - (goto-char point) - (recenter 1))))))) - (cond ((fboundp symbol) - (elisp-push-point-marker) - (funcall search 'find-function-noselect symbol)) - ((boundp symbol) - (elisp-push-point-marker) - (funcall search 'find-variable-noselect symbol)) - (t - (message "Symbol not bound: %S" symbol))))) - (t (message "No symbol at point")))) - - (defun elisp-bytecompile-and-load () - (interactive) - (or buffer-file-name - (error "The buffer must be saved in a file first")) - (require 'bytecomp) - ;; Recompile if file or buffer has changed since last compilation. - (when (and (buffer-modified-p) - (y-or-n-p (format "save buffer %s first? " (buffer-name)))) - (save-buffer)) - (let ((filename (expand-file-name buffer-file-name))) - (with-temp-buffer - (byte-compile-file filename t)))) - - #+end_src - - Bindinging the functions above to "natural" keys in elisp buffers: - - #+begin_src emacs-lisp - (defvar elisp-extra-keys - '( - ;; ((kbd "C-c d") 'elisp-disassemble) - ((kbd "C-c C-m") 'elisp-macroexpand) - ((kbd "C-c C-M") 'elisp-macroexpand-all) - ((kbd "C-c C-c") 'compile-defun) - ((kbd "C-c C-k") 'elisp-bytecompile-and-load) - ((kbd "C-c C-l") 'load-file) - ((kbd "C-c C-p") 'pp-eval-last-sexp) - ((kbd "M-.") 'elisp-find-definition) - ((kbd "M-,") 'elisp-pop-found-function) - ((kbd "C-c <") 'list-callers))) - - (dolist (binding elisp-extra-keys) - (let ((key (eval (car binding))) (val (eval (cadr binding)))) - (define-key emacs-lisp-mode-map key val) - (define-key lisp-interaction-mode-map key val))) - #+end_src -***** Literate elisp - #+begin_src emacs-lisp - (use-package poly-org :ensure t) - - ;; (use-package org-auto-tangle - ;; :ensure t - ;; :hook (org-mode . org-auto-tangle-mode) - ;; :diminish) - - #+end_src -***** Some helper packages - #+begin_SRC emacs-lisp - (use-package edit-list :ensure t) - (use-package package-lint :ensure t) - #+end_SRC - + #+begin_src emacs-lisp + (use-package edit-list :ensure t) + (use-package package-lint :ensure t) + (use-package el-spice + :ensure t + :config + (add-hook 'emacs-lisp-mode-hook 'el-spice-mode) + (add-hook 'lisp-interaction-mode-hook 'el-spice-mode)) + #+end_src *** Erlang #+begin_src emacs-lisp (use-package erlang diff --git a/org.org b/org.org index bd7ea50..a3015b3 100644 --- a/org.org +++ b/org.org @@ -148,7 +148,7 @@ "pdflatex -shell-escape -interaction nonstopmode -output-directory %o %f")) #+end_src -* Babel +* Babel and literate programming - [[http://cachestocaches.com/2018/6/org-literate-programming][Literate Programming with Org-mode]] - [[http://howardism.org/Technical/Emacs/literate-devops.html][Literate DevOps]] @@ -156,9 +156,7 @@ (setq org-src-window-setup 'other-window) ;; current-window (require 'org-tempo nil t) ;;