               clojure-indent-style 'align-arguments
               clojure-toplevel-inside-comment-form t  ;; evaluate expressions in comment as top level
               enable-fancify-symbols t
+              clojure-enable-clj-refactor t
+              cider-repl-buffer-size-limit 100        ;; limit lines shown in REPL buffer
               )
+
+     ;; Nyan cat indicating relative position in current buffer
+     ;; :variables colors-enable-nyan-cat-progress-bar (display-graphic-p)
+     colors
 
      ;; SPC a L displays key and command history in a separate buffer
      command-log
 
      csv
 
+     elm
+
+     emacs-lisp
+
+     emoji
+
+     ;; helm-follow-mode sticky - remembers use of C-c C-f
+     ;; - follow mode previews when scrolling through a helm list
+     (helm :variables
+           helm-follow-mode-persistent t)
+
+     html
+
+     ;; SPC g s opens Magit git client full screen (q restores previous layout)
+     ;; show word-granularity differences in current diff hunk
+     (git :variables
+          git-magit-status-fullscreen t
+          magit-diff-refine-hunk t
+          git-enable-magit-todos-plugin t)
+
+     ;; SPC g h to use GitHub repositories
+     ;; SPC g g to use GitHub Gists
+     github
+
+     ;; graphviz - open-source graph declaration system
+     ;; Used to generated graphs of Clojure project dependencies
+     ;; https://develop.spacemacs.org/layers/+lang/graphviz/README.html
+     graphviz
+
+     go
+
      java
-     go
-     elm
-     html
-     emacs-lisp
-     emoji
-     helm
+
+     json
+
+     ;; Language server protocol with minimal visual impact
+     ;; https://practicalli.github.io/spacemacs/install-spacemacs/clojure-lsp/lsp-variables-reference.html
      (lsp :variables
-          lsp-ui-doc-enable nil
+          ;; Formatting and indentation - use Cider instead
+          lsp-enable-on-type-formatting t
+          ;; Set to nil to use CIDER features instead of LSP UI
+          lsp-enable-indentation t
+          lsp-enable-snippet t  ;; to test again
+
+          ;; symbol highlighting - `lsp-toggle-symbol-highlight` toggles highlighting
+          ;; subtle highlighting for doom-gruvbox-light theme defined in dotspacemacs/user-config
+          lsp-enable-symbol-highlighting t
+
+          ;; Show lint error indicator in the mode line
+          lsp-modeline-diagnostics-enable t
+          ;; lsp-modeline-diagnostics-scope :workspace
+
+          ;; popup documentation boxes
+          ;; lsp-ui-doc-enable nil          ;; disable all doc popups
+          lsp-ui-doc-show-with-cursor nil   ;; doc popup for cursor
+          ;; lsp-ui-doc-show-with-mouse t   ;; doc popup for mouse
+          ;; lsp-ui-doc-delay 2                ;; delay in seconds for popup to display
+          lsp-ui-doc-include-signature t    ;; include function signature
+          ;; lsp-ui-doc-position 'at-point  ;; top bottom at-point
+          lsp-ui-doc-alignment 'window      ;; frame window
+
+          ;; code actions and diagnostics text as right-hand side of buffer
           lsp-ui-sideline-code-actions-prefix " "
-          lsp-ui-sideline-show-hover nil
+          lsp-ui-sideline-enable nil
+          lsp-ui-sideline-show-code-actions nil
+          ;; lsp-ui-sideline-delay 500
+          ;; lsp-ui-sideline-show-hover nil
+          ;; lsp-ui-sideline-show-diagnostics nil
+
+          ;; reference count for functions (assume their maybe other lenses in future)
+          lsp-lens-enable t
+
+          ;; Efficient use of space in treemacs-lsp display
+          treemacs-space-between-root-nodes nil
+
+          ;; Optimization for large files
+          lsp-file-watch-threshold 10000
+          lsp-log-io nil
+
           lsp-rust-server 'rust-analyzer
-          lsp-rust-analyzer-server-display-inlay-hints t)
-     (rust :variables
-           rust-format-on-save t)
-     markdown
+          lsp-rust-analyzer-server-display-inlay-hints t
+          )
+
+     (markdown :variables
+               markdown-live-preview-engine 'vmd)
+
+     ;; Editing multiple lines of text concurrently
+     ;; `g r' menu in Emacs normal state
+     multiple-cursors
+
+     ;; Spacemacs Org mode
      (org :variables
           org-enable-github-support t
+          org-enable-bootstrap-support t
+          org-enable-reveal-js-support t
           org-enable-hugo-support t
-          ;; org-enable-roam-support t
           org-enable-valign t
+          org-want-todo-bindings t
+          org-enable-org-journal-support t
+          org-journal-dir "~/journal/"
+          org-journal-file-format "%Y-%m-%d"
+          org-journal-date-prefix "#+TITLE: "
+          org-journal-date-format "%A, %B %d %Y"
+          org-journal-time-prefix "* "
+          org-journal-time-format ""
+          org-journal-carryover-items "TODO=\"TODO\"|TODO=\"DOING\"|TODO=\"BLOCKED\"|TODO=\"REVIEW\""
           org-projectile-file "notes.org")
+
      (plantuml :variables
                plantuml-jar-path "~/.local/share/plantuml/plantuml.jar"
                org-plantuml-jar-path "~/.local/share/plantuml/plantuml.jar")
+
      protobuf
-     ruby
+
+     ;; ruby
+
+     (rust :variables
+           rust-format-on-save t)
+
      (shell :variables
+            shell-default-shell 'eshell
             shell-default-height 30
             shell-default-position 'bottom)
+
      sql
-     (treemacs :variables treemacs-use-git-mode 'deferred)
+     ;; spacemacs-layouts layer added to set variables
+     ;; SPC TAB restricted to current layout buffers
+     ;; Kill buffers when killing layer - SPC l x
+     (spacemacs-layouts :variables
+                        spacemacs-layouts-restrict-spc-tab t
+                        persp-autokill-buffer-on-remove 'kill-weak)
+
+     ;; Configuration: https://github.com/seagle0128/doom-modeline#customize
+     (spacemacs-modeline :variables
+                         doom-modeline-height 12
+                         doom-modeline-major-mode-color-icon t
+                         doom-modeline-buffer-file-name-style 'relative-to-project
+                         doom-modeline-display-default-persp-name t
+                         doom-modeline-minor-modes nil
+                         doom-modeline-modal-icon nil)
+
+     ;; Spell as you type with Flyspell package,
+     ;; requires external command - ispell, hunspell, aspell
+     ;; SPC S menu, SPC S s to check current word
+     spell-checking
+
+     ;; Use original flycheck fringe bitmaps
+     (syntax-checking :variables
+                      syntax-checking-use-original-bitmaps t)
+
+     ;; Visual file manager - `SPC p t'
+     ;; treemacs-no-png-images t removes file and directory icons
+     (treemacs :variables
+               treemacs-indentation 1
+               treemacs-use-filewatch-mode t
+               treemacs-use-follow-mode t
+               ;; treemacs-use-git-mode 'deferred
+               )
+
+     ;; Customise the Spacemacs themes
+     ;; https://develop.spacemacs.org/layers/+themes/theming/README.html
+     ;; Code in dotspacemacs/user-init to reduce size of modeline
+     theming
+
+     ;; Support font ligatures (fancy symbols) in all modes
+     ;; 'prog-mode for only programming languages
+     ;; including text-mode may cause issues with org-mode and magit
+     (unicode-fonts :variables
+                    unicode-fonts-enable-ligatures t
+                    unicode-fonts-ligature-modes '(prog-mode))
+
+     ;; Highlight changes in buffers
+     ;; SPC g . transient state for navigating changes
      (version-control :variables
                       version-control-diff-tool 'diff-hl
                       version-control-global-margin t)
-     yaml)
+
+     yaml
+
+     ) ;; End of dotspacemacs-configuration-layers
+
    ;; List of additional packages that will be installed without being
    ;; wrapped in a layer. If you need some configuration for these
    ;; packages, then consider creating a layer. You can also put the
    ;; configuration in `dotspacemacs/user-config'.
-   dotspacemacs-additional-packages
-   '(editorconfig
-     jq-mode
-     nord-theme
-     org-cliplink
-     ox-clip
-     protobuf-mode
-     shfmt)
+   dotspacemacs-additional-packages '(editorconfig
+                                      jq-mode
+                                      nord-theme
+                                      org-cliplink
+                                      ox-clip
+                                      protobuf-mode
+                                      shfmt
+                                      keycast
+                                      )
    ;; A list of packages that cannot be updated.
    dotspacemacs-frozen-packages '()
 


   ;; If non-nil, advise quit functions to keep server open when quitting.
   ;; (default nil)
   dotspacemacs-persistent-server nil

   ;; List of search tool executable names. Spacemacs uses the first installed
   ;; tool of the list. Supported tools are `rg', `ag', `pt', `ack' and `grep'.

   ;; performance issues, instead of calculating the frame title by
   ;; `spacemacs/title-prepare' all the time.
   ;; (default "%I@%S")
   dotspacemacs-frame-title-format nil

   ;; Format specification for setting the icon title format
   ;; (default nil - same as frame-title-format)
