From d7b1e1abb733a44a4b9f36e9620b2aad653ab921 Mon Sep 17 00:00:00 2001 From: Howland Owl Date: Thu, 24 Aug 2017 15:26:23 +0300 Subject: [PATCH] Allow ligatures in emacs --- emacs-init-el | 136 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 136 insertions(+) diff --git a/emacs-init-el b/emacs-init-el index bde4d2c..af6449c 100644 --- a/emacs-init-el +++ b/emacs-init-el @@ -1,4 +1,6 @@ (require 'package) +(set-language-environment "UTF-8") +(set-default-coding-systems 'utf-8) (setq package-enable-at-startup nil) (add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/")) ;;(add-to-list 'package-archives '("marmalade" . "https://marmalade-repo.org/packages/")) @@ -150,3 +152,137 @@ ;; If there is more than one, they won't work right. '(default ((t (:inherit nil :stipple nil :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight normal :height 142 :width normal :foundry "unci" :family "MonofurForPowerline Nerd Font")))) '(fixed-pitch ((t (:family "Iosevka"))))) + +;;; 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) + ("\\(