PragmataPro ist eine Schriftart, die eine Reihe von Programmierligaturen enthält . Nach meinem Verständnis handelt es sich hierbei um OTF-Ligaturen (OpenType Face).
Mir ist bekannt, dass Emacs das programmgesteuerte Ersetzen von Zeichenkombinationen (z. B. ->
nach ⟶
oder lambda
nach λ
) unterstützt. Dies sind jedoch Unicode-Imitationen, da sie ihre eigenen Codepunkte haben, was bei echten Ligaturen nicht der Fall ist.
Stimmt es, dass Emacs (ab 25) OTF-Ligaturen nicht automatisch unterstützt? Gibt es auf einer niedrigeren Ebene Optionen zum manuellen Festlegen von Glyphenzuordnungen?
Wenn Ligaturen nicht unterstützt werden, was muss Emacs dann tun, um Ligaturen zu unterstützen?
haskell-mode
in dieser Übersicht beschrieben wird .prettify-symbols-mode
, die mit PragmataPro 0.822 ziemlich gut funktioniert.Antworten:
emacs unterstützt derzeit keine Ligaturen (unter OSX gibt es eine gewisse Unterstützung, aber nicht auf anderen Plattformen). Allerdings unterstützt Emacs 24.4+,
prettify-symbols-mode
was in gewisser Hinsicht besser ist als die Unterstützung normaler Ligaturen.In diesem Modus können Sie beliebige reguläre Ausdrücke mit beliebigen Glyphen ersetzen.
Ich persönlich verwende dieses Snippet , um Fira-Code-Ligaturen in Emacs unter Linux zum Laufen zu bringen.(EDIT: leider ist der link jetzt tot, die politik von stackoverflow immer inline zu kopieren ist offensichtlich die gute ...)Der Link, den ich ursprünglich gesetzt habe, ist tot und ich bin nicht sicher, was er genau enthielt, aber ich denke, diese Links sollten gut sein: https://github.com/tonsky/FiraCode/wiki/Emacs-instructions#using-prettify-symbols and https://github.com/tonsky/FiraCode/issues/312#issuecomment-262878734
In Anbetracht des Problems mit toten Links setze ich den Code diesmal in die Zeile:
Ich sagte, dass dies in gewisser Hinsicht besser ist als normale Ligaturen. Das liegt daran, dass es "a la carte" ist. Sie können mischen und anpassen, nur die Symbole, die Sie mögen. Man kann sagen, ich möchte das ";;" Ligatur, AUSSER wenn das nächste Zeichen wieder ";" ist In diesem Fall möchte ich es nicht ... Und was das Mischen und Zuordnen betrifft ... Ich verwende die Schriftart 'Fira Mono' zusammen mit den Ligaturen 'Fira Code'. Sie müssen nicht die gesamte Schrift einkaufen.
Es ist schlimmer als reine Ligaturen, weil es nicht sofort funktioniert und die Schriftart auf eine bestimmte Weise optimiert werden muss, um dies zu ermöglichen.
quelle
Wenn Sie mit OS X arbeiten, unterstützt der Carbon Mac Emacs-Port Ligaturen.
quelle