mirror of
git://git.sv.gnu.org/emacs.git
synced 2025-12-06 06:20:55 -08:00
ruby-ts-mode: Highlight builtin methods
* lisp/progmodes/ruby-mode.el (ruby-builtin-methods-with-reqs) (ruby-builtin-methods-no-reqs): New constants, extracted. (ruby-font-lock-keywords): Replace values with references. * lisp/progmodes/ruby-ts-mode.el (ruby-ts--builtin-methods): New variable. Construct regexp from aforementioned constants' values. * lisp/progmodes/ruby-ts-mode.el (ruby-ts--font-lock-settings): Use it. * lisp/progmodes/ruby-ts-mode.el (ruby-ts-mode): Add new font-lock feature: builtin-functions. * lisp/progmodes/ruby-ts-mode.el (ruby-ts--predefined-constants) (ruby-ts--predefined-variables): Unrelated to the rest of the patch, add string-start and string-end anchors.
This commit is contained in:
parent
370b1ac99e
commit
d66ac5285f
2 changed files with 98 additions and 79 deletions
|
|
@ -141,6 +141,81 @@ This should only be called after matching against `ruby-here-doc-beg-re'."
|
|||
|
||||
It should match the part after \"def\" and until \"=\".")
|
||||
|
||||
(defconst ruby-builtin-methods-with-reqs
|
||||
'( ;; built-in methods on Kernel
|
||||
"at_exit"
|
||||
"autoload"
|
||||
"autoload?"
|
||||
"callcc"
|
||||
"catch"
|
||||
"eval"
|
||||
"exec"
|
||||
"format"
|
||||
"lambda"
|
||||
"load"
|
||||
"loop"
|
||||
"open"
|
||||
"p"
|
||||
"printf"
|
||||
"proc"
|
||||
"putc"
|
||||
"require"
|
||||
"require_relative"
|
||||
"spawn"
|
||||
"sprintf"
|
||||
"syscall"
|
||||
"system"
|
||||
"throw"
|
||||
"trace_var"
|
||||
"trap"
|
||||
"untrace_var"
|
||||
"warn"
|
||||
;; keyword-like private methods on Module
|
||||
"alias_method"
|
||||
"attr"
|
||||
"attr_accessor"
|
||||
"attr_reader"
|
||||
"attr_writer"
|
||||
"define_method"
|
||||
"extend"
|
||||
"include"
|
||||
"module_function"
|
||||
"prepend"
|
||||
"private_class_method"
|
||||
"private_constant"
|
||||
"public_class_method"
|
||||
"public_constant"
|
||||
"refine"
|
||||
"using")
|
||||
"List of built-in methods that require at least one argument.")
|
||||
|
||||
(defconst ruby-builtin-methods-no-reqs
|
||||
'("__callee__"
|
||||
"__dir__"
|
||||
"__method__"
|
||||
"abort"
|
||||
"binding"
|
||||
"block_given?"
|
||||
"caller"
|
||||
"exit"
|
||||
"exit!"
|
||||
"fail"
|
||||
"fork"
|
||||
"global_variables"
|
||||
"local_variables"
|
||||
"print"
|
||||
"private"
|
||||
"protected"
|
||||
"public"
|
||||
"puts"
|
||||
"raise"
|
||||
"rand"
|
||||
"readline"
|
||||
"readlines"
|
||||
"sleep"
|
||||
"srand")
|
||||
"List of built-in methods that only have optional arguments.")
|
||||
|
||||
(defvar ruby-use-smie t)
|
||||
(make-obsolete-variable 'ruby-use-smie nil "28.1")
|
||||
|
||||
|
|
@ -2292,84 +2367,13 @@ It will be properly highlighted even when the call omits parens.")
|
|||
;; Core methods that have required arguments.
|
||||
(,(concat
|
||||
ruby-font-lock-keyword-beg-re
|
||||
(regexp-opt
|
||||
'( ;; built-in methods on Kernel
|
||||
"at_exit"
|
||||
"autoload"
|
||||
"autoload?"
|
||||
"callcc"
|
||||
"catch"
|
||||
"eval"
|
||||
"exec"
|
||||
"format"
|
||||
"lambda"
|
||||
"load"
|
||||
"loop"
|
||||
"open"
|
||||
"p"
|
||||
"printf"
|
||||
"proc"
|
||||
"putc"
|
||||
"require"
|
||||
"require_relative"
|
||||
"spawn"
|
||||
"sprintf"
|
||||
"syscall"
|
||||
"system"
|
||||
"throw"
|
||||
"trace_var"
|
||||
"trap"
|
||||
"untrace_var"
|
||||
"warn"
|
||||
;; keyword-like private methods on Module
|
||||
"alias_method"
|
||||
"attr"
|
||||
"attr_accessor"
|
||||
"attr_reader"
|
||||
"attr_writer"
|
||||
"define_method"
|
||||
"extend"
|
||||
"include"
|
||||
"module_function"
|
||||
"prepend"
|
||||
"private_class_method"
|
||||
"private_constant"
|
||||
"public_class_method"
|
||||
"public_constant"
|
||||
"refine"
|
||||
"using")
|
||||
'symbols))
|
||||
(regexp-opt ruby-builtin-methods-with-reqs 'symbols))
|
||||
(1 (unless (looking-at " *\\(?:[]|,.)}=]\\|$\\)")
|
||||
font-lock-builtin-face)))
|
||||
;; Kernel methods that have no required arguments.
|
||||
(,(concat
|
||||
ruby-font-lock-keyword-beg-re
|
||||
(regexp-opt
|
||||
'("__callee__"
|
||||
"__dir__"
|
||||
"__method__"
|
||||
"abort"
|
||||
"binding"
|
||||
"block_given?"
|
||||
"caller"
|
||||
"exit"
|
||||
"exit!"
|
||||
"fail"
|
||||
"fork"
|
||||
"global_variables"
|
||||
"local_variables"
|
||||
"print"
|
||||
"private"
|
||||
"protected"
|
||||
"public"
|
||||
"puts"
|
||||
"raise"
|
||||
"rand"
|
||||
"readline"
|
||||
"readlines"
|
||||
"sleep"
|
||||
"srand")
|
||||
'symbols))
|
||||
(regexp-opt ruby-builtin-methods-no-reqs 'symbols))
|
||||
(1 font-lock-builtin-face))
|
||||
;; Here-doc beginnings.
|
||||
(,ruby-here-doc-beg-re
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue