From: Eli Zaretskii Date: Thu, 8 Dec 2022 17:52:37 +0000 (-0500) Subject: Merge from origin/emacs-29 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=6c06379c030908a8106bc0f0290d472f67aa503c;p=emacs.git Merge from origin/emacs-29 e950f5a663 Merge branch 'feature/use-package' into emacs-29 5bcd0cee0f * etc/USE-PACKAGE-NEWS: Delete file. 6bb4267a54 * admin/git-bisect-start: Prune use-package merge commits. b9fa81514f ; Minor doc fixes in bind-key.el 15fb115551 Update use-package defgroups 4be96c9dcb Drop key-chord.el support from use-package 9c21eae60c ; lisp/progmodes/java-ts-mode.el: Fix more typos. 2659311e06 ; * lisp/progmodes/java-ts-mode.el (java-ts-mode--keywords... b4a3724d3b Remove unneeded (require 'edebug) from which-func.el 5899cac111 Change use-package custom :group to `initialization` 8fb2afe051 ; Fix typos a37df90276 Treat escaped newlines in Eshell as the empty string d3e9bd3b57 ; Document use-package-reset-statistics c65e087068 ; use-package: Improve :ensure-system-package docstrings 141fe8b827 use-package: Improve :mode keyword documentation 888558ec42 Improve bind-keys* and override-global-mode docstrings c774e83e36 ; * src/emacs.c (main): Improvements to last change. 537f11f8cd ; * doc/misc/use-package.texi: Improve indexing. 98e54f597e Add new use-package manual 01bfbd186a Fix use-package tests 97c8a58787 * doc/misc/Makefile.in (INFO_COMMON): Add use-package. 500c459eff ; * etc/NEWS: Mention use-package. 4a1e9d61b5 ; Merge from https://github.com/jwiegley/use-package 58cc931e92 Merge pull request from skangas/revert-for-copyright c74b5c16f8 Merge pull request from skangas/revert-for-copyright2 ebbd98edb3 Revert "Add: 'local' keyword" 8296164eab Remove tests lacking a copyright assignment for now a6cbfdd8f1 Merge pull request from skangas/package-requires efae6048dd Add package keyword from finder-known-keywords 06f92d1cc0 Fix Package-Requires for bind-{chord,key}.el e42c8479ec Merge pull request from skangas/dir-locals 7b689942f0 Merge pull request from skangas/fix-headers 30fa366737 Add .dir-locals.el 79c2c3a3ad Delete redundant headers 2399d0d5ce Normalize GPLv3 license statements 7087a97a24 Merge pull request from jwiegley/revert-1019-johnw/multi-k... 3e81af80a2 Revert "Allow multiple keymaps in :map argument" f4ee1c3839 Merge pull request from jwiegley/johnw/multi-keymap 49fffe7cf4 Merge remote-tracking branch 'origin/master' into pr-830 cf8ab8b52e Merge pull request from skangas/texinfo-wip 2efc869866 Merge branch 'master' into texinfo-wip 9b476ae71c Merge pull request from skangas/gnu-elpa 8cf8631c69 Fix makeinfo warnings a6b1b62763 Use two spaces to end sentences 6a26c55d70 Recommend GNU ELPA over MELPA 4e8b72efc8 manual: Regenerate texi file ae301ad36d Merge pull request from skangas/checkdoc 5dad5ff0fe Merge pull request from skangas/ci ff30d22909 Various checkdoc fixes 971634e3f9 Merge pull request from bhankas/master 43254ae62f Fix building on Emacs 24.3 45e6ee1371 Fix tests on Emacs 26 or older 7122ac5397 Bump version to 2.4.4 6b25a41bc6 Merge pull request from andreyorst/face-spec-set-third-arg... 76a5ce5d86 Allow passing the SPEC-TYPE argument via :custom-face 67d7d1fda0 Merge pull request from bhankas/master 370890e518 Bump version to 2.4.3 2ee9b31ca4 bind-key.el: Bump version for ELPA 407b1bf4f0 Merge pull request from andreyorst/face-spec-set 0be7f5dd53 Merge pull request from bhankas/master abd655c99e Update version to 2.4.2 9188b3edf1 Merge pull request from bhankas/master 0fafd98513 Update copyright for submission to ELPA 6b344a9197 Use face-spec-set instead of custom-set-faces c0338e06cd Merge pull request from conao3/add-commands-keyword ec96b47664 bind-keys supports passing a list of keymaps as :map argument daa124e1cc Fix bind-chords docs: :map argument may be a list of keymaps 4107bbfbdb Merge pull request from sdwolfz/native-compiler-warning 1494f65f61 Fix emacs native compilation warning for bind-key c12deb31fe Merge pull request from CeleritasCelery/master d4aeda77a9 Merge pull request from sdwolfz/native-compiler-warning 3feedce08d Fix emacs native compilation warning 6c2fdaffd9 Revert "Remove use-package-font-lock-keywords" 09e837dfae Merge pull request from belak/remove-extra-font-lock-keywords 89d6e7a5ec Merge pull request from realcomplex/override-global-mode-fix a05b9e28ed Go back to making `override-global-mode` non-global 85c1287c26 Make sure that bind-key's `override-global-mode` is initia... 3dd5bee4aa Merge pull request from tarsiiformes/quote-quote 53c1889342 Quote single quotes in docstrings or use different quoting e8626100f3 Merge pull request from tarsiiformes/cleanup-manual 835fdb16be manual: Regenerate texi file 0dc78ef4c8 Merge pull request from conao3/fix-declare-style 2967849846 Merge pull request from waymondo/ensure-system-packages-us... 28e7b96fcf Merge pull request from waymondo/use-package-hook-handler-... b1fbfe66eb Merge pull request from waymondo/use-package-chords-autolo... cf3bfecced Merge pull request from matzebond/master a0ba027ee5 Merge pull request from wcy123/master ca426a7732 Merge pull request from phst/lex f270623768 Merge pull request from phst/flet 0503611b71 Merge pull request from conao3/add-custom-face-description e9b297a9fa Merge pull request from iaeerfung/master 6484e5fdfe Merge pull request from wyuenho/set-default-use-package-en... a7259411f6 Merge pull request from wyuenho/statistics-sorting de0c8c36c7 Merge pull request from Hugo-Heagren/bind-keys-repeat-map 015c921a2e Merge pull request from danielpza/add-update-custom-package b143663f12 Merge pull request from tarsiiformes/silencio debab131f0 Merge pull request from DamienCassou/update-texi 22de8991c1 Merge pull request from skangas/fix-typo 620fe443c2 Add: 'local' keyword 4004dde6ea Avoid positional arguments to define-minor-mode cb85f9c274 Fix typo in use-package docstring 30b35d6d62 Update use-package.texi 9be2580f5f optimization: constand folding for read-kbd-macro 1143f14d65 bind-keys-form: error for repeat sub-keywords without :rep... c4bd2aa3b8 bind-key-form: allow :continue keyword inside repeat map 5ef327ce9f bind-key-form: allow :exit keyword inside repeat map 2203246454 bind-keys-form: new keyword :repeat-map, for defining repe... ee292b80be Fix tests and documentation for hook 24c50da3b2 Auto detect mode suffix in hook keyword 1343783532 feat: add update custom packages command f3ff593a84 Properly sort use-package-statistics-report c09cb1301b Fix void-variable use-package-enable-imenu-support 11b2184c8d Remove uses of deprecated ‘flet’ macro a35b924054 add testcase dbfb3484cd add autoload keyword 40d2541331 fix docstring. was: invalid function name ffa5f0397a Merge pull request from minad/improved-unbind 5ca7bc321d unbind-key: Ensure that keys are removed from the keymap ec750952f4 bind-key: Use new symbols for kmapvar a248658910 Merge pull request from tzz/tzz/use-package-use-theme 2b9536f242 Add use-package-use-theme and avoid missing theme errors c425e67a19 Merge pull request from kljohann/custom-use-single-let e3938e7b26 Use a single let binding when expanding consecutive :custo... e4daf0cd42 Merge pull request from tzz/tzz/remove-use-package-from-cu... 6b7ab46e57 Remove use-package theme from global list of custom-enable... 3ffb662dcc Merge pull request from tzz/tzz/set-comment-and-synthetic-... a3c310c11a Create new "use-package" themse and use it for :custom wit... 5ceb51ae19 set property theme-value to avoid saving variable 3e24a7363b Revert "use-package-core.el: use the Emacs set-default fun... 8ef7978028 set saved-variable-comment from :custom 99643f8873 Update version to 2.4.1 215dd35e49 add multiple and eval :custom-face usage 4938167bff Remove use-package-font-lock-keywords 10c6400d34 Merge pull request from wyuenho/patch-1 5bd7e0ca7d Migrate remaining files to lexical binding 1f54de9210 Merge branch 'master' into patch-1 c358eedcf9 Merge pull request from tzz/custom-set-default 13b1e202bf Update the documentation for :custom as per d3f847eaee Fix broken test due to 2ca2212f73 better tests de49954965 add test for 950068809b Support keymap symbol in bind-key 3e96664ffe Merge pull request from tzz/custom-set-default 8c31c57106 use-package-core.el: use the Emacs set-default function to... 4e72885f85 Merge pull request from jjlee/call-hooks-even-if-no-config 203d15e34e Merge branch 'master' into call-hooks-even-if-no-config 218687d897 Merge pull request from nahuel/patch-1 44c837879e typo, should be a vector, not a bytecode object 0ec4660f74 Add special value back again, in case needed for backwards... f30d5761af Even when there's no :config, run any pre/post config hooks 91e5d275af Merge pull request from jwiegley/johnw/clarify 8b8522650e Clarify the documentation for :after 8e81459dad Merge pull request from DamienCassou/typos 3a58f53b14 Fix typos 0456f878fc Merge pull request from tarsiiformes/typos 8c7fa11a3f Fix typos 165f2dd968 Use `require', not `load', when byte-compiling () 20415fb9be Update tests 4c8d5f0b21 Switch from `require' to `load' + `featurep' 27fd32c47b Use `require', not `load', when byte-compiling 0d720a0f61 update bind-chords to use of eval-after-load when maps dec... 8f1a345b5b rename function 8ec41be418 extract use-package-hook-handler-flatten-mode-symbols func... 4149ec6cfa use `use-package-as-one` for normalizing `:ensure-system-p... 97f0287e19 Make custom-face evaluate elisp. () c297dfdd20 Make custom-face evaluate elisp 8fe0ac2983 * use-package-core.el (use-package): fix declare style 3e36cbfb6d Merge pull request from stribb/master 95f24f9628 Add a line of documentation for (use-pacakage ... :hook) 7e40a9c424 Merge pull request from conao3/fix_default_value 77ad44639f Merge pull request from tarsiiformes/silencio fc6fef6869 Silence byte-compiler on Emacs 25 3f96971feb Merge pull request from jwiegley/use-package-chords-suppre... 63886cb15f Merge pull request from lrochfort/ensure-system-package_us... ca39ed155f [] Install system packages using system-packages-install 607879e647 prefix argument with _ to suppress Unused lexical argument... 4a34b41f96 Merge pull request from justbur/autoload-keymap c169644637 Merge pull request from jwiegley/ensure-system-package-fil... 2a8c2ffea2 allow :ensure-system-package to check the presence of file... 0a4d082054 Merge pull request from killdash9/patch-1 38dcba6872 Place :chords at beginning of use-package-keywords 1fb4198933 Merge pull request from killdash9/patch-1 5fb369c968 Merge branch 'master' into patch-1 87e26db44f Merge pull request from jabranham/enable-lexical-binding bdd7fd3565 Fix use-package-normalize-function 09b7e8e129 Fix use-package-normalize-function tests e2e6f9a44b Enable lexical binding cc9ec36f1a Merge pull request from taingra/master b1d9ce08a6 Update use-package.texi b84a77bcdc Added an Introduction taken from the README c980371f6f Correct prefix keys after use-package-autoload-keymap 36f9a9b9b4 Merge pull request from akhramov/fix/ensure-system-package... f38a100917 Ensure system package cleanup db35639457 fix gethash default value for use-package-statistics-time 642417ac05 Merge pull request from andschwa/remap-command d2fec5e5e3 Document that remapping commands is supported with bind-key 85e580a5e4 Merge pull request from akhramov/fix/ensure-system-package... 9f034a0bcf [] ensure-system-package: honor system-packages customizat... dc83e2f035 Update use-package-chords.el c9f6cae603 Update use-package-chords.el e2a322d870 Merge pull request from waymondo/master e5d3826b62 :ensure-system-package allow cdr of cons to be a package n... ad601fb49a Merge pull request from valignatev/master 8a27cd3a8b Encourage installation via https instead of http 742cf27b0e Merge pull request from DamienCassou/fix-report-again 69a561b86b Fix compile-time warnings due to the statistics-reporting ... 2a47998844 Add missing require dd8ef12112 Merge pull request from jwiegley/revert-645-fix-report cba5a11368 Revert "Fix report" b1429951b1 Merge pull request from DamienCassou/fix-report b28efb4847 Fix compile-time warnings due to the statistics-reporting ... bce655f616 Add missing require 4cc7f91270 Merge pull request from DamienCassou/tabulated-list ae22d74a16 Use a tabulated-list to display package configuration stat... 76e6d3e8bc Merge pull request from matthewbauer/patch-1 2250f89ac0 Support ":package" in use-package 10b4dcb53a Merge pull request from justbur/normalize-fix 46503b194c Fix usage of plist argument in use-package-normalize-plist e379221166 Merge pull request from justbur/ignore-keywords 09266283b9 Add use-package-ignore-unknown-keywords option ab918196fa Revert "Merge pull request from jabranham/lexical-bindings" 566a2ea3a1 Revert "Move variable bindings to the bottom of each file" c29193bf07 Move variable bindings to the bottom of each file d21787f1d6 Merge pull request from jabranham/lexical-bindings 109167e8f5 Don't remove sharp quotes 2274130b40 Test still requires cl 4c3abcf4eb Fix byte compiler warnings 88bcb8b96d Use lexical bindings and remove cl package fd8a3510fd Merge pull request from jabranham/system-packages-update b7252f8e63 lexical binding 46ee100327 Prefer non-obsolete var names 567df21f26 Merge pull request from jabranham/fix-byte-compiler 8a6430835f Prefer org-table-align to orgtbl-ctrl-c-ctrl-c 13a9e339f2 Merge pull request from justbur/elisp-cap 44cb99fcc7 Merge pull request from nickmccurdy/render-report-table 1fdfd46fb2 Fix sanity check for correct :custom-face format 9638870f53 Handle automatic macro expansion by elisp-completion-at-point 13fb5f4f2e Guard a call to display-warning with ignore cb15dffbd7 Render the use-package-report table using Org 2d226310f1 All the second argument in use-package-defaults lists to b... 51eceb4238 Add a test related to 31fa2f24a1 Add more tests related to issue 4aa9b0cd6a Minor simplification of a function a4d2e77961 bind-keys fixes related to 3850281f88 Add a clarifying test for ec84ed0dfb Fix a scoping issues with multiple occurrences of :bind 5a02d61ac6 Start building a use-package linter in use-package-lint.el 7e458c640c use-package-normalize/:disabled has the wrong number of ar... 0068501aa0 Remove several unnecessary calls to `ignore' ae0d243681 Add another :bind test e6c54b54ab Add further note to NEWS.md 4714380696 Add tests for two more issues 93231ecbab Fix the tests 8cf7b17dae Clarify a note in NEWS.md 8fefa49d39 Changes to the way auto-deferral is indicated 80e8a599b4 Introduce new customization variable `use-package-merge-ke... 96ecfab9e4 Use cl-gentemp in another place 7803571280 Correctly fix the problem of unreferenced symbols after co... 20694696b2 Revert "Pre-expand lexical-let, since otherwise it require... 7cc17cee8f Pre-expand lexical-let, since otherwise it requires cl to ... 71fc224961 Add documentation for `use-package-report' beee6b8d4d use-package-defaults predicate must also receive the packa... 75428f870d Remove Package-Requires for diminish and delight, as these... 9a6d8a4cf2 Add a comment as to why max-lisp-eval-depth is set in -tes... b001edf162 Add missing autoload cookie, and make lack of a normalizer... ce36e68817 Don't compute the verbose debug text unless it's requested e8a7ae1ea1 Add :bind test for a single cons cell 2a85d81c47 Add support for gathering statistics on use-package declar... 894e95aa4b Respect keyword ordering in use-package-deferring-keywords 0939993935 Clarify :config with setq versus :custom c272c6b56b Update some GPL version references 2cd3ebd5d5 Allow the expansion of :after (:or foo bar) to be byte-com... b2b91af2e5 Make the expanded text for :after cleaner de12a5ae86 Several changes as suggested by flycheck 3343cca33b Don't auto-defer if the package itself was given to :load 2a9904b9e8 Enable all tests on Travis 0c110ebd67 Allow `:load t' to mean the same as :load of the package name 4882df8285 Whitespace change 7b8e94a61a Default running-on-travis to t 5f13924885 Enable 4 tests that work when not run on Travis cdb250e766 For now, stub out test that breaks Travis 7c3a6cd70b Stub some referenced variables, for Travis b5a0cd4f30 Add note in NEWS.md about :requires vs. :if b25a305c58 Lower the priority of :if/:when/:unless in use-package-key... 64ffdb6863 Enhance fix-expansion to take surrounding let bindings int... 65caa3b423 Rewrite normalization of :bind and :bind* 725d749b7c Normalize errors should be errors, that are then caught by... 0a628a2767 Avoid using pcase and many other macros in macro-expanded ... a090961f10 Fix bad interaction between bind-keys* and the :package ke... 10fd4577d0 Add missing autoload cookies f037c2daeb Fix function accidentally made interactive 43f1be12b7 Use cl-gensym ee07e709ea Fix the case where :ensure is given no arguments afdf1c3638 Some Emacsen don't have gensym 2892c026f4 Add note in NEWS.md about :after and autoloaded keybindings 277384d151 Add a note to `bind-key` on the usage of the KEYMAP argument 2790bfc006 Add a bind-key test 62d33b2143 Support :ensure (pkg :pin archive) e34fdb580a Add several missing comments 6c836985b1 Swap the order of two definitions 6470eaf3d5 Fix an argument process problem with bind-key a2ddc18065 Comment out two tests that break on Travis 4b83f9525c Rename up-* files to use-package-* for consistency f869036115 Merge branch 'split-bind-key' 1e42c867b6 Commit .texi file, as it requires several dependencies to ... 08e5406cc3 Merge branch 'master' into next 5382941ac3 Add a test-in-progress for issue 506 057814ae24 Add new customization variables `use-package-hook-name-suf... d5feff862a Split key binding functionality out into its own file d771e8d719 Please the byte-compiler 9245d08ebc Require cl for the use-package tests e36d208c69 Expand use-package-core as a macro, to avoid load time dep... 01c3d75606 :ensure can be a list; correct handling of multiple :ensur... 101dc9793b Ensure that :commands always declare-function at compile time fe85f246b0 Add a new :catch keyword, and move :preface before such ha... 8489206db4 Fix duplication in an error message 4042b87c72 Add expand-maximally macro to up-tests.el 026433a8a0 Revert "Reduce some code duplication" fb9d159632 Move :preface handling within the code 4efd355108 Add two new tests 1e560c5140 Reduce some code duplication ac906479a7 Normalize some whitespace and ordering in new code 0239ee227a Move :init back to happening after all autoloads have occu... 5d973a0188 Move :init back to happening after all autoloads have occu... 5d9c854a6c Add `use-package-chords` and `use-package-ensure-system-pa... 05dfea96e5 Change order of :defines and :functions within `use-packag... 20ea11b71a Add further notes to NEWS.md, in light of recent breakages 0be575766c Add new customization variable `use-package-deferring-keyw... 6d51e52342 Minor comment change 49752db41b up-ensure's customization variables are now in their own g... f4f3e01044 Remove code from up-core.el that is now in up-diminish.el bd2589e4be Add notes to NEWS.md 8bf5de28c3 Correction to a macro expansion 62f866caf7 Delete an unneeded blank line a1bdd958d3 Reduce some code duplication 28084551ac Normalize the code emitted by :mode, :interpreter, :magic,... 36cf799853 Add 'errors as another option to `use-package-verbose' f08f8a7ba9 Only emit the debugging context text once 35b975563c Correction to error detection at both :init and :config times 8428dafcfa Report errors during deferred :config as intelligent warni... 8dd0f274d0 Drop some unnecessary detail from a warning message f356c838c1 Minor simplification 99200a1642 Fix a byte-compiler warning in up-ensure.el 7c95d0a0e0 Move optional jumping functionality to its own module fff47a1331 Break out ensure/diminish/delight into their own support f... cdbb2cbe97 Move the use-package-keywords defcustom to the top of the ... 22fb8f8c4b Disable a test that is not working on Travis 0c148eb777 Move functions around for better logical grouping 3625b3f712 More variable renaming needed in the tests 149c4878fc Change most use-package-- prefixes to just use-package- d5c1fdf4e8 Remove a local variable binding 223c321a1d Always catch errors during configuration e5aa510d48 Separate out all tests, the better to identify which one f... 4c1b82aed5 Define macroexpand-1 for older Emacsen 9ab797cccd A great deal of internal reorganization and simplification a9429350d5 Fix `use-package-ensure-function' docstring typo dee6b36286 If use-package-verbose is t, show loading times when :afte... af3b34b022 Remove the :defer-install keyword 09be976c18 :demand should not override an explicit use of :after 9e8e9aa4ee Remove some debug code that crept in cb846d188a Add tests for the last two keywords cd4790b3df Add many more tests f5b034154f Always wrap the expanded body from use-package in (progn) 21b9b6551d Comment out :no-require test for now 6954c3f582 Don't factor out a volatile variable 7f2eec9e65 Add many new tests 88f8c1bb8f Generate :defines and :functions correctly b5b432d0fe Correct the ordering of :preface, :load-path, :defines and... 07ab280741 Whitespace fix f674a75b61 Move :hook before :defer 2c618e17c6 Don't macroexpand bind-keys, leave that to the evaluator 5f1e8b6b72 Always use `load' when loading for the sake of compilation 669e8527fb Sort keywords at the appropriate time af8b961716 Change the :config default, if none has been set in vars 1a09f8fef2 :no-require t should never require 0791e3fefe Code reformatting dfd3194d80 Allow match-expansion to take multiple cases 7a562f10cb Add test for use-package-test-normalize/:ensure 9465b915a8 Add the missing plist-delete 98ee89a752 Remove an unneeded defvar 0be868d39b A final fix to :ensure + :load-path ca94036dce Add a test case for :ensure, following up from 1fc543a212 Don't check for an :ensure that use-package-always-ensure ... 2ff8af6495 Add a use-package-version variable c3b9cc2403 Add two new tests 3ea2d34219 Add stubs for future tests of all keywords 3847ec28ca Allow :ensure to take a nil value again 3cb64648fc Only add :ensure nil on :load-path if use-package-always-e... 35f46f7b42 Restructure some code 5e1a656e06 Using :load-path without also using :ensure now implies :e... fab33fef3a Correction to use-package--recognize-function 5f2b0cbe8f Allow keys to be bound to nil 1167e7d063 Fix a missing `and' 6a62122e9c Use backquote rather than quote 0887e1f9d0 Correct use-package-normalize-mode d8c1f02bf4 Whitespace fix 8051c9f5cd Update version and copyright bff472ea80 Allow :bind ("C-c C-c" . (lambda () (ding))) and #'(lambda... f256943f9b Reorder some items in NEWS.md 7499c8812a Add NEWS.md file c0a884dfa2 Merge pull request from basil-conto/version 3db39c0573 Require Emacs version >= 24.3 2aea700500 Merge pull request from basil-conto/520 9870843e1c Merge branch 'master' into 520 9ea305beb6 Add a missing (require 'seq) 4303a2faf6 Require cl-lib and do not use seq functions b7041c0f29 When use-package-inject-hooks is non-nil, always fire init... 2825987619 Print map keys in describe-personal-keybindings 606284e374 Repeating a bind no longer causes duplicates in personal-k... a392f6da55 When byte-compiling, correctly output declare-function dir... 2c32857d57 Make diminish a soft dependency, as delight already was 7531c374bf Allow :diminish to take no argument, once again c811637b30 Fix for single :custom (foo bar) 2ebf076733 Allow :custom (foo1 bar1) (foo2 bar2) etc 4ad4a59685 Add support for `:hook` 700c92c5de Append to *use-package* when debugging, don't clear it 6f9d4342ca Make unrecognized keywords a warning 9b523d7c4e Upgrade license to GPL 3 18b9bf18ad Don't allow :commands, :bind, etc., to be given an empty list 4ddf42185a Explicit :defer t should override use-package-always-demand 5ac5f8bc63 Merge pull request from drrlvn/patch-1 c72d8567d2 Corrections to the normalization of :custom 903ff82219 Merge pull request from joewreschnig/implicit-diminish eda2db4f18 Merge pull request from waymondo/master 57ec21a013 allow customized values to be nil 9bf8264523 Merge pull request from canatella/add-customization-keywords d8bbc3a95d Add support for face customization fcf219701b Add support for variable customization 3c763f3169 Merge pull request from carldotac/master 5396491aec Fix typos in docstring 426a319e1b Merge pull request from emacsjanitors/demote-manually 85643eaf18 Cosmetic changes to use-package-ensure-elpa 68c9ee4bff Don't use with-demoted-errors in use-package-ensure-elpa 3f58555ed8 Merge pull request from raxod502/feat/fix-install-deferred c3455b2a67 Remove duplicate documentation of :mode c845776677 Merge pull request from joewreschnig/481-delight-docs d0dcd95d80 Document :delight in the doc string and README ca83649a32 Allow `:diminish` with no arguments 463e38b188 Merge pull request from joewreschnig/477-delight-wrappers 7eec86f5cd Allow :major as the third argument in :delight calls 4b8b850cf0 Allow multiple :delight arguments, or omitting the mode. () 6e6b533aaf Fix bug in use-package-install-deferred-package 99e4045122 Merge pull request from joewreschnig/magic-469 ac4a3a4aa8 Add `:magic` and `:magic-fallback` keywords (issue) ec088b747a Protect against errors during package install c38c33e6fa Merge pull request from raxod502/feat/failed-autoload-msg 3823a9059e Fix quoting error in failed autoload message 0a12111d2f Merge pull request from raxod502/normalize-nil a9ffffcee5 Make use-package-normalize-value handle nil better 2db2b56b17 Merge pull request from raxod502/fix-bind-key-filter e5e335424c Add comment explaining keyword-argument patch d5d320e607 Don't mutilate keyword arguments in :bind 9f90129b95 Merge pull request from raxod502/fix-after 0f547bc807 Merge pull request from raxod502/always-defer-install bca84ee71a Add use-package-always-defer-install 9ad6f2ef1a Fix :after keyword bd2afa53c7 Merge pull request from raxod502/defer-install 249de4b44d Merge remote-tracking branch 'origin/master' into defer-in... b2e674de0a Update docstring, installation prompt message ecc5fddda4 Various improvements for deferred installation 57e38152e1 Get :defer-install completely working, in theory 855a2afbe3 Improve deferred installation mechanism 89a8f94672 Merge branch 'generalized-ensure' into defer-install a233f01ff6 Update docstring for use-package-ensure-function f6224b2956 First cut at :defer-install keyword 4e6115214b Extend capabilities of use-package-ensure-function 45442561d3 Revert "Return `t' after calling `eval-after-load'" 0517689cf3 Support multiple symbols passed to :after f1fa65d773 :mode and :interpreter can now accept (rx ...) forms 87a8ff6d69 Return `t' after calling `eval-after-load' 61d6a8e449 Add autoload cookie for use-package-autoload-keymap a4c3244f30 Merge remote-tracking branch 'origin/pr/349' 0905a7b1c7 Merge pull request from justbur/find-form c287aa3085 Merge pull request from justbur/imenu3 f95d487d03 Merge pull request from raxod502/fix-use-package-defaults 482c8e5728 Fix use-package-defaults 8fa6e8823b Unrevert "Add use-package-defaults" 013425edeb Revert "Add use-package-defaults" a1550a7746 Merge pull request from raxod502/use-package-defaults 3dec23c086 Add use-package-defaults c637f2be43 Merge pull request from raxod502/use-package-ensure-function e853355714 Add use-package-ensure-function ad8094c22d Add new customization option `use-package-always-demand` dbf46d97be Merge pull request from basil-conto/preface 6c35742992 Merge pull request from tarsius/outline ba3064ed80 Merge pull request from tarsius/bind-later 75e0cd93c5 Delay decision whether to use eval-after-load until run-time 134ecb3c88 Support outline-minor-mode aad07daa8d Increase :preface priority 42b7a774cf Merge pull request from phst/bug398 baa9e25a6b Declare package-read-all-archive-contents c15c616eb1 Remove tests, which don’t work 9688d2f64b Don't allow implicit package name arg for binders 65c7b42a14 Don't allow nil as a mode function fc57b34299 Refactor pair normalizers; add tests for them 5ed9a6b5a5 Remove obsolete mplist tests fc7fc42f13 Bump version to 2.3 bcfb149517 Merge pull request from appleby/master ef0cbfdc73 Ensure package-pinned-packages is bound before referencing it 4629e86240 Remove the use of a tab 72452b5548 Merge pull request from ketbra/master 5053f75e00 Make pin and ensure compatible 811c99da52 Merge pull request from npostavs/state-noconst 79c38c5184 Fix declare-function call: FILE must be a string 71057bc20f use-package-as-string: use noerror parameter be7a0e4649 Don't pass a constant as the state 758739e6db Version 2.2 1f03bec96b Merge pull request from justbur/bump-init 59d34cf9ce Move :init forms before :after and :demand c13ca927c2 Add function use-package-jump-to-package-form 75bdb87833 Improve imenu support ff0a5e281d Merge pull request from justbur/imenu2 da08a04652 Fix imenu support for older versions 1d6b3174f5 Merge pull request from justbur/imenu 2b5668df20 Merge pull request from robario/patch-1 d34fb2bdc9 Add imenu support for use-package forms 858a7f9b7c Fix to ignore load error caused via :after 153b542421 Merge pull request from xuchunyang/fix-package-install 3aa6aecb7f Mark package as selected with package-install af65fbea63 :map no longer accepts lists; only eval-after-load if nece... a1c4e6d0ab Normalize some error text f150691c78 Only printing debug messages if use-package-verbose is `de... 8e128b29f5 Merge pull request from ljos/master 6ca19531bb Repair :map handling in bind-key.el b0b5cfbfb2 Quote variable in `bind-keys*' 6a90a9f16d Add configuration variable `use-package-check-before-init' ce51ea2055 Use `add-to-list' defensively instead of `push' 6da4e0ce9d Add variable `use-package-always-defer' eeba14ef07 Restore :bind-keymap, it does something special still 828563a756 Remove :bind-keymaps, and only apply :map bindings after load 856e8ee245 Support multiples uses of :map with :bind 23a61c8f6b Add some variable settings to use-package-tests.el, thanks... 4593f178e3 Merge pull request from alezost/keymap-doc-fix 947345028e Add another `declare' c65a334276 Handle :unless correctly 543935482f Add a comment about a recent change 416096bfdc Merge pull request from waymondo/master 57af7dd571 Merge pull request from dudebout/patch-1 ee8ac83641 Add an autoload cookie for `use-package' 32748d0657 Upper casing Cs corresponding to Ctrl 2b967a3c18 Merge pull request from thierryvolpiatto/fix_package_install c5e98d87da Ensure package-install support a second argument 5cbfd926c5 When :ensure is used install package as a selected package 9e2dcf8655 Merge pull request from kovrik/fix-pin-performance cc4333a1be Merge pull request from phillord/fix/always-pin-typo ba4aeb600d Fix errant variable name 3f48ff4648 Merge pull request from phillord/feature/always-pin f4a01f3e00 Add new option `-always-pin' c42e3f5669 Change condition that checks if package has been initialized 19474a1711 Do not package-initialize on each :pin 38c170e17b Merge pull request from kovrik/issue-299 3ce3b3a98c Add a missing comma b4ec5abad2 Add a PREDICATE option to bind-key, and :filter to `bind-k... cd867dfe2f allow string values in cons for :bind keywords 95038f96f1 Guard against a case where :load-paths is nil d1c78a646c Move :pin out of macro expansion phase fixes 308e4e3f2c Move :pin out of macro expansion phase ed2e85e4a7 Use cl-mapcan rather than apply 'nconc; thanks wasamasa 189c8b5422 Merge pull request from kovrik/byte-compile-ensure-fix d9f37b4f0c Install packages when byte-compiling (fix by @npostavs) b1f442c15b Apply a fix from npostavs relating to 734c5e7119 Merge pull request from kovrik/master 96add4d4c0 Merge pull request from phillord/feature/after 564f9bb74b Support for after keyword ac47f783da Move :ensure option from macro expansion phase to runtime ... ff8bdfcdca Bump version to 2.1 5dffc8c7cf Merge pull request from waymondo/extend-bind-handler 6298e7e477 pass in symbol of bind macro, for more extensible re-use o... 3e2747f174 Revert "Merge pull request from edvorg/master" 9c1156dbf8 error handling for use-package 2276ed7607 Merge pull request from matklad/master d514592746 fix quotation error fa36aa682c Merge pull request from npostavs/string-packages 3cdc6c39bf Re-add support for string package names 282241cf7d Merge pull request from nickalcock/master 1cbcd66ebe Support :bind (:map '(...)) 269b1080ae Merge pull request from thomasf/master d81390f6de Handle the case when keymap has a broken documentation d3f47a7401 Merge pull request from killdash9/keymap 4502a5ecb1 Merge pull request from syl20bnr/fix_hook_injection 90e3f48111 Fix calls to run-hooks for :init and :config injected hooks 6f0586ef52 Refresh package.el archives if package is missing a53b5062c4 bind-keymap fixes f1a00054b1 Keymap bindings must be interactive c850481d06 Failed to require a package is just a message d1e91745b3 Minor fix to :diminish c3a4b03b5f Fix a bug in the :delight support 800669d9da Add :delight support, thanks to darkfeline on GitHub 80aad34a39 Add new customization use-package-always-ensure 348bc57141 unbind-key now removes key from personal-keybindings 47586c714e Fix file headers 53bb14cfb7 Add autoload stanzas to bind-key d70d70843a Correction to an eval-after-load expansion 8c00f108bf Change use-package to use bind-keys and bind-keys* 012c37d722 Change bind-key* behavior to mimic bind-keys* 029e46a874 Whitespace cleanups eb6b81dfec Allow :map in bind-keys to accept multiple maps 2abf565af2 :pin should return `t' e7f3f97a71 Modular support appears to be working f1ab3291f6 Began work on modular handling of keywords 94ad68330d Rename use-package-with-elapsed-timer at an internal name b30b279a99 Remove code I did not intend to commit f45c4f0edd Merge pull request from npostavs/macroexp-progn c2f5b2479d Fix some docstrings 3467e4eaa6 use-package-progn: replace with macroexp-progn 23ec1ca719 Merge pull request from npostavs/name-keymap f5f4102ca1 get-binding-description: return keymap symbol 1b6605652c Use push instead of add-to-list 38f907cc5d Remove a hack that is not needed anymore 2778e85a39 macroexpand nested uses of use-package in :init and :config 19ab94cf39 Wrap the :preface in an eval-and-compile block 8769309fbf Remove a use of macroexpand 658d103b70 Make a warning more specific 5787ff074c More work to silence the byte-compiler 46435d7b84 Other minor improvements for byte-compiling d2679595fa Several minor improvements and fixes eda8246fc6 Change some code for consistency's sake c819beebf0 Merge pull request from killdash9/keymap 8d7a0c2185 minor fixes to get bind-keymap working in 2.0 771f2edc83 Always return t on a successful init-time load db69a3f81c Add to the load-path before the :preface 9e35dd95d9 More fixes related to byte-compilation 34bc31e1d4 A few changes for byte-compilation 1fe2c1c056 :defer now accepts an optional number of seconds 302c008b45 Permit minimal expansion of macro bodies, and other fixes 21a091f17a Collapse some whitespace 05c02aee86 Allow vectors to be passed to :bind again 55d6bb00ca Add code to workaround an inefficiency with eval-after-load 4029030eb5 Output Compiling message only if verbose is enabled b75c1cb47e Allow :pin to accept a symbol 5c85433fac Relax a path normalization check a203028871 Correct an erroneous symbol reference a66d1952e3 Update docstring for :disabled 1c5f9247aa Merge pull request from npostavs/eval-after-name 98b642b794 Undo an erroneous change 199399e552 Add -hook to the injected hooks 03ea5d6dbf Restore an earlier fix to 9385ab417a BREAKING CHANGE: Remove :idle and :idle-priority 1f20acfd57 use--package: eval-after-load name 81f5e48d32 Support optional injection of hooks, for Spacemacs f637380fed Add :preface, occurring before everything except :disabled b4a00d2eb5 Some minor code reformatting 71f894fe78 Fix to :ensure normalization a6edb08122 Merge pull request from thomasf/master 9748de389c Merge pull request from npostavs/warning e68d00d525 Fix :ensure value interpretation 27cba067ee use-package-expand: use display-warning 4ae584f3ff Begin refactoring for 2.0; NOTE: BREAKING CHANGES 0f76d766d9 Many stylistics cleanups and simplifications a4a696572d Revert "Don't add autoload for existing commands" 30da0769bf Stylistic changes f8bf1b0986 Minor style edits f334f230eb Minor changes aa6e3f47c7 Show more informative errors when they occur 24ace89e5a Merge pull request from tarsius/master 719115cf47 Allow using expanded macro without loading feature 89a957efa9 Merge pull request from killdash9/keymap b8f0799ce8 Passing t into keymap function 60029cb0ab Merge pull request from killdash9/keymap 7252e29ec4 Merge pull request from thiagowfx/patch-1 7db9b920df fix small typo (key > keymap) 1ae2236854 :bind-keymap - bind a key prefix to an autoloaded package ... 647950fd16 Merge pull request from vermiculus/master 5a5aeca797 Do not quote lambda expressions f8db1f1740 Merge pull request from YoungFrog/fixautoloads 99642725c1 Merge pull request from peterhoeg/master b3bf1b2587 Check if package-archives are valid when pinning a2b23f8326 Don't add autoload for existing commands 435d4b4078 pure cleanup 18f04bfb99 Merge pull request from peterhoeg/master fe7fe61528 support for pinning package to archive 6570447a05 Merge pull request from Silex/master 0bfa356148 Merge pull request from waymondo/master e8ce1b20ca add :bind* keyword for `bind-key*` f07ecde5a1 Fix "compiling" typo 4c927efbd5 Merge pull request from thomasf/master 351c102010 Display which package that has compile errors 4cf50ffbca Merge pull request from tarsius/master 31bb0cde56 assume the declare-function macro exists 91953b08e0 Merge pull request from BernardHurley/master 471869269a bind-keys macro changed to allow prefix map to have a menu... 3cbf510468 Merge pull request from npostavs/desc-vector b3e96443ad bind-key: cleanup de9f6814e7 bind-key: no vector keys in personal-keybindings 91b439c8e7 personal-keybindings: add docstring 0d0e8db731 Merge pull request from alezost/bind-keys c4ebcaa953 Add bind-keys* macro 2d67e1dca1 Merge pull request from thomasf/master 1c82b2377f Don't abort compiling if package loading fails a4939e7ef3 Revert "Merge pull request from alexko/master" 8c04377608 Merge pull request from alexko/master a9ba368fa7 Merge pull request from YoungFrog/fix-mult-mode 6d02a320f6 if package can't be located, treat it the same way as disa... 4e80d29daf Eval backquote earlier and support non-`progn' lists d63972eb29 Merge pull request from YoungFrog/keynameeval 9ca3690b59 * bind-key.el (bind-key): don't eval key-name at macro exp... 978094589e Merge pull request from npostavs/bind-vectors 01196c81ac bind-keys: bind directly to prefix-map 869ff53ab9 bind-keys: ,@(when map (list map)) => map 053a1514a1 fix typo efe2419a22 Merge pull request from YoungFrog/idle-interval 0ab0d77691 Add new option use-package-idle-interval db9cba9a31 Merge pull request from ffevotte/idle-priority 6b30c15823 :idle-priority keyword to change the running order of idle... c7ff480095 Merge pull request from tarsius/master f32d24350c use-package-font-lock-keywords: add use-package-with-elaps... 2d7ecd867a use-package-with-elapsed-timer: add declare indent rule ea3a475d0b use-package-with-elapsed-timer: respect option at runtime 11195fa213 Merge pull request from npostavs/bind-vector f0776c2aeb let bind-key accept vectors, add docstring 0f7d54d1db Merge pull request from Fuco1/variable-col-width e23bce4c2f Merge pull request from Fuco1/special-form-desc 38d4d2e2da Add variable column width f90d65e149 Add better descriptions for lambdas, closures, keymaps aec1268960 Merge pull request from Fuco1/bind-keys 7d0779114e Add `bind-keys` macro dd937c4e36 Move tests to separate file 2676ff5d95 Allow multiple forms after keywords 58ca076647 stop describe-personal-keybindings adding trailing space 6ca942d780 Merge pull request from aspiers/best-practices 21cabfd334 fix bind-key URL (fixes) 8f7e878caf add 'use-package-' prefix to 'with-elapsed-timer' 283653ff4b Merge pull request from aspiers/hyperlink-all-bindings ebe59c7da1 Merge pull request from aspiers/docs 2dbee4cd75 fix DRY violation by only having documentation in one place 984850be80 hyperlink functions in Comments column 25ea8ea840 Merge pull request from aspiers/short-mode 75206228dd allow :mode and :interpreter to accept a string 7de292c0e9 Merge pull request from tarsius/defun d588d0b382 use-package: use defun as lisp-indent-function c3704ac36e Add a :demand directive, to override deferred loading () 9d395a4019 fboundp is a function, not a variable d4bf41eb82 Merge pull request from dabrahams/patch-1 f3e9e871a6 Backward compatibility with emacs-22.1 90ca8adc41 Default use-package-verbose to nil ee0060c3a7 Merge pull request from Silex/master c7560f7be7 Remove el-get support f3ed771481 Merge pull request from aethanyc/add-missing-keyword 36cf13ef47 Add :pre-load to use-package-keywords c3cbe3a69a Merge pull request from PhilHudson/master a116fc2136 Properly enable runtime dependency for :idle stanza (issue) e8b5ea3b70 Merge pull request from npostavs/comma 94072fba77 remove extra comma (added by 026c46c) e367788005 Merge pull request from npostavs/cleanup 026c46c057 let with-elapsed-timer return last form 3d871c7994 make `with-elapsed-timer' hygienic 61fd933807 with-elapsed-timer: only check verbosity once 9921a76e86 remove after-init-hook for override-global-mode 29abf59bad macroexpand not needed 119a30f2ba cl not needed since flet was removed in 82903da 901272a8c7 Merge pull request from phillord/first-keyword d6a5c43915 Merge pull request from npostavs/quasiquote 8c1c572857 use plist-get-value for all non-sexp args dd20db220d plist-get-value treats arg as backquoted 9c9329f522 Merge pull request from dudebout/fixes- 818c78f466 Removes `plist-get-sexp` ff03bef1d1 Merge pull request from dudebout/variable-and-function-sup... fd8af80f08 Enables using variables and functions as arguments 6fdeb0c044 Merge pull request from npostavs/eval-after-name c6d79d2cb4 pass name (not name-string) to eval-after-load 6efc084cdf Merge pull request from aethanyc/fix-highlight bbf2b5034b Fix highlight use-package for Emacs snapshot 749295c052 Merge pull request from npostavs/hilite-redux 71150a79c5 Merge pull request from aethanyc/improve-output-buffer 8de5c29ed5 Improve (describe-personal-keybindings) output 57f80d4ff1 highlight use-package before typing package name a56244378f Merge pull request from npostavs/master 48975f791b also check `byte-compile-current-file' for compile time lo... aa357bc96a Changed :first to :pre-load 3d0b14eac2 Merge pull request from npostavs/master a76d16730d use lambda around deferred :config forms to compile them, ... ac0c9633bc use `eval-when-compile' for loading package at compile tim... e7a343828a Add a ":first" keyword for those occasions that it's neces... e481d97891 Merge pull request from npostavs/master 2a1e7e418a refine use-package highlighting regexp 3a4556a906 Merge pull request from purcell/patch-2 a5859a7c8d Fix initial line to satisfy package.el f98b9d08fe Validate keywords. Error if any keyword is unrecognized ed2b339783 Merge pull request from phillord/ensure-doc 01cfa0358f Added documentation to use-package macro 7161c09b30 Documentation added for :ensure keyword e38cfff8b6 Merge pull request from milkypostman/master 19c65ea3ab package header should, hold, sold be the full filename + ext 2da6318930 Merge pull request from tarsius/font-lock 9741bdb189 Merge pull request from tarsius/master 5b696d1918 fontify use-package form d2460b9276 add dots; cleanup whitespace a5e4a6d938 quiet byte-compiler; ensure package.el is loaded 82903da9d8 don't use obsolete flet 17a1a4659a enforce use of spaces for indentation 5a799db5a1 Merge pull request from purcell/patch-1 b901618607 Add Package-Requires header for ELPA installations ef6b97c29f Merge pull request from npostavs/easy-diminish 0df0e18c4b needed extra layer of nesting for diminish calls 984e0f1044 Merge pull request from npostavs/easy-diminish 094830716d Merge pull request from npostavs/bind-override 2abe5f9480 let :diminish "string" guess correct mode symbol 09b9ef3ae3 let bind-key* override minor modes with emulation-mode-map... 26bfd9ce2f Merge pull request from PhilHudson/master 34d3f115dd Runtime client code independence redux 1758c5faea Corrected a typo d718c0cefa Merge pull request from phillord/master 52a48a77c3 Merge branch 'master' of https://github.com/jwiegley/use-p... 35685f120b idle initiation of packages 49d25ce022 Merge pull request from phillord/master aa8d5fab19 Added minimum load time display option 447004740c Merge pull request from bdd/master c680b57ebf Cleanup trailing whitespace 1a65b11731 Merge pull request from PhilHudson/macroexpand 593f18aff5 Macroexpand quoted eval-after-load block early c4cf68f6e4 Merge pull request from phillord/master eaf9677409 Support packages where autoload and elpa name are different 445d0245fc Merge pull request from phillord/master 8d72a6c1d6 Documentation for the use-package macro b8406ce9f0 Reverting "Documentation for the use-package macro." abc0ebc92d Documentation for the use-package macro 75b30bfd9b Merge pull request from phillord/master c28874e956 ELPA package support 2a63e3f2ef Merge pull request from PhilHudson/master fbead83731 Support diminishing to a replacement string as well as to ... 8b93cee99b Use-package now accepts function as argument fe7997d2b7 Only use user-site-lisp-directory if defined 89a844fd9c Correct return value from with-elapsed-timer 28c6509148 More updates to support el-get ece5f93919 Byte-compilation related fix d9f6c0f370 Added :pre-init 82a8d10a46 Establish autoloads after :init bdf1505f44 Added :mode and :interpreter keywords 0736be8e67 Add a note about how to use :load-path f6d65ce876 If :load-path is absolute, don't expand it 0bde0b4c02 Die typos, die debf2c23f3 Fixed a typo aea35b2370 Minor reformatting 80b010a748 Minor grammatical nit 334f6e085e Integrated support for working with el-get 01c8245b29 Make use-package-verbose customizable 4bd492f606 Have loading timer include time to require bf6c23044b Fixed a typo in bind-key.el 31ea42e15e README and other updates # Conflicts: # etc/NEWS # lisp/external-completion.el --- 6c06379c030908a8106bc0f0290d472f67aa503c diff --cc etc/NEWS.29 index dc758f0bc83,00000000000..99c71f243a5 mode 100644,000000..100644 --- a/etc/NEWS.29 +++ b/etc/NEWS.29 @@@ -1,4483 -1,0 +1,4490 @@@ +GNU Emacs NEWS -- history of user-visible changes. + +Copyright (C) 2021-2022 Free Software Foundation, Inc. +See the end of the file for license conditions. + +Please send Emacs bug reports to 'bug-gnu-emacs@gnu.org'. +If possible, use 'M-x report-emacs-bug'. + +This file is about changes in Emacs version 29. + +See file HISTORY for a list of GNU Emacs versions and release dates. +See files NEWS.28, NEWS.27, ..., NEWS.18, and NEWS.1-17 for changes +in older Emacs versions. + +You can narrow news to a specific version by calling 'view-emacs-news' +with a prefix argument or by typing 'C-u C-h C-n'. + +Temporary note: ++++ indicates that all relevant manuals in doc/ have been updated. +--- means no change in the manuals is needed. +When you add a new item, use the appropriate mark if you are sure it +applies, and please also update docstrings as needed. + + +* Installation Changes in Emacs 29.1 + +--- +** Ahead-of-time native compilation can now be specified via configure. +Use '--with-native-compilation=aot' to specify that all the Lisp files +in the Emacs tree should be natively compiled ahead of time. (This is +slow on most machines.) + ++++ +** Emacs can be built with built-in support for accessing SQLite databases. +This uses the popular sqlite3 library, and can be disabled by using +the '--without-sqlite3' option to the 'configure' script. + ++++ +** Support for the WebP image format. +This support is built by default when the libwebp library is +available, and includes support for animated WebP images. To disable +WebP support, use the '--without-webp' configure flag. Image +specifiers can now use ':type webp'. + ++++ +** Emacs has been ported to the Haiku operating system. +The configuration process should automatically detect and build for +Haiku. There is also an optional window-system port to Haiku, which +can be enabled by configuring Emacs with the option '--with-be-app', +which will require the Haiku Application Kit development headers and a +C++ compiler to be present on your system. If Emacs is not built with +the option '--with-be-app', the resulting Emacs will only run in +text-mode terminals. + +To enable Cairo support, ensure that the Cairo and FreeType +development files are present on your system, and configure Emacs with +'--with-be-cairo'. + +Unlike X, there is no compile-time option to enable or disable +double-buffering; it is always enabled. To disable it, change the +frame parameter 'inhibit-double-buffering' instead. + +--- +** Emacs now installs the ".pdmp" file using a unique fingerprint in the name. +The file is typically installed using a file name akin to +"...dir/libexec/emacs/29.1/x86_64-pc-linux-gnu/emacs-.pdmp". +If a constant file name is required, the file can be renamed to +"emacs.pdmp", and Emacs will find it during startup anyway. + +--- +** Emacs now uses XInput 2 for input events. +If your X server has support and you have the XInput 2 development +headers installed, Emacs will use the X Input Extension for handling +input. If this causes problems, you can configure Emacs with the +option '--without-xinput2' to disable this support. + +'(featurep 'xinput2)' can be used to test for the presence of XInput 2 +support from Lisp programs. + +--- +** Emacs no longer reduces the size of the Japanese dictionary. +Building Emacs includes generation of a Japanese dictionary, which is +used by Japanese input methods. Previously, the build included a step +of reducing the size of this dictionary's vocabulary. This vocabulary +reduction is now optional, by default off. If you need the Emacs +build to include the vocabulary reduction, configure Emacs with the +option '--with-small-ja-dic'. In an Emacs source tree already +configured without that option, you can force the vocabulary reduction +by saying + + make -C leim generate-ja-dic JA_DIC_NO_REDUCTION_OPTION='' + +after deleting "lisp/leim/ja-dic/ja-dic.el". + ++++ +** Emacs now supports being built with pure GTK. +To use this option, make sure the GTK 3 (version 3.22.23 or later) and +Cairo development files are installed, and configure Emacs with the +option '--with-pgtk'. Unlike the default X and GTK build, the +resulting Emacs binary will work on any underlying window system +supported by GDK, such as Wayland and Broadway. We do not recommend +that you use this configuration, unless you are running a window +system that's supported by GDK other than X. Running this +configuration on X is known to have problems, such as undesirable +frame positioning and various issues with keyboard input of sequences +such as 'C-;' and 'C-S-u'. + +--- +** The implementation of overlays has changed. +Emacs now uses an implementation of overlays that is much more +efficient than the original one, and should speed up all the +operations that involve overlays, especially when there are lots of +them in a buffer. However, no changes in behavior of overlays should +be visible on the Lisp or user level, with the exception of better +performance and the order of overlays returned by functions that don't +promise any particular order. + +--- +** The docstrings of preloaded files are not in "etc/DOC" any more. +Instead, they're fetched as needed from the corresponding ".elc" file, +as was already the case for all the non-preloaded files. + + +* Startup Changes in Emacs 29.1 + ++++ +** '--batch' and '--script' now adjust the garbage collection levels. +These switches now set 'gc-cons-percentage' to 1.0 (up from the +default of 0.1). This means that batch processes will typically use +more memory than before, but use less time doing garbage collection. +Batch jobs that are supposed to run for a long time should adjust the +limit back down again. + ++++ +** Emacs can now be used more easily in an executable script. +If you start an executable script with + + #!/usr/bin/emacs -x + +Emacs will start without reading any init files (like with '--quick'), +and then execute the rest of the script file as Emacs Lisp. When it +reaches the end of the script, Emacs will exit with an exit code from +the value of the final form. + ++++ +** Emacs now supports setting 'user-emacs-directory' via '--init-directory'. + ++++ +** Emacs now has a '--fingerprint' option. +This will output a string identifying the current Emacs build. + ++++ +** New hook 'after-pdump-load-hook'. +This is run at the end of the Emacs startup process, and is meant to +be used to reinitialize structures that would normally be done at load +time. + +** Native Compilation + ++++ +*** New variable 'inhibit-automatic-native-compilation'. +If set, Emacs will inhibit native compilation (and won't write +anything to the eln cache automatically). The variable is initialized +from the 'EMACS_INHIBIT_AUTOMATIC_NATIVE_COMPILATION' environment +variable on Emacs startup. + +--- +*** New command 'native-compile-prune-cache'. +This command deletes older eln cache entries (but not the ones for +the current Emacs version). + +--- +*** New function 'startup-redirect-eln-cache'. +This function can be called in your init files to change the +user-specific directory where Emacs stores the "*.eln" files produced +by native compilation of Lisp packages Emacs loads. The default +eln cache directory is unchanged: it is the "eln-cache" subdirectory +of 'user-emacs-directory'. + + +* Incompatible changes in Emacs 29.1 + ++++ +** The image commands have changed key bindings. +In previous Emacs versions, images have had the '+', '-' and 'r' keys +bound when point is over an image. In Emacs 29.1, additional commands +were added, and this made it more likely that users would trigger the +image commands by mistake. To avoid this, all image commands have +moved to the 'i' keymap, so '+' is now 'i +', '-' is now 'i -', and +'r' is now 'i r'. In addition, these commands are now repeating, so +you can rotate an image twice by saying 'i r r', for instance. + ++++ +** Emacs now picks the correct coding system for X input methods. +Previously, Emacs would use the locale coding system for input +methods, which could in some circumstances be incorrect, especially +when the input method chose to fall back to some other coding system. + +Now, Emacs automatically detects the coding system used by input +methods, and uses that to decode input in preference to the value of +'locale-coding-system'. This unfortunately means that users who have +changed the coding system used to decode X keyboard input must adjust +their customizations to 'locale-coding-system' to the variable +'x-input-coding-system' instead. + ++++ +** Bookmarks no longer include context for encrypted files. +If you're visiting an encrypted file, setting a bookmark no longer +includes excerpts from that buffer in the bookmarks file. This is +implemented by the new hook 'bookmark-inhibit-context-functions', +where packages can register a function which returns non-nil for file +names to be excluded from adding such excerpts. + +--- +** 'show-paren-mode' is now disabled in 'special-mode' buffers. +In Emacs versions previous to Emacs 28.1, 'show-paren-mode' defaulted +off. In Emacs 28.1, the mode was switched on in all buffers. In +Emacs 29.1, this was changed to be switched on in all editing-related +buffers, but not in buffers that inherit from 'special-mode'. To get +back to how things worked in Emacs 28.1, put the following in your +init file: + + (setopt show-paren-predicate t) + ++++ +** Explicitly-set read-only state is preserved when reverting a buffer. +If you use the 'C-x C-q' command to change the read-only state of the +buffer and then revert it, Emacs would previously use the file +permission bits to determine whether the buffer should be read-only +after reverting the buffer. Emacs now remembers the decision made in +'C-x C-q'. + +--- +** The Gtk selection face is no longer used for the region. +The combination of a Gtk-controlled background and a foreground color +controlled by the internal Emacs machinery led to low-contrast faces +in common default setups. Emacs now uses the same 'region' face on +Gtk and non-Gtk setups. + +** Dired + +--- +*** 'w' ('dired-copy-filename-as-kill') has changed behavior. +If there are several files marked, file names containing space and +quote characters will be quoted "like this". + +--- +*** The 'd' command now more consistently skips dot files. +In previous Emacs versions, commands like 'C-u 10 d' would put the "D" +mark on the next ten files, no matter whether they were dot files +(i.e., "." and "..") or not, while marking the next ten lines with the +mouse (in 'transient-mark-mode') and then hitting 'd' would skip dot +files. These now work equivalently. + ++++ +** Warning about "eager macro-expansion failure" is changed into an error. + +--- +** Previously, the X "reverseVideo" value at startup was heeded for all frames. +This meant that if you had a "reverseVideo" resource on the initial +display, and then opened up a new frame on a display without any +explicit "reverseVideo" setting, it would get heeded there, too. (This +included terminal frames.) In Emacs 29, the "reverseVideo" X resource +is handled like all the other X resources, and set on a per-frame basis. + ++++ +** 'E' in 'query-replace' now edits the replacement with exact case. +Previously, this command did the same as 'e'. + +--- +** '/ a' in "*Packages*" buffer now limits by archive name(s) instead of regexp. + ++++ +** Setting the goal columns now also affects '' and ''. +Previously, 'C-x C-n' only affected 'next-line' and 'previous-line', +but it now also affects 'scroll-up-command' and 'scroll-down-command'. + +--- +** Isearch in "*Help*" and "*info*" now char-folds quote characters by default. +This means that you can say 'C-s `foo' (GRAVE ACCENT) if the buffer +contains "‘foo" (LEFT SINGLE QUOTATION MARK) and the like. These +quotation characters look somewhat similar in some fonts. To switch +this off, disable the new 'isearch-fold-quotes-mode' minor mode. + +--- +** Sorting commands no longer necessarily change modification status. +In earlier Emacs versions, commands like 'M-x sort-lines' would always +change buffer modification status to "modified", whether they changed +something in the buffer or not. This has been changed: The buffer is +marked as modified only if the sorting ended up changing the contents +of the buffer. + +--- +** 'string-lines' handles trailing newlines differently. +It no longer returns an empty final string if the string ends with a +newline. + +--- +** 'TAB' and '' are now bound in 'button-map'. +This means that if point is on a button, 'TAB' will take you to the +next button, even if the mode has bound it to something else. This +also means that 'TAB' on a button in an 'outline-minor-mode' heading +will move point instead of collapsing the outline. + +--- +** 'Info-default-directory-list' is no longer populated at Emacs startup. +If you have code in your init file that removes directories from +'Info-default-directory-list', this will no longer work. + +--- +** 'C-k' no longer deletes files in 'ido-mode'. +To get the previous action back, put something like the following in +your Init file: + + (require 'ido) + (keymap-set ido-file-completion-map "C-k" #'ido-delete-file-at-head) + +--- +** New user option 'term-clear-full-screen-programs'. +By default, term will now work like most terminals when displaying +full-screen programs: When they exit, the output is cleared, leaving +what was displayed in the window before the programs started. Set +this user option to nil to revert back to the old behavior. + +--- +** Support for old EIEIO functions is not autoloaded any more. +You need an explicit '(require 'eieio-compat)' to use 'defmethod' +and 'defgeneric' (which have been made obsolete in Emacs 25.1 with +'cl-defmethod' and 'cl-defgeneric'). +Similarly you might need to '(require 'eieio-compat)' before loading +files that were compiled with an old EIEIO (Emacs<25). + +--- +** 'C-x 8 .' has been moved to 'C-x 8 . .'. +This is to open up the 'C-x 8 .' map to bind further characters there. + +--- +** 'C-x 8 =' moved to 'C-x 8 = ='. +You can now use 'C-x 8 =' to insert several characters with macron; +for example, 'C-x 8 = a' will insert U+0101 LATIN SMALL LETTER A WITH +MACRON. To insert a lone macron, type 'C-x 8 = =' instead of the +previous 'C-x ='. + +** Eshell + +*** Eshell's PATH is now derived from 'exec-path'. +For consistency with remote connections, Eshell now uses 'exec-path' +to determine the execution path on the local system, instead of using +the PATH environment variable directly. + +--- +*** 'source' and '.' no longer accept the '--help' option. +This is for compatibility with the shell versions of these commands, +which don't handle options like '--help' in any special way. + ++++ +*** String delimiters in argument predicates/modifiers are more restricted. +Previously, some argument predicates/modifiers allowed arbitrary +characters as string delimiters. To provide more unified behavior +across all predicates/modifiers, the list of allowed delimiters has +been restricted to "...", '...', /.../, |...|, (...), [...], <...>, +and {...}. See the "(eshell) Argument Predication and Modification" +node in the Eshell manual for more details. + ++++ +*** Eshell pipelines now only pipe stdout by default. +To pipe both stdout and stderr, use the '|&' operator instead of '|'. + +--- +** The 'delete-forward-char' command now deletes by grapheme clusters. +This command is by default bound to the function key +(a.k.a. ). When invoked without a prefix argument or with +a positive prefix numeric argument, the command will now delete +complete grapheme clusters produced by character composition. For +example, if point is before an Emoji sequence, pressing will +delete the entire sequence, not just a single character at its +beginning. + ++++ +** 'load-history' does not treat autoloads specially any more. +An autoload definition appears just as a '(defun . NAME)' and the +'(t . NAME)' entries are not generated any more. + +--- +** The Tamil input methods no longer insert Tamil digits. +The input methods 'tamil-itrans' and 'tamil-inscript' no longer insert +the Tamil digits, as those digit characters are not used nowadays by +speakers of the Tamil language. To get back the previous behavior, +use the new 'tamil-itrans-digits' and 'tamil-inscript-digits' input +methods instead. + ++++ +** New variable 'current-time-list' governing default timestamp form. +Functions like 'current-time' now yield '(TICKS . HZ)' timestamps if +this new variable is nil. The variable defaults to t, which means +these functions default to timestamps of the forms '(HI LO US PS)', +'(HI LO US)' or '(HI LO)', which are less regular and less efficient. +This is part of a long-planned change first documented in Emacs 27. +Developers are encouraged to test timestamp-related code with this +variable set to nil, as it will default to nil in a future Emacs +version and will be removed some time after that. + ++++ +** Functions that recreate the "*scratch*" buffer now also initialize it. +When functions like 'other-buffer' and 'server-execute' recreate +"*scratch*", they now also insert 'initial-scratch-message' and set +the major mode according to 'initial-major-mode', like at Emacs +startup. Previously, these functions ignored +'initial-scratch-message' and left "*scratch*" in 'fundamental-mode'. + +--- +** Naming of Image-Dired thumbnail files has changed. +Names of thumbnail files generated when 'image-dired-thumbnail-storage' +is 'image-dired' now always end in ".jpg". This fixes various issues +on different platforms, but means that thumbnails generated in Emacs 28 +will not be used in Emacs 29, and vice-versa. If disk space is an +issue, consider deleting the 'image-dired-dir' directory after +upgrading (usually "~/.emacs.d/image-dired/"). + +--- +** The 'rlogin' method in the URL library is now obsolete. +Emacs will now display a warning if you request a URL like +"rlogin://foo@example.org". + +--- +** Setting 'url-gateway-method' to 'rlogin' is now obsolete. +Emacs will now display a warning when setting it to that value. +The user options 'url-gateway-rlogin-host', +'url-gateway-rlogin-parameters', and 'url-gateway-rlogin-user-name' +are also obsolete. + +--- +** The user function 'url-irc-function' now takes a SCHEME argument. +The user option 'url-irc-function' is now called with a sixth argument +corresponding to the scheme portion of the target URL. For example, +this would be "ircs" for a URL like "ircs://irc.libera.chat". + +--- +** The linum.el library is now obsolete. +We recommend using either the built-in 'display-line-numbers-mode', or +the 'nlinum' package from GNU ELPA instead. The former has better +performance, but the latter is closer to a drop-in replacement. + +1. To use 'display-line-numbers-mode', add something like this to your + Init file: + + (global-display-line-numbers-mode 1) + ;; Alternatively, to use it only in programming modes: + (add-hook 'prog-mode-hook #'display-line-numbers-mode) + +2. To use 'nlinum', add this to your Init file: + + (package-install 'nlinum) + (global-nlinum-mode 1) + ;; Alternatively, to use it only in programming modes: + (add-hook 'prog-mode-hook #'nlinum-mode) + +3. To continue using the obsolete package 'linum', add this line to + your Init file, in addition to any existing customizations: + + (require 'linum) + +--- +** The thumbs.el library is now obsolete. +We recommend using 'M-x image-dired' instead. + +--- +** The autoarg.el library is now marked obsolete. +This library provides the 'autoarg-mode' and 'autoarg-kp-mode' minor +modes to emulate the behavior of the historical editor Twenex Emacs. +It is believed to no longer be useful. + +--- +** The quickurl.el library is now obsolete. +Use 'abbrev', 'skeleton' or 'tempo' instead. + +--- +** The rlogin.el library, and the 'rsh' command are now obsolete. +Use something like 'M-x shell RET ssh RET' instead. + +--- +** The url-about.el library is now obsolete. + +--- +** The autoload.el library is now obsolete. +It is superseded by the loaddefs-gen.el library. + +--- +** The netrc.el library is now obsolete. +Use the 'auth-source-netrc-parse-all' function in auth-source.el +instead. + +--- +** The url-dired.el library is now obsolete. + +--- +** The fast-lock.el and lazy-lock.el libraries have been removed. +They have been obsolete since Emacs 22.1. + +The variable 'font-lock-support-mode' is occasionally useful for +debugging purposes. It is now a regular variable (instead of a user +option) and can be set to nil to disable Just-in-time Lock mode. + + +* Changes in Emacs 29.1 + ++++ +** New user option 'major-mode-remap-alist' to specify favorite major modes. +This user option lets you remap the default modes (e.g. 'perl-mode' or +'latex-mode') to your favorite ones (e.g. 'cperl-mode' or +'LaTeX-mode') without having to use 'defalias', which can have +undesirable side effects. +This applies to all modes specified via 'auto-mode-alist', file-local +variables, etc. + +--- +** Emacs now supports Unicode Standard version 15.0. + +--- +** New user option 'electric-quote-replace-consecutive'. + +--- +** Emacs is now capable of editing files with very long lines. +The display of long lines has been optimized, and Emacs should no +longer choke when a buffer on display contains long lines. The +variable 'long-line-threshold' controls whether and when these display +optimizations are in effect. + +A companion variable 'large-hscroll-threshold' controls when another +set of display optimizations are in effect, which are aimed +specifically at speeding up display of long lines that are truncated. + +If you still experience slowdowns while editing files with long lines, +this may be due to line truncation, or to one of the enabled minor +modes, or to the current major mode. Try turning off line truncation +with 'C-x x t', or try disabling all known slow minor modes with +'M-x so-long-minor-mode', or try disabling both known slow minor modes +and the major mode with 'M-x so-long-mode', or visit the file with +'M-x find-file-literally' instead of the usual 'C-x C-f'. + +Note that the display optimizations in these cases may cause the +buffer to be occasionally mis-fontified. + +The new function 'long-line-optimizations-p' returns non-nil when +these optimizations are in effect in the current buffer. + ++++ +** New command to change the font size globally. +To increase the font size, type 'C-x C-M-+' or 'C-x C-M-='; to +decrease it, type 'C-x C-M--'; to restore the font size, type 'C-x +C-M-0'. The final key in these commands may be repeated without the +leading 'C-x' and without the modifiers, e.g. 'C-x C-M-+ C-M-+ C-M-+' +and 'C-x C-M-+ + +' increase the font size by three steps. When +'mouse-wheel-mode' is enabled, 'C-M-wheel-up' and 'C-M-wheel-down' also +increase and decrease the font size globally. Additionally, the +user option 'global-text-scale-adjust-resizes-frames' controls whether +the frames are resized when the font size is changed. + +** New config variable 'syntax-wholeline-max' to reduce the cost of long lines. +This variable is used by some operations (mostly syntax-propertization +and font-locking) to treat lines longer than this variable as if they +were made up of various smaller lines. This can help reduce the +slowdowns seen in buffers made of a single long line, but can also +cause misbehavior in the presence of such long lines (tho most of that +misbehavior should usually be limited to mis-highlighting). You can +recover the previous behavior with: + + (setq syntax-wholeline-max most-positive-fixnum) + +--- +** New bindings in 'find-function-setup-keys' for 'find-library'. +When 'find-function-setup-keys' is enabled, 'C-x L' is now bound to +'find-library', 'C-x 4 L' is now bound to 'find-library-other-window' +and 'C-x 5 L' is now bound to 'find-library-other-frame'. + ++++ +** New key binding after 'M-x' or 'M-X': 'M-X'. +Emacs allows different completion predicates to be used with 'M-x' +(i.e., 'execute-extended-command') via the +'read-extended-command-predicate' user option. Emacs also has the +'M-X' (note upper case) command, which only displays commands +especially relevant to the current buffer. Emacs now allows toggling +between these modes while the user is inputting a command by hitting +'M-X' while in the minibuffer. + +--- +** Interactively, 'kill-buffer' will now offer to save the buffer if unsaved. + +--- +** New commands 'duplicate-line' and 'duplicate-dwim'. +'duplicate-line' duplicates the current line the specified number of times. +'duplicate-dwim' duplicates the region if it is active. If not, it +works like 'duplicate-line'. An active rectangular region is +duplicated on its right-hand side. + +--- +** Files with the ".eld" extension are now visited in 'lisp-data-mode'. + ++++ +** 'network-lookup-address-info' can now check numeric IP address validity. +Specifying 'numeric' as the new optional 'hints' argument makes it +check if the passed address is a valid IPv4/IPv6 address (without DNS +traffic). + + (network-lookup-address-info "127.1" 'ipv4 'numeric) + => ([127 0 0 1 0]) + ++++ +** New command 'find-sibling-file'. +This command jumps to a file considered a "sibling file", which is +determined according to the new user option 'find-sibling-rules'. + ++++ +** New user option 'delete-selection-temporary-region'. +When non-nil, 'delete-selection-mode' will only delete the temporary +regions (usually set by mouse-dragging or shift-selection). + ++++ +** New user option 'switch-to-prev-buffer-skip-regexp'. +This should be a regexp or a list of regexps; buffers whose names +match those regexps will be ignored by 'switch-to-prev-buffer' and +'switch-to-next-buffer'. + ++++ +** New command 'rename-visited-file'. +This command renames the file visited by the current buffer by moving +it to a new location, and also makes the buffer visit this new file. + +** Menus + +--- +*** The entries following the buffers in the "Buffers" menu can now be altered. +Change the 'menu-bar-buffers-menu-command-entries' variable to alter +the entries that follow the buffer list. + +--- +** 'delete-process' is now a command. +When called interactively, it will kill the process running in the +current buffer (if any). This can be useful if you have runaway +output in the current buffer (from a process or a network connection), +and want to stop it. + ++++ +** New command 'restart-emacs'. +This is like 'save-buffers-kill-emacs', but instead of just killing +the current Emacs process at the end, it starts a new Emacs process +(using the same command line arguments as the running Emacs process). +'kill-emacs' and 'save-buffers-kill-emacs' have also gained new +optional parameters to restart instead of just killing the current +process. + ++++ +** New user option 'mouse-drag-mode-line-buffer'. +If non-nil, dragging on the buffer name part of the mode-line will +drag the buffer's associated file to other programs. This option is +currently only available on X, Haiku and Nextstep (GNUstep or macOS). + ++++ +** New user option 'mouse-drag-and-drop-region-cross-program'. +If non-nil, this option allows dragging text in the region from Emacs +to another program. + +--- +** New user option 'mouse-drag-and-drop-region-scroll-margin'. +If non-nil, this option allows scrolling a window while dragging text +around without a scroll wheel. + ++++ +*** The value of 'mouse-drag-copy-region' can now be the symbol 'non-empty'. +This prevents mouse drag gestures from putting empty strings onto the +kill ring. + ++++ +** New user options 'dnd-indicate-insertion-point' and 'dnd-scroll-margin'. +These options allow adjusting point and scrolling a window when +dragging items from another program. + ++++ +** The X Direct Save (XDS) protocol is now supported. +This means dropping an image or file link from programs such as +Firefox will no longer create a temporary file in a random directory, +instead asking you where to save the file first. + ++++ +** New user option 'record-all-keys'. +If non-nil, this option will force recording of all input keys, +including those typed in response to passwords prompt (this was the +previous behavior). The default is nil, which inhibits recording of +passwords. + ++++ +** New function 'command-query'. +This function makes its argument command prompt the user for +confirmation before executing. + ++++ +** The 'disabled' property of a command's symbol can now be a list. +The first element of the list should be the symbol 'query', which will +cause the command disabled this way prompt the user with a y/n or a +yes/no question before executing. The new function 'command-query' is +a convenient method of making commands disabled in this way. + +--- +** 'count-words' will now report buffer totals if given a prefix. +Without a prefix, it will only report the word count for the narrowed +part of the buffer. + ++++ +** 'count-words' will now report sentence count when used interactively. + +** New user option 'set-message-functions'. +It allows selecting more functions for 'set-message-function' +in addition to the default function that handles messages +in the active minibuffer. The most useful are 'inhibit-message' +that allows specifying a list of messages to inhibit via +'inhibit-message-regexps', and 'set-multi-message' that +accumulates recent messages and displays them stacked +in the echo area. + +--- +** New user option 'find-library-include-other-files'. +If set to nil, commands like 'find-library' will only include library +files in the completion candidates. The default is t, which preserves +previous behavior, whereby non-library files could also be included. + ++++ +** New command 'sqlite-mode-open-file' for examining an sqlite3 file. +This uses the new 'sqlite-mode' which allows listing the tables in a +DB file, and examining and modifying the columns and the contents of +those tables. + +--- +** 'write-file' will now copy some file mode bits. +If the current buffer is visiting a file that is executable, the +'C-x C-w' command will now make the new file executable, too. + ++++ +** New user option 'process-error-pause-time'. +This determines how long to pause Emacs after a process +filter/sentinel error has been handled. + ++++ +** New faces for font-lock. +These faces are primarily meant for use with tree-sitter. They are: +'font-lock-bracket-face', 'font-lock-delimiter-face', +'font-lock-escape-face', 'font-lock-number-face', +'font-lock-misc-punctuation-face', 'font-lock-operator-face', +'font-lock-property-face', and 'font-lock-punctuation-face'. + ++++ +** New face 'variable-pitch-text'. +This face is like 'variable-pitch' (from which it inherits), but is +slightly larger, which should help with the visual size differences +between the default, non-proportional font and proportional fonts when +mixed. + ++++ +** New face 'mode-line-active'. +This inherits from the 'mode-line' face, but is the face actually used +on the mode lines (along with 'mode-line-inactive'). + ++++ +** New face attribute pseudo-value 'reset'. +This value stands for the value of the corresponding attribute of the +'default' face. It can be used to reset attribute values produced by +inheriting from other faces. + ++++ +** New X resource: "borderThickness". +This controls the thickness of the external borders of the menu bars +and pop-up menus. + ++++ +** New X resource: "inputStyle". +This controls the style of the pre-edit and status areas of X input +methods. + ++++ +** New X resources: "highlightForeground" and "highlightBackground". +Only in the Lucid build, this controls colors used for highlighted +menu item widgets. + ++++ +** On X, Emacs now tries to synchronize window resize with the window manager. +This leads to less flicker and empty areas of a frame being displayed +when a frame is being resized. Unfortunately, it does not work on +some ancient buggy window managers, so if Emacs appears to freeze, but +is still responsive to input, you can turn it off by setting the X +resource "synchronizeResize" to "off". + ++++ +** On X, Emacs can optionally synchronize display with the graphics hardware. +When this is enabled by setting the X resource "synchronizeResize" to +"extended", frame content "tearing" is drastically reduced. This is +only supported on the Motif, Lucid, and no-toolkit builds, and +requires an X compositing manager supporting the extended frame +synchronization protocol (see +https://fishsoup.net/misc/wm-spec-synchronization.html). + +This behavior can be toggled on and off via the frame parameter +'use-frame-synchronization'. + ++++ +** New frame parameter 'alpha-background' and X resource "alphaBackground". +This controls the opacity of the text background when running on a +composited display. + ++++ +** New frame parameter 'shaded'. +With window managers which support this, it controls whether or not a +frame's contents will be hidden, leaving only the title bar on display. + +--- +** New user option 'x-gtk-use-native-input'. +This controls whether or not GTK input methods are used by Emacs, +instead of XIM input methods. + ++++ +** New user option 'use-system-tooltips'. +This controls whether to use the toolkit tooltips, or Emacs's own +native implementation of tooltips as small frames. This option is +only meaningful if Emacs was built with GTK+, Nextstep, or Haiku +support, and defaults to t, which makes Emacs use the toolkit +tooltips. The existing GTK-specific option +'x-gtk-use-system-tooltips' is now an alias of this new option. + ++++ +** Non-native tooltips are now supported on Nextstep. +This means Emacs built with GNUstep or built on macOS is now able to +display different faces and images inside tooltips when the +'use-system-tooltips' user option is nil. + +--- +** New minor mode 'pixel-scroll-precision-mode'. +When enabled, and if your mouse supports it, you can scroll the +display up or down at pixel resolution, according to what your mouse +wheel reports. Unlike 'pixel-scroll-mode', this mode scrolls the +display pixel-by-pixel, as opposed to only animating line-by-line +scrolls. + +** Terminal Emacs + +--- +*** Emacs will now use 24-bit colors on terminals that support "Tc" capability. +This is in addition to previously-supported ways of discovering 24-bit +color support: either via the "RGB" or "setf24" capabilities, or if +the 'COLORTERM' environment variable is set to the value "truecolor". + +*** Select active regions with xterm selection support. +On terminals with xterm setSelection support, the active region may be +saved to the X primary selection, following the +'select-active-regions' variable. This support is enabled when +'tty-select-active-regions' is non-nil. + +--- +*** New command to set up display of unsupported characters. +The new command 'standard-display-by-replacement-char' produces Lisp +code that sets up the 'standard-display-table' to use a replacement +character for display of characters that the text-mode terminal +doesn't support. It is most useful with the Linux console and similar +terminals, where Emacs has a reliable way of determining which +characters have glyphs in the font loaded into the terminal's memory. + +--- +*** New functions to set terminal output buffer size. +The new functions 'tty--set-output-buffer-size' and +'tty--output-buffer-size' allow setting and retrieving the output +buffer size of a terminal device. The default buffer size is and has +always been BUFSIZ, which is defined in your system's stdio.h. When +you set a buffer size with 'tty--set-output-buffer-size', this also +prevents Emacs from explicitly flushing the tty output stream, except +at the end of display update. + +** ERT + ++++ +*** New ERT variables 'ert-batch-print-length' and 'ert-batch-print-level'. +These variables will override 'print-length' and 'print-level' when +printing Lisp values in ERT batch test results. + +--- +*** Redefining an ERT test in batch mode now signals an error. +Executing 'ert-deftest' with the same name as an existing test causes +the previous definition to be discarded, which was probably not +intended when this occurs in batch mode. To remedy the error, rename +tests so that they all have unique names. + ++++ +*** ERT can generate JUnit test reports. +When environment variable 'EMACS_TEST_JUNIT_REPORT' is set, ERT +generates a JUnit test report under this file name. This is useful +for Emacs integration into CI/CD test environments. + +--- +*** Unbound test symbols now signal an 'ert-test-unbound' error. +This affects the 'ert-select-tests' function and its callers. + +** Emoji + ++++ +*** Emacs now has several new methods for inserting Emojis. +The Emoji commands are under the new 'C-x 8 e' prefix. + ++++ +*** New command 'emoji-insert' (bound to 'C-x 8 e e' and 'C-x 8 e i'). +This command guides you through various Emoji categories and +combinations in a graphical menu system. + ++++ +*** New command 'emoji-search' (bound to 'C-x 8 e s'). +This command lets you search for Emojis based on names. + ++++ +*** New command 'emoji-list' (bound to 'C-x 8 e l'). +This command lists all Emojis (categorized by themes) in a special +buffer and lets you choose one of them. + +--- +*** New command 'emoji-recent' (bound to 'C-x 8 e r'). +This command lets you choose among the Emojis you have recently +inserted. + ++++ +*** New command 'emoji-describe' (bound to 'C-x 8 e d'). +This command will tell you the name of the Emoji at point. (This +command also works for non-Emoji characters.) + +--- +*** New commands 'emoji-zoom-increase' and 'emoji-zoom-decrease'. +These are bound to 'C-x 8 e +' and 'C-x 8 e -', respectively. They +can be used on any character, but are mainly useful for emoji. + +--- +*** New input method 'emoji'. +This allows you to enter emoji using short strings, eg ':face_palm:' +or ':scream:'. + +** Help + +--- +*** Variable values displayed by 'C-h v' in "*Help*" are now font-locked. + ++++ +*** New user option 'help-clean-buttons'. +If non-nil, link buttons in "*Help*" will have any surrounding quotes +removed. + +--- +*** 'M-x apropos-variable' output now includes values of variables. + ++++ +*** New docstring syntax to indicate that symbols shouldn't be links. +When displaying docstrings in "*Help*" buffers, strings that are +"`like-this'" are made into links (if they point to a bound +function/variable). This can lead to false positives when talking +about values that are symbols that happen to have the same names as +functions/variables. To inhibit this buttonification, the new +"\\+`like-this'" syntax can be used. + ++++ +*** New user option 'help-window-keep-selected'. +If non-nil, commands to show the info manual and the source will reuse +the same window the "*Help*" buffer is shown in. + +--- +*** Commands like 'C-h f' have changed how they describe menu bindings. +For instance, previously a command might be described as having the +following bindings: + + It is bound to , C-x C-f, . + +This has been changed to: + + It is bound to and C-x C-f. + It can also be invoked from the menu: File → Visit New File... + ++++ +*** The 'C-h .' command now accepts a prefix argument. +'C-u C-h .' would previously inhibit displaying a warning message if +there's no local help at point. This has been changed to call +'button-describe'/'widget-describe' and display button/widget help +instead. + +--- +*** New user option 'help-enable-variable-value-editing'. +If enabled, 'e' on a value in "*Help*" will pop you to a new buffer +where you can edit the value. This is not enabled by default, because +it's easy to make an edit that yields an invalid result. + +--- +*** 'C-h b' uses outlining by default. +Set 'describe-bindings-outline' to nil to get the old behavior. + +--- +*** Jumping to function/variable source now saves mark before moving point. +Jumping to source from "*Help*" buffer moves the point when the source +buffer is already open. Now, the old point is pushed to mark ring. + ++++ +*** New key bindings in "*Help*" buffers: 'n' and 'p'. +These will take you (respectively) to the next and previous "page". + +--- +*** 'describe-char' now also outputs the name of emoji combinations. + ++++ +*** New key binding in "*Help*" buffer: 'I'. +This will take you to the Emacs Lisp manual entry for the item +displayed, if any. + +--- +*** The 'C-h m' ('describe-mode') "*Help*" buffer has been reformatted. +It now only includes local minor modes at the start, and the global +minor modes are listed after the major mode. + ++++ +*** The user option 'help-window-select' now affects apropos commands. +The apropos commands will now select the apropos window if +'help-window-select' is non-nil. + +--- +*** 'describe-keymap' now considers the symbol at point. +If the symbol at point is a keymap, 'describe-keymap' suggests it as +the default candidate. + +--- +*** New command 'help-quick' displays an overview of common commands. +The command pops up a buffer at the bottom of the screen with a few +helpful commands for various tasks. You can toggle the display using +'C-h q'. + +** Emacs 29.1 comes with Org v9.6. +See the file ORG-NEWS for user-visible changes in Org. + +** Outline Mode + ++++ +*** Support for customizing the default visibility state of headings. +Customize the user option 'outline-default-state' to define what +headings will be visible after Outline mode is turned on. When equal +to a number, the user option 'outline-default-rules' determines the +visibility of the subtree starting at the corresponding level. Values +are provided to control showing a heading subtree depending on whether +the heading matches a regexp, or on whether its subtree has long lines +or is itself too long. + +** Outline Minor Mode + ++++ +*** New user option 'outline-minor-mode-use-buttons'. +If non-nil, Outline Minor Mode will use buttons to hide/show outlines +in addition to the ellipsis. The default is nil, but in 'help-mode' +it has the value 'insert' that inserts the buttons directly to the +buffer where you can use 'RET' to cycle outline visibility. When +the value is 'in-margins', Outline Minor Mode uses the window margins +to hide/show outlines. + +** Windows + ++++ +*** New commands 'split-root-window-below' and 'split-root-window-right'. +These commands split the root window in two, and are bound to 'C-x w 2' +and 'C-x w 3', respectively. A number of other useful window-related +commands are now available on the 'C-x w' prefix. + ++++ +*** New user option 'display-buffer-avoid-small-windows'. +If non-nil, this should be a window height, a number. Windows smaller +than this will be avoided by 'display-buffer', if possible. + ++++ +*** New display action 'display-buffer-full-frame'. +This action removes other windows on the frame when displaying a +buffer. + ++++ +*** 'display-buffer' now can set up the body size of the chosen window. +For example, a 'display-buffer-alist' entry of + + '(window-width . (body-columns . 40))' + +will make the body of the chosen window 40 columns wide. For the +height use 'window-height' in combination with 'body-lines'. + +--- +*** You can customize which window 'scroll-other-window' operates on. +This is controlled by the new 'other-window-scroll-default' user option. + +** Frames + ++++ +*** Deleted frames can now be undeleted. +The 16 most recently deleted frames can be undeleted with 'C-x 5 u' when +'undelete-frame-mode' is enabled. Without a prefix argument, undelete +the most recently deleted frame. With a numerical prefix argument +between 1 and 16, where 1 is the most recently deleted frame, undelete +the corresponding deleted frame. + +** Tab Bars and Tab Lines + +--- +*** New user option 'tab-bar-auto-width' to automatically determine tab width. +This option is non-nil by default, which resizes tab-bar tabs so that +their width is evenly distributed across the tab bar. A companion +option 'tab-bar-auto-width-max' controls the maximum width of a tab +before its name on display is truncated. + +--- +*** 'C-x t RET' creates a new tab when the provided tab name doesn't exist. + +--- +*** New keymap 'tab-bar-history-mode-map'. +By default, it contains 'C-c ' and 'C-c ' to browse +the history of tab window configurations back and forward. + +--- +** Better detection of text suspiciously reordered on display. +The function 'bidi-find-overridden-directionality' has been extended +to detect reordering effects produced by embeddings and isolates +(started by directional formatting control characters such as RLO and +LRI). The new command 'highlight-confusing-reorderings' finds and +highlights segments of buffer text whose reordering for display is +suspicious and could be malicious. + +** Emacs server and client changes + ++++ +*** New command-line option '-r'/'--reuse-frame' for emacsclient. +With this command-line option, Emacs reuses an existing graphical client +frame if one exists; otherwise it creates a new frame. + ++++ +*** New command-line option '-w N'/'--timeout=N' for emacsclient. +With this command-line option, emacsclient will exit if Emacs does not +respond within N seconds. The default is to wait forever. + ++++ +*** 'server-stop-automatically' can be used to automatically stop the server. +The Emacs server will be automatically stopped when certain conditions +are met. The conditions are given by the argument, which can be +'empty', 'delete-frame' or 'kill-terminal'. + +** Rcirc + ++++ +*** New command 'rcirc-when'. + ++++ +*** New user option 'rcirc-cycle-completion-flag'. +Rcirc will use the default 'completion-at-point' mechanism. The +conventional IRC behavior of completing by cycling through the +available options can be restored by enabling this option. + ++++ +*** New user option 'rcirc-bridge-bot-alist'. +If you are in a channel where a bot is responsible for bridging +between networks, you can use this variable to make these messages +appear more native. For example you might set the option to: + + (setq rcirc-bridge-bot-alist '(("bridge" . "{\\(.+?\\)}[[:space:]]+"))) + +for messages like + + 09:47 {john} I am not on IRC + +to be reformatted into + + 09:47 I am not on IRC + +--- +*** New formatting commands. +Most IRC clients (including rcirc) support basic formatting using +control codes. Under the 'C-c C-f' prefix a few commands have been +added to insert these automatically. For example, if a region is +active and 'C-c C-f C-b' is invoked, markup is inserted for the region +to be highlighted bold. + +** Imenu + ++++ +*** 'imenu' is now bound to 'M-g i' globally. + +--- +*** New function 'imenu-flush-cache'. +Use it if you want Imenu to forget the buffer's index alist and +recreate it anew next time 'imenu' is invoked. + ++++ +** Emacs is now capable of abandoning a window's redisplay that takes too long. +This is controlled by the new variable 'max-redisplay-ticks'. If that +variable is set to a non-zero value, display of a window will be +aborted after that many low-level redisplay operations, thus +preventing Emacs from becoming wedged when visiting files with very +long lines. + +* Editing Changes in Emacs 29.1 + ++++ +** 'M-SPC' is now bound to 'cycle-spacing'. +Formerly it invoked 'just-one-space'. The actions performed by +'cycle-spacing' and their order can now be customized via the user +option 'cycle-spacing-actions'. + +--- +** 'zap-to-char' and 'zap-up-to-char' are case-sensitive for upper-case chars. +These commands now behave as case-sensitive for interactive calls when +they are invoked with an uppercase character, regardless of the +'case-fold-search' value. + +--- +** 'scroll-other-window' and 'scroll-other-window-down' now respect remapping. +These commands (bound to 'C-M-v' and 'C-M-V') used to scroll the other +windows without looking a customizations in that other window. These +functions now check whether they have been rebound in the buffer in +that other window, and then call the remapped function instead. In +addition, these commands now also respect the +'scroll-error-top-bottom' user option. + +--- +** Indentation of 'cl-flet' and 'cl-labels' has changed. +These forms now indent like this: + + (cl-flet ((bla (x) + (* x x))) + (bla 42)) + +This change also affects 'cl-macrolet', 'cl-flet*' and +'cl-symbol-macrolet'. + ++++ +** New user option 'translate-upper-case-key-bindings'. +Set this option to nil to inhibit translating upper case keys to lower +case keys. + ++++ +** New command 'ensure-empty-lines'. +This command increases (or decreases) the number of empty lines before +point. + +--- +** Improved mouse behavior with auto-scrolling modes. +When clicking inside the 'scroll-margin' or 'hscroll-margin' region, +point is now moved only when releasing the mouse button. This no +longer results in a bogus selection, unless the mouse has been +effectively dragged. + ++++ +** 'kill-ring-max' now defaults to 120. + +--- +** New user option 'yank-menu-max-items'. +Customize this option to limit the number of entries in the menu +"Edit->Paste from Kill Menu". The default is 60. + ++++ +** Performing a pinch gesture on a touchpad now increases the text scale. + +** show-paren-mode + ++++ +*** New user option 'show-paren-context-when-offscreen'. +When non-nil, if the point is in a closing delimiter and the opening +delimiter is offscreen, shows some context around the opening +delimiter in the echo area. The default is nil. + +May also be set to the symbols 'overlay' or 'child-frame', in which +case the context is shown in an overlay or child-frame at the top-left +of the current window. The latter option requires a graphical frame. +On non-graphical frames, the context is shown in the echo area. + +** Comint + ++++ +*** 'comint-term-environment' is now aware of connection-local variables. +The user option 'comint-terminfo-terminal' and the variable +'system-uses-terminfo' can now be set as connection-local variables to +change the terminal used on a remote host. + +--- +*** New user option 'comint-delete-old-input'. +When nil, this prevents comint from deleting the current input when +inserting previous input using ''. The default is t, to +preserve past behavior. + +--- +*** New minor mode 'comint-fontify-input-mode'. +This minor mode is enabled by default in "*shell*" and "*ielm*" +buffers. It fontifies input text according to 'shell-mode' or +'emacs-lisp-mode' font-lock rules. Customize the user options +'shell-fontify-input-enable' and 'ielm-fontify-input-enable' to nil if +you don't want to enable input fontification by default. + +** Mwheel + +--- +*** New user options for alternate wheel events. +The options 'mouse-wheel-down-alternate-event', +'mouse-wheel-up-alternate-event', 'mouse-wheel-left-alternate-event', +and 'mouse-wheel-right-alternate-event' have been added to better +support systems where two kinds of wheel events can be received. + +** Internationalization changes + +*** The function key now allows deleting the entire composed sequence. +For the details, see the item about the 'delete-forward-char' command +above. + +*** New user option 'composition-break-at-point'. +Setting it to a non-nil value temporarily disables automatic +composition of character sequences at point, and thus makes it easier +to edit such sequences by allowing point to "enter" the sequence. + +--- +*** Support for many old scripts and writing systems. +Emacs now supports and has language-environments and input methods for +several dozens of old scripts that were used in the past for various +languages. For each such script Emacs now has font-selection and +character composition rules, a language environment, and an input +method. The newly-added scripts and the corresponding language +environments are: + +Tai Tham script and the Northern Thai language environment +Brahmi script and language environment +Kaithi script and language environment +Tirhuta script and language environment +Sharada script and language environment +Siddham script and language environment +Syloti Nagri script and language environment +Modi script and language environment +Baybayin script and Tagalog language environment +Hanunoo script and language environment +Buhid script and language environment +Tagbanwa script and language environment +Limbu script and language environment +Balinese script and language environment +Javanese script and language environment +Sundanese script and language environment +Batak script and language environment +Rejang script and language environment +Makasar script and language environment +Lontara script and language environment +Hanifi Rohingya script and language environment +Grantha script and language environment +Kharoshthi script and language environment +Lepcha script and language environment +Meetei Mayek script and language environment +Adlam script and language environment +Mende Kikakui script and language environment +Wancho script and language environment +Toto script and language environment +Gothic script and language environment +Coptic script and language environment + +--- +*** The "Oriya" language environment was renamed to "Odia". +This is to follow the change in the official name of the script. The +'oriya' input method was also renamed to 'odia'. However, the old +name of the language environment and the input method are still +supported. + +--- +*** New Greek translation of the Emacs tutorial. +Type 'C-u C-h t' to select it in case your language setup does not do +so automatically. + +--- +*** New Ukrainian translation of the Emacs Tutorial. + +--- +*** New default phonetic input method for the Tamil language environment. +The default input method for the Tamil language environment is now +"tamil-phonetic" which is a customizable phonetic input method. To +change the input method's translation rules, customize the user option +'tamil-translation-rules'. + +--- +*** New tamil99 input method for the Tamil language. +This supports the keyboard layout specifically designed for the Tamil +language. + +--- +*** New input method 'slovak-qwerty'. +This is a variant of the 'slovak' input method, which corresponds to +the QWERTY Slovak keyboards. + + +* Changes in Specialized Modes and Packages in Emacs 29.1 + +** Ecomplete + +--- +*** New commands 'ecomplete-edit' and 'ecomplete-remove'. +These allow you to (respectively) edit and bulk-remove entries from +the ecomplete database. + +--- +*** New user option 'ecomplete-auto-select'. +If non-nil and there's only one matching option, auto-select that. + +--- +*** New user option 'ecomplete-filter-regexp'. +If non-nil, this user option describes what entries not to add to the +database stored on disk. + +** Auth-Source + ++++ +*** New user option 'auth-source-pass-extra-query-keywords'. +Whether to recognize additional keyword params, like ':max' and +':require', as well as accept lists of query terms paired with +applicable keywords. This disables most known behavioral quirks +unique to auth-source-pass, such as wildcard subdomain matching. + +** Dired + ++++ +*** 'dired-guess-shell-command' moved from dired-x to dired. +This means that 'dired-do-shell-command' will now provide smarter +defaults without first having to require 'dired-x'. See the node +"(emacs) Shell Command Guessing" in the Emacs manual for more details. + +--- +*** 'dired-clean-up-buffers-too' moved from dired-x to dired. +This means that Dired now offers to kill buffers visiting files and +dirs when they are deleted in Dired. Before, you had to require +'dired-x' to enable this behavior. To disable this behavior, +customize the user option 'dired-clean-up-buffers-too' to nil. The +related user option 'dired-clean-confirm-killing-deleted-buffers' +(which see) has also been moved to 'dired'. + ++++ +*** 'dired-do-relsymlink' moved from dired-x to dired. +The corresponding key 'Y' is now bound by default in Dired. + ++++ +*** 'dired-do-relsymlink-regexp' moved from dired-x to dired. +The corresponding key '% Y' is now bound by default in Dired. + +--- +*** 'M-G' is now bound to 'dired-goto-subdir'. +Before, that binding was only available if the dired-x package was +loaded. + ++++ +*** 'dired-info' and 'dired-man' moved from dired-x to dired. +The 'dired-info' and 'dired-man' commands have been moved from the +dired-x package to dired. They have also been renamed to +'dired-do-info' and 'dired-do-man'; the old command names are obsolete +aliases. + +The keys 'I' ('dired-do-info') and 'N' ('dired-do-man') are now bound +in Dired mode by default. The user options 'dired-bind-man' and +'dired-bind-info' no longer have any effect and are obsolete. + +To get the old behavior back and unbind these keys in Dired mode, add +the following to your Init file: + + (with-eval-after-load 'dired + (keymap-set dired-mode-map "N" nil) + (keymap-set dired-mode-map "I" nil)) + +--- +*** New command 'dired-do-eww'. +This command visits the file on the current line with EWW. + +** Elisp + +--- +*** New command 'elisp-eval-region-or-buffer' (bound to 'C-c C-e'). +This command evals the forms in the active region or in the whole buffer. + +--- +*** New commands 'elisp-byte-compile-file' and 'elisp-byte-compile-buffer'. +These commands (bound to 'C-c C-f' and 'C-c C-b', respectively) +byte-compile the visited file and the current buffer, respectively. + +** Games + +--- +*** New user option 'tetris-allow-repetitions'. +This controls how randomness is implemented (whether to use pure +randomness as before or whether to use a bag). + +** Battery + ++++ +*** New user option 'battery-update-functions'. +This can be used to trigger actions based on the battery status. + +** Enriched Mode + ++++ +*** New command 'enriched-toggle-markup'. +This allows you to see the markup in 'enriched-mode' buffers (e.g., +the "HELLO" file). + +** Shell Script Mode + +--- +*** New user option 'sh-indent-statement-after-and'. +This controls how statements like the following are indented: + + foo && + bar + +*** New Flymake backend using the ShellCheck program. +It is enabled by default, but requires that the external "shellcheck" +command is installed. + +** CC Mode + +--- +*** C++ Mode now supports most of the new features in the C++20 standard. + +** Cperl Mode + +--- +*** New user option 'cperl-file-style'. +This option determines the indentation style to be used. It can also +be used as a file-local variable. + +** Gud + +--- +*** 'gud-go' is now bound to 'C-c C-v'. +If given a prefix, it will query the user for an argument to use for +the run/continue command. + +--- +*** 'perldb' now recognizes '-E'. +As of Perl 5.10, 'perl -E 0' behaves like 'perl -e 0' but also activates +all optional features of the Perl version in use. 'perldb' now uses +this invocation as its default. + +** Customize + +--- +*** New command 'custom-toggle-hide-all-widgets'. +This is bound to 'H' and toggles whether to hide or show the widget +contents. + +** Diff mode + +--- +*** New user option 'diff-whitespace-style'. +Sets the value of the buffer-local variable 'whitespace-style' in +'diff-mode' buffers. By default, this variable is '(face trailing)', +which preserves behavior from previous Emacs versions. + ++++ +*** New user option 'diff-add-log-use-relative-names'. +If non-nil insert file names in ChangeLog skeletons relative to the +VC root directory. + +** Ispell + +--- +*** 'ispell-region' and 'ispell-buffer' now push the mark. +These commands push onto the mark ring the location of the last +misspelled word where corrections were offered, so that you can then +skip back to that location with 'C-x C-x'. + +** Dabbrev + +--- +*** New function 'dabbrev-capf' for use on 'completion-at-point-functions'. + ++++ +*** New user option 'dabbrev-ignored-buffer-modes'. +Buffers with major modes in this list will be ignored. By default, +this includes "binary" buffers like 'archive-mode' and 'image-mode'. + +** Package + ++++ +*** New command 'package-update'. +This command allows you to upgrade packages without using 'M-x +list-packages'. + ++++ +*** New command 'package-update-all'. +This command allows updating all packages without any queries. + ++++ +*** New commands 'package-recompile' and 'package-recompile-all'. +These commands can be useful if the ".elc" files are out of date +(invalid byte code and macros). + ++++ +*** New DWIM action on 'x' in "*Packages*" buffer. +If no packages are marked, 'x' will install the package under point if +it isn't already, and remove it if it is installed. + ++++ +*** New command 'package-vc-install'. +Packages can now be installed directly from source by cloning from a +repository. + ++++ +*** New command 'package-vc-install-from-checkout'. +An existing checkout can now be loaded via package.el, by creating a +symbolic link from the usual package directory to the checkout. + ++++ +*** New command 'package-vc-checkout'. +Used to fetch the source of a package by cloning a repository without +activating the package. + ++++ +*** New command 'package-vc-prepare-patch'. +This command allows you to send patches to package maintainers, for +packages checked out using 'package-vc-install'. + ++++ +*** New command 'package-report-bug'. +This command helps you compose an email for sending bug reports to +package maintainers. + ++++ +*** New user option 'package-vc-selected-packages'. +By customizing this user option you can specify specific packages to +install. + +** Emacs Sessions (Desktop) + ++++ +*** New user option to load a locked desktop if locking Emacs is not running. +The option 'desktop-load-locked-desktop' can now be set to the value +'check-pid', which means to allow loading a locked ".emacs.desktop" +file if the Emacs process which locked it is no longer running on the +local machine. This allows avoiding questions about locked desktop +files when the Emacs session which locked it crashes, or was otherwise +interrupted, and didn't exit gracefully. See the "(emacs) Saving +Emacs Sessions" node in the Emacs manual for more details. + +** Miscellaneous + ++++ +*** New command 'scratch-buffer'. +This command switches to the "*scratch*" buffer. If "*scratch*" doesn't +exist, the command creates it first. You can use this command if you +inadvertently delete the "*scratch*" buffer. + +** Debugging + +--- +*** 'q' in a "*Backtrace*" buffer no longer clears the buffer. +Instead it just buries the buffer and switches the mode from +'debugger-mode' to 'backtrace-mode', since commands like 'e' are no +longer available after exiting the recursive edit. + ++++ +*** New user option 'debug-allow-recursive-debug'. +This user option controls whether the 'e' (in a "*Backtrace*" +buffer or while edebugging) and 'C-x C-e' (while edebugging) commands +lead to a (further) backtrace. By default, this variable is nil, +which is a change in behavior from previous Emacs versions. + ++++ +*** 'e' in edebug can now take a prefix arg to pretty-print the results. +When invoked with a prefix argument, as in 'C-u e', this command will +pop up a new buffer and show the full pretty-printed value there. + ++++ +*** 'C-x C-e' now interprets a non-zero prefix arg to pretty-print the results. +When invoked with a non-zero prefix argument, as in 'C-u C-x C-e', +this command will pop up a new buffer and show the full pretty-printed +value there. + ++++ +*** You can now generate a backtrace from Lisp errors in redisplay. +To do this, set the new variable 'backtrace-on-redisplay-error' to a +non-nil value. The backtrace will be written to a special buffer +named "*Redisplay-trace*". This buffer will not be automatically +displayed in a window. + +** Compile + ++++ +*** New user option 'compilation-hidden-output'. +This can be used to make specific parts of compilation output +invisible. + ++++ +*** The 'compilation-auto-jump-to-first-error' user option has been extended. +It can now have the additional values 'if-location-known' (which will +only jump if the location of the first error is known), and +'first-known' (which will jump to the first known error location). + ++++ +*** New user option 'compilation-max-output-line-length'. +Lines longer than this will have the ends hidden, with a button to +reveal the hidden text. This speeds up operations like grepping on +files that have few newlines. + +** Flymake + ++++ +*** New user option 'flymake-mode-line-lighter'. + ++++ +** New minor mode 'word-wrap-whitespace-mode' for extending 'word-wrap'. +This mode switches 'word-wrap' on, and breaks on all the whitespace +characters instead of just 'SPC' and 'TAB'. + +--- +** New mode, 'emacs-news-mode', for editing the NEWS file. +This mode adds some highlighting, fixes the 'M-q' command, and has +commands for doing maintenance of the Emacs NEWS files. In addition, +this mode turns on 'outline-minor-mode', and thus displays +customizable icons (see 'icon-preference') in the margins. To +disable these icons, set 'outline-minor-mode-use-buttons' to a +nil value. + +--- +** Kmacro +Kmacros are now OClosures and have a new constructor 'kmacro' which +uses the 'key-parse' syntax. It replaces the old 'kmacro-lambda-form' +(which is now declared obsolete). + +--- +** savehist.el can now truncate variables that are too long. +An element of 'savehist-additional-variables' can now be of the form +'(VARIABLE . MAX-ELTS)', which means to truncate the VARIABLE's value to +at most MAX-ELTS elements (if the value is a list) before saving the +value. + +** Minibuffer and Completions + ++++ +*** New commands for navigating completions from the minibuffer. +When the minibuffer is the current buffer, typing 'M-' or +'M-' selects a previous/next completion candidate from the +"*Completions*" buffer and inserts it to the minibuffer. +When the user option 'minibuffer-completion-auto-choose' is nil, +'M-' and 'M-' do the same, but without inserting +a completion candidate to the minibuffer, then 'M-RET' can be used +to choose the currently active candidate from the "*Completions*" +buffer and exit the minibuffer. With a prefix argument, 'C-u M-RET' +inserts the currently active candidate to the minibuffer, but doesn't +exit the minibuffer. These keys are also available for in-buffer +completion, but they don't insert candidates automatically, you need +to type 'M-RET' to insert the selected candidate to the buffer. + ++++ +*** The "*Completions*" buffer can now be automatically selected. +To enable this behavior, customize the user option +'completion-auto-select' to t, then pressing 'TAB' will switch to the +"*Completions*" buffer when it pops up that buffer. If the value is +'second-tab', then the first 'TAB' will display "*Completions*", and +the second one will switch to the "*Completions*" buffer. + +--- +*** New user option 'completion-auto-wrap'. +When non-nil, the commands 'next-completion', 'previous-completion', +'next-line-completion' and 'previous-line-completion' automatically +wrap around on reaching the beginning or the end of the "*Completions*" +buffer. + ++++ +*** New values for the 'completion-auto-help' user option. +There are two new values to control the way the "*Completions*" buffer +behaves after pressing a 'TAB' if completion is not unique. The value +'always' updates or shows the "*Completions*" buffer after any attempt +to complete. The value 'visual' is like 'always', but only updates +the completions if they are already visible. The default value t +always hides the completion buffer after some completion is made. + +*** New commands to complete the minibuffer history. +'minibuffer-complete-history' ('C-x ') is like 'minibuffer-complete' +but completes on the history items instead of the default completion +table. 'minibuffer-complete-defaults' ('C-x ') completes +on the list of default items. + ++++ +*** User option 'minibuffer-eldef-shorten-default' is now obsolete. +Customize the user option 'minibuffer-default-prompt-format' instead. + ++++ +*** New user option 'completions-sort'. +This option controls the sorting of the completion candidates in +the "*Completions*" buffer. Available styles are no sorting, +alphabetical (the default), or a custom sort function. + ++++ +*** New user option 'completions-max-height'. +This option limits the height of the "*Completions*" buffer. + ++++ +*** New user option 'completions-header-format'. +This is a string to control the heading line to show in the +"*Completions*" buffer before the list of completions. +If it contains "%s", that is replaced with the number of completions. +If nil, the heading line is not shown. + ++++ +*** New user option 'completions-highlight-face'. +When this user option names a face, the current +candidate in the "*Completions*" buffer is highlighted with that face. +The nil value disables this highlighting. + ++++ +*** Choosing a completion with a prefix argument doesn't exit the minibuffer. +This means that typing 'C-u RET' on a completion candidate in the +"*Completions*" buffer inserts the completion to the minibuffer, +but doesn't exit the minibuffer. + ++++ +*** You can now define abbrevs for the fundamental minibuffer modes. +'minibuffer-mode-abbrev-table' and +'minibuffer-inactive-mode-abbrev-table' are now defined. + +** Isearch and Replace + ++++ +*** Changes in how Isearch responds to 'mouse-yank-at-point'. +If a user does 'C-s' and then uses '' ('mouse-yank-primary') +outside the echo area, Emacs will, by default, end the Isearch and +yank the text at mouse cursor. But if 'mouse-yank-at-point' is +non-nil, the text will now be added to the Isearch instead. + ++++ +*** Changes for values 'no' and 'no-ding' of 'isearch-wrap-pause'. +Now with these values the search will wrap around not only on repeating +with 'C-s C-s', but also after typing a character. + ++++ +*** New user option 'char-fold-override'. +Non-nil means that the default definitions of equivalent characters +are overridden. + +*** New command 'describe-char-fold-equivalences'. +It displays character equivalences used by 'char-fold-to-regexp'. + ++++ +*** New command 'isearch-emoji-by-name'. +It is bound to 'C-x 8 e RET' during an incremental search. The +command accepts the Unicode name of an Emoji (for example, "smiling +face" or "heart with arrow"), like 'C-x 8 e e', with minibuffer +completion, and adds the Emoji into the search string. + +** Glyphless characters + ++++ +*** New minor mode 'glyphless-display-mode'. +This allows an easy way to toggle seeing all glyphless characters in +the current buffer. + +--- +*** The extra slot of 'glyphless-char-display' can now have cons values. +The extra slot of the 'glyphless-char-display' char-table can now have +values that are cons cells, specifying separate values for text-mode +and GUI terminals. + ++++ +*** "Replacement character" feature for undisplayable characters on TTYs. +The 'acronym' method of displaying glyphless characters on text-mode +frames treats single-character acronyms specially: they are displayed +without the surrounding [..] "box", thus in effect treating such +"acronyms" as replacement characters. + +** Registers + ++++ +*** Buffer names can now be stored in registers. +For instance, to enable jumping to the "*Messages*" buffer with +'C-x r j m': + + (set-register ?m '(buffer . "*Messages*")) + +** Pixel-fill + ++++ +*** This is a new package that deals with filling variable-pitch text. + ++++ +*** New function 'pixel-fill-region'. +This fills the region to be no wider than a specified pixel width. + +** Info + ++++ +*** 'M-x info-apropos' now takes a prefix argument to search for regexps. + +--- +*** New command 'Info-goto-node-web' and key binding 'G'. +This will take you to the gnu.org web server's version of the current +info node. This command only works for the Emacs and Emacs Lisp manuals. + +** Shortdoc + +--- +*** New command 'shortdoc-copy-function-as-kill' bound to 'w'. +It copies the name of the function near point into the kill ring. + +--- +*** 'N' and 'P' are now bound to 'shortdoc-{next,previous}-section'. +This is in addition to the old keybindings 'C-c C-n' and 'C-c C-p'. + +** VC + +--- +*** New command 'vc-pull-and-push'. +This commands first does a "pull" command, and if that is successful, +do a "push" command afterwards. + ++++ +*** 'C-x v b' prefix key is used now for branch commands. +'vc-print-branch-log' is bound to 'C-x v b l', and new commands are +'vc-create-branch' ('C-x v b c') and 'vc-switch-branch' ('C-x v b s'). +The VC Directory buffer now uses the prefix 'b' for these branch-related +commands. + ++++ +*** New command '%' ('vc-dir-mark-by-regexp'). +This command marks files based on a regexp. If given a prefix +argument, unmark instead. + ++++ +*** New command 'C-x v !' ('vc-edit-next-command'). +This prefix command requests editing of the next VC shell command +before execution. For example, in a Git repository, you can produce a +log of more than one branch by typing 'C-x v ! C-x v b l' and then +appending additional branch names to the 'git log' command. + +--- +*** 'C-x v v' in a diffs buffer allows to commit only some of the changes. +This command is intended to allow you to commit only some of the +changes you have in your working tree. Begin by creating a buffer +with the changes against the last commit, e.g. with 'C-x v D' +('vc-root-diff'). Then edit the diffs to remove the hunks you don't +want to commit. Finally, type 'C-x v v' in that diff buffer to commit +only part of your changes, those whose hunks were left in the buffer. + +--- +*** 'C-x v v' on an unregistered file will now use the most specific backend. +Previously, if you had an SVN-covered "~/" directory, and a Git-covered +directory in "~/foo/bar", using 'C-x v v' on a new, unregistered file +"~/foo/bar/zot" would register it in the SVN repository in "~/" instead of +in the Git repository in "~/foo/bar". This makes this command +consistent with 'vc-responsible-backend'. + +--- +*** Log Edit now font locks long Git commit summary lines. +Writing shorter summary lines avoids truncation in contexts in which +Git commands display summary lines. See the two new user options +'vc-git-log-edit-summary-target-len' and 'vc-git-log-edit-summary-max-len'. + +--- +*** New 'log-edit-headers-separator' face. +It is used to style the line that separates the 'log-edit' headers +from the 'log-edit' summary. + +--- +*** The function 'vc-read-revision' accepts a new MULTIPLE argument. +If non-nil, multiple revisions can be queried. This is done using +'completing-read-multiple'. + +--- +*** New function 'vc-read-multiple-revisions'. +This function invokes 'vc-read-revision' with a non-nil value for +MULTIPLE. + ++++ +*** New command 'vc-prepare-patch'. +Patches for any version control system can be prepared using VC. The +command will query what commits to send and will compose messages for +your mail user agent. The behavior of 'vc-prepare-patch' can be +modified by the user options 'vc-prepare-patches-separately' and +'vc-default-patch-addressee'. + +** Message + +--- +*** New user option 'mml-attach-file-at-the-end'. +If non-nil, 'C-c C-a' will put attached files at the end of the message. + +--- +*** Message Mode now supports image yanking. + ++++ +*** New user option 'message-server-alist'. +This controls automatic insertion of the "X-Message-SMTP-Method" +header before sending a message. + +** HTML Mode + +--- +*** HTML Mode now supports "text/html" and "image/*" yanking. + +** Texinfo Mode + +--- +*** 'texinfo-mode' now has a specialized 'narrow-to-defun' definition. +It narrows to the current node. + +** EUDC + ++++ +*** Deprecations planned for next release. +After Emacs 29.1, some aspects of EUDC will be deprecated. The goal +of these deprecations is to simplify EUDC server configuration by +making 'eudc-server-hotlist' the only place to add servers. There +will not be a need to set the server using the 'eudc-set-server' +function. Instead, the 'eudc-server-hotlist' variable should be +customized to have an entry for the server. The plan is to obsolete +the 'eudc-hotlist' editor since Customize is sufficient for changing +'eudc-server-hotlist'. How the 'eudc-server' variable works in this +context is to-be-determined; it can't be removed, because that would +break compatibility, but it may become synchronized with +'eudc-server-hotlist' so that 'eudc-server' is always equal to (first +eudc-server-hotlist). The first entry in 'eudc-server-hotlist' is the +first server tried by 'eudc-expand-try-all'. The hotlist +simplification will allow 'eudc-query-form' to show a drop down of +possible servers, instead of requiring a call to 'eudc-set-server' +like it does in this release. The default value of +'eudc-ignore-options-file' will be changed from nil to t. + ++++ +*** New user option 'eudc-ignore-options-file' that defaults to nil. +The 'eudc-ignore-options-file' user option can be configured to ignore +the 'eudc-options-file' (typically "~/.emacs.d/eudc-options"). Most +users should configure this to t and put EUDC configuration in the +main Emacs initialization file ("~/.emacs" or "~/.emacs.d/init.el"). + ++++ +*** 'eudc-expansion-overwrites-query' to 'eudc-expansion-save-query-as-kill'. +'eudc-expansion-overwrites-query' is renamed to +'eudc-expansion-save-query-as-kill' to reflect the actual behavior of +the user option. + ++++ +*** New command 'eudc-expand-try-all'. +This command can be used in place of 'eudc-expand-inline'. It takes a +prefix argument that causes 'eudc-expand-try-all' to return matches +from all servers instead of just the matches from the first server to +return any. This is useful for example, if one wants to search LDAP +for a name that happens to match a contact in one's BBDB. + ++++ +*** New behavior and default for user option 'eudc-inline-expansion-format'. +EUDC inline expansion result formatting defaulted to + + '("%s %s <%s>" firstname name email) + +Since email address specifications need to comply with RFC 5322 in +order to be useful in messages, there was a risk to produce syntax +which was standard with RFC 822, but is marked as obsolete syntax by +its successor RFC 5322. Also, the first and last name part was never +enclosed in double quotes, potentially producing invalid address +specifications, which may be rejected by a receiving MTA. Thus, this +variable can now additionally be set to nil (the new default), or a +function. In both cases, the formatted result will be in compliance +with RFC 5322. When set to nil, a default format very similar to the +old default will be produced. When set to a function, that function +is called, and the returned values are used to populate the phrase and +comment parts (see RFC 5322 for definitions). In both cases, the +phrase part will be automatically quoted if necessary. + ++++ +*** New function 'eudc-capf-complete' with 'message-mode' integration. +EUDC can now contribute email addresses to 'completion-at-point' by +adding the new function 'eudc-capf-complete' to +'completion-at-point-functions' in 'message-mode'. + ++++ +*** Additional attributes of query and results in eudcb-macos-contacts.el. +The EUDC back-end for the macOS Contacts app now provides a wider set +of attributes to use for queries, and delivers more attributes in +query results. + ++++ +*** New back-end for ecomplete. +A new back-end for ecomplete allows information from that database to +be queried by EUDC, too. The attributes present in the EUDC query are +used to select the entry type in the ecomplete database. + ++++ +*** New back-end for mailabbrev. +A new back-end for mailabbrev allows information from that database to +be queried by EUDC, too. The attributes 'email', 'name', and 'firstname' +are supported only. + +** EWW/SHR + ++++ +*** New user option to automatically rename EWW buffers. +The 'eww-auto-rename-buffer' user option can be configured to rename +rendered web pages by using their title, URL, or a user-defined +function which returns a string. For the first two cases, the length +of the resulting name is controlled by 'eww-buffer-name-length'. By +default, no automatic renaming is performed. + ++++ +*** New user option 'shr-allowed-images'. +This complements 'shr-blocked-images', but allows specifying just the +allowed images. + ++++ +*** New user option 'shr-use-xwidgets-for-media'. +If non-nil (and Emacs has been built with support for xwidgets), +display