* lisp/dired.el (dired-mark): Skip dot files (bug#38729). This
makes `C-u 10 d' (etc) consistent with marking the next ten lines
with the mouse and then hitting `d'.
* lisp/abbrev.el (abbrev--possibly-save): Separated out from
`save-some-buffers'.
(save-some-buffers-functions): Add to the save function.
* lisp/files.el (save-some-buffers-functions): New variable.
(save-some-buffers): Use it.
(save-buffers-kill-emacs): Also use it to see if we have something
to save (bug#55579).
Po Lu [Mon, 23 May 2022 03:13:45 +0000 (11:13 +0800)]
Implement monitor change functions on GNUstep
* src/nsfns.m (Fns_display_monitor_attributes_list): Fix coding
style.
* src/nsterm.m (nstrace_leave, nstrace_restore_global_trace_state)
(nstrace_fullscreen_type_name): Fix coding style.
(ns_displays_reconfigured, ns_term_init): Make a record of the
previous display attributes list and avoid storing duplicate
events.
([EmacsApp init]): Listen for
NSApplicationDidChangeScreenParametersNotification.
([EmacsApp updateMonitors:]): New method.
(syms_of_nsterm): New staticpro.
Po Lu [Mon, 23 May 2022 01:22:28 +0000 (09:22 +0800)]
Use GDK for handling monitor changes when built with GTK
* src/xterm.c (x_monitors_changed_cb): New function.
(handle_one_xevent): Don't handle RRNotify and
RRScreenChangeNotify on GTK.
(x_term_init): Connect to GdkScreen::monitors-changed instead of
selecting for RRNotify events.
(mark_xterm): Also mark `last_monitor_attributes_list' on GTK.
* src/xterm.h (struct x_display_info): Enable
`last_monitor_attributes_list' on GTK builds as well.
F. Jason Park [Fri, 6 May 2022 04:13:47 +0000 (21:13 -0700)]
Recognize DCC SSEND when receiving files in erc-dcc
* lips/erc/erc-dcc.el (erc-dcc-open-network-stream): Use TLS
for new connections when :secure flag is set.
(erc-dcc-do-GET-command): Set secure flag when user explicitly passes
an "-s" option.
(erc-dcc-do-LIST-command): Show an "s" to indicate a secure connection
when applicable.
(erc-dcc-query-handler-alist): Add extra items for "SSEND", etc.
(erc-dcc-handle-ctcp-send): Set secure flag when a leading "S" appears
in the command type.
F. Jason Park [Sat, 30 Apr 2022 09:16:46 +0000 (02:16 -0700)]
Accommodate nonstandard turbo file senders in erc-dcc
* lisp/erc/erc-dcc.el (erc-dcc-list): Document optional :turbo item.
(erc-message-english-dcc-list-{head,line,item}): Adjust format strings
to make room for "(T)" turbo indicator.
(erc-dcc-do-GET-command): Optionally set :turbo in `erc-dcc-list'
entry when passed "-t" in the "/DCC GET" slash command. Also add
switch to command line in front-matter Commentary, but refrain from
publicizing further because our implementation is only defensive and
only for receiving.
(erc-dcc-do-LIST): Print message with new format specifier for turbo
status.
(erc-dcc-ctcp-query-send-regexp): Account for T- and S-prefixed
commands. Receiving from an SSEND-capable sender will be added in a
subsequent commit.
(erc-dcc-handle-ctcp-send): Set :turbo item in `erc-dcc-list' member
when new match group is nonempty.
(erc-dcc--X-send-final-turbo-ack): New internal variable and potential
future option for extreme corner cases involving maverick turbo
senders, like WeeChat, who don't use the TSEND command variant.
(erc-dcc-get-filter): Don't send when turbo is active.
* test/lisp/erc/erc-dcc-tests.el: Add new file.
(Bug#54458)
F. Jason Park [Sun, 10 Apr 2022 06:32:22 +0000 (23:32 -0700)]
Allow matching against string values in erc-dcc-member
* lisp/erc/erc-dcc.el (erc-dcc-member): Be more tolerant in the
catch-all case by testing for equality instead of identity.
(erc-dcc-do-GET-command): Pass file name when querying
`erc-dcc-member'. (Bug#54458)
F. Jason Park [Thu, 31 Mar 2022 00:16:11 +0000 (17:16 -0700)]
Summarize failed transfers in erc-dcc
* lisp/erc/erc-dcc.el (erc-dcc-get-sentinel): Display error when total
byte count received is lower than expected.
(erc-message-english-dcc-get-failed): Add `dcc-get-failed' to the
English messages catalog.
(erc-dcc-get-file): Tweak initialization of `erc-dcc-entry-data'.
(Bug#54458)
Juri Linkov [Sun, 22 May 2022 17:55:35 +0000 (20:55 +0300)]
Enable keys M-down, M-up, M-RET for in-buffer completion
* lisp/minibuffer.el (completion-in-region-mode-map): Add keybindings M-<up>
for minibuffer-previous-completion, M-<down> for minibuffer-next-completion,
M-RET for minibuffer-choose-completion.
(completion-in-region-mode): Set buffer-local
'minibuffer-completion-auto-choose' to nil.
(minibuffer-next-completion): Get the value of
'minibuffer-completion-auto-choose' from the minibuffer.
(minibuffer-previous-completion): Simplify by delegating to
'minibuffer-next-completion'.
Alan Mackenzie [Sun, 22 May 2022 16:55:05 +0000 (16:55 +0000)]
CC Mode: Restore string fence properties at each relevant external entry point
This fixes bug #55230.
* lisp/progmodes/cc-defs.el (c-string-fences-set-flag, c-with-string-fences):
New variable and macro.
* lisp/progmodes/cc-mode.el (c-called-from-text-property-change-p): Add
remove-text-properties to the list of accepted functions.
(c-clear-string-fences, c-restore-string-fences): Surround the functions'
innards with c-save-buffer-state to prevent text property changes causing
change functions to be called.
(c-before-change, c-after-change, c-font-lock-fontify-region): Replace the
explicit calls to c-restore-string-fences and c-clear-string-fences with
invocations of the new macro c-with-string-fences.
* lisp/progmodes/cc-awk.el (c-awk-extend-and-syntax-tablify-region)
(c-awk-end-of-defun)
* lisp/progmodes/cc-cmds.el (c-show-syntactic-information)
(c-electric-backspace, c-hungry-delete-backwards, c-electric-delete-forward)
(c-hungry-delete-forward, c-electric-pound, c-electric-brace)
(c-electric-slash, c-electric-star, c-electric-semi&comma, c-electric-colon)
(c-electric-lt-gt, c-electric-paren, c-beginning-of-defun, c-end-of-defun)
(c-display-defun-name, c-mark-function, c-beginning-of-statement)
(c-end-of-statement, c-indent-command, c-indent-exp, c-indent-defun)
(c-indent-line-or-region, c-fill-paragraph, c-indent-new-comment-line)
(c-context-line-break)
* lisp/progmodes/cc-guess.el (c-guess-region-no-install): These are all
"boundary" functions to CC Mode. Surround each by c-with-string-fences.
Stefan Monnier [Sun, 22 May 2022 16:21:23 +0000 (12:21 -0400)]
wisent.el: Prefer `define-mode-local-override`
* lisp/cedet/semantic/wisent.el (wisent--parse-stream): Rename from
`wisent-parse-stream` and mark the old name obsolete.
(semantic-parse-stream): Override with `define-mode-local-override`.
* lisp/cedet/semantic/wisent/grammar.el
(semantic-grammar-setupcode-builder): Don't override
`semantic-parse-stream` manually here via
`semantic-install-function-overrides`.
* lisp/cedet/semantic/wisent/grammar.el
(semantic-grammar-parsetable-builder, semantic-grammar-setupcode-builder):
Override with `define-mode-local-override`.
(wisent-grammar-mode): Don't override them with
`semantic-install-function-overrides`.
* lisp/cedet/semantic/bovine/grammar.el
(semantic-grammar-parsetable-builder, semantic-grammar-setupcode-builder):
Override with `define-mode-local-override`.
(bovine-grammar-mode): Don't override them with
`semantic-install-function-overrides`.
* lisp/cedet/semantic/texi.el (semantic-parse-region)
(semantic-parse-changes): Override with `define-mode-local-override`.
(semantic-default-texi-setup): Don't override them with
`semantic-install-function-overrides`.
Po Lu [Sun, 22 May 2022 12:22:44 +0000 (12:22 +0000)]
Clean up Haiku code
* src/haiku_support.cc (movement_locker, class EmacsWindow)
(MouseMoved): Delete `movement_locker' and associated hack,
since it's superseeded by some code in haiku_read_socket.
(key_map, key_chars, dpy_color_space, popup_track_message)
(alert_popup_value, grab_view, grab_view_locker)
(drag_and_drop_in_progress): Write comments and fix
initializers.
Damien Cassou [Sun, 22 May 2022 06:32:38 +0000 (08:32 +0200)]
Fix submit-emacs-patch
submit-emacs-patch creates a new message and immediately inserts new
lines without first moving the point to the message body. This
doesn't work with notmuch (and its notmuch-user-agent symbol) because
the point starts in the headers and nothing in Emacs specifies that
the mua should move point to the body automatically.
* lisp/mail/emacsbug.el (submit-emacs-patch): Make sure point is in
the body before inserting new lines (bug#55571).
Lele Gaifax [Sun, 22 May 2022 08:44:31 +0000 (10:44 +0200)]
Properly indent Python PEP634 match/case blocks
Python 3.10 introduced the "structural pattern matching" syntax, and
commit 139042eb8629e6fd49b2c3002a8fc4d1aabd174d told font-lock about the
new keywords. This adds them also as block-start statements, to enable
proper indentation of such blocks.
* lisp/progmodes/python.el (python-rx): Add "match" and "case" as
block-start keywords.
* test/lisp/progmodes/python-tests.el (python-indent-after-match-block,
python-indent-after-case-block): New tests to verify indentation of
"match" and "case" blocks (bug#55572).
* lisp/language/philippine.el ("Tagalog"): New language environment.
Add composition rules for Tagalog. Add sample text and input
method.
* lisp/international/fontset.el (script-representative-chars)
(setup-default-fontset): Support Tagalog.
* lisp/leim/quail/philippine.el ("tagalog"): New input method.
* lisp/loadup.el: Preload lisp/language/philippine.el.
* etc/HELLO: Add a Tagalog greeting.
* etc/NEWS: Announce the new language environment and its
input method.
(Bug#55529)
Po Lu [Sun, 22 May 2022 03:02:24 +0000 (11:02 +0800)]
Fix compiler warnings on Mac OS X 10.12
* configure.ac: Check for Mac OS X 12 and link with
UniformTypeIdentifiers.framework.
* src/nsfns.m (IOMasterPort): Define to `IOMainPort' on Mac OS X
12.
(ns_implicitly_set_icon_type, Fns_read_file_name):
* src/nsxwidget.m: ([XwWebView
initWithFrame:configuration:xwidget:]): Fix uses of obsolete
things.
Po Lu [Sun, 22 May 2022 01:27:46 +0000 (09:27 +0800)]
Don't unnecessarily call monitor change functions
* src/xterm.c (handle_one_xevent): If monitor attributes didn't
change, don't send monitor change event.
(x_term_init, mark_xterm): Mark and init new field.
* src/xterm.h (struct x_display_info): New field
`last_monitor_attributes_list'.
Eli Zaretskii [Sat, 21 May 2022 13:55:15 +0000 (16:55 +0300)]
; Rename enable-theme and disable-theme hooks
* lisp/custom.el (enable-theme-functions)
(disable-theme-functions): Rename from enable-theme-hook and
disable-theme-hook. All users changed. (Bug#37802)
Michael Albinus [Sat, 21 May 2022 13:44:22 +0000 (15:44 +0200)]
Some cleanups in tramp-tests.el
* test/lisp/net/tramp-tests.el (tramp-fuse-remove-hidden-files): Declare.
(tramp-test16-directory-files)
(tramp-test16-file-expand-wildcards)
(tramp-test26-file-name-completion, tramp--test-check-files): Use it.
(tramp--test-check-files): Delete directory recursively.
(tramp-test43-file-system-info): Make test more robust.
Tino Calancha [Sat, 21 May 2022 09:23:17 +0000 (11:23 +0200)]
zap-to-char: case sensitive for upper-case characters
In interactive calls, behave case-sensitively if the given char
is an upper-case character. Same for zap-up-to-char (Bug#54804).
This is analog to what the user-level incremental search feature does.
* lisp/misc.el (zap-up-to-char): Add an optional arg INTERACTIVE.
Perform a case-sensitive search when INTERACTIVE is non-nil and
CHAR is an upper-case character.
* lisp/simple.el (zap-to-char): Same.
* etc/NEWS (Editing Changes in Emacs 29.1): Announce this change.
* test/lisp/misc-tests.el (misc-test-zap-up-to-char): Add test cases.
* test/lisp/simple-tests.el (with-zap-to-char-test): Add helper macro.
(simple-tests-zap-to-char): Add a test.
Po Lu [Sat, 21 May 2022 06:46:57 +0000 (14:46 +0800)]
Fix compiler warnings in printer code on 32-bit systems
* print.c (enum print_entry_type, struct print_stack_entry):
Clean up coding style.
(struct print_stack): Make print_stack_entry.list.idx intmax_t,
like it was before the nonrecursive printing was installed.
Also clarify what "Brent cycle detection" means in the comments.
Po Lu [Sat, 21 May 2022 06:28:06 +0000 (06:28 +0000)]
Compute frame workareas on Haiku
* lisp/frame.el (display-monitor-attributes-list): Implement
specially on Haiku as well.
* src/haiku_support.cc (get_zoom_rect): New function. Extract
CalculateZoomRect here.
(class EmacsWindow, SetFullscreen): Use that instead of
CalculateZoomRect.
(be_get_explicit_workarea): New function.
* src/haiku_support.h: Update prototypes.
* src/haikufns.c (Fhaiku_display_monitor_attributes_list): New
function.
(syms_of_haikufns): Register new subr.
Po Lu [Sat, 21 May 2022 03:29:22 +0000 (11:29 +0800)]
Implement `display-monitors-changed-hook' on PGTK
* src/pgtkterm.c (pgtk_draw_glyphless_glyph_string_foreground):
Pacify GCC 12.
(pgtk_monitors_changed_cb): New function.
(pgtk_term_init): Attach new signal handler.
Add new user option display-buffer-avoid-small-windows
* doc/lispref/windows.texi (Choosing Window Options): Document it.
* lisp/window.el (display-buffer-avoid-small-windows): New user
option (bug#10186).
(get-lru-window): Use it.
Po Lu [Fri, 20 May 2022 05:34:04 +0000 (05:34 +0000)]
Remove flickering when toggling between different fullscreen states on Haiku
* src/haiku_support.cc (FrameMoved): Don't allow moving the
frame along the "filled" axis when fullwidth or fullheight.
(ClearFullscreen): New argument `mode'. Return the previous
rect but don't revert the frame to it if the target mode is not
NONE.
(SetFullscreen): Use rect provided by ClearFullscreen instead.
Po Lu [Fri, 20 May 2022 03:21:47 +0000 (11:21 +0800)]
Minor cleanups to X drag-and-drop code
* src/xterm.c (struct x_client_list_window): Write comments
describing the meaning of each field.
(XM_DRAG_PROTOCOL_VERSION, xm_setup_dnd_targets)
(xm_setup_drag_info, xm_read_drag_receiver_info)
(x_dnd_compute_toplevels): Don't hard-code the supported Motif
protocol version.
* lisp/emacs-lisp/lisp-mode.el (lisp--el-funcall-position-p):
Don't colorize the `function' in (defun foo (function ...)) as a
special form (bug#37074).
Make completion in emacs-lisp-mode intern fewer symbols
* lisp/progmodes/elisp-mode.el (elisp-completion-at-point): Don't
intern the string before point just to check whether we're looking
at `ignore-error' (bug#55491).
Due to "The Orissa (Alteration of Name) Act, 2011"
(https://legislative.gov.in/sites/default/files/A2011-15.pdf)
Oriya has been renamed to Odia.
* lisp/language/indian.el (set-language-info-alist): Rename
Oriya to Odia. Improve Oriya composition rules.
* lisp/leim/quail/indian.el ("odia"): New input method.
* lisp/erc/erc-lang.el: Obsolete the iso-638-languages variable
(which was a typo) and replace it with iso-639-1-languages.
* etc/HELLO: Rename Oriya to Odia.
Replace the old Odia greeting with the new one.
Add a Hindi greeting separate from the Devanagari one.
(Bug#55493)
Po Lu [Thu, 19 May 2022 12:10:19 +0000 (20:10 +0800)]
Whitelist some incorrectly labeled "color" fonts under Xft
* etc/PROBLEMS: Document problem with fonts incorrectly labeled
as color fonts under Xft.
* src/ftfont.c (xft_color_font_whitelisted_p): New function.
(ftfont_spec_pattern, ftfont_list): Respect whitelisting of
"color" fonts under Xft.
* src/xftfont.c (syms_of_xftfont): New variable
`xft-color-font-whitelist'.