diff options
| -rw-r--r-- | doc/emacs/custom.texi | 45 | ||||
| -rw-r--r-- | etc/NEWS.27 | 129 | ||||
| -rw-r--r-- | lib-src/emacsclient.c | 17 | ||||
| -rw-r--r-- | lisp/menu-bar.el | 33 | ||||
| -rw-r--r-- | lisp/minibuffer.el | 9 | ||||
| -rw-r--r-- | lisp/progmodes/f90.el | 19 | ||||
| -rw-r--r-- | lisp/progmodes/fortran.el | 2 | ||||
| -rw-r--r-- | lisp/startup.el | 42 | ||||
| -rw-r--r-- | nt/inc/ms-w32.h | 4 | ||||
| -rw-r--r-- | test/lisp/progmodes/f90-tests.el | 20 |
10 files changed, 200 insertions, 120 deletions
diff --git a/doc/emacs/custom.texi b/doc/emacs/custom.texi index 1958a86b92d..2e04a6b22d3 100644 --- a/doc/emacs/custom.texi +++ b/doc/emacs/custom.texi | |||
| @@ -2655,26 +2655,37 @@ library. @xref{Hooks}. | |||
| 2655 | 2655 | ||
| 2656 | Emacs normally finds your init file in a location under your home | 2656 | Emacs normally finds your init file in a location under your home |
| 2657 | directory. @xref{Init File}. By default this location is | 2657 | directory. @xref{Init File}. By default this location is |
| 2658 | @file{~/.config/emacs/init.el} where @file{~/} stands for your home directory. | 2658 | @file{~/.emacs.d/init.el} where @file{~/} stands for your home directory. |
| 2659 | This default can be overridden as described below. | 2659 | This default can be overridden as described below. |
| 2660 | 2660 | ||
| 2661 | If @env{XDG_CONFIG_HOME} is set in your environment, its | 2661 | Emacs looks for your init file |
| 2662 | value replaces @file{~/.config} in the name of the default | ||
| 2663 | init file. | ||
| 2664 | |||
| 2665 | If the default init file's parent directory does not exist but the | ||
| 2666 | directory @file{~/.emacs.d} does exist, Emacs looks for your init file | ||
| 2667 | using the filenames @file{~/.emacs.el}, @file{~/.emacs}, or | 2662 | using the filenames @file{~/.emacs.el}, @file{~/.emacs}, or |
| 2668 | @file{~/.emacs.d/init.el}; you can choose to use any one of these | 2663 | @file{~/.emacs.d/init.el}; you can choose to use any one of these |
| 2669 | names. (Note that only the locations directly in your home directory | 2664 | names. (Note that only the locations directly in your home directory |
| 2670 | have a leading dot in the location's basename.) Although this is | 2665 | have a leading dot in the location's basename.) |
| 2671 | backward-compatible with older Emacs versions, modern POSIX platforms | 2666 | |
| 2672 | prefer putting your initialization files under @file{~/.config} so | 2667 | Emacs can also look in an XDG-compatible location for @file{init.el}, |
| 2673 | that troubleshooting a problem that might be due to a bad init file, | 2668 | the default is the directory @file{~/.config/emacs}. This can be |
| 2674 | or archiving a collection of init files, can be done by renaming that | 2669 | overriden by setting @env{XDG_CONFIG_HOME} in your environment, its |
| 2675 | directory. To help older Emacs versions find configuration files in | 2670 | value replaces @file{~/.config} in the name of the default XDG init |
| 2676 | their current default locations, you can execute the following | 2671 | file. However @file{~/.emacs.d} and @file{~/.emacs} are always |
| 2677 | Emacs Lisp code: | 2672 | preferred if they exist, which means that you must delete or rename |
| 2673 | them in order to use the XDG location. | ||
| 2674 | |||
| 2675 | Note also that if neither the XDG location nor @file{~/.emacs.d} | ||
| 2676 | exist, then Emacs will create @file{~/.emacs.d} (and therefore use it | ||
| 2677 | during subsequent invocations). | ||
| 2678 | |||
| 2679 | Emacs will set @var{user-emacs-directory} to the directory it decides | ||
| 2680 | to use. | ||
| 2681 | |||
| 2682 | Although this is backward-compatible with older Emacs versions, modern | ||
| 2683 | POSIX platforms prefer putting your initialization files under | ||
| 2684 | @file{~/.config} so that troubleshooting a problem that might be due | ||
| 2685 | to a bad init file, or archiving a collection of init files, can be | ||
| 2686 | done by renaming that directory. To help older Emacs versions find | ||
| 2687 | configuration files in their current default locations, you can | ||
| 2688 | execute the following Emacs Lisp code: | ||
| 2678 | 2689 | ||
| 2679 | @example | 2690 | @example |
| 2680 | (make-symbolic-link ".config/emacs" "~/.emacs.d") | 2691 | (make-symbolic-link ".config/emacs" "~/.emacs.d") |
| @@ -2694,7 +2705,7 @@ otherwise, it looks up the home directory corresponding to that user | |||
| 2694 | name in the system's data base of users. | 2705 | name in the system's data base of users. |
| 2695 | 2706 | ||
| 2696 | For brevity the rest of the Emacs documentation generally uses just | 2707 | For brevity the rest of the Emacs documentation generally uses just |
| 2697 | the current default location @file{~/.config/emacs/init.el} for the | 2708 | the current default location @file{~/.emacs.d/init.el} for the |
| 2698 | init file. | 2709 | init file. |
| 2699 | @c LocalWords: backtab | 2710 | @c LocalWords: backtab |
| 2700 | 2711 | ||
| @@ -2740,7 +2751,7 @@ Type @kbd{C-q}, followed by the key you want to bind, to insert @var{char}. | |||
| 2740 | @xref{Init File}. However, it is sometimes desirable | 2751 | @xref{Init File}. However, it is sometimes desirable |
| 2741 | to have customizations that take effect during Emacs startup earlier than the | 2752 | to have customizations that take effect during Emacs startup earlier than the |
| 2742 | normal init file is processed. Such customizations can be put in the early | 2753 | normal init file is processed. Such customizations can be put in the early |
| 2743 | init file, @file{~/.config/emacs.d/early-init.el} or @file{~/.emacs.d/early-init.el}. This file is loaded before the | 2754 | init file, @file{~/.config/emacs/early-init.el} or @file{~/.emacs.d/early-init.el}. This file is loaded before the |
| 2744 | package system and GUI is initialized, so in it you can customize variables | 2755 | package system and GUI is initialized, so in it you can customize variables |
| 2745 | that affect frame appearance as well as the package initialization process, | 2756 | that affect frame appearance as well as the package initialization process, |
| 2746 | such as @code{package-enable-at-startup}, @code{package-load-list}, and | 2757 | such as @code{package-enable-at-startup}, @code{package-load-list}, and |
diff --git a/etc/NEWS.27 b/etc/NEWS.27 index cea5d500c7c..d6eb5d9e666 100644 --- a/etc/NEWS.27 +++ b/etc/NEWS.27 | |||
| @@ -56,7 +56,10 @@ than their Lisp counterparts from json.el. | |||
| 56 | ** The configure option '--with-cairo' is no longer experimental. | 56 | ** The configure option '--with-cairo' is no longer experimental. |
| 57 | This builds Emacs with Cairo drawing, and supports built-in printing | 57 | This builds Emacs with Cairo drawing, and supports built-in printing |
| 58 | when Emacs is built with GTK+. Some severe bugs in this build were | 58 | when Emacs is built with GTK+. Some severe bugs in this build were |
| 59 | fixed, and we can therefore offer this to users without caveats. | 59 | fixed, and we can therefore offer this to users without caveats. Note |
| 60 | that building with Cairo enabled results in using Pango instead of | ||
| 61 | libXft for font support, and that Pango 1.44 has removed support for | ||
| 62 | bitmapped fonts. | ||
| 60 | 63 | ||
| 61 | +++ | 64 | +++ |
| 62 | ** Emacs now uses a "portable dumper" instead of unexec. | 65 | ** Emacs now uses a "portable dumper" instead of unexec. |
| @@ -66,10 +69,10 @@ Randomization (ASLR) feature, a security technique used by most modern | |||
| 66 | operating systems. | 69 | operating systems. |
| 67 | 70 | ||
| 68 | When built with the portable dumping support (which is the default), | 71 | When built with the portable dumping support (which is the default), |
| 69 | Emacs looks for the 'emacs.pdmp' file, generated during the build, in | 72 | 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. | 73 | 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 | 74 | The new command-line argument '--dump-file=FILE' allows specifying a |
| 72 | non-default '.pdmp' file to load the state from; see the node | 75 | non-default ".pdmp" file to load the state from; see the node |
| 73 | "(emacs) Initial Options" in the Emacs manual for more information. | 76 | "(emacs) Initial Options" in the Emacs manual for more information. |
| 74 | 77 | ||
| 75 | An Emacs started via a dump file can create a new dump file only if it | 78 | An Emacs started via a dump file can create a new dump file only if it |
| @@ -150,29 +153,32 @@ builds respectively. | |||
| 150 | Pass '--without-modules' to 'configure' to disable dynamic module | 153 | Pass '--without-modules' to 'configure' to disable dynamic module |
| 151 | support. | 154 | support. |
| 152 | 155 | ||
| 156 | --- | ||
| 157 | ** The ftx font backend driver is now obsolete and will be removed in | ||
| 158 | Emacs 28. | ||
| 159 | |||
| 153 | 160 | ||
| 154 | * Startup Changes in Emacs 27.1 | 161 | * Startup Changes in Emacs 27.1 |
| 155 | 162 | ||
| 156 | +++ | 163 | +++ |
| 157 | ** Emacs now uses the XDG convention for init files. | 164 | ** Emacs can now use the XDG convention for init files. |
| 158 | For example, it looks for init.el in "~/.config/emacs/init.el", and | 165 | The 'XDG_CONFIG_HOME' environment variable (which defaults to |
| 159 | similarly for other init files. | 166 | "~/.config") specifies the XDG configuration parent directory. Emacs |
| 167 | checks for "init.el" and other configuration files inside the "emacs" | ||
| 168 | subdirectory of 'XDG_CONFIG_HOME', i.e. "$XDG_CONFIG_HOME/emacs/init.el" | ||
| 160 | 169 | ||
| 161 | The 'XDG_CONFIG_HOME' environment variable (which defaults to "~/.config") | 170 | However, Emacs will still initially look for init files in their |
| 162 | specifies the parent directory of these and other configuration files, | 171 | traditional locations if "~/.emacs.d" or "~/.emacs" exist, even if |
| 163 | and will override their traditional locations (the home directory, | 172 | "$XDG_CONFIG_HOME/emacs" also exists. This means that you must delete |
| 164 | "~/.emacs.d", etc.). | 173 | or rename any existing "~/.emacs.d" and "~/.emacs" to enable use of |
| 174 | the XDG directory. | ||
| 165 | 175 | ||
| 166 | Emacs will still look for init files in their traditional locations if | 176 | If "~/.emacs.d" does not exist, and Emacs has decided to use it |
| 167 | "$XDG_CONFIG_HOME/emacs" does not exist, but "~/.emacs.d" or | 177 | (i.e. "$XDG_CONFIG_HOME/emacs" does not exist), Emacs will create it. |
| 168 | "~/.emacs" does exist, so invoking Emacs with XDG_CONFIG_HOME='/nowhere' | 178 | Emacs will never create "$XDG_CONFIG_HOME/emacs". |
| 169 | might be useful if your new-location init files are scrambled, or if | ||
| 170 | you want to force Emacs to ignore files under 'XDG_CONFIG_HOME' for | ||
| 171 | some other reason. | ||
| 172 | 179 | ||
| 173 | If neither "$XDG_CONFIG_HOME/emacs" nor "~/.emacs.d" exist, Emacs will | 180 | Whichever directory Emacs decides to use, it will set |
| 174 | now default to "$XDG_CONFIG_HOME/emacs", and will create that directory | 181 | 'user-emacs-directory' to point to it. |
| 175 | and set 'user-emacs-directory' to point to it. | ||
| 176 | 182 | ||
| 177 | +++ | 183 | +++ |
| 178 | ** Emacs can now be configured using an early init file. | 184 | ** Emacs can now be configured using an early init file. |
| @@ -217,7 +223,7 @@ it won't work right without some adjustment: | |||
| 217 | Units that are ordered after 'emacs.service' will only be started | 223 | Units that are ordered after 'emacs.service' will only be started |
| 218 | after Emacs has finished initialization and is ready for use. | 224 | after Emacs has finished initialization and is ready for use. |
| 219 | (If your Emacs is installed in a non-standard location and you copied the | 225 | (If your Emacs is installed in a non-standard location and you copied the |
| 220 | emacs.service file to eg "~/.config/systemd/user/", you will need to copy | 226 | emacs.service file to e.g. "~/.config/systemd/user/", you will need to copy |
| 221 | the new version of the file again.) | 227 | the new version of the file again.) |
| 222 | 228 | ||
| 223 | 229 | ||
| @@ -308,6 +314,15 @@ causing XFT crashes, they are now filtered out. Setting | |||
| 308 | require setting 'face-ignored-fonts' to filter out problematic fonts. | 314 | require setting 'face-ignored-fonts' to filter out problematic fonts. |
| 309 | Known problematic fonts are "Noto Color Emoji" and "Emoji One". | 315 | Known problematic fonts are "Noto Color Emoji" and "Emoji One". |
| 310 | 316 | ||
| 317 | --- | ||
| 318 | ** The GTK+ font chooser now respects 'face-ignored-fonts'. | ||
| 319 | When using 'menu-set-font' under GTK3, the available fonts are now | ||
| 320 | matched against 'face-ignored-fonts'. | ||
| 321 | |||
| 322 | --- | ||
| 323 | ** The GTK+ font chooser now remembers the previously selected settings. | ||
| 324 | It now remembers the name, size, style, etc. | ||
| 325 | |||
| 311 | +++ | 326 | +++ |
| 312 | ** New user option 'what-cursor-show-names'. | 327 | ** New user option 'what-cursor-show-names'. |
| 313 | When non-nil, 'what-cursor-position' will show the name of the character | 328 | When non-nil, 'what-cursor-position' will show the name of the character |
| @@ -434,7 +449,7 @@ from a remote host. | |||
| 434 | 449 | ||
| 435 | +++ | 450 | +++ |
| 436 | ** The function 'executable-find' supports an optional argument REMOTE. | 451 | ** The function 'executable-find' supports an optional argument REMOTE. |
| 437 | This triggers to search the program on the remote host as indicated by | 452 | This triggers searching for the program on the remote host as indicated by |
| 438 | 'default-directory'. | 453 | 'default-directory'. |
| 439 | 454 | ||
| 440 | +++ | 455 | +++ |
| @@ -464,7 +479,7 @@ Customize 'switch-to-prev-buffer-skip' instead. | |||
| 464 | 479 | ||
| 465 | +++ | 480 | +++ |
| 466 | ** New user option 'switch-to-prev-buffer-skip'. | 481 | ** New user option 'switch-to-prev-buffer-skip'. |
| 467 | This user option allows to specify the set of buffers that may be | 482 | This user option allows specifying the set of buffers that may be |
| 468 | shown by 'switch-to-prev-buffer' and 'switch-to-next-buffer' more | 483 | shown by 'switch-to-prev-buffer' and 'switch-to-next-buffer' more |
| 469 | stringently than the now obsolete 'switch-to-visible-buffer'. | 484 | stringently than the now obsolete 'switch-to-visible-buffer'. |
| 470 | 485 | ||
| @@ -534,7 +549,7 @@ There are 2 new buffer local variables and 1 face to customize this | |||
| 534 | mode, they are described in the manual "(emacs) Display". | 549 | mode, they are described in the manual "(emacs) Display". |
| 535 | 550 | ||
| 536 | +++ | 551 | +++ |
| 537 | ** 'progress-reporter-update' accepts a suffix string to display. | 552 | ** 'progress-reporter-update' now accepts an optional suffix string to display. |
| 538 | 553 | ||
| 539 | --- | 554 | --- |
| 540 | ** New user option 'xref-file-name-display' controls the display of | 555 | ** New user option 'xref-file-name-display' controls the display of |
| @@ -580,14 +595,14 @@ if so, 'backup-by-copying-when-mismatch' will be forced on. | |||
| 580 | * Editing Changes in Emacs 27.1 | 595 | * Editing Changes in Emacs 27.1 |
| 581 | 596 | ||
| 582 | +++ | 597 | +++ |
| 583 | ** When asked to visit a large file, Emacs now offers visiting it literally. | 598 | ** When asked to visit a large file, Emacs now offers to visit it literally. |
| 584 | Previously, Emacs would only ask for confirmation before visiting | 599 | Previously, Emacs would only ask for confirmation before visiting |
| 585 | large files. Now it also offers a third alternative: to visit the | 600 | large files. Now it also offers a third alternative: to visit the |
| 586 | file literally, as in 'find-file-literally', which speeds up | 601 | file literally, as in 'find-file-literally', which speeds up |
| 587 | navigation and editing of large files. | 602 | navigation and editing of large files. |
| 588 | 603 | ||
| 589 | +++ | 604 | +++ |
| 590 | ** 'zap-to-char' now uses history of characters you used to zap to. | 605 | ** 'zap-to-char' now uses the history of characters you used to zap to. |
| 591 | 'zap-to-char' uses the new 'read-char-from-minibuffer' function to allow | 606 | 'zap-to-char' uses the new 'read-char-from-minibuffer' function to allow |
| 592 | navigating through the history of characters that have been input. | 607 | navigating through the history of characters that have been input. |
| 593 | This is mostly useful for characters that have complex input methods | 608 | This is mostly useful for characters that have complex input methods |
| @@ -717,7 +732,7 @@ non-nil. | |||
| 717 | 732 | ||
| 718 | --- | 733 | --- |
| 719 | ** 'autoconf-mode' is now used instead of 'm4-mode' for the | 734 | ** 'autoconf-mode' is now used instead of 'm4-mode' for the |
| 720 | acinclude.m4/aclocal.m4/acsite.m4 files. | 735 | "acinclude.m4" / "aclocal.m4" / "acsite.m4" files. |
| 721 | 736 | ||
| 722 | --- | 737 | --- |
| 723 | ** On GNU/Linux, 'M-x battery' will now list all batteries, no matter | 738 | ** On GNU/Linux, 'M-x battery' will now list all batteries, no matter |
| @@ -763,9 +778,9 @@ mediawiki format tables. | |||
| 763 | 778 | ||
| 764 | ** goto-addr | 779 | ** goto-addr |
| 765 | 780 | ||
| 766 | *** A way to more conveniently specify what URI address schemes that | 781 | *** A way to more conveniently specify what URI address schemes should |
| 767 | should be ignored have been added via the | 782 | be ignored has been added via the 'goto-address-uri-schemes-ignored' |
| 768 | 'goto-address-uri-schemes-ignored' variable. | 783 | variable. |
| 769 | 784 | ||
| 770 | +++ | 785 | +++ |
| 771 | ** tex-mode | 786 | ** tex-mode |
| @@ -1268,9 +1283,9 @@ embedding database passwords in your Emacs initialization. | |||
| 1268 | 1283 | ||
| 1269 | See the 'auth-source' module for complete documentation on the file | 1284 | See the 'auth-source' module for complete documentation on the file |
| 1270 | formats. By default, the wallet file is expected to be in the | 1285 | formats. By default, the wallet file is expected to be in the |
| 1271 | 'user-emacs-directory', named 'sql-wallet' or '.sql-wallet', with | 1286 | 'user-emacs-directory', named "sql-wallet" or ".sql-wallet", with |
| 1272 | '.json' (JSON) or no (NETRC) suffix. Both file formats can optionally | 1287 | ".json" (JSON) or no (NETRC) suffix. Both file formats can optionally |
| 1273 | be encrypted with GPG by adding an additional '.gpg' suffix. | 1288 | be encrypted with GPG by adding an additional ".gpg" suffix. |
| 1274 | 1289 | ||
| 1275 | ** Term | 1290 | ** Term |
| 1276 | 1291 | ||
| @@ -1395,7 +1410,7 @@ where you can select a node to go back (like in browsers). | |||
| 1395 | *** Info can now follow 'file://' protocol URLs. | 1410 | *** Info can now follow 'file://' protocol URLs. |
| 1396 | The 'file://' URLs in Info documents can now be followed by passing | 1411 | The 'file://' URLs in Info documents can now be followed by passing |
| 1397 | them to the 'browse-url' function, like the other protocols: 'ftp', | 1412 | them to the 'browse-url' function, like the other protocols: 'ftp', |
| 1398 | 'http', and 'https'. This allows to have references to local HTML | 1413 | 'http', and 'https'. This allows having references to local HTML |
| 1399 | files, for example. | 1414 | files, for example. |
| 1400 | 1415 | ||
| 1401 | --- | 1416 | --- |
| @@ -1460,8 +1475,9 @@ completion facilities. | |||
| 1460 | This can be controlled by the new 'ecomplete-sort-predicate' user option. | 1475 | This can be controlled by the new 'ecomplete-sort-predicate' user option. |
| 1461 | 1476 | ||
| 1462 | --- | 1477 | --- |
| 1463 | *** The 'ecompleterc' file is now placed in "~/.emacs.d/ecompleterc" by default. | 1478 | *** The 'ecomplete-database-file' file is now placed in |
| 1464 | Of course it will still find it if you have it in "~/.ecompleterc". | 1479 | "~/.emacs.d/ecompleterc" by default. Of course it will still find it |
| 1480 | if you have it in "~/.ecompleterc". | ||
| 1465 | 1481 | ||
| 1466 | ** Gnus | 1482 | ** Gnus |
| 1467 | 1483 | ||
| @@ -1507,8 +1523,9 @@ This feature can be enabled by setting the new 'nnimap-use-namespaces' | |||
| 1507 | server variable to non-nil. | 1523 | server variable to non-nil. |
| 1508 | 1524 | ||
| 1509 | +++ | 1525 | +++ |
| 1510 | *** A prefix argument to 'gnus-summary-limit-to-score' will limit reverse. | 1526 | *** A prefix argument to 'gnus-summary-limit-to-score' will limit in reverse. |
| 1511 | Limit to articles with score at below. | 1527 | Limit to articles with score "at or below" the SCORE argument rather |
| 1528 | than "at or above". | ||
| 1512 | 1529 | ||
| 1513 | --- | 1530 | --- |
| 1514 | *** The function 'gnus-score-find-favorite-words' has been renamed | 1531 | *** The function 'gnus-score-find-favorite-words' has been renamed |
| @@ -1909,7 +1926,7 @@ The abbreviation can be disabled by the new user option | |||
| 1909 | ** ERT | 1926 | ** ERT |
| 1910 | 1927 | ||
| 1911 | +++ | 1928 | +++ |
| 1912 | *** New variable 'ert-quiet' allows to make ERT output in batch mode | 1929 | *** New variable 'ert-quiet' allows making ERT output in batch mode |
| 1913 | less verbose by removing non-essential information. | 1930 | less verbose by removing non-essential information. |
| 1914 | 1931 | ||
| 1915 | +++ | 1932 | +++ |
| @@ -2048,21 +2065,21 @@ the real password is revealed (via 'reveal-mode'). The new | |||
| 2048 | ** Tramp | 2065 | ** Tramp |
| 2049 | 2066 | ||
| 2050 | +++ | 2067 | +++ |
| 2051 | *** New connection method "nextcloud", which allows to access OwnCloud | 2068 | *** New connection method "nextcloud", which allows accessing OwnCloud |
| 2052 | or NextCloud hosted files and directories. | 2069 | or NextCloud hosted files and directories. |
| 2053 | 2070 | ||
| 2054 | +++ | 2071 | +++ |
| 2055 | *** New connection method "rclone", which allows to access system | 2072 | *** New connection method "rclone", which allows accessing system |
| 2056 | storages via the 'rclone' program. This feature is experimental. | 2073 | storages via the 'rclone' program. This feature is experimental. |
| 2057 | 2074 | ||
| 2058 | +++ | 2075 | +++ |
| 2059 | *** New connection method "sudoedit", which allows to edit local files | 2076 | *** New connection method "sudoedit", which allows editing local files |
| 2060 | with different user credentials. Contrary to the "sudo" method, no | 2077 | with different user credentials. Contrary to the "sudo" method, no |
| 2061 | session is run permanently in the background. This is for security | 2078 | session is run permanently in the background. This is for security |
| 2062 | reasons. | 2079 | reasons. |
| 2063 | 2080 | ||
| 2064 | +++ | 2081 | +++ |
| 2065 | *** Connection methods "obex" and "synce" are removed, because they | 2082 | *** Connection methods "obex" and "synce" have been removed, because they |
| 2066 | are obsoleted in GVFS. | 2083 | are obsoleted in GVFS. |
| 2067 | 2084 | ||
| 2068 | +++ | 2085 | +++ |
| @@ -2074,7 +2091,7 @@ from auth-source search are taken into account. This can be disabled | |||
| 2074 | by setting the user option 'tramp-completion-use-auth-sources' to nil. | 2091 | by setting the user option 'tramp-completion-use-auth-sources' to nil. |
| 2075 | 2092 | ||
| 2076 | +++ | 2093 | +++ |
| 2077 | *** The user option 'tramp-ignored-file-name-regexp' allows to disable | 2094 | *** The user option 'tramp-ignored-file-name-regexp' allows disabling |
| 2078 | Tramp for some look-alike remote file names. | 2095 | Tramp for some look-alike remote file names. |
| 2079 | 2096 | ||
| 2080 | +++ | 2097 | +++ |
| @@ -2083,9 +2100,9 @@ multi-hop file names must match the previous hop. Default host names | |||
| 2083 | are adjusted to the host name from the previous hop. | 2100 | are adjusted to the host name from the previous hop. |
| 2084 | 2101 | ||
| 2085 | +++ | 2102 | +++ |
| 2086 | *** For the connection methods "sudo" and "doas" there exists a | 2103 | *** A timeout has been added for the connection methods "sudo" and "doas". |
| 2087 | timeout, after which the underlying session is disabled. This is for | 2104 | The underlying session is disabled when the timeout expires. This is |
| 2088 | security reasons. | 2105 | for security reasons. |
| 2089 | 2106 | ||
| 2090 | +++ | 2107 | +++ |
| 2091 | *** For some connection methods, like "sshx" or "plink", it is | 2108 | *** For some connection methods, like "sshx" or "plink", it is |
| @@ -2095,7 +2112,7 @@ cooperates badly with Tramp. | |||
| 2095 | 2112 | ||
| 2096 | +++ | 2113 | +++ |
| 2097 | *** New commands 'tramp-rename-files' and 'tramp-rename-these-files'. | 2114 | *** New commands 'tramp-rename-files' and 'tramp-rename-these-files'. |
| 2098 | They allow to save remote files somewhere else when the corresponding | 2115 | They allow saving remote files somewhere else when the corresponding |
| 2099 | host is not reachable anymore. | 2116 | host is not reachable anymore. |
| 2100 | 2117 | ||
| 2101 | ** Rcirc | 2118 | ** Rcirc |
| @@ -2295,7 +2312,7 @@ expressions from simpler parts. | |||
| 2295 | 2312 | ||
| 2296 | +++ | 2313 | +++ |
| 2297 | *** New value of 'minibuffer' frame parameter 'child-frame'. | 2314 | *** New value of 'minibuffer' frame parameter 'child-frame'. |
| 2298 | This allows to create and parent immediately a minibuffer-only child | 2315 | This allows creating and immediately parenting a minibuffer-only child |
| 2299 | frame when making a frame. | 2316 | frame when making a frame. |
| 2300 | 2317 | ||
| 2301 | --- | 2318 | --- |
| @@ -2342,7 +2359,7 @@ in a terminal frame. | |||
| 2342 | --- | 2359 | --- |
| 2343 | *** JSX syntax is now automatically detected and enabled. | 2360 | *** JSX syntax is now automatically detected and enabled. |
| 2344 | If a file imports Facebook's 'React' library, or if the file uses the | 2361 | If a file imports Facebook's 'React' library, or if the file uses the |
| 2345 | extension '.jsx', then various features supporting XML-like syntax | 2362 | extension ".jsx", then various features supporting XML-like syntax |
| 2346 | will be supported in 'js-mode' and derivative modes. ('js-jsx-mode' | 2363 | will be supported in 'js-mode' and derivative modes. ('js-jsx-mode' |
| 2347 | no longer needs to be enabled.) | 2364 | no longer needs to be enabled.) |
| 2348 | 2365 | ||
| @@ -3024,7 +3041,7 @@ years containing more than four digits. This is for compatibility | |||
| 3024 | with POSIX.1-2017. | 3041 | with POSIX.1-2017. |
| 3025 | 3042 | ||
| 3026 | +++ | 3043 | +++ |
| 3027 | *** To access (or alter) the elements a decoded time value, the | 3044 | *** To access (or alter) the elements of a decoded time value, the |
| 3028 | 'decoded-time-second', 'decoded-time-minute', 'decoded-time-hour', | 3045 | 'decoded-time-second', 'decoded-time-minute', 'decoded-time-hour', |
| 3029 | 'decoded-time-day', 'decoded-time-month', 'decoded-time-year', | 3046 | 'decoded-time-day', 'decoded-time-month', 'decoded-time-year', |
| 3030 | 'decoded-time-weekday', 'decoded-time-dst' and 'decoded-time-zone' | 3047 | 'decoded-time-weekday', 'decoded-time-dst' and 'decoded-time-zone' |
| @@ -3043,7 +3060,7 @@ elements as if it's midnight January 1st, 1970) have been added. | |||
| 3043 | if it is not known whether daylight saving time is in effect. | 3060 | if it is not known whether daylight saving time is in effect. |
| 3044 | Formerly they were inconsistent: 'encode-time' returned t in this | 3061 | Formerly they were inconsistent: 'encode-time' returned t in this |
| 3045 | situation, whereas 'parse-time-string' returned nil. Now they | 3062 | situation, whereas 'parse-time-string' returned nil. Now they |
| 3046 | consistently use use nil to mean that DST is not in effect, and use -1 | 3063 | consistently use nil to mean that DST is not in effect, and use -1 |
| 3047 | to mean that it is not known whether DST is in effect. | 3064 | to mean that it is not known whether DST is in effect. |
| 3048 | 3065 | ||
| 3049 | +++ | 3066 | +++ |
| @@ -3233,22 +3250,22 @@ reliably survive subsequent invocations of 'set-window-buffer'. | |||
| 3233 | 3250 | ||
| 3234 | +++ | 3251 | +++ |
| 3235 | ** New user option 'resize-mini-frames'. | 3252 | ** New user option 'resize-mini-frames'. |
| 3236 | This option allows to automatically resize minibuffer-only frames | 3253 | This option allows automatically resizing minibuffer-only frames |
| 3237 | similarly to how minibuffer windows are resized on "normal" frames. | 3254 | similarly to how minibuffer windows are resized on "normal" frames. |
| 3238 | 3255 | ||
| 3239 | +++ | 3256 | +++ |
| 3240 | ** New buffer display action function 'display-buffer-in-direction'. | 3257 | ** New buffer display action function 'display-buffer-in-direction'. |
| 3241 | This function allows to specify the location of the window chosen by | 3258 | This function allows specifying the location of the window chosen by |
| 3242 | 'display-buffer' in various ways. | 3259 | 'display-buffer' in various ways. |
| 3243 | 3260 | ||
| 3244 | +++ | 3261 | +++ |
| 3245 | ** New buffer display action alist entry 'dedicated'. | 3262 | ** New buffer display action alist entry 'dedicated'. |
| 3246 | Such an entry allows to specify the dedicated status of a window | 3263 | Such an entry allows specifying the dedicated status of a window |
| 3247 | created by 'display-buffer'. | 3264 | created by 'display-buffer'. |
| 3248 | 3265 | ||
| 3249 | +++ | 3266 | +++ |
| 3250 | ** New buffer display action alist entry 'window-min-height'. | 3267 | ** New buffer display action alist entry 'window-min-height'. |
| 3251 | Such an entry allows to specify a minimum height of the window used | 3268 | Such an entry allows specifying a minimum height of the window used |
| 3252 | for displaying a buffer. 'display-buffer-below-selected' is the only | 3269 | for displaying a buffer. 'display-buffer-below-selected' is the only |
| 3253 | action function to respect it at the moment. | 3270 | action function to respect it at the moment. |
| 3254 | 3271 | ||
diff --git a/lib-src/emacsclient.c b/lib-src/emacsclient.c index 645ff04c6d4..204064f1871 100644 --- a/lib-src/emacsclient.c +++ b/lib-src/emacsclient.c | |||
| @@ -924,21 +924,22 @@ open_config (char const *home, char const *xdg, char const *config_file) | |||
| 924 | char *configname = xmalloc (max (xdgsubdirsize, homesubdirsizemax) | 924 | char *configname = xmalloc (max (xdgsubdirsize, homesubdirsizemax) |
| 925 | + strlen (config_file)); | 925 | + strlen (config_file)); |
| 926 | FILE *config; | 926 | FILE *config; |
| 927 | if (xdg || home) | 927 | |
| 928 | if (home) | ||
| 928 | { | 929 | { |
| 929 | strcpy ((xdg | 930 | strcpy (stpcpy (stpcpy (configname, home), "/.emacs.d/server/"), |
| 930 | ? stpcpy (stpcpy (configname, xdg), "/emacs/server/") | 931 | config_file); |
| 931 | : stpcpy (stpcpy (configname, home), "/.config/emacs/server/")), | ||
| 932 | config_file); | ||
| 933 | config = fopen (configname, "rb"); | 932 | config = fopen (configname, "rb"); |
| 934 | } | 933 | } |
| 935 | else | 934 | else |
| 936 | config = NULL; | 935 | config = NULL; |
| 937 | 936 | ||
| 938 | if (! config && home) | 937 | if (! config && (xdg || home)) |
| 939 | { | 938 | { |
| 940 | strcpy (stpcpy (stpcpy (configname, home), "/.emacs.d/server/"), | 939 | strcpy ((xdg |
| 941 | config_file); | 940 | ? stpcpy (stpcpy (configname, xdg), "/emacs/server/") |
| 941 | : stpcpy (stpcpy (configname, home), "/.config/emacs/server/")), | ||
| 942 | config_file); | ||
| 942 | config = fopen (configname, "rb"); | 943 | config = fopen (configname, "rb"); |
| 943 | } | 944 | } |
| 944 | 945 | ||
diff --git a/lisp/menu-bar.el b/lisp/menu-bar.el index 90f9ef78c59..8f825a19adc 100644 --- a/lisp/menu-bar.el +++ b/lisp/menu-bar.el | |||
| @@ -1649,6 +1649,27 @@ mail status in mode line")) | |||
| 1649 | 1649 | ||
| 1650 | menu)) | 1650 | menu)) |
| 1651 | 1651 | ||
| 1652 | (defvar menu-bar-shell-commands-menu | ||
| 1653 | (let ((menu (make-sparse-keymap "Shell Commands"))) | ||
| 1654 | (bindings--define-key menu [interactive-shell] | ||
| 1655 | '(menu-item "Run Shell Interactively" shell | ||
| 1656 | :help "Run a subshell interactively")) | ||
| 1657 | |||
| 1658 | (bindings--define-key menu [async-shell-command] | ||
| 1659 | '(menu-item "Async Shell Command..." async-shell-command | ||
| 1660 | :help "Invoke a shell command asynchronously in background")) | ||
| 1661 | |||
| 1662 | (bindings--define-key menu [shell-on-region] | ||
| 1663 | '(menu-item "Shell Command on Region..." shell-command-on-region | ||
| 1664 | :enable mark-active | ||
| 1665 | :help "Pass marked region to a shell command")) | ||
| 1666 | |||
| 1667 | (bindings--define-key menu [shell] | ||
| 1668 | '(menu-item "Shell Command..." shell-command | ||
| 1669 | :help "Invoke a shell command and catch its output")) | ||
| 1670 | |||
| 1671 | menu)) | ||
| 1672 | |||
| 1652 | (defun menu-bar-read-mail () | 1673 | (defun menu-bar-read-mail () |
| 1653 | "Read mail using `read-mail-command'." | 1674 | "Read mail using `read-mail-command'." |
| 1654 | (interactive) | 1675 | (interactive) |
| @@ -1740,16 +1761,14 @@ mail status in mode line")) | |||
| 1740 | (bindings--define-key menu [gdb] | 1761 | (bindings--define-key menu [gdb] |
| 1741 | '(menu-item "Debugger (GDB)..." gdb | 1762 | '(menu-item "Debugger (GDB)..." gdb |
| 1742 | :help "Debug a program from within Emacs with GDB")) | 1763 | :help "Debug a program from within Emacs with GDB")) |
| 1743 | (bindings--define-key menu [shell-on-region] | ||
| 1744 | '(menu-item "Shell Command on Region..." shell-command-on-region | ||
| 1745 | :enable mark-active | ||
| 1746 | :help "Pass marked region to a shell command")) | ||
| 1747 | (bindings--define-key menu [shell] | ||
| 1748 | '(menu-item "Shell Command..." shell-command | ||
| 1749 | :help "Invoke a shell command and catch its output")) | ||
| 1750 | (bindings--define-key menu [compile] | 1764 | (bindings--define-key menu [compile] |
| 1751 | '(menu-item "Compile..." compile | 1765 | '(menu-item "Compile..." compile |
| 1752 | :help "Invoke compiler or Make, view compilation errors")) | 1766 | :help "Invoke compiler or Make, view compilation errors")) |
| 1767 | |||
| 1768 | (bindings--define-key menu [shell-commands] | ||
| 1769 | `(menu-item "Shell Commands" | ||
| 1770 | ,menu-bar-shell-commands-menu)) | ||
| 1771 | |||
| 1753 | (bindings--define-key menu [rgrep] | 1772 | (bindings--define-key menu [rgrep] |
| 1754 | '(menu-item "Recursive Grep..." rgrep | 1773 | '(menu-item "Recursive Grep..." rgrep |
| 1755 | :help "Interactively ask for parameters and search recursively")) | 1774 | :help "Interactively ask for parameters and search recursively")) |
diff --git a/lisp/minibuffer.el b/lisp/minibuffer.el index a8b2a984c52..4831bf72e9d 100644 --- a/lisp/minibuffer.el +++ b/lisp/minibuffer.el | |||
| @@ -2737,8 +2737,13 @@ See `read-file-name' for the meaning of the arguments." | |||
| 2737 | (unless dir (setq dir (or default-directory "~/"))) | 2737 | (unless dir (setq dir (or default-directory "~/"))) |
| 2738 | (unless (file-name-absolute-p dir) (setq dir (expand-file-name dir))) | 2738 | (unless (file-name-absolute-p dir) (setq dir (expand-file-name dir))) |
| 2739 | (unless default-filename | 2739 | (unless default-filename |
| 2740 | (setq default-filename (if initial (expand-file-name initial dir) | 2740 | (setq default-filename |
| 2741 | buffer-file-name))) | 2741 | (cond |
| 2742 | ((null initial) buffer-file-name) | ||
| 2743 | ;; Special-case "" because (expand-file-name "" "/tmp/") returns | ||
| 2744 | ;; "/tmp" rather than "/tmp/" (bug#39057). | ||
| 2745 | ((equal "" initial) dir) | ||
| 2746 | (t (expand-file-name initial dir))))) | ||
| 2742 | ;; If dir starts with user's homedir, change that to ~. | 2747 | ;; If dir starts with user's homedir, change that to ~. |
| 2743 | (setq dir (abbreviate-file-name dir)) | 2748 | (setq dir (abbreviate-file-name dir)) |
| 2744 | ;; Likewise for default-filename. | 2749 | ;; Likewise for default-filename. |
diff --git a/lisp/progmodes/f90.el b/lisp/progmodes/f90.el index 92fba1c53bb..22f1cfd7c89 100644 --- a/lisp/progmodes/f90.el +++ b/lisp/progmodes/f90.el | |||
| @@ -3,7 +3,7 @@ | |||
| 3 | ;; Copyright (C) 1995-1997, 2000-2020 Free Software Foundation, Inc. | 3 | ;; Copyright (C) 1995-1997, 2000-2020 Free Software Foundation, Inc. |
| 4 | 4 | ||
| 5 | ;; Author: Torbjörn Einarsson <Torbjorn.Einarsson@era.ericsson.se> | 5 | ;; Author: Torbjörn Einarsson <Torbjorn.Einarsson@era.ericsson.se> |
| 6 | ;; Maintainer: Glenn Morris <rgm@gnu.org> | 6 | ;; Maintainer: emacs-devel@gnu.org |
| 7 | ;; Keywords: fortran, f90, languages | 7 | ;; Keywords: fortran, f90, languages |
| 8 | 8 | ||
| 9 | ;; This file is part of GNU Emacs. | 9 | ;; This file is part of GNU Emacs. |
| @@ -539,8 +539,10 @@ type-name parts, respectively." | |||
| 539 | read\\|write\\)\\)[ \t]*(" (1 font-lock-keyword-face t)) | 539 | read\\|write\\)\\)[ \t]*(" (1 font-lock-keyword-face t)) |
| 540 | ;; Other functions and declarations. Named interfaces = F2003. | 540 | ;; Other functions and declarations. Named interfaces = F2003. |
| 541 | ;; F2008: end submodule submodule_name. | 541 | ;; F2008: end submodule submodule_name. |
| 542 | '("\\_<\\(\\(?:end[ \t]*\\)?\\(program\\|\\(?:sub\\)?module\\|\ | 542 | ;; F2008: module function|subroutine NAME. |
| 543 | function\\|associate\\|subroutine\\|interface\\)\\|use\\|call\\)\ | 543 | '("\\_<\\(\\(?:end[ \t]*\\)?\\(program\\|\ |
| 544 | \\(?:module[ \t]*\\)?\\(?:function\\|subroutine\\)\\|\ | ||
| 545 | \\(?:sub\\)?module\\|associate\\|interface\\)\\|use\\|call\\)\ | ||
| 544 | \\_>[ \t]*\\(\\(?:\\sw\\|\\s_\\)+\\)?" | 546 | \\_>[ \t]*\\(\\(?:\\sw\\|\\s_\\)+\\)?" |
| 545 | (1 font-lock-keyword-face) (3 font-lock-function-name-face nil t)) | 547 | (1 font-lock-keyword-face) (3 font-lock-function-name-face nil t)) |
| 546 | ;; F2008: submodule (parent_name) submodule_name. | 548 | ;; F2008: submodule (parent_name) submodule_name. |
| @@ -1381,14 +1383,19 @@ write\\)[ \t]*([^)\n]*)") | |||
| 1381 | (cond | 1383 | (cond |
| 1382 | ((looking-at "\\(program\\)[ \t]+\\(\\(?:\\sw\\|\\s_\\)+\\)\\_>") | 1384 | ((looking-at "\\(program\\)[ \t]+\\(\\(?:\\sw\\|\\s_\\)+\\)\\_>") |
| 1383 | (list (match-string 1) (match-string 2))) | 1385 | (list (match-string 1) (match-string 2))) |
| 1384 | ((and (not (looking-at "module[ \t]*procedure\\_>")) | 1386 | ((and (not (looking-at "module[ \t]*\\(procedure\\|function\\|subroutine\\)\\_>")) |
| 1385 | (looking-at "\\(module\\)[ \t]+\\(\\(?:\\sw\\|\\s_\\)+\\)\\_>")) | 1387 | (looking-at "\\(module\\)[ \t]+\\(\\(?:\\sw\\|\\s_\\)+\\)\\_>")) |
| 1386 | (list (match-string 1) (match-string 2))) | 1388 | (list (match-string 1) (match-string 2))) |
| 1387 | ((looking-at "\\(submodule\\)[ \t]*([^)\n]+)[ \t]*\\(\\(?:\\sw\\|\\s_\\)+\\)\\_>") | 1389 | ((looking-at "\\(submodule\\)[ \t]*([^)\n]+)[ \t]*\\(\\(?:\\sw\\|\\s_\\)+\\)\\_>") |
| 1388 | (list (match-string 1) (match-string 2))) | 1390 | (list (match-string 1) (match-string 2))) |
| 1389 | ((and (not (looking-at "end[ \t]*\\(function\\|subroutine\\)")) | 1391 | ((and (not (looking-at "end[ \t]*\\(function\\|procedure\\|subroutine\\)")) |
| 1390 | (looking-at "[^!'\"&\n]*\\(function\\|subroutine\\)[ \t]+\ | 1392 | (looking-at "[^!'\"&\n]*\\(?:module[ \t]*\\)?\ |
| 1393 | \\(function\\|subroutine\\)[ \t]+\ | ||
| 1391 | \\(\\(?:\\sw\\|\\s_\\)+\\)")) | 1394 | \\(\\(?:\\sw\\|\\s_\\)+\\)")) |
| 1395 | ;; TODO: In F2008 "module procedure foo" may or may not start a block, | ||
| 1396 | ;; It is impossible to tell the difference without parsing state. | ||
| 1397 | ;;; (looking-at "[^!'\"&\n]*module[ \t]*\\(procedure\\)[ \t]+\ | ||
| 1398 | ;;;\\(\\(?:\\sw\\|\\s_\\)+\\)"))) | ||
| 1392 | (list (match-string 1) (match-string 2))))) | 1399 | (list (match-string 1) (match-string 2))))) |
| 1393 | ;; Following will match an un-named main program block; however | 1400 | ;; Following will match an un-named main program block; however |
| 1394 | ;; one needs to check if there is an actual PROGRAM statement after | 1401 | ;; one needs to check if there is an actual PROGRAM statement after |
diff --git a/lisp/progmodes/fortran.el b/lisp/progmodes/fortran.el index b7e9e7857bc..811951eaaaf 100644 --- a/lisp/progmodes/fortran.el +++ b/lisp/progmodes/fortran.el | |||
| @@ -4,7 +4,7 @@ | |||
| 4 | ;; Inc. | 4 | ;; Inc. |
| 5 | 5 | ||
| 6 | ;; Author: Michael D. Prange <prange@erl.mit.edu> | 6 | ;; Author: Michael D. Prange <prange@erl.mit.edu> |
| 7 | ;; Maintainer: Glenn Morris <rgm@gnu.org> | 7 | ;; Maintainer: emacs-devel@gnu.org |
| 8 | ;; Keywords: fortran, languages | 8 | ;; Keywords: fortran, languages |
| 9 | 9 | ||
| 10 | ;; This file is part of GNU Emacs. | 10 | ;; This file is part of GNU Emacs. |
diff --git a/lisp/startup.el b/lisp/startup.el index 2a85c004da1..1f545c66922 100644 --- a/lisp/startup.el +++ b/lisp/startup.el | |||
| @@ -497,28 +497,28 @@ DIRS are relative." | |||
| 497 | (defvar startup--xdg-config-home-emacs) | 497 | (defvar startup--xdg-config-home-emacs) |
| 498 | 498 | ||
| 499 | ;; Return the name of the init file directory for Emacs, assuming | 499 | ;; Return the name of the init file directory for Emacs, assuming |
| 500 | ;; XDG-DIR is the XDG location and USER-NAME is the user name. | 500 | ;; XDG-DIR is the XDG location and USER-NAME is the user name. If |
| 501 | ;; If USER-NAME is nil or "", use the current user. | 501 | ;; USER-NAME is nil or "", use the current user. Prefer the XDG |
| 502 | ;; Prefer the XDG location unless it does does not exist and the | 502 | ;; location only if the .emacs.d location does not exist. |
| 503 | ;; .emacs.d location does exist. | ||
| 504 | (defun startup--xdg-or-homedot (xdg-dir user-name) | 503 | (defun startup--xdg-or-homedot (xdg-dir user-name) |
| 505 | (if (file-exists-p xdg-dir) | 504 | (let ((emacs-d-dir (concat "~" user-name |
| 506 | xdg-dir | 505 | (if (eq system-type 'ms-dos) |
| 507 | (let ((emacs-d-dir (concat "~" user-name | 506 | "/_emacs.d/" |
| 508 | (if (eq system-type 'ms-dos) | 507 | "/.emacs.d/")))) |
| 509 | "/_emacs.d/" | 508 | (cond |
| 510 | "/.emacs.d/")))) | 509 | ((or (file-exists-p emacs-d-dir) |
| 511 | (if (or (file-exists-p emacs-d-dir) | 510 | (if (eq system-type 'windows-nt) |
| 512 | (if (eq system-type 'windows-nt) | 511 | (if (file-directory-p (concat "~" user-name)) |
| 513 | (if (file-directory-p (concat "~" user-name)) | 512 | (directory-files (concat "~" user-name) nil |
| 514 | (directory-files (concat "~" user-name) nil | 513 | "\\`[._]emacs\\(\\.elc?\\)?\\'")) |
| 515 | "\\`[._]emacs\\(\\.elc?\\)?\\'")) | 514 | (file-exists-p (concat "~" init-file-user |
| 516 | (file-exists-p (concat "~" init-file-user | 515 | (if (eq system-type 'ms-dos) |
| 517 | (if (eq system-type 'ms-dos) | 516 | "/_emacs" |
| 518 | "/_emacs" | 517 | "/.emacs"))))) |
| 519 | "/.emacs"))))) | 518 | emacs-d-dir) |
| 520 | emacs-d-dir | 519 | ((file-exists-p xdg-dir) |
| 521 | xdg-dir)))) | 520 | xdg-dir) |
| 521 | (t emacs-d-dir)))) | ||
| 522 | 522 | ||
| 523 | (defun normal-top-level () | 523 | (defun normal-top-level () |
| 524 | "Emacs calls this function when it first starts up. | 524 | "Emacs calls this function when it first starts up. |
diff --git a/nt/inc/ms-w32.h b/nt/inc/ms-w32.h index 3b1d3ff0393..1cce2c3062f 100644 --- a/nt/inc/ms-w32.h +++ b/nt/inc/ms-w32.h | |||
| @@ -63,8 +63,8 @@ along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. */ | |||
| 63 | Look in <sys/time.h> for a timeval structure. */ | 63 | Look in <sys/time.h> for a timeval structure. */ |
| 64 | #define HAVE_TIMEVAL 1 | 64 | #define HAVE_TIMEVAL 1 |
| 65 | 65 | ||
| 66 | /* And the select implementation does 1-byte read-ahead waiting | 66 | /* Our select emulation does 1-byte read-ahead waiting for received |
| 67 | for received packets, so datagrams are broken too. */ | 67 | packets, so datagrams are broken. */ |
| 68 | #define BROKEN_DATAGRAM_SOCKETS 1 | 68 | #define BROKEN_DATAGRAM_SOCKETS 1 |
| 69 | 69 | ||
| 70 | #define MAIL_USE_SYSTEM_LOCK 1 | 70 | #define MAIL_USE_SYSTEM_LOCK 1 |
diff --git a/test/lisp/progmodes/f90-tests.el b/test/lisp/progmodes/f90-tests.el index 540082c7174..b6fbac351dc 100644 --- a/test/lisp/progmodes/f90-tests.el +++ b/test/lisp/progmodes/f90-tests.el | |||
| @@ -277,4 +277,24 @@ end program prog") | |||
| 277 | (forward-line -2) | 277 | (forward-line -2) |
| 278 | (should (= 2 (current-indentation))))) ; type is | 278 | (should (= 2 (current-indentation))))) ; type is |
| 279 | 279 | ||
| 280 | (ert-deftest f90-test-bug38415 () | ||
| 281 | "Test for https://debbugs.gnu.org/38415 ." | ||
| 282 | (with-temp-buffer | ||
| 283 | (f90-mode) | ||
| 284 | (setq-local f90-smart-end 'no-blink) | ||
| 285 | (insert "module function foo(x) | ||
| 286 | real :: x | ||
| 287 | end") | ||
| 288 | (f90-indent-line) | ||
| 289 | (should (equal " function foo" | ||
| 290 | (buffer-substring (point) (line-end-position)))) | ||
| 291 | (goto-char (point-max)) | ||
| 292 | (insert "\nmodule subroutine bar(x) | ||
| 293 | real :: x | ||
| 294 | end") | ||
| 295 | (f90-indent-line) | ||
| 296 | (should (equal " subroutine bar" | ||
| 297 | (buffer-substring (point) (line-end-position)))))) | ||
| 298 | |||
| 299 | |||
| 280 | ;;; f90-tests.el ends here | 300 | ;;; f90-tests.el ends here |