elisp: Antinews

 
 Appendix A Emacs 24 Antinews
 ****************************
 
 For those users who live backwards in time, here is information about
 downgrading to Emacs version 24.5.  We hope you will enjoy the greater
 simplicity that results from the absence of many Emacs 25.3 features.
 
 A.1 Old Lisp Features in Emacs 24
 =================================
 
    • The requirement that ‘setq’ and ‘setf’ must be called with an even
      number of arguments has been removed.  You can now call them with
      an odd number of arguments, and Emacs will helpfully supply a ‘nil’
      for the missing one.  Simplicity rules!
 
    • ‘M-x shell’ and ‘M-x compile’ set the ‘EMACS’ environment variable,
      as they should, to indicate that the subprocess is run by Emacs.
      This is so packages that took years to learn how to work around
      that setting could continue using their code to that effect.
 
    • The ‘save-excursion’ form saves and restores the mark, as expected.
      No more need for the new ‘save-mark-and-excursion’, which has been
      deleted.
 
    • We have removed the ‘text-quoting-style’ variable and the
      associated functionality that translates quote characters in
      messages displayed to the user and in help buffers.  Emacs now
      shows exactly the same quote characters as you wrote in your code!
      Likewise, ‘substitute-command-keys’ leaves the quote characters
      alone.  As you move back in time, Unicode support becomes less and
      less important, so no need to display those fancy new quotes the
      Unicode Standard invented.
 
    • Regular expressions have been simplified by removing support for
      Unicode character properties in regexp classes.  As result,
      ‘[:alpha:]’ and ‘[:alnum:]’ will match any character with a word
      syntax, and ‘[:graph:]’ and ‘[:print:]’ will match any multibyte
      character, including surrogates and unassigned codepoints.  Once
      again, this is in line with diminishing importance of Unicode as
      you move back in time.
 
    • Evaluating ‘(/ N)’ will now yield N.  We have realized that
      interpreting that as in Common Lisp was a bad mistake that needed
      to be corrected.
 
    • The ‘pcase’ form was significantly simplified by removing the
      UPatterns ‘quote’ and ‘app’.  To further simplify this facility,
      we’ve removed ‘pcase-defmacro’, since we found no need for letting
      Lisp programs define new UPatterns.
 
    • We’ve removed the text properties ‘cursor-intangible’ and
      ‘cursor-sensor-functions’, replacing them by the much simpler
      ‘intangible’, ‘point-entered’, and ‘point-left’ properties.  The
      latter are implemented on a much lower level, and therefore are
      better integrated with user expectations.  For similar reasons,
      ‘cursor-intangible-mode’ and ‘cursor-sensor-mode’ were removed; use
      the hook variable ‘inhibit-point-motion-hooks’ which is no longer
      obsolete.
 
    • Process creation and management functions were significantly
      improved and simplified by removing ‘make-process’ and the ‘pipe’
      connection type.  Redirecting ‘stderr’ of a subprocess should be
      done with shell facilities, not by Emacs.
 
    • We decided that shutting up informative messages is bad for user
      interaction, so we’ve removed the ‘inhibit-message’ variable which
      could be used to that effect.
 
    • Support for generators and for finalizers has been removed, as we
      found no real need for these facilities.
 
    • Due to excessive complexity and the diminishing need for Unicode
      support, the functions ‘string-collate-lessp’ and
      ‘string-collate-equalp’ were removed.  Their locale-independent
      counterparts ‘string-lessp’ and ‘string-equal’ are so much more
      simple and yield predictable results that we don’t see any
      situation where the locale-dependent collation could be useful in
      Emacs.  As result, the ‘ls-lisp.el’ package sorts files in a
      locale-independent manner.
 
    • In preparation for removal in some past version of Emacs of the
      bidirectional editing support, we started by deleting two functions
      ‘bidi-find-overridden-directionality’ and
      ‘buffer-substring-with-bidi-context’.
 
    • Time conversion functions, such as ‘current-time-string’, no longer
      accept an optional ZONE argument.  If you need to change the
      current time zone (why?), do that explicitly with
      ‘set-time-zone-rule’.
 
    • As part of the ongoing quest for simplicity, many other functions
      and variables have been eliminated.