mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2024-11-24 07:20:37 +00:00
Merge from origin/emacs-30
0f8f077318
; * doc/emacs/search.texi (Word Search): Document 'dictio...fb155bcfb6
; * lisp/emacs-lisp/chart.el (chart-bar-quickie): Doc fix.6dbe4e99ac
; * lisp/emacs-lisp/chart.el (chart-bar-quickie): Improve...d664227f81
; More accurate documentation of 'file-newer-than-file-p'e49b479f86
Fix c-ts-mode indentation for initializer lists (bug#73661)f520008744
Avoid segfaults in Rmail-MIME6a5c2edd84
Eglot: use :immediate t when resolving completions (bug#7...cd36e070c2
Eglot: minor changes to doc and docstrings1ea0d9b891
Revert "Set treesit-primary-parser for tree-sitter modes"52746ceb62
Remove duplicate indent rules in elixir-ts-modeed57faafc7
Set treesit-primary-parser for tree-sitter modes37a6c859b0
; * lisp/emacs-lisp/cl-macs.el (cl-once-only): Fix capita...2d4d6dc43a
Delete XIE X extension from TODO
This commit is contained in:
commit
bb5b25181e
@ -792,6 +792,46 @@ search engine whose @acronym{URL} is specified by the variable
|
|||||||
Wowser Manual}). If the region is not active, or doesn't contain any
|
Wowser Manual}). If the region is not active, or doesn't contain any
|
||||||
words, this command prompts the user for a URL or keywords to search.
|
words, this command prompts the user for a URL or keywords to search.
|
||||||
|
|
||||||
|
@findex dictionary-search
|
||||||
|
@findex dictionary
|
||||||
|
@findex dictionary-tooltip-mode
|
||||||
|
@cindex dictionary server protocol (DICT)
|
||||||
|
@cindex word definition search
|
||||||
|
@vindex dictionary-server
|
||||||
|
You can also search for definitions of a word by querying dictionary
|
||||||
|
servers via the @sc{dict} protocol defined by @acronym{RFC} 2229. Emacs
|
||||||
|
includes a client for this protocol. Type @w{@kbd{M-x dictionary-search
|
||||||
|
@key{RET}}} to connect to a @sc{dict} server and ask it to provide the
|
||||||
|
available definitions of a word. This command prompts for the word to
|
||||||
|
look up, using the word at point as the default, then asks the @sc{dict}
|
||||||
|
server to provide the definitions of that word in one or more
|
||||||
|
dictionaries. By default, the command first tries to connect to the
|
||||||
|
@sc{dict} server installed on the local host, and if that fails, it
|
||||||
|
tries @file{dict.org} after your confirmation; customize the variable
|
||||||
|
@code{dictionary-server} to specify, as a string, the URL of a single
|
||||||
|
server to use (use @samp{localhost} if you want to query only the local
|
||||||
|
server). Normally, @code{dictionary-search} tells the server to look up
|
||||||
|
the word in all the dictionaries available to the server, but if you
|
||||||
|
invoke the command with a prefix argument, it will prompt for a single
|
||||||
|
dictionary to look. The list of dictionaries available to a server can
|
||||||
|
be displayed by pressing the @samp{Select dictionary} button shown in
|
||||||
|
the @file{*Dictionary*} buffer, described below.
|
||||||
|
|
||||||
|
First time you use @code{dictionary-search}, it creates a new
|
||||||
|
@file{*Dictionary*} buffer and turns on a special mode in it. The
|
||||||
|
buffer shows buttons for selecting a dictionary, searching a definition
|
||||||
|
of another word, etc. Subsequent @code{dictionary-search} commands
|
||||||
|
reuse this buffer. To create another such buffer (e.g., too look up
|
||||||
|
other words, perhaps in another dictionary), type @w{@kbd{M-x dictionary
|
||||||
|
@key{RET}}}.
|
||||||
|
|
||||||
|
If you turn on @code{dictionary-tooltip-mode} in a buffer, Emacs will
|
||||||
|
look up the definitions of the word at mouse pointer and show those
|
||||||
|
definitions in a tool tip. This is handy when you are reading text with
|
||||||
|
many words about whose meaning you are unsure.
|
||||||
|
|
||||||
|
For other options of dictionary-search, see the @code{dictionary}
|
||||||
|
customization group (@pxref{Specific Customization}).
|
||||||
|
|
||||||
@node Symbol Search
|
@node Symbol Search
|
||||||
@section Symbol Search
|
@section Symbol Search
|
||||||
|
@ -1299,7 +1299,8 @@ and modification.
|
|||||||
This function returns @code{t} if the file @var{filename1} is
|
This function returns @code{t} if the file @var{filename1} is
|
||||||
newer than file @var{filename2}. If @var{filename1} does not
|
newer than file @var{filename2}. If @var{filename1} does not
|
||||||
exist, it returns @code{nil}. If @var{filename1} does exist, but
|
exist, it returns @code{nil}. If @var{filename1} does exist, but
|
||||||
@var{filename2} does not, it returns @code{t}.
|
@var{filename2} does not, it returns @code{t}. Otherwise, it compares
|
||||||
|
the times of last modification of the files.
|
||||||
|
|
||||||
In the following example, assume that the file @file{aug-19} was written
|
In the following example, assume that the file @file{aug-19} was written
|
||||||
on the 19th, @file{aug-20} was written on the 20th, and the file
|
on the 19th, @file{aug-20} was written on the 20th, and the file
|
||||||
|
@ -123,14 +123,16 @@ Here's how to start using Eglot with your programming project:
|
|||||||
@item
|
@item
|
||||||
Select and install a language server.
|
Select and install a language server.
|
||||||
|
|
||||||
Eglot comes pre-configured with many popular language servers, see the
|
Eglot comes pre-configured for many popular language servers, see the
|
||||||
value of @code{eglot-server-programs}. If the server(s) mentioned
|
value of @code{eglot-server-programs}. If the server(s) mentioned there
|
||||||
there satisfy your needs for the programming language(s) with which
|
satisfy your needs for the programming language(s) with which you want
|
||||||
you want to use Eglot, you just need to make sure those servers are
|
to use Eglot, you just need to make sure those servers are installed on
|
||||||
installed on your system. Alternatively, install one or more servers
|
your system and Eglot can find them.
|
||||||
of your choice and add them to the value of
|
|
||||||
|
Alternatively, install one or more servers of your choice and tell Eglot
|
||||||
|
where to find them. To do that, you may add to the value of
|
||||||
@code{eglot-server-programs}, as described in @ref{Setting Up LSP
|
@code{eglot-server-programs}, as described in @ref{Setting Up LSP
|
||||||
Servers}.
|
Servers} or have Eglot prompt you about it (@pxref{Eglot Commands}).
|
||||||
|
|
||||||
@item
|
@item
|
||||||
Turn on Eglot for your project.
|
Turn on Eglot for your project.
|
||||||
@ -197,7 +199,7 @@ particular server(s) you want to install.
|
|||||||
|
|
||||||
To use a language server, Eglot must know how to start it and which
|
To use a language server, Eglot must know how to start it and which
|
||||||
programming languages each server supports. This information is
|
programming languages each server supports. This information is
|
||||||
provided by the variable @code{eglot-server-programs}.
|
commonly provided by the variable @code{eglot-server-programs}.
|
||||||
|
|
||||||
@defvar eglot-server-programs
|
@defvar eglot-server-programs
|
||||||
This variable associates major modes with names and command-line
|
This variable associates major modes with names and command-line
|
||||||
@ -939,12 +941,16 @@ to @w{@code{(disallow-non-standard-keys enforce-required-keys)}}.
|
|||||||
|
|
||||||
@vindex eglot-server-initialized-hook
|
@vindex eglot-server-initialized-hook
|
||||||
@item eglot-server-initialized-hook
|
@item eglot-server-initialized-hook
|
||||||
A hook run after the server object is successfully initialized.
|
A hook run after the server object is successfully initialized (which
|
||||||
|
includes launching the process) but before any LSP communication is
|
||||||
|
attempted. Each function receives a @code{eglot-lsp-server} instance as
|
||||||
|
argument.
|
||||||
|
|
||||||
@vindex eglot-connect-hook
|
@vindex eglot-connect-hook
|
||||||
@item eglot-connect-hook
|
@item eglot-connect-hook
|
||||||
A hook run after connection to the server is successfully
|
A hook run after the LSP connection to the server is successfully
|
||||||
established. @xref{Starting Eglot}.
|
established. Each function receives a @code{eglot-lsp-server} instance
|
||||||
|
as argument. @xref{Starting Eglot}.
|
||||||
|
|
||||||
@item eglot-managed-mode-hook
|
@item eglot-managed-mode-hook
|
||||||
A hook run after Eglot started or stopped managing a buffer.
|
A hook run after Eglot started or stopped managing a buffer.
|
||||||
|
3
etc/TODO
3
etc/TODO
@ -788,9 +788,6 @@ to ASCII.
|
|||||||
|
|
||||||
*** Provide a user friendly interface to specify fonts
|
*** Provide a user friendly interface to specify fonts
|
||||||
|
|
||||||
** Use the XIE X extension, if available, for image display
|
|
||||||
This is obsolete, as XIE itself is now considered obsolete.
|
|
||||||
|
|
||||||
** Make monochrome images honor the face
|
** Make monochrome images honor the face
|
||||||
Display those images using the foreground and background colors of the
|
Display those images using the foreground and background colors of the
|
||||||
applicable faces.
|
applicable faces.
|
||||||
|
@ -574,13 +574,16 @@ R1 and R2 are dotted pairs. Colorize it with FACE."
|
|||||||
|
|
||||||
(defun chart-bar-quickie (dir title namelst nametitle numlst numtitle
|
(defun chart-bar-quickie (dir title namelst nametitle numlst numtitle
|
||||||
&optional max sort-pred)
|
&optional max sort-pred)
|
||||||
"Wash over the complex EIEIO stuff and create a nice bar chart.
|
"Create a bar chart named TITLE in direction DIR [`horizontal' `vertical'].
|
||||||
Create it going in direction DIR [`horizontal' `vertical'] with TITLE
|
NAMELST is the list of bar names and NAMETITLE is the name the of axis
|
||||||
using a name sequence NAMELST labeled NAMETITLE with values NUMLST
|
containing them.
|
||||||
labeled NUMTITLE.
|
NUMLST is the list of values and NUMTITLE is the name of the value
|
||||||
Optional arguments:
|
axis.
|
||||||
Set the chart's max element display to MAX, and sort lists with
|
Optional argument MAX limits the chart's max element display to MAX by
|
||||||
SORT-PRED if desired."
|
passing it as second argument to `chart-trim', otherwise the chart's
|
||||||
|
display is unlimited.
|
||||||
|
Optional argument SORT-PRED is a predicate function passed as second
|
||||||
|
argument to `chart-sort' to sort the lists if desired."
|
||||||
(let ((nc (make-instance 'chart-bar
|
(let ((nc (make-instance 'chart-bar
|
||||||
:title title
|
:title title
|
||||||
:key-label "8-m" ; This is a text key pic
|
:key-label "8-m" ; This is a text key pic
|
||||||
|
@ -2505,7 +2505,7 @@ by EXPANSION, and (setq NAME ...) will act like (setf EXPANSION ...).
|
|||||||
(defmacro cl-once-only (names &rest body)
|
(defmacro cl-once-only (names &rest body)
|
||||||
"Generate code to evaluate each of NAMES just once in BODY.
|
"Generate code to evaluate each of NAMES just once in BODY.
|
||||||
|
|
||||||
This macro helps with writing other macros. Each of names is
|
This macro helps with writing other macros. Each of NAMES is
|
||||||
either (NAME FORM) or NAME, which latter means (NAME NAME).
|
either (NAME FORM) or NAME, which latter means (NAME NAME).
|
||||||
During macroexpansion, each NAME is bound to an uninterned
|
During macroexpansion, each NAME is bound to an uninterned
|
||||||
symbol. The expansion evaluates each FORM and binds it to the
|
symbol. The expansion evaluates each FORM and binds it to the
|
||||||
|
@ -579,11 +579,13 @@ HEADER is a header component of a MIME-entity object (see
|
|||||||
(ignore-errors (base64-decode-region pos (point))))
|
(ignore-errors (base64-decode-region pos (point))))
|
||||||
((string= transfer-encoding "quoted-printable")
|
((string= transfer-encoding "quoted-printable")
|
||||||
(quoted-printable-decode-region pos (point))))))
|
(quoted-printable-decode-region pos (point))))))
|
||||||
(decode-coding-region
|
;; If the text is empty, we don't have anything to decode.
|
||||||
pos (point)
|
(and (/= pos (point))
|
||||||
;; Use -dos decoding, to remove ^M characters left from base64 or
|
(decode-coding-region
|
||||||
;; rogue qp-encoded text.
|
pos (point)
|
||||||
(coding-system-change-eol-conversion coding-system 1))
|
;; Use -dos decoding, to remove ^M characters left from base64
|
||||||
|
;; or rogue qp-encoded text.
|
||||||
|
(coding-system-change-eol-conversion coding-system 1)))
|
||||||
(if (and
|
(if (and
|
||||||
(or (not rmail-mime-coding-system) (consp rmail-mime-coding-system))
|
(or (not rmail-mime-coding-system) (consp rmail-mime-coding-system))
|
||||||
(not (eq (coding-system-base coding-system) 'us-ascii)))
|
(not (eq (coding-system-base coding-system) 'us-ascii)))
|
||||||
|
@ -338,10 +338,13 @@ characters of the current line."
|
|||||||
;; If the start of the previous sibling isn't at the
|
;; If the start of the previous sibling isn't at the
|
||||||
;; beginning of a line, something's probably not quite
|
;; beginning of a line, something's probably not quite
|
||||||
;; right, go a step further. (E.g., comment after a
|
;; right, go a step further. (E.g., comment after a
|
||||||
;; statement.)
|
;; statement.) If the previous sibling is the first named
|
||||||
|
;; node then anchor to that, e.g. when returning an aggregate
|
||||||
|
;; and starting the items on the same line as {.
|
||||||
(_ (goto-char (treesit-node-start prev-sibling))
|
(_ (goto-char (treesit-node-start prev-sibling))
|
||||||
(if (looking-back (rx bol (* whitespace))
|
(if (or (looking-back (rx bol (* whitespace))
|
||||||
(line-beginning-position))
|
(line-beginning-position)))
|
||||||
|
(null (treesit-node-prev-sibling prev-sibling t))
|
||||||
(setq continue nil)
|
(setq continue nil)
|
||||||
(setq prev-sibling
|
(setq prev-sibling
|
||||||
(treesit-node-prev-sibling prev-sibling)))))))
|
(treesit-node-prev-sibling prev-sibling)))))))
|
||||||
|
@ -1480,18 +1480,21 @@ Use current server's or first available Eglot events buffer."
|
|||||||
|
|
||||||
(defvar eglot-connect-hook
|
(defvar eglot-connect-hook
|
||||||
'(eglot-signal-didChangeConfiguration)
|
'(eglot-signal-didChangeConfiguration)
|
||||||
"Hook run after connecting in `eglot--connect'.")
|
"Hook run after connecting to a server.
|
||||||
|
Each function is passed an `eglot-lsp-server' instance
|
||||||
|
as argument.")
|
||||||
|
|
||||||
(defvar eglot-server-initialized-hook
|
(defvar eglot-server-initialized-hook
|
||||||
'()
|
'()
|
||||||
"Hook run after a `eglot-lsp-server' instance is created.
|
"Hook run after a `eglot-lsp-server' instance is created.
|
||||||
|
|
||||||
That is before a connection was established. Use
|
That is before a connection is established. Use
|
||||||
`eglot-connect-hook' to hook into when a connection was
|
`eglot-connect-hook' to hook into when a connection was
|
||||||
successfully established and the server on the other side has
|
successfully established and the server on the other side has
|
||||||
received the initializing configuration.
|
received the initializing configuration.
|
||||||
|
|
||||||
Each function is passed the server as an argument")
|
Each function is passed an `eglot-lsp-server' instance
|
||||||
|
as argument.")
|
||||||
|
|
||||||
(defun eglot--cmd (contact)
|
(defun eglot--cmd (contact)
|
||||||
"Helper for `eglot--connect'."
|
"Helper for `eglot--connect'."
|
||||||
@ -3232,7 +3235,8 @@ for which LSP on-type-formatting should be requested."
|
|||||||
:resolveProvider)
|
:resolveProvider)
|
||||||
(plist-get lsp-comp :data))
|
(plist-get lsp-comp :data))
|
||||||
(eglot--request server :completionItem/resolve
|
(eglot--request server :completionItem/resolve
|
||||||
lsp-comp :cancel-on-input t)
|
lsp-comp :cancel-on-input t
|
||||||
|
:immediate t)
|
||||||
lsp-comp))))))
|
lsp-comp))))))
|
||||||
(when (and (consp eglot--capf-session)
|
(when (and (consp eglot--capf-session)
|
||||||
(= (car bounds) (car (nth 0 eglot--capf-session)))
|
(= (car bounds) (car (nth 0 eglot--capf-session)))
|
||||||
|
@ -734,9 +734,6 @@ Return nil if NODE is not a defun node or doesn't have a name."
|
|||||||
(when (treesit-ready-p 'heex)
|
(when (treesit-ready-p 'heex)
|
||||||
(setq-local treesit-range-settings elixir-ts--treesit-range-rules)
|
(setq-local treesit-range-settings elixir-ts--treesit-range-rules)
|
||||||
|
|
||||||
(setq-local treesit-simple-indent-rules
|
|
||||||
(append treesit-simple-indent-rules heex-ts--indent-rules))
|
|
||||||
|
|
||||||
(setq-local treesit-font-lock-settings
|
(setq-local treesit-font-lock-settings
|
||||||
(append treesit-font-lock-settings
|
(append treesit-font-lock-settings
|
||||||
heex-ts--font-lock-settings))
|
heex-ts--font-lock-settings))
|
||||||
|
@ -5270,7 +5270,9 @@ decode_coding_raw_text (struct coding_system *coding)
|
|||||||
coding->chars_at_source = 1;
|
coding->chars_at_source = 1;
|
||||||
coding->consumed_char = coding->src_chars;
|
coding->consumed_char = coding->src_chars;
|
||||||
coding->consumed = coding->src_bytes;
|
coding->consumed = coding->src_bytes;
|
||||||
if (eol_dos && coding->source[coding->src_bytes - 1] == '\r')
|
if (eol_dos
|
||||||
|
&& coding->src_bytes > 0 /* empty source text? */
|
||||||
|
&& coding->source[coding->src_bytes - 1] == '\r')
|
||||||
{
|
{
|
||||||
coding->consumed_char--;
|
coding->consumed_char--;
|
||||||
coding->consumed--;
|
coding->consumed--;
|
||||||
|
@ -3788,7 +3788,8 @@ DEFUN ("unix-sync", Funix_sync, Sunix_sync, 0, 0, "",
|
|||||||
DEFUN ("file-newer-than-file-p", Ffile_newer_than_file_p, Sfile_newer_than_file_p, 2, 2, 0,
|
DEFUN ("file-newer-than-file-p", Ffile_newer_than_file_p, Sfile_newer_than_file_p, 2, 2, 0,
|
||||||
doc: /* Return t if file FILE1 is newer than file FILE2.
|
doc: /* Return t if file FILE1 is newer than file FILE2.
|
||||||
If FILE1 does not exist, the answer is nil;
|
If FILE1 does not exist, the answer is nil;
|
||||||
otherwise, if FILE2 does not exist, the answer is t. */)
|
otherwise, if FILE2 does not exist, the answer is t.
|
||||||
|
For existing files, this compares their last-modified times. */)
|
||||||
(Lisp_Object file1, Lisp_Object file2)
|
(Lisp_Object file1, Lisp_Object file2)
|
||||||
{
|
{
|
||||||
struct stat st1, st2;
|
struct stat st1, st2;
|
||||||
|
@ -208,6 +208,21 @@ int main()
|
|||||||
}
|
}
|
||||||
=-=-=
|
=-=-=
|
||||||
|
|
||||||
|
Name: Return Compund Literal
|
||||||
|
|
||||||
|
=-=
|
||||||
|
struct pair { int fst, snd; };
|
||||||
|
struct pair
|
||||||
|
make_pair(int long_identifier_a[], int long_identifier_b[],
|
||||||
|
int offset_a, int offset_b)
|
||||||
|
{
|
||||||
|
int base_offset = 10;
|
||||||
|
return (struct pair) { long_identifier_a[base_offset + offset_b],
|
||||||
|
long_identifier_b[base_offset + offset_b] };
|
||||||
|
}
|
||||||
|
|
||||||
|
=-=-=
|
||||||
|
|
||||||
Name: Switch-Case statement
|
Name: Switch-Case statement
|
||||||
|
|
||||||
=-=
|
=-=
|
||||||
@ -486,6 +501,30 @@ namespace A {
|
|||||||
}
|
}
|
||||||
=-=-=
|
=-=-=
|
||||||
|
|
||||||
|
Name: Return Aggregate Initialized Struct
|
||||||
|
|
||||||
|
=-=
|
||||||
|
struct pair { int x, y; }
|
||||||
|
pair
|
||||||
|
make_pair(int long_identifier_a[], int long_identifier_b[],
|
||||||
|
int offset_a, int offset_b)
|
||||||
|
{
|
||||||
|
int base_offset = 10;
|
||||||
|
return { long_identifier_a[base_offset + offset_b],
|
||||||
|
long_identifier_b[base_offset + offset_b] };
|
||||||
|
}
|
||||||
|
=-=
|
||||||
|
struct pair { int x, y; }
|
||||||
|
pair
|
||||||
|
make_pair(int long_identifier_a[], int long_identifier_b[],
|
||||||
|
int offset_a, int offset_b)
|
||||||
|
{
|
||||||
|
int base_offset = 10;
|
||||||
|
return { long_identifier_a[base_offset + offset_b],
|
||||||
|
long_identifier_b[base_offset + offset_b] };
|
||||||
|
}
|
||||||
|
=-=-=
|
||||||
|
|
||||||
Code:
|
Code:
|
||||||
(lambda ()
|
(lambda ()
|
||||||
(c-ts-mode)
|
(c-ts-mode)
|
||||||
|
Loading…
Reference in New Issue
Block a user