73 lines
2.4 KiB
EmacsLisp
73 lines
2.4 KiB
EmacsLisp
;;; defuns-typescript.el
|
|
|
|
(defvar ts-externs-vars-re
|
|
(concat "\\_<"
|
|
(regexp-opt
|
|
'("__dirname" "__filename"))
|
|
"\\_>"))
|
|
|
|
(defvar ts-externs-fns-re
|
|
(concat "\\_<"
|
|
(regexp-opt
|
|
'("Buffer" "clearInterval" "clearTimeout" "require" "setInterval"
|
|
"setTimeout" "querystring" "setImmediate" "clearImmediate"))
|
|
"\\_>"))
|
|
|
|
(defvar ts-ecma-externs-re
|
|
(concat "\\_<"
|
|
(regexp-opt '("decoreURI" "decoreURIComponent" "encodeURI"
|
|
"encodeURIComponent" "escape" "eval" "isFinite"
|
|
"isNaN" "parseFloat" "parseInt" "escape" "unescape"))
|
|
"\\_>"))
|
|
|
|
(defface ts-object-property '((t (:inherit font-lock-function-name-face)))
|
|
"")
|
|
|
|
;;;###autoload
|
|
(defun doom|ts-fontify ()
|
|
(font-lock-add-keywords
|
|
nil `((,ts-externs-vars-re
|
|
. 'font-lock-builtin-face)
|
|
(,ts-externs-fns-re
|
|
. 'font-lock-keyword-face)
|
|
(,ts-ecma-externs-re
|
|
. 'font-lock-builtin-face)
|
|
;; Lambda character
|
|
(" \\(=>\\) "
|
|
. 'font-lock-preprocessor-face)
|
|
;; $-prefixed variables
|
|
("\\_<\\$[[:alnum:]_]+\\_>"
|
|
. 'font-lock-keyword-face)
|
|
;; object keys
|
|
("\\(?:^\\|,\\|{\\)\\s-*\\([[:alpha:]_$][[:alnum:]_$]*\\)\\s-*:"
|
|
1 'ts-object-property)
|
|
;; variable.prefixes
|
|
("\\_<\\([a-z_$][[:alnum:]_$]*\\)\\."
|
|
1 'font-lock-variable-name-face)
|
|
;; functioncalls()
|
|
("\\_<\\([a-z_$][[:alnum:]_$]*\\)("
|
|
1 'font-lock-function-name-face)
|
|
;; PascalCase ClassNames
|
|
("\\_<[A-Z][a-z0-9_]+\\_>"
|
|
. 'font-lock-type-face)
|
|
;; CONSTANTS
|
|
("\\_<[A-Z0-9_]+\\_>"
|
|
. 'font-lock-builtin-face)
|
|
;; Import froms
|
|
("^\\s-*import\\s-+\\(?:{[^}]*}\\|[^ ]+\\|[^ ]+\\s-+as\\s-+[^ ]+\\)\\s-+\\(from\\)\\s-"
|
|
(1 'font-lock-keyword-face))
|
|
("^\\s-*import\\s-+\\(?:[^ ]+\\s-+\\(as\\)\\s-+[^ ]+\\)\\s-+from\\s-"
|
|
(1 'font-lock-keyword-face))
|
|
|
|
;; ES6 Lambda parameters (...) => {}
|
|
(,(concat
|
|
"\\s-(\\s-*"
|
|
typescript--name-start-re)
|
|
,(list (concat "\\(" typescript--name-re "\\)\\(\\s-*).*\\)?\\s-*")
|
|
'(backward-char)
|
|
'(end-of-line)
|
|
'(1 font-lock-variable-name-face)))
|
|
)))
|
|
|
|
(provide 'defuns-typescript)
|
|
;;; defuns-typescript.el ends here
|