** Emacs can now be compiled with file notification support.
This happens by default if a suitable system library is found at
build time. To prevent this, use the configure option
-`--with-file-notification-no'. See below for file-notify features.
+`--without-file-notification'. See below for file-notify features.
FIXME? This feature is not available for the Nextstep port. (?)
---
---
** The configure option `--with-crt-dir' has been removed.
-It is no longer needed, as the crt*.o files are no longer linked
-specially.
+It is no longer needed, as the crt*.o files are no longer linked specially.
---
** Directories passed to configure option `--enable-locallisppath' are
If you want the previous behavior, whereby F10 invoked `tmm-menubar',
customize the option `tty-menu-open-use-tmm' to a non-nil value.
-(Typing M-` will always invoke `tmm-menubar', even if
-`tty-menu-open-use-tmm' is nil.)
+(Typing M-` always invokes `tmm-menubar', even if `tty-menu-open-use-tmm'
+is nil.)
+++
** The *Messages* buffer is created in `messages-buffer-mode',
*** New commands `toggle-frame-fullscreen' and `toggle-frame-maximized',
bound to <f11> and M-<f10>, respectively.
-*** New command `frameset-to-register' is now bound to `C-x r f', replacing
-`frame-configuration-to-register'. It offers similar functionality,
-plus enhancements like the ability to restore deleted frames. The
-command `frame-configuration-to-register' still exists, but is unbound.
-
+++
*** New hooks `focus-in-hook', `focus-out-hook'.
These are normal hooks run when an Emacs frame gains or loses input focus.
+---
+*** Emacs can now draw dividers between adjacent windows.
+To put dividers between side-by-side/vertically stacked windows
+customize the frame parameter `right-divider-width'/`bottom-divider-width'
+to some positive integer. You can drag dividers with the mouse
+(they show a corresponding cursor when the mouse hovers over them).
+You can change the appearance of dividers by customizing the faces
+`window-divider', `window-divider-first-pixel', and
+`window-divider-last-pixel'. The last two are useful to provide a 3D
+effect, or to better distinguish dividers from surrounding display objects.
+
---
*** `split-window' is now a non-interactive function, not a command.
As a command, it was a special case of `C-x 2' (`split-window-below'),
and `eval-print-last-sexp' (`C-j' in Lisp Interaction mode) can take a
zero prefix argument. This disables truncation of lists in the output,
equivalent to setting `(eval-expression-)print-length' and
-`(eval-expression-)print-limit' to nil. Additionally, it causes integers
+`(eval-expression-)print-level' to nil. Additionally, it causes integers
to be printed in other formats (octal, hexadecimal, and character).
+---
+*** New hook `eval-expression-minibuffer-setup-hook' run by
+`eval-expression' on entering the minibuffer.
+
---
** `write-region-inhibit-fsync' now defaults to t in batch mode.
+++
-** `cache-long-line-scans' has been renamed to `cache-long-scans'
+** `cache-long-line-scans' is now non-nil, and renamed to `cache-long-scans',
because it affects caching of paragraph scanning results as well.
-Also, it is now enabled by default.
+There is no reason to set this to nil except for debugging purposes.
---
** The option `set-mark-default-inactive' has been deleted.
** `emacs-bzr-version' has been renamed to `emacs-repository-version',
and works for git too, if you fetch the repository notes.
-** New user options:
-
-*** `read-regexp-defaults-function' defines a function to read regexps,
-used by commands like `rgrep', `lgrep' `occur', `highlight-regexp', etc.
-You can customize this to specify a function that provides a default
-value from the regexp last history element, or from the symbol found
-at point.
-
+++
-*** `load-prefer-newer' affects how the `load' function chooses the
-file to load. If this is non-nil, then when both .el and .elc
+** New option `load-prefer-newer' affects how the `load' function chooses
+the file to load. If this is non-nil, then when both .el and .elc
versions of a file exist, and the caller did not explicitly specify
which one to load, then the newer file is loaded. The default, nil,
means to always load the .elc file.
*** `electric-indent-mode' is enabled by default.
++++
*** `tab-stop-list' is now implicitly extended to infinity by repeating
the last step. Its default value is changed to nil, which means a tab
stop every `tab-width' columns.
-** Filling changes
-
-*** New command `cycle-spacing' cycles between spacing conventions:
-having just one space, no spaces, or reverting to the original
-spacing. Like `just-one-space', it can handle or ignore newlines and
-leave different number of spaces.
-
-*** `fill-single-char-nobreak-p' prevents fill from breaking a line after
-a 1-letter word, which is an error according to Polish and
-Czech typography rules. To globally enable this feature, evaluate:
++++
+** New command `cycle-spacing' acts like a smarter `just-one-space'.
+When called in succession, it cycles between spacing conventions:
+one space, no spaces, original spacing.
- (add-hook 'fill-nobreak-predicate 'fill-single-char-nobreak-p)
++++
+** The new function `fill-single-char-nobreak-p' can stop fill from breaking
+a line after a one-letter word, which is an error in some typographical
+conventions. To use it, add it to the `fill-nobreak-predicate' hook.
+++
** Uniquify is enabled by default, with `post-forward-angle-brackets' style.
** Register changes
-*** All register commands can now show help with preview.
++++
+*** All interactive commands that read a register (`copy-to-register', etc.)
+now display a temporary window after `register-preview-delay' seconds
+that summarizes existing registers. To disable this, set that option to nil.
+Interactive commands that read registers and want to make use of this
+should use `register-read-with-preview' to read register names.
+
+*** New command `frameset-to-register' bound to `C-x r f', replacing
+`frame-configuration-to-register'. It offers similar functionality,
+plus enhancements like the ability to restore deleted frames.
+(`frame-configuration-to-register' still exists, but no longer has a
+key binding.)
+++
*** New command `C-x C-k x' (`kmacro-to-register') stores keyboard
macros in registers.
-*** New command `C-x r f' (`frameset-to-register').
-See Changes in Emacs 24.4, above.
-
++++
** New command `delete-duplicate-lines'.
-When its arg ADJACENT is non-nil (when called interactively with C-u
-C-u) it works like the utility `uniq'. Otherwise by default it
-deletes duplicate lines everywhere in the region without regard to
-adjacency. When its arg KEEP-BLANKS is non-nil (when called
-interactively with C-u C-u C-u), duplicate blank lines are preserved.
+This searches the region for identical lines, and removes all but one
+copy of each repeated line. The lines need not be sorted.
\f
* Changes in Specialized Modes and Packages in Emacs 24.4
++++
** More packages look for ~/.emacs.d/<foo> additionally to ~/.<foo>.
Affected files:
~/.emacs.d/timelog replaces ~/.timelog
~/.emacs.d/ido.last replaces ~/.ido.last
~/.emacs.d/kkcrc replaces ~/.kkcrc
~/.emacs.d/quickurls replaces ~/.quickurls
-~/.emacs.d/idlwave replaces ~/.idlwave
+~/.emacs.d/idlwave/ replaces ~/.idlwave/
~/.emacs.d/bdfcache.el replaces ~/.bdfcache.el
~/.emacs.d/places replaces ~/.emacs-places
~/.emacs.d/shadows replaces ~/.shadows
** Backtrace and debugger
-*** The Lisp debugger's `e' command now includes the lexical environment
-when evaluating the code in the context at point. Hence, it now lets
-you access lexical variables.
-
+++
-*** New command `v' (`debugger-toggle-locals') displays local vars.
+*** New Lisp debugger command `v' (`debugger-toggle-locals') toggles the
+display of local variables of the current stack frame.
-*** New minor mode `jit-lock-debug-mode' lets you use the debuggers on
-code run via JIT Lock.
-
-** Battery
+*** The Lisp debugger's `e' command (`debugger-eval-expression') now includes
+the lexical environment when evaluating the code in the context at point
+(and so allows you to access lexical variables).
---
-*** Battery information via the BSD `apm' utility is now supported.
+*** New minor mode `jit-lock-debug-mode' helps you debug code run via JIT Lock.
-** Buffer Menu
+---
+** Battery information can now be retrieved from BSD's `apm' utility.
-*** `M-s a C-o' shows lines matching a regexp in marked buffers using Occur.
+---
+** In the Buffer Menu, `M-s a C-o' shows matches for a regexp in marked buffers.
** Calendar and Diary
** Calc
++++
*** Calc by default now uses the Gregorian calendar for all dates, and
uses January 1, 1 AD as its day number 1. Previously Calc used the
Julian calendar for dates before September 14, 1752, and it used
December 31, 1 BC as its day number 1; the new scheme is more
consistent with Calendar's calendrical system and day numbering.
-*** The new variable `calc-gregorian-switch' lets you configure the
-date when Calc switches from the Julian to the Gregorian calendar.
-Nil, the default value, means to always use the Gregorian calendar.
-The value (YEAR MONTH DAY) means to start using the Gregorian calendar
-on the given date.
++++
+*** The new option `calc-gregorian-switch' lets you configure if
+(and when) Calc switches from the Julian to the Gregorian calendar.
++++
*** Support for ISO 8601 dates.
** CEDET
**** Improved detection of used namespaces in current scope in C++.
**** Parsing of default values for variables and function arguments in C/C++.
-They are also displayed by the summarize feature in the modeline.
+They are also displayed by the summarize feature in the mode line.
**** Improved parsing of function pointers in C/C++.
This also includes parsing of function pointers as function arguments.
-**** Parsing of C/C++ preprocessor macros which open new scope.
-For example, this enables parsing of macros which open new namespaces.
+**** Parsing of C/C++ preprocessor macros that open new scope.
+For example, this enables parsing of macros that open new namespaces.
**** Support for 'this' pointer in inline member functions in C++.
** cl-lib
++++
*** New macro `cl-tagbody'.
+This executes statements while allowing for control transfer to labels.
+++
*** letf is now just an alias for cl-letf.
** CUA mode
*** CUA mode now uses `delete-selection-mode' and `shift-select-mode'.
-Hence, you can now enable it independently from `transient-mark-mode',
-`delete-selection-mode', and `shift-select-mode'.
+Hence, you can now enable it independently from those modes, and from
+`transient-mark-mode'.
+---
*** `cua-highlight-region-shift-only' is now obsolete.
You can disable `transient-mark-mode' to get the same result.
** CFEngine mode
+---
*** Support for completion, ElDoc, and Flycheck has been added.
+---
*** The current CFEngine syntax is parsed from "cf-promises -s json".
There is a fallback syntax available if you don't have cf-promises or
-if it doesn't support that option.
+if your version doesn't support that option. See option `cfengine-cf-promises'.
-** Delete Selection mode can now be used without `transient-mark-mode'.
+---
+** Delete Selection mode can now be used without Transient Mark mode.
** Desktop
and `desktop-restore-forces-onscreen' offer further customization.
+++
-** Dired
-
-*** New minor mode `dired-hide-details-mode' hides details.
+** New Dired minor mode `dired-hide-details-mode' toggles whether details,
+such as file ownership or permissions, are visible.
-** Eldoc Mode works properly in the minibuffer.
+---
+** You can enable ElDoc inside the `eval-expression' minibuffer with:
+ (add-hook 'eval-expression-minibuffer-setup-hook 'eldoc-mode)
+The results display in the mode line.
** Electric Pair mode
`electric-pair-text-syntax-table' to tweak pairing behavior inside
strings and comments.
-** EPA
-
-*** New option `epa-mail-aliases'.
-You can set this to a list of alias expansions for keys to use
-in `epa-mail-encrypt'.
-
-If one element of the variable's value is ("foo@bar.com" "foo@hello.org"),
-that means: when one of the recipients of the message being encrypted
-is `foo@bar.com', encrypt the message for `foo@hello.org' instead.
-
-If one element of the variable's value is ("foo@bar.com"),
-that means: when one of the recipients of the message being encrypted
-is `foo@bar.com', ignore that name as regards encryption.
-This is useful to avoid a query when you have no key for that name.
-
-** ERC
++++
+** New EPA option `epa-mail-aliases'.
+You can set this to a list of email address aliases that `epa-mail-encrypt'
+should use to find keys.
-*** New option `erc-accidental-paste-threshold-seconds'.
+---
+** New ERC option `erc-accidental-paste-threshold-seconds'.
If set to a number, this can be used to avoid accidentally pasting large
amounts of data into the ERC input.
Tramp-using variants can still be used by enabling the eshell-tramp
module.
-** F90 mode
---
-*** New option `f90-smart-end-names'.
+** New F90 mode option `f90-smart-end-names'.
-** Icomplete is a bit more like Ido.
+** Icomplete
+Icomplete is now more similar to Ido.
+
+---
+*** Icomplete by default now applies to all forms of minibuffer completion.
+The variable `icomplete-with-completion-tables' (now a user option)
+controls this. To restore the old behavior, set it back to
+'(internal-complete-buffer).
-*** Key bindings to navigate through and select the completions.
++++
+*** You can navigate through and select completions using the keys
+from `icomplete-minibuffer-map'.
-*** The icomplete-separator is customizable, and its default has changed.
+---
+*** The string that separates potential completions is now a customizable
+option (`icomplete-separator'). The default is " | " rather than ",".
-*** Removed `icomplete-show-key-bindings'.
+---
+*** New face `icomplete-first-match'; and new options
+`icomplete-hide-common-prefix' and `icomplete-show-matches-on-no-input'.
-*** Icomplete-mode by defaults applies to all forms of minibuffer completion.
-(setq icomplete-with-completion-tables '(internal-complete-buffer))
-will revert to the old behavior.
+---
+*** The option `icomplete-show-key-bindings' has been removed.
** Ido
-*** Ido has a manual now.
++++
+*** An Ido user manual is now included.
-*** `ido-use-virtual-buffers' takes a new value 'auto.
+---
+*** The option `ido-use-virtual-buffers' can now take the value `auto'.
+This means to use virtual buffers if the current ido input does not match
+an existing buffer.
-*** `ido-decorations' has been slightly extended to give a bit more control.
+---
+*** The variable `ido-decorations' can optionally have two new elements,
+which are the brackets to use around the sole remaining completion.
** Image mode
** Hi-Lock
-*** New option `hi-lock-auto-select-face'. When non-nil, hi-lock commands
-will cycle through faces in `hi-lock-face-defaults' without prompting.
++++
+*** New global command `M-s h .' (`highlight-symbol-at-point') highlights
+the symbol found near point.
+++
-*** New global command `M-s h .' (`highlight-symbol-at-point')
-highlights the symbol found near point without prompting,
-using the next face automatically.
+*** New option `hi-lock-auto-select-face'. When non-nil, hi-lock commands
+will cycle through faces in `hi-lock-face-defaults' without prompting.
** New Imenu option `imenu-generic-skip-comments-and-strings'.
+** Info
+
---
-** New Info face `info-index-match', used to highlight matches in index
+*** New Info face `info-index-match', used to highlight matches in index
entries displayed by `Info-index-next', `Info-virtual-index' and
`info-apropos'.
+---
+*** The Info-edit command is obsolete. Editing Info nodes by hand
+has not been relevant for some time.
+
** JS Mode
+---
+*** New option `js-switch-indent-offset'.
+
+---
*** Better indentation of multiple-variable declarations.
-If declaration spans several lines, variables on the following lines
+If a declaration spans several lines, variables on the following lines
are lined up to the first one.
-*** We now recognize and better indent continuations in array
-comprehensions.
-
-*** New option `js-switch-indent-offset`.
+---
+*** Recognition and better indentation of continuations in array comprehensions.
-** MH-E has been updated to MH-E version 8.5.
-See MH-E-NEWS for details.
++++
+** MH-E has been updated to version 8.5 - see separate MH-E-NEWS file.
+++
** Octave mode
*** Completion in Octave file buffers.
-*** Eldoc support.
+*** ElDoc support.
*** Jump to definition.
*** Documentation lookup/search.
-** OPascal mode is the new name for Delphi mode.
++++
+** OPascal mode is the new name for Delphi mode
+---
*** All delphi-* variables and functions have been renamed to opascal-*.
+Obsolete aliases exist for those likely to have been used externally.
-*** `delphi-newline-always-indents' is not supported any more.
+---
+*** The option `delphi-newline-always-indents' has been removed.
Use `electric-indent-mode' instead.
-*** `delphi-tab' is gone, replaced by `indent-for-tab-command'.
+---
+*** The TAB key runs the standard `indent-for-tab-command', not `delphi-tab'.
** Package
++++
+*** In the `list-packages' buffer, you can use `f' (`package-menu-filter')
+to filter the list of packages by a keyword.
+
++++
+*** In the `describe-package' buffer, there are now buttons listing the
+keywords related to the package. Click on a button to see other packages
+related to that keyword.
+
+---
*** The format of `archive-contents' files, generated by package
repositories, has changed to allow a new (fifth) element in the data
vectors, containing an associative list with extra properties.
-
-*** `describe-package' buffer uses the `:url' extra property to
-display a `Homepage' header, if it's present.
-
-*** In the buffer produced by `describe-package', there are now buttons
-listing the keywords related to that package. You can click on them
-to see other packages related to any given keyword.
-
-*** In the *Packages* buffer, `f' or the Package->Filter menu filters
-the packages by a keyword.
+(For example, `describe-package' uses the `:url' extra property to
+display a "Homepage" header.)
---
** In Prolog mode, `prolog-use-smie' has been removed,
** Ruby mode
-*** New option `ruby-encoding-magic-comment-style'.
+---
+*** Improved syntax highlighting and indentation.
-*** New option `ruby-custom-encoding-magic-comment-template'.
+---
+*** New `electric-indent-mode' integration.
-*** Improved syntax highlighting and indentation.
+---
+*** New option `ruby-encoding-magic-comment-style'.
-*** More Ruby file types have been added to `auto-mode-alist'.
+---
+*** New option `ruby-custom-encoding-magic-comment-template'.
+---
*** New option `ruby-align-to-stmt-keywords'.
-*** New `electric-indent-mode' integration.
+---
+*** New option `ruby-align-chained-calls'.
+
+---
+*** More Ruby file types have been added to `auto-mode-alist'.
** Search and Replace
that it matches symbols, and non-symbol characters between symbols.
+++
-** New SES command `ses-rename-cell' allows assigning names to SES cells.
+** New SES command `ses-rename-cell' allows assignment of names to SES cells.
---
** The shell.el option `explicit-bash-args' includes --noediting by default.
** Shell Script mode
-*** `sh-mode' now has its own setting for `add-log-current-defun-function'.
+---
+*** The SMIE indentation engine is now used by default - see `sh-use-smie'.
-*** The SMIE indentation engine is now used by default.
+---
+*** `sh-mode' now has its own setting for `add-log-current-defun-function'.
** SMIE indentation can be customized via `smie-config'.
Emacs can learn the appropriate indentation settings if you provide it
with an indented sample file.
+---
+** SQL
+Improved login monitoring and appropriate response to login failures.
+Includes `sql-login-delay' to define maximum wait for a connection.
+
+*** Oracle support
+SQL*Plus script placeholders are properly highlighted and identified
+in `sql-placeholders-filter' correctly. When SQL*Plus is started,
+options specified in `sql-oracle-options' are passed before the logon
+parameter, as SQL*Plus expects. The default setting for
+`sql-oracle-options' has been altered to pass the `-L' option to limit
+the number of logon attempts per invocation.
+
+---
** New Term mode option `term-suppress-hard-newline'.
+++
*** Extensive customizability of operation and display, including many faces.
-** trace-function
+** Trace
-*** No prompting for the destination buffer, unless a prefix argument is used.
+---
+*** `trace-function' and `trace-function-background' no longer prompt for
+the output buffer. Unless you use a prefix argument, they output to
+`trace-buffer'.
-*** With a prefix argument, you can enter a "context"; i.e., a Lisp
-expression whose value at the time the function is entered/exited will
-be printed along with the function name and arguments. For example,
-you can use this to trace the value of current-buffer or point.
+---
+*** With a prefix argument, `trace-function' and `trace-function-background'
+will prompt for a "context". This is a Lisp expression, whose value at the
+time the function is entered/exited is printed along with the function's
+name and arguments.
** Tramp
++++
*** The experimental url syntax for remote file names has been removed.
+++
devices by the Android Debug Bridge. The variable `tramp-adb-program'
can be used to adapt the path of the "adb" program, if needed.
++++
*** The connection methods "plink1", "ssh1", "ssh2", "scp1", "scp2",
"scpc" and "rsyncc" are discontinued. The ssh option
"ControlMaster=auto" is set automatically in all ssh-based methods,
-when possible.
+when possible. See `tramp-use-ssh-controlmaster-options'.
+++
*** Handlers for `file-acl' and `set-file-acl' for remote machines
*** Handlers for `file-notify-add-watch' and `file-notify-rm-watch'
for remote machines which support filesystem notifications.
-** New command `url-cookie-list' displays all the current cookies, and
-allows deleting selected cookies.
++++
+** New URL command `url-cookie-list' displays the current cookies,
+and allows you to interactively remove cookies.
** VC and related modes
under current version control system. When called with a prefix
argument, you can remove a file from the ignored file list.
----
-*** `cvs-append-to-ignore' has been renamed to `vc-cvs-append-to-ignore'
-because it is moved to vc-cvs.el.
-
** VHDL mode
---
** The Woman commands `woman-default-faces' and `woman-monochrome-faces'
are obsolete. Customize the `woman-*' faces instead.
-** Obsolete packages:
+** Obsolete packages
+
++++
+*** iswitchb.el; use icomplete-mode.
-*** Iswitchb is made obsolete by icomplete-mode.
+---
+*** longlines.el; use visual-line-mode.
-*** longlines.el is obsolete; use visual-line-mode instead.
+---
+*** meese.el.
+++
*** sup-mouse.el.
---
-*** terminal.el is obsolete; use term.el instead.
+*** terminal.el; use term.el instead.
---
-*** The previous version of todo-mode.el is obsolete and renamed otodo-mode.el.
+*** the old version of todo-mode.el (renamed to otodo-mode.el).
---
-*** xesam.el is obsolete, because the XESAM project has been canceled.
+*** xesam.el (owing to the cancellation of the XESAM project).
+++
-*** yow.el is obsolete; use fortune.el or cookie1.el instead.
-
----
-*** The Info-edit command is obsolete. Editing Info nodes by hand
-has not been relevant for some time.
+*** yow.el; use fortune.el or cookie1.el instead.
\f
* New Modes and Packages in Emacs 24.4
** New package `eww' is a built-in web browser.
It is only available if Emacs is compiled with libxml2 support.
++++
** New minor mode `superword-mode'.
This overrides the default word motion commands to treat "symbol_words"
as a single word, similar to what `subword-mode' does.
function-carrying place, such as process-filters or `<foo>-function' hooks.
*** advice-add/advice-remove to add/remove a piece of advice on a named
-function,much like `defadvice' does.
+function, much like `defadvice' does.
** New package frameset.el.
It provides a set of operations to save a frameset (the state of all
+++
** New function `get-pos-property'.
+** `read-regexp' now uses the new variable `read-regexp-defaults-function'
+as a function to call to provide default values.
+
** Completion changes
*** The separator for `completing-read-multiple' can now be a regexp.
strings (including for partial or substring completion), or call
`completion-hilit-commonality' to add the highlight.
+*** New function `completion-table-with-cache' is a wrapper for
+`completion-table-dynamic' that caches the result of the last lookup.
+
+*** New function `completion-table-merge' to combine several
+completion tables by merging their completions.
+
** New minor modes `prettify-symbols-mode' and `global-prettify-symbols-mode'
let you enable symbol prettification (replacing a string like "lambda" with
the Greek lambda character).
** New hook `pre-redisplay-function'.
+++
-** New bool-vector set operation functions:
+** New bool-vector set operation functions
*** `bool-vector-exclusive-or'
*** `bool-vector-union'
*** `bool-vector-intersection'
** New library subr-x.el with miscellaneous small utility functions
*** `hash-table-keys'
*** `hash-table-values'
-*** `string-blank-p`
-*** `string-empty-p`
-*** `string-join`
-*** `string-reverse`
+*** `string-blank-p'
+*** `string-empty-p'
+*** `string-join'
+*** `string-reverse'
*** `string-trim-left'
*** `string-trim-right'
*** `string-trim'
*** `string-remove-suffix'
+++
-** Obsoleted functions:
+** Obsoleted functions
*** `log10'
*** `dont-compile'
*** `lisp-complete-symbol'
see the `apropos' Custom group for details.
*** The old options whose values specified faces to use have been removed
-(i.e. `apropos-symbol-face', `apropos-keybinding-face', etc.).
+(i.e. `apropos-symbol-face', `apropos-keybinding-face', `apropos-label-face',
+`apropos-match-face' and `apropos-property-face'.).
** Buffer Menu
*** `frame-update-faces' (not needed)
*** `frame-update-face-colors' (`frame-set-background-mode')
*** `x-frob-font-weight' and `x-frob-font-slant' (`make-face-*' functions)
-*** `x-make-font-bold and x-make-font-demibold (`make-face-bold')
+*** `x-make-font-bold' and `x-make-font-demibold' (`make-face-bold')
*** `x-make-font-italic' and `x-make-font-oblique' (`make-face-italic')
*** `x-make-font-bold-italic' (`make-face-bold-italic')
*** `x-make-font-unbold' (`make-face-unbold')