notes/util/editors/emacs/.emacs.d/rc/emacs-rc-syntax.el
Ihar Hancharenka 9685f30a41 m
2025-04-03 11:30:33 +03:00

104 строки
2.2 KiB
EmacsLisp

;;(setq font-lock-maximum-decoration
;; '((c-mode . 1) (c++-mode . 2)))
(make-face 'font-lock-operator-face)
(make-face 'font-lock-end-statement)
(make-face 'font-lock-digit)
(setq font-lock-operator-face 'font-lock-operator-face)
(setq font-lock-end-statement 'font-lock-end-statement)
(setq font-lock-digit 'font-lock-digit)
;; Enhanced syntax highlighting
;; Currently support for []|&!.+=-/%*,()<>{}
;; if the second argument of (cons ...) is not a list - a dotted pair is created : (cons 1 2) -> (1 . 2)
;; (type-of "testing") -> string
;; (regexp-opt '( "v1" "v2")) -> \(?:v1\|v2\)
;; \(?: ... \) - is the shy group construct.
(font-lock-add-keywords
'c++-mode
;; '(
;; ("\\(\\[\\|\\]\\|[|!\\.\\+\\=\\&]\\|-\\|\\/\\|\\%\\|\\*\\|,\\|(\\|)\\|>\\ |<\\|{\\|}\\)" 1 font-lock-operator-face)
;; ("\\(;\\)" 1 font-lock-end-statement)
;; )
(list
;; todo: float numbers should be green - \\(\\.?\\)
;;(cons "\\b[[:digit:]]+\\(\\.[[:digit:]]+\\)?" 'font-lock-digit)
(cons
;; "\\b[[:digit:]]+"
(rx
(or
(and
word-boundary ;; \\b
(+ digit) ;; one-or-more
(\? ;; zero-or-one
"."
)
(+ digit)
(\? ;; zero-or-one
(in "eE")
(\? (in "+-"))
(+ digit)
)
)
(and
word-boundary ;; \\b
(+ digit) ;; one-or-more
)
)
)
'font-lock-digit
)
;; (rx (one-or-more digit))
;; bow - instead of word-boundary
(cons
(regexp-opt '(
":" "," "." "+" "-" "=" "&" "|" "!" "%"
"[" "]" "(" ")" "<" ">"
)
) 'font-lock-operator-face)
;; ; { } should be ellow
(cons (regexp-opt '(";" "{" "}")) 'font-lock-end-statement)
)
'to-end
)
(font-lock-add-keywords
'emacs-lisp-mode
;; '(
;; ("\\(\\[\\|\\]\\|[|!\\.\\+\\=\\&]\\|-\\|\\/\\|\\%\\|\\*\\|,\\|(\\|)\\|>\\ |<\\|{\\|}\\)" 1 font-lock-operator-face)
;; ("\\(;\\)" 1 font-lock-end-statement)
;; )
(list
(cons
(regexp-opt '(
"(" ")"
)
) 'font-lock-operator-face)
)
'to-end
)
;;(setq c-operators-regexp
;; (regexp-opt
;; '(
;; "+" "-" "*" "/" "%" "!"
;; "&" "^" "~" "|"
;; "=" "<" ">"
;; "." "," ";" ":"
;; )
;; )
;;)
;;(setq c-brackets-regexp
;; (regexp-opt
;; '( "(" ")" "[" "]" "{" "}" )
;; )
;;)