mirror of
git://git.sv.gnu.org/emacs.git
synced 2025-12-06 06:20:55 -08:00
Merge from origin/emacs-29
99efe5c80fFix count of no-op functions (bug#68375)0c01f97b73Wrap @pxref of Abbrevs in parentheses (bug#68375)70a09325d6; Fix last change in widget.texi63411709a8; Fix typos824cf54951; * etc/TODO: Add item to make play-sound non-blocking.4fadbfe300Add examples to the Widget manual1bbb610821Implement missing functions for custom-icon widget29af214a75Fix fontification of cgroup2 in fstab (bug#68367)
This commit is contained in:
commit
f1736571fa
7 changed files with 285 additions and 8 deletions
|
|
@ -982,8 +982,8 @@ lists) and call them using @code{funcall} or @code{apply}. Functions
|
||||||
that accept function arguments are often called @dfn{functionals}.
|
that accept function arguments are often called @dfn{functionals}.
|
||||||
|
|
||||||
Sometimes, when you call a functional, it is useful to supply a no-op
|
Sometimes, when you call a functional, it is useful to supply a no-op
|
||||||
function as the argument. Here are two different kinds of no-op
|
function as the argument. Here are three different kinds of no-op
|
||||||
function:
|
functions:
|
||||||
|
|
||||||
@defun identity argument
|
@defun identity argument
|
||||||
This function returns @var{argument} and has no side effects.
|
This function returns @var{argument} and has no side effects.
|
||||||
|
|
|
||||||
|
|
@ -675,7 +675,7 @@ name} (@pxref{Symbol Components}).
|
||||||
|
|
||||||
It is useful to think of shorthands as @emph{abbreviating} the full
|
It is useful to think of shorthands as @emph{abbreviating} the full
|
||||||
names of intended symbols. Despite this, do not confuse shorthands with the
|
names of intended symbols. Despite this, do not confuse shorthands with the
|
||||||
Abbrev system @pxref{Abbrevs}.
|
Abbrev system (@pxref{Abbrevs}).
|
||||||
|
|
||||||
@cindex namespace etiquette
|
@cindex namespace etiquette
|
||||||
Shorthands make Emacs Lisp's @dfn{namespacing etiquette} easier to work
|
Shorthands make Emacs Lisp's @dfn{namespacing etiquette} easier to work
|
||||||
|
|
|
||||||
|
|
@ -1384,6 +1384,15 @@ a specific way. If present, @var{value} is used to initialize the
|
||||||
@code{:value} property. When created, it inserts the value as a
|
@code{:value} property. When created, it inserts the value as a
|
||||||
string in the buffer.
|
string in the buffer.
|
||||||
|
|
||||||
|
@noindent
|
||||||
|
Example:
|
||||||
|
|
||||||
|
@lisp
|
||||||
|
(widget-create 'item :tag "Today is" :format "%t: %v\n"
|
||||||
|
(format-time-string "%d-%m-%Y"))
|
||||||
|
@end lisp
|
||||||
|
|
||||||
|
|
||||||
By default, it has the following properties:
|
By default, it has the following properties:
|
||||||
|
|
||||||
@table @code
|
@table @code
|
||||||
|
|
@ -1428,6 +1437,20 @@ The @var{value}, if present, is used to initialize the @code{:value}
|
||||||
property. The value should be a string, which will be inserted in the
|
property. The value should be a string, which will be inserted in the
|
||||||
buffer.
|
buffer.
|
||||||
|
|
||||||
|
@noindent
|
||||||
|
Example:
|
||||||
|
|
||||||
|
@lisp
|
||||||
|
(widget-create 'link
|
||||||
|
:button-prefix ""
|
||||||
|
:button-suffix ""
|
||||||
|
:tag "Mail yourself"
|
||||||
|
:action #'(lambda (widget &optional _event)
|
||||||
|
(compose-mail-other-window (widget-value widget)))
|
||||||
|
user-mail-address)
|
||||||
|
@end lisp
|
||||||
|
|
||||||
|
|
||||||
By default, it has the following properties:
|
By default, it has the following properties:
|
||||||
|
|
||||||
@table @code
|
@table @code
|
||||||
|
|
@ -1471,6 +1494,31 @@ A widget to represent a link to a web page. Its super is the
|
||||||
It overrides the @code{:action} property to open up the @var{url}
|
It overrides the @code{:action} property to open up the @var{url}
|
||||||
specified.
|
specified.
|
||||||
|
|
||||||
|
@noindent
|
||||||
|
Example:
|
||||||
|
|
||||||
|
@lisp
|
||||||
|
@group
|
||||||
|
(widget-create 'url-link
|
||||||
|
:button-prefix ""
|
||||||
|
:button-suffix ""
|
||||||
|
;; Return appropriate face.
|
||||||
|
:button-face-get (lambda (widget)
|
||||||
|
(if (widget-get widget :visited)
|
||||||
|
'link-visited
|
||||||
|
'link))
|
||||||
|
:format "%[%t%]"
|
||||||
|
:tag "Browse this manual"
|
||||||
|
:action (lambda (widget &optional _event)
|
||||||
|
(widget-put widget :visited t)
|
||||||
|
;; Takes care of redrawing the widget.
|
||||||
|
(widget-value-set widget (widget-value widget))
|
||||||
|
;; And then call the original function.
|
||||||
|
(widget-url-link-action widget))
|
||||||
|
"https://www.gnu.org/software/emacs/manual/html_mono/widget.html")
|
||||||
|
@end group
|
||||||
|
@end lisp
|
||||||
|
|
||||||
@node info-link
|
@node info-link
|
||||||
@subsection The @code{info-link} Widget
|
@subsection The @code{info-link} Widget
|
||||||
@findex info-link@r{ widget}
|
@findex info-link@r{ widget}
|
||||||
|
|
@ -1487,6 +1535,17 @@ A widget to represent a link to an info file. Its super is the
|
||||||
It overrides the @code{:action} property, to a function to start the
|
It overrides the @code{:action} property, to a function to start the
|
||||||
built-in Info reader on @var{address}, when invoked.
|
built-in Info reader on @var{address}, when invoked.
|
||||||
|
|
||||||
|
@noindent
|
||||||
|
Example:
|
||||||
|
|
||||||
|
@lisp
|
||||||
|
(widget-create 'info-link
|
||||||
|
:button-prefix ""
|
||||||
|
:button-suffix ""
|
||||||
|
:tag "Browse this manual"
|
||||||
|
"(widget) info-link")))
|
||||||
|
@end lisp
|
||||||
|
|
||||||
@node function-link
|
@node function-link
|
||||||
@subsection The @code{function-link} Widget
|
@subsection The @code{function-link} Widget
|
||||||
@findex function-link@r{ widget}
|
@findex function-link@r{ widget}
|
||||||
|
|
@ -1502,6 +1561,17 @@ A widget to represent a link to an Emacs function. Its super is the
|
||||||
It overrides the @code{:action} property, to a function to describe
|
It overrides the @code{:action} property, to a function to describe
|
||||||
@var{function}.
|
@var{function}.
|
||||||
|
|
||||||
|
@noindent
|
||||||
|
Example:
|
||||||
|
|
||||||
|
@lisp
|
||||||
|
(widget-create 'function-link
|
||||||
|
:button-prefix ""
|
||||||
|
:button-suffix ""
|
||||||
|
:tag "Describe the function that gets called"
|
||||||
|
#'widget-function-link-action)
|
||||||
|
@end lisp
|
||||||
|
|
||||||
@node variable-link
|
@node variable-link
|
||||||
@subsection The @code{variable-link} Widget
|
@subsection The @code{variable-link} Widget
|
||||||
@findex variable-link@r{ widget}
|
@findex variable-link@r{ widget}
|
||||||
|
|
@ -1517,6 +1587,17 @@ A widget to represent a link to an Emacs variable. Its super is the
|
||||||
It overrides the @code{:action} property, to a function to describe
|
It overrides the @code{:action} property, to a function to describe
|
||||||
@var{var}.
|
@var{var}.
|
||||||
|
|
||||||
|
@noindent
|
||||||
|
Example:
|
||||||
|
|
||||||
|
@lisp
|
||||||
|
(widget-create 'variable-link
|
||||||
|
:button-prefix ""
|
||||||
|
:button-suffix ""
|
||||||
|
:tag "What setting controls button-prefix?"
|
||||||
|
'widget-button-prefix)
|
||||||
|
@end lisp
|
||||||
|
|
||||||
@node face-link
|
@node face-link
|
||||||
@subsection The @code{face-link} Widget
|
@subsection The @code{face-link} Widget
|
||||||
@findex face-link@r{ widget}
|
@findex face-link@r{ widget}
|
||||||
|
|
@ -1532,6 +1613,17 @@ A widget to represent a link to an Emacs face. Its super is the
|
||||||
It overrides the @code{:action} property, to a function to describe
|
It overrides the @code{:action} property, to a function to describe
|
||||||
@var{face}.
|
@var{face}.
|
||||||
|
|
||||||
|
@noindent
|
||||||
|
Example:
|
||||||
|
|
||||||
|
@lisp
|
||||||
|
(widget-create 'face-link
|
||||||
|
:button-prefix ""
|
||||||
|
:button-suffix ""
|
||||||
|
:tag "Which face is this one?"
|
||||||
|
'widget-button)
|
||||||
|
@end lisp
|
||||||
|
|
||||||
@node file-link
|
@node file-link
|
||||||
@subsection The @code{file-link} Widget
|
@subsection The @code{file-link} Widget
|
||||||
@findex file-link@r{ widget}
|
@findex file-link@r{ widget}
|
||||||
|
|
@ -1547,6 +1639,19 @@ A widget to represent a link to a file. Its super is the
|
||||||
It overrides the @code{:action} property, to a function to find the file
|
It overrides the @code{:action} property, to a function to find the file
|
||||||
@var{file}.
|
@var{file}.
|
||||||
|
|
||||||
|
@noindent
|
||||||
|
Example:
|
||||||
|
|
||||||
|
@lisp
|
||||||
|
(let ((elisp-files (directory-files user-emacs-directory t ".el$")))
|
||||||
|
(dolist (file elisp-files)
|
||||||
|
(widget-create 'file-link
|
||||||
|
:button-prefix ""
|
||||||
|
:button-suffix ""
|
||||||
|
file)
|
||||||
|
(widget-insert "\n")))
|
||||||
|
@end lisp
|
||||||
|
|
||||||
@node emacs-library-link
|
@node emacs-library-link
|
||||||
@subsection The @code{emacs-library-link} Widget
|
@subsection The @code{emacs-library-link} Widget
|
||||||
@findex emacs-library-link@r{ widget}
|
@findex emacs-library-link@r{ widget}
|
||||||
|
|
@ -1562,6 +1667,17 @@ A widget to represent a link to an Emacs Lisp file. Its super is the
|
||||||
It overrides the @code{:action} property, to a function to find the file
|
It overrides the @code{:action} property, to a function to find the file
|
||||||
@var{file}.
|
@var{file}.
|
||||||
|
|
||||||
|
@noindent
|
||||||
|
Example:
|
||||||
|
|
||||||
|
@lisp
|
||||||
|
(widget-create 'emacs-library-link
|
||||||
|
:button-prefix ""
|
||||||
|
:button-suffix ""
|
||||||
|
:tag "Show yourself, Widget Library!"
|
||||||
|
"wid-edit.el")
|
||||||
|
@end lisp
|
||||||
|
|
||||||
@node emacs-commentary-link
|
@node emacs-commentary-link
|
||||||
@subsection The @code{emacs-commentary-link} Widget
|
@subsection The @code{emacs-commentary-link} Widget
|
||||||
@findex emacs-commentary-link@r{ widget}
|
@findex emacs-commentary-link@r{ widget}
|
||||||
|
|
@ -1577,6 +1693,17 @@ file. Its super is the @code{link} widget.
|
||||||
It overrides the @code{:action} property, to a function to find the file
|
It overrides the @code{:action} property, to a function to find the file
|
||||||
@var{file} and put point in the Comment section.
|
@var{file} and put point in the Comment section.
|
||||||
|
|
||||||
|
@noindent
|
||||||
|
Example:
|
||||||
|
|
||||||
|
@lisp
|
||||||
|
(widget-create 'emacs-commentary-link
|
||||||
|
:button-prefix ""
|
||||||
|
:button-suffix ""
|
||||||
|
:tag "Check our good friend Customize"
|
||||||
|
"cus-edit.el")
|
||||||
|
@end lisp
|
||||||
|
|
||||||
@node push-button
|
@node push-button
|
||||||
@subsection The @code{push-button} Widget
|
@subsection The @code{push-button} Widget
|
||||||
@findex push-button@r{ widget}
|
@findex push-button@r{ widget}
|
||||||
|
|
@ -2009,6 +2136,33 @@ A widget that can toggle between two states. Its super is the
|
||||||
The widget has two possible states, @samp{on} and @samp{off}, which
|
The widget has two possible states, @samp{on} and @samp{off}, which
|
||||||
correspond to a @code{t} or @code{nil} value, respectively.
|
correspond to a @code{t} or @code{nil} value, respectively.
|
||||||
|
|
||||||
|
@noindent
|
||||||
|
Example:
|
||||||
|
|
||||||
|
@lisp
|
||||||
|
@group
|
||||||
|
(widget-insert "Press the button to activate/deactivate the field: ")
|
||||||
|
(widget-create 'toggle
|
||||||
|
:notify (lambda (widget &rest _ignored)
|
||||||
|
(widget-apply widget-example-field
|
||||||
|
(if (widget-value widget)
|
||||||
|
:activate
|
||||||
|
:deactivate))))
|
||||||
|
(widget-insert "\n")
|
||||||
|
@end group
|
||||||
|
@group
|
||||||
|
(setq widget-example-field
|
||||||
|
(widget-create 'editable-field
|
||||||
|
:deactivate (lambda (widget)
|
||||||
|
(widget-specify-inactive
|
||||||
|
widget
|
||||||
|
(widget-field-start widget)
|
||||||
|
(widget-get widget :to)))))
|
||||||
|
(widget-apply widget-example-field :deactivate)))
|
||||||
|
@end group
|
||||||
|
@end lisp
|
||||||
|
|
||||||
|
|
||||||
It either overrides or adds the following properties:
|
It either overrides or adds the following properties:
|
||||||
|
|
||||||
@table @code
|
@table @code
|
||||||
|
|
@ -2148,6 +2302,21 @@ The @var{type} arguments represent each checklist item. The widget's
|
||||||
value will be a list containing the values of all checked @var{type}
|
value will be a list containing the values of all checked @var{type}
|
||||||
arguments.
|
arguments.
|
||||||
|
|
||||||
|
@noindent
|
||||||
|
Example:
|
||||||
|
|
||||||
|
@lisp
|
||||||
|
(widget-create 'checklist
|
||||||
|
:notify (lambda (widget child &optional _event)
|
||||||
|
(funcall
|
||||||
|
(widget-value (widget-get-sibling child))
|
||||||
|
'toggle))
|
||||||
|
:value (list 'tool-bar-mode 'menu-bar-mode)
|
||||||
|
'(item :tag "Tool-bar" tool-bar-mode)
|
||||||
|
'(item :tag "Menu-bar" menu-bar-mode))))
|
||||||
|
@end lisp
|
||||||
|
|
||||||
|
|
||||||
It either overrides or adds the following properties:
|
It either overrides or adds the following properties:
|
||||||
|
|
||||||
@table @code
|
@table @code
|
||||||
|
|
@ -2899,6 +3068,59 @@ The predefined functions @code{widget-types-convert-widget} and
|
||||||
@code{widget-value-convert-widget} can be used here.
|
@code{widget-value-convert-widget} can be used here.
|
||||||
@end table
|
@end table
|
||||||
|
|
||||||
|
@noindent
|
||||||
|
Example:
|
||||||
|
|
||||||
|
@lisp
|
||||||
|
@group
|
||||||
|
(defvar widget-ranged-integer-map
|
||||||
|
(let ((map (copy-keymap widget-keymap)))
|
||||||
|
(define-key map [up] #'widget-ranged-integer-increase)
|
||||||
|
(define-key map [down] #'widget-ranged-integer-decrease)
|
||||||
|
map))
|
||||||
|
@end group
|
||||||
|
|
||||||
|
@group
|
||||||
|
(define-widget 'ranged-integer 'integer
|
||||||
|
"A ranged integer widget."
|
||||||
|
:min-value most-negative-fixnum
|
||||||
|
:max-value most-positive-fixnum
|
||||||
|
:keymap widget-ranged-integer-map)
|
||||||
|
@end group
|
||||||
|
|
||||||
|
@group
|
||||||
|
(defun widget-ranged-integer-change (widget how)
|
||||||
|
"Change the value of the ranged-integer WIDGET, according to HOW."
|
||||||
|
(let* ((value (widget-value widget))
|
||||||
|
(newval (cond
|
||||||
|
((eq how 'up)
|
||||||
|
(if (< (1+ value) (widget-get widget :max-value))
|
||||||
|
(1+ value)
|
||||||
|
(widget-get widget :max-value)))
|
||||||
|
((eq how 'down)
|
||||||
|
(if (> (1- value) (widget-get widget :min-value))
|
||||||
|
(1- value)
|
||||||
|
(widget-get widget :min-value)))
|
||||||
|
(t (error "HOW has a bad value"))))
|
||||||
|
(inhibit-read-only t))
|
||||||
|
(widget-value-set widget newval)))
|
||||||
|
@end group
|
||||||
|
|
||||||
|
@group
|
||||||
|
(defun widget-ranged-integer-increase (widget)
|
||||||
|
"Increase the value of the ranged-integer WIDGET."
|
||||||
|
(interactive (list (widget-at)))
|
||||||
|
(widget-ranged-integer-change widget 'up))
|
||||||
|
@end group
|
||||||
|
|
||||||
|
@group
|
||||||
|
(defun widget-ranged-integer-decrease (widget)
|
||||||
|
"Decrease the value of the ranged-integer WIDGET."
|
||||||
|
(interactive (list (widget-at)))
|
||||||
|
(widget-ranged-integer-change widget 'down))
|
||||||
|
@end group
|
||||||
|
@end lisp
|
||||||
|
|
||||||
@node Inspecting Widgets
|
@node Inspecting Widgets
|
||||||
@chapter Inspecting Widgets
|
@chapter Inspecting Widgets
|
||||||
@cindex widget browser
|
@cindex widget browser
|
||||||
|
|
|
||||||
2
etc/TODO
2
etc/TODO
|
|
@ -156,6 +156,8 @@ from.
|
||||||
|
|
||||||
** Make back_comment use syntax-ppss or equivalent
|
** Make back_comment use syntax-ppss or equivalent
|
||||||
|
|
||||||
|
** Make play-sound asynchronous and non-blocking
|
||||||
|
|
||||||
** Consider improving src/sysdep.c's search for a fqdn
|
** Consider improving src/sysdep.c's search for a fqdn
|
||||||
https://lists.gnu.org/r/emacs-devel/2007-04/msg00782.html
|
https://lists.gnu.org/r/emacs-devel/2007-04/msg00782.html
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -5389,9 +5389,49 @@ The following properties have special meanings for this widget:
|
||||||
:hidden-states '(standard)
|
:hidden-states '(standard)
|
||||||
:action #'custom-icon-action
|
:action #'custom-icon-action
|
||||||
:custom-set #'custom-icon-set
|
:custom-set #'custom-icon-set
|
||||||
:custom-reset-current #'custom-redraw)
|
:custom-mark-to-save #'custom-icon-mark-to-save
|
||||||
;; Not implemented yet.
|
:custom-reset-current #'custom-redraw
|
||||||
;; :custom-reset-saved 'custom-icon-reset-saved)
|
:custom-reset-saved #'custom-icon-reset-saved
|
||||||
|
:custom-state-set-and-redraw #'custom-icon-state-set-and-redraw
|
||||||
|
:custom-reset-standard #'custom-icon-reset-standard
|
||||||
|
:custom-mark-to-reset-standard #'custom-icon-mark-to-reset-standard)
|
||||||
|
|
||||||
|
(defun custom-icon-mark-to-save (widget)
|
||||||
|
"Mark user customization for icon edited by WIDGET to be saved later."
|
||||||
|
(let* ((icon (widget-value widget))
|
||||||
|
(value (custom--icons-widget-value
|
||||||
|
(car (widget-get widget :children)))))
|
||||||
|
(custom-push-theme 'theme-icon icon 'user 'set value)))
|
||||||
|
|
||||||
|
(defun custom-icon-reset-saved (widget)
|
||||||
|
"Restore icon customized by WIDGET to the icon's default attributes.
|
||||||
|
|
||||||
|
If there's a theme value for the icon, resets to that. Otherwise, resets to
|
||||||
|
its standard value."
|
||||||
|
(let* ((icon (widget-value widget)))
|
||||||
|
(custom-push-theme 'theme-icon icon 'user 'reset)
|
||||||
|
(custom-icon-state-set widget)
|
||||||
|
(custom-redraw widget)))
|
||||||
|
|
||||||
|
(defun custom-icon-state-set-and-redraw (widget)
|
||||||
|
"Set state of icon widget WIDGET and redraw it with up-to-date settings."
|
||||||
|
(custom-icon-state-set widget)
|
||||||
|
(custom-redraw-magic widget))
|
||||||
|
|
||||||
|
(defun custom-icon-reset-standard (widget)
|
||||||
|
"Reset icon edited by WIDGET to its standard value."
|
||||||
|
(let* ((icon (widget-value widget))
|
||||||
|
(themes (get icon 'theme-icon)))
|
||||||
|
(dolist (theme themes)
|
||||||
|
(custom-push-theme 'theme-icon icon (car theme) 'reset))
|
||||||
|
(custom-save-all))
|
||||||
|
(widget-put widget :custom-state 'unknown)
|
||||||
|
(custom-redraw widget))
|
||||||
|
|
||||||
|
(defun custom-icon-mark-to-reset-standard (widget)
|
||||||
|
"Reset icon edited by WIDGET to its standard value."
|
||||||
|
;; Don't mark for now, there aren't that many icons.
|
||||||
|
(custom-icon-reset-standard widget))
|
||||||
|
|
||||||
(defvar custom-icon-extended-menu
|
(defvar custom-icon-extended-menu
|
||||||
(let ((map (make-sparse-keymap)))
|
(let ((map (make-sparse-keymap)))
|
||||||
|
|
@ -5410,6 +5450,18 @@ The following properties have special meanings for this widget:
|
||||||
:enable (memq
|
:enable (memq
|
||||||
(widget-get custom-actioned-widget :custom-state)
|
(widget-get custom-actioned-widget :custom-state)
|
||||||
'(modified changed))))
|
'(modified changed))))
|
||||||
|
(define-key-after map [custom-icon-reset-saved]
|
||||||
|
'(menu-item "Revert This Session's Customization"
|
||||||
|
custom-icon-reset-saved
|
||||||
|
:enable (memq
|
||||||
|
(widget-get custom-actioned-widget :custom-state)
|
||||||
|
'(modified set changed rogue))))
|
||||||
|
(when (or custom-file init-file-user)
|
||||||
|
(define-key-after map [custom-icon-reset-standard]
|
||||||
|
'(menu-item "Erase Customization" custom-icon-reset-standard
|
||||||
|
:enable (memq
|
||||||
|
(widget-get custom-actioned-widget :custom-state)
|
||||||
|
'(modified set changed saved rogue)))))
|
||||||
map)
|
map)
|
||||||
"A menu for `custom-icon' widgets.
|
"A menu for `custom-icon' widgets.
|
||||||
Used in `custom-icon-action' to show a menu to the user.")
|
Used in `custom-icon-action' to show a menu to the user.")
|
||||||
|
|
|
||||||
|
|
@ -1491,6 +1491,7 @@ like an INI file. You can add this hook to `find-file-hook'."
|
||||||
"cd9660"
|
"cd9660"
|
||||||
"cfs"
|
"cfs"
|
||||||
"cgroup"
|
"cgroup"
|
||||||
|
"cgroup2"
|
||||||
"cifs"
|
"cifs"
|
||||||
"coda"
|
"coda"
|
||||||
"coherent"
|
"coherent"
|
||||||
|
|
|
||||||
|
|
@ -1117,7 +1117,7 @@ fontified."
|
||||||
|
|
||||||
(defun python--treesit-fontify-union-types (node override start end &optional type-regex &rest _)
|
(defun python--treesit-fontify-union-types (node override start end &optional type-regex &rest _)
|
||||||
"Fontify nested union types in the type hints.
|
"Fontify nested union types in the type hints.
|
||||||
For examlpe, Lvl1 | Lvl2[Lvl3[Lvl4[Lvl5 | None]], Lvl2]. This
|
For example, Lvl1 | Lvl2[Lvl3[Lvl4[Lvl5 | None]], Lvl2]. This
|
||||||
structure is represented via nesting binary_operator and
|
structure is represented via nesting binary_operator and
|
||||||
subscript nodes. This function iterates over all levels and
|
subscript nodes. This function iterates over all levels and
|
||||||
highlight identifier nodes. If TYPE-REGEX is not nil fontify type
|
highlight identifier nodes. If TYPE-REGEX is not nil fontify type
|
||||||
|
|
@ -1275,7 +1275,7 @@ fontified."
|
||||||
(subscript (identifier) @font-lock-type-face)
|
(subscript (identifier) @font-lock-type-face)
|
||||||
(subscript (attribute attribute: (identifier) @font-lock-type-face))]))
|
(subscript (attribute attribute: (identifier) @font-lock-type-face))]))
|
||||||
|
|
||||||
;; Patern matching: case [str(), pack0.Type0()]. Take only the
|
;; Pattern matching: case [str(), pack0.Type0()]. Take only the
|
||||||
;; last identifier.
|
;; last identifier.
|
||||||
(class_pattern (dotted_name (identifier) @font-lock-type-face :anchor))
|
(class_pattern (dotted_name (identifier) @font-lock-type-face :anchor))
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue