** DÜZENLEME: ** Bu yazıdan beri, özelliklerin bir kısmı doğrudan işaretleme modunda uygulanmış gibi görünüyor. Bu yorumu ve içindeki bağlantıları kontrol edin .
Yapılandırma
Uygulayabileceğiniz iki yaklaşım vardır.
- İşaretleme kodunu derleyen bir komut yazabilirsiniz (bir kabuk komutu kullanarak) ve html'yi bir arabellekte görüntüler.
- Arabellek işlenmiş işaretleme gibi görünmesi için bazı özelleştirmeleri a-la org-mode yapabilirsiniz .
Burada 2 numarasının nasıl uygulanacağını açıklıyorum. Aşağıdaki tüm kodları init dosyasına kopyalamanız yeterli.
Yazı tipi kilidi kurallarını ekleyin
Bu değişken, listelerin nasıl görünmesini istediğinizi denetler. Listeye girinti eklemek için biraz boşluk ekler ve güzel bir madde işareti kullanır (yazı tipiniz görüntüleyebiliyorsa).
(defvar endless/bullet-appearance
(propertize (if (char-displayable-p ?•) " •" " *")
'face 'markdown-list-face)
"String to be displayed as the bullet of markdown list items.")
Bu, kuralları gerçekten ekleyen komuttur. Listeler için bir ve bağlantılar için bir tane var.
(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)
Bağlantıyı düzenlenebilir hale getirme
display
Özelliği bağlantının bir kısmını gizlemek için kullandığımız için , font kilidine bağlantının bir bölümünü her sildiğinizde bu özelliği silmesi gerektiğini söylemeliyiz (bu şekilde yine de düzenleyebiliriz).
(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))
Ayrıca C-c C-l
, org modunda olduğu gibi, kolayca düzenlemek için bağlı bir komut tanımlayabiliriz .
(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)))
(İsteğe bağlı) Bazı yüzleri yapılandırma
Bu, talep ettiğiniz puanlar için yeterli olmalıdır. Eğer tampon görünmek istiyorsanız daha GD markdown, çağrısı gibi
M-x customize-group RET markdown-faces
ve uygun gördüklerinizi değiştirin. Kendimi yapılandırarak yaptım ve işte elimde olan şey bu.
(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")))))
Sonuçlar
İlk 2 yapılandırmadan sonra ne elde edeceğiniz aşağıda açıklanmıştır:
Yüzleri yapılandırdıktan sonra da ne elde edeceğiniz aşağıda açıklanmıştır. Bunun daha iyi görünüp görünmeyeceği tartışmalı, ben şahsen yukarıdakilere sadık kalacağım.