আমি কীভাবে ইম্যাকগুলিতে মার্কডাউনের এসই গন্ধ ব্যবহার করতে পারি?


17

আমি আমার ইমাসগুলিতে মার্কডাউনয়ের এসই গন্ধ ব্যবহার করতে চাই। ডিফল্ট মার্কডাউন মোডে কিছু বৈশিষ্ট্য রয়েছে (ব্যাকটিকস এবং ইনডেন্টেশন মার্ক কোড, #একটি শিরোনাম তৈরি করে এবং ফন্টও >পরিবর্তন করে) তবে আমি এগুলিও চাই:

  • * ইন্ডেন্টেশন সহ একটি তালিকা আইটেম তৈরি করতে।
  • [foo](http://example.com)foo হিসাবে প্রদর্শিত হবে এবং http://example.comক্লিক করা হলে একটি ব্রাউজার খুলুন ।

আদর্শভাবে, আমি এটি আমার ইম্যাকগুলিতে রেন্ডারড মার্কডাউন হিসাবে দেখানো চাই। উদাহরণস্বরূপ, যদি আমি লিখি:

## Header

* item 1
* item 2

         while true; do echo foo; done

End of list and more code

    while true; do echo bar; done

 See [here](http://example.com) for details

আমি এটি ইমাসে নিজেই এটির মতো উপস্থাপন করতে চাই:


শিরোলেখ

  • আইটেম 1
  • আইটেম 2

    while true; do echo foo; done
    

তালিকা এবং আরও কোডের সমাপ্তি

while true; do echo bar; done

বিশদ জন্য এখানে দেখুন


এটি কী অর্জন করা যায় এবং যদি তা হয় তবে কীভাবে?


রেকর্ডকৃত কোড ব্লক সম্পর্কে: আপনার জন্য ইতিমধ্যে মার্কডাউন মোড কোড ব্লকগুলি হাইলাইট করে না? আপনি সেখানে কি খুঁজছিলেন?
মালাবারবা

এছাড়াও, আপনি কি ডাব্লুওয়াইএসআইওয়াইওয়াইজি মার্কডাউন সম্পাদক হিসাবে এটি সম্পাদনযোগ্য হতে চান? বা আলাদা বাফারে "সংকলিত" আউটপুট প্রদর্শন করার জন্য এটি যথেষ্ট? পরেরটি বরং সহজ, পূর্বেরটি একটি কোডিং বেহেমথ।
মালবারবা

@ মালবারবা, হ্যাঁ, কোডটি ঠিক আছে। আমি যা চাই তা হ'ল স্বয়ংক্রিয় ইনডেন্টেড তালিকাগুলি ii) ইউআরএল হ্যান্ডলিং। হয় xdg-openক্লিক করে এমনকি কেবল ক্লিক করা হলে লক্ষ্য ঠিকানাটি প্রদর্শন করা হয় তবে লিঙ্ক পাঠ্যটি যখন না থাকে: ক্লিক করার সময় হয়ে ওঠার জন্য " এখানে ক্লিক করুন " Click [here](http://example.com)। আমার পাঠ্য নথিতে ইউআরএল নির্বিঘ্নে অন্তর্ভুক্ত করার কেবলমাত্র দ্রুত উপায়।
টেরডন

ঠিক আছে, তারপরে এই দুটি ফন্ট-লক-অ্যাড-কীওয়ার্ড দিয়ে অর্জন করা যায়। আমি আগামীকাল কিছু লেখার চেষ্টা করব, যদি কেউ আমাকে এটিকে না দেয়।
মালাবারবা

উত্তর:


19

** সম্পাদনা: ** এই লেখার পর থেকে মনে হয় যে বৈশিষ্ট্যগুলির অংশটি সরাসরি মার্কডাউন-মোডে প্রয়োগ করা হয়েছে। এই মন্তব্যটি দেখুন এবং এতে লিঙ্কগুলি।


কনফিগারেশন

আপনি নিতে পারেন দুটি পন্থা আছে।

  1. আপনি একটি কমান্ড লিখতে পারেন যা মার্কডাউন কোডটি কম্পাইল করে (শেল কমান্ড ব্যবহার করে) এবং একটি বাফারে এইচটিএমএল প্রদর্শন করে।
  2. বাফারকে রেন্ডারড মার্কাউনের মতো দেখতে আপনি কিছু কাস্টমাইজেশনকে এ-লা ওআরগ-মোড তৈরি করতে পারেন ।

আমি এখানে 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-lOrg- মোডের মতো, সহজেই আবদ্ধ, এটি সম্পাদনা করার জন্য আমরা একটি আদেশও সংজ্ঞায়িত করতে পারি ।

(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 সেট পরে আপনি যা পাবেন তা এখানে:
এখানে চিত্র বর্ণনা লিখুন

পাশাপাশি মুখগুলি কনফিগার করার পরে আপনি কী পাবেন। এটি আরও ভাল দেখায় কিনা তা তর্কযোগ্য, আমি ব্যক্তিগতভাবে উপরের সাথে আঁকছি।
এখানে চিত্র বর্ণনা লিখুন


কি দারুন! এটি নিখুঁত নিখুঁত, ধন্যবাদ। এটি আমি যা চেয়েছিলাম তার উত্তর দেয় তবে অতিরিক্ত ব্রাউনি পয়েন্টগুলির জন্য, লিঙ্কটিকে আরও ইন্টারেক্টিভ করার কোনও উপায় আছে কি? মানে, ইউআরএল বের করার একটি সহজ উপায়। ক্লিক করে [foo]এবং এর মধ্যেও টগল করা সম্ভব হবে [foo](http://bar.com)? আমি বিবরণ নিয়ে খুব বেশি মাথা ঘামাই না তবে চাইলে ইউআরএলটি সহজে প্রদর্শন করার একটি উপায় চাই। এই মুহুর্তে, এটি প্রদর্শিত হওয়ার জন্য আমাকে একটি বন্ধনী মুছে ফেলতে হবে। আমি এটি নিয়ে বাঁচতে পারি তবে আমি আরও ভালভাবে আগ্রহী।
টেরডন

@ ইটারডন হয়ে গেছে! ..
মালাবারবা

আমি এটি ইম্যাক্সের সাথে সম্পাদনার সাথে একত্রিত করতে যাচ্ছি , এবং তারপরে আমি ত্রি-রাজ্য অঞ্চলটি গ্রহণ করব!
নিসপিও

@ মালবারবা সেখানে একটি ত্রুটি বলে মনে হচ্ছে। আমি পেতে "Unknown rx form গ্রুপ-এন ' " . Output of --debug-init` এখানে ।? কোন ধারনা
terdon

@terdon এটি সম্ভব গ্রুপ-এন কেবল 24.4-এ সংজ্ঞায়িত হয়েছে, আমি যাচাই করার চেষ্টা করব। আপনি প্রতিটি দিয়ে প্রতিস্থাপনের চেষ্টা করতে পারেন ন্যায়বিচারের group-n X সাথে group। এটি এখনও কাজ করতে পারে
মালবারবা

5

শুরু করার জন্য একটি ভাল জায়গা হবে markdown-mode.elযা এখান থেকে ডাউনলোড করা যায়

এই মোডটি org-modeস্টাইল বিউটিফিকেশন অফার করে না , তবে এটি সিনট্যাক্স হাইলাইটিং এবং customizeবিকল্পগুলির নমনীয়তার প্রস্তাব দেয় ।

এই শৈলীর সৌন্দর্য বাড়ানোর জন্য, কারও কাছে মার্কডাউন-মোড.এল ফন্ট-ফেস প্রয়োগ করতে একটি এক্সটেনশন লিখতে হবে।

  • সংস্থা-mode.el মুখগুলিতে অধিকাংশ সংজ্ঞায়িত করা হয় সংস্থা-faces.el

  • অতিরিক্তভাবে আপনি কীভাবে org- মোড অক্ষর দিয়ে পাঠ্যের পরিবর্তে টেক্সটটি প্রতিস্থাপন করেন তা একবার দেখতে চান। এই কোডটি org-entities.el এ রয়েছে । এটি কোড যা ল্যাটেক্সকে \pm± এর সাথে প্রতিস্থাপন করে ±


ধন্যবাদ, আমি এই মুহুর্তে মার্কডাউন মোডটি ব্যবহার করছি, যেমনটি আমি আমার উত্তরে উল্লেখ করেছি। আমি কীভাবে যে বৈশিষ্ট্যগুলি অনুপস্থিত তা কীভাবে প্রয়োগ করতে হয় এবং ইমাকগুলি কীভাবে সেগুলি রেন্ডার হিসাবে প্রদর্শিত হয় তা কীভাবে প্রয়োগ করতে হয় তা জানতে চাই। বিকল্পভাবে, আমি জানতে চাই যে যদি তাদের ক্ষেত্রে রেন্ডার করা প্রদর্শিত হয় তবে এটি অসম্ভব।
টেরডন

এটি করা সম্ভব, org- মোড সিনট্যাক্স বিউটিফিকেশন এর মতো করে। কোডটি খুঁজতে আমাকে কয়েক মুহুর্ত দিন। আমি অন্য মেজর-মোডের জন্য অনুরূপ কোডিং করেছি। আমি বুঝতে পারিনি যে আপনি মার্কডাউন.এল সম্পর্কে ইতিমধ্যে জানতেন।
নিকসাগল

আপনি যা চান তা শুরু করার উপায় সরবরাহ করার জন্য উত্তরটি সম্পাদনা করেছি। আমি যখন বাড়ি ফিরে আসি, তখন আমি কিছু কোড আপ করতে সক্ষম হতে পারি যা আপনি যা চান ঠিক তেমন করে। যেমনটি হয়, org- মোড ডেনোটিং *স্তরগুলি আড়াল করতে শিরোনাম পরিবর্তন করে এবং শিরোনামের আকারটি যেখানে নথিতে রয়েছে তার ভিত্তিতে পরিবর্তন করে। এটি সুন্দর-ফর্ম্যাট লিঙ্কগুলিতে সক্ষম।
নিকসাগল
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.