** সম্পাদনা: ** এই লেখার পর থেকে মনে হয় যে বৈশিষ্ট্যগুলির অংশটি সরাসরি মার্কডাউন-মোডে প্রয়োগ করা হয়েছে। এই মন্তব্যটি দেখুন এবং এতে লিঙ্কগুলি।
কনফিগারেশন
আপনি নিতে পারেন দুটি পন্থা আছে।
- আপনি একটি কমান্ড লিখতে পারেন যা মার্কডাউন কোডটি কম্পাইল করে (শেল কমান্ড ব্যবহার করে) এবং একটি বাফারে এইচটিএমএল প্রদর্শন করে।
- বাফারকে রেন্ডারড মার্কাউনের মতো দেখতে আপনি কিছু কাস্টমাইজেশনকে এ-লা ওআরগ-মোড তৈরি করতে পারেন ।
আমি এখানে 2 নম্বরটি কীভাবে বাস্তবায়ন করতে হবে তা ব্যাখ্যা করছি below নীচের সমস্ত কোডটি কেবল আপনার init ফাইলটিতে অনুলিপি করুন।
ফন্ট-লক বিধি যুক্ত করুন
এই পরিবর্তনশীল নিয়ন্ত্রণ করে আপনি কীভাবে তালিকা দেখতে চান তা নিয়ন্ত্রণ করে। এটি তালিকাটি যুক্ত করতে কিছু জায়গা যুক্ত করে এবং একটি সুন্দর বুলেট-পয়েন্ট ব্যবহার করে (যদি আপনার ফন্টটি এটি প্রদর্শন করতে পারে)।
(defvar endless/bullet-appearance
(propertize (if (char-displayable-p ?•) " •" " *")
'face 'markdown-list-face)
"String to be displayed as the bullet of markdown list items.")
এটি হ'ল কমান্ড যা আসলে নিয়ম যুক্ত করে। তালিকার জন্য একটি এবং লিঙ্কগুলির জন্য একটি রয়েছে।
(require 'rx)
(defvar endless/markdown-link-regexp
"\\[\\(?1:[^]]+\\)]\\(?:(\\(?2:[^)]+\\))\\|\\[\\(?3:[^]]+\\)]\\)"
"Regexp matching a markdown link.")
(font-lock-add-keywords
'markdown-mode
'(("^ *\\(\\*\\|\\+\\|-\\|\\) "
1 `(face nil display ,endless/bullet-appearance) prepend)
(endless/markdown-link-regexp
1 '(face nil display "") prepend))
'append)
লিঙ্কটি সম্পাদনযোগ্য করুন
যেহেতু আমরা display
এই লিঙ্কটির কিছু অংশ লুকানোর জন্য সম্পত্তিটি ব্যবহার করছি , আমাদের ফন্ট-লকটি বলতে হবে যে যখনই আপনি লিঙ্কটির কিছু অংশ মুছবেন (তখনও আমরা এটি সম্পাদনা করতে পারি) property
(add-hook 'markdown-mode-hook #'endless/markdown-font-lock)
(defun endless/markdown-font-lock ()
"Configure aggressive font-locking of `markdown-mode'."
(define-key markdown-mode-map "\C-c\C-l" #'endless/markdown-insert-link)
(add-to-list (make-local-variable 'font-lock-extra-managed-props) 'display))
C-c C-l
Org- মোডের মতো, সহজেই আবদ্ধ, এটি সম্পাদনা করার জন্য আমরা একটি আদেশও সংজ্ঞায়িত করতে পারি ।
(defun endless/markdown-insert-link ()
"Insert or edit link at point."
(interactive)
(if (or (looking-at endless/markdown-link-regexp)
(and (ignore-errors (backward-up-list) t)
(or (looking-at endless/markdown-link-regexp)
(and (forward-sexp -1)
(looking-at endless/markdown-link-regexp)))))
(let ((data (endless/ask-for-link
(match-string-no-properties 1)
(or (match-string-no-properties 2)
(match-string-no-properties 3)))))
(if (match-string-no-properties 2)
(replace-match (cdr data) :fixedcase :literal nil 2)
(replace-match (cdr data) :fixedcase :literal nil 3))
(replace-match (car data) :fixedcase :literal nil 1))
(let ((data (endless/ask-for-link)))
(insert "[" (car data) "](" (cdr data) ")"))))
(defun endless/ask-for-link (&optional name link)
(cons (read-string "Text of the link: " name)
(read-string "URL of the link: " link)))
(Alচ্ছিক) কিছু মুখ কনফিগার করুন
আপনার অনুরোধ করা পয়েন্টগুলির জন্য এটি যথেষ্ট হওয়া উচিত। আপনি যদি চান যে আপনার বাফার আরও এসই মার্কডাউনের মতো দেখতে চান , কল করুন
M-x customize-group RET markdown-faces
এবং আপনি যা উপযুক্ত তা পরিবর্তন করুন। আমি নিজের কিছু কনফিগার করেছি এবং আমি যা পেয়েছি তা এখানে।
(custom-set-faces
'(markdown-header-face-1 ((t (:inherit markdown-header-face :height 2.0))))
'(markdown-header-face-2 ((t (:inherit markdown-header-face :height 1.7))))
'(markdown-header-face-3 ((t (:inherit markdown-header-face :height 1.4))))
'(markdown-header-face-4 ((t (:inherit markdown-header-face :height 1.1))))
'(markdown-inline-code-face ((t (:inherit font-lock-constant-face :background "gainsboro"))))
'(markdown-link-face ((t (:inherit link))))
'(markdown-pre-face ((t (:inherit font-lock-constant-face :background "gainsboro")))))
ফলাফল
কনফিগারেশনের প্রথম 2 সেট পরে আপনি যা পাবেন তা এখানে:
পাশাপাশি মুখগুলি কনফিগার করার পরে আপনি কী পাবেন। এটি আরও ভাল দেখায় কিনা তা তর্কযোগ্য, আমি ব্যক্তিগতভাবে উপরের সাথে আঁকছি।