aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--nixos/configuration.nix11
-rw-r--r--spacemacs.el162
2 files changed, 167 insertions, 6 deletions
diff --git a/nixos/configuration.nix b/nixos/configuration.nix
index 98f2f83..9bd5980 100644
--- a/nixos/configuration.nix
+++ b/nixos/configuration.nix
@@ -57,7 +57,14 @@
virtualisation.docker.enable = true;
virtualisation.virtualbox.host.enable = true;
- # $ nix-env -qaP | grep wget
+ fonts.fonts = with pkgs; [
+ source-code-pro
+ fira-code
+ fira-mono
+ fira-code-symbols
+ freefont_ttf
+ ];
+
environment.systemPackages = with pkgs; [
@@ -140,10 +147,8 @@
gitAndTools.hub # GitHub helper
insomnia
bind # =dig=
- source-code-pro
file
gitlab-runner
- source-code-pro
sshpass
zathura # for viewing Emacs PDF files
timidity
diff --git a/spacemacs.el b/spacemacs.el
index 35c7dea..240828a 100644
--- a/spacemacs.el
+++ b/spacemacs.el
@@ -74,6 +74,7 @@ This function should only modify configuration layer settings."
swift
syntax-checking
typescript
+ unicode-fonts
version-control
windows-scripts
yaml
@@ -236,8 +237,9 @@ It should only modify the values of Spacemacs settings."
;; Default font, or prioritized list of fonts. `powerline-scale' allows to
;; quickly tweak the mode-line size to make separators look not too crappy.
- dotspacemacs-default-font '("Source Code Pro"
- :size 13
+ ;; Alternatives: "FreeMono", "Source Code Pro", "Default"
+ dotspacemacs-default-font '("Fira Code"
+ :size 16
:weight normal
:width normal)
@@ -689,6 +691,160 @@ This is the place where most of your configurations should be done. Unless it is
("n" "Next Task" entry (file+headline org-default-notes-file "Tasks")
"** NEXT %? \nDEADLINE: %t")))
+
+
+
+
+
+
+
+
+;;; Fira code
+;; This works when using emacs --daemon + emacsclient
+(add-hook 'after-make-frame-functions (lambda (frame) (set-fontset-font t '(#Xe100 . #Xe16f) "Fira Code Symbol")))
+;; This works when using emacs without server/client
+(set-fontset-font t '(#Xe100 . #Xe16f) "Fira Code Symbol")
+;; I haven't found one statement that makes both of the above situations work, so I use both for now
+
+(defconst fira-code-font-lock-keywords-alist
+ (mapcar (lambda (regex-char-pair)
+ `(,(car regex-char-pair)
+ (0 (prog1 ()
+ (compose-region (match-beginning 1)
+ (match-end 1)
+ ;; The first argument to concat is a string containing a literal tab
+ ,(concat " " (list (decode-char 'ucs (cadr regex-char-pair)))))))))
+ '(("\\(www\\)" #Xe100)
+ ("[^/]\\(\\*\\*\\)[^/]" #Xe101)
+ ("\\(\\*\\*\\*\\)" #Xe102)
+ ("\\(\\*\\*/\\)" #Xe103)
+ ("\\(\\*>\\)" #Xe104)
+ ("[^*]\\(\\*/\\)" #Xe105)
+ ("\\(\\\\\\\\\\)" #Xe106)
+ ("\\(\\\\\\\\\\\\\\)" #Xe107)
+ ("\\({-\\)" #Xe108)
+ ("\\(\\[\\]\\)" #Xe109)
+ ("\\(::\\)" #Xe10a)
+ ("\\(:::\\)" #Xe10b)
+ ("[^=]\\(:=\\)" #Xe10c)
+ ("\\(!!\\)" #Xe10d)
+ ("\\(!=\\)" #Xe10e)
+ ("\\(!==\\)" #Xe10f)
+ ("\\(-}\\)" #Xe110)
+ ("\\(--\\)" #Xe111)
+ ("\\(---\\)" #Xe112)
+ ("\\(-->\\)" #Xe113)
+ ("[^-]\\(->\\)" #Xe114)
+ ("\\(->>\\)" #Xe115)
+ ("\\(-<\\)" #Xe116)
+ ("\\(-<<\\)" #Xe117)
+ ("\\(-~\\)" #Xe118)
+ ("\\(#{\\)" #Xe119)
+ ("\\(#\\[\\)" #Xe11a)
+ ("\\(##\\)" #Xe11b)
+ ("\\(###\\)" #Xe11c)
+ ("\\(####\\)" #Xe11d)
+ ("\\(#(\\)" #Xe11e)
+ ("\\(#\\?\\)" #Xe11f)
+ ("\\(#_\\)" #Xe120)
+ ("\\(#_(\\)" #Xe121)
+ ("\\(\\.-\\)" #Xe122)
+ ("\\(\\.=\\)" #Xe123)
+ ("\\(\\.\\.\\)" #Xe124)
+ ("\\(\\.\\.<\\)" #Xe125)
+ ("\\(\\.\\.\\.\\)" #Xe126)
+ ("\\(\\?=\\)" #Xe127)
+ ("\\(\\?\\?\\)" #Xe128)
+ ("\\(;;\\)" #Xe129)
+ ("\\(/\\*\\)" #Xe12a)
+ ("\\(/\\*\\*\\)" #Xe12b)
+ ("\\(/=\\)" #Xe12c)
+ ("\\(/==\\)" #Xe12d)
+ ("\\(/>\\)" #Xe12e)
+ ("\\(//\\)" #Xe12f)
+ ("\\(///\\)" #Xe130)
+ ("\\(&&\\)" #Xe131)
+ ("\\(||\\)" #Xe132)
+ ("\\(||=\\)" #Xe133)
+ ("[^|]\\(|=\\)" #Xe134)
+ ("\\(|>\\)" #Xe135)
+ ("\\(\\^=\\)" #Xe136)
+ ("\\(\\$>\\)" #Xe137)
+ ("\\(\\+\\+\\)" #Xe138)
+ ("\\(\\+\\+\\+\\)" #Xe139)
+ ("\\(\\+>\\)" #Xe13a)
+ ("\\(=:=\\)" #Xe13b)
+ ("[^!/]\\(==\\)[^>]" #Xe13c)
+ ("\\(===\\)" #Xe13d)
+ ("\\(==>\\)" #Xe13e)
+ ("[^=]\\(=>\\)" #Xe13f)
+ ("\\(=>>\\)" #Xe140)
+ ("\\(<=\\)" #Xe141)
+ ("\\(=<<\\)" #Xe142)
+ ("\\(=/=\\)" #Xe143)
+ ("\\(>-\\)" #Xe144)
+ ("\\(>=\\)" #Xe145)
+ ("\\(>=>\\)" #Xe146)
+ ("[^-=]\\(>>\\)" #Xe147)
+ ("\\(>>-\\)" #Xe148)
+ ("\\(>>=\\)" #Xe149)
+ ("\\(>>>\\)" #Xe14a)
+ ("\\(<\\*\\)" #Xe14b)
+ ("\\(<\\*>\\)" #Xe14c)
+ ("\\(<|\\)" #Xe14d)
+ ("\\(<|>\\)" #Xe14e)
+ ("\\(<\\$\\)" #Xe14f)
+ ("\\(<\\$>\\)" #Xe150)
+ ("\\(<!--\\)" #Xe151)
+ ("\\(<-\\)" #Xe152)
+ ("\\(<--\\)" #Xe153)
+ ("\\(<->\\)" #Xe154)
+ ("\\(<\\+\\)" #Xe155)
+ ("\\(<\\+>\\)" #Xe156)
+ ("\\(<=\\)" #Xe157)
+ ("\\(<==\\)" #Xe158)
+ ("\\(<=>\\)" #Xe159)
+ ("\\(<=<\\)" #Xe15a)
+ ("\\(<>\\)" #Xe15b)
+ ("[^-=]\\(<<\\)" #Xe15c)
+ ("\\(<<-\\)" #Xe15d)
+ ("\\(<<=\\)" #Xe15e)
+ ("\\(<<<\\)" #Xe15f)
+ ("\\(<~\\)" #Xe160)
+ ("\\(<~~\\)" #Xe161)
+ ("\\(</\\)" #Xe162)
+ ("\\(</>\\)" #Xe163)
+ ("\\(~@\\)" #Xe164)
+ ("\\(~-\\)" #Xe165)
+ ("\\(~=\\)" #Xe166)
+ ("\\(~>\\)" #Xe167)
+ ("[^<]\\(~~\\)" #Xe168)
+ ("\\(~~>\\)" #Xe169)
+ ("\\(%%\\)" #Xe16a)
+ ;; ("\\(x\\)" #Xe16b) This ended up being hard to do properly so i'm leaving it out.
+ ("[^:=]\\(:\\)[^:=]" #Xe16c)
+ ("[^\\+<>]\\(\\+\\)[^\\+<>]" #Xe16d)
+ ("[^\\*/<>]\\(\\*\\)[^\\*/<>]" #Xe16f))))
+
+(defun add-fira-code-symbol-keywords ()
+ (font-lock-add-keywords nil fira-code-font-lock-keywords-alist))
+
+(add-hook 'prog-mode-hook
+ #'add-fira-code-symbol-keywords)
+
+(add-hook 'helm-major-mode-hook
+ (lambda ()
+ (setq auto-composition-mode nil)))
+
+
+
+
+
+
+(set-language-environment "UTF-8")
+(set-default-coding-systems 'utf-8)
+
+
t)
(defun dotspacemacs/emacs-custom-settings ()
@@ -703,7 +859,7 @@ This function is called at the very end of Spacemacs initialization."
;; If there is more than one, they won't work right.
'(package-selected-packages
(quote
- (debbugs soap-client yasnippet-snippets yapfify yaml-mode xterm-color ws-butler winum which-key web-mode web-beautify volatile-highlights vi-tilde-fringe uuidgen use-package unfill toml-mode toc-org tide tagedit symon swift-mode string-inflection sql-indent spaceline-all-the-icons smtpmail-multi smeargle slime-company slim-mode shell-pop scss-mode sayid sass-mode rvm ruby-tools ruby-test-mode ruby-refactor ruby-hash-syntax rubocop rspec-mode robe rjsx-mode restclient-helm restart-emacs rbenv rake rainbow-delimiters racer pyvenv pytest pyenv-mode py-isort pug-mode psci psc-ide powershell popwin pippel pipenv pip-requirements persp-mode perl6-mode pdf-tools password-generator paradox ox-reveal overseer orgit org-projectile org-present org-pomodoro org-mime org-download org-bullets org-brain open-junk-file ob-restclient ob-http ob-elixir nov nix-mode neotree nameless mwim multi-term move-text mmm-mode minitest midje-mode markdown-toc magithub magit-svn magit-gitflow magit-gh-pulls lorem-ipsum livid-mode live-py-mode linum-relative link-hint less-css-mode ledger-mode json-navigator js2-refactor js-doc jinja2-mode intero interleave insert-shebang indent-guide importmagic impatient-mode hungry-delete hlint-refactor hl-todo hindent highlight-parentheses highlight-numbers highlight-indentation helm-xref helm-themes helm-swoop helm-pydoc helm-purpose helm-projectile helm-nixos-options helm-mode-manager helm-make helm-hoogle helm-gitignore helm-flx helm-descbinds helm-css-scss helm-company helm-c-yasnippet helm-ag haskell-snippets google-translate golden-ratio gnuplot gitignore-templates github-search github-clone gitconfig-mode gitattributes-mode git-timemachine git-messenger git-link git-gutter-fringe git-gutter-fringe+ gist gh-md geiser fuzzy font-lock+ flyspell-correct-helm flycheck-rust flycheck-pos-tip flycheck-perl6 flycheck-mix flycheck-ledger flycheck-haskell flycheck-elm flycheck-credo flycheck-bashate flx-ido fish-mode fill-column-indicator fancy-battery eyebrowse expand-region evil-visualstar evil-visual-mark-mode evil-unimpaired evil-tutor evil-surround evil-org evil-numbers evil-nerd-commenter evil-mc evil-matchit evil-magit evil-lisp-state evil-lion evil-indent-plus evil-iedit-state evil-goggles evil-exchange evil-escape evil-cleverparens evil-args evil-anzu eshell-z eshell-prompt-extras esh-help erlang emmet-mode elm-mode elisp-slime-nav editorconfig dumb-jump dotenv-mode dockerfile-mode docker diminish diff-hl define-word dante cython-mode csv-mode counsel-projectile company-web company-tern company-statistics company-shell company-restclient company-plsense company-nixos-options company-lua company-ghci company-ghc company-cabal company-auctex company-ansible company-anaconda common-lisp-snippets column-enforce-mode cmm-mode clojure-snippets clojure-cheatsheet clj-refactor clean-aindent-mode cider-eval-sexp-fu chruby centered-cursor-mode cargo bundler browse-at-remote auto-yasnippet auto-highlight-symbol auto-dictionary auto-compile auctex-latexmk ansible-doc ansible alchemist aggressive-indent ace-window ace-link ace-jump-helm-line ac-ispell)))
+ (unicode-fonts ucs-utils font-utils persistent-soft list-utils key-chord mu4e-maildirs-extension mu4e-alert helm-mu engine-mode debbugs soap-client yasnippet-snippets yapfify yaml-mode xterm-color ws-butler winum which-key web-mode web-beautify volatile-highlights vi-tilde-fringe uuidgen use-package unfill toml-mode toc-org tide tagedit symon swift-mode string-inflection sql-indent spaceline-all-the-icons smtpmail-multi smeargle slime-company slim-mode shell-pop scss-mode sayid sass-mode rvm ruby-tools ruby-test-mode ruby-refactor ruby-hash-syntax rubocop rspec-mode robe rjsx-mode restclient-helm restart-emacs rbenv rake rainbow-delimiters racer pyvenv pytest pyenv-mode py-isort pug-mode psci psc-ide powershell popwin pippel pipenv pip-requirements persp-mode perl6-mode pdf-tools password-generator paradox ox-reveal overseer orgit org-projectile org-present org-pomodoro org-mime org-download org-bullets org-brain open-junk-file ob-restclient ob-http ob-elixir nov nix-mode neotree nameless mwim multi-term move-text mmm-mode minitest midje-mode markdown-toc magithub magit-svn magit-gitflow magit-gh-pulls lorem-ipsum livid-mode live-py-mode linum-relative link-hint less-css-mode ledger-mode json-navigator js2-refactor js-doc jinja2-mode intero interleave insert-shebang indent-guide importmagic impatient-mode hungry-delete hlint-refactor hl-todo hindent highlight-parentheses highlight-numbers highlight-indentation helm-xref helm-themes helm-swoop helm-pydoc helm-purpose helm-projectile helm-nixos-options helm-mode-manager helm-make helm-hoogle helm-gitignore helm-flx helm-descbinds helm-css-scss helm-company helm-c-yasnippet helm-ag haskell-snippets google-translate golden-ratio gnuplot gitignore-templates github-search github-clone gitconfig-mode gitattributes-mode git-timemachine git-messenger git-link git-gutter-fringe git-gutter-fringe+ gist gh-md geiser fuzzy font-lock+ flyspell-correct-helm flycheck-rust flycheck-pos-tip flycheck-perl6 flycheck-mix flycheck-ledger flycheck-haskell flycheck-elm flycheck-credo flycheck-bashate flx-ido fish-mode fill-column-indicator fancy-battery eyebrowse expand-region evil-visualstar evil-visual-mark-mode evil-unimpaired evil-tutor evil-surround evil-org evil-numbers evil-nerd-commenter evil-mc evil-matchit evil-magit evil-lisp-state evil-lion evil-indent-plus evil-iedit-state evil-goggles evil-exchange evil-escape evil-cleverparens evil-args evil-anzu eshell-z eshell-prompt-extras esh-help erlang emmet-mode elm-mode elisp-slime-nav editorconfig dumb-jump dotenv-mode dockerfile-mode docker diminish diff-hl define-word dante cython-mode csv-mode counsel-projectile company-web company-tern company-statistics company-shell company-restclient company-plsense company-nixos-options company-lua company-ghci company-ghc company-cabal company-auctex company-ansible company-anaconda common-lisp-snippets column-enforce-mode cmm-mode clojure-snippets clojure-cheatsheet clj-refactor clean-aindent-mode cider-eval-sexp-fu chruby centered-cursor-mode cargo bundler browse-at-remote auto-yasnippet auto-highlight-symbol auto-dictionary auto-compile auctex-latexmk ansible-doc ansible alchemist aggressive-indent ace-window ace-link ace-jump-helm-line ac-ispell)))
'(safe-local-variable-values
(quote
((eval progn