diff --git a/superfluous-parentheses.el b/superfluous-parentheses.el new file mode 100644 index 0000000..32b353e --- /dev/null +++ b/superfluous-parentheses.el @@ -0,0 +1,25 @@ +;;; superfluous-parentheses --- Emacs support for [] and {} in lisp-mode + +;;; Code: +(defun superfluous-modify-font-lock-keywords (rule-table) + (dolist (rule rule-table) + (when (and (consp rule) (stringp (car rule))) + (when (string-prefix-p "(" (car rule)) + (rplaca rule (concat "\\s(" (substring (car rule) 1))))))) + +(add-hook! lisp-mode + (modify-syntax-entry ?\[ "(]" lisp-mode-syntax-table) + (modify-syntax-entry ?\] ")[" lisp-mode-syntax-table) + (modify-syntax-entry ?\{ "(}" lisp-mode-syntax-table) + (modify-syntax-entry ?\} "){" lisp-mode-syntax-table) + (superfluous-modify-font-lock-keywords lisp-cl-font-lock-keywords-1) + (superfluous-modify-font-lock-keywords lisp-cl-font-lock-keywords-2) + (superfluous-modify-font-lock-keywords lisp-cl-font-lock-keywords)) + +;;; Commentary: +;; This package modifies the lisp-mode syntax table and font-lock keywords to +;; provide proper support for using square brackets and curly braces in Common +;; Lisp code, as per superfluous-parentheses. + +(provide 'superfluous-parentheses) +;;; superfluous-parentheses.el ends here