aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--doc/emacs/custom.texi45
-rw-r--r--etc/NEWS.27129
-rw-r--r--lib-src/emacsclient.c17
-rw-r--r--lisp/menu-bar.el33
-rw-r--r--lisp/minibuffer.el9
-rw-r--r--lisp/progmodes/f90.el19
-rw-r--r--lisp/progmodes/fortran.el2
-rw-r--r--lisp/startup.el42
-rw-r--r--nt/inc/ms-w32.h4
-rw-r--r--test/lisp/progmodes/f90-tests.el20
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
2657directory. @xref{Init File}. By default this location is 2657directory. @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.
2659This default can be overridden as described below. 2659This default can be overridden as described below.
2660 2660
2661 If @env{XDG_CONFIG_HOME} is set in your environment, its 2661Emacs looks for your init file
2662value replaces @file{~/.config} in the name of the default
2663init file.
2664
2665 If the default init file's parent directory does not exist but the
2666directory @file{~/.emacs.d} does exist, Emacs looks for your init file
2667using the filenames @file{~/.emacs.el}, @file{~/.emacs}, or 2662using 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
2669names. (Note that only the locations directly in your home directory 2664names. (Note that only the locations directly in your home directory
2670have a leading dot in the location's basename.) Although this is 2665have a leading dot in the location's basename.)
2671backward-compatible with older Emacs versions, modern POSIX platforms 2666
2672prefer putting your initialization files under @file{~/.config} so 2667Emacs can also look in an XDG-compatible location for @file{init.el},
2673that troubleshooting a problem that might be due to a bad init file, 2668the default is the directory @file{~/.config/emacs}. This can be
2674or archiving a collection of init files, can be done by renaming that 2669overriden by setting @env{XDG_CONFIG_HOME} in your environment, its
2675directory. To help older Emacs versions find configuration files in 2670value replaces @file{~/.config} in the name of the default XDG init
2676their current default locations, you can execute the following 2671file. However @file{~/.emacs.d} and @file{~/.emacs} are always
2677Emacs Lisp code: 2672preferred if they exist, which means that you must delete or rename
2673them in order to use the XDG location.
2674
2675Note also that if neither the XDG location nor @file{~/.emacs.d}
2676exist, then Emacs will create @file{~/.emacs.d} (and therefore use it
2677during subsequent invocations).
2678
2679Emacs will set @var{user-emacs-directory} to the directory it decides
2680to use.
2681
2682Although this is backward-compatible with older Emacs versions, modern
2683POSIX platforms prefer putting your initialization files under
2684@file{~/.config} so that troubleshooting a problem that might be due
2685to a bad init file, or archiving a collection of init files, can be
2686done by renaming that directory. To help older Emacs versions find
2687configuration files in their current default locations, you can
2688execute 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
2694name in the system's data base of users. 2705name 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
2697the current default location @file{~/.config/emacs/init.el} for the 2708the current default location @file{~/.emacs.d/init.el} for the
2698init file. 2709init 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
2741to have customizations that take effect during Emacs startup earlier than the 2752to have customizations that take effect during Emacs startup earlier than the
2742normal init file is processed. Such customizations can be put in the early 2753normal init file is processed. Such customizations can be put in the early
2743init file, @file{~/.config/emacs.d/early-init.el} or @file{~/.emacs.d/early-init.el}. This file is loaded before the 2754init file, @file{~/.config/emacs/early-init.el} or @file{~/.emacs.d/early-init.el}. This file is loaded before the
2744package system and GUI is initialized, so in it you can customize variables 2755package system and GUI is initialized, so in it you can customize variables
2745that affect frame appearance as well as the package initialization process, 2756that affect frame appearance as well as the package initialization process,
2746such as @code{package-enable-at-startup}, @code{package-load-list}, and 2757such 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.
57This builds Emacs with Cairo drawing, and supports built-in printing 57This builds Emacs with Cairo drawing, and supports built-in printing
58when Emacs is built with GTK+. Some severe bugs in this build were 58when Emacs is built with GTK+. Some severe bugs in this build were
59fixed, and we can therefore offer this to users without caveats. 59fixed, and we can therefore offer this to users without caveats. Note
60that building with Cairo enabled results in using Pango instead of
61libXft for font support, and that Pango 1.44 has removed support for
62bitmapped 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
66operating systems. 69operating systems.
67 70
68When built with the portable dumping support (which is the default), 71When built with the portable dumping support (which is the default),
69Emacs looks for the 'emacs.pdmp' file, generated during the build, in 72Emacs looks for the "emacs.pdmp" file, generated during the build, in
70its data directory at startup, and loads the dumped state from there. 73its data directory at startup, and loads the dumped state from there.
71The new command-line argument '--dump-file=FILE' allows to specify a 74The new command-line argument '--dump-file=FILE' allows specifying a
72non-default '.pdmp' file to load the state from; see the node 75non-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
75An Emacs started via a dump file can create a new dump file only if it 78An Emacs started via a dump file can create a new dump file only if it
@@ -150,29 +153,32 @@ builds respectively.
150Pass '--without-modules' to 'configure' to disable dynamic module 153Pass '--without-modules' to 'configure' to disable dynamic module
151support. 154support.
152 155
156---
157** The ftx font backend driver is now obsolete and will be removed in
158Emacs 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.
158For example, it looks for init.el in "~/.config/emacs/init.el", and 165The 'XDG_CONFIG_HOME' environment variable (which defaults to
159similarly for other init files. 166"~/.config") specifies the XDG configuration parent directory. Emacs
167checks for "init.el" and other configuration files inside the "emacs"
168subdirectory of 'XDG_CONFIG_HOME', i.e. "$XDG_CONFIG_HOME/emacs/init.el"
160 169
161The 'XDG_CONFIG_HOME' environment variable (which defaults to "~/.config") 170However, Emacs will still initially look for init files in their
162specifies the parent directory of these and other configuration files, 171traditional locations if "~/.emacs.d" or "~/.emacs" exist, even if
163and 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.). 173or rename any existing "~/.emacs.d" and "~/.emacs" to enable use of
174the XDG directory.
165 175
166Emacs will still look for init files in their traditional locations if 176If "~/.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' 178Emacs will never create "$XDG_CONFIG_HOME/emacs".
169might be useful if your new-location init files are scrambled, or if
170you want to force Emacs to ignore files under 'XDG_CONFIG_HOME' for
171some other reason.
172 179
173If neither "$XDG_CONFIG_HOME/emacs" nor "~/.emacs.d" exist, Emacs will 180Whichever directory Emacs decides to use, it will set
174now default to "$XDG_CONFIG_HOME/emacs", and will create that directory 181'user-emacs-directory' to point to it.
175and 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:
217Units that are ordered after 'emacs.service' will only be started 223Units that are ordered after 'emacs.service' will only be started
218after Emacs has finished initialization and is ready for use. 224after 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
220emacs.service file to eg "~/.config/systemd/user/", you will need to copy 226emacs.service file to e.g. "~/.config/systemd/user/", you will need to copy
221the new version of the file again.) 227the new version of the file again.)
222 228
223 229
@@ -308,6 +314,15 @@ causing XFT crashes, they are now filtered out. Setting
308require setting 'face-ignored-fonts' to filter out problematic fonts. 314require setting 'face-ignored-fonts' to filter out problematic fonts.
309Known problematic fonts are "Noto Color Emoji" and "Emoji One". 315Known problematic fonts are "Noto Color Emoji" and "Emoji One".
310 316
317---
318** The GTK+ font chooser now respects 'face-ignored-fonts'.
319When using 'menu-set-font' under GTK3, the available fonts are now
320matched against 'face-ignored-fonts'.
321
322---
323** The GTK+ font chooser now remembers the previously selected settings.
324It 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'.
313When non-nil, 'what-cursor-position' will show the name of the character 328When 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.
437This triggers to search the program on the remote host as indicated by 452This 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'.
467This user option allows to specify the set of buffers that may be 482This user option allows specifying the set of buffers that may be
468shown by 'switch-to-prev-buffer' and 'switch-to-next-buffer' more 483shown by 'switch-to-prev-buffer' and 'switch-to-next-buffer' more
469stringently than the now obsolete 'switch-to-visible-buffer'. 484stringently 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
534mode, they are described in the manual "(emacs) Display". 549mode, 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.
584Previously, Emacs would only ask for confirmation before visiting 599Previously, Emacs would only ask for confirmation before visiting
585large files. Now it also offers a third alternative: to visit the 600large files. Now it also offers a third alternative: to visit the
586file literally, as in 'find-file-literally', which speeds up 601file literally, as in 'find-file-literally', which speeds up
587navigation and editing of large files. 602navigation 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
592navigating through the history of characters that have been input. 607navigating through the history of characters that have been input.
593This is mostly useful for characters that have complex input methods 608This 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
720acinclude.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
767should be ignored have been added via the 782be ignored has been added via the 'goto-address-uri-schemes-ignored'
768'goto-address-uri-schemes-ignored' variable. 783variable.
769 784
770+++ 785+++
771** tex-mode 786** tex-mode
@@ -1268,9 +1283,9 @@ embedding database passwords in your Emacs initialization.
1268 1283
1269See the 'auth-source' module for complete documentation on the file 1284See the 'auth-source' module for complete documentation on the file
1270formats. By default, the wallet file is expected to be in the 1285formats. 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
1273be encrypted with GPG by adding an additional '.gpg' suffix. 1288be 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.
1396The 'file://' URLs in Info documents can now be followed by passing 1411The 'file://' URLs in Info documents can now be followed by passing
1397them to the 'browse-url' function, like the other protocols: 'ftp', 1412them 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
1399files, for example. 1414files, for example.
1400 1415
1401--- 1416---
@@ -1460,8 +1475,9 @@ completion facilities.
1460This can be controlled by the new 'ecomplete-sort-predicate' user option. 1475This 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
1464Of 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
1480if 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'
1507server variable to non-nil. 1523server 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.
1511Limit to articles with score at below. 1527Limit to articles with score "at or below" the SCORE argument rather
1528than "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
1913less verbose by removing non-essential information. 1930less 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
2052or NextCloud hosted files and directories. 2069or 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
2056storages via the 'rclone' program. This feature is experimental. 2073storages 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
2060with different user credentials. Contrary to the "sudo" method, no 2077with different user credentials. Contrary to the "sudo" method, no
2061session is run permanently in the background. This is for security 2078session is run permanently in the background. This is for security
2062reasons. 2079reasons.
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
2066are obsoleted in GVFS. 2083are obsoleted in GVFS.
2067 2084
2068+++ 2085+++
@@ -2074,7 +2091,7 @@ from auth-source search are taken into account. This can be disabled
2074by setting the user option 'tramp-completion-use-auth-sources' to nil. 2091by 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
2078Tramp for some look-alike remote file names. 2095Tramp 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
2083are adjusted to the host name from the previous hop. 2100are 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".
2087timeout, after which the underlying session is disabled. This is for 2104The underlying session is disabled when the timeout expires. This is
2088security reasons. 2105for 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'.
2098They allow to save remote files somewhere else when the corresponding 2115They allow saving remote files somewhere else when the corresponding
2099host is not reachable anymore. 2116host 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'.
2298This allows to create and parent immediately a minibuffer-only child 2315This allows creating and immediately parenting a minibuffer-only child
2299frame when making a frame. 2316frame 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.
2344If a file imports Facebook's 'React' library, or if the file uses the 2361If a file imports Facebook's 'React' library, or if the file uses the
2345extension '.jsx', then various features supporting XML-like syntax 2362extension ".jsx", then various features supporting XML-like syntax
2346will be supported in 'js-mode' and derivative modes. ('js-jsx-mode' 2363will be supported in 'js-mode' and derivative modes. ('js-jsx-mode'
2347no longer needs to be enabled.) 2364no longer needs to be enabled.)
2348 2365
@@ -3024,7 +3041,7 @@ years containing more than four digits. This is for compatibility
3024with POSIX.1-2017. 3041with 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.
3043if it is not known whether daylight saving time is in effect. 3060if it is not known whether daylight saving time is in effect.
3044Formerly they were inconsistent: 'encode-time' returned t in this 3061Formerly they were inconsistent: 'encode-time' returned t in this
3045situation, whereas 'parse-time-string' returned nil. Now they 3062situation, whereas 'parse-time-string' returned nil. Now they
3046consistently use use nil to mean that DST is not in effect, and use -1 3063consistently use nil to mean that DST is not in effect, and use -1
3047to mean that it is not known whether DST is in effect. 3064to 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'.
3236This option allows to automatically resize minibuffer-only frames 3253This option allows automatically resizing minibuffer-only frames
3237similarly to how minibuffer windows are resized on "normal" frames. 3254similarly 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'.
3241This function allows to specify the location of the window chosen by 3258This 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'.
3246Such an entry allows to specify the dedicated status of a window 3263Such an entry allows specifying the dedicated status of a window
3247created by 'display-buffer'. 3264created 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'.
3251Such an entry allows to specify a minimum height of the window used 3268Such an entry allows specifying a minimum height of the window used
3252for displaying a buffer. 'display-buffer-below-selected' is the only 3269for displaying a buffer. 'display-buffer-below-selected' is the only
3253action function to respect it at the moment. 3270action 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."
539read\\|write\\)\\)[ \t]*(" (1 font-lock-keyword-face t)) 539read\\|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.
543function\\|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)
286real :: x
287end")
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)
293real :: x
294end")
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