Compare commits

...

9 commits

Author SHA1 Message Date
Eli Zaretskii
910a7b30df Fix beginning/end-of-defun with tree-sitter
* lisp/treesit.el (treesit-beginning-of-defun)
(treesit-end-of-defun): Push mark, as other beginning/end-of-defun
functions do.
2023-05-07 09:13:10 +03:00
Theodor Thornhill
e205f68717 Fix indent for enums in csharp-mode
* lisp/progmodes/csharp-mode.el (csharp-guess-basic-syntax): Check for
keywords containing 'enum' on the line before an opening bracket, and
make it behave like a class-open token.
2023-05-06 21:15:21 +02:00
Philip Kaludercic
dfde902f3b ; Expand 'package-vc-install' documentation
* lisp/emacs-lisp/package-vc.el (package-vc-install): Go into further
detail on the handling of the REV argument.  (Bug#60418)
2023-05-06 20:51:49 +02:00
Eli Zaretskii
7133784303 Teach c-ts-mode about the 'restrict' keyword
* lisp/progmodes/c-ts-mode.el (c-ts-mode--keywords): Add
"restrict" and "_Atomic" type qualifiers.  (Bug#63323)
2023-05-06 15:15:42 +03:00
Eli Zaretskii
15e06260ae * lisp/x-dnd.el (x-dnd-after-move-frame): Skip dead frames. (Bug#63312) 2023-05-06 14:16:36 +03:00
Shynur
a081b6625b ; Updated Elispref-Manual: `nil' cannot be defun'ed
* doc/lispref/functions.texi (Function Cells): Fix inaccuracy.
(Bug#62746)
2023-05-06 12:46:23 +03:00
Eli Zaretskii
97b818a4fb Fix doc strings of 'mark-sexp' and 'mark-word'
* lisp/emacs-lisp/lisp.el (mark-sexp):
* lisp/simple.el (mark-word): Clarify the doc strings in various
usage cases.  (Bug#62892)
2023-05-06 11:47:31 +03:00
Eli Zaretskii
6f910ad932 ; * etc/EGLOT-NEWS: Fix misspellings. 2023-05-06 09:45:05 +03:00
Eli Zaretskii
9b775ddc05 ; * etc/EGLOT-NEWS: Fix wording of last change. 2023-05-06 09:38:20 +03:00
9 changed files with 71 additions and 31 deletions

View file

@ -1482,7 +1482,7 @@ the symbol as a function, Emacs signals a @code{void-function} error.
Note that void is not the same as @code{nil} or the symbol
@code{void}. The symbols @code{nil} and @code{void} are Lisp objects,
and can be stored into a function cell just as any other object can be
(and they can be valid functions if you define them in turn with
(and @code{void} can be a valid function if you define it with
@code{defun}). A void function cell contains no object whatsoever.
You can test the voidness of a symbol's function definition with

View file

@ -20,12 +20,12 @@ https://github.com/joaotavora/eglot/issues/1234.
* Changes in Eglot 1.12.29 (Eglot bundled with Emacs 29.1)
** Eglot can upgrade itself to the latest version.
** Eglot has a new command to upgrade to the latest version.
The new command 'eglot-upgrade-eglot' works around behaviour in the
existing 'package-install' command and the new 'package-upgrade'
command which would prevent the user from easily grabbing the latest
version as usual.
The new command 'eglot-upgrade-eglot' allows easily grabbing the
latest version of Eglot from ELPA. This might be more convenient than
using the more general command 'package-install', which by default
will not upgrade "built-in" packages, those that come with Emacs.
** LSP inlay hints are now supported.
Inlay hints are small text annotations not unlike diagnostics, but
@ -171,12 +171,12 @@ may be disabled via 'eglot-ignored-server-capabilities'
** Basic LSP "workspace folders" support added.
Eglot now advertises 'project-root' and 'project-external-roots' as
workspace-folders. (Configuring 'project-vc-external-roots-function'
via Elisp or 'tags-table-list' via Custtomize are two ways to set the
via Elisp or 'tags-table-list' via Customize are two ways to set the
external roots of a simple git project.)
(github#893)
** Eglot can now show project wide diagnosics via Flymake.
** Eglot can now show project wide diagnostics via Flymake.
Some LSP servers report diagnostics for all files in the current
workspace. Flymake has (as of version 1.2.1) the option to show
diagnostics from buffers other than the currently visited one. The
@ -394,7 +394,7 @@ these two domains.
* Changes in Eglot 1.3 (10/12/2018)
** Provide strict checking of incoming LSP messagesp.
** Provide strict checking of incoming LSP messages.
(github#144, github#156)
@ -488,7 +488,7 @@ here.
* Changes in Eglot 1.1 (9/7/2018)
** Implement TCP autostart/autoconnect (and support Ruby's Solargraph).
The ':autoport' symbol in the server incovation is replaced
The ':autoport' symbol in the server invocation is replaced
dynamically by a local port believed to be vacant, so that the ensuing
TCP connection finds a listening server.

View file

@ -92,12 +92,22 @@ report errors as appropriate for this kind of usage."
(forward-sexp (- arg) interactive))
(defun mark-sexp (&optional arg allow-extend)
"Set mark ARG sexps from point.
The place mark goes is the same place \\[forward-sexp] would
move to with the same argument.
Interactively, if this command is repeated
or (in Transient Mark mode) if the mark is active,
it marks the next ARG sexps after the ones already marked.
"Set mark ARG sexps from point or move mark one sexp.
When called from Lisp with ALLOW-EXTEND ommitted or nil, mark is
set ARG sexps from point.
With ARG and ALLOW-EXTEND both non-nil (interactively, with prefix
argument), the place to which mark goes is the same place \\[forward-sexp]
would move to with the same argument; if the mark is active, it moves
ARG sexps from its current position, otherwise it is set ARG sexps
from point.
When invoked interactively without a prefix argument and no active
region, mark moves one sexp forward.
When invoked interactively without a prefix argument, and region
is active, mark moves one sexp away of point (i.e., forward
if mark is at or after point, back if mark is before point), thus
extending the region by one sexp. Since the direction of region
extension depends on the relative position of mark and point, you
can change the direction by \\[exchange-point-and-mark].
This command assumes point is not in a string or comment."
(interactive "P\np")
(cond ((and allow-extend

View file

@ -747,11 +747,13 @@ indicating the package name and SPEC is a plist as described in
symbol whose name is the package name, and the URL for the
package will be taken from the package's metadata.
By default, this function installs the last version of the package
available from its repository, but if REV is given and non-nil, it
specifies the revision to install. If REV has the special value
`:last-release' (interactively, the prefix argument), that stands
for the last released version of the package.
By default, this function installs the last revision of the
package available from its repository. If REV is a string, it
describes the revision to install, as interpreted by the VC
backend. The special value `:last-release' (interactively, the
prefix argument), will use the commit of the latest release, if
it exists. The last release is the latest revision which changed
the \"Version:\" header of the package's main Lisp file.
Optional argument BACKEND specifies the VC backend to use for cloning
the package's repository; this is only possible if NAME-OR-URL is a URL,

View file

@ -504,10 +504,10 @@ NODE should be a labeled_statement. PARENT is its parent."
"C/C++ keywords for tree-sitter font-locking.
MODE is either `c' or `cpp'."
(let ((c-keywords
'("break" "case" "const" "continue"
'("_Atomic" "break" "case" "const" "continue"
"default" "do" "else" "enum"
"extern" "for" "goto" "if" "inline"
"register" "return"
"register" "restrict" "return"
"sizeof" "static" "struct"
"switch" "typedef" "union"
"volatile" "while")))

View file

@ -464,6 +464,15 @@ compilation and evaluation time conflicts."
(defun csharp-guess-basic-syntax (orig-fun &rest args)
(cond
(;; enum
(save-excursion
(goto-char (c-point 'boi))
(and
(eq (char-after) ?\{)
(save-excursion
(goto-char (c-point 'iopl))
(looking-at ".*enum.*"))))
`((class-open ,(c-point 'iopl))))
(;; Attributes
(save-excursion
(goto-char (c-point 'iopl))

View file

@ -8668,12 +8668,22 @@ node `(elisp) Word Motion' for details."
(forward-word (- (or arg 1))))
(defun mark-word (&optional arg allow-extend)
"Set mark ARG words away from point.
The place mark goes is the same place \\[forward-word] would
move to with the same argument.
Interactively, if this command is repeated
or (in Transient Mark mode) if the mark is active,
it marks the next ARG words after the ones already marked."
"Set mark ARG words from point or move mark one word.
When called from Lisp with ALLOW-EXTEND ommitted or nil, mark is
set ARG words from point.
With ARG and ALLOW-EXTEND both non-nil (interactively, with prefix
argument), the place to which mark goes is the same place \\[forward-word]
would move to with the same argument; if the mark is active, it moves
ARG words from its current position, otherwise it is set ARG words
from point.
When invoked interactively without a prefix argument and no active
region, mark moves one word forward.
When invoked interactively without a prefix argument, and region
is active, mark moves one word away of point (i.e., forward
if mark is at or after point, back if mark is before point), thus
extending the region by one word. Since the direction of region
extension depends on the relative position of mark and point, you
can change the direction by \\[exchange-point-and-mark]."
(interactive "P\np")
(cond ((and allow-extend
(or (and (eq last-command this-command) (mark t))

View file

@ -1862,6 +1862,10 @@ This is a tree-sitter equivalent of `beginning-of-defun'.
Behavior of this function depends on `treesit-defun-type-regexp'
and `treesit-defun-skipper'."
(interactive "^p")
(or (not (eq this-command 'treesit-beginning-of-defun))
(eq last-command 'treesit-beginning-of-defun)
(and transient-mark-mode mark-active)
(push-mark))
(let ((orig-point (point))
(success nil))
(catch 'done
@ -1892,6 +1896,10 @@ this function depends on `treesit-defun-type-regexp' and
(interactive "^p\nd")
(let ((orig-point (point)))
(if (or (null arg) (= arg 0)) (setq arg 1))
(or (not (eq this-command 'treesit-end-of-defun))
(eq last-command 'treesit-end-of-defun)
(and transient-mark-mode mark-active)
(push-mark))
(catch 'done
(dotimes (_ 2) ; Not making progress is better than infloop.

View file

@ -609,8 +609,9 @@ message (format 32) that caused EVENT to be generated."
(defun x-dnd-after-move-frame (frame)
"Handle FRAME moving to a different position.
Clear any cached root window position."
(set-frame-parameter frame 'dnd-root-window-position
nil))
(and (frame-live-p frame)
(set-frame-parameter frame 'dnd-root-window-position
nil)))
(add-hook 'move-frame-functions #'x-dnd-after-move-frame)