emacs ในตอนนี้ไม่สนับสนุนการเชื่อมโยง (บน OSX มีการสนับสนุนบางอย่าง แต่ไม่รองรับแพลตฟอร์มอื่น) อย่างไรก็ตาม emacs 24.4+ รองรับprettify-symbols-mode
ซึ่งในบางวิธีจะดีกว่าการสนับสนุนเอ็นปกติ
โหมดนั้นอนุญาตให้ subsitute สำหรับแสดง regex ด้วย glyph ใด ๆ ฉันใช้ตัวอย่างนี้เป็นการส่วนตัวเพื่อให้ได้รหัส Fira Code เพื่อทำงานกับ emacs บน linux (แก้ไข: น่าเสียดายที่ตอนนี้ลิงค์นั้นตายไปแล้วนโยบายของ stackoverflow ที่จะคัดลอกแบบอินไลน์มักจะเป็นสิ่งที่ดี ... )
ลิงค์ที่ฉันใส่ไว้ตอนแรกตายไปแล้วและฉันก็ไม่แน่ใจว่ามีอยู่จริง แต่ฉันคิดว่าลิงก์เหล่านี้น่าจะดี:
https://github.com/tonsky/FiraCode/wiki/Emacs-instructions#using-prettify-symbolsและhttps://github.com/tonsky/FiraCode/issues/312#issuecomment-262878734
เมื่อได้รับปัญหาเกี่ยวกับลิงก์ตายฉันกำลังวางโค้ดไว้ในบรรทัดในเวลานี้:
(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)
ฉันบอกว่าในบางวิธีนี้ดีกว่าหนังสติ๊กปกติ .. นั่นเป็นเพราะมันเป็น "อาหารตามสั่ง" คุณสามารถมิกซ์แอนด์แมทช์รับเฉพาะสัญลักษณ์ที่คุณชอบ คุณสามารถพูดได้ว่าฉันต้องการ ";;" มัดยกเว้นถ้าตัวละครต่อไปเป็นอีกครั้ง ";" ในกรณีที่ฉันไม่ต้องการ ... และเกี่ยวกับการมิกซ์แอนด์แมชชิ่ง ... ฉันใช้ฟอนต์ 'Fira Mono' ร่วมกับการใช้รหัส 'Fira Code' คุณไม่จำเป็นต้องซื้อแบบอักษรทั้งหมด
มันเลวร้ายยิ่งกว่าหนังสติ๊กบริสุทธิ์เพราะมันไม่ได้ผลนอกกรอบและมันต้องมีการปรับแบบอักษรเพื่อให้มันเป็นไปได้