summaryrefslogtreecommitdiffhomepage
path: root/init.org
diff options
context:
space:
mode:
authorjao <jao@gnu.org>2021-10-05 14:37:59 +0100
committerjao <jao@gnu.org>2021-10-05 14:37:59 +0100
commitc315004248d1cc5333639b0be0b25e7685bc217b (patch)
treed5b7e3b978def8d111710799c78b61d4d1263cc6 /init.org
parent4f16d1635a8a34864500be57939f71a7c398cf96 (diff)
downloadelibs-c315004248d1cc5333639b0be0b25e7685bc217b.tar.gz
elibs-c315004248d1cc5333639b0be0b25e7685bc217b.tar.bz2
el-spice instead of copied code
Diffstat (limited to 'init.org')
-rw-r--r--init.org119
1 files changed, 9 insertions, 110 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