Skip to content

Latest commit

 

History

History
123 lines (106 loc) · 2.99 KB

Programming-Lisp.org

File metadata and controls

123 lines (106 loc) · 2.99 KB

Lisp

Set up a generalized Lisp mode hook

(defvar generic-lisp-mode-hook '()
  "Generic lisp hooks to run")
(defun run-lisp-mode-hooks ()
  "Run standard lisp mode hooks"
  (run-hooks 'generic-lisp-mode-hook))
(dolist (hook '(scheme-mode-hook clojure-mode-hook lisp-mode-hook emacs-lisp-mode-hook))
  (add-hook hook 'run-lisp-mode-hooks))

Editing

Paredit

(use-package paredit
  :ensure t
  :diminish ""
  :init
  (emagician/minor-in-major-mode paredit-mode generic-lisp-mode-hook))

Smart Parens

Turn this shit off on lisps

(add-hook 'generic-lisp-mode-hook #'turn-off-smartparens-mode t)

Individual Lisps

Elisp

Editing

Highlighting

(with-eval-after-load 'dash
  (dash-enable-font-lock))

Eldoc

(use-package eldoc
  :diminish ""
  :init 
    (setq eldoc-idle-delay 0.1)
    (add-hook 'emacs-lisp-mode-hook 'turn-on-eldoc-mode)
  :config
    (set-face-attribute 'eldoc-highlight-function-argument nil
                        :underline t :foreground "green"
                        :weight 'bold))

Auto Complete

(emagician/defhook emagician/ac-set-elisp-sources emacs-lisp-mode
  (setq ac-sources
        '(ac-source-yasnippet
          ac-source-functions
          ac-source-features
          ac-source-variables
          ac-source-symbols
          ac-source-files-in-current-dir
          ac-source-words-in-buffer
          ac-source-words-in-same-mode-buffers)))

Indentation

(put 'use-package 'lisp-indent-function 1)
(put 'lexically 'lisp-indent-function 0)

Package checking

(use-package flycheck-package
  :config 
  (flycheck-package-setup))
Turn off in orc-src buffers

Don’t flycheck in emacs-lisp-mode org-src buffers! SO ANNOYING!

(emagician/defhook turn-off-flycheck-in-emacs-lisp org-src-mode-hook
  (when (equal mode-name "Emacs-Lisp")
    (flycheck-mode -1)))

Environment

See ./Emagician-Base.org

Scheme

Editing

Intenting

;; Indenting module body code at column 0
(defun scheme-module-indent (state indent-point normal-indent) 0)
(put 'module 'scheme-indent-function 'scheme-module-indent)

(put 'and-let* 'scheme-indent-function 1)
(put 'parameterize 'scheme-indent-function 1)
(put 'handle-exceptions 'scheme-indent-function 1)
(put 'when 'scheme-indent-function 1)
(put 'unless 'scheme-indent-function 1)
(put 'match 'scheme-indent-function 1)

Interface

Geiser REPL

(use-package geiser
  :init
  (setq geiser-active-implementations '(chicken))
  :config 
  (emagician/defhook emagician/ac-set-scheme-sources scheme-mode-hook))