]> git.eshelyaron.com Git - emacs.git/log
emacs.git
17 months agoImprove word selection behavior
Po Lu [Mon, 17 Jul 2023 04:58:29 +0000 (12:58 +0800)]
Improve word selection behavior

* lisp/tab-bar.el (tab-bar-map): Don't bind touch-screen-drag.
* lisp/touch-screen.el (touch-screen-drag): Extend the region
based on the position of the mark, not the position of point
relative to EVENT.
(touch-screen-translate-touch): Don't generate virtual function
keys for non-mouse events.
(function-key-map): Remove redundant definitions.
* src/keyboard.c (read_key_sequence): Don't generate *-bar
prefix keys for mock input (such as input from function key
translation.)

17 months agoImprove touch screen support
Po Lu [Mon, 17 Jul 2023 01:46:37 +0000 (09:46 +0800)]
Improve touch screen support

* doc/emacs/input.texi (Touchscreens): Document the new feature
for people who have trouble dragging to word boundaries.
* lisp/touch-screen.el (touch-screen-word-select): New
defcustom.
(touch-screen-word-select-bounds)
(touch-screen-word-select-initial-word): New variable
definitions.
(touch-screen-hold): If `touch-screen-word-select', select the
word around EVENT.
(touch-screen-drag): If `touch-screen-word-select', extend the
region to the next word boundary if the character under point
constitutes a word.
(touch-screen-handle-point-update, touch-screen-handle-touch)
(touch-screen-translate-touch): Fix doc strings and fill
comments.

17 months agoMerge remote-tracking branch 'origin/master' into feature/android
Po Lu [Sun, 16 Jul 2023 23:29:11 +0000 (07:29 +0800)]
Merge remote-tracking branch 'origin/master' into feature/android

17 months agoUpdate Android port
Po Lu [Sun, 16 Jul 2023 12:10:18 +0000 (20:10 +0800)]
Update Android port

* java/org/gnu/emacs/EmacsService.java (displayToast):
* src/android.c (android_init_emacs_service): Remove unused
function.
* lisp/touch-screen.el (touch-screen-handle-point-up): Correctly
compute posn point.
(touch-screen-translate-touch): Update doc string.
(function-key-map): Define touch screen translation functions
within the internal border.

17 months agoUpdate Android port
Po Lu [Sun, 16 Jul 2023 09:29:58 +0000 (17:29 +0800)]
Update Android port

* doc/lispref/commands.texi (Touchscreen Events): Improve
documentation.
* lisp/tab-bar.el (tab-bar-map): Bind `[tab-bar
touchscreen-hold]'.
* lisp/touch-screen.el (touch-screen-hold, touch-screen-drag):
New functions.
(touch-screen-handle-timeout): Generate a `touchscreen-hold'
event instead.
(touch-screen-handle-point-update): Generate a
`touchscreen-drag' event upon dragging.
(touch-screen-translate-touch): Cancel touch screen timer upon
exit.
* src/keyboard.c (access_keymap_keyremap): Take unsigned int
start and end instead.

17 months agoFix Wdired with relative and abbreviated file names
Eli Zaretskii [Sun, 16 Jul 2023 09:15:24 +0000 (12:15 +0300)]
Fix Wdired with relative and abbreviated file names

* lisp/wdired.el (wdired-finish-edit): Support Dired buffers where
'dired-directory' is a list made of relative or abbreviated file
names.  (Bug#64606)

17 months agoImprove touch-screen support
Po Lu [Sun, 16 Jul 2023 07:30:01 +0000 (15:30 +0800)]
Improve touch-screen support

* doc/emacs/emacs.texi (Top):
* doc/emacs/input.texi (Other Input Devices): Correctly
capitalize subsection name.
(Touchscreens): Document additional translation.
* doc/lispref/commands.texi (Touchscreen Events): Document that
`touchscreen-end' events now have prefix keys.  Also, describe
mouse emulation and `touchscreen-scroll' events.
* doc/lispref/keymaps.texi (Translation Keymaps): Document
`current-key-remap-sequence'.
* lisp/touch-screen.el (touch-screen-translate-prompt): New
function.
(touch-screen-scroll): New command.  Bind to
`touchscreen-scroll'.
(touch-screen-handle-point-update, touch-screen-handle-point-up)
(touch-screen-handle-touch): Refactor to actually translate
touch screen event sequences, as opposed to looking up commands
and executing them.
(touch-screen-translate-touch): New function.  Bind in
function-key-map to all touch screen events.
(touch-screen-drag-mode-line-1, touch-screen-drag-mode-line)
(touch-screen-tap-header-line): Remove special commands for
dragging the mode line and clicking on the header line.
* lisp/wid-edit.el (widget-button-click): Adjust accordingly.
* src/keyboard.c (access_keymap_keyremap): Bind
`current-key-remap-sequence' to the key sequence being remapped.
(keyremap_step): Give fkey->start and fkey->end to
access_keymap_keyremap.
(head_table): Add imaginary prefix to touchscreen-end events as
well.
(syms_of_keyboard): New variable Vcurrent_key_remap_sequence.

17 months agoMerge remote-tracking branch 'origin/master' into feature/android
Po Lu [Sun, 16 Jul 2023 00:18:13 +0000 (08:18 +0800)]
Merge remote-tracking branch 'origin/master' into feature/android

17 months agoMerge from origin/emacs-29
Eli Zaretskii [Sat, 15 Jul 2023 19:11:43 +0000 (15:11 -0400)]
Merge from origin/emacs-29

16f3a09e8db ; * lisp/simple.el (kill-new): Fix a typo.  (Bug#64423)
d78e670237b ; * src/lisp.h: Improve commentary for XIL, XLI, XLP (bug...

17 months ago; * lisp/simple.el (kill-new): Fix a typo. (Bug#64423)
Eli Zaretskii [Sat, 15 Jul 2023 19:08:52 +0000 (22:08 +0300)]
; * lisp/simple.el (kill-new): Fix a typo.  (Bug#64423)

17 months agosgml-mode.el: Cosmetic fixes
Stefan Monnier [Sat, 15 Jul 2023 15:41:32 +0000 (11:41 -0400)]
sgml-mode.el: Cosmetic fixes

* lisp/textmodes/sgml-mode.el: Prefer #' to quote function names.
(sgml-font-lock-keywords-1, sgml-font-lock-syntactic-face):
Refer to font-lock faces rather than their variables.
(sgml-mode-facemenu-add-face-function): Remove redundant arg to `mapconcat`.
(sgml-electric-tag-pair-before-change-function): Remove left-over
debugging messages (bug#64636).

17 months ago; * src/lisp.h: Improve commentary for XIL, XLI, XLP (bug#64645).
Eli Zaretskii [Sat, 15 Jul 2023 10:04:41 +0000 (13:04 +0300)]
; * src/lisp.h: Improve commentary for XIL, XLI, XLP (bug#64645).

17 months ago; * src/comp.c (CALL0I): Ifdef away, as it's now unused.
Eli Zaretskii [Sat, 15 Jul 2023 09:49:09 +0000 (12:49 +0300)]
; * src/comp.c (CALL0I): Ifdef away, as it's now unused.

17 months agoMerge from origin/emacs-29
Eli Zaretskii [Sat, 15 Jul 2023 09:30:28 +0000 (05:30 -0400)]
Merge from origin/emacs-29

d09de2f49d7 Ignore quit while getting interprogram paste in kill-new
afdf54a5313 * lisp/progmodes/gdb-mi.el: Fix interactive invocation of...
b54febef5d7 Fix NetBSD build with and without ncurses
c5fb7301599 ; * lisp/paren.el (show-paren-function): Fix last change ...
ea696ea4b9a ; Fix last change.
b0181dafb9e Improve documentation of 'enable-local-variables' in Emac...
eb7c45ca43f ; Fix copy-paste in Widget Manual (Bug#64610)
aedbc3006e1 ; * doc/misc/eshell.texi (Aliases): Remove stray "@end ta...
673992d28e2 ; * lisp/progmodes/sql.el (sql-interactive-mode): Remove ...

17 months ago; Merge from origin/emacs-29
Eli Zaretskii [Sat, 15 Jul 2023 09:30:28 +0000 (05:30 -0400)]
; Merge from origin/emacs-29

The following commits were skipped:

6a360b08405 ; * doc/misc/eshell.texi (Variables): Add missing index f...
f529bf52eb5 ; * doc/misc/eshell.texi (Invocation): Whitespace cleanup.
3a703545798 Add documentation about remote access in Eshell
7640835ae03 ; * doc/misc/eshell.texi: Fix last change.
e79306fb467 ; * doc/misc/eshell.texi: Fix typos and clean up unclear ...
9f6d79dd967 Document some missing Eshell commands
951671b0e10 Document optional Eshell modules
7c417b2ae55 Correct the Eshell documentation about how to write new m...
6c3fe42bde1 Restructure Eshell extension modules documentation
4e204b56186 ; * doc/misc/eshell.texi (Bugs and ideas): Remove impleme...

17 months agoMerge from origin/emacs-29
Eli Zaretskii [Sat, 15 Jul 2023 09:30:14 +0000 (05:30 -0400)]
Merge from origin/emacs-29

7ac947f34c7 ; * src/lisp.h (struct Lisp_Overlay): Update commentary (...
9bc93c7996c Replace duplicate text from epa.texi by a reference
74cc1d27f1f Add basic usage information and fix references
f24bdbfaf57 Add concept index, title-case structure titles
0165b50b0ff ; * lisp/emacs-lisp/lisp.el (raise-sexp): Fix typo in doc...
4cf33b6bd02 ; * doc/misc/modus-themes.org: Fix whitespace (bug#64548).
4821da1ad7f Fix show-paren-mode when the parentheses is partially vis...
419b4d44914 ; Improve documentation of with-restriction
be34e8294af ; * admin/git-bisect-start: Update failing commits
8e06809fccd Merge branch 'scratch/bug64391' into emacs-29
dbac8076057 * lisp/net/tramp.el (tramp-get-buffer-string): Stabilize.
01fb898420f Simplify after adding internal function to enter a labele...
b741dc7fcde Add internal function to enter a labeled restriction

# Conflicts:
# doc/misc/modus-themes.org

17 months ago; Merge from origin/emacs-29
Eli Zaretskii [Sat, 15 Jul 2023 09:28:16 +0000 (05:28 -0400)]
; Merge from origin/emacs-29

The following commit was skipped:

a82486e5a4e Fix stale cache in Tramp (don't merge)

17 months agoMerge from origin/emacs-29
Eli Zaretskii [Sat, 15 Jul 2023 09:28:16 +0000 (05:28 -0400)]
Merge from origin/emacs-29

01fb898420f Simplify after adding internal function to enter a labele...
b741dc7fcde Add internal function to enter a labeled restriction

17 months agoIgnore quit while getting interprogram paste in kill-new
Spencer Baugh [Sat, 8 Jul 2023 16:36:22 +0000 (12:36 -0400)]
Ignore quit while getting interprogram paste in kill-new

On X, if the current selection owner is not responding to selection
requests, the user may want to take ownership of the selection.  The
obvious way to do this is to kill some text (which a user might also
be doing just as part of normal editing at the time the selection
owner becomes nonresponsive).  However, if
save-interprogram-paste-before-kill is non-nil, then killing text will
hang until the user quits, and this quit will abort the entire
kill-new, preventing the user from taking ownership of the selection.

Now instead if the user quits while we are attempting to retrieve the
selection from hanging owner, we will proceed to take ownership of the
selection as normal, resolving the problem.

(One example of a selction owner that might not be responding to
selection requests is another instance of Emacs itself; while Emacs is
blocked in call-process or Lisp execution, it currently does not
respond to selection requests.)

* lisp/simple.el (kill-new): Ignore quit while getting interprogram
paste (bug#64423)

17 months ago* lisp/progmodes/gdb-mi.el: Fix interactive invocation of 'gud-go'.
Wang Diancheng [Fri, 14 Jul 2023 03:06:32 +0000 (11:06 +0800)]
* lisp/progmodes/gdb-mi.el: Fix interactive invocation of 'gud-go'.

Bug#64590.

Copyright-paperwork-exempt: yes

17 months agoFix "Improve Python imports management commands"
Matthias Meulien [Thu, 13 Jul 2023 20:47:01 +0000 (22:47 +0200)]
Fix "Improve Python imports management commands"

* lisp/progmodes/python.el (python--list-imports): Prefer to
use an exit status >1.
(python--list-imports-check-status): New function to check
status of Python script.
(python--do-isort): Fix wrong status check introduced with
6295d7abdd4.  (Bug#64406)

17 months agoFix NetBSD build with and without ncurses
Valtteri Vuorikoski [Thu, 13 Jul 2023 09:35:51 +0000 (12:35 +0300)]
Fix NetBSD build with and without ncurses

* configure.ac (netbsd): Don't set TERMINFO=no unless the termcap
library is either -ltermcap or -lcurses.  This prevents aborts
because on recent versions of NetBSD libtermcap is actually a
symlink to libterminfo. (Bug#64577)

Copyright-paperwork-exempt: yes

17 months ago; Fix last change (bug#64533)
Spencer Baugh [Sun, 9 Jul 2023 16:16:28 +0000 (12:16 -0400)]
; Fix last change (bug#64533)

* lisp/progmodes/which-func.el (which-func-display): Fix quoting
in the doc string.

* etc/NEWS: Announce 'which-func-display'.

17 months agoSupport displaying function name in the header line
Spencer Baugh [Sun, 9 Jul 2023 16:16:28 +0000 (12:16 -0400)]
Support displaying function name in the header line

In some languages, the function name as displayed in the mode-line by
which-func-mode can be quite long.  It's useful to be able to display
it in the header-line instead.  Let's support that.

* lisp/progmodes/which-func.el (which-func-display)
(which-func--use-header-line, which-func--use-mode-line):
Add. (Bug#64533)
(which-func-try-to-enable): Support 'which-func--use-header-line'.
(which-func--disable): Add, to support 'which-func--use-header-line'.
(which-func-ff-hook, which-func-update-1): Use 'which-func--disable'.

17 months agoShow SHA-256 digest of a public key in 'nsm-format-certificate'
Łukasz Stelmach [Tue, 13 Jun 2023 11:26:39 +0000 (13:26 +0200)]
Show SHA-256 digest of a public key in 'nsm-format-certificate'

* lisp/net/nsm.el (nsm-format-certificate): Show public key
digest (SHA-256 if available).  Displaying the digest enables
users to verify the certificate with other tools like 'gnutls-cli'
which present much more detailed information.

* src/gnutls (emacs_gnutls_certificate_details): Export SHA-256
public key digest if supported by GnuTLS.  (Bug#64043)

17 months ago; * lisp/paren.el (show-paren-function): Fix last change (bug#64547).
Eli Zaretskii [Sat, 15 Jul 2023 07:21:07 +0000 (10:21 +0300)]
; * lisp/paren.el (show-paren-function): Fix last change (bug#64547).

17 months agoUpdate Android port
Po Lu [Sat, 15 Jul 2023 01:53:22 +0000 (09:53 +0800)]
Update Android port

* doc/emacs/android.texi (Android): Add new node to menu.
(Android Environment): Add footnote pointing to new node.
(Android Software): New node.
* doc/emacs/emacs.texi (Top): Add new node to menu.
* java/AndroidManifest.xml.in (manifest): Fix location of
sharedUserId property.
* java/INSTALL: Improve documentation of shared user ID
support.

17 months agoMerge remote-tracking branch 'origin/master' into feature/android
Po Lu [Fri, 14 Jul 2023 23:54:24 +0000 (07:54 +0800)]
Merge remote-tracking branch 'origin/master' into feature/android

17 months ago; Fix last change.
Eli Zaretskii [Fri, 14 Jul 2023 17:33:29 +0000 (20:33 +0300)]
; Fix last change.

17 months agoImprove documentation of 'enable-local-variables' in Emacs manual
YugaEgo [Fri, 14 Jul 2023 15:49:36 +0000 (18:49 +0300)]
Improve documentation of 'enable-local-variables' in Emacs manual

* doc/emacs/custom.texi (Safe File Variables): Document ':all'.
(Bug#64621)

17 months ago; * lisp/vc/ediff-wind.el: hush bytecomp warnings on non-X platforms
Mattias Engdegård [Fri, 14 Jul 2023 16:47:08 +0000 (18:47 +0200)]
; * lisp/vc/ediff-wind.el: hush bytecomp warnings on non-X platforms

17 months agoProvide backtrace for byte-ops car, cdr, setcar, setcdr, nth and elt
Mattias Engdegård [Fri, 14 Jul 2023 16:05:32 +0000 (18:05 +0200)]
Provide backtrace for byte-ops car, cdr, setcar, setcdr, nth and elt

Include calls to these primitives from byte-compiled code in
backtraces.  For nth and elt, not all errors are covered.
(Bug#64613)

* src/bytecode.c (exec_byte_code): Add error backtrace records for
car, cdr, setcar, setcdr, nth and elt.
* src/data.c (syms_of_data): Add missing defsyms for car, setcar,
setcdr, nth and elt.
* test/lisp/emacs-lisp/bytecomp-tests.el
(bytecomp-tests--error-frame, bytecomp-tests--byte-op-error-cases)
(bytecomp--byte-op-error-backtrace): New test.

17 months agoMake --with-shared-user-id work
Po Lu [Fri, 14 Jul 2023 12:30:30 +0000 (20:30 +0800)]
Make --with-shared-user-id work

* configure.ac (ANDROID_SHARED_USER_NAME): New variable.
Substitute it.
* java/AndroidManifest.xml.in: Set `sharedUserLabel' if a shared
user ID is enabled.
* java/res/values/strings.xml (shared_user_name): New string
resource.

17 months ago; Fix copy-paste in Widget Manual (Bug#64610)
Mauro Aranda [Fri, 14 Jul 2023 10:41:58 +0000 (07:41 -0300)]
; Fix copy-paste in Widget Manual (Bug#64610)

17 months agoUpdate Android port
Po Lu [Fri, 14 Jul 2023 07:35:58 +0000 (15:35 +0800)]
Update Android port

* src/android.c (android_blit_copy): Don't check for overflow
where not required.

17 months agoMerge remote-tracking branch 'origin/master' into feature/android
Po Lu [Fri, 14 Jul 2023 07:35:21 +0000 (15:35 +0800)]
Merge remote-tracking branch 'origin/master' into feature/android

17 months agoFix misreporting of window top line
Po Lu [Fri, 14 Jul 2023 07:33:48 +0000 (15:33 +0800)]
Fix misreporting of window top line

* src/frame.h (FRAME_TOOL_BAR_TOP_LINES): Return tool_bar_lines,
not tool_bar_height.

17 months agoReorder NaN, INF paras
Paul Eggert [Fri, 14 Jul 2023 06:55:50 +0000 (23:55 -0700)]
Reorder NaN, INF paras

* doc/lispref/numbers.texi (Float Basics):
Reorder paragraphs so that examples follow defns.

17 months agoImprove doc for VAX reading NaN, INF
Paul Eggert [Fri, 14 Jul 2023 06:36:33 +0000 (23:36 -0700)]
Improve doc for VAX reading NaN, INF

* doc/lispref/numbers.texi (Float Basics): Improve description of
how Lisp reads infinities and NaNs on a VAX.

17 months ago; * doc/misc/eshell.texi (Aliases): Remove stray "@end table".
Eli Zaretskii [Fri, 14 Jul 2023 05:32:57 +0000 (08:32 +0300)]
; * doc/misc/eshell.texi (Aliases): Remove stray "@end table".

17 months ago; * lisp/progmodes/sql.el (sql-interactive-mode): Remove FIXME (bug#64602).
YugaEgo [Thu, 13 Jul 2023 19:50:27 +0000 (22:50 +0300)]
; * lisp/progmodes/sql.el (sql-interactive-mode): Remove FIXME (bug#64602).

17 months agocl-print: Allow expanding the contents of hash-tables
Stefan Monnier [Fri, 14 Jul 2023 02:26:19 +0000 (22:26 -0400)]
cl-print: Allow expanding the contents of hash-tables

* lisp/emacs-lisp/cl-print.el (cl-print-object) <hash-table>:
Add an ellipsis.
(cl-print-object-contents) <hash-table>: New method.

17 months ago; * doc/misc/eshell.texi (Variables): Add missing index for $INSIDE_EMACS
Jim Porter [Thu, 13 Jul 2023 16:10:57 +0000 (09:10 -0700)]
; * doc/misc/eshell.texi (Variables): Add missing index for $INSIDE_EMACS

Do not merge to master.  On master, this was fixed by 0bb8a011d57.

17 months ago; * doc/misc/eshell.texi (Invocation): Whitespace cleanup.
Michael Albinus [Tue, 11 Jul 2023 10:18:31 +0000 (12:18 +0200)]
; * doc/misc/eshell.texi (Invocation): Whitespace cleanup.

Do not merge to master.  This is a backport of 04710bd01b2.

17 months agoAdd documentation about remote access in Eshell
Jim Porter [Sun, 9 Jul 2023 19:04:01 +0000 (12:04 -0700)]
Add documentation about remote access in Eshell

Do not merge to master.  This is a backport of 438921161ac.

* doc/misc/eshell.texi
(Invocation): Mention the '*' prefix.
(Remote Access): New section...
(Commands): ... link to it.

17 months ago; * doc/misc/eshell.texi: Fix last change.
Jim Porter [Sat, 8 Jul 2023 19:13:22 +0000 (12:13 -0700)]
; * doc/misc/eshell.texi: Fix last change.

Do not merge to master.  This is a backport of 8c5fef4eb30.

17 months ago; * doc/misc/eshell.texi: Fix typos and clean up unclear wording.
Jim Porter [Sat, 8 Jul 2023 01:19:08 +0000 (18:19 -0700)]
; * doc/misc/eshell.texi: Fix typos and clean up unclear wording.

Do not merge to master.  This is a backport of 118582efb30.

17 months agoDocument some missing Eshell commands
Jim Porter [Sat, 8 Jul 2023 00:30:26 +0000 (17:30 -0700)]
Document some missing Eshell commands

Do not merge to master.  This is a backport of f7a899d7ca0.

* doc/misc/eshell.texi (Built-ins): Document 'eshell-debug'.
(Extra built-in commands): Document 'count', 'ff', and 'gf'.

17 months agoDocument optional Eshell modules
Jim Porter [Sat, 13 May 2023 03:03:48 +0000 (20:03 -0700)]
Document optional Eshell modules

Do not merge to master.  This is a backport of 77f13edab0f.

* doc/misc/eshell.texi (Built-ins): Move disabled-by-default commands
to...
(Tramp extensions, Extra built-in commands): ...here
(Optional modules, Key rebinding, Smart scrolling): Add documentation.
(Bug and ideas): Documentation is no longer incomplete!

17 months agoCorrect the Eshell documentation about how to write new modules
Jim Porter [Sat, 13 May 2023 03:11:01 +0000 (20:11 -0700)]
Correct the Eshell documentation about how to write new modules

* doc/misc/eshell.texi (Writing a module): Fix the documentation.
'eshell-defgroup' doesn't exist anymore.

Do not merge to master.  This is a backport of 77f13edab0f.

17 months agoRestructure Eshell extension modules documentation
Jim Porter [Mon, 30 Jan 2023 03:59:56 +0000 (19:59 -0800)]
Restructure Eshell extension modules documentation

This adds a section for documenting all the optional modules.

Do not merge to master.  This is a backport of f2981a1681d.

* doc/misc/eshell.texi (Extension modules): Move explanation about
writing modules to...
(Writing a module): ... here.
(Module testing): Remove.  Testing an Eshell module doesn't require
any special documentation.
(Key binding, Smart scrolling, Electric forward slash): Move under...
(Optional modules): ... here.
(Directory handling, Terminal emulation): Remove.  These modules are
enabled by default, and so are documented above.
(Tramp extensions, Extra built-in commands): New sections.

17 months ago; * doc/misc/eshell.texi (Bugs and ideas): Remove implemented feature.
Jim Porter [Mon, 30 Jan 2023 02:29:02 +0000 (18:29 -0800)]
; * doc/misc/eshell.texi (Bugs and ideas): Remove implemented feature.

Do not merge to master.  This is a backport of 194de36ca9f.

17 months ago* lisp/emacs-lisp/backtrace.el (backtrace--change-button-skip): Typo)
Stefan Monnier [Fri, 14 Jul 2023 01:51:03 +0000 (21:51 -0400)]
* lisp/emacs-lisp/backtrace.el (backtrace--change-button-skip): Typo)

17 months agoDecouple keep-place-indicator from global ERC module
F. Jason Park [Thu, 13 Jul 2023 06:53:06 +0000 (23:53 -0700)]
Decouple keep-place-indicator from global ERC module

* etc/ERC-NEWS: Let users know that `keep-place-indicator' is a wholly
separate module from `keep-place'.
* lisp/erc/erc-goodies.el (erc-keep-place-indicator-setup): Perform
some housekeeping on `erc-keep-place-mode'.
(erc-keep-place-indicator-mode, erc-keep-place-indicator-enable,
erc-keep-place-indicator-disable): Take precautions to work around the
activation state of global module `keep-place', but no longer depend
on it.
(erc--keep-place-indicator-on-global-module): New function to ensure
`erc-keep-place' runs exactly once on `erc-insert-pre-hook',
regardless of whether module `keep-place' is active.
* test/lisp/erc/erc-goodies-tests.el
(erc-goodies-tests--assert-kp-indicator-on,
erc-goodies-tests--assert-kp-indicator-off,
erc-goodies-tests--kp-indicator-populate,
erc-goodies-tests--keep-place-indicator): New helper functions.
(erc-keep-place-indicator-mode,
erc-keep-place-indicator-mode--no-global): Factor out some common
logic and rename former to latter.
(erc-keep-place-indicator-mode--global): New test.  (Bug#59943)

17 months agoImprove walkthrough and sample config in ERC manual
F. Jason Park [Thu, 29 Jun 2023 14:12:46 +0000 (07:12 -0700)]
Improve walkthrough and sample config in ERC manual

* doc/misc/erc.texi: Improve "Sample Session" and "Sample
Configuration" sections.  Move introductory paragraph detailing the
history of official GNU IRC channels to the "History" chapter (from
"Sample Sessoin"), and leave a link in its place.  Silence strange
warning in "Getting Help and Reporting Bugs" about lack of punctuation
after xref.

17 months agoAdd mini modules bufbar and nickbar to ERC
F. Jason Park [Thu, 4 May 2023 07:01:11 +0000 (00:01 -0700)]
Add mini modules bufbar and nickbar to ERC

* doc/misc/erc.texi: Add `bufbar' and `nickbar' to known modules.
Also add `keep-place', which was missing, and remove `bbdb', which is
not part of ERC.  Add new section "Auxiliary Modules" for listing
experimental modules or those typically managed by some other feature.
* erc/ERC-NEWS: Mention new mini modules for libraries
erc-status-sidebar.el and erc-speedbar.el.
* lisp/erc/erc.el (erc-modules): Add `bufbar' and `nickbar' to
selection of offered modules.
* test/lisp/erc/erc-tests.el (erc-tests--modules): Add `bufbar' and
`nickbar'.  (Bug#63595)

17 months agoAdd erc-status-sidebar integration to erc-speedbar
F. Jason Park [Thu, 4 May 2023 07:01:11 +0000 (00:01 -0700)]
Add erc-status-sidebar integration to erc-speedbar

* lisp/erc/erc-speedbar.el: Require `erc-button' atop file and don't
bother loading `dframe', which `speedbar' handles for us.
(erc-speedbar): Explain that `nickbar' is the module for this group
and library for the benefit of those who run M-x customize-group.
(erc-speedbar-nicknames-window-width): New option.
(erc-speedbar-hide-mode-topic): New option determining whether to hide
the mode and topic.
(erc-speedbar-my-nick-face): New option for determining face to use
when displaying user's current nick.
(erc-speedbar-browser): Call `erc-install-speedbar-variables'
explicitly and remove top-level `with-eval-after-load'.
(erc-speedbar-insert-target): Add parenthesized channel count after
channel name in server and channel views.
(erc-speedbar-expand-channel): Hide mode and topic depending on option
`erc-speedbar-hide-mode-topic' and pass buffer to
`erc-speedbar-insert-user'.
(erc-speedbar--nick-face-function): New internal function-valued
variable.
(erc-speedbar--highlight-self-and-ops): New function to serve as
default value for `erc-speedbar--nick-face-function'.
(erc-speedbar--on-click): Dispatch `erc-nick-popup' after trimming
status chars.
(erc-speedbar-insert-user): Revise doc string.  Call
`erc-speedbar--nick-face-function' to determine face.  Change
token for both expansion and on-click text props.  Assign
`erc-speedbar--on-click' as the mouse handler for nick items.
(erc-speedbar--buffer-options): Variable to override options locally
in speedbar buffer.
(erc-speedbar--hidden-speedbar-frame): Add variable to hold original
`speedbar-frame' before spoofing by setting to selected frame
containing window showing ERC buffer.
(erc-speedbar--emulate-sidebar-set-window-preserve-size,
erc-speedbar--status-sidebar-mode--unhook): Add function
to ensure status sidebar is showing correctly and helper to
unregister from hook on teardown.
(erc-speedbar--emulate-sidebar): Add function to control sidebar
nicknames setup.
(erc-speedbar--toggle-nicknames-sidebar): Add toggle function
for speedbar or emulated sidebar.
(erc-speedbar--ensure): Add helper function to show speedbar if it's
hidden or create one if none exists.
(erc-nickbar-mode, erc-nickbar-enable, erc-nickbar-disable):
Add new mini module.
(erc-speedbar--dframe-controlled) Add function to overwrite
`speedbar-frame-mode' as `dframe-controlled' in speedbar buffer.
(erc-speedbar-toggle-nicknames-window-lock,
erc-speedbar-close-nicknames-window): Add commands to close speedbar
window and toggle its cyclability.
(erc-speedbar--compose-nicks-face): Add helper for nicks integration.
* test/lisp/erc/erc-scenarios-status-sidebar.el
(erc-scenarios-status-sidebar--nickbar): New test.  (Bug#63595)

17 months agoAdd preset styles to erc-status-sidebar
F. Jason Park [Thu, 4 May 2023 07:01:11 +0000 (00:01 -0700)]
Add preset styles to erc-status-sidebar

* lisp/erc/erc-networks.el (erc-networks--rename-server-buffer): Store
`erc-networks--id' in process object's plist.
* lisp/erc/erc-status-sidebar.el (erc-status-sidebar): Change group
parent from `convenience' to `erc'.
(erc-status-sidebar-channel-format): Mention in doc string that it
depends on new option `erc-status-sidebar-style'.
(erc-status-sidebar-highlight-active-buffer): New option to control
whether the current window's target is highlighted in the status bar.
(erc-status-sidebar-style): New option to determine whether servers
and queries also appear in the sidebar.
(erc-status-sidebar-click-display-action,
erc-status-sidebar-singular): New options.
(erc-status-sidebar-get-window): Consider
`erc-status-sidebar-singular'.
(erc-status-sidebar-open): Fix toggle functionality that somehow fell
through the cracks after the adoption of the package into ERC proper.
(erc-bufbar-mode, erc-bufbar-enable, erc-bufbar-disable): New module
named `bufbar' instead of `sidebar', which is more easily confusable
with `speedbar'.  The preferred name, `status-sidebar' was unavailable
because its minor-mode would have been `erc-status-sidebar-mode',
which is already taken by the major mode used for status-bar buffers
themselves.
(erc-status-sidebar-toggle): Ignore `erc-status-sidebar-singular'.
(erc-status-sidebar--trimpat, erc-status-sidebar--prechan): Add helper
vars for new sorting function, allowing it to honor the existing
interface, which only expects one argument.
(erc-status-sidebar-prefer-target-as-name): New function for
determining buffer name, preferring targets for target buffers.
(erc-status-sidebar-get-channame): Use internal API to help determine
name of buffer in sidebar.
(erc-status-sidebar-prefer-target-as-name,
erc-status-sidebar--show-disconnected,
erc-status-sidebar-all-target-buffers,
erc-status-sidebar-default-allsort): Add new naming and sorting
functions and associated helper functions and variables.
(erc-status-sidebar--active-marker,
erc-status-sidebar--set-active-line): New variable and function for
highlighting the active target in the status bar.
(erc-status-sidebar-default-insert,
erc-status-sidebar-pad-hierarchy): New functions for visiting various
stages of buffer modification when rendering sidebar.
(erc-status-sidebar-refresh): Consider presets and new options when
rendering sidebar.
(erc-status-sidebar-kill):  Disable `erc-bufbar-mode' when active.
(erc-status-sidebar-click): Appeal to option
`erc-status-sidebar-display-action' for `pop-to-buffer' action.
(erc-status-sidebar-scroll-up, erc-status-sidebar-scroll-down,
erc-status-sidebar-recenter): Add commands to scroll and
recenter sidebar from a target buffer's window.
(erc-status-sidebar-set-window-preserve-size): Ignore
`erc-status-sidebar-singular'.
(erc-status-sidebar-mode): Make non-interactive to avoid confusion
when folks run "M-x erc-status-sidebar-mode" expecting a module
toggle.
* test/lisp/erc/erc-scenarios-status-sidebar.el: New file.
* test/lisp/erc/resources/base/gapless-connect/foonet.eld: Fix wrong
manifest for channel and extend PASS timeout.  (Bug#63595)

17 months agoAllow ERC's module toggles access to the prefix arg
F. Jason Park [Mon, 15 May 2023 07:16:00 +0000 (00:16 -0700)]
Allow ERC's module toggles access to the prefix arg

* lisp/erc/erc-common.el (erc--module-toggle-prefix-arg): Add internal
variable for preserving the `arg' passed to a module's minor-mode
toggle, which was previously discarded.  Doing this lets modules that
are more interactive in nature overload their mode toggles with
alternate behaviors.
(define-erc-module): Bind `erc--module-toggle-prefix-arg' to the `arg'
parameter, which is normally defined inside a `define-minor-mode' body
form.
* test/lisp/erc/erc-tests.el (define-erc-module--global,
define-erc-module--local): Expect activation body to be wrapped by a
let form binding `erc--module-toggle-prefix-arg'.  (Bug#63595)

17 months agoFix buffer-mismatch bug in erc-scroll-to-bottom
F. Jason Park [Thu, 18 May 2023 02:48:02 +0000 (19:48 -0700)]
Fix buffer-mismatch bug in erc-scroll-to-bottom

* lisp/erc/erc-goodies.el (erc-scroll-to-bottom): Only `recenter' when
the selected window's buffer is current.  Previously, the module
`scrolltobottom' signaled an "Error in `post-command-hook'" when a
user clicked a channel indicator in the mode line from a window
showing another ERC buffer.
* lisp/erc/erc-track.el (erc-track--switch-fallback-blockers): New
internal variable used by `erc-track--switch-buffer' in deciding
whether to set `erc-track-last-non-erc-buffer' to the current buffer.
(erc-track--switch-buffer): Consult list of `buffer-match-p'
conditions in `erc-track--switch-fallback-blockers' to decide whether
to set `erc-track-last-non-erc-buffer' to the current buffer.
(Bug#63595)

17 months agoAdd module for colorizing nicknames to ERC
David Leatherman [Mon, 19 Dec 2022 03:01:40 +0000 (19:01 -0800)]
Add module for colorizing nicknames to ERC

* doc/misc/erc.texi: Add `nicks' to module lineup.
* etc/ERC-NEWS: Mention new module `nicks'.
* lisp/erc/erc-nicks.el: New file.
* lisp/erc/erc.el: (erc-modules): Add `nicks'.
* test/lisp/erc/erc-nicks-tests.el: New file.
* test/lisp/erc/erc-tests (erc-tests--modules): Add `nicks' to
inventory of available modules.  (Bug#63569)

Special thanks to Corwin Brust for doing much of the administrative
legwork to bring this addition to ERC.

Co-authored-by: Andy Stewart <lazycat.manatee@gmail.com>
Co-authored-by: F. Jason Park <jp@neverwas.me>
17 months agoAllow custom display-buffer actions in ERC
F. Jason Park [Wed, 31 May 2023 06:27:12 +0000 (23:27 -0700)]
Allow custom display-buffer actions in ERC

* doc/misc/erc.texi: Add new section under "Integrations" chapter
describing `display-buffer' Custom function choice for ERC's many
buffer-display options.
* etc/ERC-NEWS: Mention new function variant for all buffer-display
options.
* lisp/erc/erc-backend.el: Add forward declaration for
`erc--called-as-input-p' and `erc--display-context'.
(erc--server-reconnect-display-timer,
erc--server-last-reconnect-display-reset): Use new name for option
`erc-reconnect-display', now `erc-auto-reconnect-display'.
(erc--server-determine-join-display-context): New generic function to
determine value of `erc--display-context' during JOINs.
(erc-server-JOIN, erc-server-PRIVMSG): Set `erc--display-context' to a
symbol for the handler's IRC command, like `JOIN', for the benefit of
custom `display-buffer'-like functions running in `erc-setup-buffer'.
(erc-server-471, erc-server-471-functions, erc-server-473,
erc-server-473-functions): New handlers for JOIN rejections.  Also
remove 471 and 473 from comment at bottom of file.
(erc-server-475): Bind `erc--called-as-input-p' so that `erc-cmd-JOIN'
sets `erc-interactive-display' context.
* lisp/erc/erc-join.el (erc-autojoin-mode, erc-autojoin-enable,
erc-autojoin-disable): Kill local variable
`erc-join--requested-channels'.  Add and remove
`erc-join--remove-requested-channels' to/from various server-handler
hooks for JOIN rejection numerics.
(erc-join--requested-channels): New local variable to remember
channels we've attempted to JOIN this session that haven't yet been
confirmed by the server.
(erc-join--remove-requested-channel): New JOIN rejection handler to
stop tracking channel in `erc-join--requested-channels'.
(erc--server-determine-join-display-context): module-specific
implementation of generic function for `erc-autojoin-mode'.
(erc-autojoin--join): Remember channels slated for JOIN'ing.
* lisp/erc/erc.el (erc--buffer-display-choices): New helper constant
for defining common `:type' for all buffer-display options.
(erc-buffer-display, erc-interactive-display,
erc-auto-reconnect-display, erc-receive-query-display): Use helper
`erc--buffer-display-choices' for defining `:type', which
includes a new choice for a `display-buffer'-like function.
(erc-reconnect-display, erc-auto-reconnect-display): Alias former to
latter, now the preferred name.
(erc-reconnect-timeout, erc-auto-reconnect-timeout): Change name from
former to latter.  This option is new in ERC 5.6.
(erc-reconnect-display-server-buffers): New option.
(erc-buffer-do): Revise doc string.
(erc--display-context): New variable, an alist of "context tokens" to
be forwarded as the "action alist" to `erc-buffer-display' functions.
(erc-skip-displaying-selected-window-buffer): New variable, deprecated
at birth, to act as an escape hatch for folks who don't want to skip
the displaying of buffers already showing in the selected window.
(erc--display-buffer-overriding-action): Local variable allowing
modules to influence the displaying of new ERC buffers independently
of user options.
(erc-setup-buffer): Do nothing when the selected window already shows
current buffer unless user has provided a custom display function.
Accommodate new Custom choice function values, like `display-buffer'
and `pop-to-buffer'.
(erc-open): Run `erc-setup-buffer' when option
`erc-reconnect-display-server-buffers' is non-nil, even for existing
server buffers.  Bind `display-buffer-overriding-action' to the value
of `erc--display-buffer-overriding-action' around calls to
`erc-setup-buffer'.
(erc-select-read-args): Add `erc--display-context' to environment.
(erc, erc-tls): Bind `erc--display-context' around calls to
`erc-select-read-args' and main body.
(erc-cmd-JOIN, erc-cmd-QUERY, erc--cmd-reconnect, erc-handle-irc-url):
Add item for `erc-interactive-display' to `erc--display-context'.
(erc-connection-established): Update name of
`erc-reconnect-display-timeout' to
`erc-auto-reconnect-display-timeout'.
(erc-message-english-s471, erc-message-english-s473): New variables,
format templates for JOIN rejection messages.
* test/lisp/erc/erc-scenarios-base-buffer-display.el
(erc-scenarios-base-buffer-display--defwin-recbury-intbuf,
erc-scenarios-base-buffer-display--defwino-recbury-intbuf,
erc-scenarios-base-buffer-display--count-reset-timeout): Use preferred
name `erc-auto-reconnect-display' for `erc-reconnect-display'.
* test/lisp/erc/erc-scenarios-join-display-context.el: New file.
* test/lisp/erc/erc-tests.el (erc--initialize-markers): Fix
unrealistic call to `erc-open'.
(erc-setup-buffer--custom-action): New test.
(erc-select-read-args, erc-tls, erc--interactive, erc-server-select):
Expect new environment binding for `erc--display-context'.
* test/lisp/erc/resources/join/buffer-display/mode-context.eld: New
file.  (Bug#62833)

17 months agoOptionally combine faces in erc-display-message
F. Jason Park [Sun, 25 Jun 2023 01:33:20 +0000 (18:33 -0700)]
Optionally combine faces in erc-display-message

* etc/ERC-NEWS: Tell module authors that `erc-display-message' can now
combine faces.
* lisp/erc/erc-button.el (erc-button--display-error-notice-with-keys):
Ask `erc-display-message' to compose `erc-notice-face' and
`erc-error-face'.
* lisp/erc/erc-match.el (erc-hide-fools): Merge `invisible' prop
`erc-match' with existing, if present, and move body to helper for
hiding matched messages.
(erc-match--hide-message): New helper function to hide messages
regardless of match type.
* lisp/erc/erc-track.el: (erc-track-faces-priority-list): Note in doc
string that faces reserved for critical messages are always
prioritized.  Wrap :type declaration in macro helper to ensure
`erc-button' is loaded beforehand.  Otherwise calling `setopt' with
the option's default value fails.
(erc-track--attn-faces): Add new internal variable for faces that
should always appear in the mode line, at least in the default client.
(erc-track-modified-channels, erc-track-face-priority): Prepend
`erc-track--attn-faces' to `erc-track-faces-priority-list'.
* lisp/erc/erc.el (erc-send-action): Ask `erc-display-message' to
apply both `erc-input-face' and `erc-action-face' to messages.
(erc--compose-text-properties): New internal variable to act as flag
for altering behavior of `erc-put-text-property'.
(erc--merge-prop): New function copied from `erc-button-add-face' for
general internal use with any text property by all of ERC.
(erc-display-message-highlight): Set fallback face to
`erc-default-face' the symbol instead of the string.  For this to
break third-party code, callers would have to supply erroneous types
for nonexistent or undefined handlers and then explicitly check for
and depend on such misuse, which seems unlikely and therefore not
worth mentioning in etc/ERC-NEWS.
(erc-display-message): Explain how `type' param works when it's a
list.  Fix code in type-as-list branch so that it optionally combines
faces instead of clobbers them.
(erc-put-text-property): Unalias from `put-text-property', but fall
back to the latter unless caller wants to combine faces, in which case,
defer to `erc--merge-prop'.
* test/lisp/erc/erc-button-tests.el
(erc-button--display-error-notice-with-keys): Expect a combined "error
notice" face.  (Bug#64301)

17 months agoAdd text props for CTCP messages and speakers in ERC
F. Jason Park [Sun, 25 Jun 2023 01:33:20 +0000 (18:33 -0700)]
Add text props for CTCP messages and speakers in ERC

* etc/ERC-NEWS: Mention reduction in boldness of `erc-notice-face' and
`erc-action-face'.
* lisp/erc/erc-fill.el (erc-fill-spaced-commands,
erc-fill--spaced-commands): Rename former to latter and demote from
user option to internal variable.
(erc-fill): Change `erc-fill-spaced-commands' to
`erc-fill--spaced-commands'.
(erc-fill--wrap-continued-message-p): Use more precise `erc-ctcp' text
prop instead of face-based heuristic to detect CTCP ACTION message.
(erc-fill--wrap-action-dedent-p): New variable to toggle whether
`line-prefix' is applied to CTCP ACTION messages.  This exists less
to accommodate user preferences and more for third-party code that
assumes the first non-whitespace span in every message is a nick.
(erc-fill-wrap): Look for `erc-speaker' property before falling back
on word at point.  Use `erc-ctcp' to detect CTCP ACTION messages.
* lisp/erc/erc.el (erc-notice-face, erc-action-face): Prefer weight of
`semi-bold' when available so that buttonization is at least somewhat
perceptible in notices and action messages.
(erc-send-action): Ensure nickname passed to `erc-display-message' has
`erc-speaker' property and `erc-ctcp' ACTION property.
(erc--own-property-names): Add `erc-speaker' to lineup.
(erc-format-privmessage): Don't clobber `erc-nick-prefix-face'.  That
is, retain face applied to a leading stretch of characters in the
`nick' parameter, but continue to discard trailing faces.
(erc-format-my-nick, erc-ctcp-query-ACTION): Add new text property
`erc-speaker' to the nick portion of the formatted speaker label.  Do
this to assist modules, like `button' and `match', that currently
re-parse speakers in inserted messages.
(erc-process-ctcp-query): Add `erc-ctcp' property to entire message
before insertion hooks see it.
* test/lisp/erc/erc-fill-tests.el (erc-fill-tests--compare): Warn
about certain unreliable comparisons if generalizing helper for use by
other modules.
* test/lisp/erc/erc-tests.el (erc-tests--equal-including-properties):
New helper compat macro.
(erc-format-privmessage): New test.  (Bug#64301)

17 months agoSimplify erc-button-add-nickname-buttons
F. Jason Park [Sat, 1 Jul 2023 06:42:01 +0000 (23:42 -0700)]
Simplify erc-button-add-nickname-buttons

* lisp/erc/erc-button.el (erc-button--nick): Remove `face' slot, which
was set to `erc-button-face' by default.  It's ignored when the button
is a nick and thus useless and misleading.
(erc-button-add-nickname-buttons): Rework and reflow for readability.
Don't bind or set `erc-button' face because it's ignored when dealing
with nicks.  Don't return the value of face options when calling a
`form' function because they can be nil in practice even though their
Custom type specs do not say so.
* lisp/erc/erc-common.el (erc--with-dependent-type-match): Add helper
macro for Custom :type defs that incur warnings from `setopt' due to
some missing dependency.  This occurs when specifying a :type of
`face' instead of `symbol' and the option's default value includes
faces from another library that hasn't been loaded.
* lisp/erc/erc.el (erc--get-speaker-bounds): New helper function to
retrieve bounds of a speaker label when present.
* test/lisp/erc/erc-tests.el (erc--with-dependent-type-match): Add
test.  (Bug#64301)

17 months agoRespect existing invisibility props in erc-stamp
F. Jason Park [Mon, 3 Jul 2023 03:58:37 +0000 (20:58 -0700)]
Respect existing invisibility props in erc-stamp

* etc/ERC-NEWS: mention `erc-match-toggle-hidden-fools' and new
merging behavior when handling `invisible' text property.
* lisp/erc/erc-match.el (erc-hide-fools): change `invisible' property
to `erc-match' for all messages, not just those with offset bounds.
(erc-match--modify-invisibility-spec): Fix error in doc string.
(erc-match-toggle-hidden-fools): New command.
* lisp/erc/erc-stamp.el (erc-stamp--invisible-property): Add new
internal variable to hold existing `invisible' property merged with
the one registered by this module, the non-namespaced `timestamp'.
(erc-stamp--skip-when-invisible): Add new internal variable, an escape
hatch for pre-ERC-5.6 behavior in which timestamps were not applied at
all to invisible messages.  This led to strange-looking, uneven logs,
and it prevented other modules from offering toggle functionality for
invisibility-spec members registered to them.
(erc-add-timestamp): Merge with existing `invisible' property, when
present, instead of clobbering, but only when escape hatch
`erc-stamp--skip-when-invisible' is nil.
(erc-insert-timestamp-left, erc-format-timestamp): Use possibly merged
`invisible' prop value.  Don't bother with `isearch-open-invisible',
which only affects overlays.
(erc-insert-timestamp-right): Bind `buffer-invisibility-spec' to nil
when figuring `current-column'.  Apply `invisible' text prop to white
space around stamp.
* test/lisp/erc/erc-scenarios-match.el: Require `erc-fill' and
`erc-stamp'.
(erc-scenarios-match--invisible-stamp): Move common setup and core
assertions for some stamp and invisibility-related tests into a
fixture-like helper.
(erc-scenarios-match--stamp-left-fools-invisible): Fix temporarily
disabled test and use fixture.
(erc-scenarios-match--find-eol): New helper.
(erc-scenarios-match--stamp-right-fools-invisible,
erc-scenarios-match--stamp-right-invisible-fill-wrap,
erc-scenarios-match--stamp-both-invisible-fill-static): New tests.
(Bug#64301)

17 months agoDeprecate erc-server-alist and erc-server-select
F. Jason Park [Thu, 29 Jun 2023 14:12:46 +0000 (07:12 -0700)]
Deprecate erc-server-alist and erc-server-select

* etc/ERC-NEWS: Announce deprecation of `erc-server-alist' and
`erc-server-select'.
* lisp/erc/erc-networks.el: Comment out call to `erc-get' at end of
file.
(erc-server-alist) Change shape to accommodate a fifth member: TLS
ports.  Add default TLS ports for Libera.Chat and OFTC.  Deprecate
option.
(erc-ports-list): Overload for internal use to accept a number instead
of a list, but don't advertise this fact.
(erc-networks--server-select): Convert `erc-server-select' into a
function that performs the same prompting but returns a full URL or a
host name instead of calling `erc'.
(erc-server-select): Move to erc.el.
* lisp/erc/erc.el (erc--prompt-for-server-functions): New variable to
allow callers of `erc-select-read-args' to affect how server-prompting
is handled without adding additional params.
(erc-select-read-args): Defer to `erc--prompt-for-server-function'
when non-nil.
(erc-server-select): New transplanted function, a deprecated, now
TSL-aware version of the old quirky entry point from erc-networks.el.
Reimplemented as a simple wrapper for `erc'.
* test/lisp/erc/erc-networks-tests.el (erc-ports-list): New test.
* test/lisp/erc/erc-tests.el (erc-server-select): New test.
(Bug#64478)

17 months agoFix command-line parsing regression in erc-cmd-DCC
F. Jason Park [Sat, 8 Jul 2023 04:27:03 +0000 (21:27 -0700)]
Fix command-line parsing regression in erc-cmd-DCC

* lisp/erc/erc-compat.el (erc-compat--28-split-string-shell-command,
erc-compat--split-string-shell-command): Remove unused function and
macro.
* lisp/erc/erc-dcc.el (erc-cmd-DCC): Use own arg-parsing function.
* lisp/erc/erc.el (erc--shell-parse-regexp,
erc--split-string-shell-cmd): New regexp constant and arg-parsing
function based on those in shell.el.
* test/lisp/erc/erc-dcc-tests.el
(erc-dcc-tests--erc-dcc-do-GET-command): Accept new `nuh' argument
representing message source/sender.
(erc-dcc-do-GET-command): Add tests for regression involving pipe
character.
* test/lisp/erc/erc-tests.el (erc--split-string-shell-cmd): New test.
(Bug#62444)

Thanks to Fernando de Morais for reporting this bug.

17 months agoUse 'emacs-lisp-compilation-mode' in native compilation buffers
Eli Zaretskii [Thu, 6 Jul 2023 08:50:41 +0000 (11:50 +0300)]
Use 'emacs-lisp-compilation-mode' in native compilation buffers

Re-install this commit 40492581f96, now that source of
the recursive-load has been fixed (bug#64494).

* lisp/emacs-lisp/comp.el (comp-log-to-buffer)
(comp-run-async-workers): Use 'emacs-lisp-compilation-mode' in the
buffers where we log the results of native compilation.  Suggested
by No Wayman <iarchivedmywholelife@gmail.com>.  (Bug#64452)

17 months agoClean up Android debug code
Po Lu [Fri, 14 Jul 2023 00:51:07 +0000 (08:51 +0800)]
Clean up Android debug code

* java/org/gnu/emacs/EmacsInputConnection.java
(getSurroundingText): Don't print debug information if DEBUG_IC
is off.

17 months agosrc/comp.c: Use `pending_funcalls` to fix bug#64494
Stefan Monnier [Fri, 14 Jul 2023 00:11:55 +0000 (20:11 -0400)]
src/comp.c: Use `pending_funcalls` to fix bug#64494

Make sure `comp.el` is never loaded synchronously by simply
delaying all calls to `native--compile-async` via `pending_funcalls`.

* lisp/startup.el (comp--compilable, comp--delayed-sources): Don't declare.
(startup--require-comp-safely)
(startup--honor-delayed-native-compilations): Delete functions.
(normal-top-level): Don't call `startup--honor-delayed-native-compilations`.

* src/comp.c (maybe_defer_native_compilation): Use `pending_funcalls`.
(syms_of_comp): Delete `Vcomp__delayed_sources` and `comp__compilable`.
Define `Qnative__compile_async`.

17 months ago; * lisp/calc/calc.el (calc): Fix typo.
Po Lu [Fri, 14 Jul 2023 00:05:21 +0000 (08:05 +0800)]
; * lisp/calc/calc.el (calc): Fix typo.

17 months agoMerge remote-tracking branch 'origin/master' into feature/android
Po Lu [Thu, 13 Jul 2023 23:58:49 +0000 (07:58 +0800)]
Merge remote-tracking branch 'origin/master' into feature/android

17 months agocl-print: Put buttons on ellipses
Stefan Monnier [Thu, 13 Jul 2023 23:00:51 +0000 (19:00 -0400)]
cl-print: Put buttons on ellipses

Currently, in *Backtrace* we have a nice behavior for cl-printed objects
where they're truncated by default to a manageable size but we can click
on the "..." to expand them when needed.

The patch below moves that functionality to `cl-print.el` such
that it can be enjoyed "everywhere" (bug#64536).  It also has the
benefit of simplifying the code since `backtrace.el` had to look for
ellipses in order to add buttons to them, whereas now we can put
the ellipses right when we write them.

* lisp/emacs-lisp/cl-print.el (cl-print-object-contents): Improve docstring.
(cl-print-expand-ellipsis-function): New var.
(cl-print--default-expand-ellipsis): New function.
(cl-print-expand-ellipsis): New command.
(cl-print-insert-ellipsis): Allow nil instead of 0 to mean "this elides
the whole object".
(cl-print-ellipsis): Move button type from `backtrace.el`.
(cl-print-propertize-ellipsis): Put a button.
(cl-print--expand-ellipsis): Rename from `cl-print-expand-ellipsis`.
(cl-print-to-string-with-limit): Allow new value t for `limit`.

* lisp/emacs-lisp/backtrace.el (backtrace--font-lock-keywords): Simplify.
(backtrace--match-ellipsis-in-string): Delete function.
(backtrace--change-button-skip): Adjust to new button type name.
(backtrace--expand-ellipsis): New function, extracted from
`backtrace-expand-ellipsis`.
(backtrace-expand-ellipsis): Delete function.
(backtrace-ellipsis): Move button type to `cl-print.el`.
(backtrace--print-to-string): Don't look for cl-print ellipses any more.
(backtrace-mode): Use `backtrace--expand-ellipsis`.

* lisp/ielm.el (ielm--expand-ellipsis): New function.
(inferior-emacs-lisp-mode): Use it to fill the data when expanded.

* test/lisp/emacs-lisp/cl-print-tests.el
(cl-print-tests-check-ellipsis-expansion)
(cl-print-tests-check-ellipsis-expansion-rx): Adjust to new internal
function name.

17 months agoDon't recalculate the buffer basename inside uniquify
Spencer Baugh [Sun, 9 Jul 2023 14:24:33 +0000 (10:24 -0400)]
Don't recalculate the buffer basename inside uniquify

Previously, uniquify--create-file-buffer-advice would use the filename
of the buffer to calculate what the buffer's basename should be.  Now
that gets passed in from create-file-buffer, which lets us fix several
bugs:

1. before this patch, if a buffer happened to be named the same thing
as directory in its default-directory, the buffer would get renamed
with a directory separator according to uniquify-trailing-separator-p.

2. buffers with a leading space should get a leading |, as described
by create-file-buffer's docstring; before this patch, uniquify would
remove that leading |.

* lisp/dired.el (dired-internal-noselect): Pass a directory name to
create-file-buffer.
* lisp/files.el (create-file-buffer): Do uniquify-trailing-separator-p
handling if passed a directory filename. (bug#62732)
* lisp/uniquify.el (uniquify-item):
(uniquify-rationalize-file-buffer-names, uniquify-rationalize,
uniquify-get-proposed-name, uniquify-rationalize-conflicting-sublist):
Remove uniquify-trailing-separator-p handling.
(uniquify--create-file-buffer-advice): Take new basename argument and
use it, instead of recalculating the basename from the filename.

17 months agoPort NaN, infinity handling better to VAX
Paul Eggert [Thu, 13 Jul 2023 21:26:29 +0000 (14:26 -0700)]
Port NaN, infinity handling better to VAX

Nowadays .elc files routinely contain tokens like 1.0e+INF and
0.0e+NaN that do not work on antiques like the VAX that lack IEEE fp.
Port Emacs to these platforms, by treating infinities as extreme
values and NaNs as strings that trap if used numerically.
* src/lread.c (INFINITY): Default to HUGE_VAL if non-IEEE.
(not_a_number) [!IEEE_FLOATING_POINT]: New static array.
(syms_of_lread) [!IEEE_FLOATING_POINT]: Initialize it.
(read0): Report invalid syntax for +0.0e+NaN on platforms
that lack NaNs.
(string_to_number): On non-IEEE platforms, return HUGE_VAL
for infinity and a string for NaN.  All callers changed.

17 months ago* lisp/help-mode.el (help-setup-xref): Disable outline-minor-mode (bug#64575).
Juri Linkov [Thu, 13 Jul 2023 16:38:36 +0000 (19:38 +0300)]
* lisp/help-mode.el (help-setup-xref): Disable outline-minor-mode (bug#64575).

17 months agoFix flymake mode line scrolling with pixel-scroll-precision-mode
Spencer Baugh [Sun, 2 Jul 2023 21:49:23 +0000 (17:49 -0400)]
Fix flymake mode line scrolling with pixel-scroll-precision-mode

When pixel-scroll-precision-mode is enabled, scrolling the mouse
wheel will yield wheel-{up,down} events.  Flymake now binds the
new events in addition to the old mouse-wheel-{up,down}-event.

* lisp/progmodes/flymake.el:(flymake--mode-line-counter-scroll-prev)
(flymake--mode-line-counter-scroll-next)
flymake--mode-line-counter-map): New.
(flymake--mode-line-counter): Use new keymap and include
'flymake--diagnostic-type' as a property in the mode-line.
(Bug#64428)

17 months agoPrevent tex-shell buffer from reusing same window
Robert Pluim [Mon, 19 Jun 2023 15:31:25 +0000 (17:31 +0200)]
Prevent tex-shell buffer from reusing same window

* lisp/window.el (display-tex-shell-buffer-action): Add
'inhibit-same-window' to the default action.

17 months agoAutodetect coding system when yanking media
Robert Pluim [Thu, 22 Jun 2023 14:59:19 +0000 (16:59 +0200)]
Autodetect coding system when yanking media

Some browers send eg 'text/html' selections formatted as UTF-8, but
with a type of STRING, which actually means iso-latin-1.  Autodetect
the correct coding system to use by calling 'gui-get-selection'.

* lisp/yank-media.el (yank-media--get-selection): Call
'gui-get-selection' instead of 'gui-backend-get-selection'.

17 months agoAdd a Doc View tool bar
Po Lu [Thu, 13 Jul 2023 11:19:57 +0000 (19:19 +0800)]
Add a Doc View tool bar

* etc/NEWS: Announce the new tool bar.
* etc/images/last-page.xpm:
* etc/images/last-page.pbm: New images.  Mirrored from
next-page.xpm.
* lisp/doc-view.el (doc-view-menu): Use `doc-view-new-search'
instead of an anonymous function.
(doc-view-tool-bar-map): New keymap.
(doc-view-search): Update the tool bar after initiating a
search.
(doc-view-new-search): New command.
(doc-view-mode): Set the tool bar map appropriately.

17 months agoImprove workaround for partial texture updates on Android
Po Lu [Thu, 13 Jul 2023 10:17:59 +0000 (18:17 +0800)]
Improve workaround for partial texture updates on Android

* java/AndroidManifest.xml.in:
* java/org/gnu/emacs/EmacsDialog.java (toAlertDialog): Don't
change hardware acceleration state.
* java/org/gnu/emacs/EmacsNative.java (notifyPixelsChanged): New
function.
* java/org/gnu/emacs/EmacsSurfaceView.java (EmacsSurfaceView):
New field `bitmapChanged'.
(copyToFrontBuffer): Signal that the bitmap has changed.
(onDraw): If the bitmap has changed, increment the generation
ID.
* src/android.c (JNICALL): Implement new function.

17 months ago; * src/lisp.h (struct Lisp_Overlay): Update commentary (bug#64580).
Eli Zaretskii [Thu, 13 Jul 2023 08:33:54 +0000 (11:33 +0300)]
; * src/lisp.h (struct Lisp_Overlay): Update commentary (bug#64580).

17 months agoReplace duplicate text from epa.texi by a reference
Jens Schmidt [Tue, 11 Jul 2023 19:57:31 +0000 (21:57 +0200)]
Replace duplicate text from epa.texi by a reference

* doc/misc/auth.texi (GnuPG and EasyPG Assistant Configuration):
Replace duplicate text from epa.texi by a reference to
that. (Bug#64154)

17 months agoAdd basic usage information and fix references
Jens Schmidt [Sun, 9 Jul 2023 14:17:27 +0000 (16:17 +0200)]
Add basic usage information and fix references

* doc/misc/epa.texi (Top): Add menu entry for new node GnuPG Pinentry.
(Quick Start): Add information on and reference to basic GnuPG
configuration.
(Encrypting/decrypting gpg files): Add usage information.
(GnuPG version compatibility): Update version information.
(GnuPG Pinentry): Add new node.
(Caching Passphrases): Describe mandatory gpg-agent usage for GnuPG
2.0 and later.
(Overview, Encrypting/decrypting gpg files, GnuPG version compatibility)
(Caching Passphrases, Bug Reports): Fix references, terminology,
mark-up, and index entries.  (Bug#64154)

17 months agoAdd concept index, title-case structure titles
Jens Schmidt [Sun, 2 Jul 2023 11:39:48 +0000 (13:39 +0200)]
Add concept index, title-case structure titles

* doc/misc/epa.texi (Top, Overview, Commands, Key management)
(Cryptographic operations on regions, Cryptographic operations on files)
(Dired integration, Mail-mode integration)
(Encrypting/decrypting gpg files, Querying a key server)
(GnuPG version compatibility, Caching Passphrases)
(GNU Free Documentation License): Add concept index, title-case
structure titles.  (Bug#64154)

17 months ago; * lisp/progmodes/project.el (project-current): Doc fix.
Eshel Yaron [Sat, 24 Jun 2023 14:16:19 +0000 (17:16 +0300)]
; * lisp/progmodes/project.el (project-current): Doc fix.

Avoid saying that 'project-current' asks specifically for a
directory, as it can also ask for a project's directory by other
identifiers, such as the project's name, when 'project-prompter'
is set to a different value than the default
'project-prompt-project-dir'.  (Bug#64266)

17 months agoDisable hardware acceleration on Android
Po Lu [Thu, 13 Jul 2023 04:05:50 +0000 (12:05 +0800)]
Disable hardware acceleration on Android

It serves no purpose and causes tearing.  Uploading the bitmap
to the GPU takes about as long as it does to incrementally
update the surface in software.

* java/AndroidManifest.xml.in: Disable hardware acceleration.
* java/org/gnu/emacs/EmacsActivity.java (EmacsActivity): Make
lastClosedMenu static.
* java/org/gnu/emacs/EmacsDialog.java (toAlertDialog): Enable
hardware acceleration within alert dialogs.
* java/org/gnu/emacs/EmacsSurfaceView.java (onDraw): Describe
why hardware acceleration is disabled.
* java/org/gnu/emacs/EmacsWindow.java (run): Remove redundant
call.

17 months agoMerge remote-tracking branch 'origin/master' into feature/android
Po Lu [Thu, 13 Jul 2023 00:33:27 +0000 (08:33 +0800)]
Merge remote-tracking branch 'origin/master' into feature/android

17 months ago; * lisp/emacs-lisp/lisp.el (raise-sexp): Fix typo in doc string.
Eli Zaretskii [Wed, 12 Jul 2023 12:19:10 +0000 (15:19 +0300)]
; * lisp/emacs-lisp/lisp.el (raise-sexp): Fix typo in doc string.

17 months agoMinor correction to X error handling
Po Lu [Wed, 12 Jul 2023 10:07:53 +0000 (18:07 +0800)]
Minor correction to X error handling

* src/xterm.c (x_error_handler): Clear fail->selection_serial
after reporting an error during selection transfer, in case any
other outstanding requests within the protected section also
report errors.

17 months agoImprove commentary
Po Lu [Wed, 12 Jul 2023 10:04:03 +0000 (18:04 +0800)]
Improve commentary

* src/xterm.c (x_ignore_errors_for_next_request): Reword
description of SELECTION_SERIAL.

17 months agoEglot: fix advertisement of textDocument.codeAction.resolveSupport
João Távora [Wed, 12 Jul 2023 09:11:34 +0000 (10:11 +0100)]
Eglot: fix advertisement of textDocument.codeAction.resolveSupport

See https://github.com/joaotavora/eglot/issues/1255.

* lisp/progmodes/eglot.el (eglot-client-capabilities):
Use correct format for textDocument.codeAction.resolveSupport.

17 months ago; * src/android.c (android_run_select_thread): Fix typo.
Po Lu [Wed, 12 Jul 2023 09:04:35 +0000 (17:04 +0800)]
; * src/android.c (android_run_select_thread): Fix typo.

17 months agoUpdate Android port
Po Lu [Wed, 12 Jul 2023 08:45:24 +0000 (16:45 +0800)]
Update Android port

* src/android.c (android_run_select_thread): Correctly return
the set of ready read and write descriptors on __ANDROID_API__ <
16 systems.
(android_select): Clear the set of ready file descriptors if
events from the event queue are present despite pselect failing.

17 months agoFix keyboard state translation on Android
Po Lu [Wed, 12 Jul 2023 04:46:08 +0000 (12:46 +0800)]
Fix keyboard state translation on Android

* src/androidterm.c (android_android_to_emacs_modifiers)
(android_emacs_to_android_modifiers): Fix statement precedence
bugs.

17 months ago; * src/doc.c (doc_close): Remove unused macro.
Po Lu [Wed, 12 Jul 2023 01:57:13 +0000 (09:57 +0800)]
; * src/doc.c (doc_close): Remove unused macro.

17 months agoUpdate Android port
Po Lu [Wed, 12 Jul 2023 01:45:58 +0000 (09:45 +0800)]
Update Android port

* java/org/gnu/emacs/EmacsWindow.java (whatButtonWasIt): Handle
back and forward buttons along with styluses.
* src/doc.c (close_file_unwind_android_fd): New function.
(get_doc_string, Fsnarf_documentation): Don't create a temporary
fd if it can be avoided.

17 months agoMerge remote-tracking branch 'origin/master' into feature/android
Po Lu [Wed, 12 Jul 2023 00:53:54 +0000 (08:53 +0800)]
Merge remote-tracking branch 'origin/master' into feature/android

17 months ago; * doc/misc/modus-themes.org: Fix whitespace (bug#64548).
Stephen Berman [Mon, 10 Jul 2023 10:20:10 +0000 (12:20 +0200)]
; * doc/misc/modus-themes.org: Fix whitespace (bug#64548).