ইমাসে ওটিএফ লিগ্রেচার সমর্থন


46

প্রগমতাপ্রো একটি টাইপফেস যা বিভিন্ন প্রোগ্রামিং লিগাচারের সাথে আসে । আমার উপলব্ধি হ'ল এগুলি ওপেনটাইপ ফেস (ওটিএফ) লিগাচার।

আমি সচেতন যে এ গিয়ে Emacs (উদাহরণস্বরূপ চরিত্র সমাহারের কর্মসূচি প্রতিস্থাপন সমর্থন am ->করার বা lambdaকরার λ)। তবে এগুলি ইউনিকোড ফ্যাক্স লিগাচার, যেহেতু তাদের নিজস্ব কোড পয়েন্ট রয়েছে, যা আসল লিগচারগুলি নয়।

আমি কি ঠিক করেছি যে ইমাসগুলি (25 হিসাবে) স্বয়ংক্রিয়ভাবে ওটিএফ লিগচারগুলি সমর্থন করে না? নিম্ন স্তরে, গ্লিফ ম্যাপিং ম্যানুয়ালি নির্দিষ্ট করার জন্য কি বিকল্প আছে?

যদি লিগচারগুলি অসমর্থিত হয়, তবে লিগচারগুলি সমর্থন করার জন্য ইমাসের পক্ষে কী করা দরকার?


3
দেখে মনে হচ্ছে এটি এখনও সমর্থিত নয়: list.gnu.org/archive/html/emacs-devel/2015-01/msg00024.html
মোদি

কৌতূহলের বাইরে আপনার মনে থাকা "দরকারী বৃদ্ধির সংখ্যা" কী কী?
ড্যান

3
পাঠ্য মোডে উন্নত পরিবর্তনশীল-প্রস্থের রেন্ডারিং, প্রোগ্রামিং লিগাচার যা কোডের আকারকে প্রভাবিত না করে উত্স কোডটিকে আরও আকর্ষণীয় করে তোলে এবং বাক্স এবং তীরগুলির জন্য ডায়াগ্রাম্যাটিক লিগ্যাচারগুলি। দৃষ্টিনন্দন, "আকর্ষণীয়" সম্ভবত "দরকারী" এর চেয়ে ভাল বর্ণনাকারী।
ম্যাথু পিজিয়াক

github.com/i-tu/Hasklig/issues/10 হাস্কলিগের জন্য ইমাস সমর্থন সমর্থন করছে। একটি আংশিক সমাধান, যা Hasklig জন্য বিশেষভাবে কাজ করে এবং haskell-modeবিস্তারিত হয় এই সারকথা
ম্যাথু পিজিয়াক

3
আর / ইম্যাক্সের উপর একটি সাম্প্রতিক পোস্ট ব্যবহার করে একটি prettify-symbols-modeবিপরীতে পোস্ট করেছে , এবং এটি প্রগমতাপ্রো 0.822 এর সাথে বেশ ভাল কাজ করে।
कौशल মোদী

উত্তর:


9

ইমামস আপাতত লিগাচার সমর্থন করে না (ওএসএক্সে কিছু সমর্থন আছে, তবে অন্যান্য প্ল্যাটফর্মগুলিতে নয়)। যাইহোক, ইমাস 24.4+ সমর্থন করে prettify-symbols-modeযা কোনও কোনও উপায়ে সাধারণ লিগ্যাচার সাপোর্টের চেয়ে ভাল।

এই মোডটি কোনও গ্লাইফের সাথে কোনও রেগেক্স প্রদর্শনের জন্য সাবস্কিট করতে দেয়। আমি ফিনি কোড লিগ্যাচারগুলি লিনাক্সের ইম্যাকগুলিতে কাজ করতে ব্যক্তিগতভাবে এই স্নিপেটটি ব্যবহার করছি । (সম্পাদনা করুন: দুর্ভাগ্যক্রমে লিঙ্কটি এখন মারা গেছে, সর্বদা ইনলাইনে অনুলিপি করার জন্য স্ট্যাকওভারফ্লো নীতিটি অবশ্যই ভাল ...)

আমি যে লিঙ্কটি মূলত রেখেছিলাম তা মারা গেছে এবং এটিতে ঠিক কী রয়েছে তা আমি নিশ্চিত নই তবে এই লিঙ্কগুলি ভাল হওয়া উচিত বলে আমি মনে করি: https://github.com/tonsky/FiraCode/wiki/Emacs-instructions#used- ব্যাখ্যামূলক- চিহ্ন এবং 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)

আমি বলেছিলাম যে কিছু উপায়ে এটি সাধারণ লিগ্যাচারের চেয়ে ভাল That's এটি কারণ এটি "একটি লা কার্ট"। আপনি মিশ্রণ এবং মিল করতে পারেন, কেবল নিজের পছন্দ মতো প্রতীক নিতে পারেন। আপনি বলতে পারেন, আমি ";;" চাই লিগচার, পরের অক্ষরটি আবার থাকলে ";" সেক্ষেত্রে আমি এটি চাই না ... এবং মিক্স-এন্ড ম্যাচিং সম্পর্কে ... আমি 'ফিরা কোড' লিগ্যাচারের সাথে 'ফিরা মনো' ফন্ট ব্যবহার করছি। আপনাকে পুরো ফন্টে কিনতে হবে না।

এটি খাঁটি লিগ্যাচারের চেয়ে খারাপ কারণ এটি বাক্সের বাইরে কাজ করে না এবং এটি সম্ভব করার জন্য এটি একটি নির্দিষ্ট উপায়ে ফন্টটি টিউন করা প্রয়োজন।


ওহে! আপনি কি ফিরা কোড ligatures কাজ পেতে এই স্নিপেট ভাগ করতে পারেন? গিস্টটি মুছে ফেলা হবে বলে মনে হচ্ছে।
xamenrax

হু দুঃখিত ... উত্তরটি আপডেট করেছেন, আমি আশা করি এটি সাহায্য করবে
এমমানুয়েল টাউজরি

1
ধন্যবাদ! প্রায় 3 বছর
কেটে

0

আপনি যদি ওএস একাদশে থাকেন তবে বিশ্বাস করুন কার্বন ম্যাক ইমাস পোর্টটি লিগচারগুলিকে সমর্থন করে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.