123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409 |
- GNU Emacs NEWS -- history of user-visible changes.
- Copyright (C) 2014-2016 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 25.
- See file HISTORY for a list of GNU Emacs versions and release dates.
- See files NEWS.24, NEWS.23, NEWS.22, NEWS.21, NEWS.20, NEWS.19, 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 necessary documentation updates are complete.
- (This means all relevant manuals in doc/ AND lisp doc-strings.)
- --- means no change in the manuals is needed.
- When you add a new item, use the appropriate mark if you are sure it applies,
- otherwise leave it unmarked.
- * Installation Changes in Emacs 25.2
- ** The new option 'configure --enable-gcc-warnings=warn-only' causes
- GCC to issue warnings without stopping the bild. This behavior is now
- the default in developer builds. As before, use
- '--disable-gcc-warnings' to suppress GCC's warnings, and
- '--enable-gcc-warnings' to stop the build if GCC issues warnings.
- +++
- ** New configure option '--disable-build-details' attempts to build an
- Emacs that is more likely to be reproducible; that is, if you build
- and install Emacs twice, the second Emacs is a copy of the first.
- Deterministic builds omit the build date from the output of the
- emacs-version and erc-cmd-SV functions, and the leave the following
- variables nil: emacs-build-system, emacs-build-time,
- erc-emacs-build-time.
- ** Emacs no longer works on IRIX. We expect that Emacs users are not
- affected by this, as SGI stopped supporting IRIX in December 2013.
- * Startup Changes in Emacs 25.2
- * Changes in Emacs 25.2
- +++
- ** A number of accessors for the value returned by 'file-attributes'
- has been added. They are: 'file-attribute-type',
- 'file-attribute-link-number', 'file-attribute-user-id',
- 'file-attribute-group-id', 'file-attribute-access-time',
- 'file-attribute-modification-time',
- 'file-attribute-status-change-time', 'file-attribute-size',
- 'file-attribute-modes', 'file-attribute-inode-number', and
- 'file-attribute-device-number'
- +++
- ** The new function 'buffer-hash' has been added, and can be used to
- compute a fash, non-consing hash of the contents of a buffer.
- ---
- ** 'fill-paragraph' no longer marks the buffer as changed unless it
- actually changed something.
- ---
- ** The locale language name 'ca' is now mapped to the language
- environment 'Catalan', which has been added.
- ---
- ** 'align-regexp' has a separate history for its interactive argument
- 'align-regexp' no longer shares its history with all other
- history-less functions that use 'read-string'
- +++
- ** The networking code has been reworked so that it's more
- asynchronous than it was (when specifying :nowait t in
- 'make-network-process'). How asynchronous it is varies based on the
- capabilities of the system, but on a typical GNU/Linux system the DNS
- resolution, the connection, and (for TLS streams) the TLS negotiation
- are all done without blocking the main Emacs thread. To get
- asynchronous TLS, the TLS boot parameters have to be passed in (see
- the manual for details).
- Certain process oriented functions (like 'process-datagram-address')
- will block until socket setup has been performed. The recommended way
- to deal with asynchronous sockets is to avoid interacting with them
- until they have changed status to "run". This is most easily done
- from a process sentinel.
- ** 'make-network-process' and 'open-network-stream' sometimes allowed
- :service to be an integer string (e.g., :service "993") and sometimes
- required an integer (e.g., :service 993). This difference has been
- eliminated, and integer strings work everywhere.
- ** It is possible to disable attempted recovery on fatal signals
- Two new variables allow to disable attempts to recover from stack
- overflow and to avoid automatic auto-save when Emacs is delivered a
- fatal signal. 'attempt-stack-overflow-recovery', if set to 'nil',
- will disable attempts to recover from C stack overflows; Emacs will
- then crash as with any other fatal signal.
- 'attempt-orderly-shutdown-on-fatal-signal', if set to 'nil', will
- disable attempts to auto-save the session and shut down in an orderly
- fashion when Emacs receives a fatal signal; instead, Emacs will
- terminate immediately. Both variables are non-'nil' by default.
- These variables are for users who would like to avoid the small
- probability of data corruption due to techniques Emacs uses to recover
- in these situations.
- * Editing Changes in Emacs 25.2
- * Changes in Specialized Modes and Packages in Emacs 25.2
- ** eww
- +++
- *** A new 's' command for switching to another eww buffer via the minibuffer.
- ---
- *** The 'o' command ('shr-save-contents') has moved to 'O' to avoid collision
- with the 'o' command from 'image-map'.
- +++
- ** The commands that add ChangeLog entries now prefer a VCS root directory
- for the ChangeLog file, if none already exists. Customize
- 'change-log-directory-files' to nil for the old behavior.
- ---
- ** Support for non-string values of 'time-stamp-format' has been removed.
- ** Tramp
- +++
- *** New connection method "sg", which allows to edit files under
- different group ID.
- +++
- *** New connection method "doas" for OpenBSD hosts.
- ---
- ** 'auto-revert-use-notify' is set back to t in 'global-auto-revert-mode'.
- ** CSS mode
- ---
- *** Support for completing attribute values and bang-rules using the
- 'completion-at-point' command.
- * New Modes and Packages in Emacs 25.2
- * Incompatible Lisp Changes in Emacs 25.2
- +++
- ** Resizing a frame no longer runs 'window-configuration-change-hook'.
- Put your function on 'window-size-change-functions' instead.
- * Lisp Changes in Emacs 25.2
- ** New var syntax-ppss-table to control the syntax-table used in syntax-ppss
- ** Autoload files can be generated without timestamps,
- by setting 'autoload-timestamps' to nil.
- FIXME As an experiment, nil is the current default.
- If no insurmountable problems before next release, it can stay that way.
- ** 'ert-with-function-mocked' of 'ert-x package allows mocking of functions
- in unit tests.
- ---
- ** 'gnutls-boot' now takes a parameter :complete-negotiation that says
- that negotiation should complete even on non-blocking sockets.
- +++
- ** New functions 'window-pixel-width-before-size-change' and
- 'window-pixel-height-before-size-change' allow to detect which window
- changed size when 'window-size-change-functions' are run.
- +++
- ** New function 'display-buffer-reuse-mode-window' is an action function
- suitable for use in 'display-buffer-alist'. For example, to avoid creating
- a new window when opening man pages when there's already one, use
- (add-to-list 'display-buffer-alist
- '("\\`\\*Man .*\\*\\'" .
- (display-buffer-reuse-mode-window
- (inhibit-same-window . nil)
- (mode . Man-mode))))
- +++
- ** New function 'func-arity' returns information about the argument list
- of an arbitrary function.
- This is a generalization of 'subr-arity' for functions that are not
- built-in primitives. We recommend using this new function instead of
- 'subr-arity'.
- +++
- ** 'parse-partial-sexp' state has a new element. Element 10 is
- non-nil when the last character scanned might be the first character
- of a two character construct, i.e. a comment delimiter or escaped
- character. Its value is the syntax of that last character.
- +++
- ** 'parse-partial-sexp''s state, element 9, has now been confirmed as
- permanent and documented, and may be used by Lisp programs. Its value
- is a list of currently open parenthesis positions, starting with the
- outermost parenthesis.
- ** The function 'redirect-debugging-output' now works on platforms
- other than GNU/Linux.
- +++
- ** New functions 'sxhash-eq' and 'sxhash-eql' return hash codes of a
- Lisp object suitable for use with 'eq' and 'eql' correspondingly. If
- two objects are 'eq' ('eql'), then the result of 'sxhash-eq'
- ('sxhash-eql') on them will be the same.
- +++
- ** Function 'sxhash' has been renamed to 'sxhash-equal' for
- consistency with the new functions. For compatibility, 'sxhash'
- remains as an alias to 'sxhash-equal'.
- * Changes in Emacs 25.2 on Non-Free Operating Systems
- ** Intercepting hotkeys on Windows 7 and later now works better.
- The new keyboard hooking code properly grabs system hotkeys such as
- Win-* and Alt-TAB, in a way that Emacs can get at them before the
- system. This makes the 'w32-register-hot-key' functionality work
- again on all versions of MS-Windows starting with Windows 7. On
- Windows NT and later you can now register any hotkey combination. (On
- Windows 9X, the previous limitations, spelled out in the Emacs manual,
- still apply.)
- * Installation Changes in Emacs 25.1
- +++
- ** Building Emacs now requires C99 or later.
- +++
- ** Building Emacs now requires GNU make, version 3.81 or later.
- +++
- ** New configure option --with-cairo.
- This builds Emacs with Cairo drawing. As a side effect, it provides
- support for built-in printing, when Emacs was built with GTK+.
- Cairo drawing is an experimental feature in Emacs, and subject to
- change in future releases.
- +++
- ** New configure option --with-modules.
- This enables support for loading dynamic modules; see below.
- ---
- ** By default, Emacs no longer works on IRIX. We expect that Emacs
- users are not affected by this, as SGI stopped supporting IRIX in
- December 2013. If you are affected, please send a bug report. You
- should be able to work around the problem either by porting the Emacs
- undumping code to GCC under IRIX, or by configuring --with-wide-int,
- or by sticking with Emacs 24.4.
- ---
- ** The Emacs garbage collector assumes GC_MARK_STACK == GC_MAKE_GCPROS_NOOPS.
- The GC_MAKE_GCPROS_NOOPS stack-marking variant has been the default
- since Emacs 24.4, and the other variants were undocumented and were
- obstacles to maintenance and development. GC_MARK_STACK and its
- related symbols have been removed from the C internals.
- ---
- ** 'configure' now prefers gnustep-config when configuring GNUstep.
- If gnustep-config is not available, the old heuristics are used.
- ---
- ** 'configure' now prefers inotify to gfile for file notification,
- unless gfile is explicitly requested via --with-file-notification='gfile'.
- ---
- ** 'configure' detects the kqueue file notification library on *BSD
- and Mac OS X machines.
- ---
- ** The configure option '--with-pkg-config-prog' has been removed.
- Use './configure PKG_CONFIG=/full/name/of/pkg-config' if you need to.
- ---
- ** The configure option '--with-mmdf' has been removed.
- It was no longer useful, as it relied on libraries that are no longer
- supported, and its presence led to confusion during configuration.
- This affects only the 'movemail' utility; Emacs itself can still
- process MMDF-format files as before.
- +++
- ** The configure option '--enable-silent-rules' is now the default,
- and silent rules are now quieter. To get the old behavior where
- 'make' chatters a lot, configure with '--disable-silent-rules' or
- build with 'make V=1'.
- ---
- ** The configure option '--with-gameuser' now allows you to specify a
- group instead of a user if its argument is prefixed by ':' (a colon).
- This will cause the game score files in ${localstatedir}/games/emacs
- to be owned by that group, and the helper program for updating them to
- be installed setgid. The option now defaults to the 'games' group.
- ---
- ** The 'grep-changelog' script (and its manual page) are no longer included.
- It has no particular connection to Emacs and has not changed in years,
- so if you want to use it, you can always take a copy from an older Emacs.
- ---
- ** Emacs 25 comes with a new set of icons.
- Various resolutions are available as etc/images/icons/hicolor/*/apps/emacs.png.
- The old Emacs logo icons are available as 'emacs23.png' in the same location.
- ---
- ** New make target 'check-expensive' to run additional tests.
- This includes all tests which run via "make check", plus additional
- tests which take more time to perform.
- * Startup Changes in Emacs 25.1
- +++
- ** When Emacs is given a file as a command line argument and
- 'initial-buffer-choice' is non-nil, display both the file and
- 'initial-buffer-choice'. When Emacs is given more than one file and
- 'initial-buffer-choice' is non-nil, show 'initial-buffer-choice'
- and *Buffer List*. This makes Emacs convenient to use from the
- command line when 'initial-buffer-choice' is non-nil.
- +++
- ** The value of 'initial-scratch-message' is now treated as a doc string
- and can contain escape sequences for command keys, quotes, and the like.
- ---
- ** The default height of GUI frames was enlarged.
- This is so there's enough space in the initial window to display the
- optional text about recovering crashes sessions, without losing the
- splash image display.
- * Changes in Emacs 25.1
- +++
- ** Xwidgets: a new feature for embedding native widgets inside Emacs buffers.
- If you have gtk3 and webkitgtk3 installed, and Emacs was built with
- xwidget support, you can access the embedded webkit browser with 'M-x
- xwidget-webkit-browse-url'. This opens a new buffer with the embedded
- browser. The buffer will have a new mode, 'xwidget-webkit-mode'
- (similar to 'image-mode'), which supports the webkit widget.
- +++
- *** New functions for xwidget-webkit mode 'xwidget-webkit-insert-string',
- 'xwidget-webkit-adjust-size-dispatch', 'xwidget-webkit-back',
- 'xwidget-webkit-browse-url', 'xwidget-webkit-reload',
- 'xwidget-webkit-current-url', 'xwidget-webkit-scroll-backward',
- 'xwidget-webkit-scroll-forward', 'xwidget-webkit-scroll-down',
- 'xwidget-webkit-scroll-up'.
- +++
- ** Emacs can now load shared/dynamic libraries (modules).
- A dynamic Emacs module is a shared library that provides additional
- functionality for use in Emacs Lisp programs, just like a package
- written in Emacs Lisp would. The functions 'load', 'require',
- 'load-file', etc. were extended to load such modules, as they do with
- Emacs Lisp packages. The new variable 'module-file-suffix' holds the
- system-dependent value of the file-name extension ('.so' on Posix
- hosts) of the module files.
- A module should export a C-callable function named
- 'emacs_module_init', which Emacs will call as part of the call to
- 'load' or 'require' which loads the module. It should also export a
- symbol named 'plugin_is_GPL_compatible' to indicate that its code is
- released under the GPL or compatible license; Emacs will refuse to
- load modules that don't export such a symbol.
- If a module needs to call Emacs functions, it should do so through the
- API defined and documented in the header file 'emacs-module.h'. Note
- that any module that provides Lisp-callable functions will have to use
- Emacs functions such as 'fset' and 'funcall', in order to register its
- functions with the Emacs Lisp interpreter.
- Modules can create 'user-ptr' Lisp objects that embed pointers to C
- structs defined by the module. This is useful for keeping around
- complex data structures created by a module, to be passed back to the
- module's functions. User-ptr objects can also have associated
- "finalizers" -- functions to be run when the object is GC'ed; this is
- useful for freeing any resources allocated for the underlying data
- structure, such as memory, open file descriptors, etc. A new
- predicate 'user-ptrp' returns non-nil if its argument is a 'user-ptr'
- object.
- Loadable modules in Emacs are an experimental feature, and subject to
- change in future releases. For that reason, their support is disabled
- by default, and must be enabled by using the '--with-modules' option
- at configure time.
- +++
- ** A second dir-local file (.dir-locals-2.el) is now accepted.
- See the variable 'dir-locals-file-2' for more information.
- +++
- ** Network security (TLS/SSL certificate validity and the like) is
- added via the new Network Security Manager (NSM) and controlled via
- the 'network-security-level' variable.
- ---
- ** International domain names (IDNA) are now encoded via the new
- puny.el library, so that one can visit web sites with non-ASCII URLs.
- +++
- ** C-h l now also lists the commands that were run.
- ** The new M-s M-w key binding uses eww to search the web for the
- text in the region.
- +++
- ** The new 'timer-list' command lists all active timers in a buffer
- where you can cancel them with the 'c' command.
- ** M-x suggests shorthands and ignores obsolete commands for completion.
- ** x-select-enable-clipboard is renamed select-enable-clipboard.
- x-select-enable-primary and renamed select-enable-primary.
- Additionally they both now apply to all systems (OSX, GNUstep, Windows, you
- name it), with the proviso that on some systems (e.g. Windows)
- select-enable-primary is ineffective since the system doesn't
- have the equivalent of a primary selection.
- +++
- ** New option 'switch-to-buffer-in-dedicated-window' allows you to
- customize how 'switch-to-buffer' proceeds interactively when the
- selected window is strongly dedicated to its buffer.
- +++
- ** The option 'even-window-heights' has been renamed to
- 'even-window-sizes' and now handles window widths as well.
- +++
- ** New function 'read-multiple-choice' use to prompt for
- multiple-choice questions, with a handy way to display help texts.
- +++
- ** terpri gets an optional arg ENSURE to conditionally output a newline.
- +++
- ** 'insert-register' now leaves point after the inserted text
- when called interactively. A prefix argument toggles this behavior.
- +++
- ** The new variable 'term-file-aliases' replaces some files from lisp/term.
- The function 'tty-run-terminal-initialization' consults this variable
- when deciding what terminal-specific initialization code to run.
- ---
- ** New variable 'system-configuration-features', listing some of the
- main features that Emacs was compiled with. This is mainly intended
- for use in Emacs bug reports.
- +++
- ** A password is now hidden also when typed in batch mode. Another
- hiding character but the default '.' can be used by let-binding the
- variable 'read-hide-char'.
- +++
- ** The Emacs pseudo-random number generator can be securely seeded.
- On system where Emacs can access the system entropy or some other
- cryptographically secure random stream, it now uses that when 'random'
- is called with its argument 't'. This allows cryptographically strong
- random values; in particular, the Emacs server now uses this facility
- to produce its authentication key.
- ---
- ** New input methods: 'tamil-dvorak' and 'programmer-dvorak'.
- * Editing Changes in Emacs 25.1
- +++
- ** M-x suggests shorthands and ignores obsolete commands for completion.
- ** Changes in undo
- +++
- *** Successive single-char deletions are collapsed in the undo-log just like
- successive char insertions. Which commands invoke this behavior is
- controlled by the new 'undo-auto-amalgamate' function. See the node
- "Undo" in the ELisp manual for more details.
- +++
- *** The heuristic used to insert 'undo-boundary' after each command
- has changed, so that if a command causes changes in more than just the
- current buffer, Emacs now calls 'undo-boundary' in every buffer
- affected by the command.
- +++
- ** New command 'comment-line' bound to 'C-x C-;'.
- ** New and improved facilities for inserting Unicode characters
- ---
- *** Unicode names entered via C-x 8 RET now use substring completion by default.
- +++
- *** C-x 8 now has shorthands for several chars, such as U+2010
- (HYPHEN), U+2011 (NON-BREAKING HYPHEN), and U+2012 (FIGURE DASH). As
- before, you can type C-x 8 C-h to list shorthands.
- +++
- *** New minor mode electric-quote-mode for using curved quotes as you
- type. See also the new variable 'text-quoting-style'.
- ---
- ** New minor mode global-eldoc-mode is enabled by default.
- ---
- ** Emacs now uses "bracketed paste mode" on text terminals that support it.
- Bracketed paste mode causes text terminals to wrap pasted text in special
- escape sequences that allow Emacs to tell the difference between text
- you type and text you paste from other applications. Emacs then
- avoids interpreting each character in the pasted text as it does with
- keyboard input, which results in a paste experience similar to that
- under a window system, and significant performance improvements when
- pasting large amounts of text.
- Bracketed paste mode is disabled by default, so Emacs automatically
- enables it at startup if the terminal supports it.
- +++
- ** Emacs now supports the latest version of the UBA.
- The Emacs implementation of the Unicode Bidirectional Algorithm (UBA)
- was updated to support all the latest additions and changes introduced
- in Unicode Standard versions 6.3, 7.0, and the latest Unicode 8.0.
- This includes full support for directional isolates and the
- Bidirectional Parentheses Algorithm (BPA) specified by these Unicode
- standards.
- +++
- ** You can access 'mouse-buffer-menu' (C-down-mouse-1) using C-f10.
- +++
- ** New buffer-local 'electric-pair-local-mode'.
- +++
- ** New variable 'fast-but-imprecise-scrolling' inhibits
- fontification during full screen scrolling operations, giving less
- hesitant operation during auto-repeat of C-v, M-v at the cost of
- possible inaccuracies in the end position.
- +++
- ** New documentation command 'describe-symbol'.
- Works for functions, variables, faces, etc. It is bound to 'C-h o' by
- default.
- +++
- ** New function 'custom-prompt-customize-unsaved-options' checks for
- unsaved customizations and prompts user to customize (if found). It
- is intended for adding to 'kill-emacs-query-functions'.
- +++
- ** The old 'C-x w' bindings in hi-lock-mode are officially deprecated
- in favor of the global 'M-s h' bindings introduced in Emacs-23.1.
- They'll disappear soon.
- +++
- ** New bindings for 'query-replace-map'.
- 'undo', undo the last replacement; bound to 'u'.
- 'undo-all', undo all replacements; bound to 'U'.
- * Changes in Specialized Modes and Packages in Emacs 25.1
- ** Checkdoc
- +++
- *** New command 'checkdoc-package-keywords' checks if the
- current package keywords are recognized. Set the new option
- 'checkdoc-package-keywords-flag' to non-nil to make
- 'checkdoc-current-buffer' call this function automatically.
- +++
- *** New function 'checkdoc-file' checks for style errors.
- It's meant for use together with 'compile':
- emacs -batch --eval "(checkdoc-file \"subr.el\")"
- ** Desktop
- ---
- *** The desktop format version has been upgraded from 206 to 208.
- Although Emacs 25.1 can read a version 206 desktop, earlier Emacsen
- cannot read a version 208 desktop. To upgrade your desktop file, you
- must explicitly request the upgrade, by C-u M-x desktop-save. You are
- recommended to do this as soon as you have firmly upgraded to Emacs
- 25.1 (or later). Should you ever need to downgrade your desktop file
- to version 206, you can do this with C-u C-u M-x desktop-save.
- +++
- ** New function 'bookmark-set-no-overwrite' bound to C-x r M.
- It raises an error if a bookmark of that name already exists,
- unlike 'bookmark-set' which silently updates an existing bookmark.
- ** Gnus
- +++
- *** New user options 'mm-html-inhibit-images' and 'mm-html-blocked-images'
- now control how mm-* functions fetch and display images in an HTML
- message. Gnus still uses 'gnus-inhibit-images' and 'gnus-blocked-images'
- for that purpose, i.e., binds mm-html- variables with those gnus-
- variables, but other packages do not have to bind gnus- variables now.
- ---
- *** 'mm-inline-text-html-with-images' has been removed.
- Use 'mm-html-inhibit-images' instead. Note that the value is opposite
- in meaning.
- ** IMAP
- ---
- *** 'imap-ssl-program' has been removed, and imap.el uses the internal
- GnuTLS encryption functions if possible.
- ** JSON
- ---
- *** 'json-pretty-print' and 'json-pretty-print-buffer' now maintain
- the ordering of object keys by default.
- ---
- *** New commands 'json-pretty-print-ordered' and
- 'json-pretty-print-buffer-ordered' pretty prints JSON objects with
- object keys sorted alphabetically.
- +++
- ** Prog mode has some support for multi-mode indentation.
- This allows better indentation support in modes that support multiple
- programming languages in the same buffer, like literate programming
- environments or ANTLR programs with embedded Python code.
- A major mode can provide indentation context for a sub-mode through
- the 'prog-indentation-context' variable. To support this, modes that
- provide indentation should use 'prog-widen' instead of 'widen' and
- 'prog-first-column' instead of a literal zero. See the node
- "Mode-Specific Indent" in the ELisp manual for more details.
- ** Prettify Symbols mode
- +++
- *** Prettify Symbols mode supports custom composition predicates. By
- overriding the default 'prettify-symbols-compose-predicate', modes can
- specify in which contexts a symbol may be displayed as some Unicode
- character. 'prettify-symbols-default-compose-p' is the default which
- is suitable for most programming languages such as C or Lisp (but not
- (La)TeX).
- +++
- *** Symbols can be unprettified while point is inside them.
- New variable 'prettify-symbols-unprettify-at-point' configures this.
- ** Enhanced xterm support
- ---
- *** The new variable 'xterm-screen-extra-capabilities' for configuring xterm.
- This variable tells Emacs which advanced capabilities are available in
- the xterm terminal emulator used to display Emacs text-mode frames.
- The default is to check each capability, and use it if available.
- (This variable was introduced in Emacs 24.1, but was not announced in
- its NEWS.)
- ---
- *** Killing text now also sets the CLIPBOARD/PRIMARY selection
- in the surrounding GUI (using the OSC-52 escape sequence). This only works
- if your xterm supports it and enables the 'allowWindowOps' options (disabled
- by default at least in Debian, for security reasons).
- Similarly, you can yank the CLIPBOARD/PRIMARY selection (using the OSC-52
- escape sequence) if your xterm has the feature enabled but for that you
- additionally need to add 'getSelection' to 'xterm-extra-capabilities'.
- +++
- *** 'xterm-mouse-mode' now supports mouse-tracking (if your xterm supports it).
- ---
- ** The way to turn on and off 'save-place' mode has changed.
- It is no longer sufficient to load the saveplace library and set
- 'save-place' non-nil. Instead, use the two new minor modes:
- 'save-place-mode' turns on saving last place in every file, and
- 'save-place-local-mode' does that only for the file in whose buffer it
- is invoked. The 'save-place' variable is now an obsolete alias for
- 'save-place-mode', which replaces it, and 'toggle-save-place' is an
- obsolete alias for the new 'save-place-local-mode' command.
- ** ERC
- +++
- *** ERC can now hide message types by network or channel.
- 'erc-hide-list' will hide all messages of the specified type, while
- 'erc-network-hide-list' and 'erc-channel-hide-list' will only hide the
- specified message types for the respective specified targets.
- *** New variable 'erc-default-port-tls' used to connect to TLS IRC
- servers.
- ---
- *** Reconnection is now asynchronous.
- ---
- *** Nick completion is now case-insensitive again after inadvertently
- being made case-sensitive in Emacs 24.2.
- ** MPC
- ---
- *** New commands, key binds, and menu items.
- **** '<' and '>' for navigating previous and next tracks in playlist
- **** New play/pause command 'mpc-toggle-play' bound to 's'
- **** 'g' bound to new command 'mpc-seek-current' will navigate current
- track.
- **** New commands 'mpc-toggle-{consume,repeat,single,shuffle}' for
- toggling playback modes.
- ---
- *** Now supports connecting to a UNIX domain socket.
- ---
- *** Looks at more image file names to use as album art.
- Case-insensitively tries for .folder.png (freedesktop) and folder.jpg
- (XP) in addition to cover.jpg.
- ---
- *** Searches in more locations for MPD configuration files.
- MPD supports the XDG base directory specification since version 0.17.6.
- ** Midnight-mode
- ---
- *** 'midnight-mode' is now a proper minor mode.
- ---
- *** clean-buffer-*-regexps can now specify buffers via predicate functions.
- ** package.el
- +++
- *** New "external" package status.
- An external package is any installed package that's not built-in and
- not from 'package-user-dir', which usually means it's from an entry in
- 'package-directory-list'. They are treated much like built-in
- packages, in that they cannot be deleted through the package menu and
- are not considered for upgrades.
- The effect is that a user can manually place a specific version of a
- package inside 'package-directory-list' and the package menu will
- always respect that.
- +++
- *** If a package is available on multiple archives and one has higher
- priority (as per 'package-archive-priorities') only that one is
- listed. This can be configured with 'package-menu-hide-low-priority'.
- +++
- *** 'package-menu-toggle-hiding' now toggles the hiding of packages.
- This includes the above-mentioned low-priority packages, as well as
- available packages whose version is lower than the currently installed
- version (which were previously impossible to display).
- This allows users to downgrade a package if a lower version is
- available.
- ---
- *** When filtering the package menu, keywords starting with "arc:" or
- "status:" represent package archive or status, respectively, instead
- of actual keywords.
- ---
- *** Most functions which involve downloading information now take an
- ASYNC argument. If it is non-nil, package.el performs the download(s)
- asynchronously.
- ---
- *** New variable 'package-menu-async' controls whether the
- package-menu uses asynchronous downloads.
- ---
- *** 'package-install-from-buffer' and 'package-install-file' work on directories.
- This follows the same rules as installing from a .tar file, except the
- -pkg file is optional.
- ---
- *** Packages which are dependencies of other packages cannot be deleted.
- The FORCE argument to 'package-delete' overrides this.
- ---
- *** New custom variable 'package-selected-packages' tracks packages
- which were installed by the user (as opposed to installed as
- dependencies). This variable can also be manually customized.
- ---
- *** New command 'package-install-selected-packages' installs all
- packages from 'package-selected-packages' which are currently missing.
- ---
- *** 'package-install' function now takes a DONT-SELECT argument. If
- this function is called interactively or if DONT-SELECT is nil, add the
- package being installed to 'package-selected-packages'.
- ---
- *** New command 'package-autoremove' removes all packages which were
- installed strictly as dependencies but are no longer needed.
- +++
- ** Shell
- When you invoke 'shell' interactively, the *shell* buffer will now
- display in a new window. However, you can customize this behavior via
- the 'display-buffer-alist' variable. For example, to get
- the old behavior -- *shell* buffer displays in current window -- use
- (add-to-list 'display-buffer-alist
- '("^\\*shell\\*$" . (display-buffer-same-window))).
- ** EIEIO
- +++
- *** The ':protection' slot option is not obeyed any more.
- +++
- *** The 'newname' argument to constructors is optional&deprecated.
- If you need your objects to be named, do it by inheriting from 'eieio-named'.
- +++
- *** The <class>-list-p and <class>-child-p functions are declared obsolete.
- +++
- *** The <class> variables are declared obsolete.
- +++
- *** The <initarg> variables are declared obsolete.
- +++
- *** defgeneric and defmethod are declared obsolete.
- Use the equivalent facilities from cl-generic.el instead.
- +++
- *** 'constructor' is now an obsolete alias for 'make-instance'.
- --- 'pcase' accepts a new UPattern 'eieio'.
- ** ido
- +++
- *** New command 'ido-bury-buffer-at-head' bound to C-S-b
- Bury the buffer at the head of 'ido-matches', analogous to how C-k
- kills the buffer at head.
- ---
- *** A prefix argument to 'ido-restrict-to-matches' will reverse its
- meaning, and the list is restricted to those elements that do not
- match the current input.
- ** Minibuffer
- +++
- *** You can use <UP> and <DOWN> arrow keys to move through history by lines.
- The new commands 'next-line-or-history-element' and
- 'previous-line-or-history-element', bound to <UP> and <DOWN> in the
- minibuffer, allow by-line movement through minibuffer history,
- similarly to an ordinary buffer. Only when point moves over
- the bottom/top of the minibuffer it goes to the next/previous history
- element. 'M-p' and 'M-n' still move directly to previous/next history
- item as before.
- ** Search and Replace
- +++
- *** 'isearch' and 'query-replace' can now perform character folding in matches.
- This is analogous to case folding, but instead of disregarding case
- variants, it disregards wider classes of distinctions between similar
- characters. (Case folding is a special case of character folding.)
- This means many characters in the search string will match entire
- groups of characters instead of just themselves.
- For instance, the ASCII double quote character " will match all
- variants of double quotes, and the letter 'a' will match all of its
- accented cousins, even those composed of multiple characters, as well
- as many other symbols like U+249C (PARENTHESIZED LATIN SMALL LETTER
- A).
- Character folding is enabled by customizing 'search-default-mode' to
- the value 'character-fold-to-regexp'. You can also toggle character
- folding in the middle of a search by typing 'M-s ''.
- 'query-replace' honors character folding if the new variable
- 'replace-character-fold' is customized to a non-nil value.
- +++
- *** New user option 'search-default-mode'.
- This option specifies the default mode for Isearch. The default
- value, nil specifies that Isearch does literal searches (however,
- 'case-fold-search' and 'isearch-lax-whitespace' may still be applied,
- as in previous Emacs versions).
- +++
- *** New function 'character-fold-to-regexp' can be used
- by searching commands to produce a regexp matching anything that
- character-folds into STRING.
- +++
- *** The new M-s M-w key binding uses eww to search the web for the
- text in the region. The search engine to use for this is specified by
- the customizable variable 'eww-search-prefix'.
- +++
- *** Query-replace history is enhanced.
- When query-replace reads the FROM string from the minibuffer, typing
- 'M-p' will now show previous replacements as "FROM SEP TO", where FROM
- and TO are the original text and its replacement, and SEP is an arrow
- string defined by the new variable 'query-replace-from-to-separator'.
- To select a prior replacement, type 'M-p' until the desired
- replacement appears in the minibuffer, and then exit the minibuffer by
- typing RET.
- ** Calc
- +++
- *** If 'quick-calc' is called with a prefix argument, insert the
- result of the calculation into the current buffer.
- +++
- ** In Edebug, you can now set the initial mode with C-x C-a C-m. With
- this you can tell Edebug not to stop at the start of the first
- instrumented function.
- ** ElDoc
- +++
- *** New minor mode 'global-eldoc-mode'
- It is turned on by default, and affects '*scratch*' and other buffers
- whose major mode supports Emacs Lisp.
- ---
- *** 'eldoc-documentation-function' now defaults to 'ignore'
- ---
- *** 'describe-char-eldoc' displays information about character at point,
- and can be used as a default value of 'eldoc-documentation-function'. It is
- useful when, for example, one needs to distinguish various spaces - e.g.,
- U+00A0 (NO-BREAK SPACE), U+2002 (EN SPACE), and U+2009 (THIN SPACE) - while
- using mono-spaced font.
- ** eww
- ---
- *** HTML can now be rendered using variable-width fonts.
- +++
- *** A new command 'F' ('eww-toggle-fonts') can be used to toggle
- whether to use variable-pitch fonts or not. The user can also
- customize the 'shr-use-fonts' variable.
- +++
- *** A new command 'C' ('eww-toggle-colors') can be used to toggle
- whether to use the HTML-specified colors or not. The user can also
- customize the 'shr-use-colors' variable.
- +++
- *** A new command 'R' ('eww-readable') will try do identify the main
- textual parts of a web page and display only that, leaving menus and
- the like off the page.
- +++
- *** A new command 'D' ('eww-toggle-paragraph-direction') allows you to
- toggle the paragraph direction between left-to-right and right-to-left.
- ---
- *** Images that are being loaded are now marked with grey
- "placeholder" images of the size specified by the HTML. They are then
- replaced by the real images asynchronously, which will also now
- respect width/height HTML specs (unless they specify widths/heights
- bigger than the current window).
- ---
- *** You can now use several eww buffers in parallel by renaming eww
- buffers you want to keep separate.
- +++
- *** Partial state of the eww buffers (the URIs and the titles of the
- pages visited) is now preserved in the desktop file.
- +++
- *** 'eww-after-render-hook' is now called after eww has rendered
- the data in the buffer.
- ---
- *** The 'eww-reload' command now takes a prefix to not reload via
- the net, but just use the local copy of the HTML.
- +++
- *** The DOM shr and eww uses has been changed to the general Emacs
- xml.el/libxml2 DOM, and a new package dom.el has been added to
- interact with this DOM. See the Emacs Lisp manual for interface
- details.
- +++
- *** 'mailcap-mime-data' is now consulted when displaying PDF files.
- +++
- *** The new 'S' command will list all eww buffers, and allow managing
- them.
- ---
- *** https pages with valid certificates have headers marked in green, while
- invalid certificates are marked in red.
- ** Message mode
- ---
- *** text/html messages that contain inline image parts will be
- transformed into multipart/related messages before sending.
- ---
- *** The 'message-valid-fqdn-regexp' variable has been removed, since
- there are now top-level domains added all the time. Message will no
- longer warn about sending emails to top-level domains it hasn't heard
- about.
- *** 'message-beginning-of-line' (bound to C-a) understands folded headers.
- In 'visual-line-mode' it will look for the true beginning of a header
- while in non-'visual-line-mode' it will move the point to the indented
- header's value.
- +++
- ** In Show Paren Mode, a parenthesis can be highlighted when point
- stands inside it, and certain parens can be highlighted when point is
- at BOL or EOL, or in whitespace there. To enable these, customize,
- respectively, 'show-paren-when-point-inside-paren' or
- 'show-paren-when-point-in-periphery'.
- ---
- ** If gpg2 exists on the system, it is now used as the default value
- of 'epg-gpg-program' (instead of gpg).
- ** Images
- +++
- *** Images are automatically scaled before displaying based on the
- 'image-scaling-factor' variable (if Emacs supports scaling the images
- in question).
- +++
- *** Images inserted with 'insert-image' and related functions get a
- keymap put into the text properties (or overlays) that span the
- image. This keymap binds keystrokes for manipulating size and
- rotation, as well as saving the image to a file. These commands are
- also available in 'image-mode'.
- +++
- *** A new library for creating and manipulating SVG images has been
- added. See the "SVG Images" section in the lispref manual for
- details.
- +++
- *** New setf-able function to access and set image parameters is
- provided: 'image-property'.
- ** Lisp mode
- ---
- *** Strings after ':documentation' are highlighted as docstrings.
- This enhances Lisp mode fontification to handle documentation of the
- form '(:documentation "the doc string")' used in Common Lisp code for
- CLOS class and slot documentation.
- ** Rectangle editing
- +++
- *** Rectangle Mark mode can have corners past EOL or in the middle of a TAB.
- +++
- *** C-x C-x in rectangle-mark-mode now cycles through the four corners.
- *** 'string-rectangle' provides on-the-fly preview of the result.
- +++
- ** New font-lock functions 'font-lock-ensure' and 'font-lock-flush'.
- These should be used in preference to 'font-lock-fontify-buffer' when
- called from Lisp.
- ---
- ** Macro 'minibuffer-with-setup-hook' can optionally append a function
- to 'minibuffer-setup-hook'.
- If the first argument of the macro is of the form '(:append FUN)',
- then FUN will be appended to 'minibuffer-setup-hook', instead of
- prepending it.
- ** cl-lib
- +++
- *** New functions 'cl-fresh-line', 'cl-digit-char-p', and 'cl-parse-integer'.
- ---
- *** 'pcase' accepts the new UPattern 'cl-struct'.
- ** Calendar and diary
- +++
- *** The default 'diary-file' is now located in .emacs.d.
- +++
- *** New commands to insert diary entries with Chinese dates:
- 'diary-chinese-insert-anniversary-entry' 'diary-chinese-insert-entry'
- 'diary-chinese-insert-monthly-entry', 'diary-chinese-insert-yearly-entry'.
- +++
- *** The calendar can now list and mark diary entries with Chinese dates.
- See 'diary-chinese-list-entries' and 'diary-chinese-mark-entries'.
- ---
- *** The option 'calendar-mode-line-format' can now be nil,
- which means to do nothing special with the mode line in calendars.
- +++
- *** New option 'calendar-weekend-days'.
- The option customizes which day headers receive the
- 'calendar-weekend-header' face.
- ---
- *** New optional args N and STRING for 'holiday-greek-orthodox-easter'.
- ---
- *** Many items obsolete since at least version 23.1 have been removed.
- The majority were function/variable/face aliases, too numerous to list here.
- The remainder were:
- **** Functions 'calendar-one-frame-setup', 'calendar-only-one-frame-setup',
- 'calendar-two-frame-setup', 'european-calendar', 'american-calendar'.
- **** Hooks 'cal-menu-load-hook', 'cal-x-load-hook'.
- **** Macro 'calendar-for-loop'.
- **** Variables 'european-calendar-style', 'diary-face', 'hebrew-holidays-{1,4}'.
- **** The nil and list forms of 'diary-display-function'.
- +++
- ** New ERT function 'ert-summarize-tests-batch-and-exit'.
- If the output of ERT tests in batch mode execution can be saved to a
- log file, then it can be passed as an argument to the above function
- to produce a neat summary.
- ---
- ** New js.el option 'js-indent-first-init'.
- ** Info
- ---
- ** Info mode now displays symbol names in fixed-pitch font.
- If you want to get the old behavior back, customize the 'Info-quoted'
- face to use the same definitions as the default face.
- ---
- *** 'Info-fontify-maximum-menu-size' can be t for no limit.
- +++
- *** 'info-display-manual' can now be given a prefix argument which (any
- non-nil value) directs the command to limit the completion
- alternatives to currently visited manuals.
- ---
- ** ntlm.el has support for NTLM2.
- ** Rmail
- +++
- *** The Rmail commands 'd', 'C-d' and 'u' take optional repeat counts
- to delete or undelete multiple messages.
- +++
- *** Rmail can now render HTML mail messages if your Emacs was built with
- libxml2 or if you have the Lynx browser installed. By default, Rmail
- will display the HTML version of a mail message that has both HTML and
- plain text parts, if display of HTML email is possible; customize the
- 'rmail-mime-prefer-html' option to 'nil' if you don't want that.
- +++
- *** In the commands that make summaries by subject, recipients, or senders,
- you can no longer use commas to separate regular expressions.
- +++
- ** SES now supports local printer functions; see 'ses-define-local-printer'.
- ** Shell-script Mode
- ---
- *** In sh-mode you can now use 'sh-shell' as a file-local variable to
- specify the type of shell in use (bash, csh, etc).
- ---
- *** New value 'always' for 'sh-indent-after-continuation'.
- This provides old-style ("dumb") indentation of continued lines.
- See the doc string of 'sh-indent-after-continuation' for details.
- ** TLS
- ---
- *** Fatal TLS errors are now silent by default.
- ---
- *** If Emacs isn't built with TLS support, an external TLS-capable
- program is used instead. This program used to be run in --insecure
- mode by default, but has now changed to be secure instead, and will
- fail if you try to connect to non-verifiable hosts. This is
- controlled by the 'tls-program' variable.
- ** URL
- +++
- *** The URL package accepts now the protocols "ssh", "scp" and "rsync".
- When 'url-handler-mode' is enabled, file operations for these
- protocols as well as for "telnet" and "ftp" are passed to Tramp.
- +++
- *** The URL package allows customizing the 'url-user-agent' string.
- The new 'url-user-agent' variable can be customized to be a string or
- a function.
- ---
- *** The new interface variable 'url-request-noninteractive' can be used
- to specify that we're running in a noninteractive context, and that
- we should not be queried about things like TLS certificate validity.
- ---
- *** 'url-mime-accept-string' can now be used as in "interface"
- variable, meaning you can bind it around an 'url-retrieve' call.
- ---
- *** If URL is used with a https connection, the first callback argument
- plist will contain a :peer element that has the output of
- 'gnutls-peer-status' (if Emacs is built with GnuTLS support).
- +++
- *** The new function 'url-cookie-delete-cookie' can be used to
- programmatically delete all cookies, or cookies from a specific
- domain.
- *** The URL package now support https over proxies supporting CONNECT.
- ** Tramp
- +++
- *** New connection method "afp", which allows you to access Mac OS X
- volumes via the Apple Filing Protocol.
- +++
- *** New connection method "nc", which allows you to access dumb
- busyboxes.
- +++
- *** Method-specific parameters can be overwritten now with variable
- 'tramp-connection-properties'.
- ---
- *** Handler for 'file-notify-valid-p' for remote machines that support
- filesystem notifications.
- ** SQL mode
- ---
- *** New user variable 'sql-default-directory' enables remote
- connections using Tramp.
- ---
- *** New command 'sql-send-line-and-next'.
- This command, bound to 'C-c C-n' by default, sends the current line to
- the SQL process and advances to the next line, skipping whitespace and
- comments.
- ---
- *** Added support for Vertica SQL.
- ** VC and related modes
- +++
- *** Basic push support, via 'vc-push', bound to 'C-x v P'.
- Implemented for Bzr, Git, Hg. As part of this change, the pre-existing
- (undocumented) command vc-hg-push now behaves slightly differently.
- +++
- *** The new command vc-region-history shows the log+diff of the active region.
- +++
- *** You can refresh the VC state of a file buffer with 'M-x vc-refresh-state'.
- This command is useful when you perform version control commands
- outside Emacs (e.g., from the shell prompt), or if you switch the VC
- back-end for the buffer's file, or remove it from version control.
- ---
- *** The VC state indicator in the mode line now defaults to more
- colorful faces to make it more obvious to the user what the state is.
- See the 'vc-faces' customization group.
- +++
- *** New option 'vc-annotate-background-mode' controls whether
- the color range from 'vc-annotate-color-map' is applied to the
- background or to the foreground.
- ---
- *** New options for customizing encoding of Git commit log messages.
- The new options `vc-git-commits-coding-system' and
- `vc-git-log-output-coding-system' allow to customize the encoding of
- the log messages sent to Git when committing, and the decoding of the
- log messages read from Git history commands. Both default to UTF-8;
- if you customize them, make sure they are consistent with the Git
- config variables i18n.commitEncoding and i18n.logOutputEncoding.
- (`vc-git-commits-coding-system' existed previously, but was a
- variable, not a user option.)
- +++
- *** 'compare-windows' now compares text with the most recently selected window
- instead of the next window. If you want the previous behavior of
- comparing with the next window, customize the new option
- 'compare-windows-get-window-function' to the value
- 'compare-windows-get-next-window'.
- ---
- *** Two new faces 'compare-windows-removed' and 'compare-windows-added'
- replace the face 'compare-windows', which is now an obsolete alias for
- 'compare-windows-added'.
- ---
- *** The VC state indicator in the mode line now has different faces
- corresponding to each of the possible states. See the 'vc-faces'
- customization group.
- ---
- *** 'log-edit-insert-changelog' converts "(tiny change)" to
- "Copyright-paperwork-exempt: yes". Set 'log-edit-rewrite-tiny-change'
- nil to disable this.
- ---
- ** VHDL mode now supports VHDL'08.
- ** Calculator
- ---
- *** Decimal display mode uses "," groups, so it's more
- fitting for use in money calculations
- ---
- *** Factorial works with non-integer inputs.
- ** Hide-IfDef mode
- ---
- *** Hide-IfDef mode now support full C/C++ expressions in macros,
- macro argument expansion, interactive macro evaluation and automatic
- scanning of #define'd symbols.
- ---
- *** New command 'hif-evaluate-macro', bound to 'C-c @ e', displays the
- result of evaluating a macro.
- ---
- *** New command 'hif-clear-all-ifdef-define', bound to 'C-c @ C', clears
- all defined symbols in 'hide-ifdef-env'.
- ---
- *** New custom variable 'hide-ifdef-header-regexp' to define C/C++ header
- file name patterns. Defaults to files whose extension is one of '.h',
- '.hh', '.hpp', '.hxx', or '.h++', matched case-insensitively.
- ---
- *** New custom variable 'hide-ifdef-expand-reinclusion-protection' to prevent
- reinclusion protected (a.k.a. "idempotent") header files from being hidden.
- (This could happen when an idempotent header file is visited again,
- when its guard symbol is already defined.) Defaults to 't'.
- ---
- *** New custom variable 'hide-ifdef-exclude-define-regexp' to define symbol
- name patterns (e.g. all "FOR_DOXYGEN_ONLY_*") to be ignored when
- looking for macro definitions. By default, no symbols are ignored.
- ** TeX mode
- +++
- *** New custom variable 'tex-print-file-extension' to help users who
- use PDF instead of DVI.
- +++
- *** TeX mode now supports Prettify Symbols mode. When enabling
- 'prettify-symbols-mode' in a tex-mode buffer, \alpha ... \omega, and
- many other math macros are displayed using unicode characters.
- +++
- ** New 'big-indent' style in 'whitespace-mode' highlights deep indentation.
- By default, 32 consecutive spaces or four consecutive TABs are
- considered to be too deep, but the new variable
- 'whitespace-big-indent-regexp' can be customized to change that.
- ---
- ** New options in 'tildify-mode'.
- New options 'tildify-space-string', 'tildify-pattern', and
- 'tildify-foreach-region-function' variables make
- 'tildify-string-alist', 'tildify-pattern-alist', and
- 'tildify-ignored-environments-alist' variables (as well as a few
- helper functions) obsolete.
- +++
- ** New package Xref replaces Etags's front-end and UI
- The new package Xref provides a generic framework and new commands to
- find and move to definitions of functions, macros, data structures
- etc., as well as go back to the location where you were before moving
- to a definition. It supersedes and obsoletes many Etags commands,
- while still using the etags.el code that reads the TAGS tables as one
- of its back-ends.
- The command 'xref-find-definitions' replaces 'find-tag' and provides
- an interface to pick one definition among several.
- 'tags-loop-continue' is now unbound. 'xref-pop-marker-stack' replaces
- 'pop-tag-mark', but has a keybinding ('M-,') different from the one
- 'pop-tag-mark' used.
- 'xref-find-definitions-other-window' replaces 'find-tag-other-window'.
- 'xref-find-definitions-other-frame' replaces 'find-tag-other-frame'.
- 'xref-find-apropos' replaces 'find-tag-regexp'.
- As a result of this, the following commands are now obsolete:
- 'find-tag-other-window', 'find-tag-other-frame', 'find-tag-regexp',
- 'tags-apropos'.
- 'tags-loop-continue' is not obsolete because it's still useful in
- 'tags-search' and 'tags-query-replace', for which there are no direct
- replacements yet.
- +++
- *** Variants of 'tags-search' and 'tags-query-replace' in Dired were also
- replaced by xref-style commands, see the "Dired" section below.
- +++
- *** New variables
- 'find-tag-marker-ring-length' is now an obsolete alias for
- 'xref-marker-ring-length'. 'find-tag-marker-ring' is now an obsolete
- alias for a private variable. 'xref-push-marker-stack' and
- 'xref-pop-marker-stack' should be used instead to manipulate the stack
- of searches for definitions.
- ---
- *** 'xref-find-definitions' and 'describe-function' now display
- information about mode local overrides (defined by cedet/mode-local.el
- 'define-overloadable-function' 'define-mode-local-overrides').
- The framework's Lisp API is still experimental and can change in major,
- backward-incompatible ways.
- ---
- ** New package Project
- The new package Project provides generic infrastructure for dealing
- with projects. The main commands included in it are
- 'project-find-file' and 'project-find-regexp'.
- The Lisp API of this package is still experimental.
- ** EUDC
- EUDC's LDAP backend has been improved.
- +++
- *** EUDC supports LDAP-over-SSL URLs (ldaps://).
- ---
- *** EUDC passes LDAP passwords through a pipe to the ldapsearch
- subprocess instead of on the command line.
- ---
- *** EUDC handles LDAP wildcards automatically so the user shouldn't
- need to configure this manually anymore.
- +++
- *** The LDAP configuration section of EUDC's manual has been
- rewritten.
- There have also been customization changes.
- +++
- *** New custom variable 'eudc-server-hotlist' to allow specifying
- multiple EUDC servers in init file.
- +++
- *** Custom variable 'eudc-inline-query-format' defaults to completing
- on email and firstname instead of surname.
- ---
- *** Custom variable 'eudc-expansion-overwrites-query' defaults to nil
- to avoid interfering with the kill ring.
- +++
- *** Custom variable 'eudc-inline-expansion-format' defaults to
- "Firstname Surname <mail-address>".
- +++
- *** Custom variable 'eudc-options-file' defaults to
- "~/.emacs.d/eudc-options".
- ---
- *** New custom variable 'ldap-ldapsearch-password-prompt-regexp' to
- allow overriding the regular expression that recognizes the ldapsearch
- command line's password prompt.
- ---
- EUDC's BBDB backend now supports BBDB 3.
- ---
- EUDC's PH backend (eudcb-ph.el) is obsolete.
- ** Eshell
- +++
- *** The new built-in command 'clear' can scroll window contents out of sight.
- If provided with an optional non-nil argument, the scrollback contents will be cleared.
- +++
- *** New buffer syntax '#<buffer-name>', which is equivalent to
- '#<buffer buffer-name>'. This shorthand makes interacting with
- buffers from eshell more convenient. Custom variable
- 'eshell-buffer-shorthand', which has been broken for a while, has been
- removed.
- +++
- *** By default, eshell "visual" program buffers (created by
- 'eshell-visual-commands' and similar custom vars) are no longer killed
- when their processes die. This fixes issues with short-lived commands
- and makes visual programs more useful in general. For example, if
- "git log" is a visual command, it will always show the visual command
- buffer, even if the "git log" process dies. For the old behavior,
- make the new option 'eshell-destroy-buffer-when-process-dies' non-nil.
- ** Browse-url
- ---
- *** Support for the Google Chrome web browser.
- ---
- *** Support for the Conkeror web browser.
- ---
- *** Support for several ancient browsers is now officially obsolete.
- +++
- ** tar-mode: new 'tar-new-entry' command, allowing for new members to
- be added to the archive.
- ** Autorevert
- ---
- *** Dired buffers are also auto-reverted via file notifications, if
- Emacs is compiled with file notification support.
- ---
- *** 'auto-revert-use-notify' is set to nil in 'global-auto-revert-mode'.
- See <http://debbugs.gnu.org/22814>.
- ** File Notifications
- +++
- *** The kqueue library is integrated for *BSD and Mac OS X machines.
- +++
- *** The new event 'stopped' signals, that a file notification watch is
- not active any longer.
- +++
- *** The new function 'file-notify-valid-p' checks, whether a file
- notification descriptor still corresponds to an activate watch.
- ** Dired
- +++
- *** The command 'dired-do-compress' bound to 'Z' now can compress
- directories and decompress zip files.
- +++
- *** New command 'dired-do-compress-to' bound to 'c' can be used to
- compress many marked files into a single named archive. The
- compression command is determined from the new
- 'dired-compress-files-alist' variable.
- +++
- *** In wdired, when editing files to contain slash characters,
- the resulting directories are automatically created. Whether
- to do this or not is controlled by the
- 'wdired-create-parent-directories' variable.
- +++
- *** 'W' is now bound to 'browse-url-of-dired-file', and is useful for
- viewing HTML files and the like.
- *** New user interface for the 'A' and 'Q' commands.
- These keys, now bound to 'dired-do-find-regexp' and
- 'dired-do-find-regexp-and-replace', work similarly to 'xref-find-apropos'
- and 'xref-query-replace-in-results': they present the matches
- in the '*xref*' buffer and let you move through the matches. No need
- to use 'tags-loop-continue' to resume the search or replace loop. The
- previous commands, 'dired-do-search' and
- 'dired-do-query-replace-regexp', are still available, but not bound to
- keys; rebind 'A' and 'Q' to invoke them if you want the old behavior
- back. We intend to obsolete the old commands in a future release.
- ** Tabulated List Mode
- +++
- *** It is now safe for a mode that derives 'tabulated-list-mode' to not
- call 'tabulated-list-init-header', in which case it will have no
- header.
- +++
- *** 'tabulated-list-print' takes a second optional argument, update,
- which specifies an alternative printing method which is faster when
- few or no entries have changed.
- ** Obsolete packages
- ---
- *** gulp.el
- ---
- *** landmark.el (moved to elpa.gnu.org)
- * New Modes and Packages in Emacs 25.1
- ---
- ** pinentry.el allows GnuPG passphrase to be prompted through the
- minibuffer instead of a graphical dialog, depending on whether the gpg
- command is called from Emacs (i.e., INSIDE_EMACS environment variable
- is set). This feature requires newer versions of GnuPG (2.1.5 or
- later) and Pinentry (0.9.5 or later). To use this feature, add
- "allow-emacs-pinentry" to "~/.gnupg/gpg-agent.conf" and reload the
- configuration with "gpgconf --reload gpg-agent".
- +++
- ** cl-generic.el provides CLOS-style multiple-dispatch generic functions.
- The main entry points are 'cl-defgeneric' and 'cl-defmethod'. See the
- node "Generic Functions" in the Emacs Lisp manual for more details.
- ---
- ** scss-mode (a minor variant of css-mode) is a major mode for editing
- SCSS (Sassy CSS) files.
- ---
- ** let-alist is a new macro (and a package) that allows one to easily
- let-bind the values stored in an alist.
- ---
- ** 'tildify-mode' allows automatic insertion of hard spaces as one
- types the text. Breaking line after a single-character words is
- forbidden by Czech and Polish typography (and may be discouraged in
- other languages), so 'auto-tildify-mode' makes it easier to create
- a typographically-correct documents.
- ---
- ** The 'seq' library adds sequence manipulation functions and macros
- that complement basic functions provided by subr.el. All functions
- are prefixed with 'seq-' and work on lists, strings and vectors.
- 'pcase' accepts a new Upattern 'seq'.
- ---
- ** The 'map' library provides map-manipulation functions that work on
- alists, hash-table and arrays. All functions are prefixed with
- 'map-'. 'pcase' accepts a new UPattern 'map'.
- ---
- ** The 'thunk' library provides functions and macros to control the
- evaluation of forms.
- ---
- ** js-jsx-mode (a minor variant of js-mode) provides indentation
- support for JSX, an XML-like syntax extension to ECMAScript.
- * Incompatible Lisp Changes in Emacs 25.1
- ---
- ** 'setq' and 'setf' must now be called with an even number of
- arguments. The earlier behavior of silently supplying a nil to the
- last variable when there was an odd number of arguments has been
- eliminated.
- +++
- ** 'syntax-begin-function' is declared obsolete.
- Removed font-lock-beginning-of-syntax-function and the SYNTAX-BEGIN
- slot in font-lock-defaults.
- +++
- ** The new implementation of Subword mode affects word movement everywhere.
- When Subword mode is turned on, 'forward-word', 'backward-word', and
- everything that uses them will move by sub-words, effectively
- overriding the buffer's syntax table. Lisp programs that shouldn't be
- affected by Subword mode should call the new functions
- 'forward-word-strictly' and 'backward-word-strictly' instead.
- +++
- ** 'package-initialize' now sets 'package-enable-at-startup' to nil if
- called during startup. Users who call this function in their init
- file and still expect it to be run after startup should set
- 'package-enable-at-startup' to t after the call to
- 'package-initialize'.
- ---
- ** ':global' minor mode use 'setq-default' rather than 'setq'.
- This means that you can't use 'make-local-variable' and expect them to
- "magically" become buffer-local.
- +++
- ** 'track-mouse' no longer freezes the shape of the mouse pointer.
- The 'track-mouse' form no longer refrains from changing the shape of
- the mouse pointer for the entire time the body of that form is
- executed. Lisp programs that use 'track-mouse' for dragging across
- large portions of the Emacs display, and want to avoid changes in the
- pointer shape during dragging, should bind the variable 'track-mouse'
- to the special value 'dragging' in the body of the form.
- ---
- ** The optional 'predicate' argument of 'lisp-complete-symbol' no longer
- has any effect. (This change was made in Emacs 24.4 but was not
- advertised at the time.)
- +++
- ** 'indirect-function' does not signal 'void-function' any more.
- This is mostly a bug-fix, since this change was missed back in 24.4 when
- symbol-function was changed not to signal 'void-function' any more.
- +++
- *** As a consequence, the second arg of 'indirect-function' is now obsolete.
- +++
- ** M-x shell and M-x compile no longer set the EMACS environment variable.
- This avoids clashing when other programs use the variable for other purposes.
- Although M-x term still sets EMACS for compatibility with Bash 4.3 and earlier,
- this is deprecated and will be phased out when Bash 4.4 or later takes over.
- Use the INSIDE_EMACS environment variable instead.
- ** 'C-up', 'C-down', 'C-left' and 'C-right' are now defined in term
- mode to send the same escape sequences that xterm does. This makes
- things like forward-word in readline work.
- ---
- ** hideshow mode got four key bindings that are analogous to outline
- mode bindings: 'C-c @ C-a', 'C-c @ C-t', 'C-c @ C-d', and 'C-c @ C-e.'
- +++
- ** 'save-excursion' does not save&restore the mark any more.
- Use 'save-mark-and-excursion' if you want the old behavior.
- +++
- ** 'read-buffer' and 'read-buffer-function' can now be called with a 4th
- argument ('predicate').
- +++
- ** 'completion-table-dynamic' by default stays in the minibuffer.
- The minibuffer will be the current buffer when the function is called.
- If you want the old behavior of calling the function in the buffer
- from which the minibuffer was entered, use the new argument
- 'switch-buffer' to 'completion-table-dynamic'.
- ---
- ** window-configurations no longer record the buffers' marks.
- ---
- ** inhibit-modification-hooks now also inhibits lock-file checks, as well as
- active region handling.
- +++
- ** deactivate-mark is now buffer-local.
- +++
- ** 'cl-the' now asserts that its argument is of the given type.
- +++
- ** 'process-running-child-p' may now return a numeric process
- group ID instead of 't'.
- +++
- ** Mouse click events on mode line or header line no longer include
- any reference to a buffer position. The 6th member of the mouse
- position list returned for such events is now nil.
- ---
- ** Menu items in keymaps do not support the "key shortcut cache" any more.
- These slots used to hold key-shortcut data, but have been obsolete since
- Emacs-21.
- ---
- ** Emacs no longer downcases the first letter of a system diagnostic
- when signaling a file error. For example, it now reports "Permission
- denied" instead of "permission denied". The old behavior was problematic
- in languages like German where downcasing rules depend on grammar.
- +++
- ** New variable 'text-quoting-style' to control how Emacs translates quotes.
- Set it to 'curve' for curved single quotes, to 'straight' for straight
- apostrophes, and to 'grave' for grave accent and apostrophe. The
- default value nil acts like 'curve' if curved single quotes are
- displayable, and like 'grave' otherwise. The new variable affects
- display of diagnostics and help, but not of info.
- +++
- ** substitute-command-keys now replaces quotes.
- That is, it converts documentation strings' quoting style as per the
- value of 'text-quoting-style'. Doc strings in source code can use
- either curved single quotes or grave accents and apostrophes. As
- before, characters preceded by \= are output as-is.
- +++
- ** Message-issuing functions 'error', 'message', etc. now convert quotes.
- They use the new 'format-message' function instead of plain 'format',
- so that they now follow user preference as per 'text-quoting-style'
- when processing curved single quotes, grave accents, and apostrophes
- in their format argument.
- +++
- ** The character classes [:alpha:] and [:alnum:] in regular expressions
- now match multibyte characters using Unicode character properties.
- If you want the old behavior where they matched any character with
- word syntax, use '\sw' instead.
- +++
- ** The character classes [:graph:] and [:print:] in regular expressions
- no longer match every multibyte character. Instead, Emacs now
- consults the Unicode character properties to determine which
- characters are graphic or printable. In particular, surrogates and
- unassigned codepoints are now rejected. If you want the old behavior,
- use [:multibyte:] instead.
- +++
- ** The 'diff' command uses the unified format now. To restore the old
- behavior, set 'diff-switches' to '-c'.
- ---
- ** 'grep-template' and 'grep-find-template' values don't include the
- --color argument anymore. It's added at the <C> place holder position
- dynamically. Any third-party code that changes these templates should
- be updated accordingly.
- ** The grep/rgrep/lgrep functions will now ask about saving files
- before running. This is controlled by the 'grep-save-buffers'
- variable.
- +++
- ** '(/ N)' is now equivalent to '(/ 1 N)' rather than to '(/ N 1)'.
- The new behavior is compatible with Common Lisp and with XEmacs.
- This change does not affect Lisp code intended to be portable to
- Emacs 24.2 and earlier, which did not support unary '/'.
- +++
- ** The 'default-directory' value doesn't have to end slash. To make
- that happen, 'unhandled-file-name-directory' now defaults to calling
- 'file-name-as-directory'.
- * Lisp Changes in Emacs 25.1
- ** pcase
- +++
- *** New UPatterns 'quote', 'app'.
- +++
- *** New UPatterns can be defined with 'pcase-defmacro'.
- +++
- *** New vector QPattern.
- ---
- ** syntax-propertize is now automatically called on-demand during forward
- parsing functions like 'forward-sexp'.
- +++
- ** New hooks 'prefix-command-echo-keystrokes-functions' and
- 'prefix-command-preserve-state-hook' allow the definition of prefix
- commands other than the predefined 'C-u'.
- +++
- ** New functions 'filepos-to-bufferpos' and 'bufferpos-to-filepos'.
- These allow conversion between buffer positions and the corresponding
- file byte offsets, given the file's encoding.
- +++
- ** The default value of 'load-read-function' is now 'read'.
- Previously, the default value of 'nil' implied using 'read'.
- +++
- ** New hook 'pre-redisplay-functions'.
- It is a bit easier to use than 'pre-redisplay-function'.
- +++
- ** The second arg of 'looking-back' should always be provided explicitly.
- Previously, it was an optional argument, now it's mandatory.
- +++
- ** Text properties 'intangible', 'point-entered', and 'point-left' are obsolete.
- Replaced by properties 'cursor-intangible' and 'cursor-sensor-functions',
- implemented by the new 'cursor-intangible-mode' and
- 'cursor-sensor-mode' minor modes.
- +++
- ** 'inhibit-point-motion-hooks' now defaults to 't' and is obsolete.
- Use the new minor modes 'cursor-intangible-mode' and
- 'cursor-sensor-mode' instead.
- +++
- ** New process type 'pipe', which can be used in combination with the
- ':stderr' keyword of make-process to handle standard error output
- of subprocess.
- +++
- ** New function 'make-process' provides an alternative interface to
- 'start-process'. It allows programs to set process parameters such as
- process filter, sentinel, etc., through keyword arguments (similar to
- 'make-network-process').
- +++
- ** A new function 'directory-files-recursively' returns all matching
- files (recursively) under a directory.
- +++
- ** New variable 'inhibit-message', when bound to non-nil, inhibits
- 'message' and related functions from displaying messages in the echo
- area. The output is still logged to the *Messages* buffer.
- +++
- ** A new text property 'inhibit-read-only' can be used in read-only
- buffers to allow certain parts of the text to be writable.
- +++
- ** A new variable 'comment-end-can-be-escaped' is useful in languages
- such as C and C++ where line comments with escaped newlines are
- continued to the next line.
- +++
- ** New macro 'define-advice'.
- +++
- ** Emacs Lisp now supports generators.
- See the "Generators" section of the ELisp manual for the details.
- +++
- ** New finalizer facility for running code when objects become unreachable.
- See the "Finalizer Type" subsection in the ELisp manual for the
- details.
- ---
- ** lexical closures can use (:documentation FORM) to build their docstring.
- It should be placed right where the docstring would be, and FORM is then
- evaluated (and should return a string) when the closure is built.
- ---
- ** The new command 'fortune-message' has been added, which displays
- fortunes in the echo area.
- +++
- ** define-inline provides a new way to define inlinable functions.
- +++
- ** New function 'macroexpand-1' to perform a single step of macro expansion.
- +++
- ** Some "x-*" functions were obsoleted and/or renamed:
- *** x-select-text is renamed gui-select-text.
- *** x-selection-value is renamed gui-selection-value.
- *** x-get-selection is renamed gui-get-selection.
- *** x-get-clipboard and x-clipboard-yank are marked obsolete.
- *** x-get-selection-value is renamed to gui-get-primary-selection.
- *** x-set-selection is renamed to gui-set-selection
- +++
- ** New function 'string-greaterp', which return the opposite result of
- 'string-lessp'.
- +++
- ** The new functions 'string-collate-lessp' and 'string-collate-equalp'
- preserve the collation order as defined by the system's locale(1)
- environment. For the time being this is implemented for modern POSIX
- systems and for MS-Windows, for other systems they fall back to their
- counterparts 'string-lessp' and 'string-equal'.
- +++
- ** The new function 'string-version-lessp' compares strings by
- interpreting consecutive runs of numerical characters as numbers, and
- compares their numerical values. According to this predicate,
- "foo2.png" is smaller than "foo12.png".
- ---
- *** The ls-lisp package uses 'string-collate-lessp' to sort file names.
- The effect is that, on systems that use ls-lisp for Dired, the default
- sort order of the files in Dired is now different from what it was in
- previous versions of Emacs. In particular, the file names are sorted
- disregarding punctuation, accents, and diacritics, and letter case is
- ignored. For example, files whose name begin with a period will no
- longer appear near the beginning of the directory listing. If you
- want the old, locale-independent sorting, customize the new option
- 'ls-lisp-use-string-collate' to the nil value.
- +++
- *** The MS-Windows specific variable 'w32-collate-ignore-punctuation',
- if set to a non-nil value, causes the above 2 functions to ignore
- symbol and punctuation characters when collating strings. This
- emulates the behavior of modern Posix platforms when the locale's
- codeset is "UTF-8" (as in "en_US.UTF-8"). This is needed because
- MS-Windows doesn't support UTF-8 as codeset in its locales.
- +++
- ** New function 'alist-get', which is also a valid place (aka lvalue).
- +++
- ** New function 'funcall-interactively', which works like 'funcall'
- but makes 'called-interactively-p' treat the function as (you guessed it)
- called interactively.
- +++
- ** New function 'function-put' to use instead of 'put' for function properties.
- +++
- ** The new function 'bidi-find-overridden-directionality' allows you to
- find characters whose directionality was, perhaps maliciously,
- overridden by directional override control characters. Lisp programs
- can use this to detect potential phishing of URLs and other links that
- exploits bidirectional display reordering.
- +++
- ** The new function 'buffer-substring-with-bidi-context' allows you to
- copy a portion of a buffer into a different location while preserving
- the visual appearance both of the copied text and the text at
- destination, even when the copied text includes mixed bidirectional
- text and directional control characters.
- +++
- ** New properties that can be specified with 'declare':
- *** (interactive-only INSTEAD), says to use INSTEAD for non-interactive use.
- *** (pure VAL), if VAL is non-nil, indicates the function is pure.
- *** (side-effect-free VAL), if VAL is non-nil, indicates the function does not
- have side effects.
- +++
- ** New macro 'with-file-modes', for evaluating expressions with default file
- permissions set to temporary values (e.g., for creating private files).
- +++
- ** You can access the slots of structures using 'cl-struct-slot-value'.
- +++
- ** Function 'sort' can deal with vectors.
- ---
- ** Function 'system-name' now returns an updated value if the current
- system's name has changed or if the Emacs process has changed systems,
- and to avoid long waits it no longer consults DNS to canonicalize the
- name. The variable 'system-name' is now obsolete.
- +++
- ** Function 'write-region' no longer outputs "Wrote FILE" in batch mode.
- ---
- ** If 'pwd' is called with a prefix argument, insert the current default
- directory at point.
- +++
- ** New functions return extended information about fonts and faces.
- +++
- *** The function 'font-info' now returns more details about a font.
- In particular, it now returns the average width of the font's
- characters, which can be used for geometry-related calculations.
- +++
- *** A new function 'default-font-width' returns the average width of a
- character in the current buffer's default font. If the default face
- is remapped (see 'face-remapping-alist'), the value for the remapped
- face is returned. This function complements the existing function
- 'default-font-height'.
- +++
- *** New functions 'window-font-height' and 'window-font-width' return
- the height and average width of characters in a specified face and
- window. If FACE is remapped (see 'face-remapping-alist'), the
- function returns the information for the remapped face.
- +++
- *** A new function 'window-max-chars-per-line' returns the maximal
- number of characters that can be displayed on one line. If a face
- and/or window are provided, these values are used for the
- calculation. This function is different from 'window-body-width' in
- that it accounts for (i) continuation glyphs, (ii) the size of the
- font, and (iii) the specified window.
- ---
- ** New utilities in subr-x.el:
- *** New macros 'if-let' and 'when-let' allow defining bindings and to
- execute code depending whether all values are true.
- *** New macros 'thread-first' and 'thread-last' allow threading a form
- as the first or last argument of subsequent forms.
- +++
- ** Documentation strings now support quoting with curved single quotes
- in addition to the old style with grave accent and apostrophe. The
- new style looks better on today's displays. In the new Electric Quote
- mode, you can enter curved single quotes into documentation by typing
- grave accent and apostrophe. Outside Electric Quote mode, you can
- enter them by typing 'C-x 8 [' and 'C-x 8 ]', or (if your Alt key
- works) by typing 'A-[' and 'A-]'. As described above under
- 'text-quoting-style', the user can specify how to display doc string
- quotes.
- +++
- ** New function 'format-message' is like 'format' and also converts
- curved single quotes, grave accents and apostrophes as per
- 'text-quoting-style'.
- +++
- ** show-help-function's arg is converted via substitute-command-keys
- before being passed to the function. Help strings, help-echo
- properties, etc. can therefore contain command key escapes and
- quotation marks.
- +++
- ** Time-related changes:
- *** Time conversion functions now accept an optional ZONE argument
- that specifies the time zone rules for conversion. ZONE is omitted or
- nil for Emacs local time, t for Universal Time, 'wall' for system wall
- clock time, or a string as in 'set-time-zone-rule' for a time zone
- rule. The affected functions are 'current-time-string',
- 'current-time-zone', 'decode-time', and 'format-time-string'. The
- function 'encode-time', which already accepted a simple time zone rule
- argument, has been extended to accept all the new forms.
- *** Incompatible change in the third argument of 'format-time-string'.
- Previously, any non-nil argument was interpreted as specifying Universal Time.
- This is no longer true; packages that want Universal Time should pass t
- as the third argument.
- *** Time-related functions now consistently accept numbers
- (representing seconds since the epoch) and nil (representing the
- current time) as well as the usual list-of-integer representation.
- Affected functions include 'current-time-string', 'current-time-zone',
- 'decode-time', 'float-time', 'format-time-string', 'seconds-to-time',
- 'time-add', 'time-less-p', 'time-subtract', 'time-to-day-in-year',
- 'time-to-days', and 'time-to-seconds'.
- *** The 'encode-time-value' and 'with-decoded-time-value' macros have
- been obsoleted.
- *** 'calendar-next-time-zone-transition', 'time-add', and
- 'time-subtract' no longer return time values in the obsolete and
- undocumented integer-pair format. Instead, they return a list of two
- integers.
- +++
- ** New function 'set-binary-mode' allows switching a standard stream
- of the Emacs process to binary I/O mode.
- +++
- ** The new function 'directory-name-p' can be used to check whether a file
- name (as returned from, for instance, 'file-name-all-completions') is
- a directory file name. It returns non-nil if the last character in
- the name is a directory separator character (forward slash on GNU and
- Unix systems, forward- or backslash on MS-Windows and MS-DOS).
- ---
- ** ASCII approximations to curved quotes are put in standard-display-table
- if the terminal cannot display curved quotes.
- +++
- ** Standard output and error streams now transliterate characters via
- standard-display-table, and encode output using locale-coding-system.
- To force a specific encoding, bind 'coding-system-for-write' to the
- coding-system of your choice when invoking functions like 'prin1' and
- 'message'.
- +++
- ** New var 'truncate-string-ellipsis' to choose how to indicate truncation.
- +++
- ** New possible value for 'system-type': 'nacl'.
- This is used by Google's Native Client (NaCl).
- ---
- ** 'read-color' will now display the color names using the color itself
- as the background color.
- ---
- ** There is now a new variable 'flyspell-sort-corrections-function'
- that allows changing the way corrections are sorted.
- ** Miscellaneous name change
- ---
- For consistency with the usual Emacs spelling, the Lisp variable
- 'hfy-optimisations' has been renamed to 'hfy-optimizations'.
- The old name should still work, as an obsolescent alias.
- ** Changes in Frame- and Window- Handling
- +++
- *** Emacs can now draw horizontal scroll bars on some platforms that
- provide toolkit scroll bars, namely Gtk+, Lucid, Motif and Windows.
- Horizontal scroll bars are turned off by default.
- **** New function 'horizontal-scroll-bars-available-p' telling whether
- horizontal scroll bars are available on the underlying system.
- **** New mode 'horizontal-scroll-bar-mode' to toggle horizontal scroll
- bars on all existing and future frames.
- **** New function 'toggle-horizontal-scroll-bar' to toggle horizontal
- scroll bars on the selected frame.
- **** New frame parameters 'horizontal-scroll-bars' and
- 'scroll-bar-height' to set horizontal scroll bars and their height
- for individual frames and in 'default-frame-alist'.
- **** New functions 'frame-scroll-bar-height' and
- 'window-scroll-bar-height' return the height of horizontal scroll
- bars on a specific frame or window.
- **** 'set-window-scroll-bars' now accepts five parameters where the last
- two specify height and type of the window's horizontal scroll bar.
- **** 'window-scroll-bars' now returns type and sizes of horizontal scroll
- bars too.
- **** New buffer-local variables 'horizontal-scroll-bar' and
- 'scroll-bar-height'.
- +++
- *** New functions 'frame-geometry' and 'frame-edges' give access to a
- frame's geometry.
- +++
- *** New functions 'mouse-absolute-pixel-position' and
- 'set-mouse-absolute-pixel-position' get/set screen coordinates of the
- mouse cursor.
- +++
- *** The function 'window-edges' now accepts three additional arguments to
- retrieve body, absolute and pixel edges of the window.
- +++
- *** The functions 'window-inside-edges', 'window-inside-pixel-edges' and
- 'window-inside-absolute-pixel-edges' have been renamed to respectively
- 'window-body-edges', 'window-body-pixel-edges' and
- 'window-absolute-body-pixel-edges'. The old names are kept as aliases.
- +++
- *** New function 'window-absolute-pixel-position' to get the screen
- coordinates of a visible buffer position.
- +++
- *** The height of a frame's menu and tool bar are no longer counted in the
- frame's text height. This means that the text height stands only for
- the height of the frame's root window plus that of the echo area (if
- present). This was already the behavior for frames with external tool
- and menu bars (like in the Gtk builds) but has now been extended to all
- builds.
- +++
- *** Frames now do not necessarily preserve the number of columns or lines
- they display when setting default font, menu bar, fringe width, or
- scroll bars. In particular, maximized and fullscreen frames are
- conceptually never resized if such settings change. For fullheight and
- fullwidth frames, the behavior may depend on the toolkit used.
- **** New option 'frame-inhibit-implied-resize' if non-nil, means that
- setting default font, menu bar, fringe width, or scroll bars of a
- specific frame does not resize that frame in order to preserve the
- number of columns or lines it displays.
- +++
- *** New function 'window-preserve-size' allows you to preserve the size of
- a window without "fixing" it. It's supported by 'fit-window-to-buffer',
- 'temp-buffer-resize-mode' and 'display-buffer'.
- +++
- *** New 'display-buffer' action function 'display-buffer-use-some-frame'.
- This displays the buffer in an existing frame other than the current
- frame, and allows the caller to specify a frame predicate to exclude
- frames.
- +++
- *** New minor mode 'window-divider-mode' and options
- 'window-divider-default-places', 'window-divider-default-bottom-width'
- and 'window-divider-default-right-width'.
- +++
- *** The window displaying the '*Completions*' buffer with minibuffer
- completion candidates is now shown at the bottom of the selected
- frame. The size of that window is always as large as required to
- display all the candidates, except when limited by the minimum size
- of the other windows on that frame; those other windows are resized
- to provide space for the '*Completions*' display. The Emacs manual
- describes how to customize 'display-buffer-alist' to get back the old
- behavior, see the node "Temporary Displays" there.
- ---
- ** Tearoff menus and detachable toolbars for Gtk+ have been removed.
- Those features have been deprecated in Gtk+ for a long time.
- ** Etags
- +++
- *** etags no longer qualifies class members by default.
- By default, 'etags' will not qualify class members for Perl and C-like
- object-oriented languages with their class names and namespaces, and
- will remove qualifications used explicitly in the code from the tag
- names it puts in TAGS files. This is so the etags.el back-end for
- 'xref-find-definitions' is more accurate and produces less false
- positives.
- Use --class-qualify (-Q) if you want the old default behavior of
- qualifying class members in C++, Java, Objective C, and Perl. Note
- that using -Q might make some class members become "unknown" to 'M-.'
- ('xref-find-definitions'); if so, you can use 'C-u M-.' to specify the
- qualified names by hand.
- +++
- *** New language Ruby
- Names of modules, classes, methods, functions, and constants are
- tagged. Overloaded operators are also tagged.
- +++
- *** New language Go
- Names of packages, functions, and types are tagged.
- +++
- *** Improved support for Lua
- Etags now tags functions even if the "function" keyword follows some
- whitespace at line beginning.
- * Changes in Emacs 25.1 on Non-Free Operating Systems
- ---
- ** MS-Windows specific Emacs build scripts are no longer in the distribution
- This includes the makefile.w32-in files in various subdirectories, and
- the support files. The file nt/configure.bat now just tells the user
- to use the procedure described in nt/INSTALL, by running the Posix
- 'configure' script in the top-level directory.
- ---
- ** Building Emacs for MS-Windows requires at least Windows XP
- or Windows Server 2003. The built binaries still run on all versions
- of Windows starting with Windows 9X.
- +++
- ** Emacs running on MS-Windows now supports the daemon mode.
- ---
- ** The byte counts in etags-generated TAGS files are now the same on
- MS-Windows as they are on other platforms.
- ---
- ** On OS X, configure creates a Cocoa ("Nextstep") build by default.
- Pass '--without-ns' to configure to create an X11 build, the old default.
- ---
- ** OS X 10.5 or older is no longer supported.
- ---
- ** OS X on PowerPC is no longer supported.
- ---
- ** New variable 'ns-use-fullscreen-animation' controls animation for
- non-native NS fullscreen. The default is nil. Set to t to enable
- animation when entering and leaving fullscreen. For native OSX fullscreen
- this has no effect.
- ---
- ** The new function 'w32-application-type' returns the type of an
- MS-Windows application given the name of its executable program file.
- ** New variable 'w32-pipe-buffer-size'.
- It can be used to tune the size of the buffer of pipes created for
- communicating with subprocesses, when the program run by a subprocess
- exhibits unusual buffering behavior. Default is zero, which lets the
- OS use its default size.
- ----------------------------------------------------------------------
- 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 <http://www.gnu.org/licenses/>.
- Local variables:
- coding: us-ascii
- mode: outline
- paragraph-separate: "[ ]*$"
- end:
|