diff options
| author | Glenn Morris | 2020-01-08 09:09:47 -0800 |
|---|---|---|
| committer | Glenn Morris | 2020-01-08 09:09:47 -0800 |
| commit | b968b733a2a0450eb7312a5e72c059ec3c59ddd9 (patch) | |
| tree | da0790ada823a4d7dee009e9df63b3b24d0d539b | |
| parent | f8a0b02949342b887822e7756fd36f06536c9c01 (diff) | |
| parent | 6cd9ccb0a28ec03ffe180b7429e0378511b7d459 (diff) | |
| download | emacs-b968b733a2a0450eb7312a5e72c059ec3c59ddd9.tar.gz emacs-b968b733a2a0450eb7312a5e72c059ec3c59ddd9.zip | |
Merge from origin/emacs-27
6cd9ccb0a2 (origin/emacs-27) Fix compression of directories in Dired
42329e6d3b ; * 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-list
b46c75b16c xref-matches-in-files: Big Tramp speed-up
883b3490d8 * 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 windows
9063124b91 Use pthread_setname_np to set thread name
# Conflicts:
# etc/NEWS
# lisp/net/tramp.el
| -rw-r--r-- | configure.ac | 21 | ||||
| -rw-r--r-- | etc/NEWS.27 | 297 | ||||
| -rw-r--r-- | lisp/dired-aux.el | 16 | ||||
| -rw-r--r-- | lisp/net/tramp.el | 21 | ||||
| -rw-r--r-- | lisp/progmodes/cc-menus.el | 98 | ||||
| -rw-r--r-- | lisp/progmodes/xref.el | 10 | ||||
| -rw-r--r-- | src/image.c | 4 | ||||
| -rw-r--r-- | src/systhread.c | 53 | ||||
| -rw-r--r-- | src/systhread.h | 5 | ||||
| -rw-r--r-- | src/thread.c | 7 | ||||
| -rw-r--r-- | src/thread.h | 3 | ||||
| -rw-r--r-- | src/xdisp.c | 28 | ||||
| -rw-r--r-- | src/xfns.c | 2 | ||||
| -rw-r--r-- | src/xterm.c | 4 |
14 files changed, 325 insertions, 244 deletions
diff --git a/configure.ac b/configure.ac index 24d21c7afd9..08a45021224 100644 --- a/configure.ac +++ b/configure.ac | |||
| @@ -1767,7 +1767,7 @@ AC_CHECK_HEADERS_ONCE( | |||
| 1767 | sys/sysinfo.h | 1767 | sys/sysinfo.h |
| 1768 | coff.h pty.h | 1768 | coff.h pty.h |
| 1769 | sys/resource.h | 1769 | sys/resource.h |
| 1770 | sys/utsname.h pwd.h utmp.h util.h sys/prctl.h) | 1770 | sys/utsname.h pwd.h utmp.h util.h) |
| 1771 | 1771 | ||
| 1772 | AC_CACHE_CHECK([for ADDR_NO_RANDOMIZE], | 1772 | AC_CACHE_CHECK([for ADDR_NO_RANDOMIZE], |
| 1773 | [emacs_cv_personality_addr_no_randomize], | 1773 | [emacs_cv_personality_addr_no_randomize], |
| @@ -4192,9 +4192,26 @@ pthread_sigmask strsignal setitimer timer_getoverrun \ | |||
| 4192 | sendto recvfrom getsockname getifaddrs freeifaddrs \ | 4192 | sendto recvfrom getsockname getifaddrs freeifaddrs \ |
| 4193 | gai_strerror sync \ | 4193 | gai_strerror sync \ |
| 4194 | getpwent endpwent getgrent endgrent \ | 4194 | getpwent endpwent getgrent endgrent \ |
| 4195 | cfmakeraw cfsetspeed __executable_start log2 prctl) | 4195 | cfmakeraw cfsetspeed __executable_start log2 pthread_setname_np) |
| 4196 | LIBS=$OLD_LIBS | 4196 | LIBS=$OLD_LIBS |
| 4197 | 4197 | ||
| 4198 | if test "$ac_cv_func_pthread_setname_np" = "yes"; then | ||
| 4199 | AC_CACHE_CHECK( | ||
| 4200 | [whether pthread_setname_np takes a single argument], | ||
| 4201 | [emacs_cv_pthread_setname_np_1arg], | ||
| 4202 | [AC_COMPILE_IFELSE( | ||
| 4203 | [AC_LANG_PROGRAM( | ||
| 4204 | [[#include <pthread.h>]], | ||
| 4205 | [[pthread_setname_np ("a");]])], | ||
| 4206 | [emacs_cv_pthread_setname_np_1arg=yes], | ||
| 4207 | [emacs_cv_pthread_setname_np_1arg=no])]) | ||
| 4208 | if test "$emacs_cv_pthread_setname_np_1arg" = "yes"; then | ||
| 4209 | AC_DEFINE( | ||
| 4210 | HAVE_PTHREAD_SETNAME_NP_1ARG, 1, | ||
| 4211 | [Define to 1 if pthread_setname_np takes a single argument.]) | ||
| 4212 | fi | ||
| 4213 | fi | ||
| 4214 | |||
| 4198 | dnl No need to check for posix_memalign if aligned_alloc works. | 4215 | dnl No need to check for posix_memalign if aligned_alloc works. |
| 4199 | AC_CHECK_FUNCS([aligned_alloc posix_memalign], [break]) | 4216 | AC_CHECK_FUNCS([aligned_alloc posix_memalign], [break]) |
| 4200 | AC_CHECK_DECLS([aligned_alloc], [], [], [[#include <stdlib.h>]]) | 4217 | AC_CHECK_DECLS([aligned_alloc], [], [], [[#include <stdlib.h>]]) |
diff --git a/etc/NEWS.27 b/etc/NEWS.27 index a8c8e2763e4..6d4a6119afa 100644 --- a/etc/NEWS.27 +++ b/etc/NEWS.27 | |||
| @@ -69,8 +69,8 @@ When built with the portable dumping support (which is the default), | |||
| 69 | Emacs looks for the 'emacs.pdmp' file, generated during the build, in | 69 | Emacs looks for the 'emacs.pdmp' file, generated during the build, in |
| 70 | its data directory at startup, and loads the dumped state from there. | 70 | its data directory at startup, and loads the dumped state from there. |
| 71 | The new command-line argument '--dump-file=FILE' allows to specify a | 71 | The new command-line argument '--dump-file=FILE' allows to specify a |
| 72 | non-default '.pdmp' file to load the state from; see the node "Initial | 72 | non-default '.pdmp' file to load the state from; see the node |
| 73 | Options" in the Emacs manual for more information. | 73 | "(emacs) Initial Options" in the Emacs manual for more information. |
| 74 | 74 | ||
| 75 | An Emacs started via a dump file can create a new dump file only if it | 75 | An Emacs started via a dump file can create a new dump file only if it |
| 76 | was invoked with the '-batch' option. (This is a temporary | 76 | 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. | |||
| 92 | '--enable-checking=xmallocoverrun' have been withdrawn. The former | 92 | '--enable-checking=xmallocoverrun' have been withdrawn. The former |
| 93 | made Emacs irredeemably slow, and the latter made it crash. Neither | 93 | made Emacs irredeemably slow, and the latter made it crash. Neither |
| 94 | option was useful with modern debugging tools such as AddressSanitizer. | 94 | option was useful with modern debugging tools such as AddressSanitizer. |
| 95 | (See etc/DEBUG for the details of using the modern replacements of the | 95 | (See "etc/DEBUG" for the details of using the modern replacements of the |
| 96 | removed configure options.) | 96 | removed configure options.) |
| 97 | 97 | ||
| 98 | --- | 98 | --- |
| @@ -158,20 +158,25 @@ support. | |||
| 158 | For example, it looks for init.el in "~/.config/emacs/init.el", and | 158 | For example, it looks for init.el in "~/.config/emacs/init.el", and |
| 159 | similarly for other init files. | 159 | similarly for other init files. |
| 160 | 160 | ||
| 161 | The XDG_CONFIG_HOME environment variable (which defaults to "~/.config") | 161 | The 'XDG_CONFIG_HOME' environment variable (which defaults to "~/.config") |
| 162 | specifies the parent directory of these and other configuration files, | 162 | specifies the parent directory of these and other configuration files, |
| 163 | and will override their traditional locations (the home directory, | 163 | and will override their traditional locations (the home directory, |
| 164 | "~/.emacs.d", etc.). | 164 | "~/.emacs.d", etc.). |
| 165 | 165 | ||
| 166 | Emacs will still look for init files in their traditional locations if | 166 | Emacs will still look for init files in their traditional locations if |
| 167 | XDG_CONFIG_HOME/emacs does not exist, so invoking Emacs with | 167 | "$XDG_CONFIG_HOME/emacs" does not exist, but "~/.emacs.d" or |
| 168 | XDG_CONFIG_HOME='/nowhere' might be useful if your new-location init | 168 | "~/.emacs" does exist, so invoking Emacs with XDG_CONFIG_HOME='/nowhere' |
| 169 | files are scrambled, or if you want to force Emacs to ignore files | 169 | might be useful if your new-location init files are scrambled, or if |
| 170 | under XDG_CONFIG_HOME for some other reason. | 170 | you want to force Emacs to ignore files under 'XDG_CONFIG_HOME' for |
| 171 | some other reason. | ||
| 172 | |||
| 173 | If neither "$XDG_CONFIG_HOME/emacs" nor "~/.emacs.d" exist, Emacs will | ||
| 174 | now default to "$XDG_CONFIG_HOME/emacs", and will create that directory | ||
| 175 | and set 'user-emacs-directory' to point to it. | ||
| 171 | 176 | ||
| 172 | +++ | 177 | +++ |
| 173 | ** Emacs can now be configured using an early init file. | 178 | ** Emacs can now be configured using an early init file. |
| 174 | The file is called 'early-init.el', in 'user-emacs-directory'. It is | 179 | The file is called "early-init.el", in 'user-emacs-directory'. It is |
| 175 | loaded very early in the startup process: before graphical elements | 180 | loaded very early in the startup process: before graphical elements |
| 176 | such as the tool bar are initialized, and before the package manager | 181 | such as the tool bar are initialized, and before the package manager |
| 177 | is initialized. The primary purpose is to allow customizing how the | 182 | 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 | |||
| 278 | compatibility. | 283 | compatibility. |
| 279 | 284 | ||
| 280 | ** emacsclient | 285 | ** emacsclient |
| 281 | |||
| 282 | +++ | 286 | +++ |
| 283 | *** emacsclient now supports the 'EMACS_SOCKET_NAME' environment variable. | 287 | *** emacsclient now supports the 'EMACS_SOCKET_NAME' environment variable. |
| 284 | The command-line argument '--socket-name' overrides it. | 288 | 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 | |||
| 463 | shown by 'switch-to-prev-buffer' and 'switch-to-next-buffer' more | 467 | shown by 'switch-to-prev-buffer' and 'switch-to-next-buffer' more |
| 464 | stringently than the now obsolete 'switch-to-visible-buffer'. | 468 | stringently than the now obsolete 'switch-to-visible-buffer'. |
| 465 | 469 | ||
| 466 | ** New 'flex' completion style | 470 | ** New 'flex' completion style. |
| 467 | An implementation of popular "flex/fuzzy/scatter" completion which | 471 | An implementation of popular "flex/fuzzy/scatter" completion which |
| 468 | matches strings where the pattern appears as a subsequence. Put | 472 | matches strings where the pattern appears as a subsequence. Put |
| 469 | simply, makes "foo" complete to both "barfoo" and "frodo". Add 'flex' | 473 | simply, makes "foo" complete to both "barfoo" and "frodo". Add 'flex' |
| @@ -488,7 +492,6 @@ Consequently, a theme generally shouldn't specify this attribute | |||
| 488 | unless it has a good reason to do so. | 492 | unless it has a good reason to do so. |
| 489 | 493 | ||
| 490 | ** Connection-local variables | 494 | ** Connection-local variables |
| 491 | |||
| 492 | +++ | 495 | +++ |
| 493 | *** Connection-local variables are applied by default like file-local | 496 | *** Connection-local variables are applied by default like file-local |
| 494 | and directory-local variables. | 497 | and directory-local variables. |
| @@ -516,7 +519,6 @@ Emacs configured with Cairo drawing and linked with cairo >= 1.16.0. | |||
| 516 | 519 | ||
| 517 | +++ | 520 | +++ |
| 518 | ** Emacs now optionally displays a fill column indicator. | 521 | ** Emacs now optionally displays a fill column indicator. |
| 519 | |||
| 520 | This is similar to what 'fill-column-indicator' package provides, but | 522 | This is similar to what 'fill-column-indicator' package provides, but |
| 521 | much faster and compatible with 'show-trailing-whitespace'. | 523 | much faster and compatible with 'show-trailing-whitespace'. |
| 522 | 524 | ||
| @@ -528,7 +530,7 @@ The indicator is not displayed at all in minibuffer windows and | |||
| 528 | in tooltips, as it is not useful there. | 530 | in tooltips, as it is not useful there. |
| 529 | 531 | ||
| 530 | There are 2 new buffer local variables and 1 face to customize this | 532 | There are 2 new buffer local variables and 1 face to customize this |
| 531 | mode they are described in the manual "(emacs) Display". | 533 | mode, they are described in the manual "(emacs) Display". |
| 532 | 534 | ||
| 533 | +++ | 535 | +++ |
| 534 | ** 'progress-reporter-update' accepts a suffix string to display. | 536 | ** '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. | |||
| 542 | 544 | ||
| 543 | +++ | 545 | +++ |
| 544 | ** Emacs now interprets RGB triplets like HTML, SVG, and CSS do. | 546 | ** Emacs now interprets RGB triplets like HTML, SVG, and CSS do. |
| 545 | |||
| 546 | The X convention previously used differed slightly, particularly for | 547 | The X convention previously used differed slightly, particularly for |
| 547 | RGB triplets with a single hexadecimal digit per component. | 548 | RGB triplets with a single hexadecimal digit per component. |
| 548 | 549 | ||
| @@ -550,8 +551,8 @@ RGB triplets with a single hexadecimal digit per component. | |||
| 550 | ** The toolbar now shows the equivalent key binding in its tooltips. | 551 | ** The toolbar now shows the equivalent key binding in its tooltips. |
| 551 | 552 | ||
| 552 | --- | 553 | --- |
| 553 | ** The File menu-bar menu was re-arranged: Print menu items moved to | 554 | ** The File menu-bar menu was re-arranged. |
| 554 | submenu, and also added the new entries for tabs. | 555 | Print menu items moved to submenu, and also added the new entries for tabs. |
| 555 | 556 | ||
| 556 | --- | 557 | --- |
| 557 | ** 'scroll-lock-mode' is now bound to the 'Scroll_Lock' key globally. | 558 | ** '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). | |||
| 729 | 730 | ||
| 730 | --- | 731 | --- |
| 731 | ** desktop | 732 | ** desktop |
| 733 | |||
| 732 | *** When called interactively with a prefix arg 'C-u', 'desktop-read' | 734 | *** When called interactively with a prefix arg 'C-u', 'desktop-read' |
| 733 | now prompts the user for the directory containing the desktop file. | 735 | now prompts the user for the directory containing the desktop file. |
| 734 | 736 | ||
| @@ -745,28 +747,34 @@ an offset to absolute line numbers. | |||
| 745 | 747 | ||
| 746 | +++ | 748 | +++ |
| 747 | ** winner | 749 | ** winner |
| 750 | |||
| 748 | *** A new user option, 'winner-boring-buffers-regexp', has been added. | 751 | *** A new user option, 'winner-boring-buffers-regexp', has been added. |
| 749 | 752 | ||
| 750 | ** table | 753 | ** table |
| 751 | ** 'table-generate-source' and friends now support outputting wiki and | 754 | |
| 755 | *** 'table-generate-source' and friends now support outputting wiki and | ||
| 752 | mediawiki format tables. | 756 | mediawiki format tables. |
| 753 | 757 | ||
| 754 | --- | 758 | --- |
| 755 | ** telnet-mode | 759 | ** telnet-mode |
| 760 | |||
| 756 | *** Reverting a buffer in 'telnet-mode' will restart a closed connection. | 761 | *** Reverting a buffer in 'telnet-mode' will restart a closed connection. |
| 757 | 762 | ||
| 758 | ** goto-addr | 763 | ** goto-addr |
| 764 | |||
| 759 | *** A way to more conveniently specify what URI address schemes that | 765 | *** A way to more conveniently specify what URI address schemes that |
| 760 | should be ignored have been added via the | 766 | should be ignored have been added via the |
| 761 | 'goto-address-uri-schemes-ignored' variable. | 767 | 'goto-address-uri-schemes-ignored' variable. |
| 762 | 768 | ||
| 763 | +++ | 769 | +++ |
| 764 | ** tex-mode | 770 | ** tex-mode |
| 771 | |||
| 765 | *** 'latex-noindent-commands' controls indentation of certain commands. | 772 | *** 'latex-noindent-commands' controls indentation of certain commands. |
| 766 | You can use this new user option to control indentation of arguments of | 773 | You can use this new user option to control indentation of arguments of |
| 767 | \emph, \footnote, and similar commands. | 774 | \emph, \footnote, and similar commands. |
| 768 | 775 | ||
| 769 | ** byte compiler | 776 | ** byte compiler |
| 777 | |||
| 770 | *** 'byte-compile-dynamic' is now obsolete. | 778 | *** 'byte-compile-dynamic' is now obsolete. |
| 771 | This is because on the one hand it suffers from misbehavior in corner | 779 | This is because on the one hand it suffers from misbehavior in corner |
| 772 | cases that have plagued it for years, and on the other experiments indicated | 780 | 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 | |||
| 778 | byte-compile-file' and the like. | 786 | byte-compile-file' and the like. |
| 779 | 787 | ||
| 780 | ** compile.el | 788 | ** compile.el |
| 789 | |||
| 781 | --- | 790 | --- |
| 782 | *** In 'compilation-error-regexp-alist', 'line' (and 'end-line') can | 791 | *** In 'compilation-error-regexp-alist', 'line' (and 'end-line') can |
| 783 | be functions. | 792 | be functions. |
| 793 | |||
| 784 | +++ | 794 | +++ |
| 785 | *** 'compilation-context-lines' can now take the value t; this is like | 795 | *** 'compilation-context-lines' can now take the value t; this is like |
| 786 | nil, but instead of scrolling the current line to the top of the | 796 | nil, but instead of scrolling the current line to the top of the |
| 787 | screen when there is no left fringe, it inserts a visible arrow before | 797 | screen when there is no left fringe, it inserts a visible arrow before |
| 788 | column zero. | 798 | column zero. |
| 799 | |||
| 789 | --- | 800 | --- |
| 790 | *** The new 'compilation-transform-file-match-alist' user option can | 801 | *** The new 'compilation-transform-file-match-alist' user option can |
| 791 | be used to transform file name matches compilation output, and remove | 802 | be used to transform file name matches compilation output, and remove |
| 792 | known false positives being recognized as warnings/errors. | 803 | known false positives being recognized as warnings/errors. |
| 793 | 804 | ||
| 794 | ** cl-lib.el | 805 | ** cl-lib.el |
| 806 | |||
| 795 | +++ | 807 | +++ |
| 796 | *** 'cl-defstruct' has a new ':noinline' argument to prevent inlining | 808 | *** 'cl-defstruct' has a new ':noinline' argument to prevent inlining |
| 797 | its functions. | 809 | its functions. |
| @@ -803,13 +815,16 @@ its functions. | |||
| 803 | *** 'cl-values-list' will now signal an error if its argument isn't a list. | 815 | *** 'cl-values-list' will now signal an error if its argument isn't a list. |
| 804 | 816 | ||
| 805 | ** doc-view.el | 817 | ** doc-view.el |
| 818 | |||
| 806 | *** New commands 'doc-view-presentation' and 'doc-view-fit-window-to-page'. | 819 | *** New commands 'doc-view-presentation' and 'doc-view-fit-window-to-page'. |
| 807 | *** Added support for password-protected PDF files | 820 | |
| 821 | *** Added support for password-protected PDF files. | ||
| 808 | 822 | ||
| 809 | *** A new user option 'doc-view-pdftotext-program-args' has been added | 823 | *** A new user option 'doc-view-pdftotext-program-args' has been added |
| 810 | to allow controlling how the conversion to text is done. | 824 | to allow controlling how the conversion to text is done. |
| 811 | 825 | ||
| 812 | ** Ido | 826 | ** Ido |
| 827 | |||
| 813 | *** New user option 'ido-big-directories' to mark directories whose | 828 | *** New user option 'ido-big-directories' to mark directories whose |
| 814 | names match certain regular expressions as big. Ido won't attempt to | 829 | names match certain regular expressions as big. Ido won't attempt to |
| 815 | list the contents of such directories when completing file names. | 830 | list the contents of such directories when completing file names. |
| @@ -841,13 +856,13 @@ at the end of the active minibuffer. | |||
| 841 | a character using the minibuffer by 'read-char-from-minibuffer'. | 856 | a character using the minibuffer by 'read-char-from-minibuffer'. |
| 842 | 857 | ||
| 843 | ** map.el | 858 | ** map.el |
| 859 | |||
| 844 | *** Now also understands plists. | 860 | *** Now also understands plists. |
| 845 | *** Now defined via generic functions that can be extended via 'cl-defmethod'. | 861 | *** Now defined via generic functions that can be extended via 'cl-defmethod'. |
| 846 | *** Deprecate the 'map-put' macro in favor of a new 'map-put!' function. | 862 | *** Deprecate the 'map-put' macro in favor of a new 'map-put!' function. |
| 847 | *** 'map-contains-key' now returns a boolean rather than the key. | 863 | *** 'map-contains-key' now returns a boolean rather than the key. |
| 848 | *** Deprecate the 'testfn' args of 'map-elt' and 'map-contains-key'. | 864 | *** Deprecate the 'testfn' args of 'map-elt' and 'map-contains-key'. |
| 849 | *** New generic function 'map-insert'. | 865 | *** New generic function 'map-insert'. |
| 850 | |||
| 851 | +++ | 866 | +++ |
| 852 | *** The 'type' arg can be a list '(hash-table :key1 VAL1 :key2 VAL2 ...)'. | 867 | *** The 'type' arg can be a list '(hash-table :key1 VAL1 :key2 VAL2 ...)'. |
| 853 | 868 | ||
| @@ -917,7 +932,6 @@ The mode is automatically enabled in files that start with the | |||
| 917 | ** project.el | 932 | ** project.el |
| 918 | 933 | ||
| 919 | *** New commands 'project-search' and 'project-query-replace-regexp'. | 934 | *** New commands 'project-search' and 'project-query-replace-regexp'. |
| 920 | |||
| 921 | *** New user option 'project-read-file-name-function'. | 935 | *** New user option 'project-read-file-name-function'. |
| 922 | 936 | ||
| 923 | ** Etags | 937 | ** Etags |
| @@ -1065,7 +1079,7 @@ by Hg. | |||
| 1065 | you invoke 'C-x v m' ('vc-merge'). | 1079 | you invoke 'C-x v m' ('vc-merge'). |
| 1066 | 1080 | ||
| 1067 | --- | 1081 | --- |
| 1068 | *** The Hg (Mercurial) back-end now use tags, branches and bookmarks | 1082 | *** The Hg (Mercurial) back-end now uses tags, branches and bookmarks |
| 1069 | instead of revision numbers as completion candidates when it prompts | 1083 | instead of revision numbers as completion candidates when it prompts |
| 1070 | for a revision. | 1084 | for a revision. |
| 1071 | 1085 | ||
| @@ -1117,6 +1131,7 @@ Emacs 24.1, but wasn't documented until now. | |||
| 1117 | *** New command 'diff-buffers' interactively diffs two buffers. | 1131 | *** New command 'diff-buffers' interactively diffs two buffers. |
| 1118 | 1132 | ||
| 1119 | ** Diff mode | 1133 | ** Diff mode |
| 1134 | |||
| 1120 | +++ | 1135 | +++ |
| 1121 | *** Hunks are now automatically refined by font-lock. | 1136 | *** Hunks are now automatically refined by font-lock. |
| 1122 | To disable refinement, set the new user option 'diff-refine' to nil. | 1137 | To disable refinement, set the new user option 'diff-refine' to nil. |
| @@ -1244,7 +1259,7 @@ included. | |||
| 1244 | Database passwords can now by stored in NETRC or JSON data files that | 1259 | Database passwords can now by stored in NETRC or JSON data files that |
| 1245 | may optionally be encrypted. When establishing an interactive session | 1260 | may optionally be encrypted. When establishing an interactive session |
| 1246 | with the database via 'sql-connect' or a product specific function, | 1261 | with the database via 'sql-connect' or a product specific function, |
| 1247 | like 'sql-mysql' or 'my-postgres', the password wallet will be | 1262 | like 'sql-mysql' or 'sql-postgres', the password wallet will be |
| 1248 | searched for the password. The 'sql-product', 'sql-server', | 1263 | searched for the password. The 'sql-product', 'sql-server', |
| 1249 | 'sql-database', and the 'sql-username' will be used to identify the | 1264 | 'sql-database', and the 'sql-username' will be used to identify the |
| 1250 | appropriate authorization. This eliminates the discouraged practice of | 1265 | appropriate authorization. This eliminates the discouraged practice of |
| @@ -1316,8 +1331,8 @@ package data. It is therefore recommended to keep this line. | |||
| 1316 | 1331 | ||
| 1317 | +++ | 1332 | +++ |
| 1318 | *** Change of 'package-check-signature' for packages with multiple sigs. | 1333 | *** Change of 'package-check-signature' for packages with multiple sigs. |
| 1319 | In previous Emacsen, 't' checked that all signatures are valid. | 1334 | In previous Emacsen, t checked that all signatures are valid. |
| 1320 | Now 't' only checks that at least one signature is valid and the new 'all' | 1335 | Now t only checks that at least one signature is valid and the new 'all' |
| 1321 | value needs to be used if you want to enforce that all signatures | 1336 | value needs to be used if you want to enforce that all signatures |
| 1322 | are valid. This only affects packages with multiple signatures. | 1337 | are valid. This only affects packages with multiple signatures. |
| 1323 | 1338 | ||
| @@ -1397,9 +1412,9 @@ This command finds definitions of the identifier at the place of a | |||
| 1397 | mouse click event, and is intended to be bound to a mouse event. | 1412 | mouse click event, and is intended to be bound to a mouse event. |
| 1398 | 1413 | ||
| 1399 | +++ | 1414 | +++ |
| 1400 | *** Changing 'xref-marker-ring-length' works after 'xref.el' is loaded. | 1415 | *** Changing 'xref-marker-ring-length' works after xref.el is loaded. |
| 1401 | Previously, setting 'xref-marker-ring-length' would only take effect | 1416 | Previously, setting 'xref-marker-ring-length' would only take effect |
| 1402 | if set before 'xref.el' was loaded. | 1417 | if set before xref.el was loaded. |
| 1403 | 1418 | ||
| 1404 | --- | 1419 | --- |
| 1405 | *** 'xref-find-definitions' now sets the mark at the buffer position | 1420 | *** 'xref-find-definitions' now sets the mark at the buffer position |
| @@ -1418,8 +1433,7 @@ behavior and the display of results. | |||
| 1418 | *** Search results show the buffer even for one hit. | 1433 | *** Search results show the buffer even for one hit. |
| 1419 | The search-type Xref commands (e.g. 'xref-find-references' or | 1434 | The search-type Xref commands (e.g. 'xref-find-references' or |
| 1420 | 'project-find-regexp') now show the results buffer even when there is | 1435 | 'project-find-regexp') now show the results buffer even when there is |
| 1421 | only one hit. This can be altered by changing | 1436 | only one hit. This can be altered by changing 'xref-show-xrefs-function'. |
| 1422 | 'xref-show-xrefs-function'. | ||
| 1423 | 1437 | ||
| 1424 | +++ | 1438 | +++ |
| 1425 | *** Xref buffers support refreshing the search results. | 1439 | *** Xref buffers support refreshing the search results. |
| @@ -1441,7 +1455,7 @@ completion facilities. | |||
| 1441 | ** Ecomplete | 1455 | ** Ecomplete |
| 1442 | 1456 | ||
| 1443 | --- | 1457 | --- |
| 1444 | *** The ecomplete sorting has changed to a decay-based algorithm. | 1458 | *** The Ecomplete sorting has changed to a decay-based algorithm. |
| 1445 | This can be controlled by the new 'ecomplete-sort-predicate' user option. | 1459 | This can be controlled by the new 'ecomplete-sort-predicate' user option. |
| 1446 | 1460 | ||
| 1447 | --- | 1461 | --- |
| @@ -1466,14 +1480,14 @@ are marked with "." in the summary mode lines.) | |||
| 1466 | 'never' for never expunging messages, 'immediately' for immediately | 1480 | 'never' for never expunging messages, 'immediately' for immediately |
| 1467 | expunging deleted messages, and 'on-exit' to expunge deleted articles | 1481 | expunging deleted messages, and 'on-exit' to expunge deleted articles |
| 1468 | when exiting the group's summary buffer. Setting 'nnimap-expunge' to | 1482 | when exiting the group's summary buffer. Setting 'nnimap-expunge' to |
| 1469 | 'nil' or 't' is still supported but not recommended, since it may | 1483 | nil or t is still supported but not recommended, since it may |
| 1470 | result in Gnus expunging all messages that have been flagged as | 1484 | result in Gnus expunging all messages that have been flagged as |
| 1471 | deleted by any IMAP client (rather than just those that have been | 1485 | deleted by any IMAP client (rather than just those that have been |
| 1472 | deleted by Gnus). | 1486 | deleted by Gnus). |
| 1473 | 1487 | ||
| 1474 | +++ | 1488 | +++ |
| 1475 | *** New user option 'gnus-use-atomic-windows' makes Gnus window layouts atomic. | 1489 | *** New user option 'gnus-use-atomic-windows' makes Gnus window layouts atomic. |
| 1476 | See the "Atomic Windows" section of the Elisp manual for details. | 1490 | See the "(elisp) Atomic Windows" node of the Elisp manual for details. |
| 1477 | 1491 | ||
| 1478 | +++ | 1492 | +++ |
| 1479 | *** There's a new value for 'gnus-article-date-headers', | 1493 | *** 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. | |||
| 1511 | *** nil is no longer an allowed value for 'mm-text-html-renderer'. | 1525 | *** nil is no longer an allowed value for 'mm-text-html-renderer'. |
| 1512 | 1526 | ||
| 1513 | +++ | 1527 | +++ |
| 1514 | The default value of 'mm-inline-large-images' has changed from nil to | 1528 | *** The default value of 'mm-inline-large-images' has changed from nil |
| 1515 | 'resize', which means that large images will be resized instead of | 1529 | to 'resize', which means that large images will be resized instead of |
| 1516 | displayed with an external program by default. | 1530 | displayed with an external program by default. |
| 1517 | 1531 | ||
| 1518 | +++ | 1532 | +++ |
| 1519 | *** A new Gnus summary mode command, 'S A' | 1533 | *** A new Gnus summary mode command, 'S A' ('gnus-summary-attach-article') |
| 1520 | ('gnus-summary-attach-article') can be used to attach the current | 1534 | can be used to attach the current article(s) to a pre-existing Message |
| 1521 | article(s) to a pre-existing Message buffer, or create a new Message | 1535 | buffer, or create a new Message buffer with the article(s) attached. |
| 1522 | buffer with the article(s) attached. | ||
| 1523 | 1536 | ||
| 1524 | +++ | 1537 | +++ |
| 1525 | *** A new Gnus summary mode command, 'w' | 1538 | *** A new Gnus summary mode command, 'w' ('gnus-summary-browse-url') |
| 1526 | ('gnus-summary-browse-url') scans the article buffer for URLs, and | 1539 | scans the article buffer for URLs, and offers them to the user to open |
| 1527 | offers them to the user to open with 'browse-url'. | 1540 | with 'browse-url'. |
| 1528 | 1541 | ||
| 1529 | --- | 1542 | --- |
| 1530 | *** New user option 'nnir-notmuch-filter-group-names-function'. | 1543 | *** New user option 'nnir-notmuch-filter-group-names-function'. |
| @@ -1545,8 +1558,7 @@ fail. | |||
| 1545 | *** New hook 'erc-insert-done-hook'. | 1558 | *** New hook 'erc-insert-done-hook'. |
| 1546 | This hook is called after strings have been inserted into the buffer, | 1559 | This hook is called after strings have been inserted into the buffer, |
| 1547 | and is free to alter point and window configurations, as it's not | 1560 | and is free to alter point and window configurations, as it's not |
| 1548 | called from inside a 'save-excursion', as opposed to | 1561 | called from inside a 'save-excursion', as opposed to 'erc-insert-post-hook'. |
| 1549 | 'erc-insert-post-hook'. | ||
| 1550 | 1562 | ||
| 1551 | --- | 1563 | --- |
| 1552 | *** 'erc-button-google-url' has been renamed to 'erc-button-search-url' | 1564 | *** '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 | |||
| 1632 | 'smtpmail-servers-requiring-authorization' user option can be used. | 1644 | 'smtpmail-servers-requiring-authorization' user option can be used. |
| 1633 | 1645 | ||
| 1634 | +++ | 1646 | +++ |
| 1635 | *** smtpmail will now try resending mail when getting a transient 4xx | 1647 | *** smtpmail will now try resending mail when getting a transient "4xx" |
| 1636 | error message from the SMTP server. The new 'smtpmail-retries' | 1648 | error message from the SMTP server. The new 'smtpmail-retries' |
| 1637 | user option says how many times to retry. | 1649 | user option says how many times to retry. |
| 1638 | 1650 | ||
| 1639 | ** Footnote mode | 1651 | ** Footnote mode |
| 1640 | 1652 | ||
| 1641 | --- | 1653 | --- |
| 1642 | *** Support Hebrew-style footnotes | 1654 | *** Support Hebrew-style footnotes. |
| 1643 | 1655 | ||
| 1644 | --- | 1656 | --- |
| 1645 | *** Footnote text lines are now aligned. | 1657 | *** Footnote text lines are now aligned. |
| @@ -1733,7 +1745,7 @@ with a numeric argument. | |||
| 1733 | of matches in the Isearch prompt. User options | 1745 | of matches in the Isearch prompt. User options |
| 1734 | 'lazy-count-prefix-format' and 'lazy-count-suffix-format' define the | 1746 | 'lazy-count-prefix-format' and 'lazy-count-suffix-format' define the |
| 1735 | format of the current and the total number of matches in the prompt's | 1747 | format of the current and the total number of matches in the prompt's |
| 1736 | prefix and suffix respectively. | 1748 | prefix and suffix, respectively. |
| 1737 | 1749 | ||
| 1738 | --- | 1750 | --- |
| 1739 | *** 'lazy-highlight-buffer' highlights matches in the full buffer. | 1751 | *** 'lazy-highlight-buffer' highlights matches in the full buffer. |
| @@ -1746,7 +1758,6 @@ highlight in one iteration while processing the full buffer. | |||
| 1746 | 1758 | ||
| 1747 | +++ | 1759 | +++ |
| 1748 | *** New isearch bindings. | 1760 | *** New isearch bindings. |
| 1749 | |||
| 1750 | 'C-M-z' invokes new function 'isearch-yank-until-char', which yanks | 1761 | 'C-M-z' invokes new function 'isearch-yank-until-char', which yanks |
| 1751 | everything from point up to but not including the specified | 1762 | everything from point up to but not including the specified |
| 1752 | character into the search string. This is especially useful for | 1763 | 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 | |||
| 1763 | JUST the search string. | 1774 | JUST the search string. |
| 1764 | 1775 | ||
| 1765 | +++ | 1776 | +++ |
| 1766 | *** New user option 'isearch-yank-on-move' provides options 't' and 'shift' | 1777 | *** New user option 'isearch-yank-on-move' provides options t and 'shift' |
| 1767 | to extend the search string by yanking text that ends at the new | 1778 | to extend the search string by yanking text that ends at the new |
| 1768 | position after moving point in the current buffer. 'shift' extends | 1779 | position after moving point in the current buffer. 'shift' extends |
| 1769 | the search string by motion commands while holding down the shift key. | 1780 | the search string by motion commands while holding down the shift key. |
| 1770 | 1781 | ||
| 1771 | +++ | 1782 | +++ |
| 1772 | *** 'isearch-allow-scroll' provides new option 'unlimited' to allow | 1783 | *** 'isearch-allow-scroll' provides a new option 'unlimited' to allow |
| 1773 | scrolling any distance off screen. | 1784 | scrolling any distance off screen. |
| 1774 | 1785 | ||
| 1775 | --- | 1786 | --- |
| @@ -1794,7 +1805,7 @@ IOTA WITH OXIA". | |||
| 1794 | *** New char-folding options: 'char-fold-include' lets you add ad hoc | 1805 | *** New char-folding options: 'char-fold-include' lets you add ad hoc |
| 1795 | foldings, 'char-fold-exclude' to remove foldings from default decomposition, | 1806 | foldings, 'char-fold-exclude' to remove foldings from default decomposition, |
| 1796 | and 'char-fold-symmetric' to search for any of an equivalence class of | 1807 | and 'char-fold-symmetric' to search for any of an equivalence class of |
| 1797 | characters. For example, with a 'nil' value of 'char-fold-symmetric' | 1808 | characters. For example, with a nil value of 'char-fold-symmetric' |
| 1798 | you can search for "e" to find "é", but not vice versa. With a non-nil | 1809 | you can search for "e" to find "é", but not vice versa. With a non-nil |
| 1799 | value you can search for either, for example, you can search for "é" | 1810 | value you can search for either, for example, you can search for "é" |
| 1800 | to find "e". | 1811 | to find "e". |
| @@ -1908,7 +1919,7 @@ This is useful for games where lower scores are better, like time-based games. | |||
| 1908 | ** Filecache | 1919 | ** Filecache |
| 1909 | 1920 | ||
| 1910 | --- | 1921 | --- |
| 1911 | *** Completing filenames in the minibuffer via 'C-TAB' now uses the | 1922 | *** Completing file names in the minibuffer via 'C-TAB' now uses the |
| 1912 | styles as configured by the user option 'completion-styles'. | 1923 | styles as configured by the user option 'completion-styles'. |
| 1913 | 1924 | ||
| 1914 | ** New macros 'thunk-let' and 'thunk-let*'. | 1925 | ** New macros 'thunk-let' and 'thunk-let*'. |
| @@ -2055,8 +2066,8 @@ Tramp for some look-alike remote file names. | |||
| 2055 | 2066 | ||
| 2056 | +++ | 2067 | +++ |
| 2057 | *** For some connection methods, like "su" or "sudo", the host name in | 2068 | *** For some connection methods, like "su" or "sudo", the host name in |
| 2058 | ad-hoc multi-hop file names must match the previous hop. Default host | 2069 | multi-hop file names must match the previous hop. Default host names |
| 2059 | names are adjusted to the host name from the previous hop. | 2070 | are adjusted to the host name from the previous hop. |
| 2060 | 2071 | ||
| 2061 | +++ | 2072 | +++ |
| 2062 | *** For the connection methods "sudo" and "doas" there exists a | 2073 | *** For the connection methods "sudo" and "doas" there exists a |
| @@ -2092,15 +2103,6 @@ Two new user options are provided for this: | |||
| 2092 | *** The return value of method 'register-val-describe' includes the | 2103 | *** The return value of method 'register-val-describe' includes the |
| 2093 | names of buffers shown by the windows of a window configuration. | 2104 | names of buffers shown by the windows of a window configuration. |
| 2094 | 2105 | ||
| 2095 | --- | ||
| 2096 | ** The options.el library has been removed. | ||
| 2097 | It was obsolete since Emacs 22.1, replaced by customize. | ||
| 2098 | |||
| 2099 | --- | ||
| 2100 | ** The tls.el and starttls.el libraries are now marked obsolete. | ||
| 2101 | Use of built-in libgnutls based functionality (described in the Emacs | ||
| 2102 | GnuTLS manual) is recommended instead. | ||
| 2103 | |||
| 2104 | ** Message | 2106 | ** Message |
| 2105 | 2107 | ||
| 2106 | --- | 2108 | --- |
| @@ -2135,7 +2137,7 @@ are formatted as MIME digests. | |||
| 2135 | *** 'message-forward-included-headers' has changed its default to | 2137 | *** 'message-forward-included-headers' has changed its default to |
| 2136 | exclude most headers when forwarding. | 2138 | exclude most headers when forwarding. |
| 2137 | 2139 | ||
| 2138 | *** 'mml-secure-openpgp-sign-with-sender' sets also "gpg --sender" | 2140 | *** 'mml-secure-openpgp-sign-with-sender' sets also "gpg --sender". |
| 2139 | When 'mml-secure-openpgp-sign-with-sender' is non-nil message sender's | 2141 | When 'mml-secure-openpgp-sign-with-sender' is non-nil message sender's |
| 2140 | email address (in addition to its old behavior) will also be used to | 2142 | email address (in addition to its old behavior) will also be used to |
| 2141 | set gpg's "--sender email@domain" option. | 2143 | set gpg's "--sender email@domain" option. |
| @@ -2145,10 +2147,10 @@ The option is useful for two reasons when verifying the signature: | |||
| 2145 | 1. GnuPG's TOFU statistics are updated for the specific user id | 2147 | 1. GnuPG's TOFU statistics are updated for the specific user id |
| 2146 | (email) only. See gpg(1) man page about "--sender". | 2148 | (email) only. See gpg(1) man page about "--sender". |
| 2147 | 2149 | ||
| 2148 | 2. GnuPG's '--auto-key-retrieve' functionality can use WKD (web key | 2150 | 2. GnuPG's "--auto-key-retrieve" functionality can use WKD (web key |
| 2149 | directory) method for finding the signer's key. You need GnuPG | 2151 | directory) method for finding the signer's key. You need GnuPG |
| 2150 | 2.2.17 to fully benefit from this feature. See gpg(1) man page for | 2152 | 2.2.17 to fully benefit from this feature. See gpg(1) man page for |
| 2151 | '--auto-key-retrieve'. | 2153 | "--auto-key-retrieve". |
| 2152 | 2154 | ||
| 2153 | --- | 2155 | --- |
| 2154 | ** EasyPG | 2156 | ** EasyPG |
| @@ -2166,9 +2168,9 @@ been removed. Use 'encode-coding-string', 'decode-coding-string', and | |||
| 2166 | --- | 2168 | --- |
| 2167 | *** 'epg-context' structure supports now 'sender' slot. | 2169 | *** 'epg-context' structure supports now 'sender' slot. |
| 2168 | The value of the new 'sender' slot (if a string) is used to set gpg's | 2170 | The value of the new 'sender' slot (if a string) is used to set gpg's |
| 2169 | '--sender' option. This feature is used by | 2171 | "--sender" option. This feature is used by |
| 2170 | 'mml-secure-openpgp-sign-with-sender'. See gpg(1) manual page about | 2172 | 'mml-secure-openpgp-sign-with-sender'. See gpg(1) manual page about |
| 2171 | '--sender' for more information. | 2173 | "--sender" for more information. |
| 2172 | 2174 | ||
| 2173 | --- | 2175 | --- |
| 2174 | ** Rmail | 2176 | ** Rmail |
| @@ -2409,7 +2411,7 @@ of an idle Emacs, but may fail on some network file systems; set | |||
| 2409 | notification is not supported. The default value is nil. | 2411 | notification is not supported. The default value is nil. |
| 2410 | 2412 | ||
| 2411 | +++ | 2413 | +++ |
| 2412 | *** New variable 'buffer-auto-revert-by-notification' | 2414 | *** New variable 'buffer-auto-revert-by-notification'. |
| 2413 | A major mode can declare that notification on the buffer's default | 2415 | A major mode can declare that notification on the buffer's default |
| 2414 | directory is sufficient to know when updates are required, by setting | 2416 | directory is sufficient to know when updates are required, by setting |
| 2415 | the new variable 'buffer-auto-revert-by-notification' to a non-nil | 2417 | 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 | |||
| 2546 | file-local variable, you may need to update the value. | 2548 | file-local variable, you may need to update the value. |
| 2547 | 2549 | ||
| 2548 | ** mode-local | 2550 | ** mode-local |
| 2551 | |||
| 2549 | --- | 2552 | --- |
| 2550 | *** Declare 'define-overload' and 'define-child-mode' as obsolete. | 2553 | *** Declare 'define-overload' and 'define-child-mode' as obsolete. |
| 2551 | 2554 | ||
| @@ -2560,13 +2563,38 @@ To do this, use 'c-toggle-comment-style', if needed, to set the desired | |||
| 2560 | default comment style (block or line); then set the user option | 2563 | default comment style (block or line); then set the user option |
| 2561 | 'c-mark-wrong-style-of-comment' to non-nil. | 2564 | 'c-mark-wrong-style-of-comment' to non-nil. |
| 2562 | 2565 | ||
| 2566 | ** Mailcap | ||
| 2567 | |||
| 2568 | --- | ||
| 2569 | *** The new function 'mailcap-file-name-to-mime-type' has been added. | ||
| 2570 | It's a simple convenience function for looking up MIME types based on | ||
| 2571 | file name extensions. | ||
| 2572 | |||
| 2573 | --- | ||
| 2574 | *** The default way the list of possible external viewers for MIME | ||
| 2575 | types is sorted and chosen has changed. Earlier, the most specific | ||
| 2576 | viewer was chosen, even if there was a general override in "~/.mailcap". | ||
| 2577 | For instance, if "/etc/mailcap" has an entry for "image/gif", that one | ||
| 2578 | will be chosen even if you have an entry for "image/*" in your | ||
| 2579 | "~/.mailcap" file. But with the new method, entries from "~/.mailcap" | ||
| 2580 | overrides all system and Emacs-provided defaults. To get the old | ||
| 2581 | method back, set 'mailcap-prefer-mailcap-viewers' to nil. | ||
| 2582 | |||
| 2583 | ** URL | ||
| 2584 | |||
| 2585 | --- | ||
| 2586 | *** The 'file:' handler no longer looks for "index.html" in | ||
| 2587 | directories if you ask it for a "file:///dir" URL. Since this is a | ||
| 2588 | low-level library, such decisions (if they are to be made at all) are | ||
| 2589 | left to higher-level functions. | ||
| 2590 | |||
| 2563 | 2591 | ||
| 2564 | * New Modes and Packages in Emacs 27.1 | 2592 | * New Modes and Packages in Emacs 27.1 |
| 2565 | 2593 | ||
| 2566 | ** Tab Bars | 2594 | ** Tab Bars |
| 2567 | 2595 | ||
| 2568 | +++ | 2596 | +++ |
| 2569 | *** Tab Bar mode. | 2597 | *** Tab Bar mode |
| 2570 | The new command 'tab-bar-mode' enables the tab bar at the top of each | 2598 | The new command 'tab-bar-mode' enables the tab bar at the top of each |
| 2571 | frame, where you can use tabs to switch between named persistent | 2599 | frame, where you can use tabs to switch between named persistent |
| 2572 | window configurations. | 2600 | window configurations. |
| @@ -2749,43 +2777,48 @@ fixnum for such arguments. | |||
| 2749 | 2777 | ||
| 2750 | --- | 2778 | --- |
| 2751 | ** Some functions and variables obsolete since Emacs 22 have been removed: | 2779 | ** Some functions and variables obsolete since Emacs 22 have been removed: |
| 2752 | archive-mouse-extract, assoc-ignore-case, assoc-ignore-representation, | 2780 | 'archive-mouse-extract', 'assoc-ignore-case', 'assoc-ignore-representation', |
| 2753 | backward-text-line, blink-cursor, bookmark-exit-hooks, | 2781 | 'backward-text-line', 'blink-cursor', 'bookmark-exit-hooks', |
| 2754 | c-opt-op-identitier-prefix, comint-use-prompt-regexp-instead-of-fields, | 2782 | 'c-opt-op-identitier-prefix', 'comint-use-prompt-regexp-instead-of-fields', |
| 2755 | compilation-finish-function, count-text-lines, cperl-vc-header-alist, | 2783 | 'compilation-finish-function', 'count-text-lines', 'cperl-vc-header-alist', |
| 2756 | custom-face-save-command, cvs-display-full-path, cvs-fileinfo->full-path, | 2784 | 'custom-face-save-command', 'cvs-display-full-path', 'cvs-fileinfo->full-path', |
| 2757 | delete-frame-hook, derived-mode-class, describe-char-after, describe-project, | 2785 | 'delete-frame-hook', 'derived-mode-class', 'describe-char-after', |
| 2758 | desktop-basefilename, desktop-buffer-handlers, desktop-buffer-misc-functions, | 2786 | 'describe-project', 'desktop-basefilename', 'desktop-buffer-handlers', |
| 2759 | desktop-buffer-modes-to-save, desktop-enable, desktop-load-default, | 2787 | 'desktop-buffer-misc-functions', 'desktop-buffer-modes-to-save', |
| 2760 | dired-omit-files-p, disabled-command-hook, dungeon-mode-map, | 2788 | 'desktop-enable', 'desktop-load-default', 'dired-omit-files-p', |
| 2761 | electric-nroff-mode, electric-nroff-newline, electric-perl-terminator, | 2789 | 'disabled-command-hook', 'dungeon-mode-map', 'electric-nroff-mode', |
| 2762 | focus-frame, forward-text-line, generic-define-mswindows-modes, | 2790 | 'electric-nroff-newline', 'electric-perl-terminator', 'focus-frame', |
| 2763 | generic-define-unix-modes, generic-font-lock-defaults, goto-address-at-mouse, | 2791 | 'forward-text-line', 'generic-define-mswindows-modes', |
| 2764 | highlight-changes-colours, ibuffer-elide-long-columns, ibuffer-hooks, | 2792 | 'generic-define-unix-modes', 'generic-font-lock-defaults', |
| 2765 | ibuffer-mode-hooks, icalendar-convert-diary-to-ical, | 2793 | 'goto-address-at-mouse', 'highlight-changes-colours', |
| 2766 | icalendar-extract-ical-from-buffer, imenu-always-use-completion-buffer-p, | 2794 | 'ibuffer-elide-long-columns', 'ibuffer-hooks', 'ibuffer-mode-hooks', |
| 2767 | ipconfig-program, ipconfig-program-options, isearch-lazy-highlight-cleanup, | 2795 | 'icalendar-convert-diary-to-ical', 'icalendar-extract-ical-from-buffer', |
| 2768 | isearch-lazy-highlight-initial-delay, isearch-lazy-highlight-interval, | 2796 | 'imenu-always-use-completion-buffer-p', 'ipconfig-program', |
| 2769 | isearch-lazy-highlight-max-at-a-time, iswitchb-use-fonts, | 2797 | 'ipconfig-program-options', 'isearch-lazy-highlight-cleanup', |
| 2770 | latin1-char-displayable-p, mouse-wheel-click-button, mouse-wheel-down-button, | 2798 | 'isearch-lazy-highlight-initial-delay', 'isearch-lazy-highlight-interval', |
| 2771 | mouse-wheel-up-button, new-frame, pascal-outline, process-kill-without-query, | 2799 | 'isearch-lazy-highlight-max-at-a-time', 'iswitchb-use-fonts', |
| 2772 | recentf-menu-append-commands-p, rmail-pop-password, | 2800 | 'latin1-char-displayable-p', 'mouse-wheel-click-button', |
| 2773 | rmail-pop-password-required, savehist-load, set-default-font, | 2801 | 'mouse-wheel-down-button', 'mouse-wheel-up-button', 'new-frame', |
| 2774 | spam-list-of-processors, speedbar-add-ignored-path-regexp, | 2802 | 'pascal-outline', 'process-kill-without-query', |
| 2775 | speedbar-buffers-line-path, speedbar-ignored-path-expressions, | 2803 | 'recentf-menu-append-commands-p', 'rmail-pop-password', |
| 2776 | speedbar-ignored-path-regexp, speedbar-line-path, speedbar-path-line, | 2804 | 'rmail-pop-password-required', 'savehist-load', 'set-default-font', |
| 2777 | timer-set-time-with-usecs, tooltip-gud-display, tooltip-gud-modes, | 2805 | 'spam-list-of-processors', 'speedbar-add-ignored-path-regexp', |
| 2778 | tooltip-gud-toggle-dereference, unfocus-frame, unload-hook-features-list, | 2806 | 'speedbar-buffers-line-path', 'speedbar-ignored-path-expressions', |
| 2779 | update-autoloads-from-directories, vc-comment-ring, vc-comment-ring-index, | 2807 | 'speedbar-ignored-path-regexp', 'speedbar-line-path', 'speedbar-path-line', |
| 2780 | vc-comment-search-forward, vc-comment-search-reverse, vc-comment-to-change-log, | 2808 | 'timer-set-time-with-usecs', 'tooltip-gud-display', 'tooltip-gud-modes', |
| 2781 | vc-diff-switches-list, vc-next-comment, vc-previous-comment, view-todo, | 2809 | 'tooltip-gud-toggle-dereference', 'unfocus-frame', 'unload-hook-features-list', |
| 2782 | x-lost-selection-hooks, x-sent-selection-hooks. | 2810 | 'update-autoloads-from-directories', 'vc-comment-ring', 'vc-comment-ring-index', |
| 2811 | 'vc-comment-search-forward', 'vc-comment-search-reverse', | ||
| 2812 | 'vc-comment-to-change-log', 'vc-diff-switches-list', 'vc-next-comment', | ||
| 2813 | 'vc-previous-comment', 'view-todo', 'x-lost-selection-hooks', | ||
| 2814 | 'x-sent-selection-hooks'. | ||
| 2783 | 2815 | ||
| 2784 | --- | 2816 | --- |
| 2785 | ** Further functions and variables obsolete since Emacs 24 have been removed: | 2817 | ** Further functions and variables obsolete since Emacs 24 have been removed: |
| 2786 | default-directory-alist, dired-default-directory, | 2818 | 'default-directory-alist', 'dired-default-directory', |
| 2787 | dired-default-directory-alist, dired-enable-local-variables, | 2819 | 'dired-default-directory-alist', 'dired-enable-local-variables', |
| 2788 | dired-hack-local-variables, dired-local-variables-file, dired-omit-here-always. | 2820 | 'dired-hack-local-variables', 'dired-local-variables-file', |
| 2821 | 'dired-omit-here-always'. | ||
| 2789 | 2822 | ||
| 2790 | +++ | 2823 | +++ |
| 2791 | ** Garbage collection no longer treats miscellaneous objects specially; | 2824 | ** Garbage collection no longer treats miscellaneous objects specially; |
| @@ -2864,6 +2897,20 @@ where it scales the image under the mouse pointer. | |||
| 2864 | ** 'help-follow-symbol' now signals 'user-error' if point (or the | 2897 | ** 'help-follow-symbol' now signals 'user-error' if point (or the |
| 2865 | position pointed to by the argument POS) is not in a symbol. | 2898 | position pointed to by the argument POS) is not in a symbol. |
| 2866 | 2899 | ||
| 2900 | --- | ||
| 2901 | ** The options.el library has been removed. | ||
| 2902 | It was obsolete since Emacs 22.1, replaced by customize. | ||
| 2903 | |||
| 2904 | --- | ||
| 2905 | ** The tls.el and starttls.el libraries are now marked obsolete. | ||
| 2906 | Use of built-in libgnutls based functionality (described in the Emacs | ||
| 2907 | GnuTLS manual) is recommended instead. | ||
| 2908 | |||
| 2909 | --- | ||
| 2910 | ** The url-ns.el library is now marked obsolete. | ||
| 2911 | This library is used to open configuration files for the long defunct | ||
| 2912 | web browser Netscape, and is no longer relevant. | ||
| 2913 | |||
| 2867 | 2914 | ||
| 2868 | * Lisp Changes in Emacs 27.1 | 2915 | * Lisp Changes in Emacs 27.1 |
| 2869 | 2916 | ||
| @@ -3062,12 +3109,12 @@ informational messages that look pleasing during the Emacs build. | |||
| 3062 | 3109 | ||
| 3063 | --- | 3110 | --- |
| 3064 | ** New 'help-fns-describe-variable-functions' hook. | 3111 | ** New 'help-fns-describe-variable-functions' hook. |
| 3065 | Makes it possible to add metadata information to 'describe-variable'. | 3112 | It makes it possible to add metadata information to 'describe-variable'. |
| 3066 | 3113 | ||
| 3067 | ** i18n (internationalization) | 3114 | ** i18n (internationalization) |
| 3068 | 3115 | ||
| 3069 | --- | 3116 | --- |
| 3070 | *** ngettext can be used now to return the right plural form | 3117 | *** 'ngettext' can be used now to return the right plural form |
| 3071 | according to the given numeric value. | 3118 | according to the given numeric value. |
| 3072 | 3119 | ||
| 3073 | +++ | 3120 | +++ |
| @@ -3080,7 +3127,7 @@ according to the given numeric value. | |||
| 3080 | ** 'lookup-key' can take a list of keymaps as argument. | 3127 | ** 'lookup-key' can take a list of keymaps as argument. |
| 3081 | 3128 | ||
| 3082 | +++ | 3129 | +++ |
| 3083 | ** 'condition-case' now accepts 't' to match any error symbol. | 3130 | ** 'condition-case' now accepts t to match any error symbol. |
| 3084 | 3131 | ||
| 3085 | +++ | 3132 | +++ |
| 3086 | ** New function 'proper-list-p'. | 3133 | ** New function 'proper-list-p'. |
| @@ -3152,7 +3199,7 @@ are unaffected by these changes. | |||
| 3152 | 3199 | ||
| 3153 | In addition, a number of functions now allow the caller to detect what | 3200 | In addition, a number of functions now allow the caller to detect what |
| 3154 | has changed since last redisplay: 'window-old-buffer' returns for any | 3201 | has changed since last redisplay: 'window-old-buffer' returns for any |
| 3155 | window the buffer it showed at that time. ‘old-selected-window’ and | 3202 | window the buffer it showed at that time. 'old-selected-window' and |
| 3156 | 'old-selected-frame' return the window and frame that were selected | 3203 | 'old-selected-frame' return the window and frame that were selected |
| 3157 | during last redisplay. 'window-old-pixel-width' (renamed from | 3204 | during last redisplay. 'window-old-pixel-width' (renamed from |
| 3158 | 'window-pixel-width-before-size-change'), 'window-old-pixel-height' | 3205 | '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 | |||
| 3317 | that was decompressed successfully before failing will be inserted | 3364 | that was decompressed successfully before failing will be inserted |
| 3318 | into the buffer. | 3365 | into the buffer. |
| 3319 | 3366 | ||
| 3320 | ** Mailcap | ||
| 3321 | |||
| 3322 | --- | ||
| 3323 | *** The new function 'mailcap-file-name-to-mime-type' has been added. | ||
| 3324 | It's a simple convenience function for looking up MIME types based on | ||
| 3325 | file name extensions. | ||
| 3326 | |||
| 3327 | --- | ||
| 3328 | *** The default way the list of possible external viewers for MIME | ||
| 3329 | types is sorted and chosen has changed. Earlier, the most specific | ||
| 3330 | viewer was chosen, even if there was a general override in "~/.mailcap". | ||
| 3331 | For instance, if "/etc/mailcap" has an entry for "image/gif", that one | ||
| 3332 | will be chosen even if you have an entry for "image/*" in your | ||
| 3333 | "~/.mailcap" file. But with the new method, entries from "~/.mailcap" | ||
| 3334 | overrides all system and Emacs-provided defaults. To get the old | ||
| 3335 | method back, set 'mailcap-prefer-mailcap-viewers' to nil. | ||
| 3336 | |||
| 3337 | ** URL | ||
| 3338 | |||
| 3339 | --- | ||
| 3340 | *** The 'file:' handler no longer looks for "index.html" in | ||
| 3341 | directories if you ask it for a "file:///dir" URL. Since this is a | ||
| 3342 | low-level library, such decisions (if they are to be made at all) are | ||
| 3343 | left to higher-level functions. | ||
| 3344 | |||
| 3345 | --- | ||
| 3346 | ** The url-ns.el library is now marked obsolete. | ||
| 3347 | This library is used to open configuration files for the long defunct | ||
| 3348 | web browser Netscape, and is no longer relevant. | ||
| 3349 | |||
| 3350 | ** Image mode | 3367 | ** Image mode |
| 3351 | 3368 | ||
| 3352 | --- | 3369 | --- |
| @@ -3465,7 +3482,7 @@ case. | |||
| 3465 | It is a convenient and readable way to specify a regexp that should | 3482 | It is a convenient and readable way to specify a regexp that should |
| 3466 | not match anything, and is as fast as any such regexp can be. | 3483 | not match anything, and is as fast as any such regexp can be. |
| 3467 | 3484 | ||
| 3468 | ++++ | 3485 | +++ |
| 3469 | ** New functions to handle the URL variant of base-64 encoding. | 3486 | ** New functions to handle the URL variant of base-64 encoding. |
| 3470 | New functions 'base64url-encode-string' and 'base64url-encode-region' | 3487 | New functions 'base64url-encode-string' and 'base64url-encode-region' |
| 3471 | implement the url-variant of base-64 encoding as defined in RFC4648. | 3488 | implement the url-variant of base-64 encoding as defined in RFC4648. |
| @@ -3479,7 +3496,7 @@ encoding. | |||
| 3479 | The new third argument is a string put between the number and unit; it | 3496 | The new third argument is a string put between the number and unit; it |
| 3480 | defaults to the empty string. The new fourth argument is a string | 3497 | defaults to the empty string. The new fourth argument is a string |
| 3481 | representing the unit to use; it defaults to "B" when the second | 3498 | representing the unit to use; it defaults to "B" when the second |
| 3482 | argument is 'iec' and the empty string otherwise. We recomment a | 3499 | argument is 'iec' and the empty string otherwise. We recommend a |
| 3483 | space or non-breaking space as third argument, and "B" as fourth | 3500 | space or non-breaking space as third argument, and "B" as fourth |
| 3484 | argument, circumstances allowing. | 3501 | argument, circumstances allowing. |
| 3485 | 3502 | ||
| @@ -3538,7 +3555,7 @@ ordinary keys, function keys and mouse clicks. This allows using them | |||
| 3538 | in their standard macOS way for composing characters. | 3555 | in their standard macOS way for composing characters. |
| 3539 | 3556 | ||
| 3540 | ** The special handling of 'frame-title-format' on NS where setting it | 3557 | ** The special handling of 'frame-title-format' on NS where setting it |
| 3541 | to 't' would enable the macOS proxy icon has been replaced with a | 3558 | to t would enable the macOS proxy icon has been replaced with a |
| 3542 | separate variable, 'ns-use-proxy-icon'. 'frame-title-format' will now | 3559 | separate variable, 'ns-use-proxy-icon'. 'frame-title-format' will now |
| 3543 | work as on other platforms. | 3560 | work as on other platforms. |
| 3544 | 3561 | ||
diff --git a/lisp/dired-aux.el b/lisp/dired-aux.el index 59d389dc630..0069c1744dc 100644 --- a/lisp/dired-aux.el +++ b/lisp/dired-aux.el | |||
| @@ -992,7 +992,14 @@ command with a prefix argument (the value does not matter)." | |||
| 992 | (ignore-errors (dired-remove-entry new-file)) | 992 | (ignore-errors (dired-remove-entry new-file)) |
| 993 | (goto-char start) | 993 | (goto-char start) |
| 994 | ;; Now replace the current line with an entry for NEW-FILE. | 994 | ;; Now replace the current line with an entry for NEW-FILE. |
| 995 | (dired-update-file-line new-file) nil) | 995 | ;; But don't remove the current line if either FROM-FILE or |
| 996 | ;; NEW-FILE is a directory, because compressing/uncompressing | ||
| 997 | ;; directories doesn't remove the original. | ||
| 998 | (if (or (file-directory-p from-file) | ||
| 999 | (file-directory-p new-file)) | ||
| 1000 | (dired-add-entry new-file nil t) | ||
| 1001 | (dired-update-file-line new-file)) | ||
| 1002 | nil) | ||
| 996 | (dired-log (concat "Failed to (un)compress " from-file)) | 1003 | (dired-log (concat "Failed to (un)compress " from-file)) |
| 997 | from-file))) | 1004 | from-file))) |
| 998 | 1005 | ||
| @@ -1020,8 +1027,9 @@ command with a prefix argument (the value does not matter)." | |||
| 1020 | ("\\.7z\\'" "" "7z x -aoa -o%o %i") | 1027 | ("\\.7z\\'" "" "7z x -aoa -o%o %i") |
| 1021 | ;; This item controls naming for compression. | 1028 | ;; This item controls naming for compression. |
| 1022 | ("\\.tar\\'" ".tgz" nil) | 1029 | ("\\.tar\\'" ".tgz" nil) |
| 1023 | ;; This item controls the compression of directories | 1030 | ;; This item controls the compression of directories. Its REGEXP |
| 1024 | (":" ".tar.gz" "tar -cf - %i | gzip -c9 > %o")) | 1031 | ;; element should never match any valid file name. |
| 1032 | ("\000" ".tar.gz" "tar -cf - %i | gzip -c9 > %o")) | ||
| 1025 | "Control changes in file name suffixes for compression and uncompression. | 1033 | "Control changes in file name suffixes for compression and uncompression. |
| 1026 | Each element specifies one transformation rule, and has the form: | 1034 | Each element specifies one transformation rule, and has the form: |
| 1027 | (REGEXP NEW-SUFFIX PROGRAM) | 1035 | (REGEXP NEW-SUFFIX PROGRAM) |
| @@ -1145,7 +1153,7 @@ Return nil if no change in files." | |||
| 1145 | (condition-case nil | 1153 | (condition-case nil |
| 1146 | (if (file-directory-p file) | 1154 | (if (file-directory-p file) |
| 1147 | (progn | 1155 | (progn |
| 1148 | (setq suffix (cdr (assoc ":" dired-compress-file-suffixes))) | 1156 | (setq suffix (cdr (assoc "\000" dired-compress-file-suffixes))) |
| 1149 | (when suffix | 1157 | (when suffix |
| 1150 | (let ((out-name (concat file (car suffix))) | 1158 | (let ((out-name (concat file (car suffix))) |
| 1151 | (default-directory (file-name-directory file))) | 1159 | (default-directory (file-name-directory file))) |
diff --git a/lisp/net/tramp.el b/lisp/net/tramp.el index 22bac9ce459..a7c9b34d29d 100644 --- a/lisp/net/tramp.el +++ b/lisp/net/tramp.el | |||
| @@ -1330,8 +1330,7 @@ entry does not exist, return nil." | |||
| 1330 | t)) | 1330 | t)) |
| 1331 | 1331 | ||
| 1332 | ;; This function bypasses the file name handler approach. It is NOT | 1332 | ;; This function bypasses the file name handler approach. It is NOT |
| 1333 | ;; recommended to use it in any package if not absolutely necessary, | 1333 | ;; recommended to use it in any package if not absolutely necessary. |
| 1334 | ;; because it won't work for remote file names not supported by Tramp. | ||
| 1335 | ;; However, it is more performant than `file-local-name', and might be | 1334 | ;; However, it is more performant than `file-local-name', and might be |
| 1336 | ;; useful where performance matters, like in operations over a bulk | 1335 | ;; useful where performance matters, like in operations over a bulk |
| 1337 | ;; list of file names. | 1336 | ;; list of file names. |
| @@ -1339,16 +1338,14 @@ entry does not exist, return nil." | |||
| 1339 | "Return the local name component of NAME. | 1338 | "Return the local name component of NAME. |
| 1340 | This function removes from NAME the specification of the remote | 1339 | This function removes from NAME the specification of the remote |
| 1341 | host and the method of accessing the host, leaving only the part | 1340 | host and the method of accessing the host, leaving only the part |
| 1342 | that identifies NAME locally on the remote system. NAME must be | 1341 | that identifies NAME locally on the remote system. If NAME does |
| 1343 | a string that matches `tramp-file-name-regexp'. If NAME does not | 1342 | not match `tramp-file-name-regexp', just `file-local-name' is |
| 1344 | match `tramp-file-name-regexp', just NAME is returned. The | 1343 | called. The returned file name can be used directly as argument |
| 1345 | returned file name can be used directly as argument of | 1344 | of `process-file', `start-file-process', or `shell-command'." |
| 1346 | `process-file', `start-file-process', or `shell-command'." | 1345 | (or (and (tramp-tramp-file-p name) |
| 1347 | (save-match-data | 1346 | (string-match (nth 0 tramp-file-name-structure) name) |
| 1348 | (or (and (tramp-tramp-file-p name) | 1347 | (match-string (nth 4 tramp-file-name-structure) name)) |
| 1349 | (string-match (nth 0 tramp-file-name-structure) name) | 1348 | (tramp-compat-file-local-name name))) |
| 1350 | (match-string (nth 4 tramp-file-name-structure) name)) | ||
| 1351 | name))) | ||
| 1352 | 1349 | ||
| 1353 | ;; The localname can be quoted with "/:". Extract this. | 1350 | ;; The localname can be quoted with "/:". Extract this. |
| 1354 | (defun tramp-unquote-file-local-name (name) | 1351 | (defun tramp-unquote-file-local-name (name) |
diff --git a/lisp/progmodes/cc-menus.el b/lisp/progmodes/cc-menus.el index 9c8c7ab56f5..97037dea6e8 100644 --- a/lisp/progmodes/cc-menus.el +++ b/lisp/progmodes/cc-menus.el | |||
| @@ -45,6 +45,7 @@ | |||
| 45 | (cc-bytecomp-defvar imenu-case-fold-search) | 45 | (cc-bytecomp-defvar imenu-case-fold-search) |
| 46 | (cc-bytecomp-defvar imenu-generic-expression) | 46 | (cc-bytecomp-defvar imenu-generic-expression) |
| 47 | (cc-bytecomp-defvar imenu-create-index-function) | 47 | (cc-bytecomp-defvar imenu-create-index-function) |
| 48 | (cc-bytecomp-defun c-literal-limits) | ||
| 48 | 49 | ||
| 49 | 50 | ||
| 50 | ;; imenu integration | 51 | ;; imenu integration |
| @@ -437,55 +438,56 @@ Example: | |||
| 437 | (goto-char (point-max)) | 438 | (goto-char (point-max)) |
| 438 | ;; | 439 | ;; |
| 439 | (while (re-search-backward cc-imenu-objc-generic-expression nil t) | 440 | (while (re-search-backward cc-imenu-objc-generic-expression nil t) |
| 440 | (setq langnum (if (match-beginning OBJC) | 441 | (when (not (c-literal-limits)) |
| 441 | OBJC | 442 | (setq langnum (if (match-beginning OBJC) |
| 442 | (cond | 443 | OBJC |
| 443 | ((match-beginning Cproto) Cproto) | 444 | (cond |
| 444 | ((match-beginning Cgeneralfunc) Cgeneralfunc) | 445 | ((match-beginning Cproto) Cproto) |
| 445 | ((match-beginning Cnoreturn) Cnoreturn)))) | 446 | ((match-beginning Cgeneralfunc) Cgeneralfunc) |
| 446 | (setq str (funcall func (match-beginning langnum) (match-end langnum))) | 447 | ((match-beginning Cnoreturn) Cnoreturn)))) |
| 447 | ;; | 448 | (setq str (funcall func (match-beginning langnum) (match-end langnum))) |
| 448 | (cond | 449 | ;; |
| 449 | ;; | ||
| 450 | ;; C | ||
| 451 | ;; | ||
| 452 | ((not (eq langnum OBJC)) | ||
| 453 | (setq clist (cons (cons str (match-beginning langnum)) clist))) | ||
| 454 | ;; | ||
| 455 | ;; ObjC | ||
| 456 | ;; | ||
| 457 | ;; An instance Method | ||
| 458 | ((eq (aref str 0) ?-) | ||
| 459 | (setq str (concat "-" (cc-imenu-objc-method-to-selector str))) | ||
| 460 | (setq methodlist (cons (cons str | ||
| 461 | (match-beginning langnum)) | ||
| 462 | methodlist))) | ||
| 463 | ;; A factory Method | ||
| 464 | ((eq (aref str 0) ?+) | ||
| 465 | (setq str (concat "+" (cc-imenu-objc-method-to-selector str))) | ||
| 466 | (setq methodlist (cons (cons str | ||
| 467 | (match-beginning langnum)) | ||
| 468 | methodlist))) | ||
| 469 | ;; Interface or implementation or protocol | ||
| 470 | ((eq (aref str 0) ?@) | ||
| 471 | (setq classcount (1+ classcount)) | ||
| 472 | (cond | 450 | (cond |
| 473 | ((and (> (length str) implen) | 451 | ;; |
| 474 | (string= (substring str 0 implen) "@implementation")) | 452 | ;; C |
| 475 | (setq str (substring str implen) | 453 | ;; |
| 476 | str2 "@implementation")) | 454 | ((not (eq langnum OBJC)) |
| 477 | ((string= (substring str 0 intflen) "@interface") | 455 | (setq clist (cons (cons str (match-beginning langnum)) clist))) |
| 478 | (setq str (substring str intflen) | 456 | ;; |
| 479 | str2 "@interface")) | 457 | ;; ObjC |
| 480 | ((string= (substring str 0 prtlen) "@protocol") | 458 | ;; |
| 481 | (setq str (substring str prtlen) | 459 | ;; An instance Method |
| 482 | str2 "@protocol"))) | 460 | ((eq (aref str 0) ?-) |
| 483 | (setq str (cc-imenu-objc-remove-white-space str)) | 461 | (setq str (concat "-" (cc-imenu-objc-method-to-selector str))) |
| 484 | (setq methodlist (cons (cons str2 | 462 | (setq methodlist (cons (cons str |
| 485 | (match-beginning langnum)) | 463 | (match-beginning langnum)) |
| 486 | methodlist)) | 464 | methodlist))) |
| 487 | (setq toplist (cons (cons str methodlist) toplist) | 465 | ;; A factory Method |
| 488 | methodlist nil)))) | 466 | ((eq (aref str 0) ?+) |
| 467 | (setq str (concat "+" (cc-imenu-objc-method-to-selector str))) | ||
| 468 | (setq methodlist (cons (cons str | ||
| 469 | (match-beginning langnum)) | ||
| 470 | methodlist))) | ||
| 471 | ;; Interface or implementation or protocol | ||
| 472 | ((eq (aref str 0) ?@) | ||
| 473 | (setq classcount (1+ classcount)) | ||
| 474 | (cond | ||
| 475 | ((and (> (length str) implen) | ||
| 476 | (string= (substring str 0 implen) "@implementation")) | ||
| 477 | (setq str (substring str implen) | ||
| 478 | str2 "@implementation")) | ||
| 479 | ((string= (substring str 0 intflen) "@interface") | ||
| 480 | (setq str (substring str intflen) | ||
| 481 | str2 "@interface")) | ||
| 482 | ((string= (substring str 0 prtlen) "@protocol") | ||
| 483 | (setq str (substring str prtlen) | ||
| 484 | str2 "@protocol"))) | ||
| 485 | (setq str (cc-imenu-objc-remove-white-space str)) | ||
| 486 | (setq methodlist (cons (cons str2 | ||
| 487 | (match-beginning langnum)) | ||
| 488 | methodlist)) | ||
| 489 | (setq toplist (cons (cons str methodlist) toplist) | ||
| 490 | methodlist nil))))) | ||
| 489 | 491 | ||
| 490 | ;; In this buffer, there is only one or zero @{interface|implementation|protocol}. | 492 | ;; In this buffer, there is only one or zero @{interface|implementation|protocol}. |
| 491 | (if (< classcount 2) | 493 | (if (< classcount 2) |
diff --git a/lisp/progmodes/xref.el b/lisp/progmodes/xref.el index a8ca6f8fbec..4fbcd08506b 100644 --- a/lisp/progmodes/xref.el +++ b/lisp/progmodes/xref.el | |||
| @@ -1218,6 +1218,9 @@ IGNORES is a list of glob patterns for files to ignore." | |||
| 1218 | #'xref-matches-in-directory | 1218 | #'xref-matches-in-directory |
| 1219 | "27.1") | 1219 | "27.1") |
| 1220 | 1220 | ||
| 1221 | (declare-function tramp-tramp-file-p "tramp") | ||
| 1222 | (declare-function tramp-file-local-name "tramp") | ||
| 1223 | |||
| 1221 | ;;;###autoload | 1224 | ;;;###autoload |
| 1222 | (defun xref-matches-in-files (regexp files) | 1225 | (defun xref-matches-in-files (regexp files) |
| 1223 | "Find all matches for REGEXP in FILES. | 1226 | "Find all matches for REGEXP in FILES. |
| @@ -1240,7 +1243,12 @@ FILES must be a list of absolute file names." | |||
| 1240 | "") | 1243 | "") |
| 1241 | (shell-quote-argument (xref--regexp-to-extended regexp))))) | 1244 | (shell-quote-argument (xref--regexp-to-extended regexp))))) |
| 1242 | (when remote-id | 1245 | (when remote-id |
| 1243 | (setq files (mapcar #'file-local-name files))) | 1246 | (require 'tramp) |
| 1247 | (setq files (mapcar | ||
| 1248 | (if (tramp-tramp-file-p dir) | ||
| 1249 | #'tramp-file-local-name | ||
| 1250 | #'file-local-name) | ||
| 1251 | files))) | ||
| 1244 | (with-current-buffer output | 1252 | (with-current-buffer output |
| 1245 | (erase-buffer) | 1253 | (erase-buffer) |
| 1246 | (with-temp-buffer | 1254 | (with-temp-buffer |
diff --git a/src/image.c b/src/image.c index b4ce08eeb3c..d3fec37186c 100644 --- a/src/image.c +++ b/src/image.c | |||
| @@ -1242,6 +1242,10 @@ prepare_image_for_display (struct frame *f, struct image *img) | |||
| 1242 | if (img->cr_data == NULL || (cairo_pattern_get_type (img->cr_data) | 1242 | if (img->cr_data == NULL || (cairo_pattern_get_type (img->cr_data) |
| 1243 | != CAIRO_PATTERN_TYPE_SURFACE)) | 1243 | != CAIRO_PATTERN_TYPE_SURFACE)) |
| 1244 | { | 1244 | { |
| 1245 | /* Fill in the background/background_transparent field while | ||
| 1246 | we have img->pixmap->data/img->mask->data. */ | ||
| 1247 | IMAGE_BACKGROUND (img, f, img->pixmap); | ||
| 1248 | IMAGE_BACKGROUND_TRANSPARENT (img, f, img->mask); | ||
| 1245 | cr_put_image_to_cr_data (img); | 1249 | cr_put_image_to_cr_data (img); |
| 1246 | if (img->cr_data == NULL) | 1250 | if (img->cr_data == NULL) |
| 1247 | { | 1251 | { |
diff --git a/src/systhread.c b/src/systhread.c index c3e4e6a2c5a..2c3a060a17e 100644 --- a/src/systhread.c +++ b/src/systhread.c | |||
| @@ -98,10 +98,6 @@ sys_thread_yield (void) | |||
| 98 | 98 | ||
| 99 | #include <sched.h> | 99 | #include <sched.h> |
| 100 | 100 | ||
| 101 | #ifdef HAVE_SYS_PRCTL_H | ||
| 102 | #include <sys/prctl.h> | ||
| 103 | #endif | ||
| 104 | |||
| 105 | void | 101 | void |
| 106 | sys_mutex_init (sys_mutex_t *mutex) | 102 | sys_mutex_init (sys_mutex_t *mutex) |
| 107 | { | 103 | { |
| @@ -204,9 +200,28 @@ sys_thread_equal (sys_thread_t t, sys_thread_t u) | |||
| 204 | return pthread_equal (t, u); | 200 | return pthread_equal (t, u); |
| 205 | } | 201 | } |
| 206 | 202 | ||
| 203 | void | ||
| 204 | sys_thread_set_name (const char *name) | ||
| 205 | { | ||
| 206 | #ifdef HAVE_PTHREAD_SETNAME_NP | ||
| 207 | /* We need to truncate here otherwise pthread_setname_np | ||
| 208 | fails to set the name. TASK_COMM_LEN is what the length | ||
| 209 | is called in the Linux kernel headers (Bug#38632). */ | ||
| 210 | #define TASK_COMM_LEN 16 | ||
| 211 | char p_name[TASK_COMM_LEN]; | ||
| 212 | strncpy (p_name, name, TASK_COMM_LEN - 1); | ||
| 213 | p_name[TASK_COMM_LEN - 1] = '\0'; | ||
| 214 | #ifdef HAVE_PTHREAD_SETNAME_NP_1ARG | ||
| 215 | pthread_setname_np (p_name); | ||
| 216 | #else | ||
| 217 | pthread_setname_np (pthread_self (), p_name); | ||
| 218 | #endif | ||
| 219 | #endif | ||
| 220 | } | ||
| 221 | |||
| 207 | bool | 222 | bool |
| 208 | sys_thread_create (sys_thread_t *thread_ptr, const char *name, | 223 | sys_thread_create (sys_thread_t *thread_ptr, thread_creation_function *func, |
| 209 | thread_creation_function *func, void *arg) | 224 | void *arg) |
| 210 | { | 225 | { |
| 211 | pthread_attr_t attr; | 226 | pthread_attr_t attr; |
| 212 | bool result = false; | 227 | bool result = false; |
| @@ -225,13 +240,7 @@ sys_thread_create (sys_thread_t *thread_ptr, const char *name, | |||
| 225 | } | 240 | } |
| 226 | 241 | ||
| 227 | if (!pthread_attr_setdetachstate (&attr, PTHREAD_CREATE_DETACHED)) | 242 | if (!pthread_attr_setdetachstate (&attr, PTHREAD_CREATE_DETACHED)) |
| 228 | { | 243 | result = pthread_create (thread_ptr, &attr, func, arg) == 0; |
| 229 | result = pthread_create (thread_ptr, &attr, func, arg) == 0; | ||
| 230 | #if defined (HAVE_SYS_PRCTL_H) && defined (HAVE_PRCTL) && defined (PR_SET_NAME) | ||
| 231 | if (result && name != NULL) | ||
| 232 | prctl (PR_SET_NAME, name); | ||
| 233 | #endif | ||
| 234 | } | ||
| 235 | 244 | ||
| 236 | out: ; | 245 | out: ; |
| 237 | int error = pthread_attr_destroy (&attr); | 246 | int error = pthread_attr_destroy (&attr); |
| @@ -452,26 +461,24 @@ w32_set_thread_name (DWORD thread_id, const char *name) | |||
| 452 | 461 | ||
| 453 | static thread_creation_function *thread_start_address; | 462 | static thread_creation_function *thread_start_address; |
| 454 | 463 | ||
| 464 | void | ||
| 465 | sys_thread_set_name (const char *name) | ||
| 466 | { | ||
| 467 | w32_set_thread_name (GetCurrentThreadId (), name); | ||
| 468 | } | ||
| 469 | |||
| 455 | /* _beginthread wants a void function, while we are passed a function | 470 | /* _beginthread wants a void function, while we are passed a function |
| 456 | that returns a pointer. So we use a wrapper. See the command in | 471 | that returns a pointer. So we use a wrapper. See the command in |
| 457 | w32term.h about the need for ALIGN_STACK attribute. */ | 472 | w32term.h about the need for ALIGN_STACK attribute. */ |
| 458 | static void ALIGN_STACK | 473 | static void ALIGN_STACK |
| 459 | w32_beginthread_wrapper (void *arg) | 474 | w32_beginthread_wrapper (void *arg) |
| 460 | { | 475 | { |
| 461 | /* FIXME: This isn't very clean: systhread.c is not supposed to know | ||
| 462 | that ARG is a pointer to a thread_state object, or be familiar | ||
| 463 | with thread_state object's structure in general. */ | ||
| 464 | struct thread_state *this_thread = arg; | ||
| 465 | |||
| 466 | if (this_thread->thread_name) | ||
| 467 | w32_set_thread_name (GetCurrentThreadId (), this_thread->thread_name); | ||
| 468 | |||
| 469 | (void)thread_start_address (arg); | 476 | (void)thread_start_address (arg); |
| 470 | } | 477 | } |
| 471 | 478 | ||
| 472 | bool | 479 | bool |
| 473 | sys_thread_create (sys_thread_t *thread_ptr, const char *name, | 480 | sys_thread_create (sys_thread_t *thread_ptr, thread_creation_function *func, |
| 474 | thread_creation_function *func, void *arg) | 481 | void *arg) |
| 475 | { | 482 | { |
| 476 | /* FIXME: Do threads that run Lisp require some minimum amount of | 483 | /* FIXME: Do threads that run Lisp require some minimum amount of |
| 477 | stack? Zero here means each thread will get the same amount as | 484 | stack? Zero here means each thread will get the same amount as |
diff --git a/src/systhread.h b/src/systhread.h index 5368acfb52c..005388fd5a4 100644 --- a/src/systhread.h +++ b/src/systhread.h | |||
| @@ -112,10 +112,11 @@ extern sys_thread_t sys_thread_self (void) | |||
| 112 | extern bool sys_thread_equal (sys_thread_t, sys_thread_t) | 112 | extern bool sys_thread_equal (sys_thread_t, sys_thread_t) |
| 113 | ATTRIBUTE_WARN_UNUSED_RESULT; | 113 | ATTRIBUTE_WARN_UNUSED_RESULT; |
| 114 | 114 | ||
| 115 | extern bool sys_thread_create (sys_thread_t *, const char *, | 115 | extern bool sys_thread_create (sys_thread_t *, thread_creation_function *, |
| 116 | thread_creation_function *, void *) | 116 | void *) |
| 117 | ATTRIBUTE_WARN_UNUSED_RESULT; | 117 | ATTRIBUTE_WARN_UNUSED_RESULT; |
| 118 | 118 | ||
| 119 | extern void sys_thread_yield (void); | 119 | extern void sys_thread_yield (void); |
| 120 | extern void sys_thread_set_name (const char *); | ||
| 120 | 121 | ||
| 121 | #endif /* SYSTHREAD_H */ | 122 | #endif /* SYSTHREAD_H */ |
diff --git a/src/thread.c b/src/thread.c index f81163414bb..c7fe0614269 100644 --- a/src/thread.c +++ b/src/thread.c | |||
| @@ -725,6 +725,9 @@ run_thread (void *state) | |||
| 725 | self->m_stack_bottom = self->stack_top = (char *) &stack_pos; | 725 | self->m_stack_bottom = self->stack_top = (char *) &stack_pos; |
| 726 | self->thread_id = sys_thread_self (); | 726 | self->thread_id = sys_thread_self (); |
| 727 | 727 | ||
| 728 | if (self->thread_name) | ||
| 729 | sys_thread_set_name (self->thread_name); | ||
| 730 | |||
| 728 | acquire_global_lock (self); | 731 | acquire_global_lock (self); |
| 729 | 732 | ||
| 730 | /* Put a dummy catcher at top-level so that handlerlist is never NULL. | 733 | /* 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. */) | |||
| 826 | new_thread->next_thread = all_threads; | 829 | new_thread->next_thread = all_threads; |
| 827 | all_threads = new_thread; | 830 | all_threads = new_thread; |
| 828 | 831 | ||
| 829 | char const *c_name = !NILP (name) ? SSDATA (ENCODE_UTF_8 (name)) : NULL; | 832 | char const *c_name = !NILP (name) ? SSDATA (ENCODE_SYSTEM (name)) : NULL; |
| 830 | if (c_name) | 833 | if (c_name) |
| 831 | new_thread->thread_name = xstrdup (c_name); | 834 | new_thread->thread_name = xstrdup (c_name); |
| 832 | else | 835 | else |
| 833 | new_thread->thread_name = NULL; | 836 | new_thread->thread_name = NULL; |
| 834 | sys_thread_t thr; | 837 | sys_thread_t thr; |
| 835 | if (! sys_thread_create (&thr, c_name, run_thread, new_thread)) | 838 | if (! sys_thread_create (&thr, run_thread, new_thread)) |
| 836 | { | 839 | { |
| 837 | /* Restore the previous situation. */ | 840 | /* Restore the previous situation. */ |
| 838 | all_threads = all_threads->next_thread; | 841 | all_threads = all_threads->next_thread; |
diff --git a/src/thread.h b/src/thread.h index e96a063a10b..a09929fa440 100644 --- a/src/thread.h +++ b/src/thread.h | |||
| @@ -169,8 +169,7 @@ struct thread_state | |||
| 169 | interrupter should broadcast to this condition. */ | 169 | interrupter should broadcast to this condition. */ |
| 170 | sys_cond_t *wait_condvar; | 170 | sys_cond_t *wait_condvar; |
| 171 | 171 | ||
| 172 | /* Thread's name in the locale encoding. Actually used only on | 172 | /* Thread's name in the locale encoding. */ |
| 173 | WINDOWSNT. */ | ||
| 174 | char *thread_name; | 173 | char *thread_name; |
| 175 | 174 | ||
| 176 | /* This thread might have released the global lock. If so, this is | 175 | /* This thread might have released the global lock. If so, this is |
diff --git a/src/xdisp.c b/src/xdisp.c index cc936ff179d..53300928d7b 100644 --- a/src/xdisp.c +++ b/src/xdisp.c | |||
| @@ -16244,8 +16244,8 @@ set_cursor_from_row (struct window *w, struct glyph_row *row, | |||
| 16244 | bool string_from_text_prop = false; | 16244 | bool string_from_text_prop = false; |
| 16245 | 16245 | ||
| 16246 | /* Don't even try doing anything if called for a mode-line or | 16246 | /* Don't even try doing anything if called for a mode-line or |
| 16247 | header-line row, since the rest of the code isn't prepared to | 16247 | header-line or tab-line row, since the rest of the code isn't |
| 16248 | deal with such calamities. */ | 16248 | prepared to deal with such calamities. */ |
| 16249 | eassert (!row->mode_line_p); | 16249 | eassert (!row->mode_line_p); |
| 16250 | if (row->mode_line_p) | 16250 | if (row->mode_line_p) |
| 16251 | return false; | 16251 | return false; |
| @@ -17504,6 +17504,9 @@ try_cursor_movement (Lisp_Object window, struct text_pos startp, | |||
| 17504 | else | 17504 | else |
| 17505 | { | 17505 | { |
| 17506 | row = MATRIX_ROW (w->current_matrix, w->last_cursor_vpos); | 17506 | row = MATRIX_ROW (w->current_matrix, w->last_cursor_vpos); |
| 17507 | /* Skip the tab-line and header-line rows, if any. */ | ||
| 17508 | if (row->tab_line_p) | ||
| 17509 | ++row; | ||
| 17507 | if (row->mode_line_p) | 17510 | if (row->mode_line_p) |
| 17508 | ++row; | 17511 | ++row; |
| 17509 | if (!row->enabled_p) | 17512 | if (!row->enabled_p) |
| @@ -17576,6 +17579,9 @@ try_cursor_movement (Lisp_Object window, struct text_pos startp, | |||
| 17576 | || row->mode_line_p) | 17579 | || row->mode_line_p) |
| 17577 | { | 17580 | { |
| 17578 | row = w->current_matrix->rows; | 17581 | row = w->current_matrix->rows; |
| 17582 | /* Skip the tab-line and header-line rows, if any. */ | ||
| 17583 | if (row->tab_line_p) | ||
| 17584 | ++row; | ||
| 17579 | if (row->mode_line_p) | 17585 | if (row->mode_line_p) |
| 17580 | ++row; | 17586 | ++row; |
| 17581 | } | 17587 | } |
| @@ -17640,8 +17646,9 @@ try_cursor_movement (Lisp_Object window, struct text_pos startp, | |||
| 17640 | ; | 17646 | ; |
| 17641 | else if (rc != CURSOR_MOVEMENT_SUCCESS | 17647 | else if (rc != CURSOR_MOVEMENT_SUCCESS |
| 17642 | && MATRIX_ROW_PARTIALLY_VISIBLE_P (w, row) | 17648 | && MATRIX_ROW_PARTIALLY_VISIBLE_P (w, row) |
| 17643 | /* Make sure this isn't a header line by any chance, since | 17649 | /* Make sure this isn't a header line nor a tab-line by |
| 17644 | then MATRIX_ROW_PARTIALLY_VISIBLE_P might yield true. */ | 17650 | any chance, since then MATRIX_ROW_PARTIALLY_VISIBLE_P |
| 17651 | might yield true. */ | ||
| 17645 | && !row->mode_line_p | 17652 | && !row->mode_line_p |
| 17646 | && !cursor_row_fully_visible_p (w, true, true, true)) | 17653 | && !cursor_row_fully_visible_p (w, true, true, true)) |
| 17647 | { | 17654 | { |
| @@ -18769,11 +18776,14 @@ redisplay_window (Lisp_Object window, bool just_this_one_p) | |||
| 18769 | } | 18776 | } |
| 18770 | } | 18777 | } |
| 18771 | /* Finally, fall back on the first row of the window after the | 18778 | /* Finally, fall back on the first row of the window after the |
| 18772 | header line (if any). This is slightly better than not | 18779 | tab-line and header line (if any). This is slightly better |
| 18773 | displaying the cursor at all. */ | 18780 | than not displaying the cursor at all. */ |
| 18774 | if (!row) | 18781 | if (!row) |
| 18775 | { | 18782 | { |
| 18776 | row = matrix->rows; | 18783 | row = matrix->rows; |
| 18784 | /* Skip the tab-line and header-line rows, if any. */ | ||
| 18785 | if (row->tab_line_p) | ||
| 18786 | ++row; | ||
| 18777 | if (row->mode_line_p) | 18787 | if (row->mode_line_p) |
| 18778 | ++row; | 18788 | ++row; |
| 18779 | } | 18789 | } |
| @@ -19787,7 +19797,9 @@ row_containing_pos (struct window *w, ptrdiff_t charpos, | |||
| 19787 | ptrdiff_t mindif = BUF_ZV (XBUFFER (w->contents)) + 1; | 19797 | ptrdiff_t mindif = BUF_ZV (XBUFFER (w->contents)) + 1; |
| 19788 | int last_y; | 19798 | int last_y; |
| 19789 | 19799 | ||
| 19790 | /* If we happen to start on a header-line, skip that. */ | 19800 | /* If we happen to start on a header-line or a tab-line, skip that. */ |
| 19801 | if (row->tab_line_p) | ||
| 19802 | ++row; | ||
| 19791 | if (row->mode_line_p) | 19803 | if (row->mode_line_p) |
| 19792 | ++row; | 19804 | ++row; |
| 19793 | 19805 | ||
| @@ -22380,7 +22392,7 @@ find_row_edges (struct it *it, struct glyph_row *row, | |||
| 22380 | if (STRINGP (it->object) | 22392 | if (STRINGP (it->object) |
| 22381 | /* this is not the first row */ | 22393 | /* this is not the first row */ |
| 22382 | && row > it->w->desired_matrix->rows | 22394 | && row > it->w->desired_matrix->rows |
| 22383 | /* previous row is not the header line */ | 22395 | /* previous row is not the header line or tab-line */ |
| 22384 | && !r1->mode_line_p | 22396 | && !r1->mode_line_p |
| 22385 | /* previous row also ends in a newline from a string */ | 22397 | /* previous row also ends in a newline from a string */ |
| 22386 | && r1->ends_in_newline_from_string_p) | 22398 | && r1->ends_in_newline_from_string_p) |
diff --git a/src/xfns.c b/src/xfns.c index d0d5d399dc4..276ea1c3935 100644 --- a/src/xfns.c +++ b/src/xfns.c | |||
| @@ -5089,6 +5089,8 @@ Internal use only, use `display-monitor-attributes-list' instead. */) | |||
| 5089 | #elif defined HAVE_GTK3 | 5089 | #elif defined HAVE_GTK3 |
| 5090 | scale = gdk_screen_get_monitor_scale_factor (gscreen, i); | 5090 | scale = gdk_screen_get_monitor_scale_factor (gscreen, i); |
| 5091 | #endif | 5091 | #endif |
| 5092 | rec.x *= scale; | ||
| 5093 | rec.y *= scale; | ||
| 5092 | rec.width *= scale; | 5094 | rec.width *= scale; |
| 5093 | rec.height *= scale; | 5095 | rec.height *= scale; |
| 5094 | work.x *= scale; | 5096 | work.x *= scale; |
diff --git a/src/xterm.c b/src/xterm.c index ada3cec1636..21d99f0c7bb 100644 --- a/src/xterm.c +++ b/src/xterm.c | |||
| @@ -8934,6 +8934,10 @@ handle_one_xevent (struct x_display_info *dpyinfo, | |||
| 8934 | if (f) | 8934 | if (f) |
| 8935 | x_cr_update_surface_desired_size (f, configureEvent.xconfigure.width, | 8935 | x_cr_update_surface_desired_size (f, configureEvent.xconfigure.width, |
| 8936 | configureEvent.xconfigure.height); | 8936 | configureEvent.xconfigure.height); |
| 8937 | else if (any && configureEvent.xconfigure.window == FRAME_X_WINDOW (any)) | ||
| 8938 | x_cr_update_surface_desired_size (any, | ||
| 8939 | configureEvent.xconfigure.width, | ||
| 8940 | configureEvent.xconfigure.height); | ||
| 8937 | #endif | 8941 | #endif |
| 8938 | #ifdef USE_GTK | 8942 | #ifdef USE_GTK |
| 8939 | if (!f | 8943 | if (!f |