mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2024-12-03 08:30:09 +00:00
6c06379c03
e950f5a663
Merge branch 'feature/use-package' into emacs-295bcd0cee0f
* etc/USE-PACKAGE-NEWS: Delete file.6bb4267a54
* admin/git-bisect-start: Prune use-package merge commits.b9fa81514f
; Minor doc fixes in bind-key.el15fb115551
Update use-package defgroups4be96c9dcb
Drop key-chord.el support from use-package9c21eae60c
; 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.el5899cac111
Change use-package custom :group to `initialization`8fb2afe051
; Fix typosa37df90276
Treat escaped newlines in Eshell as the empty stringd3e9bd3b57
; Document use-package-reset-statisticsc65e087068
; use-package: Improve :ensure-system-package docstrings141fe8b827
use-package: Improve :mode keyword documentation888558ec42
Improve bind-keys* and override-global-mode docstringsc774e83e36
; * src/emacs.c (main): Improvements to last change.537f11f8cd
; * doc/misc/use-package.texi: Improve indexing.98e54f597e
Add new use-package manual01bfbd186a
Fix use-package tests97c8a58787
* doc/misc/Makefile.in (INFO_COMMON): Add use-package.500c459eff
; * etc/NEWS: Mention use-package.4a1e9d61b5
; Merge from https://github.com/jwiegley/use-package58cc931e92
Merge pull request from skangas/revert-for-copyrightc74b5c16f8
Merge pull request from skangas/revert-for-copyright2ebbd98edb3
Revert "Add: 'local' keyword"8296164eab
Remove tests lacking a copyright assignment for nowa6cbfdd8f1
Merge pull request from skangas/package-requiresefae6048dd
Add package keyword from finder-known-keywords06f92d1cc0
Fix Package-Requires for bind-{chord,key}.ele42c8479ec
Merge pull request from skangas/dir-locals7b689942f0
Merge pull request from skangas/fix-headers30fa366737
Add .dir-locals.el79c2c3a3ad
Delete redundant headers2399d0d5ce
Normalize GPLv3 license statements7087a97a24
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-keymap49fffe7cf4
Merge remote-tracking branch 'origin/master' into pr-830cf8ab8b52e
Merge pull request from skangas/texinfo-wip2efc869866
Merge branch 'master' into texinfo-wip9b476ae71c
Merge pull request from skangas/gnu-elpa8cf8631c69
Fix makeinfo warningsa6b1b62763
Use two spaces to end sentences6a26c55d70
Recommend GNU ELPA over MELPA4e8b72efc8
manual: Regenerate texi fileae301ad36d
Merge pull request from skangas/checkdoc5dad5ff0fe
Merge pull request from skangas/ciff30d22909
Various checkdoc fixes971634e3f9
Merge pull request from bhankas/master43254ae62f
Fix building on Emacs 24.345e6ee1371
Fix tests on Emacs 26 or older7122ac5397
Bump version to 2.4.46b25a41bc6
Merge pull request from andreyorst/face-spec-set-third-arg...76a5ce5d86
Allow passing the SPEC-TYPE argument via :custom-face67d7d1fda0
Merge pull request from bhankas/master370890e518
Bump version to 2.4.32ee9b31ca4
bind-key.el: Bump version for ELPA407b1bf4f0
Merge pull request from andreyorst/face-spec-set0be7f5dd53
Merge pull request from bhankas/masterabd655c99e
Update version to 2.4.29188b3edf1
Merge pull request from bhankas/master0fafd98513
Update copyright for submission to ELPA6b344a9197
Use face-spec-set instead of custom-set-facesc0338e06cd
Merge pull request from conao3/add-commands-keywordec96b47664
bind-keys supports passing a list of keymaps as :map argumentdaa124e1cc
Fix bind-chords docs: :map argument may be a list of keymaps4107bbfbdb
Merge pull request from sdwolfz/native-compiler-warning1494f65f61
Fix emacs native compilation warning for bind-keyc12deb31fe
Merge pull request from CeleritasCelery/masterd4aeda77a9
Merge pull request from sdwolfz/native-compiler-warning3feedce08d
Fix emacs native compilation warning6c2fdaffd9
Revert "Remove use-package-font-lock-keywords"09e837dfae
Merge pull request from belak/remove-extra-font-lock-keywords89d6e7a5ec
Merge pull request from realcomplex/override-global-mode-fixa05b9e28ed
Go back to making `override-global-mode` non-global85c1287c26
Make sure that bind-key's `override-global-mode` is initia...3dd5bee4aa
Merge pull request from tarsiiformes/quote-quote53c1889342
Quote single quotes in docstrings or use different quotinge8626100f3
Merge pull request from tarsiiformes/cleanup-manual835fdb16be
manual: Regenerate texi file0dc78ef4c8
Merge pull request from conao3/fix-declare-style2967849846
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/mastera0ba027ee5
Merge pull request from wcy123/masterca426a7732
Merge pull request from phst/lexf270623768
Merge pull request from phst/flet0503611b71
Merge pull request from conao3/add-custom-face-descriptione9b297a9fa
Merge pull request from iaeerfung/master6484e5fdfe
Merge pull request from wyuenho/set-default-use-package-en...a7259411f6
Merge pull request from wyuenho/statistics-sortingde0c8c36c7
Merge pull request from Hugo-Heagren/bind-keys-repeat-map015c921a2e
Merge pull request from danielpza/add-update-custom-packageb143663f12
Merge pull request from tarsiiformes/silenciodebab131f0
Merge pull request from DamienCassou/update-texi22de8991c1
Merge pull request from skangas/fix-typo620fe443c2
Add: 'local' keyword4004dde6ea
Avoid positional arguments to define-minor-modecb85f9c274
Fix typo in use-package docstring30b35d6d62
Update use-package.texi9be2580f5f
optimization: constand folding for read-kbd-macro1143f14d65
bind-keys-form: error for repeat sub-keywords without :rep...c4bd2aa3b8
bind-key-form: allow :continue keyword inside repeat map5ef327ce9f
bind-key-form: allow :exit keyword inside repeat map2203246454
bind-keys-form: new keyword :repeat-map, for defining repe...ee292b80be
Fix tests and documentation for hook24c50da3b2
Auto detect mode suffix in hook keyword1343783532
feat: add update custom packages commandf3ff593a84
Properly sort use-package-statistics-reportc09cb1301b
Fix void-variable use-package-enable-imenu-support11b2184c8d
Remove uses of deprecated ‘flet’ macroa35b924054
add testcasedbfb3484cd
add autoload keyword40d2541331
fix docstring. was: invalid function nameffa5f0397a
Merge pull request from minad/improved-unbind5ca7bc321d
unbind-key: Ensure that keys are removed from the keymapec750952f4
bind-key: Use new symbols for kmapvara248658910
Merge pull request from tzz/tzz/use-package-use-theme2b9536f242
Add use-package-use-theme and avoid missing theme errorsc425e67a19
Merge pull request from kljohann/custom-use-single-lete3938e7b26
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 variable3e24a7363b
Revert "use-package-core.el: use the Emacs set-default fun...8ef7978028
set saved-variable-comment from :custom99643f8873
Update version to 2.4.1215dd35e49
add multiple and eval :custom-face usage4938167bff
Remove use-package-font-lock-keywords10c6400d34
Merge pull request from wyuenho/patch-15bd7e0ca7d
Migrate remaining files to lexical binding1f54de9210
Merge branch 'master' into patch-1c358eedcf9
Merge pull request from tzz/custom-set-default13b1e202bf
Update the documentation for :custom as perd3f847eaee
Fix broken test due to2ca2212f73
better testsde49954965
add test for950068809b
Support keymap symbol in bind-key3e96664ffe
Merge pull request from tzz/custom-set-default8c31c57106
use-package-core.el: use the Emacs set-default function to...4e72885f85
Merge pull request from jjlee/call-hooks-even-if-no-config203d15e34e
Merge branch 'master' into call-hooks-even-if-no-config218687d897
Merge pull request from nahuel/patch-144c837879e
typo, should be a vector, not a bytecode object0ec4660f74
Add special value back again, in case needed for backwards...f30d5761af
Even when there's no :config, run any pre/post config hooks91e5d275af
Merge pull request from jwiegley/johnw/clarify8b8522650e
Clarify the documentation for :after8e81459dad
Merge pull request from DamienCassou/typos3a58f53b14
Fix typos0456f878fc
Merge pull request from tarsiiformes/typos8c7fa11a3f
Fix typos165f2dd968
Use `require', not `load', when byte-compiling ()20415fb9be
Update tests4c8d5f0b21
Switch from `require' to `load' + `featurep'27fd32c47b
Use `require', not `load', when byte-compiling0d720a0f61
update bind-chords to use of eval-after-load when maps dec...8f1a345b5b
rename function8ec41be418
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 elisp8fe0ac2983
* use-package-core.el (use-package): fix declare style3e36cbfb6d
Merge pull request from stribb/master95f24f9628
Add a line of documentation for (use-pacakage ... :hook)7e40a9c424
Merge pull request from conao3/fix_default_value77ad44639f
Merge pull request from tarsiiformes/silenciofc6fef6869
Silence byte-compiler on Emacs 253f96971feb
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-install607879e647
prefix argument with _ to suppress Unused lexical argument...4a34b41f96
Merge pull request from justbur/autoload-keymapc169644637
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-138dcba6872
Place :chords at beginning of use-package-keywords1fb4198933
Merge pull request from killdash9/patch-15fb369c968
Merge branch 'master' into patch-187e26db44f
Merge pull request from jabranham/enable-lexical-bindingbdd7fd3565
Fix use-package-normalize-function09b7e8e129
Fix use-package-normalize-function testse2e6f9a44b
Enable lexical bindingcc9ec36f1a
Merge pull request from taingra/masterb1d9ce08a6
Update use-package.texib84a77bcdc
Added an Introduction taken from the READMEc980371f6f
Correct prefix keys after use-package-autoload-keymap36f9a9b9b4
Merge pull request from akhramov/fix/ensure-system-package...f38a100917
Ensure system package cleanupdb35639457
fix gethash default value for use-package-statistics-time642417ac05
Merge pull request from andschwa/remap-commandd2fec5e5e3
Document that remapping commands is supported with bind-key85e580a5e4
Merge pull request from akhramov/fix/ensure-system-package...9f034a0bcf
[] ensure-system-package: honor system-packages customizat...dc83e2f035
Update use-package-chords.elc9f6cae603
Update use-package-chords.ele2a322d870
Merge pull request from waymondo/mastere5d3826b62
:ensure-system-package allow cdr of cons to be a package n...ad601fb49a
Merge pull request from valignatev/master8a27cd3a8b
Encourage installation via https instead of http742cf27b0e
Merge pull request from DamienCassou/fix-report-again69a561b86b
Fix compile-time warnings due to the statistics-reporting ...2a47998844
Add missing requiredd8ef12112
Merge pull request from jwiegley/revert-645-fix-reportcba5a11368
Revert "Fix report"b1429951b1
Merge pull request from DamienCassou/fix-reportb28efb4847
Fix compile-time warnings due to the statistics-reporting ...bce655f616
Add missing require4cc7f91270
Merge pull request from DamienCassou/tabulated-listae22d74a16
Use a tabulated-list to display package configuration stat...76e6d3e8bc
Merge pull request from matthewbauer/patch-12250f89ac0
Support ":package" in use-package10b4dcb53a
Merge pull request from justbur/normalize-fix46503b194c
Fix usage of plist argument in use-package-normalize-pliste379221166
Merge pull request from justbur/ignore-keywords09266283b9
Add use-package-ignore-unknown-keywords optionab918196fa
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 filed21787f1d6
Merge pull request from jabranham/lexical-bindings109167e8f5
Don't remove sharp quotes2274130b40
Test still requires cl4c3abcf4eb
Fix byte compiler warnings88bcb8b96d
Use lexical bindings and remove cl packagefd8a3510fd
Merge pull request from jabranham/system-packages-updateb7252f8e63
lexical binding46ee100327
Prefer non-obsolete var names567df21f26
Merge pull request from jabranham/fix-byte-compiler8a6430835f
Prefer org-table-align to orgtbl-ctrl-c-ctrl-c13a9e339f2
Merge pull request from justbur/elisp-cap44cb99fcc7
Merge pull request from nickmccurdy/render-report-table1fdfd46fb2
Fix sanity check for correct :custom-face format9638870f53
Handle automatic macro expansion by elisp-completion-at-point13fb5f4f2e
Guard a call to display-warning with ignorecb15dffbd7
Render the use-package-report table using Org2d226310f1
All the second argument in use-package-defaults lists to b...51eceb4238
Add a test related to31fa2f24a1
Add more tests related to issue4aa9b0cd6a
Minor simplification of a functiona4d2e77961
bind-keys fixes related to3850281f88
Add a clarifying test forec84ed0dfb
Fix a scoping issues with multiple occurrences of :bind5a02d61ac6
Start building a use-package linter in use-package-lint.el7e458c640c
use-package-normalize/:disabled has the wrong number of ar...0068501aa0
Remove several unnecessary calls to `ignore'ae0d243681
Add another :bind teste6c54b54ab
Add further note to NEWS.md4714380696
Add tests for two more issues93231ecbab
Fix the tests8cf7b17dae
Clarify a note in NEWS.md8fefa49d39
Changes to the way auto-deferral is indicated80e8a599b4
Introduce new customization variable `use-package-merge-ke...96ecfab9e4
Use cl-gentemp in another place7803571280
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 requestede8a7ae1ea1
Add :bind test for a single cons cell2a85d81c47
Add support for gathering statistics on use-package declar...894e95aa4b
Respect keyword ordering in use-package-deferring-keywords0939993935
Clarify :config with setq versus :customc272c6b56b
Update some GPL version references2cd3ebd5d5
Allow the expansion of :after (:or foo bar) to be byte-com...b2b91af2e5
Make the expanded text for :after cleanerde12a5ae86
Several changes as suggested by flycheck3343cca33b
Don't auto-defer if the package itself was given to :load2a9904b9e8
Enable all tests on Travis0c110ebd67
Allow `:load t' to mean the same as :load of the package name4882df8285
Whitespace change7b8e94a61a
Default running-on-travis to t5f13924885
Enable 4 tests that work when not run on Traviscdb250e766
For now, stub out test that breaks Travis7c3a6cd70b
Stub some referenced variables, for Travisb5a0cd4f30
Add note in NEWS.md about :requires vs. :ifb25a305c58
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 cookiesf037c2daeb
Fix function accidentally made interactive43f1be12b7
Use cl-gensymee07e709ea
Fix the case where :ensure is given no argumentsafdf1c3638
Some Emacsen don't have gensym2892c026f4
Add note in NEWS.md about :after and autoloaded keybindings277384d151
Add a note to `bind-key` on the usage of the KEYMAP argument2790bfc006
Add a bind-key test62d33b2143
Support :ensure (pkg :pin archive)e34fdb580a
Add several missing comments6c836985b1
Swap the order of two definitions6470eaf3d5
Fix an argument process problem with bind-keya2ddc18065
Comment out two tests that break on Travis4b83f9525c
Rename up-* files to use-package-* for consistencyf869036115
Merge branch 'split-bind-key'1e42c867b6
Commit .texi file, as it requires several dependencies to ...08e5406cc3
Merge branch 'master' into next5382941ac3
Add a test-in-progress for issue 506057814ae24
Add new customization variables `use-package-hook-name-suf...d5feff862a
Split key binding functionality out into its own filed771e8d719
Please the byte-compiler9245d08ebc
Require cl for the use-package testse36d208c69
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 timefe85f246b0
Add a new :catch keyword, and move :preface before such ha...8489206db4
Fix duplication in an error message4042b87c72
Add expand-maximally macro to up-tests.el026433a8a0
Revert "Reduce some code duplication"fb9d159632
Move :preface handling within the code4efd355108
Add two new tests1e560c5140
Reduce some code duplicationac906479a7
Normalize some whitespace and ordering in new code0239ee227a
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 breakages0be575766c
Add new customization variable `use-package-deferring-keyw...6d51e52342
Minor comment change49752db41b
up-ensure's customization variables are now in their own g...f4f3e01044
Remove code from up-core.el that is now in up-diminish.elbd2589e4be
Add notes to NEWS.md8bf5de28c3
Correction to a macro expansion62f866caf7
Delete an unneeded blank linea1bdd958d3
Reduce some code duplication28084551ac
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 once35b975563c
Correction to error detection at both :init and :config times8428dafcfa
Report errors during deferred :config as intelligent warni...8dd0f274d0
Drop some unnecessary detail from a warning messagef356c838c1
Minor simplification99200a1642
Fix a byte-compiler warning in up-ensure.el7c95d0a0e0
Move optional jumping functionality to its own modulefff47a1331
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 Travis0c148eb777
Move functions around for better logical grouping3625b3f712
More variable renaming needed in the tests149c4878fc
Change most use-package-- prefixes to just use-package-d5c1fdf4e8
Remove a local variable binding223c321a1d
Always catch errors during configuratione5aa510d48
Separate out all tests, the better to identify which one f...4c1b82aed5
Define macroexpand-1 for older Emacsen9ab797cccd
A great deal of internal reorganization and simplificationa9429350d5
Fix `use-package-ensure-function' docstring typodee6b36286
If use-package-verbose is t, show loading times when :afte...af3b34b022
Remove the :defer-install keyword09be976c18
:demand should not override an explicit use of :after9e8e9aa4ee
Remove some debug code that crept incb846d188a
Add tests for the last two keywordscd4790b3df
Add many more testsf5b034154f
Always wrap the expanded body from use-package in (progn)21b9b6551d
Comment out :no-require test for now6954c3f582
Don't factor out a volatile variable7f2eec9e65
Add many new tests88f8c1bb8f
Generate :defines and :functions correctlyb5b432d0fe
Correct the ordering of :preface, :load-path, :defines and...07ab280741
Whitespace fixf674a75b61
Move :hook before :defer2c618e17c6
Don't macroexpand bind-keys, leave that to the evaluator5f1e8b6b72
Always use `load' when loading for the sake of compilation669e8527fb
Sort keywords at the appropriate timeaf8b961716
Change the :config default, if none has been set in vars1a09f8fef2
:no-require t should never require0791e3fefe
Code reformattingdfd3194d80
Allow match-expansion to take multiple cases7a562f10cb
Add test for use-package-test-normalize/:ensure9465b915a8
Add the missing plist-delete98ee89a752
Remove an unneeded defvar0be868d39b
A final fix to :ensure + :load-pathca94036dce
Add a test case for :ensure, following up from1fc543a212
Don't check for an :ensure that use-package-always-ensure ...2ff8af6495
Add a use-package-version variablec3b9cc2403
Add two new tests3ea2d34219
Add stubs for future tests of all keywords3847ec28ca
Allow :ensure to take a nil value again3cb64648fc
Only add :ensure nil on :load-path if use-package-always-e...35f46f7b42
Restructure some code5e1a656e06
Using :load-path without also using :ensure now implies :e...fab33fef3a
Correction to use-package--recognize-function5f2b0cbe8f
Allow keys to be bound to nil1167e7d063
Fix a missing `and'6a62122e9c
Use backquote rather than quote0887e1f9d0
Correct use-package-normalize-moded8c1f02bf4
Whitespace fix8051c9f5cd
Update version and copyrightbff472ea80
Allow :bind ("C-c C-c" . (lambda () (ding))) and #'(lambda...f256943f9b
Reorder some items in NEWS.md7499c8812a
Add NEWS.md filec0a884dfa2
Merge pull request from basil-conto/version3db39c0573
Require Emacs version >= 24.32aea700500
Merge pull request from basil-conto/5209870843e1c
Merge branch 'master' into 5209ea305beb6
Add a missing (require 'seq)4303a2faf6
Require cl-lib and do not use seq functionsb7041c0f29
When use-package-inject-hooks is non-nil, always fire init...2825987619
Print map keys in describe-personal-keybindings606284e374
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 was7531c374bf
Allow :diminish to take no argument, once againc811637b30
Fix for single :custom (foo bar)2ebf076733
Allow :custom (foo1 bar1) (foo2 bar2) etc4ad4a59685
Add support for `:hook`700c92c5de
Append to *use-package* when debugging, don't clear it6f9d4342ca
Make unrecognized keywords a warning9b523d7c4e
Upgrade license to GPL 318b9bf18ad
Don't allow :commands, :bind, etc., to be given an empty list4ddf42185a
Explicit :defer t should override use-package-always-demand5ac5f8bc63
Merge pull request from drrlvn/patch-1c72d8567d2
Corrections to the normalization of :custom903ff82219
Merge pull request from joewreschnig/implicit-diminisheda2db4f18
Merge pull request from waymondo/master57ec21a013
allow customized values to be nil9bf8264523
Merge pull request from canatella/add-customization-keywordsd8bbc3a95d
Add support for face customizationfcf219701b
Add support for variable customization3c763f3169
Merge pull request from carldotac/master5396491aec
Fix typos in docstring426a319e1b
Merge pull request from emacsjanitors/demote-manually85643eaf18
Cosmetic changes to use-package-ensure-elpa68c9ee4bff
Don't use with-demoted-errors in use-package-ensure-elpa3f58555ed8
Merge pull request from raxod502/feat/fix-install-deferredc3455b2a67
Remove duplicate documentation of :modec845776677
Merge pull request from joewreschnig/481-delight-docsd0dcd95d80
Document :delight in the doc string and READMEca83649a32
Allow `:diminish` with no arguments463e38b188
Merge pull request from joewreschnig/477-delight-wrappers7eec86f5cd
Allow :major as the third argument in :delight calls4b8b850cf0
Allow multiple :delight arguments, or omitting the mode. ()6e6b533aaf
Fix bug in use-package-install-deferred-package99e4045122
Merge pull request from joewreschnig/magic-469ac4a3a4aa8
Add `:magic` and `:magic-fallback` keywords (issue)ec088b747a
Protect against errors during package installc38c33e6fa
Merge pull request from raxod502/feat/failed-autoload-msg3823a9059e
Fix quoting error in failed autoload message0a12111d2f
Merge pull request from raxod502/normalize-nila9ffffcee5
Make use-package-normalize-value handle nil better2db2b56b17
Merge pull request from raxod502/fix-bind-key-filtere5e335424c
Add comment explaining keyword-argument patchd5d320e607
Don't mutilate keyword arguments in :bind9f90129b95
Merge pull request from raxod502/fix-after0f547bc807
Merge pull request from raxod502/always-defer-installbca84ee71a
Add use-package-always-defer-install9ad6f2ef1a
Fix :after keywordbd2afa53c7
Merge pull request from raxod502/defer-install249de4b44d
Merge remote-tracking branch 'origin/master' into defer-in...b2e674de0a
Update docstring, installation prompt messageecc5fddda4
Various improvements for deferred installation57e38152e1
Get :defer-install completely working, in theory855a2afbe3
Improve deferred installation mechanism89a8f94672
Merge branch 'generalized-ensure' into defer-installa233f01ff6
Update docstring for use-package-ensure-functionf6224b2956
First cut at :defer-install keyword4e6115214b
Extend capabilities of use-package-ensure-function45442561d3
Revert "Return `t' after calling `eval-after-load'"0517689cf3
Support multiple symbols passed to :afterf1fa65d773
:mode and :interpreter can now accept (rx ...) forms87a8ff6d69
Return `t' after calling `eval-after-load'61d6a8e449
Add autoload cookie for use-package-autoload-keymapa4c3244f30
Merge remote-tracking branch 'origin/pr/349'0905a7b1c7
Merge pull request from justbur/find-formc287aa3085
Merge pull request from justbur/imenu3f95d487d03
Merge pull request from raxod502/fix-use-package-defaults482c8e5728
Fix use-package-defaults8fa6e8823b
Unrevert "Add use-package-defaults"013425edeb
Revert "Add use-package-defaults"a1550a7746
Merge pull request from raxod502/use-package-defaults3dec23c086
Add use-package-defaultsc637f2be43
Merge pull request from raxod502/use-package-ensure-functione853355714
Add use-package-ensure-functionad8094c22d
Add new customization option `use-package-always-demand`dbf46d97be
Merge pull request from basil-conto/preface6c35742992
Merge pull request from tarsius/outlineba3064ed80
Merge pull request from tarsius/bind-later75e0cd93c5
Delay decision whether to use eval-after-load until run-time134ecb3c88
Support outline-minor-modeaad07daa8d
Increase :preface priority42b7a774cf
Merge pull request from phst/bug398baa9e25a6b
Declare package-read-all-archive-contentsc15c616eb1
Remove tests, which don’t work9688d2f64b
Don't allow implicit package name arg for binders65c7b42a14
Don't allow nil as a mode functionfc57b34299
Refactor pair normalizers; add tests for them5ed9a6b5a5
Remove obsolete mplist testsfc7fc42f13
Bump version to 2.3bcfb149517
Merge pull request from appleby/masteref0cbfdc73
Ensure package-pinned-packages is bound before referencing it4629e86240
Remove the use of a tab72452b5548
Merge pull request from ketbra/master5053f75e00
Make pin and ensure compatible811c99da52
Merge pull request from npostavs/state-noconst79c38c5184
Fix declare-function call: FILE must be a string71057bc20f
use-package-as-string: use noerror parameterbe7a0e4649
Don't pass a constant as the state758739e6db
Version 2.21f03bec96b
Merge pull request from justbur/bump-init59d34cf9ce
Move :init forms before :after and :demandc13ca927c2
Add function use-package-jump-to-package-form75bdb87833
Improve imenu supportff0a5e281d
Merge pull request from justbur/imenu2da08a04652
Fix imenu support for older versions1d6b3174f5
Merge pull request from justbur/imenu2b5668df20
Merge pull request from robario/patch-1d34fb2bdc9
Add imenu support for use-package forms858a7f9b7c
Fix to ignore load error caused via :after153b542421
Merge pull request from xuchunyang/fix-package-install3aa6aecb7f
Mark package as selected with package-installaf65fbea63
:map no longer accepts lists; only eval-after-load if nece...a1c4e6d0ab
Normalize some error textf150691c78
Only printing debug messages if use-package-verbose is `de...8e128b29f5
Merge pull request from ljos/master6ca19531bb
Repair :map handling in bind-key.elb0b5cfbfb2
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 still828563a756
Remove :bind-keymaps, and only apply :map bindings after load856e8ee245
Support multiples uses of :map with :bind23a61c8f6b
Add some variable settings to use-package-tests.el, thanks...4593f178e3
Merge pull request from alezost/keymap-doc-fix947345028e
Add another `declare'c65a334276
Handle :unless correctly543935482f
Add a comment about a recent change416096bfdc
Merge pull request from waymondo/master57af7dd571
Merge pull request from dudebout/patch-1ee8ac83641
Add an autoload cookie for `use-package'32748d0657
Upper casing Cs corresponding to Ctrl2b967a3c18
Merge pull request from thierryvolpiatto/fix_package_installc5e98d87da
Ensure package-install support a second argument5cbfd926c5
When :ensure is used install package as a selected package9e2dcf8655
Merge pull request from kovrik/fix-pin-performancecc4333a1be
Merge pull request from phillord/fix/always-pin-typoba4aeb600d
Fix errant variable name3f48ff4648
Merge pull request from phillord/feature/always-pinf4a01f3e00
Add new option `-always-pin'c42e3f5669
Change condition that checks if package has been initialized19474a1711
Do not package-initialize on each :pin38c170e17b
Merge pull request from kovrik/issue-2993ce3b3a98c
Add a missing commab4ec5abad2
Add a PREDICATE option to bind-key, and :filter to `bind-k...cd867dfe2f
allow string values in cons for :bind keywords95038f96f1
Guard against a case where :load-paths is nild1c78a646c
Move :pin out of macro expansion phase fixes308e4e3f2c
Move :pin out of macro expansion phaseed2e85e4a7
Use cl-mapcan rather than apply 'nconc; thanks wasamasa189c8b5422
Merge pull request from kovrik/byte-compile-ensure-fixd9f37b4f0c
Install packages when byte-compiling (fix by @npostavs)b1f442c15b
Apply a fix from npostavs relating to734c5e7119
Merge pull request from kovrik/master96add4d4c0
Merge pull request from phillord/feature/after564f9bb74b
Support for after keywordac47f783da
Move :ensure option from macro expansion phase to runtime ...ff8bdfcdca
Bump version to 2.15dffc8c7cf
Merge pull request from waymondo/extend-bind-handler6298e7e477
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-package2276ed7607
Merge pull request from matklad/masterd514592746
fix quotation errorfa36aa682c
Merge pull request from npostavs/string-packages3cdc6c39bf
Re-add support for string package names282241cf7d
Merge pull request from nickalcock/master1cbcd66ebe
Support :bind (:map '(...))269b1080ae
Merge pull request from thomasf/masterd81390f6de
Handle the case when keymap has a broken documentationd3f47a7401
Merge pull request from killdash9/keymap4502a5ecb1
Merge pull request from syl20bnr/fix_hook_injection90e3f48111
Fix calls to run-hooks for :init and :config injected hooks6f0586ef52
Refresh package.el archives if package is missinga53b5062c4
bind-keymap fixesf1a00054b1
Keymap bindings must be interactivec850481d06
Failed to require a package is just a messaged1e91745b3
Minor fix to :diminishc3a4b03b5f
Fix a bug in the :delight support800669d9da
Add :delight support, thanks to darkfeline on GitHub80aad34a39
Add new customization use-package-always-ensure348bc57141
unbind-key now removes key from personal-keybindings47586c714e
Fix file headers53bb14cfb7
Add autoload stanzas to bind-keyd70d70843a
Correction to an eval-after-load expansion8c00f108bf
Change use-package to use bind-keys and bind-keys*012c37d722
Change bind-key* behavior to mimic bind-keys*029e46a874
Whitespace cleanupseb6b81dfec
Allow :map in bind-keys to accept multiple maps2abf565af2
:pin should return `t'e7f3f97a71
Modular support appears to be workingf1ab3291f6
Began work on modular handling of keywords94ad68330d
Rename use-package-with-elapsed-timer at an internal nameb30b279a99
Remove code I did not intend to commitf45c4f0edd
Merge pull request from npostavs/macroexp-prognc2f5b2479d
Fix some docstrings3467e4eaa6
use-package-progn: replace with macroexp-progn23ec1ca719
Merge pull request from npostavs/name-keymapf5f4102ca1
get-binding-description: return keymap symbol1b6605652c
Use push instead of add-to-list38f907cc5d
Remove a hack that is not needed anymore2778e85a39
macroexpand nested uses of use-package in :init and :config19ab94cf39
Wrap the :preface in an eval-and-compile block8769309fbf
Remove a use of macroexpand658d103b70
Make a warning more specific5787ff074c
More work to silence the byte-compiler46435d7b84
Other minor improvements for byte-compilingd2679595fa
Several minor improvements and fixeseda8246fc6
Change some code for consistency's sakec819beebf0
Merge pull request from killdash9/keymap8d7a0c2185
minor fixes to get bind-keymap working in 2.0771f2edc83
Always return t on a successful init-time loaddb69a3f81c
Add to the load-path before the :preface9e35dd95d9
More fixes related to byte-compilation34bc31e1d4
A few changes for byte-compilation1fe2c1c056
:defer now accepts an optional number of seconds302c008b45
Permit minimal expansion of macro bodies, and other fixes21a091f17a
Collapse some whitespace05c02aee86
Allow vectors to be passed to :bind again55d6bb00ca
Add code to workaround an inefficiency with eval-after-load4029030eb5
Output Compiling message only if verbose is enabledb75c1cb47e
Allow :pin to accept a symbol5c85433fac
Relax a path normalization checka203028871
Correct an erroneous symbol referencea66d1952e3
Update docstring for :disabled1c5f9247aa
Merge pull request from npostavs/eval-after-name98b642b794
Undo an erroneous change199399e552
Add -hook to the injected hooks03ea5d6dbf
Restore an earlier fix to9385ab417a
BREAKING CHANGE: Remove :idle and :idle-priority1f20acfd57
use--package: eval-after-load name81f5e48d32
Support optional injection of hooks, for Spacemacsf637380fed
Add :preface, occurring before everything except :disabledb4a00d2eb5
Some minor code reformatting71f894fe78
Fix to :ensure normalizationa6edb08122
Merge pull request from thomasf/master9748de389c
Merge pull request from npostavs/warninge68d00d525
Fix :ensure value interpretation27cba067ee
use-package-expand: use display-warning4ae584f3ff
Begin refactoring for 2.0; NOTE: BREAKING CHANGES0f76d766d9
Many stylistics cleanups and simplificationsa4a696572d
Revert "Don't add autoload for existing commands"30da0769bf
Stylistic changesf8bf1b0986
Minor style editsf334f230eb
Minor changesaa6e3f47c7
Show more informative errors when they occur24ace89e5a
Merge pull request from tarsius/master719115cf47
Allow using expanded macro without loading feature89a957efa9
Merge pull request from killdash9/keymapb8f0799ce8
Passing t into keymap function60029cb0ab
Merge pull request from killdash9/keymap7252e29ec4
Merge pull request from thiagowfx/patch-17db9b920df
fix small typo (key > keymap)1ae2236854
:bind-keymap - bind a key prefix to an autoloaded package ...647950fd16
Merge pull request from vermiculus/master5a5aeca797
Do not quote lambda expressionsf8db1f1740
Merge pull request from YoungFrog/fixautoloads99642725c1
Merge pull request from peterhoeg/masterb3bf1b2587
Check if package-archives are valid when pinninga2b23f8326
Don't add autoload for existing commands435d4b4078
pure cleanup18f04bfb99
Merge pull request from peterhoeg/masterfe7fe61528
support for pinning package to archive6570447a05
Merge pull request from Silex/master0bfa356148
Merge pull request from waymondo/mastere8ce1b20ca
add :bind* keyword for `bind-key*`f07ecde5a1
Fix "compiling" typo4c927efbd5
Merge pull request from thomasf/master351c102010
Display which package that has compile errors4cf50ffbca
Merge pull request from tarsius/master31bb0cde56
assume the declare-function macro exists91953b08e0
Merge pull request from BernardHurley/master471869269a
bind-keys macro changed to allow prefix map to have a menu...3cbf510468
Merge pull request from npostavs/desc-vectorb3e96443ad
bind-key: cleanupde9f6814e7
bind-key: no vector keys in personal-keybindings91b439c8e7
personal-keybindings: add docstring0d0e8db731
Merge pull request from alezost/bind-keysc4ebcaa953
Add bind-keys* macro2d67e1dca1
Merge pull request from thomasf/master1c82b2377f
Don't abort compiling if package loading failsa4939e7ef3
Revert "Merge pull request from alexko/master"8c04377608
Merge pull request from alexko/mastera9ba368fa7
Merge pull request from YoungFrog/fix-mult-mode6d02a320f6
if package can't be located, treat it the same way as disa...4e80d29daf
Eval backquote earlier and support non-`progn' listsd63972eb29
Merge pull request from YoungFrog/keynameeval9ca3690b59
* bind-key.el (bind-key): don't eval key-name at macro exp...978094589e
Merge pull request from npostavs/bind-vectors01196c81ac
bind-keys: bind directly to prefix-map869ff53ab9
bind-keys: ,@(when map (list map)) => map053a1514a1
fix typoefe2419a22
Merge pull request from YoungFrog/idle-interval0ab0d77691
Add new option use-package-idle-intervaldb9cba9a31
Merge pull request from ffevotte/idle-priority6b30c15823
:idle-priority keyword to change the running order of idle...c7ff480095
Merge pull request from tarsius/masterf32d24350c
use-package-font-lock-keywords: add use-package-with-elaps...2d7ecd867a
use-package-with-elapsed-timer: add declare indent ruleea3a475d0b
use-package-with-elapsed-timer: respect option at runtime11195fa213
Merge pull request from npostavs/bind-vectorf0776c2aeb
let bind-key accept vectors, add docstring0f7d54d1db
Merge pull request from Fuco1/variable-col-widthe23bce4c2f
Merge pull request from Fuco1/special-form-desc38d4d2e2da
Add variable column widthf90d65e149
Add better descriptions for lambdas, closures, keymapsaec1268960
Merge pull request from Fuco1/bind-keys7d0779114e
Add `bind-keys` macrodd937c4e36
Move tests to separate file2676ff5d95
Allow multiple forms after keywords58ca076647
stop describe-personal-keybindings adding trailing space6ca942d780
Merge pull request from aspiers/best-practices21cabfd334
fix bind-key URL (fixes)8f7e878caf
add 'use-package-' prefix to 'with-elapsed-timer'283653ff4b
Merge pull request from aspiers/hyperlink-all-bindingsebe59c7da1
Merge pull request from aspiers/docs2dbee4cd75
fix DRY violation by only having documentation in one place984850be80
hyperlink functions in Comments column25ea8ea840
Merge pull request from aspiers/short-mode75206228dd
allow :mode and :interpreter to accept a string7de292c0e9
Merge pull request from tarsius/defund588d0b382
use-package: use defun as lisp-indent-functionc3704ac36e
Add a :demand directive, to override deferred loading ()9d395a4019
fboundp is a function, not a variabled4bf41eb82
Merge pull request from dabrahams/patch-1f3e9e871a6
Backward compatibility with emacs-22.190ca8adc41
Default use-package-verbose to nilee0060c3a7
Merge pull request from Silex/masterc7560f7be7
Remove el-get supportf3ed771481
Merge pull request from aethanyc/add-missing-keyword36cf13ef47
Add :pre-load to use-package-keywordsc3cbe3a69a
Merge pull request from PhilHudson/mastera116fc2136
Properly enable runtime dependency for :idle stanza (issue)e8b5ea3b70
Merge pull request from npostavs/comma94072fba77
remove extra comma (added by026c46c
)e367788005
Merge pull request from npostavs/cleanup026c46c057
let with-elapsed-timer return last form3d871c7994
make `with-elapsed-timer' hygienic61fd933807
with-elapsed-timer: only check verbosity once9921a76e86
remove after-init-hook for override-global-mode29abf59bad
macroexpand not needed119a30f2ba
cl not needed since flet was removed in 82903da901272a8c7
Merge pull request from phillord/first-keywordd6a5c43915
Merge pull request from npostavs/quasiquote8c1c572857
use plist-get-value for all non-sexp argsdd20db220d
plist-get-value treats arg as backquoted9c9329f522
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 arguments6fdeb0c044
Merge pull request from npostavs/eval-after-namec6d79d2cb4
pass name (not name-string) to eval-after-load6efc084cdf
Merge pull request from aethanyc/fix-highlightbbf2b5034b
Fix highlight use-package for Emacs snapshot749295c052
Merge pull request from npostavs/hilite-redux71150a79c5
Merge pull request from aethanyc/improve-output-buffer8de5c29ed5
Improve (describe-personal-keybindings) output57f80d4ff1
highlight use-package before typing package namea56244378f
Merge pull request from npostavs/master48975f791b
also check `byte-compile-current-file' for compile time lo...aa357bc96a
Changed :first to :pre-load3d0b14eac2
Merge pull request from npostavs/mastera76d16730d
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/master2a1e7e418a
refine use-package highlighting regexp3a4556a906
Merge pull request from purcell/patch-2a5859a7c8d
Fix initial line to satisfy package.elf98b9d08fe
Validate keywords. Error if any keyword is unrecognizeded2b339783
Merge pull request from phillord/ensure-doc01cfa0358f
Added documentation to use-package macro7161c09b30
Documentation added for :ensure keyworde38cfff8b6
Merge pull request from milkypostman/master19c65ea3ab
package header should, hold, sold be the full filename + ext2da6318930
Merge pull request from tarsius/font-lock9741bdb189
Merge pull request from tarsius/master5b696d1918
fontify use-package formd2460b9276
add dots; cleanup whitespacea5e4a6d938
quiet byte-compiler; ensure package.el is loaded82903da9d8
don't use obsolete flet17a1a4659a
enforce use of spaces for indentation5a799db5a1
Merge pull request from purcell/patch-1b901618607
Add Package-Requires header for ELPA installationsef6b97c29f
Merge pull request from npostavs/easy-diminish0df0e18c4b
needed extra layer of nesting for diminish calls984e0f1044
Merge pull request from npostavs/easy-diminish094830716d
Merge pull request from npostavs/bind-override2abe5f9480
let :diminish "string" guess correct mode symbol09b9ef3ae3
let bind-key* override minor modes with emulation-mode-map...26bfd9ce2f
Merge pull request from PhilHudson/master34d3f115dd
Runtime client code independence redux1758c5faea
Corrected a typod718c0cefa
Merge pull request from phillord/master52a48a77c3
Merge branch 'master' of https://github.com/jwiegley/use-p...35685f120b
idle initiation of packages49d25ce022
Merge pull request from phillord/masteraa8d5fab19
Added minimum load time display option447004740c
Merge pull request from bdd/masterc680b57ebf
Cleanup trailing whitespace1a65b11731
Merge pull request from PhilHudson/macroexpand593f18aff5
Macroexpand quoted eval-after-load block earlyc4cf68f6e4
Merge pull request from phillord/mastereaf9677409
Support packages where autoload and elpa name are different445d0245fc
Merge pull request from phillord/master8d72a6c1d6
Documentation for the use-package macrob8406ce9f0
Reverting "Documentation for the use-package macro."abc0ebc92d
Documentation for the use-package macro75b30bfd9b
Merge pull request from phillord/masterc28874e956
ELPA package support2a63e3f2ef
Merge pull request from PhilHudson/masterfbead83731
Support diminishing to a replacement string as well as to ...8b93cee99b
Use-package now accepts function as argumentfe7997d2b7
Only use user-site-lisp-directory if defined89a844fd9c
Correct return value from with-elapsed-timer28c6509148
More updates to support el-getece5f93919
Byte-compilation related fixd9f6c0f370
Added :pre-init82a8d10a46
Establish autoloads after :initbdf1505f44
Added :mode and :interpreter keywords0736be8e67
Add a note about how to use :load-pathf6d65ce876
If :load-path is absolute, don't expand it0bde0b4c02
Die typos, diedebf2c23f3
Fixed a typoaea35b2370
Minor reformatting80b010a748
Minor grammatical nit334f6e085e
Integrated support for working with el-get01c8245b29
Make use-package-verbose customizable4bd492f606
Have loading timer include time to requirebf6c23044b
Fixed a typo in bind-key.el31ea42e15e
README and other updates # Conflicts: # etc/NEWS # lisp/external-completion.el
4491 lines
163 KiB
Plaintext
4491 lines
163 KiB
Plaintext
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-<fingerprint>.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 '<prior>' and '<next>'.
|
||
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 '<backtab>' 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 <Delete> function key
|
||
(a.k.a. <deletechar>). 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 <Delete> 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 <host> 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 <open>, C-x C-f, <menu-bar> <file> <new-file>.
|
||
|
||
This has been changed to:
|
||
|
||
It is bound to <open> 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 <left>' and 'C-c <right>' 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 <bridge> {john} I am not on IRC
|
||
|
||
to be reformatted into
|
||
|
||
09:47 <john> 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 '<mouse-2>'. 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 <Delete> 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-<up>' or
|
||
'M-<down>' 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-<up>' and 'M-<down>' 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 <up>') is like 'minibuffer-complete'
|
||
but completes on the history items instead of the default completion
|
||
table. 'minibuffer-complete-defaults' ('C-x <down>') 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-2>' ('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 <video> elements with an xwidget. Note that this is
|
||
experimental; it is known to crash Emacs on some systems, and just
|
||
doesn't work on other systems. Also see etc/PROBLEMS.
|
||
|
||
+++
|
||
*** New user option 'eww-url-transformers'.
|
||
These are used to alter an URL before using it. By default it removes
|
||
the common "utm_" trackers from URLs.
|
||
|
||
** Find-Dired
|
||
|
||
---
|
||
*** New command 'find-dired-with-command'.
|
||
This enables users to run 'find-dired' with an arbitrary command,
|
||
enabling running commands previously unsupported and also enabling new
|
||
commands to be built on top.
|
||
|
||
** Gnus
|
||
|
||
+++
|
||
*** Tool bar changes in Gnus/Message.
|
||
There were previously two styles of tool bars available in Gnus and
|
||
Message, referred to as 'gnus-summary-tool-bar-retro',
|
||
'gnus-group-tool-bar-retro' and 'message-tool-bar-retro', and
|
||
'gnus-summary-tool-bar-gnome', 'gnus-group-tool-bar-gnome' and
|
||
'message-tool-bar-gnome'. The "retro" tool bars have been removed (as
|
||
well as the icons used), and the "Gnome" tool bars are now the only
|
||
pre-defined toolbars.
|
||
|
||
---
|
||
*** 'gnus-summary-up-thread' and 'gnus-summary-down-thread' bindings removed.
|
||
The 'gnus-summary-down-thread' binding to "M-C-d" was shadowed by
|
||
'gnus-summary-read-document', and these commands are also available on
|
||
"T-u" and "T-d" respectively.
|
||
|
||
---
|
||
*** Gnus now uses a variable-pitch font in the headers by default.
|
||
To get the monospace font back, you can put something like the
|
||
following in your ".gnus" file:
|
||
|
||
(set-face-attribute 'gnus-header nil :inherit 'unspecified)
|
||
|
||
---
|
||
*** The default value of 'gnus-treat-fold-headers' is now 'head'.
|
||
|
||
---
|
||
*** New face 'gnus-header'.
|
||
All other 'gnus-header-*' faces inherit from this face now.
|
||
|
||
+++
|
||
*** New user option 'gnus-treat-emojize-symbols'.
|
||
If non-nil, symbols that have an emoji representation will be
|
||
displayed as emojis. The default is nil.
|
||
|
||
+++
|
||
*** New command 'gnus-article-emojize-symbols'.
|
||
This is bound to 'W D e' and will display symbols that have emoji
|
||
representation as emojis.
|
||
|
||
+++
|
||
*** New mu backend for gnus-search.
|
||
Configuration is very similar to the notmuch and namazu backends. It
|
||
supports the unified search syntax.
|
||
|
||
---
|
||
*** 'gnus-html-image-cache-ttl' is now a seconds count.
|
||
Formerly it was a pair of numbers '(A B)' that represented 65536*A + B,
|
||
to cater to older Emacs implementations that lacked bignums.
|
||
The older form still works but is undocumented.
|
||
|
||
** Rmail
|
||
|
||
---
|
||
*** Rmail partial summaries can now be applied one on top of the other.
|
||
You can now narrow the set of messages selected by Rmail summary's
|
||
criteria (recipients, topic, senders, etc.) by making a summary of the
|
||
already summarized messages. For example, invoking
|
||
'rmail-summary-by-senders', followed by 'rmail-summary-by-topic' will
|
||
produce a summary where both the senders and the topic are according
|
||
to your selection. The new user option
|
||
'rmail-summary-progressively-narrow' controls whether the stacking of
|
||
the filters is in effect; customize it to a non-nil value to enable
|
||
this feature.
|
||
|
||
---
|
||
*** New Rmail summary: by thread.
|
||
The new command 'rmail-summary-by-thread' produces a summary of
|
||
messages that belong to a single thread of discussion.
|
||
|
||
** EIEIO
|
||
|
||
+++
|
||
*** 'slot-value' can now be used to access slots of 'cl-defstruct' objects.
|
||
|
||
** Align
|
||
|
||
---
|
||
*** Alignment in 'text-mode' has changed.
|
||
Previously, 'M-x align' didn't do anything, and you had to say 'C-u
|
||
M-x align' for it to work. This has now been changed. The default
|
||
regexp for 'C-u M-x align-regexp' has also been changed to be easier
|
||
for inexperienced users to use.
|
||
|
||
** Help
|
||
|
||
---
|
||
*** New mode, 'emacs-news-view-mode', for viewing the NEWS file.
|
||
This mode is used by the 'C-h N' command, and adds buttons to manual
|
||
entries and symbol references.
|
||
|
||
---
|
||
*** New user option 'help-link-key-to-documentation'.
|
||
When this option is non-nil (which is the default), key bindings
|
||
displayed in the "*Help*" buffer will be linked to the documentation
|
||
for the command they are bound to. This does not affect listings of
|
||
key bindings and functions (such as 'C-h b').
|
||
|
||
** Info-look
|
||
|
||
---
|
||
*** info-look specs can now be expanded at run time instead of a load time.
|
||
The new ':doc-spec-function' element can be used to compute the
|
||
':doc-spec' element when the user asks for info on that particular
|
||
mode (instead of at load time).
|
||
|
||
** Ansi-color
|
||
|
||
---
|
||
*** Support for ANSI 256-color and 24-bit colors.
|
||
256-color and 24-bit color codes are now handled by ANSI color
|
||
filters and displayed with the specified color.
|
||
|
||
** Term-mode
|
||
|
||
---
|
||
*** New user option 'term-bind-function-keys'.
|
||
If non-nil, 'term-mode' will pass the function keys on to the
|
||
underlying shell instead of using the normal Emacs bindings.
|
||
|
||
---
|
||
*** Support for ANSI 256-color and 24-bit colors, italic and other fonts.
|
||
'term-mode' can now display 256-color and 24-bit color codes. It can
|
||
also handle ANSI codes for faint, italic and blinking text, displaying
|
||
it with new 'term-{faint,italic,slow-blink,fast-blink}' faces.
|
||
|
||
** Project
|
||
|
||
+++
|
||
*** 'project-find-file' and 'project-or-external-find-file' can include all.
|
||
The commands 'project-find-file' and 'project-or-external-find-file'
|
||
now accept a prefix argument, which is interpreted to mean "include
|
||
all files".
|
||
|
||
+++
|
||
*** New command 'project-list-buffers' bound to 'C-x p C-b'.
|
||
This command displays a list of buffers from the current project.
|
||
|
||
+++
|
||
*** 'project-kill-buffers' can display the list of buffers to kill.
|
||
Customize the user option 'project-kill-buffers-display-buffer-list'
|
||
to enable the display of the buffer list.
|
||
|
||
*** New user option 'project-vc-extra-root-markers'.
|
||
Use it to add detection of nested projects (inside a VCS repository),
|
||
or projects outside of VCS repositories.
|
||
|
||
As a consequence, the 'VC project backend' is formally renamed to
|
||
'VC-aware project backend'.
|
||
|
||
** Xref
|
||
|
||
+++
|
||
*** New command 'xref-go-forward'.
|
||
It is bound to 'C-M-,' and jumps to the location where 'xref-go-back'
|
||
('M-,', also known as 'xref-pop-marker-stack') was invoked previously.
|
||
|
||
+++
|
||
*** 'xref-query-replace-in-results' prompting change.
|
||
This command no longer prompts for FROM when called without prefix
|
||
argument. This makes the most common case faster: replacing entire
|
||
matches.
|
||
|
||
+++
|
||
*** New command 'xref-find-references-and-replace' to rename one identifier.
|
||
|
||
---
|
||
*** New variable 'xref-current-item' (renamed from a private version).
|
||
|
||
---
|
||
*** New function 'xref-show-xrefs'.
|
||
|
||
** File notifications
|
||
|
||
+++
|
||
*** The new command 'file-notify-rm-all-watches' removes all file notifications.
|
||
|
||
** Sql
|
||
|
||
---
|
||
*** Sql now supports sending of passwords in-process.
|
||
To improve security, if an sql product has ':password-in-comint' set
|
||
to t, a password supplied via the minibuffer will be sent in-process,
|
||
as opposed to via the command-line.
|
||
|
||
** Image Mode
|
||
|
||
+++
|
||
*** New command 'image-transform-fit-to-window'.
|
||
This command fits the image to the current window by scaling down or
|
||
up as necessary. Unlike 'image-transform-fit-both', this does not
|
||
only scale the image down, but up as well. It is bound to 's w' in
|
||
Image Mode by default.
|
||
|
||
---
|
||
*** New command 'image-mode-wallpaper-set'.
|
||
This command sets the desktop background to the current image. It is
|
||
bound to 'W' by default.
|
||
|
||
+++
|
||
*** 'image-transform-fit-to-{height,width}' are now obsolete.
|
||
Use the new command 'image-transform-fit-to-window' instead.
|
||
The keybinding for 'image-transform-fit-to-width' is now 's i'.
|
||
|
||
---
|
||
*** User option 'image-auto-resize' can now be set to 'fit-window'.
|
||
This works like 'image-transform-fit-to-window'.
|
||
|
||
---
|
||
*** New user option 'image-auto-resize-max-scale-percent'.
|
||
The new 'fit-window' option will never scale an image more than this
|
||
much (in percent). It is nil by default, which means no limit.
|
||
|
||
---
|
||
*** New user option 'image-text-based-formats'.
|
||
This controls whether or not to show a message when opening certain
|
||
image formats saying how to edit it as text. The default is to show
|
||
this message for SVG and XPM.
|
||
|
||
+++
|
||
*** New commands: 'image-flip-horizontally' and 'image-flip-vertically'.
|
||
These commands horizontally and vertically flip the image under point,
|
||
and are bound to 'i h' and 'i v', respectively.
|
||
|
||
+++
|
||
*** New command 'image-transform-set-percent'.
|
||
It allows setting the image size to a percentage of its original size,
|
||
and is bound to 's p' in Image mode.
|
||
|
||
+++
|
||
*** 'image-transform-original' renamed to 'image-transform-reset-to-original'.
|
||
The old name was confusing, and is now an obsolete function alias.
|
||
|
||
+++
|
||
*** 'image-transform-reset' renamed to 'image-transform-reset-to-initial'.
|
||
The old name was confusing, and is now an obsolete function alias.
|
||
|
||
** Images
|
||
|
||
+++
|
||
*** Users can now add special image conversion functions.
|
||
This is done via 'image-converter-add-handler'.
|
||
|
||
** Image-Dired
|
||
|
||
+++
|
||
*** 'image-dired-image-mode' is now based on 'image-mode'.
|
||
This avoids converting images in the background, and makes Image-Dired
|
||
noticeably faster. New keybindings from 'image-mode' are now
|
||
available in the "*image-dired-display-image*" buffer; press '?' or
|
||
'h' in that buffer to see the full list.
|
||
|
||
---
|
||
*** Navigation and marking commands now work in image display buffer.
|
||
The following new bindings have been added:
|
||
- 'n', 'SPC' => 'image-dired-display-next'
|
||
- 'p', 'DEL' => 'image-dired-display-previous'
|
||
- 'm' => 'image-dired-mark-thumb-original-file'
|
||
- 'd' => 'image-dired-flag-thumb-original-file'
|
||
- 'u' => 'image-dired-unmark-thumb-original-file'
|
||
|
||
---
|
||
*** New command 'image-dired-unmark-all-marks'.
|
||
It removes all marks from all files in the thumbnail and the
|
||
associated Dired buffer, and is bound to 'U' in the thumbnail and
|
||
display buffer.
|
||
|
||
---
|
||
*** New command 'image-dired-do-flagged-delete'.
|
||
It deletes all flagged files, and is bound to 'x' in the thumbnail
|
||
buffer. It replaces the command 'image-dired-delete-marked', which is
|
||
now an obsolete alias.
|
||
|
||
---
|
||
*** New command 'image-dired-copy-filename-as-kill'.
|
||
It copies the name of the marked or current image to the kill ring,
|
||
and is bound to 'w' in the thumbnail buffer.
|
||
|
||
---
|
||
*** New command 'image-dired-wallpaper-set'.
|
||
This command sets the desktop background to the image at point in the
|
||
thumbnail buffer. It is bound to 'W' by default.
|
||
|
||
---
|
||
*** 'image-dired-slideshow-start' is now bound to 'S'.
|
||
It is bound in both the thumbnail and display buffer, and no longer
|
||
prompts for a timeout; use a numerical prefix (e.g. 'C-u 8 S') to set
|
||
the timeout.
|
||
|
||
---
|
||
*** New user option 'image-dired-marking-shows-next'.
|
||
If this option is non-nil (the default), marking, unmarking or
|
||
flagging an image in either the thumbnail or display buffer shows the
|
||
next image.
|
||
|
||
---
|
||
*** New face 'image-dired-thumb-flagged'.
|
||
If 'image-dired-thumb-mark' is non-nil (the default), this face is
|
||
used for images that are flagged for deletion in the Dired buffer
|
||
associated with Image-Dired.
|
||
|
||
---
|
||
*** Image information is now shown in the header line of the thumbnail buffer.
|
||
This replaces the message that most navigation commands in the
|
||
thumbnail buffer used to show at the bottom of the screen.
|
||
|
||
---
|
||
*** New specifiers for 'image-dired-display-properties-format'.
|
||
This is used to format the new header line. The new specifiers are:
|
||
"%d" for the name of the directory that the file is in, "%n" for
|
||
file's number in the thumbnail buffer, and "%s" for the file size.
|
||
|
||
The default format has been updated to use this. If you prefer the
|
||
old format, add this to your Init file:
|
||
|
||
(setopt image-dired-display-properties-format "%b: %f (%t): %c")
|
||
|
||
---
|
||
*** New faces for the header line of the thumbnail buffer.
|
||
These faces correspond to different parts of the header line, as
|
||
specified in 'image-dired-display-properties-format':
|
||
- 'image-dired-thumb-header-directory-name'
|
||
- 'image-dired-thumb-header-file-name'
|
||
- 'image-dired-thumb-header-file-size'
|
||
- 'image-dired-thumb-header-image-count'
|
||
|
||
---
|
||
*** PDF support.
|
||
Image-Dired now displays thumbnails for PDF files. Type 'RET' on a
|
||
PDF file in the thumbnail buffer to visit the corresponding PDF.
|
||
|
||
---
|
||
*** Support GraphicsMagick command line tools.
|
||
Support for the GraphicsMagick command line tool ("gm") has been
|
||
added, and is used instead of ImageMagick when it is available.
|
||
|
||
---
|
||
*** Support Thumbnail Managing Standard v0.9.0 (Dec 2020).
|
||
This standard allows sharing generated thumbnails across different
|
||
programs. Version 0.9.0 adds two larger thumbnail sizes: 512x512 and
|
||
1024x1024 pixels. See the user option 'image-dired-thumbnail-storage'
|
||
to use it; it is not enabled by default.
|
||
|
||
---
|
||
*** Reduce dependency on external "exiftool" command.
|
||
The 'image-dired-copy-with-exif-file-name' no longer requires an
|
||
external "exiftool" command to be available. The user options
|
||
'image-dired-cmd-read-exif-data-program' and
|
||
'image-dired-cmd-read-exif-data-options' are now obsolete.
|
||
|
||
---
|
||
*** Support for bookmark.el.
|
||
The command 'bookmark-set' (bound to 'C-x r m') is now supported in
|
||
the thumbnail view, and will create a bookmark that opens the current
|
||
directory in Image-Dired.
|
||
|
||
---
|
||
*** The 'image-dired-slideshow-start' command no longer prompts.
|
||
It no longer inconveniently prompts for a number of images and a
|
||
delay: it runs indefinitely, but stops automatically on any command.
|
||
You can set the delay with a prefix argument, or a negative prefix
|
||
argument to prompt for a delay. Customize the user option
|
||
'image-dired-slideshow-delay' to change the default from 5 seconds.
|
||
|
||
+++
|
||
*** 'image-dired-show-all-from-dir-max-files' increased to 1000.
|
||
This user option controls asking for confirmation when starting
|
||
Image-Dired in a directory with many files. Since Image-Dired creates
|
||
thumbnails in the background in recent versions, this is not as
|
||
important as it used to be. You can now also customize this option to
|
||
nil to disable this confirmation completely.
|
||
|
||
---
|
||
*** 'image-dired-thumb-size' increased to 128.
|
||
|
||
+++
|
||
*** 'image-dired-db-file' renamed to 'image-dired-tags-db-file'.
|
||
|
||
---
|
||
*** 'image-dired-display-image-mode' renamed to 'image-dired-image-mode'.
|
||
The corresponding keymap is now named 'image-dired-image-mode-map'.
|
||
|
||
+++
|
||
*** Some commands have been renamed to be shorter.
|
||
- 'image-dired-display-thumbnail-original-image' has been renamed to
|
||
'image-dired-display-this'.
|
||
- 'image-dired-display-next-thumbnail-original' has been renamed to
|
||
'image-dired-display-next'.
|
||
- 'image-dired-display-previous-thumbnail-original' has been renamed
|
||
to 'image-dired-display-previous'.
|
||
The old names are now obsolete aliases.
|
||
|
||
---
|
||
*** 'image-dired-thumb-{height,width}' are now obsolete.
|
||
Customize 'image-dired-thumb-size' instead, which will set both the
|
||
height and width.
|
||
|
||
---
|
||
*** HTML image gallery generation is now obsolete.
|
||
The 'image-dired-gallery-generate' command and these user options are
|
||
now obsolete: 'image-dired-gallery-thumb-image-root-url',
|
||
'image-dired-gallery-hidden-tags', 'image-dired-gallery-dir',
|
||
'image-dired-gallery-image-root-url'.
|
||
|
||
---
|
||
*** 'image-dired-rotate-thumbnail-{left,right}' are now obsolete.
|
||
Instead, use commands 'image-dired-refresh-thumb' to generate a new
|
||
thumbnail, or 'image-rotate' to rotate the thumbnail without updating
|
||
the thumbnail file.
|
||
|
||
+++
|
||
*** Some commands and user options are now obsolete.
|
||
Since 'image-dired-display-image-mode' is now based on 'image-mode',
|
||
some commands and user options are no longer needed and are now obsolete:
|
||
'image-dired-cmd-create-temp-image-options',
|
||
'image-dired-cmd-create-temp-image-program',
|
||
'image-dired-display-current-image-full',
|
||
'image-dired-display-current-image-sized',
|
||
'image-dired-display-window-height-correction',
|
||
'image-dired-display-window-width-correction',
|
||
'image-dired-temp-image-file'.
|
||
|
||
** Dired
|
||
|
||
---
|
||
*** New user option 'dired-omit-lines'.
|
||
This is used by 'dired-omit-mode', and now allows you to hide based on
|
||
other things than just the file names.
|
||
|
||
+++
|
||
*** New user option 'dired-mouse-drag-files'.
|
||
If non-nil, dragging file names with the mouse in a Dired buffer will
|
||
initiate a drag-and-drop session allowing them to be opened in other
|
||
programs.
|
||
|
||
+++
|
||
*** New user option 'dired-free-space'.
|
||
Dired will now, by default, include the free space in the first line
|
||
instead of having it on a separate line. To get the previous behavior
|
||
back, say:
|
||
|
||
(setq dired-free-space 'separate)
|
||
|
||
---
|
||
*** New user option 'dired-make-directory-clickable'.
|
||
If non-nil (which is the default), hitting 'RET' or 'mouse-1' on
|
||
the directory components at the directory displayed at the start of
|
||
the buffer will take you to that directory.
|
||
|
||
---
|
||
*** Search and replace in Dired/Wdired supports more regexps.
|
||
For example, the regexp ".*" will match only characters that are part
|
||
of the file name. Also "^.*$" can be used to match at the beginning
|
||
of the file name and at the end of the file name. This is used only
|
||
when searching on file names. In Wdired this can be used when the new
|
||
user option 'wdired-search-replace-filenames' is non-nil (which is the
|
||
default).
|
||
|
||
** Bookmarks
|
||
|
||
---
|
||
*** 'list-bookmarks' now includes a type column.
|
||
Types are registered via a 'bookmark-handler-type' symbol property on
|
||
the jumping function.
|
||
|
||
+++
|
||
*** 'bookmark-sort-flag' can now be set to 'last-modified'.
|
||
This will display bookmark list from most recently set to least
|
||
recently set.
|
||
|
||
---
|
||
*** When editing a bookmark annotation, 'C-c C-k' will now cancel.
|
||
It is bound to the new command 'bookmark-edit-annotation-cancel'.
|
||
|
||
---
|
||
*** New user option 'bookmark-fringe-mark'.
|
||
This option controls the bitmap used to indicate bookmarks in the
|
||
fringe (or nil to disable showing this marker).
|
||
|
||
** Exif
|
||
|
||
---
|
||
*** New function 'exif-field'.
|
||
This is a convenience function to extract the field data from
|
||
'exif-parse-file' and 'exif-parse-buffer'.
|
||
|
||
** Xwidgets
|
||
|
||
---
|
||
*** New user option 'xwidget-webkit-buffer-name-format'.
|
||
This option controls how xwidget-webkit buffers are named.
|
||
|
||
---
|
||
*** New user option 'xwidget-webkit-cookie-file'.
|
||
This option controls whether the xwidget-webkit buffers save cookies
|
||
set by web pages, and if so, in which file to save them.
|
||
|
||
+++
|
||
*** New minor mode 'xwidget-webkit-edit-mode'.
|
||
When this mode is enabled, self-inserting characters and other common
|
||
web browser shortcut keys are redefined to send themselves to the
|
||
WebKit widget.
|
||
|
||
+++
|
||
*** New minor mode 'xwidget-webkit-isearch-mode'.
|
||
This mode acts similarly to incremental search, and allows searching
|
||
the contents of a WebKit widget. In xwidget-webkit mode, it is bound
|
||
to 'C-s' and 'C-r'.
|
||
|
||
+++
|
||
*** New command 'xwidget-webkit-browse-history'.
|
||
This command displays a buffer containing the page load history of
|
||
the current WebKit widget, and allows you to navigate it.
|
||
|
||
---
|
||
*** On X, the WebKit inspector is now available inside xwidgets.
|
||
To access the inspector, right click on the widget and select "Inspect
|
||
Element".
|
||
|
||
---
|
||
*** "Open in New Window" in a WebKit widget's context menu now works.
|
||
The newly created buffer will be displayed via 'display-buffer', which
|
||
can be customized through the usual mechanism of 'display-buffer-alist'
|
||
and friends.
|
||
|
||
** Tramp
|
||
|
||
+++
|
||
*** New connection methods "docker", "podman" and "kubernetes".
|
||
They allow accessing environments provided by Docker and similar
|
||
programs.
|
||
|
||
---
|
||
*** Tramp supports abbreviating remote home directories now.
|
||
When calling 'abbreviate-file-name' on a Tramp file name, the result
|
||
will abbreviate the user's home directory, for example by abbreviating
|
||
"/ssh:user@host:/home/user" to "/ssh:user@host:~".
|
||
|
||
+++
|
||
*** New user option 'tramp-use-scp-direct-remote-copying'.
|
||
When set to non-nil, Tramp does not copy files between two remote
|
||
hosts via a local copy in its temporary directory, but lets the 'scp'
|
||
command do this job.
|
||
|
||
+++
|
||
*** Proper password prompts for methods "doas", "sudo" and "sudoedit".
|
||
The password prompts for these methods reflect now the credentials of
|
||
the user requesting such a connection, and not of the user who is the
|
||
target. This has always been needed, just the password prompt and the
|
||
related 'auth-sources' entry were wrong.
|
||
|
||
+++
|
||
*** New user option 'tramp-completion-use-cache'.
|
||
During user and host name completion in the minibuffer, results from
|
||
Tramp's connection cache are taken into account. This can be disabled
|
||
by setting the user option 'tramp-completion-use-cache' to nil.
|
||
|
||
** Browse URL
|
||
|
||
---
|
||
*** New user option 'browse-url-default-scheme'.
|
||
This user option decides which URL scheme that 'browse-url' and
|
||
related functions will use by default. For example, you could
|
||
customize this to "https" to always prefer HTTPS URLs.
|
||
|
||
---
|
||
*** New user option 'browse-url-irc-function'.
|
||
This option specifies a function for opening "irc://" links. It
|
||
defaults to the new function 'browse-url-irc'.
|
||
|
||
---
|
||
*** New function 'browse-url-irc'.
|
||
This multipurpose autoloaded function can be used for opening "irc://"
|
||
and "ircs://" URLS by any caller that passes a URL string as an initial
|
||
arg.
|
||
|
||
---
|
||
*** Support for the Netscape web browser has been removed.
|
||
This support has been obsolete since Emacs 25.1. The final version of
|
||
the Netscape web browser was released in February, 2008.
|
||
|
||
---
|
||
*** Support for the Galeon web browser has been removed.
|
||
This support has been obsolete since Emacs 25.1. The final version of
|
||
the Galeon web browser was released in September, 2008.
|
||
|
||
---
|
||
*** Support for the Mozilla web browser is now obsolete.
|
||
Note that this historical web browser is different from Mozilla
|
||
Firefox; it is its predecessor.
|
||
|
||
** Python Mode
|
||
|
||
+++
|
||
*** Project shells and a new user option 'python-shell-dedicated'.
|
||
When called with a prefix argument, 'run-python' now offers the choice
|
||
of creating a shell dedicated to the current project. This shell runs
|
||
in the project root directory and is shared among all project buffers.
|
||
|
||
Without a prefix argument, the kind of shell (buffer-dedicated,
|
||
project-dedicated or global) is specified by the new
|
||
'python-shell-dedicated' user option.
|
||
|
||
** Ruby Mode
|
||
|
||
---
|
||
*** New user option 'ruby-toggle-block-space-before-parameters'.
|
||
|
||
** Eshell
|
||
|
||
+++
|
||
*** New feature to easily bypass Eshell's own pipelining.
|
||
Prefixing '|', '<' or '>' with an asterisk, i.e. '*|', '*<' or '*>',
|
||
will cause the whole command to be passed to the operating system
|
||
shell. This is particularly useful to bypass Eshell's own pipelining
|
||
support for pipelines which will move a lot of data. See section
|
||
"Running Shell Pipelines Natively" in the Eshell manual, node
|
||
"(eshell) Input/Output".
|
||
|
||
+++
|
||
*** New module to help supplying absolute file names to remote commands.
|
||
After enabling the new 'eshell-elecslash' module, typing a forward
|
||
slash as the first character of a command line argument will
|
||
automatically insert the Tramp prefix. The automatic insertion
|
||
applies only when 'default-directory' is remote and the command is a
|
||
Lisp function. This frees you from having to keep track of whether
|
||
commands are Lisp function or external when supplying absolute file
|
||
name arguments. See the "(eshell) Electric forward slash" node in the
|
||
Eshell manual for details.
|
||
|
||
+++
|
||
*** Improved support for redirection operators in Eshell.
|
||
Eshell now supports a wider variety of redirection operators. For
|
||
example, you can now redirect both stdout and stderr via '&>' or
|
||
duplicate one output handle to another via 'NEW-FD>&OLD-FD'. For more
|
||
information, see the "(eshell) Redirection" node in the Eshell manual.
|
||
|
||
+++
|
||
*** New eshell built-in command 'doas'.
|
||
The privilege-escalation program 'doas' has been added to the existing
|
||
'su' and 'sudo' commands from the 'eshell-tramp' module. The external
|
||
command may still be accessed by using '*doas'.
|
||
|
||
+++
|
||
*** Double-quoting an Eshell expansion now treats the result as a single string.
|
||
If an Eshell expansion like '$FOO' is surrounded by double quotes, the
|
||
result will always be a single string, no matter the type that would
|
||
otherwise be returned.
|
||
|
||
+++
|
||
*** Concatenating Eshell expansions now works more similarly to other shells.
|
||
When concatenating an Eshell expansion that returns a list, "adjacent"
|
||
elements of each operand are now concatenated together,
|
||
e.g. '$(list "a" "b")c' returns '("a" "bc")'. See the "(eshell)
|
||
Expansion" node in the Eshell manual for more details.
|
||
|
||
+++
|
||
*** Eshell subcommands with multiline numeric output return lists of numbers.
|
||
If every line of the output of an Eshell subcommand like '${COMMAND}'
|
||
is numeric, the result will be a list of numbers (or a single number
|
||
if only one line of output). Previously, this only converted numbers
|
||
when there was a single line of output.
|
||
|
||
---
|
||
*** Built-in Eshell commands now follow POSIX/GNU argument syntax conventions.
|
||
Built-in commands in Eshell now accept command-line options with
|
||
values passed as a single token, such as '-oVALUE' or
|
||
'--option=VALUE'. New commands can take advantage of this with the
|
||
'eshell-eval-using-options' macro. See "Defining new built-in
|
||
commands" in the "(eshell) Built-ins" node of the Eshell manual.
|
||
|
||
---
|
||
*** Eshell globs ending with '/' now match only directories.
|
||
Additionally, globs ending with '**/' or '***/' no longer raise an
|
||
error, and now expand to all directories recursively (following
|
||
symlinks in the latter case).
|
||
|
||
+++
|
||
*** Lisp forms in Eshell now treat a nil result as a failed exit status.
|
||
When executing a command that looks like '(lisp form)' and returns
|
||
nil, Eshell will set the exit status (available in the '$?'
|
||
variable) to 2. This allows commands like that to be used in
|
||
conditionals. To change this behavior, customize the new
|
||
'eshell-lisp-form-nil-is-failure' user option.
|
||
|
||
** Shell
|
||
|
||
---
|
||
*** New user option 'shell-kill-buffer-on-exit'.
|
||
Enabling this will automatically kill a "*shell*" buffer as soon as
|
||
the shell session terminates.
|
||
|
||
---
|
||
*** New minor mode 'shell-highlight-undef-mode'.
|
||
Customize 'shell-highlight-undef-enable' to t if you want to enable
|
||
this minor mode in "*shell*" buffers. It will highlight undefined
|
||
commands with a warning face as you type.
|
||
|
||
** Calc
|
||
|
||
+++
|
||
*** New user option 'calc-kill-line-numbering'.
|
||
Set it to nil to exclude line numbering from kills and copies.
|
||
|
||
** Hierarchy
|
||
|
||
+++
|
||
*** Tree Display can delay computation of children.
|
||
'hierarchy-add-tree' and 'hierarchy-add-trees' have an optional
|
||
argument which allows tree-widget display to be activated and computed
|
||
only when the user expands the node.
|
||
|
||
** Proced
|
||
|
||
---
|
||
*** proced.el shows system processes of remote hosts.
|
||
When 'default-directory' is remote, and 'proced' is invoked with a
|
||
negative argument like 'C-u - proced', the system processes of that
|
||
remote host are shown. Alternatively, the user option
|
||
'proced-show-remote-processes' can be set to non-nil.
|
||
'proced-signal-function' has been marked obsolete.
|
||
|
||
---
|
||
*** Proced can now optionally show process details in color.
|
||
New user option 'proced-enable-color-flag' enables coloring of Proced
|
||
buffers. This option is disabled by default; customize it to a
|
||
non-nil value to enable colors.
|
||
|
||
** Miscellaneous
|
||
|
||
---
|
||
*** New user option 'webjump-use-internal-browser'.
|
||
When non-nil, WebJump will use an internal browser to open web pages,
|
||
instead of the default external browser.
|
||
|
||
+++
|
||
*** New user option 'font-lock-ignore'.
|
||
This option provides a mechanism to selectively disable font-lock
|
||
keyword-driven fontifications.
|
||
|
||
---
|
||
*** New user option 'auto-save-visited-predicate'.
|
||
This user option is a predicate function which is called by
|
||
'auto-save-visited-mode' to decide whether or not to save a buffer.
|
||
You can use it to automatically save only specific buffers, for
|
||
example buffers using a particular mode or in some directory.
|
||
|
||
---
|
||
*** New user option 'remote-file-name-inhibit-auto-save-visited'.
|
||
If this user option is non-nil, 'auto-save-visited-mode' will not
|
||
auto-save remote buffers. The default is nil.
|
||
|
||
+++
|
||
*** New package vtable.el for formatting tabular data.
|
||
This package allows formatting data using variable-pitch fonts.
|
||
The resulting tables can display text in variable pitch fonts, text
|
||
using fonts of different sizes, and images. See the "(vtable) Top"
|
||
manual for more details.
|
||
|
||
---
|
||
*** New minor mode 'elide-head-mode'.
|
||
Enabling this minor mode turns on hiding header material, like
|
||
'elide-head' does; disabling it shows the header. The commands
|
||
'elide-head' and 'elide-head-show' are now obsolete.
|
||
|
||
*** New package ansi-osc.el.
|
||
Support for OSC ("Operating System Command") escape sequences has been
|
||
extracted from comint.el in order to provide interpretation of OSC
|
||
sequences in compilation buffers.
|
||
|
||
Adding the new function 'ansi-osc-compilation-filter' to
|
||
'compilation-filter-hook' enables interpretation of OSC escape
|
||
sequences in compilation buffers. By default, all sequences are
|
||
filtered out.
|
||
|
||
The list of handlers (already covering OSC 7 and 8) has been extended
|
||
with a handler for OSC 2, the command to set a window title.
|
||
|
||
+++
|
||
*** New user option 'project-vc-include-untracked'.
|
||
If non-nil, files untracked by a VCS are considered to be part of
|
||
the project by a VC project based on that VCS.
|
||
|
||
---
|
||
*** 'recentf-mode' now uses abbreviated file names by default.
|
||
This means that e.g. "/home/foo/bar" is now displayed as "~/bar".
|
||
Customize the user option 'recentf-filename-handlers' to nil to get
|
||
back the old behavior.
|
||
|
||
---
|
||
*** New command 'recentf-open'.
|
||
This command prompts for a recently opened file in the minibuffer, and
|
||
visits it.
|
||
|
||
---
|
||
*** 'ffap-machine-at-point' no longer pings hosts by default.
|
||
It will now simply look at a hostname to determine if it is valid,
|
||
instead of also trying to ping it. Customize the user option
|
||
'ffap-machine-p-known' to 'ping' to get the old behavior back.
|
||
|
||
---
|
||
*** The 'run-dig' command is now obsolete; use 'dig' instead.
|
||
|
||
---
|
||
*** Some 'bib-mode' commands and variables have been renamed.
|
||
To respect Emacs naming conventions, the variable 'unread-bib-file'
|
||
has been renamed to 'bib-unread-file'. The following commands have
|
||
also been renamed:
|
||
'addbib' to 'bib-add'
|
||
'return-key-bib' to 'bib-return-key'
|
||
'mark-bib' to 'bib-mark'
|
||
'unread-bib' to 'bib-unread'
|
||
|
||
---
|
||
*** 'outlineify-sticky' command is renamed to 'allout-outlinify-sticky'.
|
||
The old name is still available as an obsolete function alias.
|
||
|
||
---
|
||
*** The url-irc library now understands "ircs://" links.
|
||
|
||
---
|
||
*** New command 'world-clock-copy-time-as-kill' for 'M-x world-clock'.
|
||
It copies the current line into the kill ring.
|
||
|
||
---
|
||
*** 'edit-abbrevs' now uses font-locking.
|
||
The new face 'abbrev-table-name' is used to display the abbrev table
|
||
name.
|
||
|
||
---
|
||
*** New key binding 'O' in 'M-x list-buffers'.
|
||
This key is now bound to 'Buffer-menu-view-other-window', which will
|
||
view this line's buffer in View mode in another window.
|
||
|
||
|
||
* New Modes and Packages in Emacs 29.1
|
||
|
||
+++
|
||
** Eglot: Emacs Client for the Language Server Protocol.
|
||
Emacs now comes with the Eglot package, which enhances various Emacs
|
||
features, such as completion, documentation, error detection, etc.,
|
||
based on data provided by language servers using the Language Server
|
||
Protocol (LSP).
|
||
|
||
+++
|
||
*** use-package: Declarative package configuration.
|
||
use-package is shipped with Emacs. It provides the 'use-package'
|
||
macro, which allows you to isolate package configuration in your init
|
||
file in a way that is declarative, tidy, and performance-oriented.
|
||
See the new Info manual 'use-package' for more.
|
||
|
||
+++
|
||
** New commands 'image-crop' and 'image-cut'.
|
||
These commands allow interactively cropping/cutting the image at
|
||
point. The commands are bound to keys 'i c' and 'i x' (respectively)
|
||
in the local keymap over images. They rely on external programs, by
|
||
default "convert" from ImageMagick, to do the actual cropping/eliding
|
||
of the image file.
|
||
|
||
---
|
||
** New package 'wallpaper'.
|
||
This package provides the command 'wallpaper-set', which sets the
|
||
desktop background image. Depending on the system and the desktop,
|
||
this may require an external program (such as "swaybg", "gm",
|
||
"display" or "xloadimage"). If so, a suitable command should be
|
||
detected automatically in most cases. It can also be customized
|
||
manually if needed, using the new user options 'wallpaper-command' and
|
||
'wallpaper-command-args'.
|
||
|
||
+++
|
||
** New package 'oclosure'.
|
||
Allows the creation of "functions with slots" or "function objects"
|
||
via the macros 'oclosure-define' and 'oclosure-lambda'.
|
||
|
||
+++
|
||
*** New generic function 'oclosure-interactive-form'.
|
||
Used by 'interactive-form' when called on an OClosure.
|
||
This allows specific OClosure types to compute their interactive specs
|
||
on demand rather than precompute them when created.
|
||
|
||
---
|
||
** New theme 'leuven-dark'.
|
||
This is a dark version of the 'leuven' theme.
|
||
|
||
+++
|
||
** New mode 'erts-mode'.
|
||
This mode is used to edit files geared towards testing actions in
|
||
Emacs buffers, like indentation and the like. The new ert function
|
||
'ert-test-erts-file' is used to parse these files.
|
||
|
||
---
|
||
** New major mode 'js-json-mode'.
|
||
This is a lightweight variant of 'js-mode' that is used by default
|
||
when visiting JSON files.
|
||
|
||
** New major mode 'typescript-ts-mode'.
|
||
A major mode based on the tree-sitter library for editing programs
|
||
in the TypeScript language. It includes support for font-locking,
|
||
indentation, and navigation. This mode will be auto-enabled for
|
||
files with the '.ts' extension.
|
||
|
||
** New major mode 'tsx-ts-mode'.
|
||
A major mode based on the tree-sitter library for editing programs
|
||
in the TypeScript language, with support for TSX. It includes
|
||
support for font-locking, indentation, and navigation. This mode
|
||
will be auto-enabled for files with the '.tsx' extension.
|
||
|
||
** New major mode 'c-ts-mode'.
|
||
A major mode based on the tree-sitter library for editing programs
|
||
in the C language. It includes support for font-locking,
|
||
indentation, Imenu, which-func, and navigation.
|
||
|
||
** New major mode 'c++-ts-mode'.
|
||
A major mode based on the tree-sitter library for editing programs
|
||
in the C++ language. It includes support for font-locking,
|
||
indentation, Imenu, which-func, and navigation.
|
||
|
||
** New major mode 'java-ts-mode'.
|
||
A major mode based on the tree-sitter library for editing programs
|
||
in the Java language. It includes support for font-locking,
|
||
indentation, Imenu, which-func, and navigation.
|
||
|
||
** New major mode 'python-ts-mode'.
|
||
A major mode based on the tree-sitter library for editing programs
|
||
in the Python language. It includes support for font-locking,
|
||
indentation, Imenu, which-func, and navigation.
|
||
|
||
** New major mode 'css-ts-mode'.
|
||
A major mode based on the tree-sitter library for editing CSS
|
||
(Cascading Style Sheets). It includes support for font-locking,
|
||
indentation, Imenu, which-func, and navigation.
|
||
|
||
** New major mode 'json-ts-mode'.
|
||
A major mode based on the tree-sitter library for editing programs
|
||
in the JSON language. It includes support for font-locking,
|
||
indentation, Imenu, which-func, and navigation.
|
||
|
||
** New major mode 'csharp-ts-mode'.
|
||
A major mode based on the tree-sitter library for editing programs
|
||
in the C# language. It includes support for font-locking,
|
||
indentation, Imenu, which-func, and navigation.
|
||
|
||
** New major mode 'csharp-mode'.
|
||
A major mode based on CC Mode for editing programs in the C# language.
|
||
|
||
** New major mode 'bash-ts-mode'.
|
||
A major mode based on the tree-sitter library for editing Bash shell
|
||
scripts. It includes support for font-locking, indentation, Imenu,
|
||
which-func, and navigation.
|
||
|
||
|
||
* Incompatible Lisp Changes in Emacs 29.1
|
||
|
||
+++
|
||
** 'format-prompt' now uses 'substitute-command-keys'.
|
||
This means that both the prompt and 'minibuffer-default-prompt-format'
|
||
will have key definitions and single quotes handled specially.
|
||
|
||
+++
|
||
** New function 'substitute-quotes'.
|
||
This function works like 'substitute-command-keys' but only
|
||
substitutes quote characters.
|
||
|
||
---
|
||
** 'find-image' now uses 'create-image'.
|
||
This means that images found through 'find-image' also have
|
||
auto-scaling applied. (This only makes a difference on HiDPI
|
||
displays.)
|
||
|
||
+++
|
||
** Changes to "raw" in-memory xbm images are specified.
|
||
Some years back Emacs gained the ability to scale images, and you
|
||
could then specify ':width' and ':height' when using 'create-image' on all
|
||
image types -- except xbm images, because this format already used the
|
||
':width' and ':height' arguments to specify the width/height of the "raw"
|
||
in-memory format. This meant that if you used these specifications
|
||
on, for instance, xbm files, Emacs would refuse to display them. This
|
||
has been changed, and ':width'/':height' now works as with all other image
|
||
formats, and the way to specify the width/height of the "raw"
|
||
in-memory format is now by using ':data-width' and ':data-height'.
|
||
|
||
+++
|
||
** "loaddefs.el" generation has been reimplemented.
|
||
The various "loaddefs.el" files in the Emacs tree (which contain
|
||
information about autoloads, built-in packages and package prefixes)
|
||
used to be generated by functions in autoloads.el. These are now
|
||
generated by loaddefs-gen.el instead. This leads to functionally
|
||
equivalent "loaddef.el" files, but they do not use exactly the same
|
||
syntax, so using 'M-x update-file-autoloads' no longer works. (This
|
||
didn't work well in most files in the past, either, but it will now
|
||
signal an error in any file.)
|
||
|
||
In addition, files are scanned in a slightly different way.
|
||
Previously, ';;;###' specs inside a top-level form (i.e., something
|
||
like '(when ... ;;;### ...)' would be ignored. They are now parsed as
|
||
normal.
|
||
|
||
---
|
||
** Themes have special autoload cookies.
|
||
All built-in themes are scraped for ';;;###theme-autoload' cookies
|
||
that are loaded along with the regular auto-loaded code.
|
||
|
||
+++
|
||
** 'buffer-modified-p' has been extended.
|
||
This function was previously documented to return only nil or t. This
|
||
has been changed to nil/'autosaved'/non-nil. The new 'autosaved'
|
||
value means that the buffer is modified, but that it hasn't been
|
||
modified since the time of last auto-save.
|
||
|
||
---
|
||
** 'with-silent-modifications' also restores buffer autosave status.
|
||
'with-silent-modifications' is a macro meant to be used by the font
|
||
locking machinery to allow applying text properties without changing
|
||
the modification status of the buffer. However, it didn't restore the
|
||
buffer autosave status, so applying font locking to a modified buffer
|
||
that had already been auto-saved would trigger another auto-saving.
|
||
This is no longer the case.
|
||
|
||
---
|
||
** 'prin1' doesn't always escape "." and "?" in symbols any more.
|
||
Previously, symbols like 'foo.bar' would be printed by 'prin1' as
|
||
"foo\.bar". This now prints as "foo.bar" instead. The Emacs Lisp
|
||
reader interprets these strings as referring to the same symbol, so
|
||
this is virtually always backwards-compatible, but there may
|
||
theoretically be code out there that expects a specific printed
|
||
representation.
|
||
|
||
The same is the case with the "?" character: The 'foo?' symbol is now
|
||
printed as "foo?" instead of "foo\?".
|
||
|
||
If the "." and "?" characters are the first character in the symbol,
|
||
they will still be escaped, so the '.foo' symbol is still printed as
|
||
"\.foo" and the '?bar' symbol is still printed as "\?bar".
|
||
|
||
+++
|
||
** Remapping 'mode-line' no longer works as expected.
|
||
'mode-line' is now the parent face of the new 'mode-line-active' face,
|
||
and remapping parent of basic faces does not work reliably.
|
||
Instead of remapping 'mode-line', you have to remap 'mode-line-active'.
|
||
|
||
+++
|
||
** 'make-process' has been extended to support ptys when ':stderr' is set.
|
||
Previously, setting ':stderr' to a non-nil value would force the
|
||
process's connection to use pipes. Now, Emacs will use a pty for
|
||
stdin and stdout if requested no matter the value of ':stderr'.
|
||
|
||
---
|
||
** User option 'mail-source-ignore-errors' is now obsolete.
|
||
The whole mechanism for prompting users to continue in case of
|
||
mail-source errors has been removed, so this option is no longer
|
||
needed.
|
||
|
||
** Fonts
|
||
|
||
---
|
||
*** Emacs now supports 'medium' fonts.
|
||
Emacs previously didn't distinguish between the 'regular'/'normal'
|
||
weight and the 'medium' weight, but it now also supports the (heavier)
|
||
'medium' weight. However, this means that if you previously specified
|
||
a weight of 'normal' and the font doesn't have this weight, Emacs
|
||
won't find the font spec. In these cases, replacing ":weight 'normal"
|
||
with ":weight 'medium" should fix the issue.
|
||
|
||
---
|
||
** Keymap descriptions have changed.
|
||
'help--describe-command', 'C-h b' and associated functions that output
|
||
keymap descriptions have changed. In particular, prefix commands are
|
||
not output at all, and instead of "??" for closures/functions,
|
||
"[closure]"/"[lambda]" is output.
|
||
|
||
---
|
||
** 'downcase' details have changed slightly.
|
||
In certain locales, changing the case of an ASCII-range character may
|
||
turn it into a multibyte character, most notably with "I" in Turkish
|
||
(the lowercase is "ı", 0x0131). Previously, 'downcase' on a unibyte
|
||
string was buggy, and would mistakenly just return the lower byte of
|
||
this, 0x31 (the digit "1"). 'downcase' on a unibyte string has now
|
||
been changed to downcase such characters as if they were ASCII. To
|
||
get proper locale-dependent downcasing, the string has to be converted
|
||
to multibyte first. (This goes for the other case-changing functions,
|
||
too.)
|
||
|
||
---
|
||
** Functions in 'tramp-foreign-file-name-handler-alist' have changed.
|
||
Functions to determine which Tramp file name handler to use are now
|
||
passed a file name in dissected form (via 'tramp-dissect-file-name')
|
||
instead of in string form.
|
||
|
||
---
|
||
** 'def' indentation changes.
|
||
In 'emacs-lisp-mode', forms with a symbol with a name that start with
|
||
"def" have been automatically indented as if they were 'defun'-like
|
||
forms, for instance:
|
||
|
||
(defzot 1
|
||
2 3)
|
||
|
||
This heuristic has now been removed, and all functions/macros that
|
||
want to be indented this way have to be marked with
|
||
|
||
(declare (indent defun))
|
||
|
||
or the like. If the function/macro definition itself can't be
|
||
changed, the indentation can also be adjusted by saying something
|
||
like:
|
||
|
||
(put 'defzot 'lisp-indent-function 'defun)
|
||
|
||
---
|
||
** The 'inhibit-changing-match-data' variable is now obsolete.
|
||
Instead, functions like 'string-match' and 'looking-at' now take an
|
||
optional INHIBIT-MODIFY argument.
|
||
|
||
---
|
||
** 'gnus-define-keys' is now obsolete.
|
||
Use 'define-keymap' instead.
|
||
|
||
---
|
||
** MozRepl has been removed from js.el.
|
||
MozRepl was removed from Firefox in 2017, so this code doesn't work
|
||
with recent versions of Firefox.
|
||
|
||
---
|
||
** The function 'image-dired-get-exif-data' is now obsolete.
|
||
Use 'exif-parse-file' and 'exif-field' instead.
|
||
|
||
---
|
||
** 'insert-directory' alternatives should not change the free disk space line.
|
||
This change is now applied in 'dired-insert-directory'.
|
||
|
||
---
|
||
** 'compilation-last-buffer' is (finally) declared obsolete.
|
||
It's been obsolete since Emacs-22.1, actually.
|
||
|
||
---
|
||
** Calling 'lsh' now elicits a byte-compiler warning.
|
||
'lsh' behaves in somewhat surprising and platform-dependent ways for
|
||
negative arguments, and is generally slower than 'ash', which should be
|
||
used instead. This warning can be suppressed by surrounding calls to
|
||
'lsh' with the construct '(with-suppressed-warnings ((suspicious lsh)) ...)',
|
||
but switching to 'ash' is generally much preferable.
|
||
|
||
---
|
||
** Some functions and variables obsolete since Emacs 24 have been removed:
|
||
'Buffer-menu-buffer+size-width', 'Electric-buffer-menu-mode',
|
||
'Info-edit-map', 'allout-abbreviate-flattened-numbering',
|
||
'allout-exposure-change-hook', 'allout-mode-deactivate-hook',
|
||
'allout-structure-added-hook', 'allout-structure-deleted-hook',
|
||
'allout-structure-shifted-hook', 'ansi-color-unfontify-region',
|
||
'archive-extract-hooks', 'auth-source-forget-user-or-password',
|
||
'auth-source-hide-passwords', 'auth-source-user-or-password',
|
||
'automatic-hscrolling', 'automount-dir-prefix', 'bibtex-complete',
|
||
'bibtex-entry-field-alist', 'buffer-has-markers-at',
|
||
'buffer-substring-filters', 'byte-compile-disable-print-circle',
|
||
'c-prepare-bug-report-hooks', 'cfengine-mode-abbrevs',
|
||
'change-log-acknowledgement', 'chart-map',
|
||
'checkdoc-comment-style-hooks', 'comint--unquote&expand-filename',
|
||
'comint-dynamic-complete', 'comint-dynamic-complete-as-filename',
|
||
'comint-dynamic-simple-complete', 'comint-unquote-filename',
|
||
'command-history-map', 'compilation-parse-errors-function',
|
||
'completion-annotate-function', 'condition-case-no-debug',
|
||
'count-lines-region', 'crisp-mode-modeline-string',
|
||
'custom-print-functions', 'custom-print-functions',
|
||
'cvs-string-prefix-p', 'data-debug-map', 'deferred-action-function',
|
||
'deferred-action-list', 'dired-pop-to-buffer', 'dired-shrink-to-fit',
|
||
'dired-sort-set-modeline', 'dired-x-submit-report',
|
||
'display-buffer-function',
|
||
'ediff-choose-window-setup-function-automatically',
|
||
'eieio-defgeneric', 'eieio-defmethod', 'emacs-lock-from-exiting',
|
||
'erc-complete-word', 'erc-dcc-chat-filter-hook',
|
||
'eshell-add-to-window-buffer-names', 'eshell-cmpl-suffix-list',
|
||
'eshell-for', 'eshell-remove-from-window-buffer-names',
|
||
'eshell-status-in-modeline', 'filesets-cache-fill-content-hooks',
|
||
'font-list-limit', 'font-lock-maximum-size',
|
||
'font-lock-reference-face', 'gnus-carpal',
|
||
'gnus-debug-exclude-variables', 'gnus-debug-files',
|
||
'gnus-local-domain', 'gnus-outgoing-message-group',
|
||
'gnus-registry-user-format-function-M', 'gnus-secondary-servers',
|
||
'gnus-subscribe-newsgroup-hooks', 'gud-inhibit-global-bindings',
|
||
'hangul-input-method-inactivate', 'hfy-post-html-hooks',
|
||
'image-extension-data', 'image-library-alist',
|
||
'inactivate-current-input-method-function', 'inactivate-input-method',
|
||
'inhibit-first-line-modes-regexps',
|
||
'inhibit-first-line-modes-suffixes', 'input-method-inactivate-hook',
|
||
'intdos', 'javascript-generic-mode', 'javascript-generic-mode-hook',
|
||
'latex-string-prefix-p', 'macro-declaration-function' (function),
|
||
'macro-declaration-function' (variable), 'mail-complete-function',
|
||
'mail-completion-at-point-function',
|
||
'mail-mailer-swallows-blank-line', 'mail-sent-via', 'make-register',
|
||
'makefile-complete', 'menu-bar-kill-ring-save',
|
||
'meta-complete-symbol', 'meta-mode-map',
|
||
'mh-kill-folder-suppress-prompt-hooks',
|
||
'minibuffer-completing-symbol',
|
||
'minibuffer-local-filename-must-match-map', 'mode25', 'mode4350',
|
||
'mpc-string-prefix-p', 'msb-after-load-hooks',
|
||
'nndiary-request-accept-article-hooks',
|
||
'nndiary-request-create-group-hooks',
|
||
'nndiary-request-update-info-hooks', 'nnimap-split-rule',
|
||
'nntp-authinfo-file', 'ns-alternatives-map',
|
||
'ns-store-cut-buffer-internal', 'package-menu-view-commentary',
|
||
'pascal-last-completions', 'pascal-show-completions',
|
||
'pascal-toggle-completions', 'pcomplete-arg-quote-list',
|
||
'pcomplete-quote-argument', 'prolog-char-quote-workaround',
|
||
'python-buffer', 'python-guess-indent', 'python-indent',
|
||
'python-info-ppss-comment-or-string-p', 'python-info-ppss-context',
|
||
'python-info-ppss-context-type', 'python-preoutput-result',
|
||
'python-proc', 'python-send-receive', 'python-send-string',
|
||
'python-use-skeletons', 'quail-inactivate', 'quail-inactivate-hook',
|
||
'query-replace-interactive', 'rcirc-activity-hooks',
|
||
'rcirc-print-hooks', 'rcirc-receive-message-hooks',
|
||
'rcirc-sentinel-hooks', 'read-filename-at-point', 'redraw-modeline',
|
||
'reftex-index-map', 'reftex-index-phrases-map',
|
||
'reftex-select-bib-map', 'reftex-select-label-map', 'reftex-toc-map',
|
||
'register-name-alist', 'register-value', 'report-emacs-bug-info',
|
||
'report-emacs-bug-pretest-address',
|
||
'rmail-default-dont-reply-to-names', 'rmail-dont-reply-to',
|
||
'rmail-dont-reply-to-names', 'robin-inactivate',
|
||
'robin-inactivate-hook', 'rst-block-face', 'rst-comment-face',
|
||
'rst-definition-face', 'rst-directive-face', 'rst-emphasis1-face',
|
||
'rst-emphasis2-face', 'rst-external-face', 'rst-literal-face',
|
||
'rst-reference-face', 'semantic-change-hooks',
|
||
'semantic-edits-delete-change-hooks',
|
||
'semantic-edits-new-change-hooks',
|
||
'semantic-edits-reparse-change-hooks', 'semantic-grammar-map',
|
||
'semantic-grammar-syntax-table', 'semantic-lex-reset-hooks',
|
||
'semanticdb-elisp-sym-function-arglist',
|
||
'semanticdb-save-database-hooks', 'set-face-underline-p',
|
||
'set-register-value', 'sh-maybe-here-document', 'speedbar-key-map',
|
||
'speedbar-syntax-table', 'starttls-any-program-available',
|
||
'strokes-modeline-string', 'strokes-report-bug',
|
||
'term-default-bg-color', 'term-default-fg-color',
|
||
'tex-string-prefix-p', 'timeclock-modeline-display',
|
||
'timeclock-modeline-display', 'timeclock-update-modeline',
|
||
'toggle-emacs-lock', 'tooltip-use-echo-area', 'turn-on-cwarn-mode',
|
||
'turn-on-iimage-mode', 'ucs-input-inactivate', 'ucs-insert',
|
||
'url-recreate-url-attributes', 'user-variable-p',
|
||
'vc-string-prefix-p', 'vc-toggle-read-only', 'view-return-to-alist',
|
||
'view-return-to-alist-update', 'w32-default-color-map' (function),
|
||
'which-func-mode' (function), 'window-system-version',
|
||
'winner-mode-leave-hook', 'x-cut-buffer-or-selection-value'.
|
||
|
||
---
|
||
** Some functions and variables obsolete since Emacs 23 have been removed:
|
||
'find-emacs-lisp-shadows', 'newsticker-cache-filename',
|
||
'process-filter-multibyte-p', 'redisplay-end-trigger-functions',
|
||
'set-process-filter-multibyte', 'set-window-redisplay-end-trigger',
|
||
'unify-8859-on-decoding-mode', 'unify-8859-on-encoding-mode',
|
||
'vc-arch-command', 'window-redisplay-end-trigger', 'x-selection'.
|
||
|
||
---
|
||
** Some functions and variables obsolete since Emacs 21 or 22 have been removed:
|
||
'c-toggle-auto-state', 'find-file-not-found-hooks',
|
||
'ls-lisp-dired-ignore-case', 'query-replace-regexp-eval'.
|
||
|
||
+++
|
||
** New generic function 'function-documentation'.
|
||
Can dynamically generate a raw docstring depending on the type of
|
||
a function.
|
||
Used mainly for docstrings of OClosures.
|
||
|
||
+++
|
||
** Base64 encoding no longer tolerates latin-1 input.
|
||
The functions 'base64-encode-string', 'base64url-encode-string',
|
||
'base64-encode-region' and 'base64url-encode-region' no longer accept
|
||
characters in the range U+0080..U+00FF as substitutes for single bytes
|
||
in the range 128..255, but signal an error for all multibyte characters.
|
||
The input must be encoded text.
|
||
|
||
+++
|
||
** The 'clone-indirect-buffer-hook' is now run by 'make-indirect-buffer'.
|
||
It was previously only run by 'clone-indirect-buffer' and
|
||
'clone-indirect-buffer-other-window'. Since 'make-indirect-buffer' is
|
||
called by both of these, the hook is now run by all 3 of these
|
||
functions.
|
||
|
||
---
|
||
** '?\' at the end of a line now signals an error.
|
||
Previously, it produced a nonsense value, -1, that was never intended.
|
||
|
||
---
|
||
** Some libraries obsolete since Emacs 24.1 and 24.3 have been removed:
|
||
abbrevlist.el, assoc.el, complete.el, cust-print.el,
|
||
erc-hecomplete.el, mailpost.el, mouse-sel.el, old-emacs-lock.el,
|
||
patcomp.el, pc-mode.el, pc-select.el, s-region.el, and sregex.el.
|
||
|
||
+++
|
||
** Many seldom-used generalized variables have been made obsolete.
|
||
Emacs has a number of rather obscure generalized variables defined,
|
||
that, for instance, allowed you to say things like:
|
||
|
||
(setf (point-min) 4)
|
||
|
||
These never caught on and have been made obsolete. The form above,
|
||
for instance, is the same as saying
|
||
|
||
(narrow-to-region 4 (point-max))
|
||
|
||
The following generalized variables have been made obsolete:
|
||
'buffer-file-name', 'buffer-local-value', 'buffer-modified-p',
|
||
'buffer-name', 'buffer-string', 'buffer-substring', 'current-buffer',
|
||
'current-column', 'current-global-map', 'current-input-mode',
|
||
'current-local-map', 'current-window-configuration',
|
||
'default-file-modes', 'documentation-property', 'eq', 'frame-height',
|
||
'frame-width', 'frame-visible-p', 'global-key-binding',
|
||
'local-key-binding', 'mark', 'mark-marker', 'marker-position',
|
||
'mouse-position', 'point', 'point-marker', 'point-max', 'point-min',
|
||
'read-mouse-position', 'screen-height', 'screen-width',
|
||
'selected-frame', 'selected-screen', 'selected-window',
|
||
'standard-case-table', 'syntax-table', 'visited-file-modtime',
|
||
'window-height', 'window-width', and 'x-get-secondary-selection'.
|
||
|
||
|
||
* Lisp Changes in Emacs 29.1
|
||
|
||
+++
|
||
** Interpreted closures are "safe for space".
|
||
As was already the case for byte-compiled closures, instead of capturing
|
||
the whole current lexical environment, interpreted closures now only
|
||
capture the part of the environment that they need.
|
||
The previous behavior could occasionally lead to memory leaks or
|
||
to problems where a printed closure would not be 'read'able because
|
||
of an un'read'able value in an unrelated lexical variable.
|
||
|
||
+++
|
||
** New accessor function 'file-attribute-file-identifier'.
|
||
It returns the list of the inode number and device identifier
|
||
retrieved by 'file-attributes'. This value can be used to identify a
|
||
file uniquely. The device identifier can be a single number or (for
|
||
remote files) a cons of 2 numbers.
|
||
|
||
+++
|
||
** New macro 'while-let'.
|
||
This is like 'when-let', but repeats until a binding form is nil.
|
||
|
||
+++
|
||
** New function 'make-obsolete-generalized-variable'.
|
||
This can be used to mark setters used by 'setf' as obsolete, and the
|
||
byte-compiler will then warn about using them.
|
||
|
||
+++
|
||
** New functions 'pos-eol' and 'pos-bol'.
|
||
These are like 'line-end-position' and 'line-beginning-position'
|
||
(respectively), but ignore fields (and are more efficient).
|
||
|
||
+++
|
||
** New function 'compiled-function-p'.
|
||
This returns non-nil if its argument is either a built-in, or a
|
||
byte-compiled, or a natively-compiled function object, or a function
|
||
loaded from a dynamic module.
|
||
|
||
---
|
||
** 'deactivate-mark' can have new value 'dont-save'.
|
||
This value means that Emacs should deactivate the mark as usual, but
|
||
without setting the primary selection, if 'select-active-regions' is
|
||
enabled.
|
||
|
||
+++
|
||
** New 'declare' form 'interactive-args'.
|
||
This can be used to specify what forms to put into 'command-history'
|
||
when executing commands interactively.
|
||
|
||
+++
|
||
** The FORM arg of 'time-convert' is mandatory.
|
||
'time-convert' can still be called without it, as before, but the
|
||
compiler now emits a warning about this deprecated usage.
|
||
|
||
+++
|
||
** Emacs now supports user-customizable and themable icons.
|
||
These can be used for buttons in buffers and the like. See the
|
||
"(elisp) Icons" and "(emacs) Icons" nodes in the manuals for details.
|
||
|
||
+++
|
||
** New arguments MESSAGE and TIMEOUT of 'set-transient-map'.
|
||
MESSAGE specifies a message to display after activating the transient
|
||
map, including a special formatting spec to list available keys.
|
||
TIMEOUT is the idle time after which to deactivate the transient map.
|
||
The default timeout value can be defined by the new variable
|
||
'set-transient-map-timeout'.
|
||
|
||
** Connection-local variables
|
||
|
||
+++
|
||
*** Some connection-local variables are now user options.
|
||
The variables 'connection-local-profile-alist' and
|
||
'connection-local-criteria-alist' are now user options, in order to
|
||
make it more convenient to inspect and modify them.
|
||
|
||
+++
|
||
*** New function 'connection-local-update-profile-variables'.
|
||
This function allows to modify the settings of an existing
|
||
connection-local profile.
|
||
|
||
+++
|
||
*** New macro 'with-connection-local-application-variables'.
|
||
This macro works like 'with-connection-local-variables', but it allows
|
||
to use another application but 'tramp'. This is useful when running
|
||
code in a buffer where Tramp has already set some connection-local
|
||
variables.
|
||
|
||
+++
|
||
*** New macro 'setq-connection-local'.
|
||
This allows dynamically setting variable values for a particular
|
||
connection within the body of 'with-connection-local-{application-}variables'.
|
||
See the "(elisp) Connection Local Variables" node in the Lisp
|
||
Reference manual for more information.
|
||
|
||
+++
|
||
** 'plist-get', 'plist-put' and 'plist-member' are no longer limited to 'eq'.
|
||
These function now take an optional comparison predicate argument.
|
||
|
||
+++
|
||
** 'read-multiple-choice' can now use long-form answers.
|
||
|
||
+++
|
||
** 'M-c' in 'read-regexp' now toggles case folding.
|
||
|
||
+++
|
||
** 'completing-read' now allows a function as its REQUIRE-MATCH argument.
|
||
This function is called to see whether what the user has typed in is a
|
||
match. This is also available from functions that call
|
||
'completing-read', like 'read-file-name'.
|
||
|
||
+++
|
||
** 'posn-col-row' can now give position data based on windows.
|
||
Previously, it reported data only based on the frame.
|
||
|
||
+++
|
||
** 'file-expand-wildcards' can now also take a regexp as PATTERN argument.
|
||
|
||
---
|
||
** vc-mtn (the backend for Monotone) has been made obsolete.
|
||
|
||
+++
|
||
** 'gui-set-selection' can now specify different values for different data types.
|
||
If DATA is a string, then its text properties are searched for values
|
||
for each specific data type while the selection is being converted.
|
||
|
||
---
|
||
** New eldoc function 'elisp-eldoc-var-docstring-with-value'.
|
||
This function includes the current value of the variable in eldoc display
|
||
and can be used as a more detailed alternative to 'elisp-eldoc-var-docstring'.
|
||
|
||
+++
|
||
** 'save-some-buffers' can now be extended to save other things.
|
||
Traditionally, 'save-some-buffers' saved buffers, and also saved
|
||
abbrevs. This has been generalized via the
|
||
'save-some-buffers-functions' variable, and packages can now register
|
||
things to be saved.
|
||
|
||
+++
|
||
** New function 'string-equal-ignore-case'.
|
||
This compares strings ignoring case differences.
|
||
|
||
** 'symbol-file' can now report natively-compiled ".eln" files.
|
||
If Emacs was built with native-compilation enabled, Lisp programs can
|
||
now call 'symbol-file' with the new optional 3rd argument non-nil to
|
||
request the name of the ".eln" file which defined a given symbol.
|
||
|
||
+++
|
||
** New macro 'with-memoization' provides a very primitive form of memoization.
|
||
|
||
+++
|
||
** 'max-char' can now report the maximum codepoint according to Unicode.
|
||
When called with a new optional argument UNICODE non-nil, 'max-char'
|
||
will now report the maximum valid codepoint defined by the Unicode
|
||
Standard.
|
||
|
||
** seq
|
||
|
||
+++
|
||
** New function 'seq-split'.
|
||
This returns a list of sub-sequences of the specified sequence.
|
||
|
||
+++
|
||
** New function 'seq-remove-at-position'.
|
||
This function returns a copy of the specified sequence where the
|
||
element at a given (zero-based) index got removed.
|
||
|
||
+++
|
||
** New function 'seq-positions'.
|
||
This returns a list of the (zero-based) indices of elements matching a
|
||
given predicate in the specified sequence.
|
||
|
||
+++
|
||
** New function 'seq-keep'.
|
||
This is like 'seq-map', but removes all nil results from the returned
|
||
list.
|
||
|
||
** Themes
|
||
|
||
---
|
||
*** New hooks 'enable-theme-functions' and 'disable-theme-functions'.
|
||
These are run after enabling and disabling a theme, respectively.
|
||
|
||
---
|
||
*** Themes can now be made obsolete.
|
||
Using 'make-obsolete' on a theme is now supported. This will make
|
||
'load-theme' issue a warning when loading the theme.
|
||
|
||
+++
|
||
** New hook 'display-monitors-changed-functions'.
|
||
It is called whenever the configuration of different monitors on a
|
||
display changes.
|
||
|
||
+++
|
||
** 'prin1' and 'prin1-to-string' now take an optional OVERRIDES parameter.
|
||
This parameter can be used to override values of print-related settings.
|
||
|
||
+++
|
||
** New minor mode 'header-line-indent-mode'.
|
||
This is meant to be used in modes that have a header line that should
|
||
be kept aligned with the buffer contents when the user switches
|
||
'display-line-numbers-mode' on or off.
|
||
|
||
+++
|
||
** New minor mode 'lost-selection-mode'.
|
||
This minor mode makes Emacs deactivate the mark in all buffers when
|
||
the primary selection is obtained by another program.
|
||
|
||
---
|
||
** On X, Emacs will try to preserve selection ownership when a frame is deleted.
|
||
This means that if you make Emacs the owner of a selection, such as by
|
||
selecting some text into the clipboard or primary selection, and then
|
||
delete the current frame, you will still be able to insert the
|
||
contents of that selection into other programs as long as another
|
||
frame is open on the same display. This behavior can be disabled by
|
||
setting the user option 'x-auto-preserve-selections' to nil.
|
||
|
||
+++
|
||
** New predicate 'char-uppercase-p'.
|
||
This returns non-nil if its argument its an uppercase character.
|
||
|
||
** Byte compilation
|
||
|
||
---
|
||
*** Byte compilation will now warn about some quoting mistakes in docstrings.
|
||
When writing code snippets that contains the "'" character (APOSTROPHE),
|
||
that quote character has to be escaped to avoid Emacs displaying it as
|
||
"’" (LEFT SINGLE QUOTATION MARK), which would make code examples like
|
||
|
||
(setq foo '(1 2 3))
|
||
|
||
invalid. Emacs will now warn during byte compilation if it seems
|
||
something like that, and also warn about when using RIGHT/LEFT SINGLE
|
||
QUOTATION MARK directly. In both these cases, if these characters
|
||
should really be present in the docstring, they should be quoted with
|
||
"\=".
|
||
|
||
---
|
||
*** Byte compilation will now warn about some malformed 'defcustom' types.
|
||
It's very common to write 'defcustom' types on the form:
|
||
|
||
:type '(choice (const :tag "foo" 'bar))
|
||
|
||
I.e., double-quoting the 'bar', which is almost never the correct
|
||
value. The byte compiler will now issue a warning if it encounters
|
||
these forms.
|
||
|
||
+++
|
||
** 'restore-buffer-modified-p' can now alter buffer auto-save state.
|
||
With a FLAG value of 'autosaved', it will mark the buffer as having
|
||
been auto-saved since the time of last modification.
|
||
|
||
---
|
||
** New minor mode 'isearch-fold-quotes-mode'.
|
||
This sets up 'search-default-mode' so that quote characters are
|
||
char-folded into each other. It is used, by default, in "*Help*" and
|
||
"*info*" buffers.
|
||
|
||
+++
|
||
** New macro 'buffer-local-set-state'.
|
||
This is a helper macro to be used by minor modes that wish to restore
|
||
buffer-local variables back to their original states when the mode is
|
||
switched off.
|
||
|
||
---
|
||
** New macro 'with-buffer-unmodified-if-unchanged'.
|
||
If the buffer is marked as unmodified, and code does modifications
|
||
that, in total, means that the buffer is identical to the buffer
|
||
before, mark the buffer as unmodified again.
|
||
|
||
---
|
||
** New function 'malloc-trim'.
|
||
This function allows returning unused memory back to the operating
|
||
system, and is mainly meant as a debugging tool. It is currently
|
||
available only when Emacs was built with glibc as the C library.
|
||
|
||
---
|
||
** 'x-show-tip' no longer hard-codes a timeout default.
|
||
The new 'x-show-tooltip-timeout' variable allows the user to alter
|
||
this for packages that don't use 'tooltip-show', but instead call the
|
||
lower level function directly.
|
||
|
||
---
|
||
** New function 'current-cpu-time'.
|
||
It gives access to the CPU time used by the Emacs process, for
|
||
example for benchmarking purposes.
|
||
|
||
---
|
||
** New function 'string-edit'.
|
||
This is meant to be used when the user has to edit a (potentially)
|
||
long string. It pops you to a new buffer where you can edit the
|
||
string, and a callback is called when the user types 'C-c C-c'.
|
||
|
||
+++
|
||
** New function 'read-string-from-buffer'.
|
||
This is a modal version of 'string-edit', and can be used as an
|
||
alternative to 'read-string'.
|
||
|
||
+++
|
||
** The return value of 'clear-message-function' is not ignored anymore.
|
||
If the function returns 'dont-clear-message', then the message is not
|
||
cleared, with the assumption that the function cleared it itself.
|
||
|
||
+++
|
||
** The local variables section now supports defining fallback modes.
|
||
This was previously only available when using a property line (i.e.,
|
||
putting the modes on the first line of a file).
|
||
|
||
+++
|
||
** New function 'flush-standard-output'.
|
||
This enables you to display incomplete lines from batch-based Emacs
|
||
scripts.
|
||
|
||
+++
|
||
** New convenience function 'buttonize-region'.
|
||
This works like 'buttonize', but for a region instead of a string.
|
||
|
||
+++
|
||
** 'macroexp-let2*' can omit TEST arg and use single-var bindings.
|
||
|
||
+++
|
||
** New macro-writing macros, 'cl-with-gensyms' and 'cl-once-only'.
|
||
See the "(cl) Macro-Writing Macros" manual section for descriptions.
|
||
|
||
+++
|
||
** New variable 'last-event-device' and new function 'device-class'.
|
||
On X Windows, 'last-event-device' specifies the input extension device
|
||
from which the last input event originated, and 'device-class' can be
|
||
used to determine the type of an input device.
|
||
|
||
+++
|
||
** 'track-mouse' can be a new value 'drag-source'.
|
||
This means the same as 'dropping', but modifies the mouse position
|
||
list in reported motion events if there is no frame underneath the
|
||
mouse pointer.
|
||
|
||
+++
|
||
** New functions for dragging items from Emacs to other programs.
|
||
The new functions 'x-begin-drag', 'dnd-begin-file-drag',
|
||
'dnd-begin-drag-files', and 'dnd-direct-save' allow dragging contents
|
||
(such as files and text) from Emacs to other programs.
|
||
|
||
---
|
||
** New function 'ietf-drums-parse-date-string'.
|
||
This function parses RFC5322 (and RFC822) date strings, and should be
|
||
used instead of 'parse-time-string' when parsing data that's standards
|
||
compliant.
|
||
|
||
+++
|
||
** New macro 'setopt'.
|
||
This is like 'setq', but is meant to be used for user options instead
|
||
of plain variables, and uses 'custom-set'/'set-default' to set them.
|
||
|
||
+++
|
||
** New utility predicate 'mode-line-window-selected-p'.
|
||
This is meant to be used from ':eval' mode line constructs to create
|
||
different mode line looks for selected and unselected windows.
|
||
|
||
+++
|
||
** New variable 'messages-buffer-name'.
|
||
This variable (defaulting to "*Messages*") allows packages to override
|
||
where messages are logged.
|
||
|
||
+++
|
||
** New function 'readablep'.
|
||
This function says whether an object can be written out and then
|
||
read back by the Emacs Lisp reader.
|
||
|
||
+++
|
||
** New variable 'print-unreadable-function'.
|
||
This variable allows changing how Emacs prints unreadable objects.
|
||
|
||
---
|
||
** The user option 'polling-period' now accepts floating point values.
|
||
This means Emacs can now poll for input during Lisp execution more
|
||
frequently than once in a second.
|
||
|
||
---
|
||
** New function 'bidi-string-strip-control-characters'.
|
||
This utility function is meant for displaying strings when it's
|
||
essential that there's no bidirectional context.
|
||
|
||
---
|
||
** The Gnus range functions have been moved to a new library, range.el.
|
||
All the old names have been made obsolete.
|
||
|
||
+++
|
||
** New function 'function-alias-p'.
|
||
This predicate says whether an object is a function alias, and if it
|
||
is, the alias chain is returned.
|
||
|
||
+++
|
||
** New variable 'lisp-directory' holds the directory of Emacs's own Lisp files.
|
||
|
||
+++
|
||
** New facility for handling session state: 'multisession-value'.
|
||
This can be used as a convenient way to store (simple) application
|
||
state, and the command 'list-multisession-values' allows users to list
|
||
(and edit) this data.
|
||
|
||
+++
|
||
** New function 'get-display-property'.
|
||
This is like 'get-text-property', but works on the 'display' text
|
||
property.
|
||
|
||
+++
|
||
** New function 'add-display-text-property'.
|
||
This is like 'put-text-property', but works on the 'display' text
|
||
property.
|
||
|
||
+++
|
||
** New 'min-width' 'display' property.
|
||
This allows setting a minimum display width for a region of text.
|
||
|
||
+++
|
||
** New 'cursor-face' text property.
|
||
This uses 'cursor-face' instead of the default face when cursor is on or
|
||
near the character and 'cursor-face-highlight-mode' is enabled. The
|
||
user option 'cursor-face-highlight-nonselected-window' is similar to
|
||
'highlight-nonselected-windows', but for this property.
|
||
|
||
+++
|
||
** New event type 'touch-end'.
|
||
This event is sent whenever the user's finger moves off the mouse
|
||
wheel on some mice, or when the user's finger moves off the touchpad.
|
||
|
||
+++
|
||
** New event type 'pinch'.
|
||
This event is sent when a user performs a pinch gesture on a touchpad,
|
||
which is comprised of placing two fingers on the touchpad and moving
|
||
them towards or away from each other.
|
||
|
||
+++
|
||
** New hook 'x-pre-popup-menu-hook'.
|
||
This hook is run before 'x-popup-menu' is about to display a
|
||
deck-of-cards menu on screen.
|
||
|
||
---
|
||
** New hook 'post-select-region-hook'.
|
||
This hook is run immediately after 'select-active-regions' causes the
|
||
region to be set as the primary selection.
|
||
|
||
+++
|
||
** New function 'buffer-match-p'.
|
||
Check if a buffer satisfies some condition. Some examples for
|
||
conditions can be regular expressions that match a buffer name, a
|
||
cons-cell like '(major-mode . shell-mode)' that matches any buffer
|
||
where 'major-mode' is 'shell-mode' or a combined with a condition like
|
||
'(and "\\`\\*.+\\*\\'" (major-mode . special-mode))'.
|
||
|
||
+++
|
||
** New function 'match-buffers'.
|
||
Use 'buffer-match-p' to gather a list of buffers that match a
|
||
condition.
|
||
|
||
---
|
||
** New optional arguments 'text-face' and 'default-face' for 'tooltip-show'.
|
||
They allow changing the faces used for the tooltip text and frame
|
||
colors of the resulting tooltip frame from the default 'tooltip' face.
|
||
|
||
** Text security and suspiciousness
|
||
|
||
+++
|
||
*** New library textsec.el.
|
||
This library contains a number of checks for whether a string is
|
||
"suspicious". This usually means that the string contains characters
|
||
that have glyphs that can be confused with other, more commonly used
|
||
glyphs, or contain bidirectional (or other) formatting characters that
|
||
may be used to confuse a user.
|
||
|
||
+++
|
||
*** New user option 'textsec-check'.
|
||
If non-nil (which is the default), Emacs packages that are vulnerable
|
||
to attackers trying to confuse the users will use the textsec library
|
||
to mark suspicious text. For instance shr/eww will mark suspicious
|
||
URLs and links, Gnus will mark suspicious From addresses, and
|
||
Message mode will query the user if the user is sending mail to a
|
||
suspicious address. If this variable is nil, these checks aren't
|
||
performed.
|
||
|
||
+++
|
||
*** New function 'textsec-suspicious-p'.
|
||
This is the main function Emacs applications should be using to check
|
||
whether a string is suspicious. It heeds the 'textsec-check' user
|
||
option.
|
||
|
||
** Keymaps and key definitions
|
||
|
||
+++
|
||
*** 'where-is-internal' can now filter events marked as non key events.
|
||
If a command maps to a key binding like '[some-event]', and 'some-event'
|
||
has a symbol plist containing a non-nil 'non-key-event' property, then
|
||
that binding is ignored by 'where-is-internal'.
|
||
|
||
+++
|
||
*** New functions for defining and manipulating keystrokes.
|
||
These all take the syntax defined by 'key-valid-p'. None of the older
|
||
functions have been deprecated or altered, but they are now
|
||
de-emphasized in the documentation.
|
||
|
||
+++
|
||
*** Use 'keymap-set' instead of 'define-key'.
|
||
|
||
+++
|
||
*** Use 'keymap-global-set' instead of 'global-set-key'.
|
||
|
||
+++
|
||
*** Use 'keymap-local-set' instead of 'local-set-key'.
|
||
|
||
+++
|
||
*** Use 'keymap-global-unset' instead of 'global-unset-key'.
|
||
|
||
+++
|
||
*** Use 'keymap-local-unset' instead of 'local-unset-key'.
|
||
|
||
+++
|
||
*** Use 'keymap-substitute' instead of 'substitute-key-definition'.
|
||
|
||
+++
|
||
*** Use 'keymap-set-after' instead of 'define-key-after'.
|
||
|
||
+++
|
||
*** Use 'keymap-lookup' instead of 'lookup-keymap' and 'key-binding'.
|
||
|
||
+++
|
||
*** Use 'keymap-local-lookup' instead of 'local-key-binding'.
|
||
|
||
+++
|
||
*** Use 'keymap-global-lookup' instead of 'global-key-binding'.
|
||
|
||
+++
|
||
*** 'define-key' now takes an optional REMOVE argument.
|
||
If non-nil, remove the definition from the keymap. This is subtly
|
||
different from setting a definition to nil (when the keymap has a
|
||
parent).
|
||
|
||
+++
|
||
*** 'read-multiple-choice' now takes an optional SHOW-HELP argument.
|
||
If non-nil, show the help buffer immediately, before any user input.
|
||
|
||
+++
|
||
*** New function 'key-valid-p'.
|
||
The 'kbd' function is quite permissive, and will try to return
|
||
something usable even if the syntax of the argument isn't completely
|
||
correct. The 'key-valid-p' predicate does a stricter check of the
|
||
syntax.
|
||
|
||
---
|
||
*** New function 'key-parse'.
|
||
This is like 'kbd', but only returns vectors instead of a mix of
|
||
vectors and strings.
|
||
|
||
+++
|
||
*** New ':type' for 'defcustom' for keys.
|
||
The new 'key' type can be used for options that should be a valid key
|
||
according to 'key-valid-p'. The type 'key-sequence' is now obsolete.
|
||
|
||
+++
|
||
** New substitution in docstrings and 'substitute-command-keys'.
|
||
Use \\`KEYSEQ' to insert a literal key sequence "KEYSEQ" (for example
|
||
\\`C-k') in a docstring or when calling 'substitute-command-keys',
|
||
which will use the same face as a command substitution. This should
|
||
be used only when a key sequence has no corresponding command, for
|
||
example when it is read directly with 'read-key-sequence'. It must be
|
||
a valid key sequence according to 'key-valid-p'.
|
||
|
||
+++
|
||
** New function 'file-name-split'.
|
||
This returns a list of all the components of a file name.
|
||
|
||
+++
|
||
** New function 'file-name-parent-directory'.
|
||
This returns the parent directory of a file name.
|
||
|
||
+++
|
||
** New macro 'with-undo-amalgamate'.
|
||
It records a particular sequence of operations as a single undo step.
|
||
|
||
+++
|
||
** New command 'yank-media'.
|
||
This command supports yanking non-plain-text media like images and
|
||
HTML from other applications into Emacs. It is only supported in
|
||
modes that have registered support for it, and only on capable
|
||
platforms.
|
||
|
||
+++
|
||
** New command 'yank-media-types'.
|
||
This command lets you examine all data in the current selection and
|
||
the clipboard, and insert it into the buffer.
|
||
|
||
+++
|
||
** New variable 'yank-transform-functions'.
|
||
This variable allows the user to alter the string to be inserted.
|
||
|
||
---
|
||
** New command 'yank-in-context'.
|
||
This command tries to preserve string/comment syntax when yanking.
|
||
|
||
---
|
||
** New function 'minibuffer-lazy-highlight-setup'.
|
||
This function allows setting up the minibuffer so that lazy
|
||
highlighting of its content is applied in the original window.
|
||
|
||
+++
|
||
** New text property 'inhibit-isearch'.
|
||
If set, 'isearch' will skip these areas, which can be useful (for
|
||
instance) when covering huge amounts of data (that has no meaningful
|
||
searchable data, like image data) with a 'display' text property.
|
||
|
||
+++
|
||
** 'insert-image' now takes an INHIBIT-ISEARCH optional parameter.
|
||
It marks the image with the 'inhibit-isearch' text property, which
|
||
inhibits 'isearch' matching the STRING parameter.
|
||
|
||
---
|
||
** New variable 'replace-regexp-function'.
|
||
Function to call to convert the entered FROM string to an Emacs
|
||
regexp in 'query-replace' and similar commands. It can be used to
|
||
implement a different regexp syntax for search/replace.
|
||
|
||
---
|
||
** New variables to customize defaults of FROM for 'query-replace*' commands.
|
||
The new variable 'query-replace-read-from-default' can be set to a
|
||
function that returns the default value of FROM when 'query-replace'
|
||
prompts for a string to be replaced. An example of such a function is
|
||
'find-tag-default'.
|
||
|
||
The new variable 'query-replace-read-from-regexp-default' can be set
|
||
to a function (such as 'find-tag-default-as-regexp') that returns the
|
||
default value of FROM when 'query-replace-regexp' prompts for a regexp
|
||
whose matches are to be replaced. If these variables are nil (which
|
||
is the default), 'query-replace' and 'query-replace-regexp' take the
|
||
default value from the previous FROM-TO pair.
|
||
|
||
---
|
||
** New user option 'pp-use-max-width'.
|
||
If non-nil, 'pp' will attempt to limit the line length when formatting
|
||
long lists and vectors.
|
||
|
||
---
|
||
** New function 'pp-emacs-lisp-code'.
|
||
'pp' formats general Lisp sexps. This function does much the same,
|
||
but applies formatting rules appropriate for Emacs Lisp code.
|
||
|
||
+++
|
||
** New function 'file-has-changed-p'.
|
||
This convenience function is useful when writing code that parses
|
||
files at run-time, and allows Lisp programs to re-parse files only
|
||
when they have changed.
|
||
|
||
+++
|
||
** 'abbreviate-file-name' now respects magic file name handlers.
|
||
|
||
---
|
||
** New function 'font-has-char-p'.
|
||
This can be used to check whether a specific font has a glyph for a
|
||
character.
|
||
|
||
+++
|
||
** 'window-text-pixel-size' now accepts a new argument IGNORE-LINE-AT-END.
|
||
This controls whether or not the last screen line of the text being
|
||
measured will be counted for the purpose of calculating the text
|
||
dimensions.
|
||
|
||
+++
|
||
** 'window-text-pixel-size' understands a new meaning of FROM.
|
||
Specifying a cons as the FROM argument allows to start measuring text
|
||
from a specified amount of pixels above or below a position.
|
||
|
||
+++
|
||
** 'window-body-width' and 'window-body-height' can use remapped faces.
|
||
Specifying 'remap' as the PIXELWISE argument now checks if the default
|
||
face was remapped, and if so, uses the remapped face to determine the
|
||
character width/height.
|
||
|
||
+++
|
||
** 'set-window-vscroll' now accepts a new argument PRESERVE-VSCROLL-P.
|
||
This means the vscroll will not be reset when set on a window that is
|
||
"frozen" due to a mini-window being resized.
|
||
|
||
** XDG support
|
||
|
||
---
|
||
*** New function 'xdg-state-home'.
|
||
It returns the new 'XDG_STATE_HOME' environment variable. It should
|
||
point to a file name that "contains state data that should persist
|
||
between (application) restarts, but that is not important or portable
|
||
enough to the user that it should be stored in $XDG_DATA_HOME".
|
||
(This variable was introduced in the XDG Base Directory Specification
|
||
version 0.8 released on May 8, 2021.)
|
||
|
||
---
|
||
*** New function 'xdg-current-desktop'.
|
||
It returns a list of strings, corresponding to the colon-separated
|
||
list of names in the 'XDG_CURRENT_DESKTOP' environment variable, which
|
||
identify the current desktop environment.
|
||
(This variable was introduced in XDG Desktop Entry Specification
|
||
version 1.2.)
|
||
|
||
---
|
||
*** New function 'xdg-session-type'.
|
||
It returns the 'XDG_SESSION_TYPE' environment variable. (This is not
|
||
part of any official standard; see the man page pam_systemd(8) for
|
||
more information.)
|
||
|
||
+++
|
||
** New macro 'with-delayed-message'.
|
||
This macro is like 'progn', but will output the specified message if
|
||
the body takes longer to execute than the specified timeout.
|
||
|
||
---
|
||
** New function 'funcall-with-delayed-message'.
|
||
This function is like 'funcall', but will output the specified message
|
||
if the function takes longer to execute than the specified timeout.
|
||
|
||
** Locale
|
||
|
||
---
|
||
*** New variable 'current-locale-environment'.
|
||
This holds the value of the previous call to 'set-locale-environment'.
|
||
|
||
---
|
||
*** New macro 'with-locale-environment'.
|
||
This macro can be used to change the locale temporarily while
|
||
executing code.
|
||
|
||
** table.el
|
||
|
||
---
|
||
*** New user option 'table-latex-environment'.
|
||
This allows switching between "table" and "tabular".
|
||
|
||
** Tabulated List Mode
|
||
|
||
+++
|
||
*** A column can now be set to an image descriptor.
|
||
The 'tabulated-list-entries' variable now supports using an image
|
||
descriptor, which means to insert an image in that column instead of
|
||
text. See the documentation string of that variable for details.
|
||
|
||
+++
|
||
** ':keys' in 'menu-item' can now be a function.
|
||
If so, it is called whenever the menu is computed, and can be used to
|
||
calculate the keys dynamically.
|
||
|
||
+++
|
||
** New major mode 'clean-mode'.
|
||
This is a new major mode meant for debugging. It kills absolutely all
|
||
local variables and removes overlays and text properties.
|
||
|
||
+++
|
||
** 'kill-all-local-variables' can now kill all local variables.
|
||
If given the new optional KILL-PERMANENT argument, also kill permanent
|
||
local variables.
|
||
|
||
+++
|
||
** Third 'mapconcat' argument SEPARATOR is now optional.
|
||
An explicit nil always meant the empty string, now it can be left out.
|
||
|
||
+++
|
||
** New function 'define-keymap'.
|
||
This function allows defining a number of keystrokes with one form.
|
||
|
||
+++
|
||
** New macro 'defvar-keymap'.
|
||
This macro allows defining keymap variables more conveniently.
|
||
|
||
** 'defvar-keymap' can specify 'repeat-mode' behavior for the keymap.
|
||
Use ':repeat t' to have all bindings be repeatable or for more
|
||
advanced usage:
|
||
|
||
':repeat (:enter (commands ...) :exit (commands ...))'
|
||
|
||
---
|
||
** 'kbd' can now be used in built-in, preloaded libraries.
|
||
It no longer depends on edmacro.el and cl-lib.el.
|
||
|
||
+++
|
||
** New function 'image-at-point-p'.
|
||
This function returns t if point is on a valid image, and nil
|
||
otherwise.
|
||
|
||
+++
|
||
** New function 'buffer-text-pixel-size'.
|
||
This is similar to 'window-text-pixel-size', but can be used when the
|
||
buffer isn't displayed.
|
||
|
||
+++
|
||
** New function 'string-pixel-width'.
|
||
This returns the width of a string in pixels. This can be useful when
|
||
dealing with variable pitch fonts and glyphs that have widths that
|
||
aren't integer multiples of the default font.
|
||
|
||
+++
|
||
** New function 'string-glyph-split'.
|
||
This function splits a string into a list of strings representing
|
||
separate glyphs. This takes into account combining characters and
|
||
grapheme clusters.
|
||
|
||
---
|
||
** 'lookup-key' is more permissive when searching for extended menu items.
|
||
In Emacs 28.1, the behavior of 'lookup-key' was changed: when looking
|
||
for a menu item '[menu-bar Foo-Bar]', first try to find an exact
|
||
match, then look for the lowercased '[menu-bar foo-bar]'.
|
||
|
||
This has been extended, so that when looking for a menu item with a
|
||
symbol containing spaces, as in '[menu-bar Foo\ Bar]', first look for
|
||
an exact match, then the lowercased '[menu-bar foo\ bar]' and finally
|
||
'[menu-bar foo-bar]'. This further improves backwards-compatibility
|
||
when converting menus to use 'easy-menu-define'.
|
||
|
||
** xwidgets
|
||
|
||
+++
|
||
*** The function 'make-xwidget' now accepts an optional RELATED argument.
|
||
This argument is used as another widget for the newly created WebKit
|
||
widget to share settings and subprocesses with. It must be another
|
||
WebKit widget.
|
||
|
||
+++
|
||
*** New function 'xwidget-perform-lispy-event'.
|
||
This function allows you to send events to xwidgets. Usually, some
|
||
equivalent of the event will be sent, but there is no guarantee of
|
||
what the widget will actually receive.
|
||
|
||
On GTK+, only key and function key events are implemented.
|
||
|
||
+++
|
||
*** New function 'xwidget-webkit-load-html'.
|
||
This function is used to load HTML text into WebKit xwidgets
|
||
directly, in contrast to creating a temporary file to hold the
|
||
markup, and passing the URI of the file as an argument to
|
||
'xwidget-webkit-goto-uri'.
|
||
|
||
+++
|
||
*** New functions for performing searches on WebKit xwidgets.
|
||
Some new functions, such as 'xwidget-webkit-search', have been added
|
||
for performing searches on WebKit xwidgets.
|
||
|
||
+++
|
||
*** New function 'xwidget-webkit-back-forward-list'.
|
||
This function returns the history of page-loads in a WebKit xwidget.
|
||
|
||
+++
|
||
*** New function 'xwidget-webkit-estimated-load-progress'.
|
||
This function returns the estimated progress of page loading in a
|
||
WebKit xwidget.
|
||
|
||
+++
|
||
*** New function 'xwidget-webkit-stop-loading'.
|
||
This function terminates all data transfer during page loads in a
|
||
WebKit xwidget.
|
||
|
||
+++
|
||
*** 'load-changed' xwidget events are now more detailed.
|
||
In particular, they can now have different arguments based on the
|
||
state of the WebKit widget. 'load-finished' is sent when a load has
|
||
completed, 'load-started' when a load first starts, 'load-redirected'
|
||
after a redirect, and 'load-committed' when the WebKit widget first
|
||
commits to the load.
|
||
|
||
+++
|
||
*** New event type 'xwidget-display-event'.
|
||
These events are sent whenever an xwidget requests that Emacs display
|
||
another xwidget. The only arguments to this event are the xwidget
|
||
that should be displayed, and the xwidget that asked to display it.
|
||
|
||
+++
|
||
*** New function 'xwidget-webkit-set-cookie-storage-file'.
|
||
This function is used to control where and if an xwidget stores
|
||
cookies set by web pages on disk.
|
||
|
||
---
|
||
** New variable 'help-buffer-under-preparation'.
|
||
This variable is bound to t during the preparation of a "*Help*" buffer.
|
||
|
||
+++
|
||
** Timestamps like '(1 . 1000)' now work without warnings being generated.
|
||
For example, '(time-add nil '(1 . 1000))' no longer warns that the
|
||
'(1 . 1000)' acts like '(1000 . 1000000)'. This warning, which was a
|
||
temporary transition aid for Emacs 27, has served its purpose.
|
||
|
||
+++
|
||
** 'encode-time' now also accepts a 6-element list with just time and date.
|
||
'(encode-time (list SECOND MINUTE HOUR DAY MONTH YEAR))' is now short for
|
||
'(encode-time (list SECOND MINUTE HOUR DAY MONTH YEAR nil -1 nil))'.
|
||
|
||
+++
|
||
** 'date-to-time' now assumes earliest values if its argument lacks
|
||
month, day, or time. For example, (date-to-time "2021-12-04") now
|
||
assumes a time of 00:00 instead of signaling an error.
|
||
|
||
+++
|
||
** 'format-seconds' now allows suppressing zero-value trailing elements.
|
||
The new "%x" non-printing control character will suppress zero-value
|
||
elements that appear after "%x".
|
||
|
||
+++
|
||
** New events for taking advantage of touchscreen devices.
|
||
The events 'touchscreen-begin, 'touchscreen-update', and
|
||
'touchscreen-end' have been added to take better advantage of
|
||
touch-capable display panels.
|
||
|
||
+++
|
||
** New error symbol 'permission-denied'.
|
||
This is a subcategory of 'file-error', and is signaled when some file
|
||
operation fails because the OS doesn't allow Emacs to access a file or
|
||
a directory.
|
||
|
||
+++
|
||
** The ':underline' face attribute now accepts a new property.
|
||
The property ':position' now specifies the position of the underline
|
||
when used as part of a property list specification for the
|
||
':underline' attribute.
|
||
|
||
+++
|
||
** 'defalias' records a more precise history of definitions.
|
||
This is recorded in the 'function-history' symbol property.
|
||
|
||
---
|
||
** New hook 'save-place-after-find-file-hook'.
|
||
This is called at the end of 'save-place-find-file-hook'.
|
||
|
||
---
|
||
** 'indian-tml-base-table' no longer translates digits.
|
||
Use 'indian-tml-base-digits-table' if you want digits translation.
|
||
|
||
---
|
||
** 'indian-tml-itrans-v5-hash' no longer translates digits.
|
||
Use 'indian-tml-itrans-digits-v5-hash' if you want digits
|
||
translation.
|
||
|
||
+++
|
||
** 'shell-quote-argument' has a new optional parameter POSIX.
|
||
This is useful when quoting shell arguments for a remote shell
|
||
invocation. Such shells are POSIX conformant by default.
|
||
|
||
+++
|
||
** 'make-process' can set connection type independently for input and output.
|
||
When calling 'make-process', communication via pty can be enabled
|
||
selectively for just input or output by passing a cons cell for
|
||
':connection-type', e.g. '(pipe . pty)'. When examining a process
|
||
later, you can determine whether a particular stream for a process
|
||
uses a pty by passing one of 'stdin', 'stdout', or 'stderr' as the
|
||
second argument to 'process-tty-name'.
|
||
|
||
+++
|
||
** 'signal-process' now consults the list 'signal-process-functions'.
|
||
This is to determine which function has to be called in order to
|
||
deliver the signal. This allows Tramp to send the signal to remote
|
||
asynchronous processes. The hitherto existing implementation has been
|
||
moved to 'internal-default-signal-process'.
|
||
|
||
+++
|
||
** Some system information functions honor remote systems now.
|
||
'list-system-processes' returns remote process IDs.
|
||
'memory-info' returns memory information of remote systems.
|
||
'process-attributes' expects a remote process ID.
|
||
This happens only when the current buffer's 'default-directory' is
|
||
remote. In order to preserve the old behavior, bind
|
||
'default-directory' to a local directory, like
|
||
|
||
(let ((default-directory temporary-file-directory))
|
||
(list-system-processes))
|
||
|
||
+++
|
||
** New functions 'take' and 'ntake'.
|
||
'(take N LIST)' returns the first N elements of LIST; 'ntake' does
|
||
the same but works by modifying LIST destructively.
|
||
|
||
---
|
||
** 'string-split' is now an alias for 'split-string'.
|
||
|
||
+++
|
||
** 'format-spec' now accepts functions in the replacement.
|
||
The function is called only when used in the format string. This is
|
||
useful to avoid side-effects such as prompting, when the value is not
|
||
actually being used for anything.
|
||
|
||
+++
|
||
** The variable 'max-specpdl-size' has been made obsolete.
|
||
Now 'max-lisp-eval-depth' alone is used for limiting Lisp recursion
|
||
and stack usage. 'max-specpdl-size' is still present as a plain
|
||
variable for compatibility but its limiting powers have been taken away.
|
||
|
||
|
||
* Changes in Emacs 29.1 on Non-Free Operating Systems
|
||
|
||
** MS-Windows
|
||
|
||
---
|
||
*** Emacs now supports double-buffering on MS-Windows to reduce display flicker.
|
||
(This was supported on Free systems since Emacs 26.1.)
|
||
|
||
To disable double-buffering (e.g., if it causes display problems), set
|
||
the frame parameter 'inhibit-double-buffering' to a non-nil value.
|
||
You can do that either by adding
|
||
|
||
'(inhibit-double-buffering . t)
|
||
|
||
to 'default-frame-alist', or by modifying the frame parameters of the
|
||
selected frame by evaluating
|
||
|
||
(modify-frame-parameters nil '((inhibit-double-buffering . t)))
|
||
|
||
+++
|
||
*** Emacs now supports system dark mode.
|
||
On Windows 10 (version 1809 and higher) and Windows 11, Emacs will now
|
||
follow the system's dark mode: GUI frames use the appropriate light or
|
||
dark title bar and scroll bars, based on the user's Windows-wide color
|
||
settings.
|
||
|
||
---
|
||
*** Emacs now uses native image APIs to display some image formats.
|
||
On Windows 2000 and later, Emacs now defaults to using the native
|
||
image APIs for displaying the BMP, GIF, JPEG, PNG, and TIFF images.
|
||
This means Emacs on MS-Windows needs no longer use external image
|
||
support libraries to display those images. Other image types -- XPM,
|
||
SVG, and WEBP -- still need support libraries for Emacs to be able to
|
||
display them.
|
||
|
||
The use of native image APIs is controlled by the variable
|
||
'w32-use-native-image-API', whose value now defaults to t on systems
|
||
where those APIs are available.
|
||
|
||
+++
|
||
*** Emacs now supports display of BMP images using native image APIs.
|
||
When 'w32-use-native-image-API' is non-nil, Emacs on MS-Windows now
|
||
has built-in support for displaying BMP images.
|
||
|
||
** Cygwin
|
||
|
||
---
|
||
*** 'process-attributes' is now implemented.
|
||
|
||
|
||
----------------------------------------------------------------------
|
||
This file is part of GNU Emacs.
|
||
|
||
GNU Emacs is free software: you can redistribute it and/or modify
|
||
it under the terms of the GNU General Public License as published by
|
||
the Free Software Foundation, either version 3 of the License, or
|
||
(at your option) any later version.
|
||
|
||
GNU Emacs is distributed in the hope that it will be useful,
|
||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||
GNU General Public License for more details.
|
||
|
||
You should have received a copy of the GNU General Public License
|
||
along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>.
|
||
|
||
|
||
Local variables:
|
||
coding: utf-8
|
||
mode: outline
|
||
mode: emacs-news
|
||
paragraph-separate: "[ ]"
|
||
end:
|