From 9914395a4d6ce63369d2337e87ecc17befed0e85 Mon Sep 17 00:00:00 2001 From: Sameer Rahmani Date: Fri, 2 Dec 2022 22:35:04 +0000 Subject: [PATCH] Abstract away rainbow delimiters and paredit into their cubes --- core/cubes/clojure.el | 3 +-- core/cubes/editor.el | 27 +++++++++++++++++++++++++++ core/cubes/elisp.el | 9 ++------- core/cubes/langtool.el | 18 ++++++++++++------ 4 files changed, 42 insertions(+), 15 deletions(-) diff --git a/core/cubes/clojure.el b/core/cubes/clojure.el index 45951aa..6a68f51 100644 --- a/core/cubes/clojure.el +++ b/core/cubes/clojure.el @@ -38,8 +38,7 @@ Also activates LSP and converts `fn` to λ." (fpkg/use aggressive-indent-mode :config (paredit-mode +1)) - (fpkg/use rainbow-delimiters - :config (rainbow-delimiters-mode +1)) + (fg42/rainbow-delimiters-cube) (fpkg/use cider) diff --git a/core/cubes/editor.el b/core/cubes/editor.el index f2fd5f9..0bb9ca1 100644 --- a/core/cubes/editor.el +++ b/core/cubes/editor.el @@ -117,6 +117,33 @@ For more info checkout [[https://github.com/gregsexton/origami.el]]" (global-hl-line-mode)) +(defcube fg42/rainbow-delimiters-cube + "rainbow-delimiters is a =rainbow parentheses= like mode which highlights delimiters +such as parentheses, brackets or braces according to their depth. Each successive level +is highlighted in a different color. This makes it easy to spot matching delimiters, +orient yourself in the code, and tell which statements are at a given depth." + + (:title "Rainbow Delimiters Cube" + :flag rainbow-delimiters + :flag-default t) + + (fpkg/use rainbow-delimiters + ;; It doesn't work due to a problem/conflict in rainbow-delimiters + ;; But we use it any way they might fix it + :hook (prog-mode . rainbow-delimiters-mode))) + + +(defcube fg42/paredit-cube + "=paredit= is a minor mode for performing structured editing of S-expression +data. The typical example of this would be Lisp or Scheme source code." + + (:title "Paredit Cube" + :flag paredit + :flag-default t) + (fpkg/use paredit + :hook (prog-mode . paredit-mode))) + + (defcube fg42/cursor-cube "This cube controls the shape of the cursor." (:title "Cursor cube" diff --git a/core/cubes/elisp.el b/core/cubes/elisp.el index 5af7e45..abd4384 100644 --- a/core/cubes/elisp.el +++ b/core/cubes/elisp.el @@ -30,13 +30,8 @@ (:title "cubes/fg42/elisp-cube.org" :no-flag t) - (fpkg/use rainbow-delimiters - ;; It doesn't work due to a problem/conflict in rainbow-delimiters - ;; But we use it any way they might fix it - :hook (prog-mode . rainbow-delimiters-mode)) - - (fpkg/use paredit - :hook (emacs-lisp-mode . paredit-mode)) + (fg42/rainbow-delimiters-cube) + (fg42/paredit-cube) (add-hook 'emacs-lisp-mode-hook #'rainbow-delimiters-mode)) diff --git a/core/cubes/langtool.el b/core/cubes/langtool.el index de8e1bf..6af0cb7 100644 --- a/core/cubes/langtool.el +++ b/core/cubes/langtool.el @@ -35,12 +35,18 @@ :flag language-tool :flag-default t) - (fpkg/use lsp-ltex - :hook (text-mode . (lambda () - (require 'lsp-ltex) - (lsp))) ; or lsp-deferred - :init - (setq lsp-ltex-version "15.2.0"))) + (let ((user (plist-get fg42/langtool-cube-params :username)) + (apikey (plist-get fg42/langtool-cube-params :api-key))) + (fpkg/use lsp-ltex + :hook (text-mode . (lambda () + (require 'lsp-ltex) + (lsp))) ; or lsp-deferred + :init + (setq lsp-ltex-version "15.2.0") + (when user + (setq lsp-ltex-languagetool-http-server-uri "https://api.languagetoolplus.com/") + (setq lsp-ltex-languagetool-org-username user) + (setq lsp-ltex-languagetool-org-api-key apikey))))) (provide 'cubes/langtool) ;;; langtool.el ends here