spacemacs/contrib/!lang/markdown/packages.el
Xiang Ji 3258186df2 [Fix #2363] Fix inputting backtick and single quote in markdown mode
Not sure why that part of code was introduced in the first place but it seems to no longer work with the newest
packages. Both backtick and quote behaviors were a kind of broken. Removing the code makes them normal again. And there
seems to be nothing wrong with Github code blocks.
2015-08-02 17:47:50 -04:00

168 lines
6.5 KiB
EmacsLisp

;;; packages.el --- Markdown Layer packages File for Spacemacs
;;
;; Copyright (c) 2012-2014 Sylvain Benner
;; Copyright (c) 2014-2015 Sylvain Benner & Contributors
;;
;; Author: Sylvain Benner <sylvain.benner@gmail.com>
;; URL: https://github.com/syl20bnr/spacemacs
;;
;; This file is not part of GNU Emacs.
;;
;;; License: GPLv3
(setq markdown-packages
'(
markdown-mode
markdown-toc
mmm-mode
))
(defun markdown/init-markdown-mode ()
(use-package markdown-mode
:mode ("\\.m[k]d" . markdown-mode)
:defer t
:init (add-hook 'markdown-mode-hook 'smartparens-mode)
:config
(progn
;; Insert key for org-mode and markdown a la C-h k
;; from SE endless http://emacs.stackexchange.com/questions/2206/i-want-to-have-the-kbd-tags-for-my-blog-written-in-org-mode/2208#2208
(defun spacemacs/insert-keybinding-markdown (key)
"Ask for a key then insert its description.
Will work on both org-mode and any mode that accepts plain html."
(interactive "kType key sequence: ")
(let* ((tag "~%s~"))
(if (null (equal key "\r"))
(insert
(format tag (help-key-description key nil)))
(insert (format tag ""))
(forward-char -6))))
(evil-leader/set-key-for-mode 'markdown-mode
;; Movement
"m{" 'markdown-backward-paragraph
"m}" 'markdown-forward-paragraph
;; Completion, and Cycling
"m]" 'markdown-complete
;; Indentation
"m>" 'markdown-indent-region
"m<" 'markdown-exdent-region
;; Buffer-wide commands
"mc]" 'markdown-complete-buffer
"mcm" 'markdown-other-window
"mcp" 'markdown-preview
"mce" 'markdown-export
"mcv" 'markdown-export-and-preview
"mco" 'markdown-open
"mcw" 'markdown-kill-ring-save
"mcc" 'markdown-check-refs
"mcn" 'markdown-cleanup-list-numbers
"mcr" 'gh-md-render-buffer
;; headings
"mhi" 'markdown-insert-header-dwim
"mhI" 'markdown-insert-header-setext-dwim
"mh1" 'markdown-insert-header-atx-1
"mh2" 'markdown-insert-header-atx-2
"mh3" 'markdown-insert-header-atx-3
"mh4" 'markdown-insert-header-atx-4
"mh5" 'markdown-insert-header-atx-5
"mh6" 'markdown-insert-header-atx-6
"mh!" 'markdown-insert-header-setext-1
"mh@" 'markdown-insert-header-setext-2
;; Insertion of common elements
"m-" 'markdown-insert-hr
"mif" 'markdown-insert-footnote
"mii" 'markdown-insert-image
"mik" 'spacemacs/insert-keybinding-markdown
"miI" 'markdown-insert-reference-image
"mil" 'markdown-insert-link
"miL" 'markdown-insert-reference-link-dwim
"miw" 'markdown-insert-wiki-link
"miu" 'markdown-insert-uri
;; Element removal
"mk" 'markdown-kill-thing-at-point
;; List editing
"mli" 'markdown-insert-list-item
;; region manipulation
"mxb" 'markdown-insert-bold
"mxi" 'markdown-insert-italic
"mxc" 'markdown-insert-code
"mxq" 'markdown-insert-blockquote
"mxQ" 'markdown-blockquote-region
"mxp" 'markdown-insert-pre
"mxP" 'markdown-pre-region
;; Following and Jumping
"mN" 'markdown-next-link
"mo" 'markdown-follow-thing-at-point
"mP" 'markdown-previous-link
"m <RET>" 'markdown-jump)
;; Header navigation in normal state movements
(evil-define-key 'normal markdown-mode-map
"gj" 'outline-forward-same-level
"gk" 'outline-backward-same-level
"gh" 'outline-up-heading
;; next visible heading is not exactly what we want but close enough
"gl" 'outline-next-visible-heading)
;; Promotion, Demotion
(define-key markdown-mode-map (kbd "M-h") 'markdown-promote)
(define-key markdown-mode-map (kbd "M-j") 'markdown-move-down)
(define-key markdown-mode-map (kbd "M-k") 'markdown-move-up)
(define-key markdown-mode-map (kbd "M-l") 'markdown-demote))))
(defun markdown/init-markdown-toc ()
(use-package markdown-toc
:defer t))
(defun markdown/init-mmm-mode ()
(use-package mmm-mode
:commands mmm-parse-buffer
:init
(evil-leader/set-key-for-mode 'markdown-mode
;; Highlight code blocks
"mcs" 'mmm-parse-buffer)
:config
(progn
(mmm-add-classes '((markdown-python
:submode python-mode
:face mmm-declaration-submode-face
:front "^```python[\n\r]+"
:back "^```$")))
(mmm-add-classes '((markdown-html
:submode web-mode
:face mmm-declaration-submode-face
:front "^```html[\n\r]+"
:back "^```$")))
(mmm-add-classes '((markdown-java
:submode java-mode
:face mmm-declaration-submode-face
:front "^```java[\n\r]+"
:back "^```$")))
(mmm-add-classes '((markdown-ruby
:submode ruby-mode
:face mmm-declaration-submode-face
:front "^```ruby[\n\r]+"
:back "^```$")))
(mmm-add-classes '((markdown-c
:submode c-mode
:face mmm-declaration-submode-face
:front "^```c[\n\r]+"
:back "^```$")))
(mmm-add-classes '((markdown-c++
:submode c++-mode
:face mmm-declaration-submode-face
:front "^```c\+\+[\n\r]+"
:back "^```$")))
(mmm-add-classes '((markdown-elisp
:submode emacs-lisp-mode
:face mmm-declaration-submode-face
:front "^```elisp[\n\r]+"
:back "^```$")))
(setq mmm-global-mode t)
(mmm-add-mode-ext-class 'markdown-mode nil 'markdown-python)
(mmm-add-mode-ext-class 'markdown-mode nil 'markdown-java)
(mmm-add-mode-ext-class 'markdown-mode nil 'markdown-ruby)
(mmm-add-mode-ext-class 'markdown-mode nil 'markdown-c)
(mmm-add-mode-ext-class 'markdown-mode nil 'markdown-c++)
(mmm-add-mode-ext-class 'markdown-mode nil 'markdown-elisp)
(mmm-add-mode-ext-class 'markdown-mode nil 'markdown-html))))