mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2024-11-24 07:20:37 +00:00
Merge from origin/emacs-27
6cd9ccb0a2
(origin/emacs-27) Fix compression of directories in Dired42329e6d3b
; * etc/NEWS: Review of the whole text.af5709f16b
Further enhancement on `tramp-file-local-name'fb432446f5
Objective C Mode imenu: cease recognizing "functions" with...a18373a999
; * etc/NEWS: Update the text about the XDG_CONFIG_HOME/em...73fd8a4b53
Fix BSD and macOS builds w.r.t. pthread_setname_np (bug#38...f54b24304d
Scale top-left coordinates in display-monitor-attributes-listb46c75b16c
xref-matches-in-files: Big Tramp speed-up883b3490d8
* lisp/net/tramp.el (tramp-file-local-name): Remove `save-...c01f55f126
Fix rendering bug due to unsynchronized cairo surface size...075f21c0e3
Avoid crash by access to cleared img->pixmap->data/img->ma...16c6dfb4f1
Avoid assertion violations in very small-height windows9063124b91
Use pthread_setname_np to set thread name # Conflicts: # etc/NEWS # lisp/net/tramp.el
This commit is contained in:
commit
b968b733a2
21
configure.ac
21
configure.ac
@ -1767,7 +1767,7 @@ AC_CHECK_HEADERS_ONCE(
|
||||
sys/sysinfo.h
|
||||
coff.h pty.h
|
||||
sys/resource.h
|
||||
sys/utsname.h pwd.h utmp.h util.h sys/prctl.h)
|
||||
sys/utsname.h pwd.h utmp.h util.h)
|
||||
|
||||
AC_CACHE_CHECK([for ADDR_NO_RANDOMIZE],
|
||||
[emacs_cv_personality_addr_no_randomize],
|
||||
@ -4192,9 +4192,26 @@ pthread_sigmask strsignal setitimer timer_getoverrun \
|
||||
sendto recvfrom getsockname getifaddrs freeifaddrs \
|
||||
gai_strerror sync \
|
||||
getpwent endpwent getgrent endgrent \
|
||||
cfmakeraw cfsetspeed __executable_start log2 prctl)
|
||||
cfmakeraw cfsetspeed __executable_start log2 pthread_setname_np)
|
||||
LIBS=$OLD_LIBS
|
||||
|
||||
if test "$ac_cv_func_pthread_setname_np" = "yes"; then
|
||||
AC_CACHE_CHECK(
|
||||
[whether pthread_setname_np takes a single argument],
|
||||
[emacs_cv_pthread_setname_np_1arg],
|
||||
[AC_COMPILE_IFELSE(
|
||||
[AC_LANG_PROGRAM(
|
||||
[[#include <pthread.h>]],
|
||||
[[pthread_setname_np ("a");]])],
|
||||
[emacs_cv_pthread_setname_np_1arg=yes],
|
||||
[emacs_cv_pthread_setname_np_1arg=no])])
|
||||
if test "$emacs_cv_pthread_setname_np_1arg" = "yes"; then
|
||||
AC_DEFINE(
|
||||
HAVE_PTHREAD_SETNAME_NP_1ARG, 1,
|
||||
[Define to 1 if pthread_setname_np takes a single argument.])
|
||||
fi
|
||||
fi
|
||||
|
||||
dnl No need to check for posix_memalign if aligned_alloc works.
|
||||
AC_CHECK_FUNCS([aligned_alloc posix_memalign], [break])
|
||||
AC_CHECK_DECLS([aligned_alloc], [], [], [[#include <stdlib.h>]])
|
||||
|
297
etc/NEWS.27
297
etc/NEWS.27
@ -69,8 +69,8 @@ When built with the portable dumping support (which is the default),
|
||||
Emacs looks for the 'emacs.pdmp' file, generated during the build, in
|
||||
its data directory at startup, and loads the dumped state from there.
|
||||
The new command-line argument '--dump-file=FILE' allows to specify a
|
||||
non-default '.pdmp' file to load the state from; see the node "Initial
|
||||
Options" in the Emacs manual for more information.
|
||||
non-default '.pdmp' file to load the state from; see the node
|
||||
"(emacs) Initial Options" in the Emacs manual for more information.
|
||||
|
||||
An Emacs started via a dump file can create a new dump file only if it
|
||||
was invoked with the '-batch' option. (This is a temporary
|
||||
@ -92,7 +92,7 @@ change to one of the data structures that it relies on.
|
||||
'--enable-checking=xmallocoverrun' have been withdrawn. The former
|
||||
made Emacs irredeemably slow, and the latter made it crash. Neither
|
||||
option was useful with modern debugging tools such as AddressSanitizer.
|
||||
(See etc/DEBUG for the details of using the modern replacements of the
|
||||
(See "etc/DEBUG" for the details of using the modern replacements of the
|
||||
removed configure options.)
|
||||
|
||||
---
|
||||
@ -158,20 +158,25 @@ support.
|
||||
For example, it looks for init.el in "~/.config/emacs/init.el", and
|
||||
similarly for other init files.
|
||||
|
||||
The XDG_CONFIG_HOME environment variable (which defaults to "~/.config")
|
||||
The 'XDG_CONFIG_HOME' environment variable (which defaults to "~/.config")
|
||||
specifies the parent directory of these and other configuration files,
|
||||
and will override their traditional locations (the home directory,
|
||||
"~/.emacs.d", etc.).
|
||||
|
||||
Emacs will still look for init files in their traditional locations if
|
||||
XDG_CONFIG_HOME/emacs does not exist, so invoking Emacs with
|
||||
XDG_CONFIG_HOME='/nowhere' might be useful if your new-location init
|
||||
files are scrambled, or if you want to force Emacs to ignore files
|
||||
under XDG_CONFIG_HOME for some other reason.
|
||||
"$XDG_CONFIG_HOME/emacs" does not exist, but "~/.emacs.d" or
|
||||
"~/.emacs" does exist, so invoking Emacs with XDG_CONFIG_HOME='/nowhere'
|
||||
might be useful if your new-location init files are scrambled, or if
|
||||
you want to force Emacs to ignore files under 'XDG_CONFIG_HOME' for
|
||||
some other reason.
|
||||
|
||||
If neither "$XDG_CONFIG_HOME/emacs" nor "~/.emacs.d" exist, Emacs will
|
||||
now default to "$XDG_CONFIG_HOME/emacs", and will create that directory
|
||||
and set 'user-emacs-directory' to point to it.
|
||||
|
||||
+++
|
||||
** Emacs can now be configured using an early init file.
|
||||
The file is called 'early-init.el', in 'user-emacs-directory'. It is
|
||||
The file is called "early-init.el", in 'user-emacs-directory'. It is
|
||||
loaded very early in the startup process: before graphical elements
|
||||
such as the tool bar are initialized, and before the package manager
|
||||
is initialized. The primary purpose is to allow customizing how the
|
||||
@ -278,7 +283,6 @@ The old function names are maintained as aliases for backward
|
||||
compatibility.
|
||||
|
||||
** emacsclient
|
||||
|
||||
+++
|
||||
*** emacsclient now supports the 'EMACS_SOCKET_NAME' environment variable.
|
||||
The command-line argument '--socket-name' overrides it.
|
||||
@ -463,7 +467,7 @@ This user option allows to specify the set of buffers that may be
|
||||
shown by 'switch-to-prev-buffer' and 'switch-to-next-buffer' more
|
||||
stringently than the now obsolete 'switch-to-visible-buffer'.
|
||||
|
||||
** New 'flex' completion style
|
||||
** New 'flex' completion style.
|
||||
An implementation of popular "flex/fuzzy/scatter" completion which
|
||||
matches strings where the pattern appears as a subsequence. Put
|
||||
simply, makes "foo" complete to both "barfoo" and "frodo". Add 'flex'
|
||||
@ -488,7 +492,6 @@ Consequently, a theme generally shouldn't specify this attribute
|
||||
unless it has a good reason to do so.
|
||||
|
||||
** Connection-local variables
|
||||
|
||||
+++
|
||||
*** Connection-local variables are applied by default like file-local
|
||||
and directory-local variables.
|
||||
@ -516,7 +519,6 @@ Emacs configured with Cairo drawing and linked with cairo >= 1.16.0.
|
||||
|
||||
+++
|
||||
** Emacs now optionally displays a fill column indicator.
|
||||
|
||||
This is similar to what 'fill-column-indicator' package provides, but
|
||||
much faster and compatible with 'show-trailing-whitespace'.
|
||||
|
||||
@ -528,7 +530,7 @@ The indicator is not displayed at all in minibuffer windows and
|
||||
in tooltips, as it is not useful there.
|
||||
|
||||
There are 2 new buffer local variables and 1 face to customize this
|
||||
mode they are described in the manual "(emacs) Display".
|
||||
mode, they are described in the manual "(emacs) Display".
|
||||
|
||||
+++
|
||||
** 'progress-reporter-update' accepts a suffix string to display.
|
||||
@ -542,7 +544,6 @@ It is used for displaying file sizes and disk space in some cases.
|
||||
|
||||
+++
|
||||
** Emacs now interprets RGB triplets like HTML, SVG, and CSS do.
|
||||
|
||||
The X convention previously used differed slightly, particularly for
|
||||
RGB triplets with a single hexadecimal digit per component.
|
||||
|
||||
@ -550,8 +551,8 @@ RGB triplets with a single hexadecimal digit per component.
|
||||
** The toolbar now shows the equivalent key binding in its tooltips.
|
||||
|
||||
---
|
||||
** The File menu-bar menu was re-arranged: Print menu items moved to
|
||||
submenu, and also added the new entries for tabs.
|
||||
** The File menu-bar menu was re-arranged.
|
||||
Print menu items moved to submenu, and also added the new entries for tabs.
|
||||
|
||||
---
|
||||
** 'scroll-lock-mode' is now bound to the 'Scroll_Lock' key globally.
|
||||
@ -729,6 +730,7 @@ network connection information (in addition to the host name).
|
||||
|
||||
---
|
||||
** desktop
|
||||
|
||||
*** When called interactively with a prefix arg 'C-u', 'desktop-read'
|
||||
now prompts the user for the directory containing the desktop file.
|
||||
|
||||
@ -745,28 +747,34 @@ an offset to absolute line numbers.
|
||||
|
||||
+++
|
||||
** winner
|
||||
|
||||
*** A new user option, 'winner-boring-buffers-regexp', has been added.
|
||||
|
||||
** table
|
||||
** 'table-generate-source' and friends now support outputting wiki and
|
||||
|
||||
*** 'table-generate-source' and friends now support outputting wiki and
|
||||
mediawiki format tables.
|
||||
|
||||
---
|
||||
** telnet-mode
|
||||
|
||||
*** Reverting a buffer in 'telnet-mode' will restart a closed connection.
|
||||
|
||||
** goto-addr
|
||||
|
||||
*** A way to more conveniently specify what URI address schemes that
|
||||
should be ignored have been added via the
|
||||
'goto-address-uri-schemes-ignored' variable.
|
||||
|
||||
+++
|
||||
** tex-mode
|
||||
|
||||
*** 'latex-noindent-commands' controls indentation of certain commands.
|
||||
You can use this new user option to control indentation of arguments of
|
||||
\emph, \footnote, and similar commands.
|
||||
|
||||
** byte compiler
|
||||
|
||||
*** 'byte-compile-dynamic' is now obsolete.
|
||||
This is because on the one hand it suffers from misbehavior in corner
|
||||
cases that have plagued it for years, and on the other experiments indicated
|
||||
@ -778,20 +786,24 @@ command that will recompile the file previously compiled with 'M-x
|
||||
byte-compile-file' and the like.
|
||||
|
||||
** compile.el
|
||||
|
||||
---
|
||||
*** In 'compilation-error-regexp-alist', 'line' (and 'end-line') can
|
||||
be functions.
|
||||
|
||||
+++
|
||||
*** 'compilation-context-lines' can now take the value t; this is like
|
||||
nil, but instead of scrolling the current line to the top of the
|
||||
screen when there is no left fringe, it inserts a visible arrow before
|
||||
column zero.
|
||||
|
||||
---
|
||||
*** The new 'compilation-transform-file-match-alist' user option can
|
||||
be used to transform file name matches compilation output, and remove
|
||||
known false positives being recognized as warnings/errors.
|
||||
|
||||
** cl-lib.el
|
||||
|
||||
+++
|
||||
*** 'cl-defstruct' has a new ':noinline' argument to prevent inlining
|
||||
its functions.
|
||||
@ -803,13 +815,16 @@ its functions.
|
||||
*** 'cl-values-list' will now signal an error if its argument isn't a list.
|
||||
|
||||
** doc-view.el
|
||||
|
||||
*** New commands 'doc-view-presentation' and 'doc-view-fit-window-to-page'.
|
||||
*** Added support for password-protected PDF files
|
||||
|
||||
*** Added support for password-protected PDF files.
|
||||
|
||||
*** A new user option 'doc-view-pdftotext-program-args' has been added
|
||||
to allow controlling how the conversion to text is done.
|
||||
|
||||
** Ido
|
||||
|
||||
*** New user option 'ido-big-directories' to mark directories whose
|
||||
names match certain regular expressions as big. Ido won't attempt to
|
||||
list the contents of such directories when completing file names.
|
||||
@ -841,13 +856,13 @@ at the end of the active minibuffer.
|
||||
a character using the minibuffer by 'read-char-from-minibuffer'.
|
||||
|
||||
** map.el
|
||||
|
||||
*** Now also understands plists.
|
||||
*** Now defined via generic functions that can be extended via 'cl-defmethod'.
|
||||
*** Deprecate the 'map-put' macro in favor of a new 'map-put!' function.
|
||||
*** 'map-contains-key' now returns a boolean rather than the key.
|
||||
*** Deprecate the 'testfn' args of 'map-elt' and 'map-contains-key'.
|
||||
*** New generic function 'map-insert'.
|
||||
|
||||
+++
|
||||
*** The 'type' arg can be a list '(hash-table :key1 VAL1 :key2 VAL2 ...)'.
|
||||
|
||||
@ -917,7 +932,6 @@ The mode is automatically enabled in files that start with the
|
||||
** project.el
|
||||
|
||||
*** New commands 'project-search' and 'project-query-replace-regexp'.
|
||||
|
||||
*** New user option 'project-read-file-name-function'.
|
||||
|
||||
** Etags
|
||||
@ -1065,7 +1079,7 @@ by Hg.
|
||||
you invoke 'C-x v m' ('vc-merge').
|
||||
|
||||
---
|
||||
*** The Hg (Mercurial) back-end now use tags, branches and bookmarks
|
||||
*** The Hg (Mercurial) back-end now uses tags, branches and bookmarks
|
||||
instead of revision numbers as completion candidates when it prompts
|
||||
for a revision.
|
||||
|
||||
@ -1117,6 +1131,7 @@ Emacs 24.1, but wasn't documented until now.
|
||||
*** New command 'diff-buffers' interactively diffs two buffers.
|
||||
|
||||
** Diff mode
|
||||
|
||||
+++
|
||||
*** Hunks are now automatically refined by font-lock.
|
||||
To disable refinement, set the new user option 'diff-refine' to nil.
|
||||
@ -1244,7 +1259,7 @@ included.
|
||||
Database passwords can now by stored in NETRC or JSON data files that
|
||||
may optionally be encrypted. When establishing an interactive session
|
||||
with the database via 'sql-connect' or a product specific function,
|
||||
like 'sql-mysql' or 'my-postgres', the password wallet will be
|
||||
like 'sql-mysql' or 'sql-postgres', the password wallet will be
|
||||
searched for the password. The 'sql-product', 'sql-server',
|
||||
'sql-database', and the 'sql-username' will be used to identify the
|
||||
appropriate authorization. This eliminates the discouraged practice of
|
||||
@ -1316,8 +1331,8 @@ package data. It is therefore recommended to keep this line.
|
||||
|
||||
+++
|
||||
*** Change of 'package-check-signature' for packages with multiple sigs.
|
||||
In previous Emacsen, 't' checked that all signatures are valid.
|
||||
Now 't' only checks that at least one signature is valid and the new 'all'
|
||||
In previous Emacsen, t checked that all signatures are valid.
|
||||
Now t only checks that at least one signature is valid and the new 'all'
|
||||
value needs to be used if you want to enforce that all signatures
|
||||
are valid. This only affects packages with multiple signatures.
|
||||
|
||||
@ -1397,9 +1412,9 @@ This command finds definitions of the identifier at the place of a
|
||||
mouse click event, and is intended to be bound to a mouse event.
|
||||
|
||||
+++
|
||||
*** Changing 'xref-marker-ring-length' works after 'xref.el' is loaded.
|
||||
*** Changing 'xref-marker-ring-length' works after xref.el is loaded.
|
||||
Previously, setting 'xref-marker-ring-length' would only take effect
|
||||
if set before 'xref.el' was loaded.
|
||||
if set before xref.el was loaded.
|
||||
|
||||
---
|
||||
*** 'xref-find-definitions' now sets the mark at the buffer position
|
||||
@ -1418,8 +1433,7 @@ behavior and the display of results.
|
||||
*** Search results show the buffer even for one hit.
|
||||
The search-type Xref commands (e.g. 'xref-find-references' or
|
||||
'project-find-regexp') now show the results buffer even when there is
|
||||
only one hit. This can be altered by changing
|
||||
'xref-show-xrefs-function'.
|
||||
only one hit. This can be altered by changing 'xref-show-xrefs-function'.
|
||||
|
||||
+++
|
||||
*** Xref buffers support refreshing the search results.
|
||||
@ -1441,7 +1455,7 @@ completion facilities.
|
||||
** Ecomplete
|
||||
|
||||
---
|
||||
*** The ecomplete sorting has changed to a decay-based algorithm.
|
||||
*** The Ecomplete sorting has changed to a decay-based algorithm.
|
||||
This can be controlled by the new 'ecomplete-sort-predicate' user option.
|
||||
|
||||
---
|
||||
@ -1466,14 +1480,14 @@ are marked with "." in the summary mode lines.)
|
||||
'never' for never expunging messages, 'immediately' for immediately
|
||||
expunging deleted messages, and 'on-exit' to expunge deleted articles
|
||||
when exiting the group's summary buffer. Setting 'nnimap-expunge' to
|
||||
'nil' or 't' is still supported but not recommended, since it may
|
||||
nil or t is still supported but not recommended, since it may
|
||||
result in Gnus expunging all messages that have been flagged as
|
||||
deleted by any IMAP client (rather than just those that have been
|
||||
deleted by Gnus).
|
||||
|
||||
+++
|
||||
*** New user option 'gnus-use-atomic-windows' makes Gnus window layouts atomic.
|
||||
See the "Atomic Windows" section of the Elisp manual for details.
|
||||
See the "(elisp) Atomic Windows" node of the Elisp manual for details.
|
||||
|
||||
+++
|
||||
*** There's a new value for 'gnus-article-date-headers',
|
||||
@ -1511,20 +1525,19 @@ See the concept index in the Gnus manual for the 'match-list' entry.
|
||||
*** nil is no longer an allowed value for 'mm-text-html-renderer'.
|
||||
|
||||
+++
|
||||
The default value of 'mm-inline-large-images' has changed from nil to
|
||||
'resize', which means that large images will be resized instead of
|
||||
*** The default value of 'mm-inline-large-images' has changed from nil
|
||||
to 'resize', which means that large images will be resized instead of
|
||||
displayed with an external program by default.
|
||||
|
||||
+++
|
||||
*** A new Gnus summary mode command, 'S A'
|
||||
('gnus-summary-attach-article') can be used to attach the current
|
||||
article(s) to a pre-existing Message buffer, or create a new Message
|
||||
buffer with the article(s) attached.
|
||||
*** A new Gnus summary mode command, 'S A' ('gnus-summary-attach-article')
|
||||
can be used to attach the current article(s) to a pre-existing Message
|
||||
buffer, or create a new Message buffer with the article(s) attached.
|
||||
|
||||
+++
|
||||
*** A new Gnus summary mode command, 'w'
|
||||
('gnus-summary-browse-url') scans the article buffer for URLs, and
|
||||
offers them to the user to open with 'browse-url'.
|
||||
*** A new Gnus summary mode command, 'w' ('gnus-summary-browse-url')
|
||||
scans the article buffer for URLs, and offers them to the user to open
|
||||
with 'browse-url'.
|
||||
|
||||
---
|
||||
*** New user option 'nnir-notmuch-filter-group-names-function'.
|
||||
@ -1545,8 +1558,7 @@ fail.
|
||||
*** New hook 'erc-insert-done-hook'.
|
||||
This hook is called after strings have been inserted into the buffer,
|
||||
and is free to alter point and window configurations, as it's not
|
||||
called from inside a 'save-excursion', as opposed to
|
||||
'erc-insert-post-hook'.
|
||||
called from inside a 'save-excursion', as opposed to 'erc-insert-post-hook'.
|
||||
|
||||
---
|
||||
*** 'erc-button-google-url' has been renamed to 'erc-button-search-url'
|
||||
@ -1632,14 +1644,14 @@ attempt when communicating with the SMTP server(s), the
|
||||
'smtpmail-servers-requiring-authorization' user option can be used.
|
||||
|
||||
+++
|
||||
*** smtpmail will now try resending mail when getting a transient 4xx
|
||||
*** smtpmail will now try resending mail when getting a transient "4xx"
|
||||
error message from the SMTP server. The new 'smtpmail-retries'
|
||||
user option says how many times to retry.
|
||||
|
||||
** Footnote mode
|
||||
|
||||
---
|
||||
*** Support Hebrew-style footnotes
|
||||
*** Support Hebrew-style footnotes.
|
||||
|
||||
---
|
||||
*** Footnote text lines are now aligned.
|
||||
@ -1733,7 +1745,7 @@ with a numeric argument.
|
||||
of matches in the Isearch prompt. User options
|
||||
'lazy-count-prefix-format' and 'lazy-count-suffix-format' define the
|
||||
format of the current and the total number of matches in the prompt's
|
||||
prefix and suffix respectively.
|
||||
prefix and suffix, respectively.
|
||||
|
||||
---
|
||||
*** 'lazy-highlight-buffer' highlights matches in the full buffer.
|
||||
@ -1746,7 +1758,6 @@ highlight in one iteration while processing the full buffer.
|
||||
|
||||
+++
|
||||
*** New isearch bindings.
|
||||
|
||||
'C-M-z' invokes new function 'isearch-yank-until-char', which yanks
|
||||
everything from point up to but not including the specified
|
||||
character into the search string. This is especially useful for
|
||||
@ -1763,13 +1774,13 @@ to the existing binding 'M-s h r' ('highlight-regexp') that highlights
|
||||
JUST the search string.
|
||||
|
||||
+++
|
||||
*** New user option 'isearch-yank-on-move' provides options 't' and 'shift'
|
||||
*** New user option 'isearch-yank-on-move' provides options t and 'shift'
|
||||
to extend the search string by yanking text that ends at the new
|
||||
position after moving point in the current buffer. 'shift' extends
|
||||
the search string by motion commands while holding down the shift key.
|
||||
|
||||
+++
|
||||
*** 'isearch-allow-scroll' provides new option 'unlimited' to allow
|
||||
*** 'isearch-allow-scroll' provides a new option 'unlimited' to allow
|
||||
scrolling any distance off screen.
|
||||
|
||||
---
|
||||
@ -1794,7 +1805,7 @@ IOTA WITH OXIA".
|
||||
*** New char-folding options: 'char-fold-include' lets you add ad hoc
|
||||
foldings, 'char-fold-exclude' to remove foldings from default decomposition,
|
||||
and 'char-fold-symmetric' to search for any of an equivalence class of
|
||||
characters. For example, with a 'nil' value of 'char-fold-symmetric'
|
||||
characters. For example, with a nil value of 'char-fold-symmetric'
|
||||
you can search for "e" to find "é", but not vice versa. With a non-nil
|
||||
value you can search for either, for example, you can search for "é"
|
||||
to find "e".
|
||||
@ -1908,7 +1919,7 @@ This is useful for games where lower scores are better, like time-based games.
|
||||
** Filecache
|
||||
|
||||
---
|
||||
*** Completing filenames in the minibuffer via 'C-TAB' now uses the
|
||||
*** Completing file names in the minibuffer via 'C-TAB' now uses the
|
||||
styles as configured by the user option 'completion-styles'.
|
||||
|
||||
** New macros 'thunk-let' and 'thunk-let*'.
|
||||
@ -2055,8 +2066,8 @@ Tramp for some look-alike remote file names.
|
||||
|
||||
+++
|
||||
*** For some connection methods, like "su" or "sudo", the host name in
|
||||
ad-hoc multi-hop file names must match the previous hop. Default host
|
||||
names are adjusted to the host name from the previous hop.
|
||||
multi-hop file names must match the previous hop. Default host names
|
||||
are adjusted to the host name from the previous hop.
|
||||
|
||||
+++
|
||||
*** For the connection methods "sudo" and "doas" there exists a
|
||||
@ -2092,15 +2103,6 @@ Two new user options are provided for this:
|
||||
*** The return value of method 'register-val-describe' includes the
|
||||
names of buffers shown by the windows of a window configuration.
|
||||
|
||||
---
|
||||
** The options.el library has been removed.
|
||||
It was obsolete since Emacs 22.1, replaced by customize.
|
||||
|
||||
---
|
||||
** The tls.el and starttls.el libraries are now marked obsolete.
|
||||
Use of built-in libgnutls based functionality (described in the Emacs
|
||||
GnuTLS manual) is recommended instead.
|
||||
|
||||
** Message
|
||||
|
||||
---
|
||||
@ -2135,7 +2137,7 @@ are formatted as MIME digests.
|
||||
*** 'message-forward-included-headers' has changed its default to
|
||||
exclude most headers when forwarding.
|
||||
|
||||
*** 'mml-secure-openpgp-sign-with-sender' sets also "gpg --sender"
|
||||
*** 'mml-secure-openpgp-sign-with-sender' sets also "gpg --sender".
|
||||
When 'mml-secure-openpgp-sign-with-sender' is non-nil message sender's
|
||||
email address (in addition to its old behavior) will also be used to
|
||||
set gpg's "--sender email@domain" option.
|
||||
@ -2145,10 +2147,10 @@ The option is useful for two reasons when verifying the signature:
|
||||
1. GnuPG's TOFU statistics are updated for the specific user id
|
||||
(email) only. See gpg(1) man page about "--sender".
|
||||
|
||||
2. GnuPG's '--auto-key-retrieve' functionality can use WKD (web key
|
||||
2. GnuPG's "--auto-key-retrieve" functionality can use WKD (web key
|
||||
directory) method for finding the signer's key. You need GnuPG
|
||||
2.2.17 to fully benefit from this feature. See gpg(1) man page for
|
||||
'--auto-key-retrieve'.
|
||||
"--auto-key-retrieve".
|
||||
|
||||
---
|
||||
** EasyPG
|
||||
@ -2166,9 +2168,9 @@ been removed. Use 'encode-coding-string', 'decode-coding-string', and
|
||||
---
|
||||
*** 'epg-context' structure supports now 'sender' slot.
|
||||
The value of the new 'sender' slot (if a string) is used to set gpg's
|
||||
'--sender' option. This feature is used by
|
||||
"--sender" option. This feature is used by
|
||||
'mml-secure-openpgp-sign-with-sender'. See gpg(1) manual page about
|
||||
'--sender' for more information.
|
||||
"--sender" for more information.
|
||||
|
||||
---
|
||||
** Rmail
|
||||
@ -2409,7 +2411,7 @@ of an idle Emacs, but may fail on some network file systems; set
|
||||
notification is not supported. The default value is nil.
|
||||
|
||||
+++
|
||||
*** New variable 'buffer-auto-revert-by-notification'
|
||||
*** New variable 'buffer-auto-revert-by-notification'.
|
||||
A major mode can declare that notification on the buffer's default
|
||||
directory is sufficient to know when updates are required, by setting
|
||||
the new variable 'buffer-auto-revert-by-notification' to a non-nil
|
||||
@ -2546,6 +2548,7 @@ if you set 'time-stamp-format' or 'time-stamp-pattern' with a
|
||||
file-local variable, you may need to update the value.
|
||||
|
||||
** mode-local
|
||||
|
||||
---
|
||||
*** Declare 'define-overload' and 'define-child-mode' as obsolete.
|
||||
|
||||
@ -2560,13 +2563,38 @@ To do this, use 'c-toggle-comment-style', if needed, to set the desired
|
||||
default comment style (block or line); then set the user option
|
||||
'c-mark-wrong-style-of-comment' to non-nil.
|
||||
|
||||
** Mailcap
|
||||
|
||||
---
|
||||
*** The new function 'mailcap-file-name-to-mime-type' has been added.
|
||||
It's a simple convenience function for looking up MIME types based on
|
||||
file name extensions.
|
||||
|
||||
---
|
||||
*** The default way the list of possible external viewers for MIME
|
||||
types is sorted and chosen has changed. Earlier, the most specific
|
||||
viewer was chosen, even if there was a general override in "~/.mailcap".
|
||||
For instance, if "/etc/mailcap" has an entry for "image/gif", that one
|
||||
will be chosen even if you have an entry for "image/*" in your
|
||||
"~/.mailcap" file. But with the new method, entries from "~/.mailcap"
|
||||
overrides all system and Emacs-provided defaults. To get the old
|
||||
method back, set 'mailcap-prefer-mailcap-viewers' to nil.
|
||||
|
||||
** URL
|
||||
|
||||
---
|
||||
*** The 'file:' handler no longer looks for "index.html" in
|
||||
directories if you ask it for a "file:///dir" URL. Since this is a
|
||||
low-level library, such decisions (if they are to be made at all) are
|
||||
left to higher-level functions.
|
||||
|
||||
|
||||
* New Modes and Packages in Emacs 27.1
|
||||
|
||||
** Tab Bars
|
||||
|
||||
+++
|
||||
*** Tab Bar mode.
|
||||
*** Tab Bar mode
|
||||
The new command 'tab-bar-mode' enables the tab bar at the top of each
|
||||
frame, where you can use tabs to switch between named persistent
|
||||
window configurations.
|
||||
@ -2749,43 +2777,48 @@ fixnum for such arguments.
|
||||
|
||||
---
|
||||
** Some functions and variables obsolete since Emacs 22 have been removed:
|
||||
archive-mouse-extract, assoc-ignore-case, assoc-ignore-representation,
|
||||
backward-text-line, blink-cursor, bookmark-exit-hooks,
|
||||
c-opt-op-identitier-prefix, comint-use-prompt-regexp-instead-of-fields,
|
||||
compilation-finish-function, count-text-lines, cperl-vc-header-alist,
|
||||
custom-face-save-command, cvs-display-full-path, cvs-fileinfo->full-path,
|
||||
delete-frame-hook, derived-mode-class, describe-char-after, describe-project,
|
||||
desktop-basefilename, desktop-buffer-handlers, desktop-buffer-misc-functions,
|
||||
desktop-buffer-modes-to-save, desktop-enable, desktop-load-default,
|
||||
dired-omit-files-p, disabled-command-hook, dungeon-mode-map,
|
||||
electric-nroff-mode, electric-nroff-newline, electric-perl-terminator,
|
||||
focus-frame, forward-text-line, generic-define-mswindows-modes,
|
||||
generic-define-unix-modes, generic-font-lock-defaults, goto-address-at-mouse,
|
||||
highlight-changes-colours, ibuffer-elide-long-columns, ibuffer-hooks,
|
||||
ibuffer-mode-hooks, icalendar-convert-diary-to-ical,
|
||||
icalendar-extract-ical-from-buffer, imenu-always-use-completion-buffer-p,
|
||||
ipconfig-program, ipconfig-program-options, isearch-lazy-highlight-cleanup,
|
||||
isearch-lazy-highlight-initial-delay, isearch-lazy-highlight-interval,
|
||||
isearch-lazy-highlight-max-at-a-time, iswitchb-use-fonts,
|
||||
latin1-char-displayable-p, mouse-wheel-click-button, mouse-wheel-down-button,
|
||||
mouse-wheel-up-button, new-frame, pascal-outline, process-kill-without-query,
|
||||
recentf-menu-append-commands-p, rmail-pop-password,
|
||||
rmail-pop-password-required, savehist-load, set-default-font,
|
||||
spam-list-of-processors, speedbar-add-ignored-path-regexp,
|
||||
speedbar-buffers-line-path, speedbar-ignored-path-expressions,
|
||||
speedbar-ignored-path-regexp, speedbar-line-path, speedbar-path-line,
|
||||
timer-set-time-with-usecs, tooltip-gud-display, tooltip-gud-modes,
|
||||
tooltip-gud-toggle-dereference, unfocus-frame, unload-hook-features-list,
|
||||
update-autoloads-from-directories, vc-comment-ring, vc-comment-ring-index,
|
||||
vc-comment-search-forward, vc-comment-search-reverse, vc-comment-to-change-log,
|
||||
vc-diff-switches-list, vc-next-comment, vc-previous-comment, view-todo,
|
||||
x-lost-selection-hooks, x-sent-selection-hooks.
|
||||
'archive-mouse-extract', 'assoc-ignore-case', 'assoc-ignore-representation',
|
||||
'backward-text-line', 'blink-cursor', 'bookmark-exit-hooks',
|
||||
'c-opt-op-identitier-prefix', 'comint-use-prompt-regexp-instead-of-fields',
|
||||
'compilation-finish-function', 'count-text-lines', 'cperl-vc-header-alist',
|
||||
'custom-face-save-command', 'cvs-display-full-path', 'cvs-fileinfo->full-path',
|
||||
'delete-frame-hook', 'derived-mode-class', 'describe-char-after',
|
||||
'describe-project', 'desktop-basefilename', 'desktop-buffer-handlers',
|
||||
'desktop-buffer-misc-functions', 'desktop-buffer-modes-to-save',
|
||||
'desktop-enable', 'desktop-load-default', 'dired-omit-files-p',
|
||||
'disabled-command-hook', 'dungeon-mode-map', 'electric-nroff-mode',
|
||||
'electric-nroff-newline', 'electric-perl-terminator', 'focus-frame',
|
||||
'forward-text-line', 'generic-define-mswindows-modes',
|
||||
'generic-define-unix-modes', 'generic-font-lock-defaults',
|
||||
'goto-address-at-mouse', 'highlight-changes-colours',
|
||||
'ibuffer-elide-long-columns', 'ibuffer-hooks', 'ibuffer-mode-hooks',
|
||||
'icalendar-convert-diary-to-ical', 'icalendar-extract-ical-from-buffer',
|
||||
'imenu-always-use-completion-buffer-p', 'ipconfig-program',
|
||||
'ipconfig-program-options', 'isearch-lazy-highlight-cleanup',
|
||||
'isearch-lazy-highlight-initial-delay', 'isearch-lazy-highlight-interval',
|
||||
'isearch-lazy-highlight-max-at-a-time', 'iswitchb-use-fonts',
|
||||
'latin1-char-displayable-p', 'mouse-wheel-click-button',
|
||||
'mouse-wheel-down-button', 'mouse-wheel-up-button', 'new-frame',
|
||||
'pascal-outline', 'process-kill-without-query',
|
||||
'recentf-menu-append-commands-p', 'rmail-pop-password',
|
||||
'rmail-pop-password-required', 'savehist-load', 'set-default-font',
|
||||
'spam-list-of-processors', 'speedbar-add-ignored-path-regexp',
|
||||
'speedbar-buffers-line-path', 'speedbar-ignored-path-expressions',
|
||||
'speedbar-ignored-path-regexp', 'speedbar-line-path', 'speedbar-path-line',
|
||||
'timer-set-time-with-usecs', 'tooltip-gud-display', 'tooltip-gud-modes',
|
||||
'tooltip-gud-toggle-dereference', 'unfocus-frame', 'unload-hook-features-list',
|
||||
'update-autoloads-from-directories', 'vc-comment-ring', 'vc-comment-ring-index',
|
||||
'vc-comment-search-forward', 'vc-comment-search-reverse',
|
||||
'vc-comment-to-change-log', 'vc-diff-switches-list', 'vc-next-comment',
|
||||
'vc-previous-comment', 'view-todo', 'x-lost-selection-hooks',
|
||||
'x-sent-selection-hooks'.
|
||||
|
||||
---
|
||||
** Further functions and variables obsolete since Emacs 24 have been removed:
|
||||
default-directory-alist, dired-default-directory,
|
||||
dired-default-directory-alist, dired-enable-local-variables,
|
||||
dired-hack-local-variables, dired-local-variables-file, dired-omit-here-always.
|
||||
'default-directory-alist', 'dired-default-directory',
|
||||
'dired-default-directory-alist', 'dired-enable-local-variables',
|
||||
'dired-hack-local-variables', 'dired-local-variables-file',
|
||||
'dired-omit-here-always'.
|
||||
|
||||
+++
|
||||
** Garbage collection no longer treats miscellaneous objects specially;
|
||||
@ -2864,6 +2897,20 @@ where it scales the image under the mouse pointer.
|
||||
** 'help-follow-symbol' now signals 'user-error' if point (or the
|
||||
position pointed to by the argument POS) is not in a symbol.
|
||||
|
||||
---
|
||||
** The options.el library has been removed.
|
||||
It was obsolete since Emacs 22.1, replaced by customize.
|
||||
|
||||
---
|
||||
** The tls.el and starttls.el libraries are now marked obsolete.
|
||||
Use of built-in libgnutls based functionality (described in the Emacs
|
||||
GnuTLS manual) is recommended instead.
|
||||
|
||||
---
|
||||
** The url-ns.el library is now marked obsolete.
|
||||
This library is used to open configuration files for the long defunct
|
||||
web browser Netscape, and is no longer relevant.
|
||||
|
||||
|
||||
* Lisp Changes in Emacs 27.1
|
||||
|
||||
@ -3062,12 +3109,12 @@ informational messages that look pleasing during the Emacs build.
|
||||
|
||||
---
|
||||
** New 'help-fns-describe-variable-functions' hook.
|
||||
Makes it possible to add metadata information to 'describe-variable'.
|
||||
It makes it possible to add metadata information to 'describe-variable'.
|
||||
|
||||
** i18n (internationalization)
|
||||
|
||||
---
|
||||
*** ngettext can be used now to return the right plural form
|
||||
*** 'ngettext' can be used now to return the right plural form
|
||||
according to the given numeric value.
|
||||
|
||||
+++
|
||||
@ -3080,7 +3127,7 @@ according to the given numeric value.
|
||||
** 'lookup-key' can take a list of keymaps as argument.
|
||||
|
||||
+++
|
||||
** 'condition-case' now accepts 't' to match any error symbol.
|
||||
** 'condition-case' now accepts t to match any error symbol.
|
||||
|
||||
+++
|
||||
** New function 'proper-list-p'.
|
||||
@ -3152,7 +3199,7 @@ are unaffected by these changes.
|
||||
|
||||
In addition, a number of functions now allow the caller to detect what
|
||||
has changed since last redisplay: 'window-old-buffer' returns for any
|
||||
window the buffer it showed at that time. ‘old-selected-window’ and
|
||||
window the buffer it showed at that time. 'old-selected-window' and
|
||||
'old-selected-frame' return the window and frame that were selected
|
||||
during last redisplay. 'window-old-pixel-width' (renamed from
|
||||
'window-pixel-width-before-size-change'), 'window-old-pixel-height'
|
||||
@ -3317,36 +3364,6 @@ If the new optional ALLOW-PARTIAL argument is passed, then the data
|
||||
that was decompressed successfully before failing will be inserted
|
||||
into the buffer.
|
||||
|
||||
** Mailcap
|
||||
|
||||
---
|
||||
*** The new function 'mailcap-file-name-to-mime-type' has been added.
|
||||
It's a simple convenience function for looking up MIME types based on
|
||||
file name extensions.
|
||||
|
||||
---
|
||||
*** The default way the list of possible external viewers for MIME
|
||||
types is sorted and chosen has changed. Earlier, the most specific
|
||||
viewer was chosen, even if there was a general override in "~/.mailcap".
|
||||
For instance, if "/etc/mailcap" has an entry for "image/gif", that one
|
||||
will be chosen even if you have an entry for "image/*" in your
|
||||
"~/.mailcap" file. But with the new method, entries from "~/.mailcap"
|
||||
overrides all system and Emacs-provided defaults. To get the old
|
||||
method back, set 'mailcap-prefer-mailcap-viewers' to nil.
|
||||
|
||||
** URL
|
||||
|
||||
---
|
||||
*** The 'file:' handler no longer looks for "index.html" in
|
||||
directories if you ask it for a "file:///dir" URL. Since this is a
|
||||
low-level library, such decisions (if they are to be made at all) are
|
||||
left to higher-level functions.
|
||||
|
||||
---
|
||||
** The url-ns.el library is now marked obsolete.
|
||||
This library is used to open configuration files for the long defunct
|
||||
web browser Netscape, and is no longer relevant.
|
||||
|
||||
** Image mode
|
||||
|
||||
---
|
||||
@ -3465,7 +3482,7 @@ case.
|
||||
It is a convenient and readable way to specify a regexp that should
|
||||
not match anything, and is as fast as any such regexp can be.
|
||||
|
||||
++++
|
||||
+++
|
||||
** New functions to handle the URL variant of base-64 encoding.
|
||||
New functions 'base64url-encode-string' and 'base64url-encode-region'
|
||||
implement the url-variant of base-64 encoding as defined in RFC4648.
|
||||
@ -3479,7 +3496,7 @@ encoding.
|
||||
The new third argument is a string put between the number and unit; it
|
||||
defaults to the empty string. The new fourth argument is a string
|
||||
representing the unit to use; it defaults to "B" when the second
|
||||
argument is 'iec' and the empty string otherwise. We recomment a
|
||||
argument is 'iec' and the empty string otherwise. We recommend a
|
||||
space or non-breaking space as third argument, and "B" as fourth
|
||||
argument, circumstances allowing.
|
||||
|
||||
@ -3538,7 +3555,7 @@ ordinary keys, function keys and mouse clicks. This allows using them
|
||||
in their standard macOS way for composing characters.
|
||||
|
||||
** The special handling of 'frame-title-format' on NS where setting it
|
||||
to 't' would enable the macOS proxy icon has been replaced with a
|
||||
to t would enable the macOS proxy icon has been replaced with a
|
||||
separate variable, 'ns-use-proxy-icon'. 'frame-title-format' will now
|
||||
work as on other platforms.
|
||||
|
||||
|
@ -992,7 +992,14 @@ command with a prefix argument (the value does not matter)."
|
||||
(ignore-errors (dired-remove-entry new-file))
|
||||
(goto-char start)
|
||||
;; Now replace the current line with an entry for NEW-FILE.
|
||||
(dired-update-file-line new-file) nil)
|
||||
;; But don't remove the current line if either FROM-FILE or
|
||||
;; NEW-FILE is a directory, because compressing/uncompressing
|
||||
;; directories doesn't remove the original.
|
||||
(if (or (file-directory-p from-file)
|
||||
(file-directory-p new-file))
|
||||
(dired-add-entry new-file nil t)
|
||||
(dired-update-file-line new-file))
|
||||
nil)
|
||||
(dired-log (concat "Failed to (un)compress " from-file))
|
||||
from-file)))
|
||||
|
||||
@ -1020,8 +1027,9 @@ command with a prefix argument (the value does not matter)."
|
||||
("\\.7z\\'" "" "7z x -aoa -o%o %i")
|
||||
;; This item controls naming for compression.
|
||||
("\\.tar\\'" ".tgz" nil)
|
||||
;; This item controls the compression of directories
|
||||
(":" ".tar.gz" "tar -cf - %i | gzip -c9 > %o"))
|
||||
;; This item controls the compression of directories. Its REGEXP
|
||||
;; element should never match any valid file name.
|
||||
("\000" ".tar.gz" "tar -cf - %i | gzip -c9 > %o"))
|
||||
"Control changes in file name suffixes for compression and uncompression.
|
||||
Each element specifies one transformation rule, and has the form:
|
||||
(REGEXP NEW-SUFFIX PROGRAM)
|
||||
@ -1145,7 +1153,7 @@ Return nil if no change in files."
|
||||
(condition-case nil
|
||||
(if (file-directory-p file)
|
||||
(progn
|
||||
(setq suffix (cdr (assoc ":" dired-compress-file-suffixes)))
|
||||
(setq suffix (cdr (assoc "\000" dired-compress-file-suffixes)))
|
||||
(when suffix
|
||||
(let ((out-name (concat file (car suffix)))
|
||||
(default-directory (file-name-directory file)))
|
||||
|
@ -1330,8 +1330,7 @@ entry does not exist, return nil."
|
||||
t))
|
||||
|
||||
;; This function bypasses the file name handler approach. It is NOT
|
||||
;; recommended to use it in any package if not absolutely necessary,
|
||||
;; because it won't work for remote file names not supported by Tramp.
|
||||
;; recommended to use it in any package if not absolutely necessary.
|
||||
;; However, it is more performant than `file-local-name', and might be
|
||||
;; useful where performance matters, like in operations over a bulk
|
||||
;; list of file names.
|
||||
@ -1339,16 +1338,14 @@ entry does not exist, return nil."
|
||||
"Return the local name component of NAME.
|
||||
This function removes from NAME the specification of the remote
|
||||
host and the method of accessing the host, leaving only the part
|
||||
that identifies NAME locally on the remote system. NAME must be
|
||||
a string that matches `tramp-file-name-regexp'. If NAME does not
|
||||
match `tramp-file-name-regexp', just NAME is returned. The
|
||||
returned file name can be used directly as argument of
|
||||
`process-file', `start-file-process', or `shell-command'."
|
||||
(save-match-data
|
||||
(or (and (tramp-tramp-file-p name)
|
||||
(string-match (nth 0 tramp-file-name-structure) name)
|
||||
(match-string (nth 4 tramp-file-name-structure) name))
|
||||
name)))
|
||||
that identifies NAME locally on the remote system. If NAME does
|
||||
not match `tramp-file-name-regexp', just `file-local-name' is
|
||||
called. The returned file name can be used directly as argument
|
||||
of `process-file', `start-file-process', or `shell-command'."
|
||||
(or (and (tramp-tramp-file-p name)
|
||||
(string-match (nth 0 tramp-file-name-structure) name)
|
||||
(match-string (nth 4 tramp-file-name-structure) name))
|
||||
(tramp-compat-file-local-name name)))
|
||||
|
||||
;; The localname can be quoted with "/:". Extract this.
|
||||
(defun tramp-unquote-file-local-name (name)
|
||||
|
@ -45,6 +45,7 @@
|
||||
(cc-bytecomp-defvar imenu-case-fold-search)
|
||||
(cc-bytecomp-defvar imenu-generic-expression)
|
||||
(cc-bytecomp-defvar imenu-create-index-function)
|
||||
(cc-bytecomp-defun c-literal-limits)
|
||||
|
||||
|
||||
;; imenu integration
|
||||
@ -437,55 +438,56 @@ Example:
|
||||
(goto-char (point-max))
|
||||
;;
|
||||
(while (re-search-backward cc-imenu-objc-generic-expression nil t)
|
||||
(setq langnum (if (match-beginning OBJC)
|
||||
OBJC
|
||||
(cond
|
||||
((match-beginning Cproto) Cproto)
|
||||
((match-beginning Cgeneralfunc) Cgeneralfunc)
|
||||
((match-beginning Cnoreturn) Cnoreturn))))
|
||||
(setq str (funcall func (match-beginning langnum) (match-end langnum)))
|
||||
;;
|
||||
(cond
|
||||
;;
|
||||
;; C
|
||||
;;
|
||||
((not (eq langnum OBJC))
|
||||
(setq clist (cons (cons str (match-beginning langnum)) clist)))
|
||||
;;
|
||||
;; ObjC
|
||||
;;
|
||||
;; An instance Method
|
||||
((eq (aref str 0) ?-)
|
||||
(setq str (concat "-" (cc-imenu-objc-method-to-selector str)))
|
||||
(setq methodlist (cons (cons str
|
||||
(match-beginning langnum))
|
||||
methodlist)))
|
||||
;; A factory Method
|
||||
((eq (aref str 0) ?+)
|
||||
(setq str (concat "+" (cc-imenu-objc-method-to-selector str)))
|
||||
(setq methodlist (cons (cons str
|
||||
(match-beginning langnum))
|
||||
methodlist)))
|
||||
;; Interface or implementation or protocol
|
||||
((eq (aref str 0) ?@)
|
||||
(setq classcount (1+ classcount))
|
||||
(when (not (c-literal-limits))
|
||||
(setq langnum (if (match-beginning OBJC)
|
||||
OBJC
|
||||
(cond
|
||||
((match-beginning Cproto) Cproto)
|
||||
((match-beginning Cgeneralfunc) Cgeneralfunc)
|
||||
((match-beginning Cnoreturn) Cnoreturn))))
|
||||
(setq str (funcall func (match-beginning langnum) (match-end langnum)))
|
||||
;;
|
||||
(cond
|
||||
((and (> (length str) implen)
|
||||
(string= (substring str 0 implen) "@implementation"))
|
||||
(setq str (substring str implen)
|
||||
str2 "@implementation"))
|
||||
((string= (substring str 0 intflen) "@interface")
|
||||
(setq str (substring str intflen)
|
||||
str2 "@interface"))
|
||||
((string= (substring str 0 prtlen) "@protocol")
|
||||
(setq str (substring str prtlen)
|
||||
str2 "@protocol")))
|
||||
(setq str (cc-imenu-objc-remove-white-space str))
|
||||
(setq methodlist (cons (cons str2
|
||||
(match-beginning langnum))
|
||||
methodlist))
|
||||
(setq toplist (cons (cons str methodlist) toplist)
|
||||
methodlist nil))))
|
||||
;;
|
||||
;; C
|
||||
;;
|
||||
((not (eq langnum OBJC))
|
||||
(setq clist (cons (cons str (match-beginning langnum)) clist)))
|
||||
;;
|
||||
;; ObjC
|
||||
;;
|
||||
;; An instance Method
|
||||
((eq (aref str 0) ?-)
|
||||
(setq str (concat "-" (cc-imenu-objc-method-to-selector str)))
|
||||
(setq methodlist (cons (cons str
|
||||
(match-beginning langnum))
|
||||
methodlist)))
|
||||
;; A factory Method
|
||||
((eq (aref str 0) ?+)
|
||||
(setq str (concat "+" (cc-imenu-objc-method-to-selector str)))
|
||||
(setq methodlist (cons (cons str
|
||||
(match-beginning langnum))
|
||||
methodlist)))
|
||||
;; Interface or implementation or protocol
|
||||
((eq (aref str 0) ?@)
|
||||
(setq classcount (1+ classcount))
|
||||
(cond
|
||||
((and (> (length str) implen)
|
||||
(string= (substring str 0 implen) "@implementation"))
|
||||
(setq str (substring str implen)
|
||||
str2 "@implementation"))
|
||||
((string= (substring str 0 intflen) "@interface")
|
||||
(setq str (substring str intflen)
|
||||
str2 "@interface"))
|
||||
((string= (substring str 0 prtlen) "@protocol")
|
||||
(setq str (substring str prtlen)
|
||||
str2 "@protocol")))
|
||||
(setq str (cc-imenu-objc-remove-white-space str))
|
||||
(setq methodlist (cons (cons str2
|
||||
(match-beginning langnum))
|
||||
methodlist))
|
||||
(setq toplist (cons (cons str methodlist) toplist)
|
||||
methodlist nil)))))
|
||||
|
||||
;; In this buffer, there is only one or zero @{interface|implementation|protocol}.
|
||||
(if (< classcount 2)
|
||||
|
@ -1218,6 +1218,9 @@ IGNORES is a list of glob patterns for files to ignore."
|
||||
#'xref-matches-in-directory
|
||||
"27.1")
|
||||
|
||||
(declare-function tramp-tramp-file-p "tramp")
|
||||
(declare-function tramp-file-local-name "tramp")
|
||||
|
||||
;;;###autoload
|
||||
(defun xref-matches-in-files (regexp files)
|
||||
"Find all matches for REGEXP in FILES.
|
||||
@ -1240,7 +1243,12 @@ FILES must be a list of absolute file names."
|
||||
"")
|
||||
(shell-quote-argument (xref--regexp-to-extended regexp)))))
|
||||
(when remote-id
|
||||
(setq files (mapcar #'file-local-name files)))
|
||||
(require 'tramp)
|
||||
(setq files (mapcar
|
||||
(if (tramp-tramp-file-p dir)
|
||||
#'tramp-file-local-name
|
||||
#'file-local-name)
|
||||
files)))
|
||||
(with-current-buffer output
|
||||
(erase-buffer)
|
||||
(with-temp-buffer
|
||||
|
@ -1242,6 +1242,10 @@ prepare_image_for_display (struct frame *f, struct image *img)
|
||||
if (img->cr_data == NULL || (cairo_pattern_get_type (img->cr_data)
|
||||
!= CAIRO_PATTERN_TYPE_SURFACE))
|
||||
{
|
||||
/* Fill in the background/background_transparent field while
|
||||
we have img->pixmap->data/img->mask->data. */
|
||||
IMAGE_BACKGROUND (img, f, img->pixmap);
|
||||
IMAGE_BACKGROUND_TRANSPARENT (img, f, img->mask);
|
||||
cr_put_image_to_cr_data (img);
|
||||
if (img->cr_data == NULL)
|
||||
{
|
||||
|
@ -98,10 +98,6 @@ sys_thread_yield (void)
|
||||
|
||||
#include <sched.h>
|
||||
|
||||
#ifdef HAVE_SYS_PRCTL_H
|
||||
#include <sys/prctl.h>
|
||||
#endif
|
||||
|
||||
void
|
||||
sys_mutex_init (sys_mutex_t *mutex)
|
||||
{
|
||||
@ -204,9 +200,28 @@ sys_thread_equal (sys_thread_t t, sys_thread_t u)
|
||||
return pthread_equal (t, u);
|
||||
}
|
||||
|
||||
void
|
||||
sys_thread_set_name (const char *name)
|
||||
{
|
||||
#ifdef HAVE_PTHREAD_SETNAME_NP
|
||||
/* We need to truncate here otherwise pthread_setname_np
|
||||
fails to set the name. TASK_COMM_LEN is what the length
|
||||
is called in the Linux kernel headers (Bug#38632). */
|
||||
#define TASK_COMM_LEN 16
|
||||
char p_name[TASK_COMM_LEN];
|
||||
strncpy (p_name, name, TASK_COMM_LEN - 1);
|
||||
p_name[TASK_COMM_LEN - 1] = '\0';
|
||||
#ifdef HAVE_PTHREAD_SETNAME_NP_1ARG
|
||||
pthread_setname_np (p_name);
|
||||
#else
|
||||
pthread_setname_np (pthread_self (), p_name);
|
||||
#endif
|
||||
#endif
|
||||
}
|
||||
|
||||
bool
|
||||
sys_thread_create (sys_thread_t *thread_ptr, const char *name,
|
||||
thread_creation_function *func, void *arg)
|
||||
sys_thread_create (sys_thread_t *thread_ptr, thread_creation_function *func,
|
||||
void *arg)
|
||||
{
|
||||
pthread_attr_t attr;
|
||||
bool result = false;
|
||||
@ -225,13 +240,7 @@ sys_thread_create (sys_thread_t *thread_ptr, const char *name,
|
||||
}
|
||||
|
||||
if (!pthread_attr_setdetachstate (&attr, PTHREAD_CREATE_DETACHED))
|
||||
{
|
||||
result = pthread_create (thread_ptr, &attr, func, arg) == 0;
|
||||
#if defined (HAVE_SYS_PRCTL_H) && defined (HAVE_PRCTL) && defined (PR_SET_NAME)
|
||||
if (result && name != NULL)
|
||||
prctl (PR_SET_NAME, name);
|
||||
#endif
|
||||
}
|
||||
result = pthread_create (thread_ptr, &attr, func, arg) == 0;
|
||||
|
||||
out: ;
|
||||
int error = pthread_attr_destroy (&attr);
|
||||
@ -452,26 +461,24 @@ w32_set_thread_name (DWORD thread_id, const char *name)
|
||||
|
||||
static thread_creation_function *thread_start_address;
|
||||
|
||||
void
|
||||
sys_thread_set_name (const char *name)
|
||||
{
|
||||
w32_set_thread_name (GetCurrentThreadId (), name);
|
||||
}
|
||||
|
||||
/* _beginthread wants a void function, while we are passed a function
|
||||
that returns a pointer. So we use a wrapper. See the command in
|
||||
w32term.h about the need for ALIGN_STACK attribute. */
|
||||
static void ALIGN_STACK
|
||||
w32_beginthread_wrapper (void *arg)
|
||||
{
|
||||
/* FIXME: This isn't very clean: systhread.c is not supposed to know
|
||||
that ARG is a pointer to a thread_state object, or be familiar
|
||||
with thread_state object's structure in general. */
|
||||
struct thread_state *this_thread = arg;
|
||||
|
||||
if (this_thread->thread_name)
|
||||
w32_set_thread_name (GetCurrentThreadId (), this_thread->thread_name);
|
||||
|
||||
(void)thread_start_address (arg);
|
||||
}
|
||||
|
||||
bool
|
||||
sys_thread_create (sys_thread_t *thread_ptr, const char *name,
|
||||
thread_creation_function *func, void *arg)
|
||||
sys_thread_create (sys_thread_t *thread_ptr, thread_creation_function *func,
|
||||
void *arg)
|
||||
{
|
||||
/* FIXME: Do threads that run Lisp require some minimum amount of
|
||||
stack? Zero here means each thread will get the same amount as
|
||||
|
@ -112,10 +112,11 @@ extern sys_thread_t sys_thread_self (void)
|
||||
extern bool sys_thread_equal (sys_thread_t, sys_thread_t)
|
||||
ATTRIBUTE_WARN_UNUSED_RESULT;
|
||||
|
||||
extern bool sys_thread_create (sys_thread_t *, const char *,
|
||||
thread_creation_function *, void *)
|
||||
extern bool sys_thread_create (sys_thread_t *, thread_creation_function *,
|
||||
void *)
|
||||
ATTRIBUTE_WARN_UNUSED_RESULT;
|
||||
|
||||
extern void sys_thread_yield (void);
|
||||
extern void sys_thread_set_name (const char *);
|
||||
|
||||
#endif /* SYSTHREAD_H */
|
||||
|
@ -725,6 +725,9 @@ run_thread (void *state)
|
||||
self->m_stack_bottom = self->stack_top = (char *) &stack_pos;
|
||||
self->thread_id = sys_thread_self ();
|
||||
|
||||
if (self->thread_name)
|
||||
sys_thread_set_name (self->thread_name);
|
||||
|
||||
acquire_global_lock (self);
|
||||
|
||||
/* Put a dummy catcher at top-level so that handlerlist is never NULL.
|
||||
@ -826,13 +829,13 @@ If NAME is given, it must be a string; it names the new thread. */)
|
||||
new_thread->next_thread = all_threads;
|
||||
all_threads = new_thread;
|
||||
|
||||
char const *c_name = !NILP (name) ? SSDATA (ENCODE_UTF_8 (name)) : NULL;
|
||||
char const *c_name = !NILP (name) ? SSDATA (ENCODE_SYSTEM (name)) : NULL;
|
||||
if (c_name)
|
||||
new_thread->thread_name = xstrdup (c_name);
|
||||
else
|
||||
new_thread->thread_name = NULL;
|
||||
sys_thread_t thr;
|
||||
if (! sys_thread_create (&thr, c_name, run_thread, new_thread))
|
||||
if (! sys_thread_create (&thr, run_thread, new_thread))
|
||||
{
|
||||
/* Restore the previous situation. */
|
||||
all_threads = all_threads->next_thread;
|
||||
|
@ -169,8 +169,7 @@ struct thread_state
|
||||
interrupter should broadcast to this condition. */
|
||||
sys_cond_t *wait_condvar;
|
||||
|
||||
/* Thread's name in the locale encoding. Actually used only on
|
||||
WINDOWSNT. */
|
||||
/* Thread's name in the locale encoding. */
|
||||
char *thread_name;
|
||||
|
||||
/* This thread might have released the global lock. If so, this is
|
||||
|
28
src/xdisp.c
28
src/xdisp.c
@ -16244,8 +16244,8 @@ set_cursor_from_row (struct window *w, struct glyph_row *row,
|
||||
bool string_from_text_prop = false;
|
||||
|
||||
/* Don't even try doing anything if called for a mode-line or
|
||||
header-line row, since the rest of the code isn't prepared to
|
||||
deal with such calamities. */
|
||||
header-line or tab-line row, since the rest of the code isn't
|
||||
prepared to deal with such calamities. */
|
||||
eassert (!row->mode_line_p);
|
||||
if (row->mode_line_p)
|
||||
return false;
|
||||
@ -17504,6 +17504,9 @@ try_cursor_movement (Lisp_Object window, struct text_pos startp,
|
||||
else
|
||||
{
|
||||
row = MATRIX_ROW (w->current_matrix, w->last_cursor_vpos);
|
||||
/* Skip the tab-line and header-line rows, if any. */
|
||||
if (row->tab_line_p)
|
||||
++row;
|
||||
if (row->mode_line_p)
|
||||
++row;
|
||||
if (!row->enabled_p)
|
||||
@ -17576,6 +17579,9 @@ try_cursor_movement (Lisp_Object window, struct text_pos startp,
|
||||
|| row->mode_line_p)
|
||||
{
|
||||
row = w->current_matrix->rows;
|
||||
/* Skip the tab-line and header-line rows, if any. */
|
||||
if (row->tab_line_p)
|
||||
++row;
|
||||
if (row->mode_line_p)
|
||||
++row;
|
||||
}
|
||||
@ -17640,8 +17646,9 @@ try_cursor_movement (Lisp_Object window, struct text_pos startp,
|
||||
;
|
||||
else if (rc != CURSOR_MOVEMENT_SUCCESS
|
||||
&& MATRIX_ROW_PARTIALLY_VISIBLE_P (w, row)
|
||||
/* Make sure this isn't a header line by any chance, since
|
||||
then MATRIX_ROW_PARTIALLY_VISIBLE_P might yield true. */
|
||||
/* Make sure this isn't a header line nor a tab-line by
|
||||
any chance, since then MATRIX_ROW_PARTIALLY_VISIBLE_P
|
||||
might yield true. */
|
||||
&& !row->mode_line_p
|
||||
&& !cursor_row_fully_visible_p (w, true, true, true))
|
||||
{
|
||||
@ -18769,11 +18776,14 @@ redisplay_window (Lisp_Object window, bool just_this_one_p)
|
||||
}
|
||||
}
|
||||
/* Finally, fall back on the first row of the window after the
|
||||
header line (if any). This is slightly better than not
|
||||
displaying the cursor at all. */
|
||||
tab-line and header line (if any). This is slightly better
|
||||
than not displaying the cursor at all. */
|
||||
if (!row)
|
||||
{
|
||||
row = matrix->rows;
|
||||
/* Skip the tab-line and header-line rows, if any. */
|
||||
if (row->tab_line_p)
|
||||
++row;
|
||||
if (row->mode_line_p)
|
||||
++row;
|
||||
}
|
||||
@ -19787,7 +19797,9 @@ row_containing_pos (struct window *w, ptrdiff_t charpos,
|
||||
ptrdiff_t mindif = BUF_ZV (XBUFFER (w->contents)) + 1;
|
||||
int last_y;
|
||||
|
||||
/* If we happen to start on a header-line, skip that. */
|
||||
/* If we happen to start on a header-line or a tab-line, skip that. */
|
||||
if (row->tab_line_p)
|
||||
++row;
|
||||
if (row->mode_line_p)
|
||||
++row;
|
||||
|
||||
@ -22380,7 +22392,7 @@ find_row_edges (struct it *it, struct glyph_row *row,
|
||||
if (STRINGP (it->object)
|
||||
/* this is not the first row */
|
||||
&& row > it->w->desired_matrix->rows
|
||||
/* previous row is not the header line */
|
||||
/* previous row is not the header line or tab-line */
|
||||
&& !r1->mode_line_p
|
||||
/* previous row also ends in a newline from a string */
|
||||
&& r1->ends_in_newline_from_string_p)
|
||||
|
@ -5089,6 +5089,8 @@ Internal use only, use `display-monitor-attributes-list' instead. */)
|
||||
#elif defined HAVE_GTK3
|
||||
scale = gdk_screen_get_monitor_scale_factor (gscreen, i);
|
||||
#endif
|
||||
rec.x *= scale;
|
||||
rec.y *= scale;
|
||||
rec.width *= scale;
|
||||
rec.height *= scale;
|
||||
work.x *= scale;
|
||||
|
@ -8934,6 +8934,10 @@ handle_one_xevent (struct x_display_info *dpyinfo,
|
||||
if (f)
|
||||
x_cr_update_surface_desired_size (f, configureEvent.xconfigure.width,
|
||||
configureEvent.xconfigure.height);
|
||||
else if (any && configureEvent.xconfigure.window == FRAME_X_WINDOW (any))
|
||||
x_cr_update_surface_desired_size (any,
|
||||
configureEvent.xconfigure.width,
|
||||
configureEvent.xconfigure.height);
|
||||
#endif
|
||||
#ifdef USE_GTK
|
||||
if (!f
|
||||
|
Loading…
Reference in New Issue
Block a user