** 편집 : **이 글을 쓴 이후로 기능의 일부가 마크 다운 모드에서 직접 구현 된 것 같습니다. 이 주석 과 그 링크를 확인하십시오 .
구성
취할 수있는 두 가지 방법이 있습니다.
- 쉘 다운 명령을 사용하여 마크 다운 코드를 컴파일하고 버퍼에 HTML을 표시하는 명령을 작성할 수 있습니다.
- 버퍼를 렌더링 된 마크 다운처럼 보이 도록 일부 사용자 지정을 a-la org-mode로 만들 수 있습니다.
여기에 2 번을 구현하는 방법을 설명합니다. 아래 코드를 모두 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
속성을 사용하여 링크의 일부를 숨기므로 링크의 일부를 삭제할 때마다 해당 속성을 지우도록 글꼴 잠금에 알려야합니다 (그러면 여전히 편집 할 수 있음).
(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-mode 에서처럼 , 바인드 된 명령을 쉽게 편집 할 수 있습니다 .
(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)))
(선택 사항) 일부면 구성
그것은 당신이 요청한 포인트에 충분해야합니다. 당신은 당신의 버퍼가보고 싶은 경우 더욱 SE 인하, 통화처럼
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")))))
결과
다음은 처음 두 가지 구성 세트 후에 얻을 수있는 것입니다.
얼굴을 구성한 후에 얻을 수있는 내용은 다음과 같습니다. 이것이 더 나아 보이는지 논쟁의 여지가 있습니다. 나는 개인적으로 위의 것을 고수 할 것입니다.