diff options
author | EuAndreh <eu@euandre.org> | 2018-07-13 22:46:24 -0300 |
---|---|---|
committer | EuAndreh <eu@euandre.org> | 2018-07-13 22:46:24 -0300 |
commit | bda44d03927aae9ae0242c716ab6730f5ace36b0 (patch) | |
tree | 7cb9f27359e1e90b04ceb3930c812c9ac6c27807 | |
parent | Fix missing extraGroup (diff) | |
download | dotfiles-bda44d03927aae9ae0242c716ab6730f5ace36b0.tar.gz dotfiles-bda44d03927aae9ae0242c716ab6730f5ace36b0.tar.xz |
Add Fira Code font to Emacs
-rw-r--r-- | nixos/configuration.nix | 11 | ||||
-rw-r--r-- | spacemacs.el | 162 |
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 |