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
;; by your Emacs build.
;; 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
;; 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)
dotspacemacs-initial-scratch-message nil
;; 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
;; with 2 themes variants, one dark and one light)
dotspacemacs-themes '(spacemacs-dark
spacemacs-light)
dotspacemacs-themes '(noctilux
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',
;; `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)
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")
dotspacemacs-leader-key "SPC"

View File

@ -1,173 +1,176 @@
"Layer configuration:
This function should only modify configuration layer settings."
(setq-default
;; Base distribution to use. This is a layer contained in the directory
;; `+distribution'. For now available distributions are `spacemacs-base'
;; or `spacemacs'. (default 'spacemacs)
dotspacemacs-distribution 'spacemacs
(setq-default
;; Base distribution to use. This is a layer contained in the directory
;; `+distribution'. For now available distributions are `spacemacs-base'
;; or `spacemacs'. (default 'spacemacs)
dotspacemacs-distribution 'spacemacs
;; Lazy installation of layers (i.e. layers are installed only when a file
;; with a supported type is opened). Possible values are `all', `unused'
;; and `nil'. `unused' will lazy install only unused layers (i.e. layers
;; not listed in variable `dotspacemacs-configuration-layers'), `all' will
;; lazy install any layer that support lazy installation even the layers
;; listed in `dotspacemacs-configuration-layers'. `nil' disable the lazy
;; installation feature and you have to explicitly list a layer in the
;; variable `dotspacemacs-configuration-layers' to install it.
;; (default 'unused)
dotspacemacs-enable-lazy-installation 'unused
;; Lazy installation of layers (i.e. layers are installed only when a file
;; with a supported type is opened). Possible values are `all', `unused'
;; and `nil'. `unused' will lazy install only unused layers (i.e. layers
;; not listed in variable `dotspacemacs-configuration-layers'), `all' will
;; lazy install any layer that support lazy installation even the layers
;; listed in `dotspacemacs-configuration-layers'. `nil' disable the lazy
;; installation feature and you have to explicitly list a layer in the
;; variable `dotspacemacs-configuration-layers' to install it.
;; (default 'unused)
dotspacemacs-enable-lazy-installation 'unused
;; If non-nil then Spacemacs will ask for confirmation before installing
;; a layer lazily. (default t)
dotspacemacs-ask-for-lazy-installation t
;; If non-nil then Spacemacs will ask for confirmation before installing
;; a layer lazily. (default t)
dotspacemacs-ask-for-lazy-installation t
;; List of additional paths where to look for configuration layers.
;; Paths must have a trailing slash (i.e. `~/.mycontribs/')
dotspacemacs-configuration-layer-path '()
;; List of additional paths where to look for configuration layers.
;; Paths must have a trailing slash (i.e. `~/.mycontribs/')
dotspacemacs-configuration-layer-path '()
;; List of configuration layers to load.
dotspacemacs-configuration-layers
'(
;; ----------------------------------------------------------------
;; Example of useful layers you may want to use right away.
;; Uncomment some layer names and press `SPC f e R' (Vim style) or
;; `M-m f e R' (Emacs style) to install them.
;; ----------------------------------------------------------------
;; List of configuration layers to load.
dotspacemacs-configuration-layers
'(
;; ----------------------------------------------------------------
;; Example of useful layers you may want to use right away.
;; Uncomment some layer names and press `SPC f e R' (Vim style) or
;; `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
(spell-checking :variables ;; Required: aspell
spell-checking-enable-by-default nil)
syntax-checking
;; 4 Completion
auto-completion
;helm ;; This is slow. Replace by 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
;; 3 Checker
(spell-checking :variables ;; Required: aspell
spell-checking-enable-by-default nil)
syntax-checking
;; 4 Completion
auto-completion
;helm ;; This is slow. Replace by 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
;; 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
;; 8 Fonts
unicode-fonts
;; 9 Fun
emoji
;; 11 Miscellaneous
multiple-cursors
company-statistics
exec-path-from-shell
;; 12 Music
alda ;; Required: alda
cmake-ide
highlight-doxygen
;; 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
;; A list of packages that cannot be updated.
dotspacemacs-frozen-packages '()
;; 18 Source Control
git
version-control
;; A list of packages that will not be installed and loaded.
;; Exclude orgit to fix mode problem in PDFView
dotspacemacs-excluded-packages '(orgit)
;; 20 Tagging
cscope
;; 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)
;; 21 themes
colors
theming ; Modification of themes
themes-megapack
;; 22 Tools
(cmake :variables
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.
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."
(load "~/common/home/spacemacs/user-init.el")
)
(defun dotspacemacs/user-load ()

View File

@ -2,15 +2,6 @@
(exec-path-from-shell-initialize)
(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
(add-hook 'focus-out-hook
(defun save-current-buffer-if-needed ()
@ -18,40 +9,6 @@
(when (and (buffer-file-name) (buffer-modified-p))
(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
(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)
(setq evil-indent-convert-tabs nil)
(setq-default indent-tabs-mode t)
(setq-default tab-width 2)
(setq css-indent-offset 2)
(smart-tabs-insinuate
'c
@ -109,9 +69,41 @@
"--pch-storage=memory"
))
(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
;; "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)