emacs/layers.personal/misctools/my-polymode/local/polymode/modes/poly-slim.el
2018-04-07 10:54:04 +08:00

108 lines
3.6 KiB
EmacsLisp

(require 'polymode)
;; We cannot have all these "requires" as part of polymode
;; https://github.com/vspinu/polymode/issues/69
;; (require 'css-mode)
;; (require 'scss-mode)
;; (require 'coffee-mode)
;; (require 'slim-mode)
;; (require 'ruby-mode)
;; (require 'markdown-mode)
(defcustom pm-host/slim
(pm-bchunkmode "slim" :mode 'slim-mode)
"slim host chunkmode"
:group 'hostmodes
:type 'object)
(pm-create-indented-block-matchers "slim-coffee" "^[^ ]*\\(.*:? *coffee: *\\)$")
(defcustom pm-inner/slim-coffee
(pm-hbtchunkmode "slim coffee include"
:mode 'coffee-mode
:head-mode 'slim-mode
:tail-mode 'slim-mode
:head-reg 'pm-slim-coffee-head-matcher
:tail-reg 'pm-slim-coffee-tail-matcher)
"slim-coffee typical chunk."
:group 'innermodes
:type 'object)
(pm-create-indented-block-matchers "slim-css" "^[^ ]*\\(.*:? *css: *\\)$")
(defcustom pm-inner/slim-css
(pm-hbtchunkmode "slim css include"
:mode 'css-mode
:head-mode 'slim-mode
:tail-mode 'slim-mode
:head-reg 'pm-slim-css-head-matcher
:tail-reg 'pm-slim-css-tail-matcher)
"slim-css typical chunk."
:group 'innermodes
:type 'object)
(pm-create-indented-block-matchers "slim-scss" "^[^ ]*\\(.*:? *scss: *\\)$")
(defcustom pm-inner/slim-scss
(pm-hbtchunkmode "slim scss include"
:mode 'scss-mode
:head-mode 'slim-mode
:tail-mode 'slim-mode
:head-reg 'pm-slim-scss-head-matcher
:tail-reg 'pm-slim-scss-tail-matcher)
"slim-scss typical chunk."
:group 'innermodes
:type 'object)
(pm-create-indented-block-matchers "slim-ruby" "^[^ ]*\\(.*:? *ruby: *\\)$")
(defcustom pm-inner/slim-ruby
(pm-hbtchunkmode "slim ruby include"
:mode 'ruby-mode
:head-mode 'slim-mode
:tail-mode 'slim-mode
:head-reg 'pm-slim-ruby-head-matcher
:tail-reg 'pm-slim-ruby-tail-matcher)
"slim-ruby typical chunk."
:group 'innermodes
:type 'object)
(pm-create-indented-block-matchers "slim-js" "^[^ ]*\\(.*:? *javascript: *\\)$")
(defcustom pm-inner/slim-js
(pm-hbtchunkmode "slim js include"
:mode 'js-mode
:head-mode 'slim-mode
:tail-mode 'slim-mode
:head-reg 'pm-slim-js-head-matcher
:tail-reg 'pm-slim-js-tail-matcher)
"slim-js typical chunk."
:group 'innermodes
:type 'object)
(pm-create-indented-block-matchers "slim-md" "^[^ ]*\\(.*:? *markdown: *\\)$")
(defcustom pm-inner/slim-md
(pm-hbtchunkmode "slim markdown include"
:mode 'markdown-mode
:head-mode 'slim-mode
:tail-mode 'slim-mode
:head-reg 'pm-slim-md-head-matcher
:tail-reg 'pm-slim-md-tail-matcher)
"slim-markdown typical chunk."
:group 'innermodes
:type 'object)
(defcustom pm-poly/slim
(pm-polymode-multi "slim"
:hostmode 'pm-host/slim
:innermodes '(pm-inner/slim-coffee
pm-inner/slim-css
pm-inner/slim-scss
pm-inner/slim-js
pm-inner/slim-md
pm-inner/slim-ruby))
"slim typical polymode."
:group 'polymodes
:type 'object)
;;;###autoload (autoload 'poly-slim-mode "poly-slim")
(define-polymode poly-slim-mode pm-poly/slim)
(provide 'poly-slim)