mirror of
https://github.com/haml/haml.git
synced 2022-11-09 12:33:31 -05:00
Clean up haml- and sass-mode.el.
This commit is contained in:
parent
5f09785d91
commit
4d97343401
2 changed files with 68 additions and 106 deletions
|
@ -24,17 +24,17 @@
|
|||
:prefix "haml-")
|
||||
|
||||
(defcustom haml-mode-hook nil
|
||||
"*Hook run by `haml-mode'."
|
||||
"Hook run when entering Haml mode."
|
||||
:type 'hook
|
||||
:group 'haml)
|
||||
|
||||
(defcustom haml-indent-offset 2
|
||||
"*Amount of offset per level of indentation."
|
||||
"Amount of offset per level of indentation."
|
||||
:type 'integer
|
||||
:group 'haml)
|
||||
|
||||
(defcustom haml-backspace-function 'backward-delete-char-untabify
|
||||
"*Function called by `haml-electric-backspace' when deleting backwards."
|
||||
"Function called by `haml-electric-backspace' when deleting backwards."
|
||||
:type 'function
|
||||
:group 'haml)
|
||||
|
||||
|
@ -66,45 +66,31 @@ returns a non-nil value, or nil if no such element is found."
|
|||
|
||||
;; Font lock
|
||||
|
||||
(defconst haml-font-lock-keywords-1
|
||||
(list
|
||||
;; instruct
|
||||
'("^!!!.*" 0 font-lock-constant-face)
|
||||
;; strings
|
||||
'("\\('[^']*'\\)" 1 font-lock-string-face append)
|
||||
'("\\(\"[^\"]*\"\\)" 1 font-lock-string-face append)
|
||||
;; symbol
|
||||
'("&?:\\w+" 0 font-lock-constant-face append)
|
||||
;; ruby varible
|
||||
'("@[a-z0-9_]+" 0 font-lock-variable-name-face append)
|
||||
;; pipe
|
||||
'("| *$" 0 font-lock-string-face)
|
||||
;; comment
|
||||
'("^[ \t]*\\(/.*\\)$" 1 font-lock-comment-face append)
|
||||
;; id
|
||||
'("^ *\\(#[a-z0-9_]+\/?\\)" 1 font-lock-keyword-face)
|
||||
;; class
|
||||
'("^ *\\(\\.[a-z0-9_]+\/?\\)" 1 font-lock-type-face)
|
||||
;; tag
|
||||
'("^ *\\(%[a-z0-9_]+\/?\\)" 1 font-lock-function-name-face )
|
||||
;; class after id
|
||||
'("^ *\\(#[a-z0-9_]+\/?\\)" (1 font-lock-keyword-face) ("\\.[a-z0-9_]+" nil nil (0 font-lock-type-face)))
|
||||
;; class after class
|
||||
'("^ *\\(\\.[a-z0-9_]+\/?\\)" (1 font-lock-type-face) ("\\.[a-z0-9_]+" nil nil (0 font-lock-type-face)))
|
||||
;; id after class
|
||||
'("^ *\\(\\.[a-z0-9_]+\/?\\)" (1 font-lock-type-face) ("\\#[a-z0-9_]+" nil nil (0 font-lock-keyword-face)))
|
||||
;; class after tag
|
||||
'("^ *\\(%[a-z0-9_]+\/?\\)" (1 font-lock-function-name-face) ("\\.[a-z0-9_]+" nil nil (0 font-lock-type-face)))
|
||||
;; id after tag
|
||||
'("^ *\\(%[a-z0-9_]+\/?\\)" (1 font-lock-function-name-face) ("\\#[a-z0-9_]+" nil nil (0 font-lock-keyword-face)))
|
||||
;; embeded ruby: beggin of line
|
||||
'("^ *\\([~=-] .*\\)" 1 font-lock-preprocessor-face prepend)
|
||||
;; embeded ruby: after tag,class,id
|
||||
'("^ *[\\.#%a-z0-9_]+\\([~=-] .*\\)" 1 font-lock-preprocessor-face prepend)
|
||||
;; embeded ruby: attributes
|
||||
'("^ *[\\.#%a-z0-9_]+\\({[^}]+}\\)" 1 font-lock-preprocessor-face prepend)
|
||||
;; embeded ruby: square
|
||||
'("^ *[\\.#%a-z0-9_]+\\(\\[[^]]+\\]\\)" 1 font-lock-preprocessor-face prepend)))
|
||||
(defconst haml-font-lock-keywords
|
||||
'(("^!!!.*" 0 font-lock-constant-face)
|
||||
("\\('[^']*'\\)" 1 font-lock-string-face append)
|
||||
("\\(\"[^\"]*\"\\)" 1 font-lock-string-face append)
|
||||
("&?:\\w+" 0 font-lock-constant-face append)
|
||||
("@[a-z0-9_]+" 0 font-lock-variable-name-face append)
|
||||
("| *$" 0 font-lock-string-face)
|
||||
("^[ \t]*\\(/.*\\)$" 1 font-lock-comment-face append)
|
||||
("^ *\\(#[a-z0-9_]+\/?\\)" 1 font-lock-keyword-face)
|
||||
("^ *\\(\\.[a-z0-9_]+\/?\\)" 1 font-lock-type-face)
|
||||
("^ *\\(%[a-z0-9_]+\/?\\)" 1 font-lock-function-name-face)
|
||||
("^ *\\(#[a-z0-9_]+\/?\\)" (1 font-lock-keyword-face)
|
||||
("\\.[a-z0-9_]+" nil nil (0 font-lock-type-face)))
|
||||
("^ *\\(\\.[a-z0-9_]+\/?\\)" (1 font-lock-type-face)
|
||||
("\\.[a-z0-9_]+" nil nil (0 font-lock-type-face)))
|
||||
("^ *\\(\\.[a-z0-9_]+\/?\\)" (1 font-lock-type-face)
|
||||
("\\#[a-z0-9_]+" nil nil (0 font-lock-keyword-face)))
|
||||
("^ *\\(%[a-z0-9_]+\/?\\)" (1 font-lock-function-name-face)
|
||||
("\\.[a-z0-9_]+" nil nil (0 font-lock-type-face)))
|
||||
("^ *\\(%[a-z0-9_]+\/?\\)" (1 font-lock-function-name-face)
|
||||
("\\#[a-z0-9_]+" nil nil (0 font-lock-keyword-face)))
|
||||
("^ *\\([~=-] .*\\)" 1 font-lock-preprocessor-face prepend)
|
||||
("^ *[\\.#%a-z0-9_]+\\([~=-] .*\\)" 1 font-lock-preprocessor-face prepend)
|
||||
("^ *[\\.#%a-z0-9_]+\\({[^}]+}\\)" 1 font-lock-preprocessor-face prepend)
|
||||
("^ *[\\.#%a-z0-9_]+\\(\\[[^]]+\\]\\)" 1 font-lock-preprocessor-face prepend)))
|
||||
|
||||
;; Constants
|
||||
|
||||
|
@ -113,8 +99,9 @@ returns a non-nil value, or nil if no such element is found."
|
|||
(defconst haml-blank-line-re "^[ \t]*$"
|
||||
"Regexp matching a line containing only whitespace.")
|
||||
|
||||
; Base for Regexen matching a Haml tag.
|
||||
(setq haml-tag-re-base (hre "\\([%\\.#][^ \t]*\\)\\({.*}\\)?\\(\\[.*\\]\\)?"))
|
||||
(defconst haml-tag-re-base
|
||||
(hre "\\([%\\.#][^ \t]*\\)\\({.*}\\)?\\(\\[.*\\]\\)?")
|
||||
"Base for regexps matching Haml tags.")
|
||||
|
||||
(defconst haml-tag-nest-re (concat haml-tag-re-base "[ \t]*$")
|
||||
"Regexp matching a Haml tag that can have nested elements.")
|
||||
|
@ -149,26 +136,21 @@ returns a non-nil value, or nil if no such element is found."
|
|||
table)
|
||||
"Syntax table in use in haml-mode buffers.")
|
||||
|
||||
(defvar haml-mode-map ()
|
||||
"Keymap used in `haml-mode' buffers.")
|
||||
(if haml-mode-map
|
||||
nil
|
||||
(setq haml-mode-map (make-sparse-keymap))
|
||||
(define-key haml-mode-map [backspace] 'haml-electric-backspace)
|
||||
(define-key haml-mode-map "\C-?" 'haml-electric-backspace)
|
||||
(define-key haml-mode-map "\C-j" 'newline-and-indent))
|
||||
(defvar haml-mode-map
|
||||
(let ((map (make-sparse-keymap)))
|
||||
(define-key map [backspace] 'haml-electric-backspace)
|
||||
(define-key map "\C-?" 'haml-electric-backspace)
|
||||
map))
|
||||
|
||||
(define-derived-mode haml-mode fundamental-mode "Haml"
|
||||
"Simple mode to edit Haml.
|
||||
"Major mode for editing Haml files.
|
||||
|
||||
\\{haml-mode-map}"
|
||||
(set-syntax-table haml-mode-syntax-table)
|
||||
(set (make-local-variable 'indent-line-function) 'haml-indent-line)
|
||||
(set (make-local-variable 'indent-region-function) 'haml-indent-region)
|
||||
(set (make-local-variable 'font-lock-defaults)
|
||||
'((haml-font-lock-keywords-1)
|
||||
nil
|
||||
t)))
|
||||
(setq font-lock-defaults
|
||||
'((haml-font-lock-keywords) nil t)))
|
||||
|
||||
;; Indentation and electric keys
|
||||
|
||||
|
|
|
@ -22,17 +22,17 @@
|
|||
:prefix "sass-")
|
||||
|
||||
(defcustom sass-mode-hook nil
|
||||
"*Hook run by `sass-mode'."
|
||||
"Hook run when entering Sass mode."
|
||||
:type 'hook
|
||||
:group 'sass)
|
||||
|
||||
(defcustom sass-indent-offset 2
|
||||
"*Amount of offset per level of indentation."
|
||||
"Amount of offset per level of indentation."
|
||||
:type 'integer
|
||||
:group 'sass)
|
||||
|
||||
(defcustom sass-backspace-function 'backward-delete-char-untabify
|
||||
"*Function called by `sass-electric-backspace' when deleting backwards."
|
||||
"Function called by `sass-electric-backspace' when deleting backwards."
|
||||
:type 'function
|
||||
:group 'sass)
|
||||
|
||||
|
@ -63,43 +63,28 @@
|
|||
|
||||
;; Font lock
|
||||
|
||||
(defconst sass-font-lock-keywords-1
|
||||
(list
|
||||
;; directives
|
||||
'("^@.*" 0 font-lock-constant-face)
|
||||
;; strings and hex constants
|
||||
'("\\(\'[^']*'\\)" 1 font-lock-string-face append)
|
||||
'("\\(\"[^\"]*\"\\)" 1 font-lock-string-face append)
|
||||
'("\\(#[0-9a-fA-F]\\{3\\}\\{1,2\\}\\>\\)" 1 font-lock-string-face append)
|
||||
;; attributes
|
||||
'("\\(:[A-Za-z-]+\\|[A-Za-z-]+:\\)" 0 font-lock-constant-face append)
|
||||
;; constants
|
||||
'("![a-z0-9_-]+" 0 font-lock-variable-name-face append)
|
||||
;; comments
|
||||
'("^ *\\(/[/*].*\\)$" 1 font-lock-comment-face append)
|
||||
;; ids
|
||||
'("\\(?:^\\|,\\) *\\(#[a-z0-9_-]+\/?\\)" 1 font-lock-keyword-face)
|
||||
;; classes
|
||||
'("\\(?:^\\|,\\) *\\(\\.[a-z0-9_-]+\/?\\)" 1 font-lock-type-face)
|
||||
;; tags
|
||||
'("\\(?:^\\|,\\) *\\(&\\|[a-z0-9_]+\/?\\)" 1 font-lock-function-name-face )
|
||||
;; class after id
|
||||
'("\\(?:^\\|,\\) *\\(#[a-z0-9_]+\/?\\)" (1 font-lock-keyword-face)
|
||||
(defconst sass-font-lock-keywords
|
||||
'(("^@.*" 0 font-lock-constant-face)
|
||||
("\\(\'[^']*'\\)" 1 font-lock-string-face append)
|
||||
("\\(\"[^\"]*\"\\)" 1 font-lock-string-face append)
|
||||
("\\(#[0-9a-fA-F]\\{3\\}\\{1,2\\}\\>\\)" 1 font-lock-string-face append)
|
||||
("\\(:[A-Za-z-]+\\|[A-Za-z-]+:\\)" 0 font-lock-constant-face append)
|
||||
("![a-z0-9_-]+" 0 font-lock-variable-name-face append)
|
||||
("^ *\\(/[/*].*\\)$" 1 font-lock-comment-face append)
|
||||
("\\(?:^\\|,\\) *\\(#[a-z0-9_-]+\/?\\)" 1 font-lock-keyword-face)
|
||||
("\\(?:^\\|,\\) *\\(\\.[a-z0-9_-]+\/?\\)" 1 font-lock-type-face)
|
||||
("\\(?:^\\|,\\) *\\(&\\|[a-z0-9_]+\/?\\)" 1 font-lock-function-name-face)
|
||||
("\\([=]\\)" 0 font-lock-preprocessor-face prepend)
|
||||
("\\(?:^\\|,\\) *\\(#[a-z0-9_]+\/?\\)" (1 font-lock-keyword-face)
|
||||
("\\.[a-z0-9_-]+" nil nil (0 font-lock-type-face)))
|
||||
;; class after class
|
||||
'("\\(?:^\\|,\\) *\\(\\.[a-z0-9_]+\/?\\)" (1 font-lock-type-face)
|
||||
("\\(?:^\\|,\\) *\\(\\.[a-z0-9_]+\/?\\)" (1 font-lock-type-face)
|
||||
("\\.[a-z0-9_-]+" nil nil (0 font-lock-type-face)))
|
||||
;; id after class
|
||||
'("\\(?:^\\|,\\) *\\(\\.[a-z0-9_]+\/?\\)" (1 font-lock-type-face)
|
||||
("\\(?:^\\|,\\) *\\(\\.[a-z0-9_]+\/?\\)" (1 font-lock-type-face)
|
||||
("\\#[a-z0-9_-]+" nil nil (0 font-lock-keyword-face)))
|
||||
;; class after tag
|
||||
'("\\(?:^\\|,\\) *\\(&\\|[a-z0-9_]+\/?\\)" (1 font-lock-function-name-face)
|
||||
("\\(?:^\\|,\\) *\\(&\\|[a-z0-9_]+\/?\\)" (1 font-lock-function-name-face)
|
||||
("\\.[a-z0-9_-]+" nil nil (0 font-lock-type-face)))
|
||||
;; id after tag
|
||||
'("\\(?:^\\|,\\) *\\(&\\|[a-z0-9_]+\/?\\)" (1 font-lock-function-name-face)
|
||||
("\\#[a-z0-9_-]+" nil nil (0 font-lock-keyword-face)))
|
||||
;; expressions
|
||||
'("\\([=]\\)" 0 font-lock-preprocessor-face prepend)))
|
||||
("\\(?:^\\|,\\) *\\(&\\|[a-z0-9_]+\/?\\)" (1 font-lock-function-name-face)
|
||||
("\\#[a-z0-9_-]+" nil nil (0 font-lock-keyword-face)))))
|
||||
|
||||
;; Constants
|
||||
|
||||
|
@ -113,24 +98,19 @@
|
|||
|
||||
;; Mode setup
|
||||
|
||||
(defvar sass-mode-map ()
|
||||
"Keymap used in `sass-mode' buffers.")
|
||||
(if sass-mode-map
|
||||
nil
|
||||
(setq sass-mode-map (make-sparse-keymap))
|
||||
(define-key sass-mode-map [backspace] 'sass-electric-backspace)
|
||||
(define-key sass-mode-map "\C-?" 'sass-electric-backspace)
|
||||
(define-key sass-mode-map "\C-j" 'newline-and-indent))
|
||||
(defvar sass-mode-map
|
||||
(let ((map (make-sparse-keymap)))
|
||||
(define-key sass-mode-map [backspace] 'sass-electric-backspace)
|
||||
(define-key sass-mode-map "\C-?" 'sass-electric-backspace)
|
||||
map))
|
||||
|
||||
(define-derived-mode sass-mode fundamental-mode "Sass"
|
||||
"Simple mode to edit Sass.
|
||||
"Major mode for editing Sass files.
|
||||
|
||||
\\{sass-mode-map}"
|
||||
(set (make-local-variable 'indent-line-function) 'sass-indent-line)
|
||||
(set (make-local-variable 'font-lock-defaults)
|
||||
'((sass-font-lock-keywords-1)
|
||||
nil
|
||||
t)))
|
||||
(setq font-lock-defaults
|
||||
'(sass-font-lock-keywords nil t)))
|
||||
|
||||
;; Indentation and electric keys
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue