Spacemacs: Modify structure and add custom dark/light themes.

Specifically:
1. Separate the face attribute configuration part to `user-init` using theming.
2. Fix some indentation problems in `layers.el`
3. Reorganise code
This commit is contained in:
Leni Ven 2023-01-13 21:09:39 -08:00
parent c01c180946
commit d5935f525d
5 changed files with 256 additions and 214 deletions

View File

@ -90,7 +90,7 @@ It should only modify the values of Spacemacs settings."
;; directory. A string value must be a path to an image format supported ;; directory. A string value must be a path to an image format supported
;; by your Emacs build. ;; by your Emacs build.
;; If the value is nil then no banner is displayed. (default 'official) ;; If the value is nil then no banner is displayed. (default 'official)
dotspacemacs-startup-banner 'official dotspacemacs-startup-banner 'random
;; List of items to show in startup buffer or an association list of ;; List of items to show in startup buffer or an association list of
;; the form `(list-type . list-size)`. If nil then it is disabled. ;; the form `(list-type . list-size)`. If nil then it is disabled.
@ -128,11 +128,21 @@ It should only modify the values of Spacemacs settings."
;; (default nil) ;; (default nil)
dotspacemacs-initial-scratch-message nil dotspacemacs-initial-scratch-message nil
;; List of themes, the first of the list is loaded when spacemacs starts. ;; List of themes, the first of the list is loaded when spacemacs starts.
;; Press `SPC T n' to cycle to the next theme in the list (works great ;; Press `SPC T n' to cycle to the next theme in the list (works great
;; with 2 themes variants, one dark and one light) ;; with 2 themes variants, one dark and one light)
dotspacemacs-themes '(spacemacs-dark dotspacemacs-themes '(noctilux
spacemacs-light) occidental)
;; Default font or prioritized list of fonts. The `:size' can be specified as
;; a non-negative integer (pixel size), or a floating-point (point size).
;; Point size is recommended, because it's device independent. (default 10.0)
;; Placing this in front of themes.
dotspacemacs-default-font '("Source Code Pro"
:size 14.0
:weight normal
:width normal)
;; Set the theme for the Spaceline. Supported themes are `spacemacs', ;; Set the theme for the Spaceline. Supported themes are `spacemacs',
;; `all-the-icons', `custom', `doom', `vim-powerline' and `vanilla'. The ;; `all-the-icons', `custom', `doom', `vim-powerline' and `vanilla'. The
@ -147,14 +157,6 @@ It should only modify the values of Spacemacs settings."
;; (default t) ;; (default t)
dotspacemacs-colorize-cursor-according-to-state t dotspacemacs-colorize-cursor-according-to-state t
;; Default font or prioritized list of fonts. The `:size' can be specified as
;; a non-negative integer (pixel size), or a floating-point (point size).
;; Point size is recommended, because it's device independent. (default 10.0)
dotspacemacs-default-font '("Source Code Pro"
:size 14.0
:weight normal
:width normal)
;; The leader key (default "SPC") ;; The leader key (default "SPC")
dotspacemacs-leader-key "SPC" dotspacemacs-leader-key "SPC"

View File

@ -1,173 +1,176 @@
"Layer configuration: (setq-default
This function should only modify configuration layer settings." ;; Base distribution to use. This is a layer contained in the directory
(setq-default ;; `+distribution'. For now available distributions are `spacemacs-base'
;; Base distribution to use. This is a layer contained in the directory ;; or `spacemacs'. (default 'spacemacs)
;; `+distribution'. For now available distributions are `spacemacs-base' dotspacemacs-distribution 'spacemacs
;; or `spacemacs'. (default 'spacemacs)
dotspacemacs-distribution 'spacemacs
;; Lazy installation of layers (i.e. layers are installed only when a file ;; Lazy installation of layers (i.e. layers are installed only when a file
;; with a supported type is opened). Possible values are `all', `unused' ;; with a supported type is opened). Possible values are `all', `unused'
;; and `nil'. `unused' will lazy install only unused layers (i.e. layers ;; and `nil'. `unused' will lazy install only unused layers (i.e. layers
;; not listed in variable `dotspacemacs-configuration-layers'), `all' will ;; not listed in variable `dotspacemacs-configuration-layers'), `all' will
;; lazy install any layer that support lazy installation even the layers ;; lazy install any layer that support lazy installation even the layers
;; listed in `dotspacemacs-configuration-layers'. `nil' disable the lazy ;; listed in `dotspacemacs-configuration-layers'. `nil' disable the lazy
;; installation feature and you have to explicitly list a layer in the ;; installation feature and you have to explicitly list a layer in the
;; variable `dotspacemacs-configuration-layers' to install it. ;; variable `dotspacemacs-configuration-layers' to install it.
;; (default 'unused) ;; (default 'unused)
dotspacemacs-enable-lazy-installation 'unused dotspacemacs-enable-lazy-installation 'unused
;; If non-nil then Spacemacs will ask for confirmation before installing ;; If non-nil then Spacemacs will ask for confirmation before installing
;; a layer lazily. (default t) ;; a layer lazily. (default t)
dotspacemacs-ask-for-lazy-installation t dotspacemacs-ask-for-lazy-installation t
;; List of additional paths where to look for configuration layers. ;; List of additional paths where to look for configuration layers.
;; Paths must have a trailing slash (i.e. `~/.mycontribs/') ;; Paths must have a trailing slash (i.e. `~/.mycontribs/')
dotspacemacs-configuration-layer-path '() dotspacemacs-configuration-layer-path '()
;; List of configuration layers to load. ;; List of configuration layers to load.
dotspacemacs-configuration-layers dotspacemacs-configuration-layers
'( '(
;; ---------------------------------------------------------------- ;; ----------------------------------------------------------------
;; Example of useful layers you may want to use right away. ;; Example of useful layers you may want to use right away.
;; Uncomment some layer names and press `SPC f e R' (Vim style) or ;; Uncomment some layer names and press `SPC f e R' (Vim style) or
;; `M-m f e R' (Emacs style) to install them. ;; `M-m f e R' (Emacs style) to install them.
;; ---------------------------------------------------------------- ;; ----------------------------------------------------------------
;; Install the packages from 'Required:' before using spacemacs. ;; Install the packages from 'Required:' before using spacemacs.
;; 3 Checker ;; 3 Checker
(spell-checking :variables ;; Required: aspell (spell-checking :variables ;; Required: aspell
spell-checking-enable-by-default nil) spell-checking-enable-by-default nil)
syntax-checking syntax-checking
;; 4 Completion ;; 4 Completion
auto-completion auto-completion
;helm ;; This is slow. Replace by ivy. ;helm ;; This is slow. Replace by ivy.
ivy ivy
;; 6 Emacs
(org :variables
org-enable-notifications 't
org-start-notification-daemon-on-startup 't
org-enable-org-journal-support 't
)
semantic
tabs
;; 7 File trees
treemacs
;neotree
;; 8 Fonts
unicode-fonts
;; 9 Fun
emoji
;; 11 Miscellaneous
multiple-cursors
;; 12 Music
alda ;; Required: alda
;; 15 Programming Languages
;; Markdown
markdown
yaml
html
csv
bibtex
(latex :variables
latex-enable-folding t
latex-enable-magic t
)
;; Scripting Languages
shell-scripts
sql
emacs-lisp
gpu ;; CUDA, OpenGL shaders
javascript
typescript
;; Others
coq
(python :variables
python-backend 'lsp
python-lsp-server 'pyright)
;python-shell-interpreter "python-runtime.sh"
;python-shell-interpreter-args "-m IPython --simple-prompt -i")
rust ;; Required: See rust page
(c-c++ :variables ;; Required: LLVM
c-c++-adopt-subprojects t
c-c++-backend 'lsp-clangd
c-c++-default-mode-for-headers 'c++-mode
c-c++-enable-clang-format-on-save t
c-c++-enable-clang-support t
c-c++-lsp-enable-semantic-highlight 'rainbow
clang-format-style "file"
)
;; 16 Readers
pdf
;; 18 Source Control
git
version-control
;; 20 Tagging
cscope
;; 22 Tools
(cmake :variables
cmake-backend 'lsp)
debug
docker
finance ;; Required: ledger
lsp
nginx
(shell :variables
shell-default-height 30
shell-default-position 'bottom)
systemd
;; 6 Emacs
(org :variables
org-enable-notifications 't
org-start-notification-daemon-on-startup 't
org-enable-org-journal-support 't
) )
semantic
tabs
;; 7 File trees
treemacs
;neotree
;; List of additional packages that will be installed without being wrapped ;; 8 Fonts
;; in a layer (generally the packages are installed only and should still be unicode-fonts
;; loaded using load/require/use-package in the user-config section below in ;; 9 Fun
;; this file). If you need some configuration for these packages, then emoji
;; consider creating a layer. You can also put the configuration in ;; 11 Miscellaneous
;; `dotspacemacs/user-config'. To use a local version of a package, use the multiple-cursors
;; `:location' property: '(your-package :location "~/path/to/your-package/")
;; Also include the dependencies as they will not be resolved automatically.
dotspacemacs-additional-packages
'(
all-the-icons
centaur-tabs
smart-tabs-mode
tablist
mini-frame
company-statistics ;; 12 Music
exec-path-from-shell alda ;; Required: alda
cmake-ide ;; 15 Programming Languages
highlight-doxygen
;; Markdown
markdown
yaml
html
csv
bibtex
(latex :variables
latex-enable-folding t
latex-enable-magic t)
;; Scripting Languages
shell-scripts
sql
emacs-lisp
gpu ;; CUDA, OpenGL shaders
javascript
typescript
;; Others
coq
(python :variables
python-backend 'lsp
python-lsp-server 'pyright)
;python-shell-interpreter "python-runtime.sh"
;python-shell-interpreter-args "-m IPython --simple-prompt -i")
rust ;; Required: See rust page
(c-c++ :variables ;; Required: LLVM
c-c++-adopt-subprojects t
c-c++-backend 'lsp-clangd
c-c++-default-mode-for-headers 'c++-mode
c-c++-enable-clang-format-on-save t
c-c++-enable-clang-support t
c-c++-lsp-enable-semantic-highlight 'rainbow
clang-format-style "file"
) )
;; 16 Readers
pdf
;; A list of packages that cannot be updated. ;; 18 Source Control
dotspacemacs-frozen-packages '() git
version-control
;; A list of packages that will not be installed and loaded. ;; 20 Tagging
;; Exclude orgit to fix mode problem in PDFView cscope
dotspacemacs-excluded-packages '(orgit)
;; Defines the behaviour of Spacemacs when installing packages. ;; 21 themes
;; Possible values are `used-only', `used-but-keep-unused' and `all'. colors
;; `used-only' installs only explicitly used packages and deletes any unused theming ; Modification of themes
;; packages as well as their unused dependencies. `used-but-keep-unused' themes-megapack
;; installs only the used packages but won't delete unused ones. `all'
;; installs *all* packages supported by Spacemacs and never uninstalls them. ;; 22 Tools
;; (default is `used-only') (cmake :variables
dotspacemacs-install-packages 'used-only) cmake-backend 'lsp)
debug
docker
finance ;; Required: ledger
(lsp :variables
lsp-headerline-breadcrumb-enable t
lsp-headerline-breadcrumb-segments '(symbols))
nginx
(shell :variables
shell-default-height 30
shell-default-position 'bottom)
systemd
)
;; List of additional packages that will be installed without being wrapped
;; in a layer (generally the packages are installed only and should still be
;; loaded using load/require/use-package in the user-config section below in
;; this file). If you need some configuration for these packages, then
;; consider creating a layer. You can also put the configuration in
;; `dotspacemacs/user-config'. To use a local version of a package, use the
;; `:location' property: '(your-package :location "~/path/to/your-package/")
;; Also include the dependencies as they will not be resolved automatically.
dotspacemacs-additional-packages
'(
all-the-icons
centaur-tabs
smart-tabs-mode
tablist
mini-frame
company-statistics
exec-path-from-shell
cmake-ide
highlight-doxygen
)
;; A list of packages that cannot be updated.
dotspacemacs-frozen-packages '()
;; A list of packages that will not be installed and loaded.
;; Exclude orgit to fix mode problem in PDFView
dotspacemacs-excluded-packages '(orgit)
;; Defines the behaviour of Spacemacs when installing packages.
;; Possible values are `used-only', `used-but-keep-unused' and `all'.
;; `used-only' installs only explicitly used packages and deletes any unused
;; packages as well as their unused dependencies. `used-but-keep-unused'
;; installs only the used packages but won't delete unused ones. `all'
;; installs *all* packages supported by Spacemacs and never uninstalls them.
;; (default is `used-only')
dotspacemacs-install-packages 'used-only)

View File

@ -25,6 +25,7 @@ This function is called immediately after `dotspacemacs/init', before layer
configuration. configuration.
It is mostly for variables that should be set before packages are loaded. It is mostly for variables that should be set before packages are loaded.
If you are unsure, try setting them in `dotspacemacs/user-config' first." If you are unsure, try setting them in `dotspacemacs/user-config' first."
(load "~/common/home/spacemacs/user-init.el")
) )
(defun dotspacemacs/user-load () (defun dotspacemacs/user-load ()

View File

@ -2,15 +2,6 @@
(exec-path-from-shell-initialize) (exec-path-from-shell-initialize)
(spacemacs/enable-transparency) (spacemacs/enable-transparency)
;; Typing
(setq evil-indent-convert-tabs nil)
(setq-default indent-tabs-mode t)
(setq-default tab-width 2)
;; Key Bindings
(evil-ex-define-cmd "q" 'kill-this-buffer)
(evil-ex-define-cmd "quit" 'evil-quit)
;; Auto save upon defocus ;; Auto save upon defocus
(add-hook 'focus-out-hook (add-hook 'focus-out-hook
(defun save-current-buffer-if-needed () (defun save-current-buffer-if-needed ()
@ -18,40 +9,6 @@
(when (and (buffer-file-name) (buffer-modified-p)) (when (and (buffer-file-name) (buffer-modified-p))
(save-buffer)))) (save-buffer))))
;; Display
(spacemacs/toggle-whitespace-globally-on)
(setq whitespace-display-mappings
;; all numbers are Unicode codepoint in decimal. ⁖ (insert-char 182 1)
'(
(space-mark 32 [183] [46]) ; 32 SPACE 「 」, 183 MIDDLE DOT 「·」, 46 FULL STOP 「.」
(newline-mark 10 [172 10]) ; 10 LINE FEED, 172 Not Sign「¬」
(tab-mark 9 [10141 9] [92 9]) ; 9 TAB, 10141 Triangle-headed rightwards arrow 「➝」
))
(set-face-attribute 'whitespace-space nil
:background nil
:foreground "gray30")
(set-face-attribute 'whitespace-space-after-tab nil
:background nil
:foreground "gray30")
(set-face-attribute 'whitespace-tab nil
:background nil
:foreground "gray30")
(set-face-attribute 'whitespace-newline nil
:background nil
:foreground "gray30")
(set-face-attribute 'whitespace-line nil
:background "gray20"
:foreground nil)
;; Disabling this since we use smart indenting
(set-face-attribute 'whitespace-indentation nil
:background nil
:foreground "gray30")
;; Syntax highlighting
(set-face-attribute 'font-lock-type-face nil
:foreground "#55fe55")
(set-face-attribute 'font-lock-constant-face nil
:foreground "#ecbd3d")
;; Org mode ;; Org mode
(setq org-format-latex-options (plist-put org-format-latex-options :scale 2.0)) (setq org-format-latex-options (plist-put org-format-latex-options :scale 2.0))
@ -85,6 +42,9 @@
;; Mixed indent mode (in conjunction with smart-tabs-mode) ;; Mixed indent mode (in conjunction with smart-tabs-mode)
(setq evil-indent-convert-tabs nil)
(setq-default indent-tabs-mode t)
(setq-default tab-width 2)
(setq css-indent-offset 2) (setq css-indent-offset 2)
(smart-tabs-insinuate (smart-tabs-insinuate
'c 'c
@ -109,9 +69,41 @@
"--pch-storage=memory" "--pch-storage=memory"
)) ))
(highlight-doxygen-global-mode 1) (highlight-doxygen-global-mode 1)
(set-face-attribute 'highlight-doxygen-comment nil
:background nil
:slant 'italic)
;; whitespace mode
(spacemacs/toggle-whitespace-globally-on)
(defun common-whitespace-program-hook ()
(setq whitespace-style '(face spaces tabs newline trailing space-mark tab-mark newline-mark lines-tail))
(interactive)
(whitespace-mode t)
(setq whitespace-line-column 80)
)
(add-hook 'text-mode-hook #'(lambda ()
(setq whitespace-style '(face spaces tabs newline trailing space-mark tab-mark newline-mark))
(interactive)
(whitespace-mode t)
(setq whitespace-line-column 'nil)))
(add-hook 'latex-mode-hook 'common-whitespace-program-hook)
(add-hook 'prog-mode-hook 'common-whitespace-program-hook)
(setq whitespace-display-mappings
;; all numbers are Unicode codepoint in decimal. ⁖ (insert-char 182 1)
'(
(space-mark 32 [183] [46]) ; 32 SPACE 「 」, 183 MIDDLE DOT 「·」, 46 FULL STOP 「.」
(newline-mark 10 [172 10]) ; 10 LINE FEED, 172 Not Sign「¬」
(tab-mark 9 [10141 9] [92 9]) ; 9 TAB, 10141 Triangle-headed rightwards arrow 「➝」
))
;; Syntax highlighting
;(set-face-attribute 'font-lock-type-face nil
; :foreground "#55fe55")
;(set-face-attribute 'font-lock-constant-face nil
; :foreground "#ecbd3d")
;;(setq opam-share (substring (shell-command-to-string ;;(setq opam-share (substring (shell-command-to-string
;; "opam config var share 2> /dev/null") 0 -1)) ;; "opam config var share 2> /dev/null") 0 -1))

View File

@ -0,0 +1,44 @@
(setq
theming-modifications
'(
(spacemacs-dark
(whitespace-space :background unspecified
:foreground "gray30")
(whitespace-space-after-tab :foreground "gray30")
(whitespace-tab :background unspecified)
(whitespace-newline :foreground "gray30")
(whitespace-line :background unspecified)
(whitespace-indentation :foreground "gray30")
(highlight-doxygen-comment :slant italic)
)
(noctilux
(whitespace-space :background unspecified
:foreground "gray30")
(whitespace-space-after-tab :foreground "gray30")
(whitespace-tab :background unspecified
:foreground "gray30")
(whitespace-newline :foreground "gray30")
(whitespace-line :background unspecified)
(whitespace-indentation :foreground "gray30")
(header-line :background unspecified
:box "gray80"
:inverse-video nil)
(highlight-doxygen-comment :slant italic)
)
(occidental
(highlight :background "#9EC4EB") ;; The default is too bright
(whitespace-space :background unspecified
:foreground "gray70")
(whitespace-space-after-tab :foreground "gray70")
(whitespace-tab :background unspecified
:foreground "gray70")
(whitespace-newline :foreground "gray70")
(whitespace-line :background unspecified)
(whitespace-indentation :foreground "gray70")
(header-line :background unspecified
:box "gray20"
:inverse-video nil)
(highlight-doxygen-comment :slant italic)
)))
(spacemacs/update-theme)