emacs bây giờ không hỗ trợ chữ ghép (trên OSX có một số hỗ trợ, nhưng không phải trên các nền tảng khác). Tuy nhiên, emacs 24.4+ hỗ trợ prettify-symbols-mode
mà theo một số cách là tốt hơn so với hỗ trợ dây chằng bình thường.
Chế độ đó cho phép đăng ký để hiển thị bất kỳ biểu thức chính quy nào với bất kỳ glyph nào. Tôi đang sử dụng đoạn mã này một cách cá nhân để có được các chữ số Fira Code để hoạt động trong các emacs trên linux. (EDIT: không may là liên kết hiện đã chết, chính sách stackoverflow để luôn sao chép nội tuyến rõ ràng là một điều tốt ...)
Liên kết tôi đặt ban đầu đã chết và tôi không chắc chắn chính xác những gì nó chứa nhưng tôi nghĩ các liên kết này sẽ tốt:
https://github.com/tonsky/FiraCode/wiki/Emacs-inemony#USE-prettify-symbols và https://github.com/tonsky/FiraCode/issues/312#issuecomment-262878734
Do vấn đề liên kết chết, lần này tôi sẽ đặt mã nội tuyến:
(defun fira-code-mode--make-alist (list)
"Generate prettify-symbols alist from LIST."
(let ((idx -1))
(mapcar
(lambda (s)
(setq idx (1+ idx))
(let* ((code (+ #Xe100 idx))
(width (string-width s))
(prefix ())
(suffix '(?\s (Br . Br)))
(n 1))
(while (< n width)
(setq prefix (append prefix '(?\s (Br . Bl))))
(setq n (1+ n)))
(cons s (append prefix suffix (list (decode-char 'ucs code))))))
list)))
(defconst fira-code-mode--ligatures
'("www" "**" "***" "**/" "*>" "*/" "\\\\" "\\\\\\"
"{-" "[]" "::" ":::" ":=" "!!" "!=" "!==" "-}"
"--" "---" "-->" "->" "->>" "-<" "-<<" "-~"
"#{" "#[" "##" "###" "####" "#(" "#?" "#_" "#_("
".-" ".=" ".." "..<" "..." "?=" "??" ";;" "/*"
"/**" "/=" "/==" "/>" "//" "///" "&&" "||" "||="
"|=" "|>" "^=" "$>" "++" "+++" "+>" "=:=" "=="
"===" "==>" "=>" "=>>" "<=" "=<<" "=/=" ">-" ">="
">=>" ">>" ">>-" ">>=" ">>>" "<*" "<*>" "<|" "<|>"
"<$" "<$>" "<!--" "<-" "<--" "<->" "<+" "<+>" "<="
"<==" "<=>" "<=<" "<>" "<<" "<<-" "<<=" "<<<" "<~"
"<~~" "</" "</>" "~@" "~-" "~=" "~>" "~~" "~~>" "%%"
"x" ":" "+" "+" "*"))
(defvar fira-code-mode--old-prettify-alist)
(defun fira-code-mode--enable ()
"Enable Fira Code ligatures in current buffer."
(setq-local fira-code-mode--old-prettify-alist prettify-symbols-alist)
(setq-local prettify-symbols-alist (append (fira-code-mode--make-alist fira-code-mode--ligatures) fira-code-mode--old-prettify-alist))
(prettify-symbols-mode t))
(defun fira-code-mode--disable ()
"Disable Fira Code ligatures in current buffer."
(setq-local prettify-symbols-alist fira-code-mode--old-prettify-alist)
(prettify-symbols-mode -1))
(define-minor-mode fira-code-mode
"Fira Code ligatures minor mode"
:lighter " Fira Code"
(setq-local prettify-symbols-unprettify-at-point 'right-edge)
(if fira-code-mode
(fira-code-mode--enable)
(fira-code-mode--disable)))
(defun fira-code-mode--setup ()
"Setup Fira Code Symbols"
(set-fontset-font t '(#Xe100 . #Xe16f) "Fira Code Symbol"))
(provide 'fira-code-mode)
Tôi đã nói rằng trong một số cách, điều này tốt hơn so với chữ ghép bình thường .. Đó là vì đó là "a la carte". Bạn có thể trộn và kết hợp, chỉ lấy các biểu tượng bạn thích. Bạn có thể nói, tôi muốn ";;" chữ ghép, NGOẠI TRỪ nếu ký tự tiếp theo lại ";" trong trường hợp đó tôi không muốn điều đó ... Và về kết hợp và kết hợp ... Tôi đang sử dụng phông chữ 'Fira Mono', cùng với chữ ghép 'Mã Fira'. Bạn không phải mua trong toàn bộ phông chữ.
Nó tệ hơn chữ ghép thuần túy vì nó không hoạt động được và nó yêu cầu phông chữ phải được điều chỉnh theo một cách nhất định để làm cho nó có thể.