* doc/emacs/files.texi: (Time Stamps): Expand the examples and add
node-end summaries. Thanks to Ruth for her help with the clarity of
the documentation.
Set eglot--docver to -1 in LSP documents not yet 'didOpen'ed,
then add a check for this in the jsonrpc-connection-ready-p
predicate.
We do this because the call to eglot-flymake-backend may come in
so fast that textDocument/diagnostic actually makes it into the
jsonrpc queue before the didOpen. Much like, say, completions
before didChange, some servers don't like that, understandibly.
So use the existing "deferred" mechanism checks to make sure, as
usual, that requests targetting a specific LSP document come
after the didOpen/didChange informing the server of the actual
state of the buffer.
I _could_ have used nil instead of -1, and it would probably be
cleaner. But -1 is safer, we never know if a version comparison
won't slip outside the didOpen period. Might change my mind
about this.
* lisp/progmodes/eglot.el (eglot--docver): Init to -1.
(eglot--managed-mode): Set eglot--docver to -1 when unmanaging.
(jsonrpc-connection-ready-p): Check eglot--docver non-negative.
(eglot--signal-textDocument/didClose): Set eglot--docver to -1.
* doc/lispref/positions.texi (Point): Define "buffer point".
* doc/lispref/windows.texi (Window Point): Say that buffer point
can change in unpredictable ways when windows get selected
(Bug#79927).
When a repeat hint string exists, the hint is formatted using
`read-multiple-choice' formatting. But `rmc--add-key-description' only
works on characters, not symbols like 'right or 'left.
* lisp/repeat.el (repeat-echo-message-string): check for chars
If the pushed diagnostics are outdated and we have pulled diagnostics,
we want to report them. And if the pushed diagnostics are up to date,
we want to report them along with any pulled ones. The do-nothing
update happens only if the pulled response indicated so explicitly or if
there are no pulled diagnostics and the pushed ones are out-of-date.
* lisp/progmodes/eglot.el (eglot--flymake-report): Tweak.
* lisp/calendar/icalendar-mode.el: Update file header.
Fix error display in 'icalendar-errors-mode':
* lisp/calendar/icalendar.el (icalendar-error-regexp): Fix to allow
" *UNFOLDED:" prefix in buffer names. (Extra colon was breaking match.)
(icalendar-format-error): Suppress this prefix preferentially in long
buffer names.
Add declarations to some iCalendar macros:
* lisp/calendar/icalendar-macs.el (icalendar-with-node-value)
(icalendar-with-child-of)
(icalendar-with-param-of)
(icalendar-with-node-children)
(icalendar-with-node-value)
(icalendar-with-param)
* lisp/calendar/icalendar-ast.el (icalendar-make-property)
(icalendar-make-component)
(icalendar-make-node-from-templates): Add (declare ...) forms.
Add `icalendar-trimp' to icalendar-utils.el:
* lisp/calendar/icalendar-utils.el (icalendar-trimp): New function.
* lisp/calendar/diary-icalendar.el
(diary-icalendar-format-entry)
(diary-icalendar-parse-attendees-and-organizer)
(diary-icalendar-parse-location)
(diary-icalendar-parse-url)
(diary-icalendar-parse-uid): Use it to replace diary-icalendar--nonempty.
(diary-icalendar--nonempty): Remove.
Move VTIMEZONE creation to icalendar-recur.el:
The following changes move `diary-icalendar-current-tz-to-vtimezone' and
associated code to icalendar-recur.el. Library users are likely to need
this function, so it makes sense to keep it with other time zone-related
code in that file, instead of having them depend on diary-icalendar.
* lisp/calendar/icalendar-recur.el (icalendar-tz-data-insufficient)
(icalendar-tz-unsupported): New error types.
(icalendar-recur-current-tz-to-vtimezone): Rename from
`diary-icalendar-current-tz-to-vtimezone'; signal new error types.
(icalendar-recur--tz-warning): Rename from `diary-icalendar--tz-warning'.
(icalendar-recur--emacs-local-tzid): Rename from
`diary-icalendar--emacs-local-tzid'.
(icalendar-recur--tz-info-sexp-p): Rename from
`diary-icalendar--tz-info-sexp-p'.
* lisp/calendar/diary-icalendar.el
(diary-icalendar-current-tz-to-vtimezone): Reimplement with
`icalendar-recur-current-tz-to-vtimezone'.
(diary-icalendar--tz-warning)
(diary-icalendar--emacs-local-tzid)
(diary-icalendar--tz-info-sexp-p): Renamed and moved; see above.
(diary-time-zone-export-strategy): Update validation function name.
Foot supports all features required for this (OSC-52, DECSET1000,
DECSET1003).
* lisp/term/xterm.el (xterm--auto-xt-mouse-allowed-names):
Add foot. (Bug#80083)
Copyright-paperwork-exempt: yes
Up until recently, there were no reliable way to detect if a terminal
supported OSC-52 or not.
A number or terminal emulators decided to remedy this by including '52'
in their primary DA response. In short, the presence of 52 in the DA
response means the terminal supports *writing* to the clipboard.
Reading the clipboard is _usually_ supported, but not guaranteed.
It should be noted that Emacs uses both the 'c' and 'p' parameters in
OSC-52, to copy to either PRIMARY, or CLIPBOARD, while the specification
only requires the terminal to implement 'c'. If a terminal doesn't
support 'p', the OSC-52 request will be silently ignored.
* lisp/term/xterm.el (xterm--init, xterm--primary-da-handler):
Query primary device attributes for OSC-52 support. (Bug#80083)
Copyright-paperwork-exempt: yes
* lisp/term/xterm.el (xterm--report-background-handler)
(xterm--report-foreground-handler): Record tty background and
foreground color in terminal parameters.
(xterm--version-handler): Also query foreground color.
(xterm--init): Also query foreground color; move background and
foreground color handling here.
(xterm--set-background-mode): Rename from
xterm-maybe-set-dark-background-mode; now always set background
mode to dark or light.
(xterm-maybe-update-default-face): Update default face
background and foreground colors to terminal reported values if
they have not yet been customized.
Bug#68486
* lisp/image/image-dired.el (image-dired-display-image): Refill
'image-dired-display-image-buffer' with image contents instead
of killing it.
* lisp/progmodes/csharp-mode.el (csharp-ts-mode--indent-rules):
Fix issue with incomplete try/catch statements when try_definition
is parsed, but catch_declaration is not yet parsed (shows in tree
as ERROR). (Bug#80029)
* src/window.c (Fwindow_cursor_info): New function.
(syms_of_window): Defsubr it.
* doc/lispref/windows.texi (Window Point): Document it.
* etc/NEWS: Announce new function. (Bug#80023)
* lisp/progmodes/python.el (python-shell-eval-file-setup-code):
For Python 3, use built-in open instead of codecs.open to address the
deprecation of codecs.open in Python 3.14. (Bug#79723)
In 'python-shell-completion-get-completions', since output from the
inferior Python is expected to be in JSON format, commands being echoed
back or warning messages being output caused parsing errors. We
improved this by re-parsing only the last line when a parsing error
occurs, preventing echo-back or warning messages from affecting parsing.
* lisp/progmodes/python.el
(python-shell-completion-get-completions): Improved to re-parse
only the last line when a JSON parse error occurs. (Bug#79723)
* lisp/frame.el (clone-frame): Set the frame parameter
'cloned-from'.
(undelete-frame): Set the frame parameter 'undeleted'.
* src/frame.c (syms_of_frame): <Qcloned_from> <Qundeleted>: New
DEFSYM.
(syms_of_frame): Add 'Qcloned_from' and 'Qundeleted' to
'frame_internal_parameters'.
* doc/lispref/frames.texi: Document these frame parameters.
* etc/NEWS: Announce the new frame parameters.
* lisp/window.el (display-buffer): Add docs for several missing actions:
- display-buffer-in-atom-window
- display-buffer-in-direction
- display-buffer-in-side-window
- display-buffer-reuse-mode-window
- display-buffer-use-some-frame
Re-arrange the actions into a less-arbitrary sequence.
Re-word some descriptions to use a more consistent phrasing.
Re-wrap some lines (based on the longest pre-existing line), to reduce
the line count.
Un-link the `pop-up-frames' symbol in the alist entry listing.
(display-buffer--action-function-custom-type): Add missing actions,
and re-order as above.
(display-buffer-reuse-mode-window): Tweak the docstring for better
consistency with other display actions.
* lisp/tab-bar.el (tab-bar--reusable-frames): Implement support for the
`reusable-frames' value 0, for better consistency with other buffer
display actions. (bug#80092)
* doc/lispref/windows.texi: Document the display actions
`display-buffer-in-tab' and `display-buffer-in-new-tab' and the
associated alist entries `tab-name' and `tab-group'.
* lisp/tab-bar.el (display-buffer-in-tab): Restructure docstring for
clarity. Describe the `reusable-frames' behaviour first (as if it finds
a frame with a suitable tab then the `tab-name' entry is not used).
(display-buffer-in-new-tab): Use consistent wording.
* lisp/window.el (display-buffer--action-function-custom-type): Add the
display actions as customize choices for user options.
(display-buffer): Document the display actions and alist entries.
* lisp/net/tramp.el (tramp-completion-handle-file-name-all-completions):
Keep `tramp-default-method{-alist}' in order to get completion
functions for `tramp-default-method-marker'.