mirror of
git://git.sv.gnu.org/emacs.git
synced 2025-12-06 06:20:55 -08:00
Merge remote-tracking branch 'savannah/master' into feature/tree-sitter
This commit is contained in:
commit
98bfb24081
547 changed files with 36984 additions and 22924 deletions
|
|
@ -1293,7 +1293,7 @@
|
|||
|
||||
Don't bug out on certain empty elements with ids
|
||||
|
||||
* lisp/net/shr.el (shr-descend): Fix empty-element #id targetting
|
||||
* lisp/net/shr.el (shr-descend): Fix empty-element #id targeting
|
||||
(bug#52391).
|
||||
|
||||
2021-12-09 Paul Eggert <eggert@cs.ucla.edu>
|
||||
|
|
|
|||
|
|
@ -965,6 +965,7 @@ bootstrap-clean: $(distclean_dirs:=_bootstrap-clean)
|
|||
[ ! -f config.log ] || mv -f config.log config.log~
|
||||
rm -rf ${srcdir}/info
|
||||
rm -f ${srcdir}/etc/refcards/emacsver.tex
|
||||
rm -rf native-lisp/ lisp/leim/ja-dic/
|
||||
${top_bootclean}
|
||||
|
||||
### 'maintainer-clean'
|
||||
|
|
|
|||
|
|
@ -275,14 +275,6 @@ Vibhav Pant
|
|||
lisp/net/browse-url.el
|
||||
lisp/erc/*
|
||||
|
||||
Alan Third
|
||||
The NS port:
|
||||
nextstep/*
|
||||
src/ns*
|
||||
src/*.m
|
||||
lisp/term/ns-win.el
|
||||
doc/emacs/macos.texi
|
||||
|
||||
Amin Bandali
|
||||
Eshell
|
||||
lisp/eshell/*
|
||||
|
|
@ -313,7 +305,9 @@ Tramp
|
|||
|
||||
Modus themes
|
||||
Maintainer: Protesilaos Stavrou
|
||||
Repository and issue tracker: https://gitlab.com/protesilaos/modus-themes
|
||||
Repository: https://git.sr.ht/~protesilaos
|
||||
Mailing list: https://lists.sr.ht/~protesilaos/modus-themes
|
||||
Bug Reports: M-x modus-themes-report-bug
|
||||
|
||||
doc/misc/modus-themes.org
|
||||
etc/themes/modus*.el
|
||||
|
|
|
|||
|
|
@ -351,11 +351,13 @@ Optional argument TYPE is type of output (nil means all)."
|
|||
\"https://www.w3.org/TR/html4/loose.dtd\">\n\n")
|
||||
|
||||
(defconst manual-meta-string
|
||||
"<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\">
|
||||
<link rev=\"made\" href=\"mailto:bug-gnu-emacs@gnu.org\">
|
||||
"<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\">\n")
|
||||
|
||||
(defconst manual-links-string
|
||||
"<link rev=\"made\" href=\"mailto:bug-gnu-emacs@gnu.org\">
|
||||
<link rel=\"icon\" type=\"image/png\" href=\"/graphics/gnu-head-mini.png\">
|
||||
<meta name=\"ICBM\" content=\"42.256233,-71.006581\">
|
||||
<meta name=\"DC.title\" content=\"gnu.org\">\n\n")
|
||||
<meta name=\"DC.title\" content=\"gnu.org\">\n")
|
||||
|
||||
(defconst manual-style-string "<style type=\"text/css\">
|
||||
@import url('/software/emacs/manual.css');\n</style>\n")
|
||||
|
|
@ -486,6 +488,12 @@ the @import directive."
|
|||
(delete-region opoint (point))
|
||||
(search-forward "<meta http-equiv=\"Content-Style")
|
||||
(setq opoint (match-beginning 0)))
|
||||
(search-forward "</title>\n")
|
||||
(delete-region opoint (point))
|
||||
(search-forward "<link href=")
|
||||
(goto-char (match-beginning 0))
|
||||
(insert manual-links-string)
|
||||
(setq opoint (point))
|
||||
(search-forward "</head>")
|
||||
(goto-char (match-beginning 0))
|
||||
(delete-region opoint (point))
|
||||
|
|
|
|||
|
|
@ -23,6 +23,7 @@ along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. */
|
|||
#include <stdlib.h>
|
||||
#include <stdarg.h>
|
||||
#include <unistd.h>
|
||||
#include <string.h>
|
||||
|
||||
void
|
||||
fatal (const char *fmt, ...)
|
||||
|
|
|
|||
|
|
@ -334,6 +334,9 @@ looks like this:
|
|||
</div>
|
||||
</div>
|
||||
|
||||
Also, make sure the copyright years at the bottom of emacs.html are
|
||||
up-to-date.
|
||||
|
||||
The file download.html may need to be updated, for example if the
|
||||
MS-Windows binaries will be signed by a different person/key than
|
||||
those mentioned there.
|
||||
|
|
|
|||
|
|
@ -89,6 +89,7 @@
|
|||
;; PROPn: string representing the nth property value
|
||||
|
||||
(eval-when-compile (require 'cl-lib))
|
||||
(require 'generate-lisp-file)
|
||||
|
||||
(defvar unidata-list nil)
|
||||
|
||||
|
|
@ -1422,13 +1423,13 @@ Property value is a symbol `o' (Open), `c' (Close), or `n' (None)."
|
|||
(or elt (user-error "Unknown output file: %s" basename))
|
||||
(or noninteractive (message "Generating %s..." file))
|
||||
(with-temp-file file
|
||||
(insert ";;; " basename " -*- lexical-binding:t -*-
|
||||
;; " copyright "
|
||||
;; Generated from Unicode data files by unidata-gen.el.
|
||||
;; The sources for this file are found in the admin/unidata/ directory in
|
||||
;; the Emacs sources. The Unicode data files are used under the
|
||||
;; Unicode Terms of Use, as contained in the file copyright.html in that
|
||||
;; same directory.\n")
|
||||
(generate-lisp-file-heading
|
||||
basename 'unidata-gen-file
|
||||
:commentary (concat copyright " \
|
||||
The sources for this file are found in the admin/unidata/ directory in \
|
||||
the Emacs sources. The Unicode data files are used under the \
|
||||
Unicode Terms of Use, as contained in the file copyright.html in that \
|
||||
same directory."))
|
||||
(dolist (proplist (cdr elt))
|
||||
(let ((prop (unidata-prop-prop proplist))
|
||||
(index (unidata-prop-index proplist))
|
||||
|
|
@ -1446,21 +1447,15 @@ Property value is a symbol `o' (Open), `c' (Close), or `n' (None)."
|
|||
(set-char-table-extra-slot table 3 describer))
|
||||
(insert (format "(define-char-code-property '%S\n %S\n %S)\n"
|
||||
prop table docstring))))
|
||||
(insert ";; Local Variables:\n"
|
||||
";; coding: utf-8\n"
|
||||
";; version-control: never\n"
|
||||
";; no-byte-compile: t\n"
|
||||
";; no-update-autoloads: t\n"
|
||||
";; End:\n\n"
|
||||
(format ";;; %s ends here\n" basename)))))
|
||||
(generate-lisp-file-trailer basename :inhibit-provide t))))
|
||||
(or noninteractive (message "Generating %s...done" file)))
|
||||
|
||||
(defun unidata-gen-charprop (&optional charprop-file text)
|
||||
(or charprop-file (setq charprop-file (pop command-line-args-left)))
|
||||
(with-temp-file charprop-file
|
||||
(insert ";; Automatically generated by unidata-gen.el."
|
||||
" -*- lexical-binding: t -*-\n"
|
||||
";; See the admin/unidata/ directory in the Emacs sources.\n")
|
||||
(generate-lisp-file-heading
|
||||
charprop-file 'unidata-gen-charprop
|
||||
:commentary "See the admin/unidata/ directory in the Emacs sources.")
|
||||
(if text
|
||||
(insert text)
|
||||
(dolist (elt unidata-file-alist)
|
||||
|
|
@ -1469,19 +1464,7 @@ Property value is a symbol `o' (Open), `c' (Close), or `n' (None)."
|
|||
(unidata-prop-prop proplist) (car elt)
|
||||
(unidata-prop-docstring proplist))))))
|
||||
(or noninteractive (message "Writing %s..." charprop-file))
|
||||
(insert "\n"
|
||||
(format "(provide '%s)\n"
|
||||
(file-name-sans-extension
|
||||
(file-name-nondirectory charprop-file)))
|
||||
"\n"
|
||||
";; Local Variables:\n"
|
||||
";; coding: utf-8\n"
|
||||
";; version-control: never\n"
|
||||
";; no-byte-compile: t\n"
|
||||
";; no-update-autoloads: t\n"
|
||||
";; End:\n\n"
|
||||
(format ";;; %s ends here\n"
|
||||
(file-name-nondirectory charprop-file)))))
|
||||
(generate-lisp-file-trailer charprop-file)))
|
||||
|
||||
(defun unidata-gen-scripts (&optional file)
|
||||
;; Running from Makefile.
|
||||
|
|
|
|||
27
build-aux/config.guess
vendored
27
build-aux/config.guess
vendored
|
|
@ -4,7 +4,7 @@
|
|||
|
||||
# shellcheck disable=SC2006,SC2268 # see below for rationale
|
||||
|
||||
timestamp='2022-01-09'
|
||||
timestamp='2022-05-08'
|
||||
|
||||
# This file is free software; you can redistribute it and/or modify it
|
||||
# under the terms of the GNU General Public License as published by
|
||||
|
|
@ -1151,16 +1151,27 @@ EOF
|
|||
;;
|
||||
x86_64:Linux:*:*)
|
||||
set_cc_for_build
|
||||
CPU=$UNAME_MACHINE
|
||||
LIBCABI=$LIBC
|
||||
if test "$CC_FOR_BUILD" != no_compiler_found; then
|
||||
if (echo '#ifdef __ILP32__'; echo IS_X32; echo '#endif') | \
|
||||
(CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
|
||||
grep IS_X32 >/dev/null
|
||||
then
|
||||
LIBCABI=${LIBC}x32
|
||||
ABI=64
|
||||
sed 's/^ //' << EOF > "$dummy.c"
|
||||
#ifdef __i386__
|
||||
ABI=x86
|
||||
#else
|
||||
#ifdef __ILP32__
|
||||
ABI=x32
|
||||
#endif
|
||||
#endif
|
||||
EOF
|
||||
cc_set_abi=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^ABI' | sed 's, ,,g'`
|
||||
eval "$cc_set_abi"
|
||||
case $ABI in
|
||||
x86) CPU=i686 ;;
|
||||
x32) LIBCABI=${LIBC}x32 ;;
|
||||
esac
|
||||
fi
|
||||
fi
|
||||
GUESS=$UNAME_MACHINE-pc-linux-$LIBCABI
|
||||
GUESS=$CPU-pc-linux-$LIBCABI
|
||||
;;
|
||||
xtensa*:Linux:*:*)
|
||||
GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
|
||||
|
|
|
|||
|
|
@ -310,7 +310,7 @@ rm -f makefile.tmp
|
|||
sed -f ../msdos/sedlibcf.inp < gnulib.mk-in > gnulib.tmp
|
||||
sed -f ../msdos/sedlibmk.inp < gnulib.tmp > gnulib.mk
|
||||
rm -f gnulib.tmp
|
||||
Rem Create directorys in lib/ that MKDIR_P is supposed to create
|
||||
Rem Create directories in lib/ that MKDIR_P is supposed to create
|
||||
Rem but I have no idea how to do that on MS-DOS.
|
||||
mkdir sys
|
||||
Rem Create .d files for new files in lib/ and lib/malloc/
|
||||
|
|
|
|||
91
configure.ac
91
configure.ac
|
|
@ -492,6 +492,7 @@ OPTION_DEFAULT_ON([threads],[don't compile with elisp threading support])
|
|||
OPTION_DEFAULT_OFF([native-compilation],[compile with Emacs Lisp native compiler support])
|
||||
OPTION_DEFAULT_OFF([cygwin32-native-compilation],[use native compilation on 32-bit Cygwin])
|
||||
OPTION_DEFAULT_ON([xinput2],[don't use version 2 of the X Input Extension for input])
|
||||
OPTION_DEFAULT_OFF([small-ja-dic],[generate a smaller-size Japanese dictionary])
|
||||
|
||||
AC_ARG_WITH([file-notification],[AS_HELP_STRING([--with-file-notification=LIB],
|
||||
[use a file notification library (LIB one of: yes, inotify, kqueue, gfile, w32, no)])],
|
||||
|
|
@ -1025,6 +1026,7 @@ AS_IF([test $gl_gcc_warnings = no],
|
|||
gl_WARN_ADD([-Wno-pointer-sign])
|
||||
gl_WARN_ADD([-Wno-string-plus-int])
|
||||
gl_WARN_ADD([-Wno-unknown-attributes])
|
||||
gl_WARN_ADD([-Wno-unknown-pragmas])
|
||||
])
|
||||
],[
|
||||
isystem='-isystem '
|
||||
|
|
@ -1080,8 +1082,12 @@ AS_IF([test $gl_gcc_warnings = no],
|
|||
# option problematic.
|
||||
nw="$nw -Wsuggest-attribute=pure"
|
||||
|
||||
# Emacs doesn't need this paranoia.
|
||||
nw="$nw -Wbidi-chars=any,ucn"
|
||||
|
||||
if test "$emacs_cv_clang" = yes; then
|
||||
nw="$nw -Wdouble-promotion"
|
||||
nm="$nm -Wunknown-pragmas"
|
||||
fi
|
||||
|
||||
# This causes too much noise in the MinGW build.
|
||||
|
|
@ -1101,6 +1107,7 @@ AS_IF([test $gl_gcc_warnings = no],
|
|||
gl_WARN_ADD([-Wno-type-limits]) # Too many warnings for now
|
||||
gl_WARN_ADD([-Wno-unused-parameter]) # Too many warnings for now
|
||||
gl_WARN_ADD([-Wno-format-nonliteral])
|
||||
gl_WARN_ADD([-Wno-bidi-chars])
|
||||
|
||||
# clang is unduly picky about some things.
|
||||
if test "$emacs_cv_clang" = yes; then
|
||||
|
|
@ -1618,16 +1625,63 @@ AC_DEFUN([AC_TYPE_SIZE_T])
|
|||
# Likewise for obsolescent test for uid_t, gid_t; Emacs assumes them.
|
||||
AC_DEFUN([AC_TYPE_UID_T])
|
||||
|
||||
# sqrt and other floating-point functions such as fmod and frexp
|
||||
# are found in -lm on many systems.
|
||||
OLD_LIBS=$LIBS
|
||||
AC_SEARCH_LIBS([sqrt], [m])
|
||||
if test "X$LIBS" = "X$OLD_LIBS"; then
|
||||
LIB_MATH=
|
||||
else
|
||||
LIB_MATH=$ac_cv_search_sqrt
|
||||
fi
|
||||
LIBS=$OLD_LIBS
|
||||
# Check for all math.h functions that Emacs uses; on some platforms,
|
||||
# -lm is needed for some of these functions.
|
||||
AC_CACHE_CHECK([for math library],
|
||||
[emacs_cv_lib_math],
|
||||
[OLD_LIBS=$LIBS
|
||||
AC_LINK_IFELSE(
|
||||
[AC_LANG_SOURCE([[
|
||||
#include <math.h>
|
||||
int
|
||||
main (int argc, char **argv)
|
||||
{
|
||||
double d = argc;
|
||||
float f = argc;
|
||||
int i = argc;
|
||||
long l = argc;
|
||||
d = acos (d);
|
||||
d = asin (d);
|
||||
d = atan (d);
|
||||
d = atan2 (d, d);
|
||||
d = ceil (d);
|
||||
d = copysign (d, d);
|
||||
d = cos (d);
|
||||
d = exp (d);
|
||||
d = fabs (d);
|
||||
d = floor (d);
|
||||
d = fmod (d, d);
|
||||
d = frexp (d, &i);
|
||||
d = ldexp (d, i);
|
||||
d = log (d);
|
||||
d = log2 (d);
|
||||
d = log10 (d);
|
||||
d = pow (d, d);
|
||||
d = rint (d);
|
||||
d = scalbn (d, l);
|
||||
d = sin (d);
|
||||
d = sqrt (d);
|
||||
d = tan (d);
|
||||
d = trunc (d);
|
||||
f = fabsf (f);
|
||||
f = powf (f, f);
|
||||
i = ilogb (d);
|
||||
i = signbit (d);
|
||||
l = lrint (d);
|
||||
l = lround (d);
|
||||
return d == f && i == l;
|
||||
}
|
||||
]])],
|
||||
[emacs_cv_lib_math='none required'],
|
||||
[LIBS="-lm $LIBS"
|
||||
AC_LINK_IFELSE([],
|
||||
[emacs_cv_lib_math=-lm],
|
||||
[AC_MSG_ERROR([Math library (-lm) not found])])])
|
||||
LIBS=$OLD_LIBS])
|
||||
case $emacs_cv_lib_math in
|
||||
-*) LIB_MATH=$emacs_cv_lib_math;;
|
||||
*) LIB_MATH=;;
|
||||
esac
|
||||
|
||||
dnl Current possibilities handled by sed (aix4-2 -> aix,
|
||||
dnl gnu-linux -> gnu/linux, etc.):
|
||||
|
|
@ -2031,6 +2085,16 @@ Either fix this, or re-configure with the option '--without-ns'.])])
|
|||
fi
|
||||
fi
|
||||
|
||||
AC_CACHE_CHECK([for Mac OS X 12.0 or later],
|
||||
[emacs_cv_macosx_12_0],
|
||||
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
|
||||
#include <AvailabilityMacros.h>
|
||||
#if MAC_OS_X_VERSION_MAX_ALLOWED >= 120000
|
||||
Mac OS X 12.x or later.
|
||||
#endif
|
||||
]])], [emacs_cv_macosx_12_0=no],
|
||||
[emacs_cv_macosx_12_0=yes]))
|
||||
|
||||
if test "${with_native_image_api}" = yes; then
|
||||
AC_DEFINE(HAVE_NATIVE_IMAGE_API, 1, [Define to use native OS APIs for images.])
|
||||
NATIVE_IMAGE_API="yes (ns)"
|
||||
|
|
@ -6203,6 +6267,9 @@ case "$opsys" in
|
|||
if test "$NS_IMPL_COCOA" = "yes"; then
|
||||
libs_nsgui="$libs_nsgui -framework IOKit -framework Carbon \
|
||||
-framework IOSurface -framework QuartzCore"
|
||||
if test "$emacs_cv_macosx_12_0" = "yes"; then
|
||||
libs_nsgui="$libs_nsgui -framework UniformTypeIdentifiers"
|
||||
fi
|
||||
fi
|
||||
else
|
||||
libs_nsgui=
|
||||
|
|
@ -6465,6 +6532,7 @@ AS_ECHO([" Does Emacs use -lXaw3d? ${HAVE_XAW3D
|
|||
Which dumping strategy does Emacs use? ${with_dumping}
|
||||
Does Emacs have native lisp compiler? ${HAVE_NATIVE_COMP}
|
||||
Does Emacs use version 2 of the the X Input Extension? ${HAVE_XINPUT2}
|
||||
Does Emacs generate a smaller-size Japanese dictionary? ${with_small_ja_dic}
|
||||
"])
|
||||
|
||||
if test -n "${EMACSDATA}"; then
|
||||
|
|
@ -6563,6 +6631,9 @@ SUBDIR_MAKEFILES_IN=`echo " ${SUBDIR_MAKEFILES}" | sed -e 's| | $(srcdir)/|g' -e
|
|||
|
||||
AC_SUBST(SUBDIR_MAKEFILES_IN)
|
||||
|
||||
SMALL_JA_DIC=$with_small_ja_dic
|
||||
AC_SUBST(SMALL_JA_DIC)
|
||||
|
||||
dnl You might wonder (I did) why epaths.h is generated by running make,
|
||||
dnl rather than just letting configure generate it from epaths.in.
|
||||
dnl One reason is that the various paths are not fully expanded (see above);
|
||||
|
|
|
|||
|
|
@ -411,10 +411,13 @@ away in the buffer to search for an expansion.
|
|||
|
||||
@vindex dabbrev-check-all-buffers
|
||||
@vindex dabbrev-check-other-buffers
|
||||
@vindex dabbrev-ignored-buffer-modes
|
||||
After scanning the current buffer, @kbd{M-/} normally searches other
|
||||
buffers. The variables @code{dabbrev-check-all-buffers} and
|
||||
@code{dabbrev-check-other-buffers} can be used to determine which
|
||||
other buffers, if any, are searched.
|
||||
other buffers, if any, are searched. Buffers that have major modes
|
||||
derived from any of the modes in @code{dabbrev-ignored-buffer-modes}
|
||||
are ignored.
|
||||
|
||||
@vindex dabbrev-ignored-buffer-names
|
||||
@vindex dabbrev-ignored-buffer-regexps
|
||||
|
|
|
|||
|
|
@ -347,11 +347,11 @@ move to the column number specified by the argument's numeric value.
|
|||
@kindex C-x C-n
|
||||
@findex set-goal-column
|
||||
Use the current column of point as the @dfn{semipermanent goal column}
|
||||
for @kbd{C-n} and @kbd{C-p} (@code{set-goal-column}) in the current
|
||||
buffer. When a semipermanent goal column is in effect, those commands
|
||||
always try to move to this column, or as close as possible to it,
|
||||
after moving vertically. The goal column remains in effect until
|
||||
canceled.
|
||||
(@code{set-goal-column}) in the current buffer. When a semipermanent
|
||||
goal column is in effect, @kbd{C-n}, @kbd{C-p}, @kbd{<prior>} and
|
||||
@kbd{<next>} always try to move to this column, or as close as
|
||||
possible to it, after moving vertically. The goal column remains in
|
||||
effect until canceled.
|
||||
|
||||
@item C-u C-x C-n
|
||||
Cancel the goal column. Henceforth, @kbd{C-n} and @kbd{C-p} try to
|
||||
|
|
@ -653,14 +653,14 @@ Toggle automatic display of the current line number or column number.
|
|||
displayed before each line, see @ref{Display Custom}.
|
||||
|
||||
@item M-=
|
||||
Display the number of lines, words, and characters that are present in
|
||||
the region (@code{count-words-region}). @xref{Mark}, for information
|
||||
about the region.
|
||||
Display the number of lines, sentences, words, and characters that are
|
||||
present in the region (@code{count-words-region}). @xref{Mark}, for
|
||||
information about the region.
|
||||
|
||||
@item M-x count-words
|
||||
Display the number of lines, words, and characters that are present in
|
||||
the buffer. If the region is active (@pxref{Mark}), display the
|
||||
numbers for the region instead.
|
||||
Display the number of lines, sentences, words, and characters that are
|
||||
present in the buffer. If the region is active (@pxref{Mark}),
|
||||
display the numbers for the region instead.
|
||||
|
||||
@item C-x =
|
||||
Display the character code of character after point, character position of
|
||||
|
|
@ -689,7 +689,7 @@ narrowed region and the line number relative to the whole buffer.
|
|||
@kindex M-=
|
||||
@findex count-words-region
|
||||
@kbd{M-=} (@code{count-words-region}) displays a message reporting
|
||||
the number of lines, words, and characters in the region
|
||||
the number of lines, sentences, words, and characters in the region
|
||||
(@pxref{Mark}, for an explanation of the region). With a prefix
|
||||
argument, @kbd{C-u M-=}, the command displays a count for the entire
|
||||
buffer.
|
||||
|
|
|
|||
|
|
@ -178,7 +178,9 @@ list of customization variables and faces.
|
|||
If you change the variable
|
||||
@code{compilation-auto-jump-to-first-error} to a non-@code{nil} value,
|
||||
Emacs automatically visits the locus of the first error message that
|
||||
appears in the @file{*compilation*} buffer.
|
||||
appears in the @file{*compilation*} buffer. (This variable can also
|
||||
have the values @code{if-location-known} and @code{first-known}, which
|
||||
modify the conditions for automatically visiting the error locus.)
|
||||
|
||||
Compilation mode provides the following additional commands. These
|
||||
commands can also be used in @file{*grep*} buffers, where the
|
||||
|
|
@ -287,6 +289,19 @@ window so that the current error message is @var{n} lines from the
|
|||
top, whether or not there is a fringe; the default value, @code{nil},
|
||||
gives the behavior described above.
|
||||
|
||||
@vindex compilation-hidden-output
|
||||
Compilation output can sometimes be very verbose, and much of it isn't
|
||||
of particular interest to a user. The
|
||||
@code{compilation-hidden-output} user option should either be a regexp
|
||||
or a list of regexps, and output that matches will be made invisible.
|
||||
For instance, to hide the verbose output from recursive makefiles, you
|
||||
can say something like:
|
||||
|
||||
@lisp
|
||||
(setq compilation-hidden-output
|
||||
'("^make[^\n]+\n"))
|
||||
@end lisp
|
||||
|
||||
@vindex compilation-error-regexp-alist
|
||||
@vindex grep-regexp-alist
|
||||
To parse messages from the compiler, Compilation mode uses the
|
||||
|
|
|
|||
|
|
@ -800,29 +800,45 @@ changing any environment or registry settings.
|
|||
@pindex addpm, MS-Windows installation program
|
||||
@cindex registry, setting environment variables (MS-Windows)
|
||||
|
||||
On MS-Windows, the installation program @command{addpm.exe} adds
|
||||
values for @env{emacs_dir}, @env{EMACSLOADPATH}, @env{EMACSDATA},
|
||||
@env{EMACSPATH}, @env{EMACSDOC}, @env{SHELL} and @env{TERM} to the
|
||||
@file{HKEY_LOCAL_MACHINE} section of the system registry, under
|
||||
@file{/Software/GNU/Emacs}. It does this because there is no standard
|
||||
place to set environment variables across different versions of
|
||||
Windows. Running @command{addpm.exe} is no longer strictly necessary
|
||||
in recent versions of Emacs, but if you are upgrading from an older
|
||||
version, running @command{addpm.exe} ensures that you do not have
|
||||
older registry entries from a previous installation, which may not be
|
||||
compatible with the latest version of Emacs.
|
||||
|
||||
When Emacs starts, as well as checking the environment, it also checks
|
||||
the System Registry for those variables and for @env{HOME}, @env{LANG}
|
||||
and @env{PRELOAD_WINSOCK}.
|
||||
On MS-Windows, the environment variables @env{emacs_dir},
|
||||
@env{EMACSLOADPATH}, @env{EMACSDATA}, @env{EMACSPATH}, @env{EMACSDOC},
|
||||
@env{SHELL}, @env{TERM}, @env{HOME}, @env{LANG}, and
|
||||
@env{PRELOAD_WINSOCK} can also be set in the @file{HKEY_CURRENT_USER}
|
||||
or the @file{HKEY_LOCAL_MACHINE} section of the system registry, under
|
||||
the @file{/Software/GNU/Emacs} key. When Emacs starts, as well as
|
||||
checking the environment, it also checks the system registry for those
|
||||
variables.
|
||||
|
||||
To determine the value of those variables, Emacs goes through the
|
||||
following procedure. First, the environment is checked. If the
|
||||
variable is not found there, Emacs looks for registry keys by that
|
||||
name under @file{/Software/GNU/Emacs}; first in the
|
||||
following procedure. First, it checks the environment. If the
|
||||
variable is not found there, Emacs looks for a registry key by the
|
||||
name of the variable under @file{/Software/GNU/Emacs}; first in the
|
||||
@file{HKEY_CURRENT_USER} section of the registry, and if not found
|
||||
there, in the @file{HKEY_LOCAL_MACHINE} section. Finally, if Emacs
|
||||
still cannot determine the values, compiled-in defaults are used.
|
||||
still cannot determine the values, it uses the compiled-in defaults.
|
||||
|
||||
Note that the registry settings have global system-wide effect: they
|
||||
will affect all Emacs sessions run on the system. Thus, if you run
|
||||
different Emacs versions, or use both installed and un-installed Emacs
|
||||
executables, or build newer versions of Emacs, the settings in the
|
||||
registry will cause all of them to use the same directories, which is
|
||||
probably not what you want. For this reason, @emph{we recommend
|
||||
against setting these variables in the registry}. If you have such
|
||||
settings in the registry, we recommend that you remove them.
|
||||
|
||||
If you run the Emacs MS-Windows installation program
|
||||
@command{addpm.exe}, it will update any existing registry settings of
|
||||
the @env{emacs_dir}, @env{EMACSLOADPATH}, @env{EMACSDATA},
|
||||
@env{EMACSPATH}, @env{EMACSDOC}, @env{SHELL}, and @env{TERM} variables
|
||||
to have the values suitable for the installed Emacs version with which
|
||||
@command{addpm.exe} came. Note that @command{addpm.exe} will
|
||||
@emph{not} create any registry setting that didn't exist, it will only
|
||||
update existing settings, which are most probably inherited from an
|
||||
old Emacs installation, so that they are compatible with the newly
|
||||
installed Emacs version. Running @command{addpm.exe} is no longer
|
||||
necessary when installing recent versions of Emacs, so we only
|
||||
recommend doing that if you are upgrading from an older version, and
|
||||
cannot remove these settings from the registry for some reason.
|
||||
|
||||
In addition to the environment variables above, you can also add
|
||||
settings to the @file{/Software/GNU/Emacs} registry key to specify X
|
||||
|
|
|
|||
|
|
@ -122,7 +122,7 @@ listing. As an exception, if you type @kbd{C-x C-j} in a Dired
|
|||
buffer, Emacs displays the directory listing of the parent directory
|
||||
and places point on the line that corresponds to the directory where
|
||||
you invoked @code{dired-jump}. Typing @kbd{C-x 4 C-j}
|
||||
(@code{dired-jump-other-window} has the same effect, but displays the
|
||||
(@code{dired-jump-other-window}) has the same effect, but displays the
|
||||
Dired buffer in a new window.
|
||||
|
||||
The variable @code{dired-listing-switches} specifies the options to
|
||||
|
|
@ -1711,6 +1711,9 @@ the originating program. Dragging files out of a Dired buffer is also
|
|||
supported, by enabling the user option @code{dired-mouse-drag-files},
|
||||
the mouse can be used to drag files onto other programs. When set to
|
||||
@code{link}, it will make the other program (typically a file manager)
|
||||
create a symbolic link to the file, and setting it to any other
|
||||
non-@code{nil} value will make the other program open or create a copy
|
||||
of the file.
|
||||
create a symbolic link to the file; when set to @code{move}, it will
|
||||
make the other program move the file to a new location, and setting it
|
||||
to any other non-@code{nil} value will make the other program open or
|
||||
create a copy of the file. The keyboard modifiers pressed during the
|
||||
drag-and-drop operation can also control what action the other program
|
||||
takes towards the file.
|
||||
|
|
|
|||
|
|
@ -1594,7 +1594,9 @@ charge on the mode-line, by using the command
|
|||
@code{battery-mode-line-format} determines the way the battery charge
|
||||
is displayed; the exact mode-line message depends on the operating
|
||||
system, and it usually shows the current battery charge as a
|
||||
percentage of the total charge.
|
||||
percentage of the total charge. The functions in
|
||||
@code{battery-update-functions} are run after updating the mode line,
|
||||
and can be used to trigger actions based on the battery status.
|
||||
|
||||
@cindex mode line, 3D appearance
|
||||
@cindex attributes of mode line, changing
|
||||
|
|
@ -1980,7 +1982,7 @@ The command @kbd{M-x display-line-numbers-mode} provides a
|
|||
convenient way to turn on display of line numbers. This mode has a globalized
|
||||
variant, @code{global-display-line-numbers-mode}. The user option
|
||||
@code{display-line-numbers-type} controls which sub-mode of
|
||||
line-number display, described above, will these modes activate.
|
||||
line-number display, described above, these modes will activate.
|
||||
|
||||
@noindent
|
||||
Note that line numbers are not displayed in the minibuffer and in the
|
||||
|
|
|
|||
|
|
@ -326,6 +326,48 @@ of @code{require-final-newline} (@pxref{Customize Save}). If you have
|
|||
already visited the same file in the usual (non-literal) manner, this
|
||||
command asks you whether to visit it literally instead.
|
||||
|
||||
@findex find-sibling-file
|
||||
@vindex find-sibling-rules
|
||||
Files are sometimes (loosely) tied to other files, and you could call
|
||||
these files @dfn{sibling files}. For instance, when editing C files,
|
||||
if you have a file called @samp{"foo.c"}, you often also have a file
|
||||
called @samp{"foo.h"}, and that could be its sibling file. Or you may
|
||||
have different versions of a file, for instance
|
||||
@samp{"src/emacs/emacs-27/lisp/allout.el"} and
|
||||
@samp{"src/emacs/emacs-28/lisp/allout.el"} might be considered
|
||||
siblings. Emacs provides the @code{find-sibling-file} command to jump
|
||||
between sibling files, but it's impossible to guess at which files a
|
||||
user might want to be considered siblings, so Emacs lets you configure
|
||||
this freely by altering the @code{find-sibling-rules} user option.
|
||||
This is a list of match/expansion elements.
|
||||
|
||||
For instance, to do the @samp{".c"} to @samp{".h"} mapping, you could
|
||||
say:
|
||||
|
||||
@lisp
|
||||
(setq find-sibling-rules
|
||||
'(("\\([^/]+\\)\\.c\\'" "\\1.h")))
|
||||
@end lisp
|
||||
|
||||
(@code{ff-find-related-file} offers similar functionality especially
|
||||
geared towards C files, @pxref{Other C Commands}.)
|
||||
|
||||
Or, if you want to consider all files under
|
||||
@samp{"src/emacs/DIR/file-name"} to be siblings of other @var{dir}s,
|
||||
you could say:
|
||||
|
||||
@lisp
|
||||
(setq find-sibling-rules
|
||||
'(("src/emacs/[^/]+/\\(.*\\)\\'" "src/emacs/.*/\\1")))
|
||||
@end lisp
|
||||
|
||||
As you can see, this is a list of @var{(MATCH EXPANSION...)} elements.
|
||||
The @var{match} is a regular expression that matches the visited file
|
||||
name, and each @var{expansion} may refer to match groups by using
|
||||
@samp{\\1} and so on. The resulting expansion string is then applied
|
||||
to the file system to see if any files match this expansion
|
||||
(interpreted as a regexp).
|
||||
|
||||
@vindex find-file-hook
|
||||
@vindex find-file-not-found-functions
|
||||
Two special hook variables allow extensions to modify the operation
|
||||
|
|
|
|||
|
|
@ -128,6 +128,12 @@ In addition, the text in the region becomes the primary selection
|
|||
non-@code{nil} value, dragging the mouse over a stretch of text also
|
||||
adds the text to the kill ring. The default is @code{nil}.
|
||||
|
||||
If this variable is @code{non-empty}, only copy to the kill ring if
|
||||
the region is non-empty. For instance, if you mouse drag an area that
|
||||
is less than a half a character, you'd normally get the empty string
|
||||
in your kill ring, but with @code{non-empty}, this short mouse drag
|
||||
won't affect the kill ring.
|
||||
|
||||
@vindex mouse-scroll-min-lines
|
||||
If you move the mouse off the top or bottom of the window while
|
||||
dragging, the window scrolls at a steady rate until you move the mouse
|
||||
|
|
@ -136,6 +142,12 @@ entirely on the screen. The number of lines scrolled per step depends
|
|||
on how far away from the window edge the mouse has gone; the variable
|
||||
@code{mouse-scroll-min-lines} specifies a minimum step size.
|
||||
|
||||
@vindex mouse-drag-mode-line-buffer
|
||||
If you enable the option @code{mouse-drag-mode-line-buffer} and
|
||||
dragging files is supported by the window system, then dragging the
|
||||
mouse on the buffer name portion of the mode line will drag that
|
||||
buffer's file to another program or frame.
|
||||
|
||||
@findex mouse-yank-primary
|
||||
@findex mouse-yank-at-click
|
||||
Clicking with the middle mouse button, @kbd{mouse-2}, moves point to
|
||||
|
|
@ -1651,11 +1663,15 @@ For additional customization options for displaying tooltips, use
|
|||
@kbd{M-x customize-group @key{RET} tooltip @key{RET}}.
|
||||
|
||||
@vindex use-system-tooltips
|
||||
If Emacs is built with the GTK+ toolkit or Haiku windowing support,
|
||||
it displays tooltips via the toolkit, using the default appearance of
|
||||
the toolkit's tooltips. To disable this, change the variable
|
||||
If Emacs is built with the GTK+ toolkit, Nextstep windowing, or
|
||||
Haiku windowing support, it displays tooltips via the toolkit, using
|
||||
the default appearance of the toolkit's tooltips.@footnote{The
|
||||
foreground and background colors of toolkit-created tooltips on
|
||||
Nextstep can also be customized by setting the @code{foreground} and
|
||||
@code{background} frame parameters that are part of
|
||||
@code{tooltip-frame-parameters}.} To disable this, change the variable
|
||||
@code{use-system-tooltips} to @code{nil}. If you do this, or if Emacs
|
||||
is built without GTK+ or Haiku windowing support, most attributes of
|
||||
is built without the appropriate windowing support, most attributes of
|
||||
the tooltip text are specified by the @code{tooltip} face, and by X
|
||||
resources (@pxref{X Resources}).
|
||||
|
||||
|
|
|
|||
|
|
@ -229,9 +229,11 @@ from a variety of coding systems when reading or writing it.
|
|||
@item Command
|
||||
A command is a Lisp function specially defined to be able to serve as
|
||||
a key binding in Emacs or to be invoked by its name
|
||||
(@pxref{Glossary---Command Name}). When you type a key sequence
|
||||
(q.v.), its binding (q.v.@:) is looked up in the relevant keymaps
|
||||
(q.v.@:) to find the command to run. @xref{Commands}.
|
||||
(@pxref{Glossary---Command Name}). (Another term for @dfn{command} is
|
||||
@dfn{interactive function}---they are used interchangeably.) When you
|
||||
type a key sequence (q.v.), its binding (q.v.@:) is looked up in the
|
||||
relevant keymaps (q.v.@:) to find the command to run.
|
||||
@xref{Commands}.
|
||||
|
||||
@item Command History
|
||||
@xref{Glossary---Minibuffer History}.
|
||||
|
|
@ -775,6 +777,14 @@ typing sequences of @acronym{ASCII} characters (q.v.). @xref{Input Methods}.
|
|||
Insertion means adding text into the buffer, either from the keyboard
|
||||
or from some other place in Emacs.
|
||||
|
||||
@item Interactive Function
|
||||
A different term for @dfn{command} (q.v.).
|
||||
|
||||
@item Interactive Invocation
|
||||
A function can be called from Lisp code, or called as a user level
|
||||
command (via @kbd{M-x}, a key binding or a menu). In the latter case,
|
||||
the function is said to be @dfn{called interactively}.
|
||||
|
||||
@item Interlocking
|
||||
@xref{Glossary---File Locking}.
|
||||
|
||||
|
|
|
|||
|
|
@ -111,24 +111,27 @@ active (@pxref{Using Region}).
|
|||
|
||||
@kindex M-\
|
||||
@findex delete-horizontal-space
|
||||
@kindex M-SPC
|
||||
@findex just-one-space
|
||||
@findex cycle-spacing
|
||||
The other delete commands are those that delete only whitespace
|
||||
characters: spaces, tabs and newlines. @kbd{M-\}
|
||||
(@code{delete-horizontal-space}) deletes all the spaces and tab
|
||||
characters before and after point. With a prefix argument, this only
|
||||
deletes spaces and tab characters before point. @kbd{M-@key{SPC}}
|
||||
(@code{just-one-space}) does likewise but leaves a single space before
|
||||
deletes spaces and tab characters before point.
|
||||
|
||||
@findex just-one-space
|
||||
@code{just-one-space} does likewise but leaves a single space before
|
||||
point, regardless of the number of spaces that existed previously
|
||||
(even if there were none before). With a numeric argument @var{n}, it
|
||||
leaves @var{n} spaces before point if @var{n} is positive; if @var{n}
|
||||
is negative, it deletes newlines in addition to spaces and tabs,
|
||||
leaving @minus{}@var{n} spaces before point. The command @code{cycle-spacing}
|
||||
acts like a more flexible version of @code{just-one-space}. It
|
||||
does different things if you call it repeatedly in succession.
|
||||
The first call acts like @code{just-one-space}, the next removes
|
||||
all whitespace, and a third call restores the original whitespace.
|
||||
leaving @minus{}@var{n} spaces before point.
|
||||
|
||||
@kindex M-SPC
|
||||
@findex cycle-spacing
|
||||
@vindex cycle-spacing-actions
|
||||
The command @code{cycle-spacing} (@kbd{M-@key{SPC}}) acts like a more
|
||||
flexible version of @code{just-one-space}. It performs different
|
||||
space cleanup actions defined by @code{cycle-spacing-actions}, in a
|
||||
cyclic manner, if you call it repeatedly in succession.
|
||||
|
||||
@kbd{C-x C-o} (@code{delete-blank-lines}) deletes all blank lines
|
||||
after the current line. If the current line is blank, it deletes all
|
||||
|
|
|
|||
|
|
@ -179,7 +179,7 @@ itself counts as the first repetition, since it is executed as you
|
|||
define it, so @kbd{C-u 4 C-x )} executes the macro immediately 3
|
||||
additional times.
|
||||
|
||||
@findex kdb-macro-redisplay
|
||||
@findex kmacro-redisplay
|
||||
@kindex C-x C-k d
|
||||
While executing a long-running keyboard macro, it can sometimes be
|
||||
useful to trigger a redisplay (to show how far we've gotten). The
|
||||
|
|
|
|||
|
|
@ -223,6 +223,7 @@ keystrokes. Here is a list of these events.
|
|||
|
||||
@table @key
|
||||
@item ns-open-file
|
||||
@cindex ns-open-file event
|
||||
@vindex ns-pop-up-frames
|
||||
This event occurs when another Nextstep application requests that
|
||||
Emacs open a file. A typical reason for this would be a user
|
||||
|
|
@ -239,44 +240,29 @@ means to always visit the file in a new frame. A value of @code{nil}
|
|||
means to always visit the file in the selected frame.
|
||||
|
||||
@item ns-open-temp-file
|
||||
@cindex ns-open-temp-file event
|
||||
This event occurs when another application requests that Emacs open a
|
||||
temporary file. By default, this is handled by just generating a
|
||||
@code{ns-open-file} event, the results of which are described above.
|
||||
|
||||
@item ns-open-file-line
|
||||
@cindex ns-open-file-line event
|
||||
Some applications, such as ProjectBuilder and gdb, request not only a
|
||||
particular file, but also a particular line or sequence of lines in
|
||||
the file. Emacs handles this by visiting that file and highlighting
|
||||
the requested line (@code{ns-open-file-select-line}).
|
||||
|
||||
@item ns-drag-n-drop
|
||||
This event occurs when a user drags an object from another application
|
||||
into an Emacs frame. The default behavior is to open a file in the
|
||||
window under the mouse, or to insert text at point of the window under
|
||||
the mouse.
|
||||
|
||||
The sending application has some limited ability to decide how Emacs
|
||||
handles the sent object, but the user may override the default
|
||||
behavior by holding one or more modifier key.
|
||||
|
||||
@table @kbd
|
||||
@item control
|
||||
Insert as text in the current buffer. If the object is a file, this
|
||||
will insert the filename.
|
||||
@item alt/option
|
||||
Attempt to open the object as though it is a file or URL.
|
||||
@item super/command
|
||||
Perform the default action for the type. This can be useful when an
|
||||
application is overriding the default behavior.
|
||||
@end table
|
||||
|
||||
The modifier keys listed above are defined by macOS and are unaffected
|
||||
by user changes to the modifiers in Emacs.
|
||||
|
||||
@item ns-power-off
|
||||
@cindex ns-power-off event
|
||||
This event occurs when the user logs out and Emacs is still running, or when
|
||||
``Quit Emacs'' is chosen from the application menu.
|
||||
The default behavior is to save all file-visiting buffers.
|
||||
|
||||
@item ns-show-prefs
|
||||
@cindex ns-show-prefs event
|
||||
This event occurs when the user selects ``Preferences'' from the
|
||||
application menu. By default, it is bound to the command
|
||||
@code{customize}.
|
||||
@end table
|
||||
|
||||
@cindex using Nextstep services (macOS)
|
||||
|
|
|
|||
|
|
@ -1316,6 +1316,12 @@ point is on a directory entry, mark all files in that directory tree
|
|||
(@code{vc-dir-mark-all-files}). With a prefix argument, mark all
|
||||
listed files and directories.
|
||||
|
||||
@findex vc-dir-mark-by-regexp
|
||||
@item %
|
||||
You can use this command to mark files by regexp
|
||||
(@code{vc-dir-mark-by-regexp}). If given a prefix, unmark files
|
||||
instead.
|
||||
|
||||
@item G
|
||||
Add the file under point to the list of files that the VC should
|
||||
ignore (@code{vc-dir-ignore}). For instance, if the VC is Git, it
|
||||
|
|
@ -1660,6 +1666,9 @@ support additional types of projects.
|
|||
Which files do or don't belong to a project is also determined by
|
||||
the project back-end. For example, the VC back-end doesn't consider
|
||||
``ignored'' files (@pxref{VC Ignore}) to be part of the project.
|
||||
Also, the VC Project back-end considers ``untracked'' files by default.
|
||||
That behavior is controllable with the variable
|
||||
@code{project-vc-include-untracked}.
|
||||
|
||||
@menu
|
||||
* Project File Commands:: Commands for handling project files.
|
||||
|
|
@ -2817,6 +2826,13 @@ place of a file name on the command line. @command{etags} will read from
|
|||
standard input and mark the produced tags as belonging to the file
|
||||
@var{file}.
|
||||
|
||||
For C and C++, if the source files don't observe the GNU Coding
|
||||
Standards' convention if having braces (@samp{@{} and @samp{@}}) in
|
||||
column zero only for top-level definitions, like functions and
|
||||
@code{struct} definitions, we advise that you use the
|
||||
@samp{--ignore-indentation} option, to prevent @command{etags} from
|
||||
incorrectly interpreting closing braces in column zero.
|
||||
|
||||
@samp{etags --help} outputs the list of the languages @command{etags}
|
||||
knows, and the file name rules for guessing the language. It also prints
|
||||
a list of all the available @command{etags} options, together with a short
|
||||
|
|
|
|||
|
|
@ -291,12 +291,23 @@ instead signal an error if the mark is inactive.
|
|||
@cindex Delete Selection mode
|
||||
@cindex mode, Delete Selection
|
||||
@findex delete-selection-mode
|
||||
@vindex delete-selection-temporary-region
|
||||
By default, text insertion occurs normally even if the mark is
|
||||
active---for example, typing @kbd{a} inserts the character @samp{a},
|
||||
then deactivates the mark. Delete Selection mode, a minor mode,
|
||||
modifies this behavior: if you enable that mode, then inserting text
|
||||
while the mark is active causes the text in the region to be deleted
|
||||
first. To toggle Delete Selection mode on or off, type @kbd{M-x
|
||||
first. However, you can tune this behavior by customizing the
|
||||
@code{delete-selection-temporary-region} option. Its default value is
|
||||
@code{nil}, but you can set it to @code{t}, in which case only
|
||||
temporarily-active regions will be replaced: those which are set by
|
||||
dragging the mouse (@pxref{Setting Mark}) or by shift-selection
|
||||
(@pxref{Shift Selection}), as well as by @kbd{C-u C-x C-x} when
|
||||
Transient Mark Mode is disabled. You can further tune the behavior by
|
||||
setting @code{delete-selection-temporary-region} to @code{selection}:
|
||||
then temporary regions by @kbd{C-u C-x C-x} won't be replaced, only
|
||||
the ones activated by dragging the mouse or shift-selection. To
|
||||
toggle Delete Selection mode on or off, type @kbd{M-x
|
||||
delete-selection-mode}.
|
||||
|
||||
@node Mark Ring
|
||||
|
|
|
|||
|
|
@ -381,16 +381,16 @@ used with the completion list:
|
|||
@vindex minibuffer-completion-auto-choose
|
||||
@item M-@key{DOWN}
|
||||
@itemx M-@key{UP}
|
||||
These keys will navigate through the completions displayed in the
|
||||
completions buffer. When @code{minibuffer-completion-auto-choose} is
|
||||
non-@code{nil} (which is the default), using these commands will
|
||||
automatically insert the current completion candidate in the
|
||||
minibuffer. If this user option is @code{nil}, the keys will navigate
|
||||
the same way as before, but won't automatically insert the candidate
|
||||
in the minibuffer. Instead you have to use the @kbd{M-@key{RET}} command to
|
||||
do that. With a prefix argument, @kbd{C-u M-@key{RET}} inserts the
|
||||
currently active candidate to the minibuffer, but doesn't exit the
|
||||
minibuffer.
|
||||
While in the minibuffer, these keys navigate through the completions
|
||||
displayed in the completions buffer. When
|
||||
@code{minibuffer-completion-auto-choose} is non-@code{nil} (which is
|
||||
the default), using these commands also inserts the current completion
|
||||
candidate into the minibuffer. If
|
||||
@code{minibuffer-completion-auto-choose} is @code{nil}, you can use
|
||||
the @kbd{M-@key{RET}} command to insert the completion candidates into
|
||||
the minibuffer. By default, that exits the minibuffer, but with a
|
||||
prefix argument, @kbd{C-u M-@key{RET}} inserts the currently active
|
||||
candidate without exiting the minibuffer.
|
||||
|
||||
@findex switch-to-completions
|
||||
@item M-v
|
||||
|
|
@ -407,7 +407,10 @@ ways (@pxref{Windows}).
|
|||
@itemx mouse-1
|
||||
@itemx mouse-2
|
||||
While in the completion list buffer, this chooses the completion at
|
||||
point (@code{choose-completion}).
|
||||
point (@code{choose-completion}). With a prefix argument, @kbd{C-u
|
||||
@key{RET}} inserts the completion at point into the minibuffer, but
|
||||
doesn't exit the minibuffer---thus, you can change your mind and
|
||||
choose another candidate.
|
||||
|
||||
@findex next-completion
|
||||
@item @key{TAB}
|
||||
|
|
@ -682,17 +685,20 @@ behavior only when there are @var{n} or fewer alternatives.
|
|||
|
||||
@vindex completions-format
|
||||
When displaying completions, Emacs will normally pop up a new buffer
|
||||
to display the completions. The completions will (by default) be
|
||||
sorted in columns horizontally in alphabetical order, but this can be
|
||||
changed by changing the @code{completions-format} user option. If
|
||||
@code{vertical}, sort the completions vertically in columns instead,
|
||||
and if @code{one-column}, just use a single column.
|
||||
to display the completions. The completions will by default be sorted
|
||||
horizontally, using as many columns as will fit in the window-width,
|
||||
but this can be changed by customizing the @code{completions-format}
|
||||
user option. If its value is @code{vertical}, Emacs will sort the
|
||||
completions vertically instead, and if it's @code{one-column}, Emacs
|
||||
will use just one column.
|
||||
|
||||
@vindex completions-sort
|
||||
This user option controls how completions are sorted in the
|
||||
@samp{*Completions*} buffer. The default is @code{alphabetical}, but
|
||||
it can also be a function which will be called with the list of
|
||||
completions, and should return the list in the desired order.
|
||||
The @code{completions-sort} user option controls the order in which
|
||||
the completions are sorted in the @samp{*Completions*} buffer. The
|
||||
default is @code{alphabetical}, which sorts in alphabetical order.
|
||||
The value @code{nil} disables sorting. The value can also be a
|
||||
function, which will be called with the list of completions, and
|
||||
should return the list in the desired order.
|
||||
|
||||
@vindex completions-max-height
|
||||
When @code{completions-max-height} is non-@code{nil}, it limits the
|
||||
|
|
|
|||
|
|
@ -89,6 +89,11 @@ list of available packages from package archive servers. If the
|
|||
network is unavailable, it falls back on the most recently retrieved
|
||||
list.
|
||||
|
||||
The main command to use in the package list buffer is the @key{x}
|
||||
command. If the package under point isn't installed already, this
|
||||
command will install it. If the package under point is already
|
||||
installed, this command will delete it.
|
||||
|
||||
The following commands are available in the package menu:
|
||||
|
||||
@table @kbd
|
||||
|
|
@ -162,7 +167,10 @@ installed versions (marked with status @samp{obsolete}).
|
|||
@findex package-menu-execute
|
||||
Download and install all packages marked with @kbd{i}, and their
|
||||
dependencies; also, delete all packages marked with @kbd{d}
|
||||
(@code{package-menu-execute}). This also removes the marks.
|
||||
(@code{package-menu-execute}). This also removes the marks. If no
|
||||
packages are marked, this command will install the package under point
|
||||
(if it isn't installed already), or delete the package under point (if
|
||||
it's already installed).
|
||||
|
||||
@item g
|
||||
@item r
|
||||
|
|
@ -321,12 +329,14 @@ version of the package, a newer version is also installed.
|
|||
|
||||
@findex package-install
|
||||
@findex package-update
|
||||
@findex package-update-all
|
||||
Packages are most conveniently installed using the package menu
|
||||
(@pxref{Package Menu}), but you can also use the command @kbd{M-x
|
||||
package-install}. This prompts for the name of a package with the
|
||||
@samp{available} status, then downloads and installs it. Similarly,
|
||||
if you want to update a package, you can use the @kbd{M-x
|
||||
package-update} command.
|
||||
package-update} command, and if you just want to update all the
|
||||
packages, you can use the @kbd{M-x package-update-all} command.
|
||||
|
||||
@cindex package requirements
|
||||
A package may @dfn{require} certain other packages to be installed,
|
||||
|
|
|
|||
|
|
@ -250,10 +250,10 @@ where it treats each chapter, section, etc., as a definition.
|
|||
together.)
|
||||
|
||||
@findex imenu
|
||||
If you type @kbd{M-g i}, it reads the name of a definition using the
|
||||
minibuffer, then moves point to that definition. You can use
|
||||
completion to specify the name; the command always displays the whole
|
||||
list of valid names.
|
||||
If you type @kbd{M-g i} (@code{imenu}), it reads the name of a
|
||||
definition using the minibuffer, then moves point to that definition.
|
||||
You can use completion to specify the name; the command always
|
||||
displays the whole list of valid names.
|
||||
|
||||
@findex imenu-add-menubar-index
|
||||
Alternatively, you can bind the command @code{imenu} to a mouse
|
||||
|
|
@ -1439,9 +1439,13 @@ performs completion using the function, variable, or property names
|
|||
defined in the current Emacs session.
|
||||
|
||||
In all other respects, in-buffer symbol completion behaves like
|
||||
minibuffer completion. For instance, if Emacs cannot complete to a
|
||||
unique symbol, it displays a list of completion alternatives in
|
||||
another window. @xref{Completion}.
|
||||
minibuffer completion. For instance, if Emacs cannot complete to
|
||||
a unique symbol, it displays a list of completion alternatives in
|
||||
another window. Then you can use the keys @kbd{M-@key{DOWN}} and
|
||||
@kbd{M-@key{UP}} to navigate through the completions displayed
|
||||
in the completions buffer without leaving the original buffer,
|
||||
and the key @kbd{M-@key{RET}} to insert the currently highlighted
|
||||
completion to the buffer. @xref{Completion}.
|
||||
|
||||
In Text mode and related modes, @kbd{M-@key{TAB}} completes words
|
||||
based on the spell-checker's dictionary. @xref{Spelling}.
|
||||
|
|
|
|||
|
|
@ -1027,24 +1027,11 @@ you search for @samp{a.*?$} against the text @samp{abbab} followed by
|
|||
a newline, it matches the whole string. Since it @emph{can} match
|
||||
starting at the first @samp{a}, it does.
|
||||
|
||||
@item @kbd{\@{@var{n}\@}}
|
||||
is a postfix operator specifying @var{n} repetitions---that is, the
|
||||
preceding regular expression must match exactly @var{n} times in a
|
||||
row. For example, @samp{x\@{4\@}} matches the string @samp{xxxx} and
|
||||
nothing else.
|
||||
|
||||
@item @kbd{\@{@var{n},@var{m}\@}}
|
||||
is a postfix operator specifying between @var{n} and @var{m}
|
||||
repetitions---that is, the preceding regular expression must match at
|
||||
least @var{n} times, but no more than @var{m} times. If @var{m} is
|
||||
omitted, then there is no upper limit, but the preceding regular
|
||||
expression must match at least @var{n} times.@* @samp{\@{0,1\@}} is
|
||||
equivalent to @samp{?}. @* @samp{\@{0,\@}} is equivalent to
|
||||
@samp{*}. @* @samp{\@{1,\@}} is equivalent to @samp{+}.
|
||||
|
||||
@cindex set of alternative characters, in regular expressions
|
||||
@cindex character set, in regular expressions
|
||||
@item @kbd{[ @dots{} ]}
|
||||
is a @dfn{character set}, beginning with @samp{[} and terminated by
|
||||
@samp{]}.
|
||||
is a @dfn{set of alternative characters}, or a @dfn{character set},
|
||||
beginning with @samp{[} and terminated by @samp{]}.
|
||||
|
||||
In the simplest case, the characters between the two brackets are what
|
||||
this set can match. Thus, @samp{[ad]} matches either one @samp{a} or
|
||||
|
|
@ -1061,9 +1048,10 @@ which matches any lower-case @acronym{ASCII} letter or @samp{$}, @samp{%} or
|
|||
period. As another example, @samp{[α-ωί]} matches all lower-case
|
||||
Greek letters.
|
||||
|
||||
@cindex character classes, in regular expressions
|
||||
You can also include certain special @dfn{character classes} in a
|
||||
character set. A @samp{[:} and balancing @samp{:]} enclose a
|
||||
character class inside a character alternative. For instance,
|
||||
character class inside a set of alternative characters. For instance,
|
||||
@samp{[[:alnum:]]} matches any letter or digit. @xref{Char Classes,,,
|
||||
elisp, The Emacs Lisp Reference Manual}, for a list of character
|
||||
classes.
|
||||
|
|
@ -1131,13 +1119,13 @@ no preceding expression on which the @samp{*} can act. It is poor practice
|
|||
to depend on this behavior; it is better to quote the special character anyway,
|
||||
regardless of where it appears.
|
||||
|
||||
As a @samp{\} is not special inside a character alternative, it can
|
||||
never remove the special meaning of @samp{-} or @samp{]}. So you
|
||||
should not quote these characters when they have no special meaning
|
||||
either. This would not clarify anything, since backslashes can
|
||||
legitimately precede these characters where they @emph{have} special
|
||||
meaning, as in @samp{[^\]} (@code{"[^\\]"} for Lisp string syntax),
|
||||
which matches any single character except a backslash.
|
||||
As a @samp{\} is not special inside a set of alternative characters, it can
|
||||
never remove the special meaning of @samp{-}, @samp{^} or @samp{]}.
|
||||
You should not quote these characters when they have no special
|
||||
meaning. This would not clarify anything, since backslashes
|
||||
can legitimately precede these characters where they @emph{have}
|
||||
special meaning, as in @samp{[^\]} (@code{"[^\\]"} for Lisp string
|
||||
syntax), which matches any single character except a backslash.
|
||||
|
||||
@node Regexp Backslash
|
||||
@section Backslash in Regular Expressions
|
||||
|
|
@ -1202,11 +1190,11 @@ matches the same text that matched the @var{d}th occurrence of a
|
|||
@samp{\( @dots{} \)} construct. This is called a @dfn{back
|
||||
reference}.
|
||||
|
||||
After the end of a @samp{\( @dots{} \)} construct, the matcher remembers
|
||||
the beginning and end of the text matched by that construct. Then,
|
||||
later on in the regular expression, you can use @samp{\} followed by the
|
||||
digit @var{d} to mean ``match the same text matched the @var{d}th time
|
||||
by the @samp{\( @dots{} \)} construct''.
|
||||
After the end of a @samp{\( @dots{} \)} construct, the matcher
|
||||
remembers the beginning and end of the text matched by that construct.
|
||||
Then, later on in the regular expression, you can use @samp{\}
|
||||
followed by the digit @var{d} to mean ``match the same text matched
|
||||
the @var{d}th @samp{\( @dots{} \)} construct''.
|
||||
|
||||
The strings matching the first nine @samp{\( @dots{} \)} constructs
|
||||
appearing in a regular expression are assigned numbers 1 through 9 in
|
||||
|
|
@ -1223,6 +1211,21 @@ If a particular @samp{\( @dots{} \)} construct matches more than once
|
|||
(which can easily happen if it is followed by @samp{*}), only the last
|
||||
match is recorded.
|
||||
|
||||
@item @kbd{\@{@var{m}\@}}
|
||||
is a postfix operator specifying @var{m} repetitions---that is, the
|
||||
preceding regular expression must match exactly @var{m} times in a
|
||||
row. For example, @samp{x\@{4\@}} matches the string @samp{xxxx} and
|
||||
nothing else.
|
||||
|
||||
@item @kbd{\@{@var{m},@var{n}\@}}
|
||||
is a postfix operator specifying between @var{m} and @var{n}
|
||||
repetitions---that is, the preceding regular expression must match at
|
||||
least @var{m} times, but no more than @var{n} times. If @var{n} is
|
||||
omitted, then there is no upper limit, but the preceding regular
|
||||
expression must match at least @var{m} times.@* @samp{\@{0,1\@}} is
|
||||
equivalent to @samp{?}. @* @samp{\@{0,\@}} is equivalent to
|
||||
@samp{*}. @* @samp{\@{1,\@}} is equivalent to @samp{+}.
|
||||
|
||||
@item \`
|
||||
matches the empty string, but only at the beginning of the string or
|
||||
buffer (or its accessible portion) being matched against.
|
||||
|
|
@ -1824,12 +1827,18 @@ occurrence of @var{string}. When done, exit the recursive editing level
|
|||
with @kbd{C-M-c} to proceed to the next occurrence.
|
||||
|
||||
@item e
|
||||
@itemx E
|
||||
to edit the replacement string in the minibuffer. When you exit the
|
||||
minibuffer by typing @key{RET}, the minibuffer contents replace the
|
||||
current occurrence of the pattern. They also become the new
|
||||
replacement string for any further occurrences.
|
||||
|
||||
@item E
|
||||
is like @kbd{e}, but the next replacement will be done with exact
|
||||
case. I.e., if you have a @code{query-replace} from @samp{foo} to
|
||||
@samp{bar}, a text like @samp{Foo} will be normally be replaced with
|
||||
@samp{Bar}. Use this command to do the current replacement with exact
|
||||
case.
|
||||
|
||||
@item C-l
|
||||
to redisplay the screen. Then you must type another character to
|
||||
specify what to do with this occurrence.
|
||||
|
|
|
|||
|
|
@ -659,6 +659,7 @@ such as MIME support. Another available mode is MH-E
|
|||
(@pxref{Top,,MH-E,mh-e, The Emacs Interface to MH}).
|
||||
|
||||
@vindex mail-user-agent
|
||||
@findex define-mail-user-agent
|
||||
You can choose any of these @dfn{mail user agents} as your preferred
|
||||
method for editing and sending mail. The commands @kbd{C-x m},
|
||||
@kbd{C-x 4 m} and @kbd{C-x 5 m} use whichever agent you have
|
||||
|
|
@ -667,7 +668,10 @@ the bug reporter (@pxref{Bugs}). To specify a mail user agent,
|
|||
customize the variable @code{mail-user-agent}. Currently, legitimate
|
||||
values include @code{message-user-agent} (Message mode)
|
||||
@code{sendmail-user-agent} (Mail mode), @code{gnus-user-agent}, and
|
||||
@code{mh-e-user-agent}.
|
||||
@code{mh-e-user-agent}. Additional options may be available; check
|
||||
in the manual of your mail user agent package for details. You may
|
||||
also define another mail user agent using
|
||||
@code{define-mail-user-agent}.
|
||||
|
||||
If you select a different mail-composition method, the information
|
||||
in this chapter about the mail buffer and Message mode does not apply;
|
||||
|
|
|
|||
|
|
@ -269,7 +269,7 @@ with the file's version control type.
|
|||
@vindex vc-handled-backends
|
||||
The variable @code{vc-handled-backends} determines which version
|
||||
control systems VC should handle. The default value is @code{(RCS CVS
|
||||
SVN SCCS SRC Bzr Git Hg Mtn)}, so it contains all the version systems
|
||||
SVN SCCS SRC Bzr Git Hg)}, so it contains all the version systems
|
||||
that are currently supported. If you want VC to ignore one or more of
|
||||
these systems, exclude its name from the list. To disable VC
|
||||
entirely, set this variable to @code{nil}.
|
||||
|
|
|
|||
|
|
@ -541,10 +541,12 @@ file formerly visited.
|
|||
@ref{Text}.
|
||||
|
||||
@defun buffer-modified-p &optional buffer
|
||||
This function returns @code{t} if the buffer @var{buffer} has been modified
|
||||
since it was last read in from a file or saved, or @code{nil}
|
||||
otherwise. If @var{buffer} is not supplied, the current buffer
|
||||
is tested.
|
||||
This function returns non-@code{nil} if @var{buffer} has
|
||||
been modified since it was last read in from a file or saved, or
|
||||
@code{nil} otherwise. If @var{buffer} has been auto-saved since the
|
||||
time it was last modified, this function returns the symbol
|
||||
@code{autosaved}. If @var{buffer} is @code{nil} or omitted, it
|
||||
defaults to the current buffer.
|
||||
@end defun
|
||||
|
||||
@defun set-buffer-modified-p flag
|
||||
|
|
@ -563,8 +565,10 @@ function @code{force-mode-line-update} works by doing this:
|
|||
@end defun
|
||||
|
||||
@defun restore-buffer-modified-p flag
|
||||
Like @code{set-buffer-modified-p}, but does not force redisplay
|
||||
of mode lines.
|
||||
Like @code{set-buffer-modified-p}, but does not force redisplay of
|
||||
mode lines. This function also allows @var{flag}'s value to be
|
||||
the symbol @code{autosaved}, which marks the buffer as modified and
|
||||
auto-saved after the last modification.
|
||||
@end defun
|
||||
|
||||
@deffn Command not-modified &optional arg
|
||||
|
|
|
|||
|
|
@ -2615,7 +2615,7 @@ POSITION is assumed to lie in a window text area."
|
|||
@end example
|
||||
@end defun
|
||||
|
||||
@defun posn-col-row position
|
||||
@defun posn-col-row position &optional use-window
|
||||
This function returns a cons cell @w{@code{(@var{col} . @var{row})}},
|
||||
containing the estimated column and row corresponding to buffer
|
||||
position described by @var{position}. The return value is given in
|
||||
|
|
@ -2623,7 +2623,11 @@ units of the frame's default character width and default line height
|
|||
(including spacing), as computed from the @var{x} and @var{y} values
|
||||
corresponding to @var{position}. (So, if the actual characters have
|
||||
non-default sizes, the actual row and column may differ from these
|
||||
computed values.)
|
||||
computed values.) If the optional @var{window} argument is
|
||||
non-@code{nil}, use the default character width in the window
|
||||
indicated by @var{position} instead of the frame. (This makes a
|
||||
difference if that window is showing a buffer with a non-default
|
||||
zooming level, for instance.)
|
||||
|
||||
Note that @var{row} is counted from the top of the text area. If the
|
||||
window given by @var{position} possesses a header line (@pxref{Header
|
||||
|
|
|
|||
|
|
@ -525,7 +525,7 @@ core pattern can have the following forms:
|
|||
|
||||
@table @code
|
||||
|
||||
@item _
|
||||
@item _@r{ (underscore)}
|
||||
Matches any @var{expval}.
|
||||
This is also known as @dfn{don't care} or @dfn{wildcard}.
|
||||
|
||||
|
|
@ -629,7 +629,10 @@ Attempts to match @var{pattern1}, @var{pattern2}, @dots{}, in order,
|
|||
until one of them succeeds. In that case, @code{or} likewise matches,
|
||||
and the rest of the sub-patterns are not tested.
|
||||
|
||||
To present a consistent environment (@pxref{Intro Eval})
|
||||
To present a consistent environment
|
||||
@ifnottex
|
||||
(@pxref{Intro Eval})
|
||||
@end ifnottex
|
||||
to @var{body-forms} (thus avoiding an evaluation error on match),
|
||||
the set of variables bound by the pattern is the union of the
|
||||
variables bound by each sub-pattern. If a variable is not bound by
|
||||
|
|
|
|||
|
|
@ -376,7 +376,7 @@ name) and the new value, and should do whatever is necessary to update
|
|||
the value properly for this option (which may not mean simply setting
|
||||
the option as a Lisp variable); preferably, though, it should not
|
||||
modify its value argument destructively. The default for
|
||||
@var{setfunction} is @code{set-default}.
|
||||
@var{setfunction} is @code{set-default-toplevel-value}.
|
||||
|
||||
If you specify this keyword, the variable's documentation string
|
||||
should describe how to do the same job in hand-written Lisp code.
|
||||
|
|
@ -387,7 +387,7 @@ Specify @var{getfunction} as the way to extract the value of this
|
|||
option. The function @var{getfunction} should take one argument, a
|
||||
symbol, and should return whatever customize should use as the
|
||||
current value for that symbol (which need not be the symbol's Lisp
|
||||
value). The default is @code{default-value}.
|
||||
value). The default is @code{default-toplevel-value}.
|
||||
|
||||
You have to really understand the workings of Custom to use
|
||||
@code{:get} correctly. It is meant for values that are treated in
|
||||
|
|
@ -409,11 +409,11 @@ do not reinitialize it if it is already non-void.
|
|||
|
||||
@item custom-initialize-default
|
||||
Like @code{custom-initialize-set}, but use the function
|
||||
@code{set-default} to set the variable, instead of the variable's
|
||||
@code{:set} function. This is the usual choice for a variable whose
|
||||
@code{:set} function enables or disables a minor mode; with this choice,
|
||||
defining the variable will not call the minor mode function, but
|
||||
customizing the variable will do so.
|
||||
@code{set-default-toplevel-value} to set the variable, instead of the
|
||||
variable's @code{:set} function. This is the usual choice for a
|
||||
variable whose @code{:set} function enables or disables a minor mode;
|
||||
with this choice, defining the variable will not call the minor mode
|
||||
function, but customizing the variable will do so.
|
||||
|
||||
@item custom-initialize-reset
|
||||
Always use the @code{:set} function to initialize the variable. If
|
||||
|
|
@ -424,7 +424,7 @@ This is the default @code{:initialize} function.
|
|||
@item custom-initialize-changed
|
||||
Use the @code{:set} function to initialize the variable, if it is
|
||||
already set or has been customized; otherwise, just use
|
||||
@code{set-default}.
|
||||
@code{set-default-toplevel-value}.
|
||||
|
||||
@item custom-initialize-delay
|
||||
This function behaves like @code{custom-initialize-set}, but it
|
||||
|
|
|
|||
|
|
@ -2010,6 +2010,11 @@ Tables}). The width of a tab character is usually @code{tab-width}
|
|||
(@pxref{Usual Display}).
|
||||
@end defun
|
||||
|
||||
@defun char-uppercase-p char
|
||||
Return non-@code{nil} if @var{char} is an uppercase character
|
||||
according to Unicode.
|
||||
@end defun
|
||||
|
||||
@defun string-width string &optional from to
|
||||
This function returns the width in columns of the string @var{string},
|
||||
if it were displayed in the current buffer and the selected window.
|
||||
|
|
@ -2252,20 +2257,6 @@ This is a convenience function that uses @code{window-text-pixel-size}
|
|||
to compute the width of @var{string} (in pixels).
|
||||
@end defun
|
||||
|
||||
@defun window-char-pixel-width &optional window face
|
||||
Return the average character width for the font used by @var{face} in
|
||||
@var{window}. If @var{face} is @code{nil} or omitted, the
|
||||
@code{default} face is used. If @var{windows} is @code{nil} or
|
||||
omitted, the currently selected window is used.
|
||||
@end defun
|
||||
|
||||
@defun window-char-pixel-height &optional window face
|
||||
Return the average character height for the font used by @var{face} in
|
||||
@var{window}. If @var{face} is @code{nil} or omitted, the
|
||||
@code{default} face is used. If @var{windows} is @code{nil} or
|
||||
omitted, the currently selected window is used.
|
||||
@end defun
|
||||
|
||||
@defun line-pixel-height
|
||||
This function returns the height in pixels of the line at point in the
|
||||
selected window. The value includes the line spacing of the line
|
||||
|
|
@ -5066,7 +5057,7 @@ which are evaluated at display time. This could be unsafe in certain
|
|||
situations, e.g., when the display specification was generated by some
|
||||
external program/agent. Wrapping a display specification in a list
|
||||
that begins with the special symbol @code{disable-eval}, as in
|
||||
@w{@code{('disable-eval @var{spec})}}, will disable evaluation of any
|
||||
@w{@code{(disable-eval @var{spec})}}, will disable evaluation of any
|
||||
Lisp in @var{spec}, while still supporting all the other display
|
||||
property features.
|
||||
|
||||
|
|
@ -8228,7 +8219,10 @@ help buffer.
|
|||
The window's display table, if there is one, takes precedence over the
|
||||
buffer's display table. If neither exists, Emacs tries to use the
|
||||
standard display table; if that is @code{nil}, Emacs uses the usual
|
||||
character display conventions (@pxref{Usual Display}).
|
||||
character display conventions (@pxref{Usual Display}). (Emacs does
|
||||
not ``merge'' display tables: For instance, if the window has a
|
||||
display table, the buffer's display table and the standard display
|
||||
table are completely ignored.)
|
||||
|
||||
Note that display tables affect how the mode line is displayed, so
|
||||
if you want to force redisplay of the mode line using a new display
|
||||
|
|
|
|||
|
|
@ -593,6 +593,7 @@ Advising Emacs Lisp Functions
|
|||
* Advising Named Functions:: Advising named functions.
|
||||
* Advice Combinators:: Ways to compose advice.
|
||||
* Porting Old Advice:: Adapting code using the old defadvice.
|
||||
* Advice and Byte Code:: Not all functions can be advised.
|
||||
|
||||
Macros
|
||||
|
||||
|
|
@ -739,6 +740,7 @@ Reading and Printing Lisp Objects
|
|||
* Output Functions:: Functions to print Lisp objects as text.
|
||||
* Output Variables:: Variables that control what the printing
|
||||
functions do.
|
||||
* Output Overrides:: Overriding output variables.
|
||||
|
||||
Minibuffers
|
||||
|
||||
|
|
|
|||
|
|
@ -435,7 +435,7 @@ expansion.
|
|||
@cindex forms, special
|
||||
@cindex evaluation of special forms
|
||||
|
||||
A @dfn{special form} is a primitive function specially marked so that
|
||||
A @dfn{special form} is a primitive specially marked so that
|
||||
its arguments are not all evaluated. Most special forms define control
|
||||
structures or perform variable bindings---things which functions cannot
|
||||
do.
|
||||
|
|
|
|||
|
|
@ -581,9 +581,12 @@ contents of the file. This is better than simply deleting the buffer
|
|||
contents and inserting the whole file, because (1) it preserves some
|
||||
marker positions and (2) it puts less data in the undo list.
|
||||
|
||||
It is possible to read a special file (such as a FIFO or an I/O device)
|
||||
with @code{insert-file-contents}, as long as @var{replace} and
|
||||
@var{visit} are @code{nil}.
|
||||
It is possible to read a special file (such as a FIFO or an I/O
|
||||
device) with @code{insert-file-contents}, as long as @var{replace},
|
||||
and @var{visit} and @var{beg} are @code{nil}. However, you should
|
||||
normally use an @var{end} argument for these files to avoid inserting
|
||||
(potentially) unlimited data into the buffer (for instance, when
|
||||
inserting data from @file{/dev/urandom}).
|
||||
@end defun
|
||||
|
||||
@defun insert-file-contents-literally filename &optional visit beg end replace
|
||||
|
|
@ -3112,10 +3115,16 @@ except those two. It is useful as the @var{match-regexp} argument to
|
|||
returns @code{nil}, if directory @samp{/foo} is empty.
|
||||
@end defvr
|
||||
|
||||
@defun file-expand-wildcards pattern &optional full
|
||||
@defun file-expand-wildcards pattern &optional full regexp
|
||||
This function expands the wildcard pattern @var{pattern}, returning
|
||||
a list of file names that match it.
|
||||
|
||||
@var{pattern} is, by default, a ``glob''/wildcard string, e.g.,
|
||||
@samp{"/tmp/*.png"} or @samp{"/*/*/foo.png"}, but can also be a
|
||||
regular expression if the optional @var{regexp} parameter is non-nil.
|
||||
In any case, the matches are applied per sub-directory, so a match
|
||||
can't span a parent/sub directory.
|
||||
|
||||
If @var{pattern} is written as an absolute file name,
|
||||
the values are absolute also.
|
||||
|
||||
|
|
|
|||
|
|
@ -458,6 +458,18 @@ monitor, the same string as returned by the function
|
|||
@var{display} should be the name of an X display (a string).
|
||||
@end deffn
|
||||
|
||||
@cindex monitor change functions
|
||||
@defvar display-monitors-changed-functions
|
||||
This variable is an abnormal hook run when the monitor configuration
|
||||
changes, which can happen if a monitor is rotated, moved, added or
|
||||
removed from a multiple-monitor setup, if the primary monitor changes,
|
||||
or if the resolution of a monitor changes. It is called with a single
|
||||
argument consisting of the terminal on which the monitor configuration
|
||||
changed. Programs should call @code{display-monitor-attributes-list}
|
||||
with the terminal as the argument to retrieve the new monitor
|
||||
configuration on that terminal.
|
||||
@end defvar
|
||||
|
||||
@node Frame Geometry
|
||||
@section Frame Geometry
|
||||
@cindex frame geometry
|
||||
|
|
@ -683,9 +695,9 @@ The position of the top left corner of the native frame specifies the
|
|||
indicate that position for the various builds:
|
||||
|
||||
@itemize @w{}
|
||||
@item (1) non-toolkit and terminal frames
|
||||
@item (1) non-toolkit, Haiku, and terminal frames
|
||||
|
||||
@item (2) Lucid, Motif, MS-Windows, and Haiku frames
|
||||
@item (2) Lucid, Motif, and MS-Windows frames
|
||||
|
||||
@item (3) GTK+ and NS frames
|
||||
@end itemize
|
||||
|
|
@ -1734,16 +1746,14 @@ fit will be clipped by the window manager.
|
|||
@item fullscreen
|
||||
This parameter specifies whether to maximize the frame's width, height
|
||||
or both. Its value can be @code{fullwidth}, @code{fullheight},
|
||||
@code{fullboth}, or @code{maximized}.@footnote{On Haiku, setting
|
||||
@code{fullscreen} to @code{fullwidth} or @code{fullheight} has no
|
||||
effect.} A @dfn{fullwidth} frame is as
|
||||
@code{fullboth}, or @code{maximized}. A @dfn{fullwidth} frame is as
|
||||
wide as possible, a @dfn{fullheight} frame is as tall as possible, and
|
||||
a @dfn{fullboth} frame is both as wide and as tall as possible. A
|
||||
@dfn{maximized} frame is like a ``fullboth'' frame, except that it usually
|
||||
keeps its title bar and the buttons for resizing
|
||||
and closing the frame. Also, maximized frames typically avoid hiding
|
||||
any task bar or panels displayed on the desktop. A ``fullboth'' frame,
|
||||
on the other hand, usually omits the title bar and occupies the entire
|
||||
@dfn{maximized} frame is like a ``fullboth'' frame, except that it
|
||||
usually keeps its title bar and the buttons for resizing and closing
|
||||
the frame. Also, maximized frames typically avoid hiding any task bar
|
||||
or panels displayed on the desktop. A ``fullboth'' frame, on the
|
||||
other hand, usually omits the title bar and occupies the entire
|
||||
available screen space.
|
||||
|
||||
Full-height and full-width frames are more similar to maximized
|
||||
|
|
@ -3877,8 +3887,9 @@ in the buffer. The default is to use the @code{arrow} (non-text)
|
|||
pointer style.
|
||||
@end defopt
|
||||
|
||||
When using X, you can specify what the @code{text} pointer style
|
||||
really looks like by setting the variable @code{x-pointer-shape}.
|
||||
When using some window systems, you can specify what the @code{text}
|
||||
pointer style really looks like by setting the variable
|
||||
@code{x-pointer-shape}.
|
||||
|
||||
@defvar x-pointer-shape
|
||||
This variable specifies the pointer shape to use ordinarily in the
|
||||
|
|
@ -3932,6 +3943,13 @@ overlay or a pair of markers stands for text in the overlay or between
|
|||
the markers. The argument @var{data} may also be a vector of valid
|
||||
non-vector selection values.
|
||||
|
||||
If @var{data} is a string, then its text properties can specify values
|
||||
used for individual data types. For example, if @var{data} has a
|
||||
property named @code{text/uri-list}, then a call to
|
||||
@code{gui-get-selection} with the data type @code{text/uri-list} will
|
||||
result in the value of that property being used instead of @var{data}
|
||||
itself.
|
||||
|
||||
This function returns @var{data}.
|
||||
@end deffn
|
||||
|
||||
|
|
@ -4018,16 +4036,46 @@ amount of different data types on the clipboard.
|
|||
@section Drag and Drop
|
||||
@cindex drag and drop
|
||||
|
||||
When the user drops something from another application over Emacs,
|
||||
Emacs will try to insert any text and open any URL that was dropped.
|
||||
If text was dropped, then it will always be inserted at the location
|
||||
of the mouse pointer when the drop happened, or saved in the kill ring
|
||||
if insertion failed (which can happen if the buffer is read-only). If
|
||||
it was an URL, then Emacs tries to call an appropriate handler
|
||||
function by first matching the URL against regexps defined in
|
||||
@code{dnd-protocol-alist}, and then against @code{browse-url-handlers}
|
||||
and @code{browse-url-default-handlers}, and failing that, inserting
|
||||
the URL as plain text.
|
||||
|
||||
@defvar dnd-protocol-alist
|
||||
This variable is a list of cons cells of the form
|
||||
@w{@code{(@var{pattern} . @var{action})}}. @var{pattern} is a regexp
|
||||
that URLs are matched against after being dropped. @var{action} is a
|
||||
function that is called with two arguments should a URL being dropped
|
||||
match @var{pattern}: the URL being dropped, and the action being
|
||||
performed for the drop (one of the symbols @code{copy}, @code{move},
|
||||
@code{link}, @code{private} or @code{ask}).
|
||||
@end defvar
|
||||
|
||||
@cindex drag and drop, X
|
||||
@cindex drag and drop, other formats
|
||||
Emacs implements drag-and-drop for text and URLs individually for
|
||||
each window system, and does not by default support the dropping of
|
||||
anything else. Code that wishes to support the dropping of content
|
||||
types not supported by Emacs can utilize the X-specific interface
|
||||
described below:
|
||||
|
||||
@vindex x-dnd-test-function
|
||||
@vindex x-dnd-known-types
|
||||
When a user drags something from another application over Emacs, that other
|
||||
application expects Emacs to tell it if Emacs can handle the data that is
|
||||
dragged. The variable @code{x-dnd-test-function} is used by Emacs to determine
|
||||
what to reply. The default value is @code{x-dnd-default-test-function}
|
||||
which accepts drops if the type of the data to be dropped is present in
|
||||
@code{x-dnd-known-types}. You can customize @code{x-dnd-test-function} and/or
|
||||
@code{x-dnd-known-types} if you want Emacs to accept or reject drops based
|
||||
on some other criteria.
|
||||
When a user drags something from another application over Emacs on
|
||||
the X Window System, that other application expects Emacs to tell it
|
||||
if Emacs can handle the data that was dragged. The variable
|
||||
@code{x-dnd-test-function} is used by Emacs to determine what to
|
||||
reply. The default value is @code{x-dnd-default-test-function} which
|
||||
accepts drops if the type of the data to be dropped is present in
|
||||
@code{x-dnd-known-types}. You can customize
|
||||
@code{x-dnd-test-function} and/or @code{x-dnd-known-types} if you want
|
||||
Emacs to accept or reject drops based on some other criteria.
|
||||
|
||||
@vindex x-dnd-types-alist
|
||||
If you want to change the way Emacs handles drop of different types
|
||||
|
|
@ -4035,28 +4083,126 @@ or add a new type, customize @code{x-dnd-types-alist}. This requires
|
|||
detailed knowledge of what types other applications use for drag and
|
||||
drop.
|
||||
|
||||
@vindex dnd-protocol-alist
|
||||
@vindex browse-url-handlers
|
||||
@vindex browse-url-default-handlers
|
||||
When an URL is dropped on Emacs it may be a file, but it may also be
|
||||
another URL type (https, etc.). Emacs first checks
|
||||
@code{dnd-protocol-alist} to determine what to do with the URL@. If
|
||||
there is no match there, Emacs looks for a match in
|
||||
@code{browse-url-handlers} and @code{browse-url-default-handlers}. If
|
||||
still no match has been found, the text for the URL is inserted. If
|
||||
you want to alter Emacs behavior, you can customize these variables.
|
||||
Those data types are typically implemented as special data types an
|
||||
X selection provided by the other application can be converted to.
|
||||
They can either be the same data types that are typically accepted by
|
||||
@code{gui-set-selection}, or they can be MIME types, depending on the
|
||||
specific drag-n-drop protocol being used. Plain text may be
|
||||
@code{"STRING"} or @code{"text/plain"}, for example.
|
||||
|
||||
@cindex initiating drag-and-drop
|
||||
On capable window systems, Emacs also supports dragging contents
|
||||
from its frames to windows of other applications.
|
||||
|
||||
@defun x-begin-drag targets &optional action frame return-frame allow-current-frame
|
||||
@cindex drop target, in drag-and-drop operations
|
||||
@defun dnd-begin-text-drag text &optional frame action allow-same-frame
|
||||
This function begins dragging text from @var{frame} to another program
|
||||
(known as the @dfn{drop target}), and returns the result of
|
||||
drag-and-drop operation when the text is dropped or the drag-and-drop
|
||||
operation is canceled. @var{text} is the text that will be inserted
|
||||
by the drop target.
|
||||
|
||||
@var{action} must be one of the symbols @code{copy} or @code{move},
|
||||
where @code{copy} means that @var{text} should be inserted by the drop
|
||||
target, and @code{move} means the same as @code{copy}, but in addition
|
||||
the caller may have to delete @var{text} from its source as explained
|
||||
below.
|
||||
|
||||
@var{frame} is the frame where the mouse is currently held down, or
|
||||
@code{nil}, which means to use the selected frame. This function may
|
||||
return immediately if no mouse buttons are held down, so it should be
|
||||
only called immediately after a @code{down-mouse-1} or similar event
|
||||
(@pxref{Mouse Events}), with @var{frame} set to the frame where that
|
||||
event was generated (@pxref{Click Events}).
|
||||
|
||||
@var{allow-same-frame} specifies whether or not drops on top of
|
||||
@var{frame} itself are to be ignored.
|
||||
|
||||
The return value specifies the action that the drop target actually
|
||||
performed, and optionally what the caller should do. It can be one of
|
||||
the following symbols:
|
||||
|
||||
@table @code
|
||||
@item copy
|
||||
The drop target inserted the dropped text.
|
||||
|
||||
@item move
|
||||
The drop target inserted the dropped text, but in addition the caller
|
||||
should delete @var{text} from wherever it originated, such as its
|
||||
buffer.
|
||||
|
||||
@item private
|
||||
The drop target performed some other unspecified action.
|
||||
|
||||
@item nil
|
||||
The drag-and-drop operation was canceled.
|
||||
@end table
|
||||
|
||||
@end defun
|
||||
|
||||
@defun dnd-begin-file-drag file &optional frame action allow-same-frame
|
||||
This function begins dragging @var{file} from @var{frame} to another
|
||||
program, and returns the result of the drag-and-drop operation when
|
||||
the file is dropped or the drag-and-drop operation is canceled.
|
||||
|
||||
If @var{file} is a remote file, then a temporary copy will be made.
|
||||
|
||||
@var{action} must be one of the symbols @code{copy}, @code{move} or
|
||||
@code{link}, where @code{copy} means that @var{file} should be opened
|
||||
or copied by the drop target, @code{move} means the drop target should
|
||||
move the file to another location, and @code{link} means the drop
|
||||
target should create a symbolic link to @var{file}. It is an error to
|
||||
specify @code{link} as the action if @var{file} is a remote file.
|
||||
|
||||
@var{frame} and @var{allow-same-frame} have the same meaning as in
|
||||
@code{dnd-begin-text-drag}.
|
||||
|
||||
The return value is the action that the drop target actually
|
||||
performed, which can be one of the following symbols:
|
||||
|
||||
@table @code
|
||||
@item copy
|
||||
The drop target opened or copied @var{file} to a different location.
|
||||
|
||||
@item move
|
||||
The drop target moved @var{file} to a different location.
|
||||
|
||||
@item link
|
||||
The drop target (usually a file manager) created a symbolic link to
|
||||
@var{file}.
|
||||
|
||||
@item private
|
||||
The drop target performed some other unspecified action.
|
||||
|
||||
@item nil
|
||||
The drag-and-drop operation was canceled.
|
||||
@end table
|
||||
|
||||
@end defun
|
||||
|
||||
@defun dnd-begin-drag-files files &optional frame action allow-same-frame
|
||||
This function is like @code{dnd-begin-file-drag}, except that
|
||||
@var{files} is a list of files. If the drop target doesn't support
|
||||
dropping multiple files, then the first file will be used instead.
|
||||
@end defun
|
||||
|
||||
@cindex initiating drag-and-drop, low-level
|
||||
The high-level interfaces described above are implemented on top of
|
||||
a lower-level primitive. If you need to drag content other than files
|
||||
or text, use the low-level interface @code{x-begin-drag}
|
||||
instead. However, using it will require detailed knowledge of the
|
||||
data types and actions used by the programs to transfer content via
|
||||
drag-and-drop on each platform you want to support.
|
||||
|
||||
@defun x-begin-drag targets &optional action frame return-frame allow-current-frame follow-tooltip
|
||||
This function begins a drag from @var{frame}, and returns when the
|
||||
drag-and-drop operation ends, either because the drop was successful,
|
||||
or because the drop was rejected. The drop occurs when all mouse
|
||||
buttons are released on top of an X window other than @var{frame} (the
|
||||
@dfn{drop target}), or any X window if @var{allow-current-frame} is
|
||||
non-@code{nil}.
|
||||
non-@code{nil}. If no mouse buttons are held down when the
|
||||
drag-and-drop operation begins, this function may immediately return
|
||||
@code{nil}.
|
||||
|
||||
@var{targets} is a list of strings describing selection targets, much
|
||||
like the @var{data-type} argument to @code{gui-get-selection}, that
|
||||
|
|
@ -4085,6 +4231,12 @@ want to treat dragging content from one frame to another specially,
|
|||
while also being able to drag content to other programs, but it is not
|
||||
guaranteed to work on all systems and with all window managers.
|
||||
|
||||
If @var{follow-tooltip} is non-@code{nil}, the position of any tooltip
|
||||
(such as one shown by @code{tooltip-show}) will follow the location of
|
||||
the mouse pointer whenever it moves during the drag-and-drop
|
||||
operation. The tooltip will be hidden once all mouse buttons are
|
||||
released.
|
||||
|
||||
If the drop was rejected or no drop target was found, this function
|
||||
returns @code{nil}. Otherwise, it returns a symbol describing the
|
||||
action the target chose to perform, which can differ from @var{action}
|
||||
|
|
@ -4093,6 +4245,10 @@ is also a valid return value in addition to @code{XdndActionCopy} and
|
|||
@code{XdndActionMove}; it means that the drop target chose to perform
|
||||
an unspecified action, and no further processing is required by the
|
||||
caller.
|
||||
|
||||
The caller must cooperate with the target to fully perform the action
|
||||
chosen by the target. For example, callers should delete the buffer
|
||||
text that was dragged if this function returns @code{XdndActionMove}.
|
||||
@end defun
|
||||
|
||||
@node Color Names
|
||||
|
|
|
|||
|
|
@ -146,7 +146,12 @@ function:
|
|||
This function returns @code{t} if @var{object} is any kind of
|
||||
function, i.e., can be passed to @code{funcall}. Note that
|
||||
@code{functionp} returns @code{t} for symbols that are function names,
|
||||
and returns @code{nil} for special forms.
|
||||
and returns @code{nil} for symbols that are macros or special forms.
|
||||
|
||||
If @var{object} is not a function, this function ordinarily returns
|
||||
@code{nil}. However, the representation of function objects is
|
||||
complicated, and for efficiency reasons in rare cases this function
|
||||
can return @code{t} even when @var{object} is not a function.
|
||||
@end defun
|
||||
|
||||
It is also possible to find out how many arguments an arbitrary
|
||||
|
|
@ -1712,6 +1717,7 @@ ways to do it. The added function is also called a piece of @emph{advice}.
|
|||
* Advising Named Functions:: Advising named functions.
|
||||
* Advice Combinators:: Ways to compose advice.
|
||||
* Porting Old Advice:: Adapting code using the old defadvice.
|
||||
* Advice and Byte Code:: Not all functions can be advised.
|
||||
@end menu
|
||||
|
||||
@node Core Advising Primitives
|
||||
|
|
@ -2133,6 +2139,37 @@ changing @code{ad-return-value}, whereas new @code{:after} advice cannot, so
|
|||
when porting such old @code{after} advice, you'll need to turn it into new
|
||||
@code{:around} or @code{:filter-return} advice instead.
|
||||
|
||||
@c This is its own node because we link to it from *Help* buffers.
|
||||
@node Advice and Byte Code
|
||||
@subsection Advice and Byte Code
|
||||
@cindex compiler macros, advising
|
||||
@cindex @code{byte-compile} and @code{byte-optimize}, advising
|
||||
|
||||
Not all functions can be reliably advised. The byte compiler may
|
||||
choose to replace a call to a function with a sequence of instructions
|
||||
that doesn't call the function you were interested in altering.
|
||||
|
||||
This usually happens due to one of the three following mechanisms:
|
||||
|
||||
@table @asis
|
||||
@item @code{byte-compile} properties
|
||||
If a function's symbol has a @code{byte-compile} property, that
|
||||
property will be used instead of the symbol's function definition.
|
||||
@xref{Compilation Functions}.
|
||||
|
||||
@item @code{byte-optimize} properties
|
||||
If a function's symbol has a @code{byte-optimize} property, the byte
|
||||
compiler may rewrite the function arguments, or decide to use a
|
||||
different function altogether.
|
||||
|
||||
@item @code{compiler-macro} declare forms
|
||||
A function can have a special @code{compiler-macro} @code{declare}
|
||||
form in its definition (@pxref{Declare Form}) that defines an
|
||||
@dfn{expander} to call when compiling the function. The expander
|
||||
could then cause the produced byte-code not to call the original
|
||||
function.
|
||||
@end table
|
||||
|
||||
@node Obsolete Functions
|
||||
@section Declaring Functions Obsolete
|
||||
@cindex obsolete functions
|
||||
|
|
|
|||
|
|
@ -345,7 +345,10 @@ stands for a key sequence @var{KEYSEQ}, which will use the same face
|
|||
as a command substitution. This should be used only when a key
|
||||
sequence has no corresponding command, for example when it is read
|
||||
directly with @code{read-key-sequence}. It must be a valid key
|
||||
sequence according to @code{key-valid-p}.
|
||||
sequence according to @code{key-valid-p}. It can also be used with
|
||||
command names, like @samp{\`M-x foo'}, where you want this to be
|
||||
fontified like a keyboard sequence, but you want to inhibit
|
||||
translating it into a key sequence like @samp{\[foo]} does.
|
||||
|
||||
@item `
|
||||
(grave accent) stands for a left quote.
|
||||
|
|
@ -362,6 +365,10 @@ depending on the value of @code{text-quoting-style}.
|
|||
quotes the following character and is discarded; thus, @samp{\=`} puts
|
||||
@samp{`} into the output, @samp{\=\[} puts @samp{\[} into the output,
|
||||
and @samp{\=\=} puts @samp{\=} into the output.
|
||||
|
||||
@item \+
|
||||
This indicates that the symbol directly following should not be marked
|
||||
as link in the @file{*Help*} buffer.
|
||||
@end table
|
||||
|
||||
@strong{Please note:} Each @samp{\} must be doubled when written in a
|
||||
|
|
@ -386,7 +393,7 @@ quotes. You can customize it freely according to your personal
|
|||
preference.
|
||||
@end defopt
|
||||
|
||||
@defun substitute-command-keys string &optional no-face
|
||||
@defun substitute-command-keys string &optional no-face include-menus
|
||||
@vindex help-key-binding@r{ (face)}
|
||||
This function scans @var{string} for the above special sequences and
|
||||
replaces them by what they stand for, returning the result as a string.
|
||||
|
|
@ -436,6 +443,9 @@ RET minibuffer-complete-and-exit
|
|||
C-g abort-recursive-edit
|
||||
"
|
||||
|
||||
The keymap description will normally exclude menu items, but if
|
||||
@var{include-menus} is non-@code{nil}, include them.
|
||||
|
||||
@group
|
||||
(substitute-command-keys
|
||||
"To abort a recursive edit from the minibuffer, type \
|
||||
|
|
|
|||
|
|
@ -529,7 +529,7 @@ primitive for autoloading; any Lisp program can call @code{autoload} at
|
|||
any time. Magic comments are the most convenient way to make a function
|
||||
autoload, for packages installed along with Emacs. These comments do
|
||||
nothing on their own, but they serve as a guide for the command
|
||||
@code{update-file-autoloads}, which constructs calls to @code{autoload}
|
||||
@code{loaddefs-generate}, which constructs calls to @code{autoload}
|
||||
and arranges to execute them when Emacs is built.
|
||||
|
||||
@defun autoload function filename &optional docstring interactive type
|
||||
|
|
@ -627,22 +627,19 @@ subroutines not loaded successfully because they come later in the file.
|
|||
macro, then an error is signaled with data @code{"Autoloading failed to
|
||||
define function @var{function-name}"}.
|
||||
|
||||
@findex update-file-autoloads
|
||||
@findex make-directory-autoloads
|
||||
@findex loaddefs-generate
|
||||
@cindex magic autoload comment
|
||||
@cindex autoload cookie
|
||||
@anchor{autoload cookie}
|
||||
A magic autoload comment (often called an @dfn{autoload cookie})
|
||||
consists of @samp{;;;###autoload}, on a line by itself,
|
||||
just before the real definition of the function in its
|
||||
autoloadable source file. The command @kbd{M-x update-file-autoloads}
|
||||
autoloadable source file. The function @code{loaddefs-generate}
|
||||
writes a corresponding @code{autoload} call into @file{loaddefs.el}.
|
||||
(The string that serves as the autoload cookie and the name of the
|
||||
file generated by @code{update-file-autoloads} can be changed from the
|
||||
file generated by @code{loaddefs-generate} can be changed from the
|
||||
above defaults, see below.)
|
||||
Building Emacs loads @file{loaddefs.el} and thus calls @code{autoload}.
|
||||
@kbd{M-x make-directory-autoloads} is even more powerful; it updates
|
||||
autoloads for all files in the current directory.
|
||||
|
||||
The same magic comment can copy any kind of form into
|
||||
@file{loaddefs.el}. The form following the magic comment is copied
|
||||
|
|
@ -675,7 +672,7 @@ and @code{define-global-minor-mode}.
|
|||
@emph{without} executing it when the file itself is loaded. To do this,
|
||||
write the form @emph{on the same line} as the magic comment. Since it
|
||||
is in a comment, it does nothing when you load the source file; but
|
||||
@kbd{M-x update-file-autoloads} copies it to @file{loaddefs.el}, where
|
||||
@code{loaddefs-generate} copies it to @file{loaddefs.el}, where
|
||||
it is executed while building Emacs.
|
||||
|
||||
The following example shows how @code{doctor} is prepared for
|
||||
|
|
@ -728,11 +725,11 @@ corresponding autoload calls written into a file whose name is
|
|||
different from the default @file{loaddefs.el}. Emacs provides two
|
||||
variables to control this:
|
||||
|
||||
@defvar generate-autoload-cookie
|
||||
The value of this variable should be a string whose syntax is a Lisp
|
||||
comment. @kbd{M-x update-file-autoloads} copies the Lisp form that
|
||||
follows the cookie into the autoload file it generates. The default
|
||||
value of this variable is @code{";;;###autoload"}.
|
||||
@defvar lisp-mode-autoload-regexp
|
||||
The value of this constant is a regexp that matches autoload cookies.
|
||||
@code{loaddefs-generate} copies the Lisp form that follows the
|
||||
cookie into the autoload file it generates. This will match comments
|
||||
like like @samp{;;;###autoload} and @samp{;;;###calc-autoload}.
|
||||
@end defvar
|
||||
|
||||
@defvar generated-autoload-file
|
||||
|
|
@ -769,7 +766,7 @@ contain definitions matching the prefix being completed. The variable
|
|||
@code{definition-prefixes} holds a hashtable which maps a prefix to
|
||||
the corresponding list of files to load for it. Entries to this
|
||||
mapping are added by calls to @code{register-definition-prefixes}
|
||||
which are generated by @code{update-file-autoloads}
|
||||
which are generated by @code{loaddefs-generate}
|
||||
(@pxref{Autoload}). Files which don't contain any definitions worth
|
||||
loading (test files, for examples), should set
|
||||
@code{autoload-compute-prefixes} to @code{nil} as a file-local
|
||||
|
|
|
|||
|
|
@ -309,6 +309,22 @@ The optional argument @var{history}, if non-@code{nil}, is a symbol
|
|||
specifying a minibuffer history list to use (@pxref{Minibuffer
|
||||
History}). If it is omitted or @code{nil}, the history list defaults
|
||||
to @code{regexp-history}.
|
||||
|
||||
@cindex @code{case-fold}, text property
|
||||
@findex read-regexp-case-fold-search
|
||||
The user can use the @kbd{M-c} command to indicate whether case
|
||||
folding should be on or off. If the user has used this command, the
|
||||
returned string will have the text property @code{case-fold} set to
|
||||
either @code{fold} or @code{inhibit-fold}. It is up to the caller of
|
||||
@code{read-regexp} to actually use this value, and the convenience
|
||||
function @code{read-regexp-case-fold-search} is provided for that. A
|
||||
typical usage pattern here might look like:
|
||||
|
||||
@lisp
|
||||
(let* ((regexp (read-regexp "Search for: "))
|
||||
(case-fold-search (read-regexp-case-fold-search regexp)))
|
||||
(re-search-forward regexp))
|
||||
@end lisp
|
||||
@end defun
|
||||
|
||||
@defopt read-regexp-defaults-function
|
||||
|
|
@ -1121,6 +1137,11 @@ completion command (i.e., one of the commands in
|
|||
@code{minibuffer-confirm-exit-commands}) and the resulting input is
|
||||
not an element of @var{collection}. @xref{Completion Commands}.
|
||||
|
||||
@item
|
||||
If a function, it is called with the input as the only argument. The
|
||||
function should return a non-@code{nil} value if the input is
|
||||
acceptable.
|
||||
|
||||
@item
|
||||
Any other value of @var{require-match} behaves like @code{t}, except
|
||||
that the exit commands won't exit if it performs completion.
|
||||
|
|
|
|||
|
|
@ -2575,7 +2575,23 @@ mode line feature, except that it's controlled by
|
|||
This variable, local in every buffer, specifies how to display the
|
||||
header line, for windows displaying the buffer. The format of the value
|
||||
is the same as for @code{mode-line-format} (@pxref{Mode Line Data}).
|
||||
It is normally @code{nil}, so that ordinary buffers have no header line.
|
||||
It is normally @code{nil}, so that ordinary buffers have no header
|
||||
line.
|
||||
|
||||
@findex header-line-indent-mode
|
||||
If @code{display-line-numbers-mode} is used, and you want the header
|
||||
line to be indented by the same amount as the buffer contents, you can
|
||||
use the @code{header-line-indent-mode} minor mode. This minor mode
|
||||
keeps the @code{header-line-indent} variable updated, so that you can
|
||||
say something like:
|
||||
|
||||
@lisp
|
||||
(setq header-line-format
|
||||
`("" header-line-format ,my-header-line))
|
||||
@end lisp
|
||||
|
||||
This can be useful if you're displaying columnar data, and the header
|
||||
line should align with that data in the buffer.
|
||||
@end defvar
|
||||
|
||||
@defun window-header-line-height &optional window
|
||||
|
|
@ -3652,6 +3668,10 @@ the value is @code{nil}, Font Lock will call @code{jit-lock-register}
|
|||
(@pxref{Other Font Lock Variables}) to set up for automatic
|
||||
refontification of buffer text following a modified line to reflect
|
||||
the new syntactic context due to the change.
|
||||
|
||||
To use only syntactic fontification, this variable should
|
||||
be non-@code{nil}, while @code{font-lock-keywords} should be set to
|
||||
@code{nil} (@pxref{Font Lock Basics}).
|
||||
@end defvar
|
||||
|
||||
@defvar font-lock-syntax-table
|
||||
|
|
|
|||
|
|
@ -280,11 +280,12 @@ to the codepoints @code{#x3FFF80} through @code{#x3FFFFF}, inclusive
|
|||
|
||||
@defun string-to-unibyte string
|
||||
This function returns a unibyte string containing the same sequence of
|
||||
characters as @var{string}. It signals an error if @var{string}
|
||||
contains a non-@acronym{ASCII} character. If @var{string} is a
|
||||
unibyte string, it is returned unchanged. Use this function for
|
||||
@var{string} arguments that contain only @acronym{ASCII} and eight-bit
|
||||
characters.
|
||||
characters as @var{string}. If @var{string} is a unibyte string, it
|
||||
is returned unchanged. Otherwise, @acronym{ASCII} characters and
|
||||
characters in the @code{eight-bit} charset are converted to their
|
||||
corresponding byte values. Use this function for @var{string}
|
||||
arguments that contain only @acronym{ASCII} and eight-bit characters;
|
||||
the function signals an error if any other characters are encountered.
|
||||
@end defun
|
||||
|
||||
@defun byte-to-string byte
|
||||
|
|
|
|||
|
|
@ -178,6 +178,12 @@ files.
|
|||
Skip the next @samp{N} characters (@pxref{Comments}). This is used in
|
||||
byte-compiled files, and is not meant to be used in Emacs Lisp source
|
||||
files.
|
||||
|
||||
@item #f
|
||||
Indicates that the following form isn't readable by the Emacs Lisp
|
||||
reader. This is only in text for display purposes (when that would
|
||||
look prettier than alternative ways of indicating an unreadable form)
|
||||
and will never appear in any Lisp file.
|
||||
@end table
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -329,10 +329,10 @@ file will not inhibit the message for someone else.
|
|||
@end defopt
|
||||
|
||||
@defopt initial-scratch-message
|
||||
This variable, if non-@code{nil}, should be a string, which is
|
||||
treated as documentation to be
|
||||
inserted into the @file{*scratch*} buffer when Emacs starts up. If it
|
||||
is @code{nil}, the @file{*scratch*} buffer is empty.
|
||||
This variable, if non-@code{nil}, should be a string, which is treated
|
||||
as documentation to be inserted into the @file{*scratch*} buffer when
|
||||
Emacs starts up or when that buffer is recreated. If it is
|
||||
@code{nil}, the @file{*scratch*} buffer is empty.
|
||||
@end defopt
|
||||
|
||||
@noindent
|
||||
|
|
@ -1649,8 +1649,8 @@ this default may change in future Emacs releases, so callers requiring
|
|||
a particular form should specify @var{form}.
|
||||
|
||||
@strong{Common Lisp Note:} Common Lisp has different meanings for
|
||||
@var{dow} and @var{utcoff}, and its @var{second} is an integer between
|
||||
0 and 59 inclusive.
|
||||
@var{dow}, @code{dst} and @var{utcoff}, and its @var{second} is an
|
||||
integer between 0 and 59 inclusive.
|
||||
|
||||
To access (or alter) the elements in the calendrical information, the
|
||||
@code{decoded-time-second}, @code{decoded-time-minute},
|
||||
|
|
|
|||
|
|
@ -1011,16 +1011,18 @@ terminated (due to calling @code{exit} or to a signal). If it is
|
|||
they exit.
|
||||
@end defopt
|
||||
|
||||
@defun delete-process process
|
||||
@defun delete-process &optional process
|
||||
This function deletes a process, killing it with a @code{SIGKILL}
|
||||
signal if the process was running a program. The argument may be a
|
||||
process, the name of a process, a buffer, or the name of a buffer. (A
|
||||
buffer or buffer-name stands for the process that
|
||||
@code{get-buffer-process} returns.) Calling @code{delete-process} on
|
||||
a running process terminates it, updates the process status, and runs
|
||||
the sentinel immediately. If the process has already terminated,
|
||||
calling @code{delete-process} has no effect on its status, or on the
|
||||
running of its sentinel (which will happen sooner or later).
|
||||
@code{get-buffer-process} returns, and a missing or @code{nil}
|
||||
@var{process} means that the current buffer's process should be
|
||||
killed.) Calling @code{delete-process} on a running process
|
||||
terminates it, updates the process status, and runs the sentinel
|
||||
immediately. If the process has already terminated, calling
|
||||
@code{delete-process} has no effect on its status, or on the running
|
||||
of its sentinel (which will happen sooner or later).
|
||||
|
||||
If the process object represents a network, serial, or pipe
|
||||
connection, its status changes to @code{closed}; otherwise, it changes
|
||||
|
|
@ -3468,20 +3470,67 @@ type values:
|
|||
@itemx byte
|
||||
Unsigned byte, with length 1.
|
||||
|
||||
@item uint @var{bitlen}
|
||||
Unsigned integer in network byte order, with @var{bitlen} bits.
|
||||
@item uint @var{bitlen} &optional @var{le}
|
||||
Unsigned integer in network byte order (big-endian), with @var{bitlen} bits.
|
||||
@var{bitlen} has to be a multiple of 8.
|
||||
If @var{le} is non-@code{nil}, then use little-endian byte order.
|
||||
|
||||
@item uintr @var{bitlen}
|
||||
Unsigned integer in little endian order, with @var{bitlen} bits.
|
||||
@item sint @var{bitlen} @var{le}
|
||||
Signed integer in network byte order (big-endian), with @var{bitlen} bits.
|
||||
@var{bitlen} has to be a multiple of 8.
|
||||
If @var{le} is non-@code{nil}, then use little-endian byte order.
|
||||
|
||||
@item str @var{len}
|
||||
String of bytes of length @var{len}.
|
||||
Unibyte string (@pxref{Text Representations}) of length @var{len} bytes.
|
||||
When packing, the first @var{len} bytes of the input string are copied
|
||||
to the packed output. If the input string is shorter than @var{len},
|
||||
the remaining bytes will be null (zero) unless a pre-allocated string
|
||||
was provided to @code{bindat-pack}, in which case the remaining bytes
|
||||
are left unmodified. If the input string is multibyte with only ASCII
|
||||
and @code{eight-bit} characters, it is converted to unibyte before it
|
||||
is packed; other multibyte strings signal an error. When unpacking,
|
||||
any null bytes in the packed input string will appear in the unpacked
|
||||
output.
|
||||
|
||||
@item strz &optional @var{len}
|
||||
Zero-terminated string of bytes, can be of arbitrary length or in a fixed-size
|
||||
field with length @var{len}.
|
||||
If @var{len} is not provided: Variable-length null-terminated unibyte
|
||||
string (@pxref{Text Representations}). When packing, the entire input
|
||||
string is copied to the packed output. The following byte will be
|
||||
null (zero) unless a pre-allocated string was provided to
|
||||
@code{bindat-pack}, in which case that byte is left unmodified. The
|
||||
length of the packed output is the length of the input string plus one
|
||||
(for the null terminator). The input string must not contain any null
|
||||
bytes. If the input string is multibyte with only ASCII and
|
||||
@code{eight-bit} characters, it is converted to unibyte before it is
|
||||
packed; other multibyte strings signal an error. When unpacking, the
|
||||
resulting string contains all bytes up to (but excluding) the null
|
||||
byte.
|
||||
|
||||
@quotation Caution
|
||||
If a pre-allocated string is provided to @code{bindat-pack}, the
|
||||
packed output will not be properly null-terminated unless the
|
||||
pre-allocated string already has a null byte at the appropriate
|
||||
location.
|
||||
@end quotation
|
||||
|
||||
If @var{len} is provided: @code{strz} behaves the same as @code{str}
|
||||
with one difference: When unpacking, the first null byte encountered
|
||||
in the packed string and all subsequent bytes are excluded from the
|
||||
unpacked result.
|
||||
|
||||
@quotation Caution
|
||||
The packed output will not be null-terminated unless one of the
|
||||
following is true:
|
||||
@itemize
|
||||
@item
|
||||
The input string is shorter than @var{len} bytes and either no pre-allocated
|
||||
string was provided to @code{bindat-pack} or the appropriate byte in
|
||||
the pre-allocated string was already null.
|
||||
@item
|
||||
The input string contains a null byte within the first @var{len}
|
||||
bytes.
|
||||
@end itemize
|
||||
@end quotation
|
||||
|
||||
@item vec @var{len} [@var{type}]
|
||||
Vector of @var{len} elements. The type of the elements is given by
|
||||
|
|
|
|||
|
|
@ -549,12 +549,12 @@ can act. It is poor practice to depend on this behavior; quote the
|
|||
special character anyway, regardless of where it appears.
|
||||
|
||||
As a @samp{\} is not special inside a character alternative, it can
|
||||
never remove the special meaning of @samp{-} or @samp{]}. So you
|
||||
should not quote these characters when they have no special meaning
|
||||
either. This would not clarify anything, since backslashes can
|
||||
legitimately precede these characters where they @emph{have} special
|
||||
meaning, as in @samp{[^\]} (@code{"[^\\]"} for Lisp string syntax),
|
||||
which matches any single character except a backslash.
|
||||
never remove the special meaning of @samp{-}, @samp{^} or @samp{]}.
|
||||
You should not quote these characters when they have no special
|
||||
meaning. This would not clarify anything, since backslashes
|
||||
can legitimately precede these characters where they @emph{have}
|
||||
special meaning, as in @samp{[^\]} (@code{"[^\\]"} for Lisp string
|
||||
syntax), which matches any single character except a backslash.
|
||||
|
||||
In practice, most @samp{]} that occur in regular expressions close a
|
||||
character alternative and hence are special. However, occasionally a
|
||||
|
|
@ -823,21 +823,22 @@ the characters that stand for them.
|
|||
matches any character whose syntax is not @var{code}.
|
||||
|
||||
@cindex category, regexp search for
|
||||
@item \c@var{c}
|
||||
matches any character whose category is @var{c}. Here @var{c} is a
|
||||
character that represents a category: thus, @samp{c} for Chinese
|
||||
characters or @samp{g} for Greek characters in the standard category
|
||||
table. You can see the list of all the currently defined categories
|
||||
with @kbd{M-x describe-categories @key{RET}}. You can also define
|
||||
your own categories in addition to the standard ones using the
|
||||
@code{define-category} function (@pxref{Categories}).
|
||||
@item \c@var{code}
|
||||
matches any character whose category is @var{code}. Here @var{code}
|
||||
is a character that represents a category: for example, in the standard
|
||||
category table, @samp{c} stands for Chinese characters and @samp{g}
|
||||
stands for Greek characters. You can see the list of all the
|
||||
currently defined categories with @w{@kbd{M-x describe-categories
|
||||
@key{RET}}}. You can also define your own categories in addition to
|
||||
the standard ones using the @code{define-category} function
|
||||
(@pxref{Categories}).
|
||||
|
||||
@item \C@var{c}
|
||||
matches any character whose category is not @var{c}.
|
||||
@item \C@var{code}
|
||||
matches any character whose category is not @var{code}.
|
||||
@end table
|
||||
|
||||
The following regular expression constructs match the empty string---that is,
|
||||
they don't use up any characters---but whether they match depends on the
|
||||
they don't consume any characters---but whether they match depends on the
|
||||
context. For all, the beginning and end of the accessible portion of
|
||||
the buffer are treated as if they were the actual beginning and end of
|
||||
the buffer.
|
||||
|
|
|
|||
|
|
@ -21,6 +21,7 @@ reading) or where to put it (if printing).
|
|||
* Output Streams:: Various data types that can be used as output streams.
|
||||
* Output Functions:: Functions to print Lisp objects as text.
|
||||
* Output Variables:: Variables that control what the printing functions do.
|
||||
* Output Overrides:: Overriding output variables.
|
||||
@end menu
|
||||
|
||||
@node Streams Intro
|
||||
|
|
@ -634,7 +635,7 @@ characters are used. @code{print} returns @var{object}. For example:
|
|||
@end example
|
||||
@end defun
|
||||
|
||||
@defun prin1 object &optional stream
|
||||
@defun prin1 object &optional stream overrides
|
||||
This function outputs the printed representation of @var{object} to
|
||||
@var{stream}. It does not print newlines to separate output as
|
||||
@code{print} does, but it does use quoting characters just like
|
||||
|
|
@ -649,6 +650,10 @@ This function outputs the printed representation of @var{object} to
|
|||
@result{} " came back"
|
||||
@end group
|
||||
@end example
|
||||
|
||||
If @var{overrides} is non-@code{nil}, it should either be @code{t}
|
||||
(which tells @code{prin1} to use the defaults for all printer related
|
||||
variables), or a list of settings. @xref{Output Overrides}, for details.
|
||||
@end defun
|
||||
|
||||
@defun princ object &optional stream
|
||||
|
|
@ -694,7 +699,7 @@ newline character first, which enables you to display incomplete
|
|||
lines.
|
||||
@end defun
|
||||
|
||||
@defun prin1-to-string object &optional noescape
|
||||
@defun prin1-to-string object &optional noescape overrides
|
||||
@cindex object to string
|
||||
This function returns a string containing the text that @code{prin1}
|
||||
would have printed for the same argument.
|
||||
|
|
@ -708,6 +713,10 @@ would have printed for the same argument.
|
|||
(prin1-to-string (mark-marker))
|
||||
@result{} "#<marker at 2773 in strings.texi>"
|
||||
@end group
|
||||
|
||||
If @var{overrides} is non-@code{nil}, it should either be @code{t}
|
||||
(which tells @code{prin1} to use the defaults for all printer related
|
||||
variables), or a list of settings. @xref{Output Overrides}, for details.
|
||||
@end example
|
||||
|
||||
If @var{noescape} is non-@code{nil}, that inhibits use of quoting
|
||||
|
|
@ -971,3 +980,84 @@ Letter, Number, Punctuation, Symbol and Private-use
|
|||
(@pxref{Character Properties}), as well as the control characters
|
||||
having their own escape syntax such as newline.
|
||||
@end defvar
|
||||
|
||||
@node Output Overrides
|
||||
@section Overriding Output Variables
|
||||
@cindex overrides, in output functions
|
||||
@cindex output variables, overriding
|
||||
|
||||
The previous section (@pxref{Output Functions}) lists the numerous
|
||||
variables that control how the Emacs Lisp printer formats data for
|
||||
outputs. These are generally available for users to change, but
|
||||
sometimes you want to output data in the default format, or override
|
||||
the user settings in some other way. For instance, if you're storing
|
||||
Emacs Lisp data in a file, you don't want that data to be shortened by
|
||||
a @code{print-length} setting.
|
||||
|
||||
The @code{prin1} and @code{prin1-to-string} functions therefore have
|
||||
an optional @var{overrides} argument. This argument can either be
|
||||
@code{t} (which means that all printing variables should be reset to
|
||||
the default values), or a list of settings for some of the variables.
|
||||
Each element in the list can be either @code{t} (which means ``reset
|
||||
to defaults'', and will usually be the first element of the list), or
|
||||
a pair whose @code{car} is a symbol that stands for an output variable
|
||||
and whose @code{cdr} is the value for that variable.
|
||||
|
||||
For instance, this prints using nothing but defaults:
|
||||
|
||||
@lisp
|
||||
(prin1 object nil t)
|
||||
@end lisp
|
||||
|
||||
This prints @var{object} using the current printing settings, but
|
||||
overrides the value of @code{print-length} to be 5:
|
||||
|
||||
@lisp
|
||||
(prin1 object nil '((length . 5)))
|
||||
@end lisp
|
||||
|
||||
And finally, this prints @var{object} using only default settings, but
|
||||
with @code{print-length} bound to 5:
|
||||
|
||||
@lisp
|
||||
(prin1 object nil '(t (length . 5)))
|
||||
@end lisp
|
||||
|
||||
Below is a list of symbols that can be used, and which variables they
|
||||
map to:
|
||||
|
||||
@table @code
|
||||
@item length
|
||||
This overrides @code{print-length}.
|
||||
@item level
|
||||
This overrides @code{print-level}.
|
||||
@item circle
|
||||
This overrides @code{print-circle}.
|
||||
@item quoted
|
||||
This overrides @code{print-quoted}.
|
||||
@item escape-newlines
|
||||
This overrides @code{print-escape-newlines}.
|
||||
@item escape-control-characters
|
||||
This overrides @code{print-escape-control-characters}.
|
||||
@item escape-nonascii
|
||||
This overrides @code{print-escape-nonascii}.
|
||||
@item escape-multibyte
|
||||
This overrides @code{print-escape-multibyte}.
|
||||
@item charset-text-property
|
||||
This overrides @code{print-charset-text-property}.
|
||||
@item unreadeable-function
|
||||
This overrides @code{print-unreadable-function}.
|
||||
@item gensym
|
||||
This overrides @code{print-gensym}.
|
||||
@item continuous-numbering
|
||||
This overrides @code{print-continuous-numbering}.
|
||||
@item number-table
|
||||
This overrides @code{print-number-table}.
|
||||
@item float-format
|
||||
This overrides @code{float-output-format}.
|
||||
@item integers-as-characters
|
||||
This overrides @code{print-integers-as-characters}.
|
||||
@end table
|
||||
|
||||
In the future, more overrides may be offered that do not map directly
|
||||
to a variable, but can only be used via this parameter.
|
||||
|
|
|
|||
|
|
@ -443,12 +443,12 @@ strings.
|
|||
@end defun
|
||||
|
||||
@defun string-pad string length &optional padding start
|
||||
Pad @var{string} to the be of @var{length} using @var{padding} as the
|
||||
padding character (defaulting to the space character). If
|
||||
@var{string} is shorter than @var{length}, no padding is done. If
|
||||
@var{start} is @code{nil} (or not present), the padding is done to the
|
||||
end of the string, and if it's non-@code{nil}, to the start of the
|
||||
string.
|
||||
Pad @var{string} to be of the given @var{length} using @var{padding}
|
||||
as the padding character. @var{padding} defaults to the space
|
||||
character. If @var{string} is longer than @var{length}, no padding is
|
||||
done. If @var{start} is @code{nil} or omitted, the padding is
|
||||
appended to the characters of @var{string}, and if it's
|
||||
non-@code{nil}, the padding is prepended to @var{string}'s characters.
|
||||
@end defun
|
||||
|
||||
@defun string-chop-newline string
|
||||
|
|
@ -464,23 +464,29 @@ Remove the final newline, if any, from @var{string}.
|
|||
described in this section. @xref{Mutability}.
|
||||
|
||||
The most basic way to alter the contents of an existing string is with
|
||||
@code{aset} (@pxref{Array Functions}). @code{(aset @var{string}
|
||||
@var{idx} @var{char})} stores @var{char} into @var{string} at index
|
||||
@var{idx}. Each character occupies one or more bytes, and if @var{char}
|
||||
needs a different number of bytes from the character already present at
|
||||
that index, @code{aset} signals an error.
|
||||
@code{aset} (@pxref{Array Functions}). @w{@code{(aset @var{string}
|
||||
@var{idx} @var{char})}} stores @var{char} into @var{string} at character
|
||||
index @var{idx}. It will automatically convert a pure-@acronym{ASCII}
|
||||
@var{string} to a multibyte string (@pxref{Text Representations}) if
|
||||
needed, but we recommend to always make sure @var{string} is multibyte
|
||||
(e.g., by using @code{string-to-multibyte}, @pxref{Converting
|
||||
Representations}), if @var{char} is a non-@acronym{ASCII} character, not
|
||||
a raw byte.
|
||||
|
||||
A more powerful function is @code{store-substring}:
|
||||
|
||||
@defun store-substring string idx obj
|
||||
This function alters part of the contents of the string @var{string}, by
|
||||
storing @var{obj} starting at index @var{idx}. The argument @var{obj}
|
||||
may be either a character or a (smaller) string.
|
||||
This function alters part of the contents of the specified @var{string},
|
||||
by storing @var{obj} starting at character index @var{idx}. The
|
||||
argument @var{obj} may be either a character (in which case the function
|
||||
behaves exactly as @code{aset}) or a (smaller) string. If @var{obj}
|
||||
is a multibyte string, we recommend to make sure @var{string} is also
|
||||
multibyte, even if it's pure-@acronym{ASCII}.
|
||||
|
||||
Since it is impossible to change the length of an existing string, it is
|
||||
an error if @var{obj} doesn't fit within @var{string}'s actual length,
|
||||
or if any new character requires a different number of bytes from the
|
||||
character currently present at that point in @var{string}.
|
||||
Since it is impossible to change the number of characters in an
|
||||
existing string, it is en error if @var{obj} consists of more
|
||||
characters than would fit in @var{string} starting at character index
|
||||
@var{idx}.
|
||||
@end defun
|
||||
|
||||
To clear out a string that contained a password, use
|
||||
|
|
@ -856,9 +862,7 @@ between 2 and 16 (inclusive), and integers are converted in that base.
|
|||
If @var{base} is @code{nil}, then base ten is used. Floating-point
|
||||
conversion only works in base ten; we have not implemented other
|
||||
radices for floating-point numbers, because that would be much more
|
||||
work and does not seem useful. If @var{string} looks like an integer
|
||||
but its value is too large to fit into a Lisp integer,
|
||||
@code{string-to-number} returns a floating-point result.
|
||||
work and does not seem useful.
|
||||
|
||||
The parsing skips spaces and tabs at the beginning of @var{string},
|
||||
then reads as much of @var{string} as it can interpret as a number in
|
||||
|
|
@ -1350,7 +1354,7 @@ given width, if specified.
|
|||
This flag converts the substituted text to upper case (@pxref{Case
|
||||
Conversion}).
|
||||
|
||||
@item _
|
||||
@item _@r{ (underscore)}
|
||||
This flag converts the substituted text to lower case (@pxref{Case
|
||||
Conversion}).
|
||||
@end table
|
||||
|
|
|
|||
|
|
@ -1034,6 +1034,9 @@ text in @var{string} according to the @code{yank-handler} text
|
|||
property, as well as the variables @code{yank-handled-properties} and
|
||||
@code{yank-excluded-properties} (see below), before inserting the
|
||||
result into the current buffer.
|
||||
|
||||
@var{string} will be run through @code{yank-transform-functions} (see
|
||||
below) before inserting.
|
||||
@end defun
|
||||
|
||||
@defun insert-buffer-substring-as-yank buf &optional start end
|
||||
|
|
@ -1108,6 +1111,23 @@ or specifying key bindings. It takes effect after
|
|||
@code{yank-handled-properties}.
|
||||
@end defopt
|
||||
|
||||
@defvar yank-transform-functions
|
||||
This variable is a list of functions. Each function is called (in
|
||||
order) with the string to be yanked as the argument, and should
|
||||
return a (possibly transformed) string. This variable can be set
|
||||
globally, but can also be used to create new commands that are
|
||||
variations on @code{yank}. For instance, to create a command that
|
||||
works like @code{yank}, but cleans up whitespace before inserting, you
|
||||
could say something like:
|
||||
|
||||
@lisp
|
||||
(defun yank-with-clean-whitespace ()
|
||||
(interactive)
|
||||
(let ((yank-transform-functions
|
||||
'(string-clean-whitespace)))
|
||||
(call-interactively #'yank)))
|
||||
@end lisp
|
||||
@end defvar
|
||||
|
||||
@node Yank Commands
|
||||
@subsection Functions for Yanking
|
||||
|
|
|
|||
|
|
@ -694,26 +694,24 @@ starting double-quote is not part of the string!
|
|||
@cindex curly quotes
|
||||
@cindex curved quotes
|
||||
When a documentation string refers to a Lisp symbol, write it as it
|
||||
would be printed (which usually means in lower case), surrounding it
|
||||
with curved single quotes (@t{‘..’}). There are two exceptions: write
|
||||
@code{t} and @code{nil} without surrounding punctuation. For example:
|
||||
would be printed (which usually means in lower case), with a grave
|
||||
accent @samp{`} before and apostrophe @samp{'} after it. There are
|
||||
two exceptions: write @code{t} and @code{nil} without surrounding
|
||||
punctuation. For example:
|
||||
|
||||
@example
|
||||
CODE can be ‘lambda’, nil, or t.
|
||||
CODE can be `lambda', nil, or t.
|
||||
@end example
|
||||
|
||||
@noindent
|
||||
@xref{Quotation Marks,,, emacs, The GNU Emacs Manual}, for how to
|
||||
enter curved single quotes.
|
||||
|
||||
Documentation strings can also use an older single-quoting convention,
|
||||
which quotes symbols with grave accent @t{`} and apostrophe
|
||||
@t{'}: @t{`like-this'} rather than @t{‘like-this’}. This
|
||||
older convention was designed for now-obsolete displays in which grave
|
||||
accent and apostrophe were mirror images.
|
||||
Documentation using this convention is converted to the user's
|
||||
preferred format when it is copied into a help buffer. @xref{Keys in
|
||||
Documentation}.
|
||||
Note that when Emacs displays these doc strings, Emacs will usually
|
||||
display @samp{`} (grave accent) as @samp{‘} (left single quotation
|
||||
mark) and @samp{'} (apostrophe) as @samp{’} (right single quotation
|
||||
mark), if the display supports displaying these characters.
|
||||
@xref{Keys in Documentation}. (Some previous versions of this section
|
||||
recommended using the non-@acronym{ASCII} single quotation marks
|
||||
directly in doc strings, but this is now discouraged, since that leads
|
||||
to broken help string displays on terminals that don't support
|
||||
displaying those characters.)
|
||||
|
||||
@cindex hyperlinks in documentation strings
|
||||
Help mode automatically creates a hyperlink when a documentation string
|
||||
|
|
|
|||
|
|
@ -527,10 +527,11 @@ If @var{symbol} has a buffer-local binding in the current buffer,
|
|||
rather than the buffer-local binding. It sets the default value if
|
||||
the default value is void. @xref{Buffer-Local Variables}.
|
||||
|
||||
If @var{symbol} is already lexically bound (e.g., if the @code{defvar}
|
||||
form occurs in a @code{let} form with lexical binding enabled), then
|
||||
@code{defvar} sets the dynamic value. The lexical binding remains in
|
||||
effect until its binding construct exits. @xref{Variable Scoping}.
|
||||
If @var{symbol} is already let bound (e.g., if the @code{defvar}
|
||||
form occurs in a @code{let} form), then @code{defvar} sets the toplevel
|
||||
default value, like @code{set-default-toplevel-value}.
|
||||
The let binding remains in effect until its binding construct exits.
|
||||
@xref{Variable Scoping}.
|
||||
|
||||
@cindex @code{eval-defun}, and @code{defvar} forms
|
||||
@cindex @code{eval-last-sexp}, and @code{defvar} forms
|
||||
|
|
|
|||
|
|
@ -759,15 +759,6 @@ column and total width (@pxref{Coordinates and Windows}). The optional
|
|||
argument @var{round} behaves as it does for @code{window-total-height}.
|
||||
@end defun
|
||||
|
||||
@defun window-max-characters-per-line &optional window face
|
||||
The maximum width of a line that can be displayed in a window (without
|
||||
breaking the line) depends on many things, like the font used on the
|
||||
line, and whether there are fringes around the window. This
|
||||
convenience function can be used to calculate that number. If
|
||||
@var{window} isn't given, this defaults to the currently selected
|
||||
window. if @var{var} isn't given, the @code{default} face is used.
|
||||
@end defun
|
||||
|
||||
@defun window-total-size &optional window horizontal round
|
||||
This function returns either the total height in lines or the total
|
||||
width in columns of the window @var{window}. If @var{horizontal} is
|
||||
|
|
@ -838,14 +829,18 @@ This function returns the height, in lines, of the body of window
|
|||
@var{window}. If @var{window} is omitted or @code{nil}, it defaults to
|
||||
the selected window; otherwise it must be a live window.
|
||||
|
||||
If the optional argument @var{pixelwise} is non-@code{nil}, this
|
||||
function returns the body height of @var{window} counted in pixels.
|
||||
The optional argument @var{pixelwise} defines the units to use for the
|
||||
height. If @code{nil}, return the body height of @var{window} in
|
||||
characters, rounded down to the nearest integer, if necessary. This
|
||||
means that if a line at the bottom of the text area is only partially
|
||||
visible, that line is not counted. It also means that the height of a
|
||||
window's body can never exceed its total height as returned by
|
||||
@code{window-total-height}.
|
||||
|
||||
If @var{pixelwise} is @code{nil}, the return value is rounded down to
|
||||
the nearest integer, if necessary. This means that if a line at the
|
||||
bottom of the text area is only partially visible, that line is not
|
||||
counted. It also means that the height of a window's body can never
|
||||
exceed its total height as returned by @code{window-total-height}.
|
||||
If @var{pixelwise} is @code{remap} and the default face is remapped
|
||||
(@pxref{Face Remapping}), use the remapped face to determine the
|
||||
character height. For any other non-@code{nil} value, return the
|
||||
height in pixels.
|
||||
@end defun
|
||||
|
||||
@cindex window body width
|
||||
|
|
@ -866,14 +861,18 @@ This function returns the width, in columns, of the body of window
|
|||
@var{window}. If @var{window} is omitted or @code{nil}, it defaults to
|
||||
the selected window; otherwise it must be a live window.
|
||||
|
||||
If the optional argument @var{pixelwise} is non-@code{nil}, this
|
||||
function returns the body width of @var{window} in units of pixels.
|
||||
The optional argument @var{pixelwise} defines the units to use for the
|
||||
width. If @code{nil}, return the body width of @var{window} in
|
||||
characters, rounded down to the nearest integer, if necessary. This
|
||||
means that if a column on the right of the text area is only partially
|
||||
visible, that column is not counted. It also means that the width of
|
||||
a window's body can never exceed its total width as returned by
|
||||
@code{window-total-width}.
|
||||
|
||||
If @var{pixelwise} is @code{nil}, the return value is rounded down to
|
||||
the nearest integer, if necessary. This means that if a column on the
|
||||
right of the text area is only partially visible, that column is not
|
||||
counted. It also means that the width of a window's body can never
|
||||
exceed its total width as returned by @code{window-total-width}.
|
||||
If @var{pixelwise} is @code{remap} and the default face is remapped
|
||||
(@pxref{Face Remapping}), use the remapped face to determine the
|
||||
character width. For any other non-@code{nil} value, return the width
|
||||
in pixels.
|
||||
@end defun
|
||||
|
||||
@cindex window body size
|
||||
|
|
@ -2845,6 +2844,11 @@ the function specified in @code{pop-up-frame-function}
|
|||
the newly created frame's parameters.
|
||||
@end defun
|
||||
|
||||
@defun display-buffer-full-frame buffer alist
|
||||
This function displays the buffer on the current frame, deleting all
|
||||
other windows so that it takes up the full frame.
|
||||
@end defun
|
||||
|
||||
@defun display-buffer-in-child-frame buffer alist
|
||||
This function tries to display @var{buffer} in a child frame
|
||||
(@pxref{Child Frames}) of the selected frame, either reusing an
|
||||
|
|
@ -3300,6 +3304,13 @@ window has at least that many columns. If the value is @code{nil},
|
|||
that means not to split this way.
|
||||
@end defopt
|
||||
|
||||
@defopt display-buffer-avoid-small-windows
|
||||
If non-@code{nil}, this should be a number. Windows that have fewer
|
||||
lines than that will be avoided when choosing an existing window. The
|
||||
value is interpreted in units of the frame's canonical line height,
|
||||
like @code{window-total-height} does (@pxref{Window Sizes}).
|
||||
@end defopt
|
||||
|
||||
@defopt even-window-sizes
|
||||
This variable, if non-@code{nil}, causes @code{display-buffer} to even
|
||||
window sizes whenever it reuses an existing window, and that window is
|
||||
|
|
@ -4173,6 +4184,13 @@ ignore this option, for example, when there is only one buffer left
|
|||
these functions can switch to.
|
||||
@end defopt
|
||||
|
||||
@defopt switch-to-prev-buffer-skip-regexp
|
||||
This user option should be either a regular expression or a list of
|
||||
regular expressions. Buffers whose names match one of those regular
|
||||
expressions will be ignored by @code{switch-to-prev-buffer} and
|
||||
@code{switch-to-next-buffer} (except when there's no other buffer to
|
||||
switch to).
|
||||
@end defopt
|
||||
|
||||
@node Dedicated Windows
|
||||
@section Dedicated Windows
|
||||
|
|
@ -5508,7 +5526,7 @@ pixels, rather than in units of the normal line height.
|
|||
@end example
|
||||
@end defun
|
||||
|
||||
@defun set-window-vscroll window lines &optional pixels-p
|
||||
@defun set-window-vscroll window lines &optional pixels-p preserve-vscroll-p
|
||||
This function sets @var{window}'s vertical scroll position to
|
||||
@var{lines}. If @var{window} is @code{nil}, the selected window is
|
||||
used. The argument @var{lines} should be zero or positive; if not, it
|
||||
|
|
@ -5530,6 +5548,12 @@ The return value is the result of this rounding.
|
|||
|
||||
If @var{pixels-p} is non-@code{nil}, @var{lines} specifies a number of
|
||||
pixels. In this case, the return value is @var{lines}.
|
||||
|
||||
Normally, the vscroll does not take effect on windows that aren't the
|
||||
@code{minibuffer-scroll-window} or the selected window when the
|
||||
mini-window is resized (@pxref{Minibuffer Windows}). This ``frozen''
|
||||
behavior is disabled when the @var{preserve-vscroll-p} parameter is
|
||||
non-@code{nil}, which means to set the vscroll as usual.
|
||||
@end defun
|
||||
|
||||
@defvar auto-window-vscroll
|
||||
|
|
@ -6123,11 +6147,10 @@ configuration on the current frame.
|
|||
This function returns @code{t} if @var{object} is a window configuration.
|
||||
@end defun
|
||||
|
||||
@defun compare-window-configurations config1 config2
|
||||
This function compares two window configurations as regards the
|
||||
structure of windows, but ignores the values of point and the
|
||||
saved scrolling positions---it can return @code{t} even if those
|
||||
aspects differ.
|
||||
@defun window-configuration-equal-p config1 config2
|
||||
This function says whether two window configurations have the same
|
||||
window layout, but ignores the values of point and the saved scrolling
|
||||
positions---it can return @code{t} even if those aspects differ.
|
||||
@end defun
|
||||
|
||||
@defun window-configuration-frame config
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
.\" See section COPYING for copyright and redistribution information.
|
||||
.TH EMACS 1 "2021-09-28" "GNU Emacs @version@" "GNU"
|
||||
.TH EMACS 1 "2022-06-07" "GNU Emacs @version@" "GNU"
|
||||
.
|
||||
.
|
||||
.SH NAME
|
||||
|
|
@ -117,6 +117,10 @@ Load
|
|||
.IR user 's
|
||||
init file.
|
||||
.TP
|
||||
.BI \-\-init\-directory= "directory"
|
||||
Start emacs with user-emacs-directory set to
|
||||
.IR directory .
|
||||
.TP
|
||||
.BI \-t " file\fR,\fP " \-\-terminal= "file"
|
||||
Use specified
|
||||
.I file
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
.\" See section COPYING for copyright and redistribution information.
|
||||
.TH ETAGS 1 "2021-03-30" "GNU Tools" "GNU"
|
||||
.TH ETAGS 1 "2022-06-10" "GNU Tools" "GNU"
|
||||
.de BP
|
||||
.sp
|
||||
.ti -.2i
|
||||
|
|
@ -122,7 +122,9 @@ current file. Only \fBetags\fP accepts this option.
|
|||
.B \-I, \-\-ignore\-indentation
|
||||
Don't rely on indentation as much as we normally do. Currently, this
|
||||
means not to assume that a closing brace in the first column is the
|
||||
final brace of a function or structure definition in C and C++.
|
||||
final brace of a function or structure definition in C and C++. This
|
||||
is important for code that doesn't observe the GNU Coding conventions
|
||||
of placing only top-level braces in column zero.
|
||||
.TP
|
||||
\fB\-l\fP \fIlanguage\fP, \fB\-\-language=\fIlanguage\fP
|
||||
Parse the following files according to the given language. More than
|
||||
|
|
|
|||
|
|
@ -795,13 +795,7 @@ and interface. Example:
|
|||
(dbus-get-all-managed-objects
|
||||
:session "org.gnome.SettingsDaemon" "/")
|
||||
|
||||
@result{} (("/org/gnome/SettingsDaemon/MediaKeys"
|
||||
("org.gnome.SettingsDaemon.MediaKeys")
|
||||
("org.freedesktop.DBus.Peer")
|
||||
("org.freedesktop.DBus.Introspectable")
|
||||
("org.freedesktop.DBus.Properties")
|
||||
("org.freedesktop.DBus.ObjectManager"))
|
||||
("/org/gnome/SettingsDaemon/Power"
|
||||
@result{} (("/org/gnome/SettingsDaemon/Power"
|
||||
("org.gnome.SettingsDaemon.Power.Keyboard")
|
||||
("org.gnome.SettingsDaemon.Power.Screen")
|
||||
("org.gnome.SettingsDaemon.Power"
|
||||
|
|
|
|||
|
|
@ -1742,23 +1742,6 @@ You will need an implementation of TeX for Windows.
|
|||
A number of implementations are listed on the
|
||||
@uref{http://www.tug.org/interest.html#free, TeX Users Group} website.
|
||||
|
||||
@menu
|
||||
* AUCTeX::
|
||||
@end menu
|
||||
|
||||
@node AUCTeX
|
||||
@subsection AUCTeX
|
||||
@cindex auctex, precompiled for Windows
|
||||
@cindex latex
|
||||
@cindex preview-latex
|
||||
|
||||
AUCTeX is an Emacs package for writing LaTeX files, which also
|
||||
includes preview-latex, an Emacs mode for previewing the formatted
|
||||
contents of LaTeX documents. Pre-compiled versions for Windows are
|
||||
available from
|
||||
@uref{https://www.gnu.org/software/auctex/download-for-windows.html, the
|
||||
AUCTeX site}.
|
||||
|
||||
@node Spell check
|
||||
@section How do I perform spell checks?
|
||||
@cindex spell checking
|
||||
|
|
|
|||
|
|
@ -9,10 +9,9 @@
|
|||
|
||||
@copying
|
||||
Copyright @copyright{} 2001--2022 Free Software Foundation, Inc.@*
|
||||
Copyright @copyright{} 1994, 1995, 1996, 1997, 1998, 1999, 2000
|
||||
Reuven M. Lerner@*
|
||||
Copyright @copyright{} 1992, 1993 Steven Byrnes@*
|
||||
Copyright @copyright{} 1990, 1991, 1992 Joseph Brian Wells@*
|
||||
Copyright @copyright{} 1994--2000 Reuven M. Lerner@*
|
||||
Copyright @copyright{} 1992--1993 Steven Byrnes@*
|
||||
Copyright @copyright{} 1990--1992 Joseph Brian Wells@*
|
||||
|
||||
@quotation
|
||||
This list of frequently asked questions about GNU Emacs with answers
|
||||
|
|
@ -882,10 +881,11 @@ divergent TECO command sets and key bindings at MIT, and completed by
|
|||
RMS.
|
||||
|
||||
Many people have said that TECO code looks a lot like line noise; you
|
||||
can read more at @uref{news:alt.lang.teco}. Someone has written a TECO
|
||||
implementation in Emacs Lisp (to find it, see @ref{Packages that do not
|
||||
come with Emacs}); it would be an interesting project to run the
|
||||
original TECO Emacs inside of Emacs.
|
||||
can read more on
|
||||
@uref{https://en.wikipedia.org/wiki/TECO_(text_editor), Wikipedia}.
|
||||
Someone has written a TECO implementation in Emacs Lisp (to find it,
|
||||
see @ref{Packages that do not come with Emacs}); it would be an
|
||||
interesting project to run the original TECO Emacs inside of Emacs.
|
||||
|
||||
@cindex Why Emacs?
|
||||
For some not-so-serious alternative reasons for Emacs to have that
|
||||
|
|
@ -3712,7 +3712,6 @@ information is available from
|
|||
* Compose Character::
|
||||
* Binding combinations of modifiers and function keys::
|
||||
* Meta key does not work in xterm::
|
||||
* SPC no longer completes file names::
|
||||
@end menu
|
||||
|
||||
@node Binding keys to commands
|
||||
|
|
@ -4157,10 +4156,6 @@ If there is an @code{rlogin} connection between @code{xterm} and Emacs, the
|
|||
@samp{-8} argument may need to be given to rlogin to make it pass all 8 bits
|
||||
of every character.
|
||||
|
||||
@item
|
||||
If Emacs is running on Ultrix, it is reported that evaluating
|
||||
@code{(set-input-mode t nil)} helps.
|
||||
|
||||
@item
|
||||
If all else fails, you can make @code{xterm} generate @kbd{@key{ESC} W} when
|
||||
you type @kbd{M-W}, which is the same conversion Emacs would make if it
|
||||
|
|
@ -4186,22 +4181,6 @@ You might have to replace @samp{Meta} with @samp{Alt}.
|
|||
|
||||
@end itemize
|
||||
|
||||
@node SPC no longer completes file names
|
||||
@section Why doesn't @key{SPC} complete file names anymore?
|
||||
@cindex @kbd{SPC} file name completion
|
||||
|
||||
Starting with Emacs 22.1, @kbd{SPC} no longer completes file names in
|
||||
the minibuffer, so that file names with embedded spaces could be typed
|
||||
without the need to quote the spaces.
|
||||
|
||||
You can get the old behavior by binding @kbd{SPC} to
|
||||
@code{minibuffer-complete-word} in the minibuffer, as follows:
|
||||
|
||||
@lisp
|
||||
(define-key minibuffer-local-filename-completion-map (kbd "SPC")
|
||||
'minibuffer-complete-word)
|
||||
@end lisp
|
||||
|
||||
@c ------------------------------------------------------------
|
||||
@node Alternate character sets
|
||||
@chapter Alternate character sets
|
||||
|
|
@ -4295,75 +4274,6 @@ add the following line to your @file{~/.emacs}:
|
|||
(setq ps-multibyte-buffer 'bdf-font-except-latin)
|
||||
@end lisp
|
||||
|
||||
A few additional steps are necessary for MS-Windows; they are listed
|
||||
below.
|
||||
|
||||
First, make sure @emph{all} the directories with BDF font files are
|
||||
mentioned in @code{bdf-directory-list}. On Unix and GNU/Linux
|
||||
systems, one normally runs @kbd{make install} to install the BDF fonts
|
||||
in the same directory. By contrast, Windows users typically don't run
|
||||
the Intlfonts installation command, but unpack the distribution in
|
||||
some directory, which leaves the BDF fonts in its subdirectories. For
|
||||
example, assume that you unpacked Intlfonts in @file{C:/Intlfonts};
|
||||
then you should set @code{bdf-directory-list} as follows:
|
||||
|
||||
@lisp
|
||||
(setq bdf-directory-list
|
||||
'("C:/Intlfonts/Asian"
|
||||
"C:/Intlfonts/Chinese" "C:/Intlfonts/Chinese.X"
|
||||
"C:/Intlfonts/Chinese.BIG" "C:/Intlfonts/Ethiopic"
|
||||
"C:/Intlfonts/European" "C:/Intlfonts/European.BIG"
|
||||
"C:/Intlfonts/Japanese" "C:/Intlfonts/Japanese.X"
|
||||
"C:/Intlfonts/Japanese.BIG" "C:/Intlfonts/Korean.X"
|
||||
"C:/Intlfonts/Misc"))
|
||||
@end lisp
|
||||
|
||||
@cindex @code{w32-bdf-filename-alist}
|
||||
@cindex @code{w32-find-bdf-fonts}
|
||||
Next, you need to set up the variable @code{w32-bdf-filename-alist} to
|
||||
an alist of the BDF fonts and their corresponding file names.
|
||||
Assuming you have set @code{bdf-directory-list} to name all the
|
||||
directories with the BDF font files, the following Lisp snippet will
|
||||
set up @code{w32-bdf-filename-alist}:
|
||||
|
||||
@lisp
|
||||
(setq w32-bdf-filename-alist
|
||||
(w32-find-bdf-fonts bdf-directory-list))
|
||||
@end lisp
|
||||
|
||||
Now, create fontsets for the BDF fonts:
|
||||
|
||||
@smallexample
|
||||
(create-fontset-from-fontset-spec
|
||||
"-*-fixed-medium-r-normal-*-16-*-*-*-c-*-fontset-bdf,
|
||||
japanese-jisx0208:-*-*-medium-r-normal-*-16-*-*-*-c-*-jisx0208.1983-*,
|
||||
katakana-jisx0201:-*-*-medium-r-normal-*-16-*-*-*-c-*-jisx0201*-*,
|
||||
latin-jisx0201:-*-*-medium-r-normal-*-16-*-*-*-c-*-jisx0201*-*,
|
||||
japanese-jisx0208-1978:-*-*-medium-r-normal-*-16-*-*-*-c-*-jisx0208.1978-*,
|
||||
thai-tis620:-misc-fixed-medium-r-normal--16-160-72-72-m-80-tis620.2529-1,
|
||||
lao:-misc-fixed-medium-r-normal--16-160-72-72-m-80-MuleLao-1,
|
||||
tibetan-1-column:-TibMdXA-fixed-medium-r-normal--16-160-72-72-m-80-MuleTibetan-1,
|
||||
ethiopic:-Admas-Ethiomx16f-Medium-R-Normal--16-150-100-100-M-160-Ethiopic-Unicode,
|
||||
tibetan:-TibMdXA-fixed-medium-r-normal--16-160-72-72-m-160-MuleTibetan-0")
|
||||
@end smallexample
|
||||
|
||||
Many of the international bdf fonts from Intlfonts are type 0, and
|
||||
therefore need to be added to font-encoding-alist:
|
||||
|
||||
@lisp
|
||||
(setq font-encoding-alist
|
||||
(append '(("MuleTibetan-0" (tibetan . 0))
|
||||
("GB2312" (chinese-gb2312 . 0))
|
||||
("JISX0208" (japanese-jisx0208 . 0))
|
||||
("JISX0212" (japanese-jisx0212 . 0))
|
||||
("VISCII" (vietnamese-viscii-lower . 0))
|
||||
("KSC5601" (korean-ksc5601 . 0))
|
||||
("MuleArabic-0" (arabic-digit . 0))
|
||||
("MuleArabic-1" (arabic-1-column . 0))
|
||||
("MuleArabic-2" (arabic-2-column . 0)))
|
||||
font-encoding-alist))
|
||||
@end lisp
|
||||
|
||||
You can now use the Emacs font menu to select the @samp{bdf: 16-dot medium}
|
||||
fontset, or you can select it by setting the default font in your
|
||||
@file{~/.emacs}:
|
||||
|
|
@ -4372,7 +4282,6 @@ fontset, or you can select it by setting the default font in your
|
|||
(set-frame-font "fontset-bdf")
|
||||
@end lisp
|
||||
|
||||
|
||||
@c ------------------------------------------------------------
|
||||
@node Mail and news
|
||||
@chapter Mail and news
|
||||
|
|
|
|||
|
|
@ -1758,14 +1758,6 @@ alias arg=blah
|
|||
function arg () @{ blah $* @}
|
||||
@end example
|
||||
|
||||
@item @samp{for i in 1 2 3 @{ grep -q a b && *echo has it @} | wc -l} outputs result after prompt
|
||||
|
||||
In fact, piping to a process from a looping construct doesn't work in
|
||||
general. If I change the call to @code{eshell-copy-handles} in
|
||||
@code{eshell-rewrite-for-command} to use @code{eshell-protect}, it seems
|
||||
to work, but the output occurs after the prompt is displayed. The whole
|
||||
structured command thing is too complicated at present.
|
||||
|
||||
@item Pcomplete sometimes gets stuck
|
||||
|
||||
You press @key{TAB}, but no completions appear, even though the
|
||||
|
|
|
|||
|
|
@ -713,6 +713,7 @@ be passed to the program.
|
|||
|
||||
@node Inline Query Expansion
|
||||
@section Inline Query Expansion
|
||||
@subsection Inline Query Expansion Using a Key Binding
|
||||
|
||||
Inline query expansion is a powerful method to get completion from
|
||||
your directory servers. The most common usage is for expanding names
|
||||
|
|
@ -885,6 +886,29 @@ An error is signaled. The expansion aborts.
|
|||
Default is @code{select}
|
||||
@end defvar
|
||||
|
||||
@subsection Inline Query Expansion Using completion-at-point
|
||||
|
||||
In addition to providing a dedicated EUDC function for binding to a
|
||||
key shortcut (@pxref{Inline Query Expansion}), EUDC also provides a
|
||||
function to contribute search results to the Emacs in-buffer
|
||||
completion system available via the function
|
||||
@code{completion-at-point} (@pxref{Identifier
|
||||
Inquiries,,,maintaining}) in @code{message-mode} buffers
|
||||
(@pxref{Top,Message,, message, Message}). When using this mechanism,
|
||||
queries are made in the multi-server query mode of operation
|
||||
(@pxref{Multi-server Queries}).
|
||||
|
||||
When a buffer in @code{message-mode} is created, EUDC's inline
|
||||
expansion function is automatically added to the variable
|
||||
@code{completion-at-point-functions}. As a result, whenever
|
||||
@code{completion-at-point} is invoked in a @code{message-mode} buffer,
|
||||
EUDC will be queried for email addresses matching the words before
|
||||
point. Since this will be useful only when editing specific message
|
||||
header fields that require specifying one or more email addresses, an
|
||||
additional check is performed whether point is actually in one of
|
||||
those header fields. Thus, any matching email addresses will be
|
||||
offered for completion in suitable message header fields only, and not
|
||||
in other places, like for example the body of the message.
|
||||
|
||||
|
||||
@node The Server Hotlist
|
||||
|
|
|
|||
|
|
@ -29685,10 +29685,9 @@ Gnus not to use @acronym{NOV}.
|
|||
|
||||
As the variables for the other back ends, there are
|
||||
@code{nndiary-nov-is-evil}, @code{nndir-nov-is-evil},
|
||||
@code{nnfolder-nov-is-evil}, @code{nnimap-nov-is-evil},
|
||||
@code{nnml-nov-is-evil}, and @code{nnspool-nov-is-evil}. Note that a
|
||||
non-@code{nil} value for @code{gnus-nov-is-evil} overrides all those
|
||||
variables.
|
||||
@code{nnfolder-nov-is-evil}, @code{nnml-nov-is-evil}, and
|
||||
@code{nnspool-nov-is-evil}. Note that a non-@code{nil} value for
|
||||
@code{gnus-nov-is-evil} overrides all those variables.
|
||||
@end table
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -5,9 +5,9 @@
|
|||
#+options: ':t toc:nil author:t email:t num:t
|
||||
#+startup: content
|
||||
|
||||
#+macro: stable-version 2.3.0
|
||||
#+macro: release-date 2022-04-01
|
||||
#+macro: development-version 2.4.0-dev
|
||||
#+macro: stable-version 2.4.0
|
||||
#+macro: release-date 2022-06-01
|
||||
#+macro: development-version 2.5.0-dev
|
||||
#+macro: file @@texinfo:@file{@@$1@@texinfo:}@@
|
||||
#+macro: space @@texinfo:@: @@
|
||||
#+macro: kbd @@texinfo:@kbd{@@$1@@texinfo:}@@
|
||||
|
|
@ -34,6 +34,10 @@ explicitly marked as such.
|
|||
|
||||
Current development target is {{{development-version}}}.
|
||||
|
||||
+ Homepage: https://protesilaos.com/emacs/modus-themes.
|
||||
+ Git repository: https://git.sr.ht/~protesilaos/modus-themes.
|
||||
+ Mailing list: https://lists.sr.ht/~protesilaos/modus-themes.
|
||||
|
||||
#+toc: headlines 8 insert TOC here, with eight headline levels
|
||||
|
||||
* COPYING
|
||||
|
|
@ -165,14 +169,10 @@ The themes are now ready to be used: [[#h:3f3c3728-1b34-437d-9d0c-b110f5b161a9][
|
|||
The ~modus-themes~ package is available from the GNU ELPA archive, which
|
||||
is configured by default.
|
||||
|
||||
Prior to querying any package archive, make sure to have updated the
|
||||
index, with {{{kbd(M-x package-refresh-contents)}}}. Then all you need to do
|
||||
Prior to querying any package archive, make sure to update the index,
|
||||
with {{{kbd(M-x package-refresh-contents)}}}. Then all you need to do
|
||||
is type {{{kbd(M-x package-install)}}} and specify the ~modus-themes~.
|
||||
|
||||
Note that older versions of the themes used to be distributed as
|
||||
standalone packages. This practice has been discontinued starting with
|
||||
version 1.0.0 of this project.
|
||||
|
||||
Once installed, the themes are ready to be used: [[#h:3f3c3728-1b34-437d-9d0c-b110f5b161a9][Enable and load]].
|
||||
|
||||
** Install on GNU/Linux
|
||||
|
|
@ -211,6 +211,34 @@ guix package -i emacs-modus-themes
|
|||
|
||||
They are now ready to be used: [[#h:3f3c3728-1b34-437d-9d0c-b110f5b161a9][Enable and load]].
|
||||
|
||||
** Dealing with byte compilation errors
|
||||
:properties:
|
||||
:custom_id: h:e6268471-e847-4c9d-998f-49a83257b7f1
|
||||
:end:
|
||||
|
||||
From time to time, we receive bug reports pertaining to errors with byte
|
||||
compilation. These seldom have to do with faulty code in the themes: it
|
||||
might be a shortcoming of =package.el=, some regression in the current
|
||||
development target of Emacs, a misconfiguration in an otherwise exotic
|
||||
setup, and the like.
|
||||
|
||||
The common solution with a stable version of Emacs is to:
|
||||
|
||||
1. Delete the =modus-themes= package.
|
||||
2. Close the current Emacs session.
|
||||
3. Install the =modus-themes= again.
|
||||
|
||||
For those building Emacs directly from source, the solution may involve
|
||||
reverting to an earlier commit in emacs.git.
|
||||
|
||||
At any rate, if you encounter such an issue please report it: we will
|
||||
either fix the bug on our end if it is truly ours, or help forward it to
|
||||
the relevant upstream maintainer. Whatever you do, please understand
|
||||
that a build failure does not mean we are necessarily doing something
|
||||
wrong.
|
||||
|
||||
[[#h:6536c8d5-3f98-43ab-a787-b94120e735e8][Issues you can help with]].
|
||||
|
||||
* Enable and load
|
||||
:properties:
|
||||
:custom_id: h:3f3c3728-1b34-437d-9d0c-b110f5b161a9
|
||||
|
|
@ -4053,6 +4081,44 @@ comments are gray. Regexp constructs are adapted accordingly.
|
|||
(set-face-attribute 'font-lock-warning-face nil :inherit 'modus-themes-bold :foreground red-nuanced-fg)))
|
||||
#+end_src
|
||||
|
||||
** Custom hl-todo colors
|
||||
:PROPERTIES:
|
||||
:CUSTOM_ID: h:2ef83a21-2f0a-441e-9634-473feb940743
|
||||
:END:
|
||||
|
||||
The =hl-todo= package provides the user option ~hl-todo-keyword-faces~:
|
||||
it specifies a pair of keyword and corresponding color value. The Modus
|
||||
themes configure that option in the interest of legibility. While this
|
||||
works for our purposes, users may still prefer to apply their custom
|
||||
values, in which case the following approach is necessary:
|
||||
|
||||
#+begin_src emacs-lisp
|
||||
(defun my-modus-themes-hl-todo-faces ()
|
||||
(setq hl-todo-keyword-faces '(("TODO" . "#ff0000")
|
||||
("HACK" . "#ffff00")
|
||||
("XXX" . "#00ffff")
|
||||
("NOTE" . "#ff00ff"))))
|
||||
|
||||
(add-hook 'modus-themes-after-load-theme-hook #'my-modus-themes-hl-todo-faces)
|
||||
#+end_src
|
||||
|
||||
Or include a ~let~ form, if needed:
|
||||
|
||||
#+begin_src emacs-lisp
|
||||
(defun my-modus-themes-hl-todo-faces ()
|
||||
(let ((red "#ff0000")
|
||||
(blue "#0000ff"))
|
||||
(setq hl-todo-keyword-faces `(("TODO" . ,blue)
|
||||
("HACK" . ,red)
|
||||
("XXX" . ,red)
|
||||
("NOTE" . ,blue)))))
|
||||
|
||||
(add-hook 'modus-themes-after-load-theme-hook #'my-modus-themes-hl-todo-faces)
|
||||
#+end_src
|
||||
|
||||
Normally, we do not touch user options, though this is an exception:
|
||||
otherwise the defaults are not always legible.
|
||||
|
||||
* Face coverage
|
||||
:properties:
|
||||
:custom_id: h:a9c8f29d-7f72-4b54-b74b-ddefe15d6a19
|
||||
|
|
@ -4098,6 +4164,7 @@ have lots of extensions, so the "full support" may not be 100% true…
|
|||
+ breakpoint (provided by the built-in {{{file(gdb-mi.el)}}} library)
|
||||
+ calendar and diary
|
||||
+ calfw
|
||||
+ calibredb
|
||||
+ centaur-tabs
|
||||
+ cfrs
|
||||
+ change-log and log-view (such as ~vc-print-log~, ~vc-print-root-log~)
|
||||
|
|
@ -4112,6 +4179,7 @@ have lots of extensions, so the "full support" may not be 100% true…
|
|||
+ completions
|
||||
+ consult
|
||||
+ corfu
|
||||
+ corfu-quick
|
||||
+ counsel*
|
||||
+ counsel-css
|
||||
+ cov
|
||||
|
|
@ -4146,6 +4214,7 @@ have lots of extensions, so the "full support" may not be 100% true…
|
|||
+ easy-jekyll
|
||||
+ ebdb
|
||||
+ ediff
|
||||
+ ein (Emacs IPython Notebook)
|
||||
+ eglot
|
||||
+ el-search
|
||||
+ eldoc-box
|
||||
|
|
@ -4344,6 +4413,7 @@ have lots of extensions, so the "full support" may not be 100% true…
|
|||
+ tomatinho
|
||||
+ transient (pop-up windows such as Magit's)
|
||||
+ trashed
|
||||
+ tree-sitter
|
||||
+ treemacs
|
||||
+ tty-menu
|
||||
+ tuareg
|
||||
|
|
@ -4357,6 +4427,7 @@ have lots of extensions, so the "full support" may not be 100% true…
|
|||
+ visible-mark
|
||||
+ visual-regexp
|
||||
+ vterm
|
||||
+ vundo
|
||||
+ wcheck-mode
|
||||
+ web-mode
|
||||
+ wgrep
|
||||
|
|
@ -4398,6 +4469,7 @@ supported by the themes.
|
|||
+ dtache
|
||||
+ easy-kill
|
||||
+ edit-indirect
|
||||
+ egerrit
|
||||
+ elfeed-summary
|
||||
+ evil-owl
|
||||
+ flyspell-correct
|
||||
|
|
@ -4432,40 +4504,6 @@ supported by the themes.
|
|||
This section covers information that may be of interest to users of
|
||||
individual packages.
|
||||
|
||||
** Note on avy hints
|
||||
:properties:
|
||||
:custom_id: h:2fdce705-6de7-44e6-ab7f-18f59af99e01
|
||||
:end:
|
||||
|
||||
Hints can appear everywhere, in wildly varying contexts, hence, their
|
||||
appearance, by necessity, is a compromise. However, there are various
|
||||
options for making them stand out. First is dimming the surroundings:
|
||||
|
||||
#+begin_src emacs-lisp
|
||||
(setq avy-background t)
|
||||
#+end_src
|
||||
|
||||
Dimming works well when you find it difficult to spot hints, any hint.
|
||||
Second is limiting the number of faces used by hints:
|
||||
|
||||
#+begin_src emacs-lisp
|
||||
(setq avy-lead-faces
|
||||
'(avy-lead-face
|
||||
avy-lead-face-1
|
||||
avy-lead-face-1
|
||||
avy-lead-face-1
|
||||
avy-lead-face-1))
|
||||
#+end_src
|
||||
|
||||
Limiting the number of faces works well with longer hints when you find
|
||||
it difficult to identify individual hints, especially with hints
|
||||
touching each other. The first character of the hint will have an
|
||||
intense color, the remaining ones the same neutral color.
|
||||
|
||||
Third is preferring commands that produce fewer candidates. Fewer hints
|
||||
is less noise: ~avy-goto-char-timer~ is an excellent alternative to
|
||||
~avy-goto-char~.
|
||||
|
||||
** Note on calendar.el weekday and weekend colors
|
||||
:properties:
|
||||
:custom_id: h:b2db46fb-32f4-44fd-8e11-d2b261cf51ae
|
||||
|
|
@ -4495,6 +4533,72 @@ weekends uniformly.
|
|||
For changes to take effect, the Calendar buffer needs to be generated
|
||||
anew.
|
||||
|
||||
** Note on git-gutter in Doom Emacs
|
||||
:PROPERTIES:
|
||||
:CUSTOM_ID: h:a195e37c-e58c-4148-b254-8ba1ed8a731a
|
||||
:END:
|
||||
|
||||
The =git-gutter= and =git-gutter-fr= packages default to drawing bitmaps
|
||||
for the indicators they display (e.g. bitmap of a plus sign for added
|
||||
lines). In Doom Emacs, these bitmaps are replaced with contiguous lines
|
||||
which may look nicer, but require a change to the foreground of the
|
||||
relevant faces to yield the desired colour combinations.
|
||||
|
||||
Since this is Doom-specific, we urge users to apply changes in their
|
||||
local setup. Below is some sample code, based on what we cover at
|
||||
length elsewhere in this manual:
|
||||
|
||||
[[#h:f4651d55-8c07-46aa-b52b-bed1e53463bb][Advanced customization]].
|
||||
|
||||
[[#h:51ba3547-b8c8-40d6-ba5a-4586477fd4ae][Face specs at scale using the themes' palette]].
|
||||
|
||||
#+begin_src emacs-lisp
|
||||
(defun my-modus-themes-custom-faces ()
|
||||
(modus-themes-with-colors
|
||||
(custom-set-faces
|
||||
;; Replace green with blue if you use `modus-themes-deuteranopia'.
|
||||
`(git-gutter-fr:added ((,class :foreground ,green-fringe-bg)))
|
||||
`(git-gutter-fr:deleted ((,class :foreground ,red-fringe-bg)))
|
||||
`(git-gutter-fr:modified ((,class :foreground ,yellow-fringe-bg))))))
|
||||
|
||||
(add-hook 'modus-themes-after-load-theme-hook #'my-modus-themes-custom-faces)
|
||||
#+end_src
|
||||
|
||||
If the above does not work, try this instead:
|
||||
|
||||
#+begin_src emacs-lisp
|
||||
(after! modus-themes
|
||||
(modus-themes-with-colors
|
||||
(custom-set-faces
|
||||
;; Replace green with blue if you use `modus-themes-deuteranopia'.
|
||||
`(git-gutter-fr:added ((,class :foreground ,green-fringe-bg)))
|
||||
`(git-gutter-fr:deleted ((,class :foreground ,red-fringe-bg)))
|
||||
`(git-gutter-fr:modified ((,class :foreground ,yellow-fringe-bg))))))
|
||||
#+end_src
|
||||
|
||||
Replace ~green-fringe-bg~ with ~blue-fringe-bg~ if you want to optimize
|
||||
for red-green color deficiency.
|
||||
|
||||
[[#h:3ed03a48-20d8-4ce7-b214-0eb7e4c79abe][Option for red-green color deficiency or deuteranopia]].
|
||||
|
||||
** Note on php-mode multiline comments
|
||||
:PROPERTIES:
|
||||
:CUSTOM_ID: h:d0a3157b-9c04-46e8-8742-5fb2a7ae8798
|
||||
:END:
|
||||
|
||||
Depending on your build of Emacs and/or the environment it runs in,
|
||||
multiline comments in PHP with the =php-mode= package use the
|
||||
~font-lock-doc-face~ instead of ~font-lock-comment-face~.
|
||||
|
||||
This seems to make all comments use the appropriate face:
|
||||
|
||||
#+begin_src emacs-lisp
|
||||
(defun my-multine-comments ()
|
||||
(setq-local c-doc-face-name 'font-lock-comment-face))
|
||||
|
||||
(add-hook 'php-mode-hook #'my-multine-comments)
|
||||
#+end_src
|
||||
|
||||
** Note on underlines in compilation buffers
|
||||
:properties:
|
||||
:custom_id: h:420f5a33-c7a9-4112-9b04-eaf2cbad96bd
|
||||
|
|
@ -4594,6 +4698,17 @@ elsewhere in this document. For example:
|
|||
|
||||
[[#h:51ba3547-b8c8-40d6-ba5a-4586477fd4ae][Face specs at scale using the themes' palette]].
|
||||
|
||||
To make the line thicker, set the height to be equal to the base font
|
||||
size instead of the one pixel we use. This is done by specifying a rate
|
||||
instead of an absolute number, as in =:height 1.0= versus =:height 1=.
|
||||
For example:
|
||||
|
||||
#+begin_src emacs-lisp
|
||||
(modus-themes-with-colors
|
||||
(custom-set-faces
|
||||
`(fill-column-indicator ((,class :height 1.0 :background ,bg-inactive :foreground ,bg-inactive)))))
|
||||
#+end_src
|
||||
|
||||
** Note on highlight-parentheses.el
|
||||
:PROPERTIES:
|
||||
:CUSTOM_ID: h:24bab397-dcb2-421d-aa6e-ec5bd622b913
|
||||
|
|
@ -5271,8 +5386,8 @@ and hints of green give us suitable shades of purple.
|
|||
|
||||
Due to the need of maintaining some difference in hueness between
|
||||
adjacent colors, it is not possible to make red, green, and yellow the
|
||||
primary colors, because blue could not be used to control their
|
||||
luminance and, thus the relevant space would shrink considerably.
|
||||
main colors, because blue cannot be used to control their luminance and,
|
||||
thus the relevant space will shrink considerably.
|
||||
|
||||
[[#h:5ce7ae2e-9348-4e55-b4cf-9302345b1826][Is the contrast ratio about adjacent colors?]]
|
||||
|
||||
|
|
@ -5508,8 +5623,8 @@ in which you can contribute to their ongoing development.
|
|||
|
||||
The ~modus-operandi~ and ~modus-vivendi~ themes are built into Emacs 28.
|
||||
|
||||
The source code of the themes is [[https://gitlab.com/protesilaos/modus-themes/][available on GitLab]], for the time
|
||||
being. A [[https://github.com/protesilaos/modus-themes/][mirror on GitHub]] is also on offer.
|
||||
The source code of the themes is [[https://git.sr.ht/~protesilaos/modus-themes][available on SourceHut]]. Or check the
|
||||
[[https://gitlab.com/protesilaos/modus-themes/][GitLab mirror (former main source)]] and the [[https://github.com/protesilaos/modus-themes/][GitHub mirror]].
|
||||
|
||||
An HTML version of this manual is provided as an extension of the
|
||||
[[https://protesilaos.com/emacs/modus-themes/][author's personal website]] (does not rely on any non-free code).
|
||||
|
|
@ -5520,7 +5635,10 @@ An HTML version of this manual is provided as an extension of the
|
|||
:end:
|
||||
#+cindex: Contributing
|
||||
|
||||
A few tasks you can help with:
|
||||
#+findex: modus-themes-report-bug
|
||||
A few tasks you can help with by sending an email to the general
|
||||
[[https://lists.sr.ht/~protesilaos/modus-themes][modus-themes public mailing list]] (or use the command
|
||||
~modus-themes-report-bug~).
|
||||
|
||||
+ Suggest refinements to packages that are covered.
|
||||
+ Report packages not covered thus far.
|
||||
|
|
@ -5528,7 +5646,8 @@ A few tasks you can help with:
|
|||
+ Help expand the documentation of covered-but-not-styled packages.
|
||||
+ Suggest refinements to the color palette.
|
||||
+ Help expand this document or any other piece of documentation.
|
||||
+ Merge requests for code refinements.
|
||||
+ Send patches for code refinements (if you need, ask me for help with
|
||||
Git---we all start out as beginners).
|
||||
|
||||
[[#h:111773e2-f26f-4b68-8c4f-9794ca6b9633][Patches require copyright assignment to the FSF]].
|
||||
|
||||
|
|
@ -5536,6 +5655,10 @@ It is preferable that your feedback includes some screenshots, GIFs, or
|
|||
short videos, as well as further instructions to reproduce a given
|
||||
setup. Though this is not a requirement.
|
||||
|
||||
#+findex: modus-themes-version
|
||||
Also consider mentioning the version of the themes you are using, such
|
||||
as by invoking the command ~modus-themes-version~.
|
||||
|
||||
Whatever you do, bear in mind the overarching objective of the Modus
|
||||
themes: to keep a contrast ratio that is greater or equal to 7:1 between
|
||||
background and foreground colors. If a compromise is ever necessary
|
||||
|
|
@ -5567,7 +5690,7 @@ will send you the assignment form for your past and future changes.
|
|||
|
||||
Please use your full legal name (in ASCII characters) as the subject
|
||||
line of the message.
|
||||
----------------------------------------------------------------------
|
||||
|
||||
REQUEST: SEND FORM FOR PAST AND FUTURE CHANGES
|
||||
|
||||
[What is the name of the program or package you're contributing to?]
|
||||
|
|
@ -5619,41 +5742,44 @@ The Modus themes are a collective effort. Every bit of work matters.
|
|||
Johansson, Basil L.{{{space()}}} Contovounesios, Björn Lindström,
|
||||
Carlo Zancanaro, Christian Tietze, Daniel Mendler, Eli Zaretskii,
|
||||
Fritz Grabo, Illia Ostapyshyn, Kévin Le Gouguec, Kostadin Ninev,
|
||||
Madhavan Krishnan, Markus Beppler, Matthew Stevenson, Mauro Aranda,
|
||||
Nicolas De Jaeghere, Philip Kaludercic, Pierre Téchoueyres, Rudolf
|
||||
Adamkovič, Stephen Gildea, Shreyas Ragavan, Stefan Kangas, Utkarsh
|
||||
Singh, Vincent Murphy, Xinglu Chen, Yuanchen Xie.
|
||||
Madhavan Krishnan, Manuel Giraud, Markus Beppler, Matthew Stevenson,
|
||||
Mauro Aranda, Nicolas De Jaeghere, Philip Kaludercic, Pierre
|
||||
Téchoueyres, Rudolf Adamkovič, Stephen Gildea, Shreyas Ragavan, Stefan
|
||||
Kangas, Utkarsh Singh, Vincent Murphy, Xinglu Chen, Yuanchen Xie.
|
||||
|
||||
+ Ideas and user feedback :: Aaron Jensen, Adam Porter, Adam Spiers,
|
||||
Adrian Manea, Alex Griffin, Alex Koen, Alex Peitsinis, Alexey Shmalko,
|
||||
Alok Singh, Anders Johansson, André Alexandre Gomes, Antonio Hernández
|
||||
Blas, Arif Rezai, Augusto Stoffel, Basil L.{{{space()}}}
|
||||
Contovounesios, Burgess Chang, Christian Tietze, Christopher Dimech,
|
||||
Damien Cassou, Daniel Mendler, Dario Gjorgjevski, David Edmondson,
|
||||
Davor Rotim, Divan Santana, Eliraz Kedmi, Emanuele Michele Alberto
|
||||
Monterosso, Farasha Euker, Feng Shu, Gautier Ponsinet, Gerry Agbobada,
|
||||
Gianluca Recchia, Guilherme Semente, Gustavo Barros, Hörmetjan Yiltiz,
|
||||
Ilja Kocken, Iris Garcia, Jeremy Friesen, Jerry Zhang, Johannes
|
||||
Grødem, John Haman, Jorge Morais, Joshua O'Connor, Julio
|
||||
C. Villasante, Kenta Usami, Kevin Fleming, Kévin Le Gouguec, Kostadin
|
||||
Ninev, Len Trigg, Lennart C. Karssen, Magne Hov, Manuel Uberti, Mark
|
||||
Bestley, Mark Burton, Markus Beppler, Mauro Aranda, Michael
|
||||
Alok Singh, Anders Johansson, André Alexandre Gomes, Andrew Tropin,
|
||||
Antonio Hernández Blas, Arif Rezai, Augusto Stoffel, Basil
|
||||
L.{{{space()}}} Contovounesios, Burgess Chang, Christian Tietze,
|
||||
Christopher Dimech, Christopher League, Damien Cassou, Daniel Mendler,
|
||||
Dario Gjorgjevski, David Edmondson, Davor Rotim, Divan Santana, Eliraz
|
||||
Kedmi, Emanuele Michele Alberto Monterosso, Farasha Euker, Feng Shu,
|
||||
Gautier Ponsinet, Gerry Agbobada, Gianluca Recchia, Gonçalo Marrafa,
|
||||
Guilherme Semente, Gustavo Barros, Hörmetjan Yiltiz, Ilja Kocken, Iris
|
||||
Garcia, Ivan Popovych, Jeremy Friesen, Jerry Zhang, Johannes Grødem,
|
||||
John Haman, Jorge Morais, Joshua O'Connor, Julio C. Villasante, Kenta
|
||||
Usami, Kevin Fleming, Kévin Le Gouguec, Kostadin Ninev, Len Trigg,
|
||||
Lennart C. Karssen, Magne Hov, Manuel Uberti, Mark Bestley, Mark
|
||||
Burton, Markus Beppler, Mauro Aranda, Maxime Tréca, Michael
|
||||
Goldenberg, Morgan Smith, Morgan Willcock, Murilo Pereira, Nicky van
|
||||
Foreest, Nicolas De Jaeghere, Paul Poloskov, Pengji Zhang, Pete
|
||||
Kazmier, Peter Wu, Philip Kaludercic, Pierre Téchoueyres, Robert
|
||||
Hepple, Roman Rudakov, Ryan Phillips, Rytis Paškauskas, Rudolf
|
||||
Adamkovič, Sam Kleinman, Samuel Culpepper, Saša Janiška, Shreyas
|
||||
Ragavan, Simon Pugnet, Tassilo Horn, Thibaut Verron, Thomas Heartman,
|
||||
Togan Muftuoglu, Tony Zorman, Trey Merkley, Tomasz Hołubowicz, Toon
|
||||
Claes, Uri Sharf, Utkarsh Singh, Vincent Foley. As well as users:
|
||||
Ben, CsBigDataHub1, Emacs Contrib, Eugene, Fourchaux, Fredrik,
|
||||
Moesasji, Nick, TheBlob42, Trey, bepolymathe, bit9tream, derek-upham,
|
||||
doolio, fleimgruber, gitrj95, iSeeU, jixiuf, okamsn, pRot0ta1p.
|
||||
Kazmier, Peter Wu, Philip Kaludercic, Pierre Téchoueyres, Przemysław
|
||||
Kryger, Robert Hepple, Roman Rudakov, Ryan Phillips, Rytis Paškauskas,
|
||||
Rudolf Adamkovič, Sam Kleinman, Samuel Culpepper, Saša Janiška,
|
||||
Shreyas Ragavan, Simon Pugnet, Tassilo Horn, Thibaut Verron, Thomas
|
||||
Heartman, Togan Muftuoglu, Tony Zorman, Trey Merkley, Tomasz
|
||||
Hołubowicz, Toon Claes, Uri Sharf, Utkarsh Singh, Vincent Foley. As
|
||||
well as users: Ben, CsBigDataHub1, Emacs Contrib, Eugene, Fourchaux,
|
||||
Fredrik, Moesasji, Nick, TheBlob42, Trey, bepolymathe, bit9tream,
|
||||
derek-upham, doolio, fleimgruber, gitrj95, iSeeU, jixiuf, okamsn,
|
||||
pRot0ta1p.
|
||||
|
||||
+ Packaging :: Basil L.{{{space()}}} Contovounesios, Eli Zaretskii, Glenn
|
||||
Morris, Mauro Aranda, Richard Stallman, Stefan Kangas (core Emacs),
|
||||
Stefan Monnier (GNU Elpa), André Alexandre Gomes, Dimakakos Dimos,
|
||||
Morgan Smith, Nicolas Goaziou (Guix), Dhavan Vaidya (Debian).
|
||||
+ Packaging :: Basil L.{{{space()}}} Contovounesios, Eli Zaretskii,
|
||||
Glenn Morris, Mauro Aranda, Richard Stallman, Stefan Kangas (core
|
||||
Emacs), Stefan Monnier (GNU Elpa), André Alexandre Gomes, Andrew
|
||||
Tropin, Dimakakos Dimos, Morgan Smith, Nicolas Goaziou (Guix), Dhavan
|
||||
Vaidya (Debian).
|
||||
|
||||
+ Inspiration for certain features :: Bozhidar Batsov (zenburn-theme),
|
||||
Fabrice Niessen (leuven-theme).
|
||||
|
|
@ -5663,7 +5789,7 @@ Jaeghere, and Omar Antolín Camarena for their long time contributions
|
|||
and insightful commentary on key aspects of the themes' design and/or
|
||||
aspects of their functionality.
|
||||
|
||||
* Meta
|
||||
* Other notes about the project
|
||||
:properties:
|
||||
:custom_id: h:13752581-4378-478c-af17-165b6e76bc1b
|
||||
:end:
|
||||
|
|
@ -5688,12 +5814,16 @@ of this sort):
|
|||
+ [[https://protesilaos.com/codelog/2021-06-02-modus-themes-org-agenda/][Introducing the variable modus-themes-org-agenda]] (2021-06-02)
|
||||
+ [[https://protesilaos.com/codelog/2022-01-02-review-modus-themes-org-habit-colours/][Modus themes: review of the org-habit graph colours]] (2022-01-02)
|
||||
+ [[https://protesilaos.com/codelog/2022-01-03-modus-themes-port-faq/][Re: VSCode or Vim ports of the Emacs modus-themes?]] (2022-01-03)
|
||||
+ [[https://protesilaos.com/codelog/2022-04-20-modus-themes-case-study-avy/][Modus themes: case study on Avy faces and colour combinations]] (2022-04-20)
|
||||
+ [[https://protesilaos.com/codelog/2022-04-21-modus-themes-colour-theory/][Emacs: colour theory and techniques used in the Modus themes]] (2022-04-21)
|
||||
|
||||
And here are the canonical sources of this project's documentation:
|
||||
And here are the canonical sources of this project:
|
||||
|
||||
+ Manual :: <https://protesilaos.com/emacs/modus-themes>
|
||||
+ Change Log :: <https://protesilaos.com/emacs/modus-themes-changelog>
|
||||
+ Screenshots :: <https://protesilaos.com/emacs/modus-themes-pictures>
|
||||
+ Git repository :: https://git.sr.ht/~protesilaos/modus-themes
|
||||
+ Mailing list :: https://lists.sr.ht/~protesilaos/modus-themes
|
||||
|
||||
* GNU Free Documentation License
|
||||
:properties:
|
||||
|
|
|
|||
|
|
@ -12442,7 +12442,7 @@ should in principle be exportable as a Beamer presentation.
|
|||
When =ignoreheading= is set, Org export ignores the entry's headline
|
||||
but not its content. This is useful for inserting content between
|
||||
frames. It is also useful for properly closing a =column=
|
||||
environment. @end itemize
|
||||
environment.
|
||||
|
||||
#+cindex: @samp{BEAMER_ACT}, property
|
||||
#+cindex: @samp{BEAMER_OPT}, property
|
||||
|
|
|
|||
|
|
@ -4478,6 +4478,11 @@ HP-UX SD depots
|
|||
@cindex @file{depot} file archive suffix
|
||||
@cindex file archive suffix @file{depot}
|
||||
|
||||
@item @samp{.epub} ---
|
||||
Electronic publications
|
||||
@cindex @file{epub} file archive suffix
|
||||
@cindex file archive suffix @file{epub}
|
||||
|
||||
@item @samp{.exe} ---
|
||||
Self extracting Microsoft Windows EXE files
|
||||
@cindex @file{exe} file archive suffix
|
||||
|
|
|
|||
|
|
@ -2025,7 +2025,7 @@ They are defined here anyway to allow sharing certain methods.
|
|||
@code{value} The value. Should not be accessed directly.
|
||||
|
||||
@item
|
||||
@code{init-value} Function that is responsable for setting the object's
|
||||
@code{init-value} Function that is responsible for setting the object's
|
||||
value. If bound, then this is called with the object as the only
|
||||
argument. Usually this is not bound, in which case the object's
|
||||
primary @code{transient-init-value} method is called instead.
|
||||
|
|
|
|||
38
etc/HELLO
38
etc/HELLO
|
|
@ -1,9 +1,11 @@
|
|||
Content-Type: text/enriched
|
||||
Text-Width: 70
|
||||
|
||||
This is a list of ways to say hello in various languages.
|
||||
It is not intended to be comprehensive, but to demonstrate
|
||||
some of the character sets that Emacs supports.
|
||||
This is a list of ways to write a <x-color><param>orange red</param>"hello"</x-color> greeting using
|
||||
various scripts. It is not intended to be comprehensive,
|
||||
but to demonstrate some of the character sets and writing
|
||||
systems that Emacs supports. Look for the script used to
|
||||
write your language, to see if it is supported.
|
||||
|
||||
|
||||
Non-ASCII examples:
|
||||
|
|
@ -11,7 +13,7 @@ Non-ASCII examples:
|
|||
Cześć!,</x-charset><x-charset><param>latin-iso8859-2</param> Dobrý den,</x-charset><x-charset><param>cyrillic-iso8859-5</param> Здравствуйте!,</x-charset><x-charset><param>greek-iso8859-7</param> Γειά σας,</x-charset> გამარჯობა
|
||||
Africa: <x-charset><param>ethiopic</param>ሠላም</x-charset>
|
||||
Middle/Near East:<x-charset><param>hebrew-iso8859-8</param> שָׁלוֹם,</x-charset> السّلام عليكم
|
||||
South Asia: નમસ્તે, नमस्ते, ನಮಸ್ಕಾರ, നമസ്കാരം, ଶୁଣିବେ,
|
||||
South Asia: નમસ્તે, नमस्ते, ನಮಸ್ಕಾರ, നമസ്കാരം, ନମସ୍କାର,
|
||||
ආයුබෝවන්, வணக்கம், నమస్కారం,<x-charset><param>tibetan</param> བཀྲ་ཤིས་བདེ་ལེགས༎</x-charset>
|
||||
South East Asia: ជំរាបសួរ,<x-charset><param>lao</param> ສະບາຍດີ,</x-charset> မင်္ဂလာပါ,<x-charset><param>thai-tis620</param> สวัสดีครับ,</x-charset><x-charset><param>vietnamese-viscii-lower</param> </x-charset><x-charset><param>vietnamese-viscii-upper</param>C</x-charset><x-charset><param>vietnamese-viscii-lower</param>hào bạn</x-charset>
|
||||
East Asia:<x-charset><param>chinese-gb2312</param> 你好,</x-charset><x-charset><param>chinese-big5-1</param> 早晨,</x-charset><x-charset><param>japanese-jisx0208</param> こんにちは,</x-charset><x-charset><param>korean-ksc5601</param> 안녕하세요</x-charset>
|
||||
|
|
@ -25,11 +27,14 @@ LANGUAGE (NATIVE NAME) HELLO
|
|||
Amharic (አማርኛ) ሠላም
|
||||
Arabic (العربيّة) السّلام عليكم
|
||||
Armenian (հայերեն) Բարև ձեզ
|
||||
Balinese (ᬅᬓ᭄ᬱᬭᬩᬮᬶ) ᬒᬁᬲ᭄ᬯᬲ᭄ᬢ᭄ᬬᬲ᭄ᬢᬸ
|
||||
Batak (ᯘᯮᯒᯗ᯲ᯅᯗᯂ᯲) ᯂᯬᯒᯘ᯲ / ᯔᯧᯐᯬᯀᯱᯐᯬᯀᯱ
|
||||
Belarusian (беларуская) Прывітанне
|
||||
Bengali (বাংলা) নমস্কার
|
||||
Brahmi (𑀩𑁆𑀭𑀸𑀳𑁆𑀫𑀻) 𑀦𑀫𑀲𑁆𑀢𑁂
|
||||
|
||||
Braille ⠓⠑⠇⠇⠕
|
||||
Buginese (ᨒᨚᨈᨑ) ᨖᨒᨚ
|
||||
Burmese (မြန်မာ) မင်္ဂလာပါ
|
||||
C printf (<x-color><param>orange red</param>"Hello, world!\n"</x-color>);
|
||||
Cham (ꨌꩌ) ꨦꨤꩌ ꨦꨁꨰ
|
||||
|
|
@ -38,6 +43,7 @@ Comanche /kəˈmæntʃiː/ Haa marʉ́awe
|
|||
Cree (ᓀᐦᐃᔭᐍᐏᐣ) ᑕᓂᓯ / ᐙᒋᔮ
|
||||
Czech (čeština) Dobrý den
|
||||
Danish (dansk) Hej / Goddag / Halløj
|
||||
Devanagari (देवनागरी) नमस्ते / नमस्कार
|
||||
Dutch (Nederlands) Hallo / Dag
|
||||
Efik /ˈɛfɪk/ Mɔkɔm
|
||||
Egyptian Hieroglyphs (𓂋𓏤𓈖𓆎𓅓𓏏𓊖) 𓅓𓊵𓏏𓊪, 𓇍𓇋𓂻𓍘𓇋
|
||||
|
|
@ -50,40 +56,60 @@ Finnish (suomi) Hei / Hyvää päivää
|
|||
French (français) Bonjour / Salut
|
||||
Georgian (ქართული) გამარჯობა
|
||||
German (Deutsch) Guten Tag / Grüß Gott
|
||||
Grantha (𑌗𑍍𑌰𑌨𑍍𑌥) 𑌨𑌮𑌸𑍍𑌤𑍇 / 𑌨𑌮𑌸𑍍𑌕𑌾𑌰𑌃
|
||||
Greek (ελληνικά) Γειά σας
|
||||
Greek, ancient (ἑλληνική) Οὖλέ τε καὶ μέγα χαῖρε
|
||||
Gujarati (ગુજરાતી) નમસ્તે
|
||||
Gurmukhi (ਗੁਰਮੁਖੀ) ਸਤ ਸ੍ਰੀ ਅਕਾਲ
|
||||
Hanifi Rohingya (𐴌𐴟𐴇𐴥𐴝𐴚𐴒𐴙𐴝 𐴇𐴝𐴕𐴞𐴉𐴞 𐴓𐴠𐴑𐴤𐴝) 𐴀𐴝𐴏𐴓𐴝𐴀𐴡𐴤𐴛𐴝𐴓𐴝𐴙𐴑𐴟𐴔
|
||||
Hanunoo (ᜱᜨᜳᜨᜳᜢ) ᜫᜬᜧ᜴ ᜣᜭᜯᜥ᜴ ᜰᜲᜭᜥ᜴
|
||||
Hebrew (עִבְרִית) שָׁלוֹם
|
||||
Hindi (हिन्दी) प्रणाम / पाय लागू
|
||||
Hungarian (magyar) Szép jó napot!
|
||||
Hindi (हिंदी) नमस्ते / नमस्कार ।
|
||||
Inuktitut (ᐃᓄᒃᑎᑐᑦ) ᐊᐃ
|
||||
Italian (italiano) Ciao / Buon giorno
|
||||
Javanese (ꦧꦱꦗꦮꦶ) console.log("ꦲꦭꦺꦴ");
|
||||
|
||||
Kaithi (𑂍𑂶𑂟𑂲) 𑂩𑂰𑂧𑂩𑂰𑂧
|
||||
Kannada (ಕನ್ನಡ) ನಮಸ್ಕಾರ
|
||||
Kharoṣṭhī (𐨑𐨪𐨆𐨛𐨁) 𐨣𐨨𐨲𐨪𐨆 𐨐𐨪𐨅𐨨𐨁
|
||||
Khmer (ភាសាខ្មែរ) ជំរាបសួរ
|
||||
Lakota (Lakȟotiyapi) Taŋyáŋ yahí!
|
||||
Lao (ພາສາລາວ) ສະບາຍດີ / ຂໍໃຫ້ໂຊກດີ
|
||||
Lepcha (ᰛᰩᰵᰛᰧᰵᰶ) ᰂᰦᰕᰥᰬ
|
||||
Limbu (ᤕᤰᤌᤢᤱ ᤐᤠᤴ) ᤛᤣᤘᤠᤖᤥ
|
||||
Makasar (𑻪𑻢𑻪𑻢) 𑻦𑻤𑻵𑻱
|
||||
Malayalam (മലയാളം) നമസ്കാരം
|
||||
Maldivian (ދިވެހި) އައްސަލާމު ޢަލައިކުމް / ކިހިނެހް؟
|
||||
Maltese (il-Malti) Bonġu / Saħħa
|
||||
Mathematics ∀ p ∈ world • hello p □
|
||||
Meetei Mayek (ꯃꯤꯇꯩ ꯃꯌꯦꯛ) ꯈꯨꯔꯨꯝꯖꯔꯤ
|
||||
Modi (𑘦𑘻𑘚𑘲) 𑘡𑘦𑘭𑘿𑘎𑘰𑘨
|
||||
Mongolian (монгол хэл) Сайн байна уу?
|
||||
Northern Thai (ᨣᩣᩴᨾᩮᩬᩥᨦ / ᨽᩣᩈᩣᩃ᩶ᩣ᩠ᨶᨶᩣ) ᩈ᩠ᩅᩢᩔ᩠ᨯᩦᨣᩕᩢ᩠ᨸ
|
||||
Norwegian (norsk) Hei / God dag
|
||||
Oriya (ଓଡ଼ିଆ) ଶୁଣିବେ
|
||||
Odia (ଓଡ଼ିଆ) ନମସ୍କାର
|
||||
Polish (język polski) Dzień dobry! / Cześć!
|
||||
Rejang (ꥆꤰ꥓ꤼꤽ ꤽꥍꤺꥏ) ꤸꥉꥐꤺꥉꥂꥎ
|
||||
Russian (русский) Здра́вствуйте!
|
||||
Sharada (𑆯𑆳𑆫𑆢𑆳) 𑆤𑆩𑆱𑇀𑆑𑆳𑆫
|
||||
Siddham (𑖭𑖰𑖟𑖿𑖠𑖽) 𑖡𑖦𑖫𑖿𑖝𑖸
|
||||
Sinhala (සිංහල) ආයුබෝවන්
|
||||
Slovak (slovenčina) Dobrý deň
|
||||
Slovenian (slovenščina) Pozdravljeni!
|
||||
Spanish (español) ¡Hola!
|
||||
Sundanese (ᮃᮊ᮪ᮟᮛᮞᮥᮔ᮪ᮓ) ᮞᮙ᮪ᮕᮥᮛᮞᮥᮔ᮪
|
||||
Swedish (svenska) Hej / Goddag / Hallå
|
||||
Syloti Nagri (ꠍꠤꠟꠐꠤ ꠘꠣꠉꠞꠤ) ꠀꠌ꠆ꠍꠣꠟꠣꠝꠥ ꠀꠟꠣꠁꠇꠥꠝ / ꠘꠝꠡ꠆ꠇꠣꠞ
|
||||
Tamil (தமிழ்) வணக்கம்
|
||||
Telugu (తెలుగు) నమస్కారం
|
||||
Tagalog (ᜊᜌ᜔ᜊᜌᜒᜈ᜔) ᜃᜓᜋᜓᜐ᜔ᜆ
|
||||
Tagbanwa (ᝦᝪᝯ) ᝫᝩᝬᝥ ᝣᝮᝧᝯ
|
||||
TaiViet (ꪁꪫꪱꪣ ꪼꪕ) ꪅꪰꪙꫂ ꪨꪮꫂ ꪁꪫꪱ / ꪅꪽ ꪨꪷ ꪁꪫꪱ
|
||||
Thai (ภาษาไทย) สวัสดีครับ / สวัสดีค่ะ
|
||||
Tibetan (བོད་སྐད་) བཀྲ་ཤིས་བདེ་ལེགས༎
|
||||
Tigrigna (ትግርኛ) ሰላማት
|
||||
Tirhuta (𑒞𑒱𑒩𑒯𑒳𑒞𑒰) 𑒣𑓂𑒩𑒢𑒰𑒧 / 𑒮𑒲𑒞𑒰𑒩𑒰𑒧
|
||||
Turkish (Türkçe) Merhaba
|
||||
Ukrainian (українська) Вітаю
|
||||
Vietnamese (tiếng Việt) Chào bạn
|
||||
|
|
|
|||
44
etc/NEWS.28
44
etc/NEWS.28
|
|
@ -15,6 +15,50 @@ 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'.
|
||||
|
||||
|
||||
* Installation Changes in Emacs 28.2
|
||||
|
||||
|
||||
* Startup Changes in Emacs 28.2
|
||||
|
||||
|
||||
* Changes in Emacs 28.2
|
||||
|
||||
This is a bug-fix release with no new features.
|
||||
|
||||
|
||||
* Editing Changes in Emacs 28.2
|
||||
|
||||
|
||||
* Changes in Specialized Modes and Packages in Emacs 28.2
|
||||
|
||||
** The command 'kdb-macro-redisplay' was renamed to 'kmacro-redisplay'.
|
||||
This is to fix an embarrassing typo in the original name.
|
||||
|
||||
** 'desktop-save-mode' now saves the desktop in 'save-buffers-kill-emacs'.
|
||||
Previously, the desktop was saved in 'kill-emacs' via
|
||||
'kill-emacs-hook'. However, that violated the convention that
|
||||
functions in 'kill-emacs-hook' cannot interact with the user, and in
|
||||
particular didn't play well with ending daemon sessions of Emacs. So
|
||||
we moved the saving of the desktop to 'save-buffers-kill-emacs', via
|
||||
'kill-emacs-query-functions'. To make sure the desktop is saved,
|
||||
terminate Emacs with 'save-buffers-kill-emacs', not with 'kill-emacs'.
|
||||
|
||||
(This change was done in Emacs 28.1, but we didn't announce it in NEWS
|
||||
back then.)
|
||||
|
||||
|
||||
* New Modes and Packages in Emacs 28.2
|
||||
|
||||
|
||||
* Incompatible Lisp Changes in Emacs 28.2
|
||||
|
||||
|
||||
* Lisp Changes in Emacs 28.2
|
||||
|
||||
|
||||
* Changes in Emacs 28.2 on Non-Free Operating Systems
|
||||
|
||||
|
||||
* Installation Changes in Emacs 28.1
|
||||
|
||||
|
|
|
|||
60
etc/PROBLEMS
60
etc/PROBLEMS
|
|
@ -805,6 +805,22 @@ to take advantage of.
|
|||
|
||||
* Runtime problems related to font handling
|
||||
|
||||
** Some fonts are detected but not usable under Xft.
|
||||
|
||||
Some fonts might not be usable under Emacs even though they show up in
|
||||
the font family list when Emacs is built with Xft. This is because
|
||||
Emacs prevents fonts that have color glyphs (such as color Emoji) from
|
||||
being used, since they typically cause Xft crashes.
|
||||
|
||||
On some GNU/Linux systems, fonts (such as Source Code Pro) that do not
|
||||
have color glyphs are reported as color fonts, causing them to be
|
||||
unavailable when using Xft. This is known to happen under Fedora
|
||||
GNU/Linux 36 or later, and possibly other distributions as well.
|
||||
|
||||
If you encounter a such a font, you can enable it while ignoring other
|
||||
fonts that actually have color glyphs by adding its family name to the
|
||||
list `xft-color-font-whitelist'.
|
||||
|
||||
** Characters are displayed as empty boxes or with wrong font under X.
|
||||
|
||||
*** This may be due to your local fontconfig customization.
|
||||
|
|
@ -1874,6 +1890,33 @@ this, you can remove the X resource or put this in your init file:
|
|||
|
||||
(xterm-remove-modify-other-keys)
|
||||
|
||||
** The shift TAB key combination works as meta TAB on a Linux console.
|
||||
|
||||
This happens because on your keyboard layout, S-TAB produces the same
|
||||
keycodes as typing ESC TAB individually. The best way to solve this
|
||||
is to modify your keyboard layout to produce different codes, and tell
|
||||
Emacs what these new codes mean.
|
||||
|
||||
The current keyboard layout will probably be a .map.gz file somewhere
|
||||
under /usr/share/keymaps. Identify this file, possibly from a system
|
||||
initialization file such as /etc/conf.d/keymaps. Run gunzip on it to
|
||||
decompress it, and amend the entries for keycode 15 to look something
|
||||
like this:
|
||||
|
||||
keycode 15 = Tab
|
||||
alt keycode 15 = Meta_Tab
|
||||
shift keycode 15 = F219
|
||||
string F219 = "\033[4}\011" # Shift+<tab>
|
||||
|
||||
After possibly saving this file under a different name, compress it
|
||||
again using gzip. Amend /etc/conf.d/keyamps, etc., if needed.
|
||||
Further details can be found in the man page for loadkeys.
|
||||
|
||||
Then add the following line near the start of your site-start.el or
|
||||
.emacs or init.el file:
|
||||
|
||||
(define-key input-decode-map "\e[4}\t" 'backtab)
|
||||
|
||||
** Emacs spontaneously displays "I-search: " at the bottom of the screen.
|
||||
|
||||
This means that Control-S/Control-Q (XON/XOFF) "flow control" is being
|
||||
|
|
@ -2982,6 +3025,23 @@ GTK_IM_MODULE.
|
|||
GTK does not allow programs to warp the pointer anymore. There is
|
||||
nothing that can be done about this problem.
|
||||
|
||||
** Certain keys such as 'C-S-u' are not reported correctly.
|
||||
|
||||
Some keys with modifiers such as Shift and Control might not be
|
||||
reported correctly due to incorrectly written GTK input method
|
||||
modules. This is known to happen to 'C-S-u' and 'C->', which are
|
||||
misreported as 'C-u' and '>'.
|
||||
|
||||
To disable the use of GTK input methods, evaluate:
|
||||
|
||||
(pgtk-use-im-context nil)
|
||||
|
||||
This will also cause system input methods and features such as the
|
||||
Compose key to stop working.
|
||||
|
||||
On X Windows, users should not use Emacs configured with PGTK, since
|
||||
this and many other problems do not exist on the regular X builds.
|
||||
|
||||
* Build-time problems
|
||||
|
||||
** Configuration
|
||||
|
|
|
|||
|
|
@ -149,7 +149,6 @@ spaces that are needed on the screen can make it hard to read.</flushboth>
|
|||
justification.
|
||||
|
||||
|
||||
|
||||
</center><flushboth>Note that justification can only change at hard newlines, because
|
||||
that is the unit over which filling gets done.</flushboth></indent>
|
||||
|
||||
|
|
@ -189,7 +188,14 @@ as possible.
|
|||
|
||||
|
||||
The text/enriched standard is defined in </indent>Internet<indent> RFC 1896
|
||||
(<<http://www.ietf.org/rfc/rfc1896.txt>).</indent>
|
||||
(<<http://www.ietf.org/rfc/rfc1896.txt>).
|
||||
|
||||
|
||||
To make format annotations visible and possibly edit them, tell
|
||||
Emacs to display the markup:
|
||||
|
||||
|
||||
<fixed><indent>M-x enriched-toggle-markup RET</indent></fixed></indent>
|
||||
|
||||
|
||||
<x-bg-color><param>blue</param><x-color><param>white</param><bold>CUSTOMIZATION</bold></x-color></x-bg-color><bold>
|
||||
|
|
|
|||
BIN
etc/images/tree-widget/default/nohandle-guide.png
Normal file
BIN
etc/images/tree-widget/default/nohandle-guide.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 180 B |
26
etc/images/tree-widget/default/nohandle-guide.xpm
Normal file
26
etc/images/tree-widget/default/nohandle-guide.xpm
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
/* XPM */
|
||||
static char * guide_xpm[] = {
|
||||
"6 21 2 1",
|
||||
" c None",
|
||||
". c #ADA5C6",
|
||||
" .",
|
||||
" .",
|
||||
" .",
|
||||
" .",
|
||||
" .",
|
||||
" .",
|
||||
" .",
|
||||
" .",
|
||||
" .",
|
||||
" .",
|
||||
" .",
|
||||
" .",
|
||||
" .",
|
||||
" .",
|
||||
" .",
|
||||
" .",
|
||||
" .",
|
||||
" .",
|
||||
" .",
|
||||
" .",
|
||||
" ."};
|
||||
BIN
etc/images/tree-widget/folder/nohandle-guide.png
Normal file
BIN
etc/images/tree-widget/folder/nohandle-guide.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 178 B |
27
etc/images/tree-widget/folder/nohandle-guide.xpm
Normal file
27
etc/images/tree-widget/folder/nohandle-guide.xpm
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
/* XPM */
|
||||
static char * guide_xpm[] = {
|
||||
"6 22 2 1",
|
||||
" c None",
|
||||
". c #ADA5C6",
|
||||
" ",
|
||||
" .",
|
||||
" ",
|
||||
" .",
|
||||
" ",
|
||||
" .",
|
||||
" ",
|
||||
" .",
|
||||
" ",
|
||||
" .",
|
||||
" ",
|
||||
" .",
|
||||
" ",
|
||||
" .",
|
||||
" ",
|
||||
" .",
|
||||
" ",
|
||||
" .",
|
||||
" ",
|
||||
" .",
|
||||
" ",
|
||||
" ."};
|
||||
|
|
@ -7130,7 +7130,7 @@ org.zw
|
|||
|
||||
// newGTLDs
|
||||
|
||||
// List of new gTLDs imported from https://www.icann.org/resources/registries/gtlds/v2/gtlds.json on 2022-04-30T15:14:46Z
|
||||
// List of new gTLDs imported from https://www.icann.org/resources/registries/gtlds/v2/gtlds.json on 2022-05-18T15:16:02Z
|
||||
// This list is auto-generated, don't edit it manually.
|
||||
// aaa : 2015-02-26 American Automobile Association, Inc.
|
||||
aaa
|
||||
|
|
@ -8851,7 +8851,7 @@ lincoln
|
|||
// linde : 2014-12-04 Linde Aktiengesellschaft
|
||||
linde
|
||||
|
||||
// link : 2013-11-14 UNR Corp.
|
||||
// link : 2013-11-14 Nova Registry Ltd
|
||||
link
|
||||
|
||||
// lipsy : 2015-06-25 Lipsy Ltd
|
||||
|
|
@ -12281,6 +12281,10 @@ blogspot.vn
|
|||
// Submitted by Niels Martignene <hello@goupile.fr>
|
||||
goupile.fr
|
||||
|
||||
// Government of the Netherlands: https://www.government.nl
|
||||
// Submitted by <domeinnaam@minaz.nl>
|
||||
gov.nl
|
||||
|
||||
// Group 53, LLC : https://www.group53.com
|
||||
// Submitted by Tyler Todd <noc@nova53.net>
|
||||
awsmppl.com
|
||||
|
|
@ -12357,7 +12361,6 @@ ltd.ng
|
|||
ngo.ng
|
||||
edu.scot
|
||||
sch.so
|
||||
org.yt
|
||||
|
||||
// HostyHosting (hostyhosting.com)
|
||||
hostyhosting.io
|
||||
|
|
@ -13389,6 +13392,12 @@ rocky.page
|
|||
спб.рус
|
||||
я.рус
|
||||
|
||||
// Salesforce.com, Inc. https://salesforce.com/
|
||||
// Submitted by Michael Biven <mbiven@salesforce.com>
|
||||
builder.code.com
|
||||
dev-builder.code.com
|
||||
stg-builder.code.com
|
||||
|
||||
// Sandstorm Development Group, Inc. : https://sandcats.io/
|
||||
// Submitted by Asheesh Laroia <asheesh@sandstorm.io>
|
||||
sandcats.io
|
||||
|
|
@ -13812,6 +13821,15 @@ hk.org
|
|||
ltd.hk
|
||||
inc.hk
|
||||
|
||||
// UNIVERSAL DOMAIN REGISTRY : https://www.udr.org.yt/
|
||||
// see also: whois -h whois.udr.org.yt help
|
||||
// Submitted by Atanunu Igbunuroghene <publicsuffixlist@udr.org.yt>
|
||||
name.pm
|
||||
sch.tf
|
||||
biz.wf
|
||||
sch.wf
|
||||
org.yt
|
||||
|
||||
// United Gameserver GmbH : https://united-gameserver.de
|
||||
// Submitted by Stefan Schwarz <sysadm@united-gameserver.de>
|
||||
virtualuser.de
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
% Reference Card for Org Mode
|
||||
\def\orgversionnumber{9.5.3}
|
||||
\def\orgversionnumber{9.5.4}
|
||||
\def\versionyear{2021} % latest update
|
||||
\input emacsver.tex
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
;;; leuven-dark-theme.el --- Awesome Emacs color theme on dark background
|
||||
;;; leuven-dark-theme.el --- Awesome Emacs color theme on dark background -*- lexical-binding: t; -*-
|
||||
|
||||
;; Copyright (C) 2003-2022 Free Software Foundation, Inc.
|
||||
|
||||
|
|
@ -103,7 +103,7 @@ more...")
|
|||
|
||||
;; Leuven generic colors.
|
||||
(cancel '(:slant italic :strike-through t :foreground "#5b5660"))
|
||||
(clock-line '(:box (:line-width 1 :color "#cfa161") :foreground "#ffffff" :background "#1636ff"))
|
||||
;; (clock-line '(:box (:line-width 1 :color "#cfa161") :foreground "#ffffff" :background "#1636ff"))
|
||||
(code-block '(:foreground "#ffff7f" :background "#252046"))
|
||||
(code-inline '(:foreground "#ff9bff" :background "#262031"))
|
||||
(column '(:height 1.0 :weight normal :slant normal :underline nil :strike-through nil :foreground "#1e52b8" :background "#252c48"))
|
||||
|
|
@ -124,10 +124,10 @@ more...")
|
|||
(grep-file-name '(:weight bold :foreground "#d8b76b")) ; Used for grep hits.
|
||||
(grep-line-number '(:weight bold :foreground "#5fca5b"))
|
||||
(highlight-blue '(:background "#3c312a"))
|
||||
(highlight-blue2 '(:background "#3e2d2f"))
|
||||
;; (highlight-blue2 '(:background "#3e2d2f"))
|
||||
(highlight-gray '(:background "#3e3944"))
|
||||
(highlight-green '(:background "#2f0e3a"))
|
||||
(highlight-red '(:background "#063741"))
|
||||
;; (highlight-green '(:background "#2f0e3a"))
|
||||
;; (highlight-red '(:background "#063741"))
|
||||
(highlight-yellow '(:background "#2d2058"))
|
||||
(link '(:weight normal :underline t :foreground "#ff925a"))
|
||||
(link-no-underline '(:weight normal :foreground "#ff925a"))
|
||||
|
|
|
|||
|
|
@ -400,7 +400,7 @@ jarring angry fruit salad look to reduce eye fatigue.")
|
|||
'(compilation-warning-face ((t (:bold t :foreground "Orange" :weight bold))))
|
||||
'(completions-common-part ((t (:width normal :weight normal
|
||||
:slant normal :foreground "WhiteSmoke"
|
||||
:background "black" :height 81))))
|
||||
:background "black" :height 0.9))))
|
||||
'(completions-first-difference ((t (:bold t :weight bold))))
|
||||
|
||||
'(css-selector ((t (:foreground "LightSteelBlue"))))
|
||||
|
|
|
|||
|
|
@ -3,8 +3,8 @@
|
|||
;; Copyright (C) 2019-2022 Free Software Foundation, Inc.
|
||||
|
||||
;; Author: Protesilaos Stavrou <info@protesilaos.com>
|
||||
;; URL: https://gitlab.com/protesilaos/modus-themes
|
||||
;; Version: 2.3.0
|
||||
;; URL: https://git.sr.ht/~protesilaos/modus-themes
|
||||
;; Version: 2.4.1
|
||||
;; Package-Requires: ((emacs "27.1"))
|
||||
;; Keywords: faces, theme, accessibility
|
||||
|
||||
|
|
|
|||
|
|
@ -3,9 +3,9 @@
|
|||
;; Copyright (C) 2019-2022 Free Software Foundation, Inc.
|
||||
|
||||
;; Author: Protesilaos Stavrou <info@protesilaos.com>
|
||||
;; URL: https://gitlab.com/protesilaos/modus-themes
|
||||
;; Version: 2.3.0
|
||||
;; Last-Modified: <2022-04-01 12:33:34 +0300>
|
||||
;; URL: https://git.sr.ht/~protesilaos/modus-themes
|
||||
;; Mailing list: https://lists.sr.ht/~protesilaos/modus-themes
|
||||
;; Version: 2.4.1
|
||||
;; Package-Requires: ((emacs "27.1"))
|
||||
;; Keywords: faces, theme, accessibility
|
||||
|
||||
|
|
@ -68,306 +68,8 @@
|
|||
;; modus-themes-operandi-color-overrides (alist)
|
||||
;; modus-themes-vivendi-color-overrides (alist)
|
||||
;;
|
||||
;; Below is the list of explicitly supported packages or face groups
|
||||
;; (there are implicitly supported packages as well, which inherit from
|
||||
;; font-lock or some basic group). You are encouraged to report any
|
||||
;; missing package or change you would like to see.
|
||||
;;
|
||||
;; ace-window
|
||||
;; alert
|
||||
;; all-the-icons
|
||||
;; all-the-icons-dired
|
||||
;; all-the-icons-ibuffer
|
||||
;; annotate
|
||||
;; ansi-color
|
||||
;; anzu
|
||||
;; apropos
|
||||
;; artbollocks-mode
|
||||
;; auctex and TeX
|
||||
;; auto-dim-other-buffers
|
||||
;; avy
|
||||
;; awesome-tray
|
||||
;; bbdb
|
||||
;; binder
|
||||
;; bm
|
||||
;; bongo
|
||||
;; boon
|
||||
;; bookmark
|
||||
;; breakpoint (provided by built-in gdb-mi.el)
|
||||
;; calendar and diary
|
||||
;; calfw
|
||||
;; centaur-tabs
|
||||
;; cfrs
|
||||
;; change-log and log-view (`vc-print-log' and `vc-print-root-log')
|
||||
;; cider
|
||||
;; circe
|
||||
;; citar
|
||||
;; color-rg
|
||||
;; column-enforce-mode
|
||||
;; company-mode
|
||||
;; company-posframe
|
||||
;; compilation-mode
|
||||
;; completions
|
||||
;; consult
|
||||
;; corfu
|
||||
;; counsel
|
||||
;; counsel-css
|
||||
;; cov
|
||||
;; cperl-mode
|
||||
;; css-mode
|
||||
;; csv-mode
|
||||
;; ctrlf
|
||||
;; cursor-flash
|
||||
;; custom (M-x customize)
|
||||
;; dap-mode
|
||||
;; dashboard (emacs-dashboard)
|
||||
;; deadgrep
|
||||
;; debbugs
|
||||
;; deft
|
||||
;; devdocs
|
||||
;; dictionary
|
||||
;; diff-hl
|
||||
;; diff-mode
|
||||
;; dim-autoload
|
||||
;; dir-treeview
|
||||
;; Dired
|
||||
;; dired-async
|
||||
;; dired-git
|
||||
;; dired-git-info
|
||||
;; dired-narrow
|
||||
;; dired-subtree
|
||||
;; diredfl
|
||||
;; diredp (dired+)
|
||||
;; display-fill-column-indicator-mode
|
||||
;; doom-modeline
|
||||
;; dynamic-ruler
|
||||
;; easy-jekyll
|
||||
;; ebdb
|
||||
;; ediff
|
||||
;; eglot
|
||||
;; el-search
|
||||
;; eldoc
|
||||
;; eldoc-box
|
||||
;; elfeed
|
||||
;; elfeed-score
|
||||
;; elpher
|
||||
;; embark
|
||||
;; ement (ement.el)
|
||||
;; emms
|
||||
;; enh-ruby-mode (enhanced-ruby-mode)
|
||||
;; epa
|
||||
;; equake
|
||||
;; erc
|
||||
;; eros
|
||||
;; ert
|
||||
;; eshell
|
||||
;; eshell-fringe-status
|
||||
;; eshell-git-prompt
|
||||
;; eshell-prompt-extras (epe)
|
||||
;; eshell-syntax-highlighting
|
||||
;; evil (evil-mode)
|
||||
;; evil-goggles
|
||||
;; evil-snipe
|
||||
;; evil-visual-mark-mode
|
||||
;; eww
|
||||
;; exwm
|
||||
;; eyebrowse
|
||||
;; fancy-dabbrev
|
||||
;; flycheck
|
||||
;; flycheck-color-mode-line
|
||||
;; flycheck-indicator
|
||||
;; flycheck-posframe
|
||||
;; flymake
|
||||
;; flyspell
|
||||
;; flx
|
||||
;; freeze-it
|
||||
;; frog-menu
|
||||
;; focus
|
||||
;; fold-this
|
||||
;; font-lock (generic syntax highlighting)
|
||||
;; forge
|
||||
;; fountain (fountain-mode)
|
||||
;; geiser
|
||||
;; git-commit
|
||||
;; git-gutter (and variants)
|
||||
;; git-rebase
|
||||
;; git-timemachine
|
||||
;; gnus
|
||||
;; gotest
|
||||
;; golden-ratio-scroll-screen
|
||||
;; helm
|
||||
;; helm-ls-git
|
||||
;; helm-switch-shell
|
||||
;; helm-xref
|
||||
;; helpful
|
||||
;; highlight-indentation
|
||||
;; highlight-numbers
|
||||
;; highlight-thing
|
||||
;; hl-defined
|
||||
;; hl-fill-column
|
||||
;; hl-line-mode
|
||||
;; hl-todo
|
||||
;; hydra
|
||||
;; ibuffer
|
||||
;; icomplete
|
||||
;; ido-mode
|
||||
;; iedit
|
||||
;; iflipb
|
||||
;; image-dired
|
||||
;; imenu-list
|
||||
;; indium
|
||||
;; info
|
||||
;; info-colors
|
||||
;; interaction-log
|
||||
;; ioccur
|
||||
;; isearch, occur, etc.
|
||||
;; ivy
|
||||
;; ivy-posframe
|
||||
;; jira (org-jira)
|
||||
;; journalctl-mode
|
||||
;; js2-mode
|
||||
;; julia
|
||||
;; jupyter
|
||||
;; kaocha-runner
|
||||
;; keycast
|
||||
;; ledger-mode
|
||||
;; line numbers (`display-line-numbers-mode' and global variant)
|
||||
;; lsp-mode
|
||||
;; lsp-ui
|
||||
;; macrostep
|
||||
;; magit
|
||||
;; magit-imerge
|
||||
;; make-mode
|
||||
;; man
|
||||
;; marginalia
|
||||
;; markdown-mode
|
||||
;; markup-faces (`adoc-mode')
|
||||
;; mct
|
||||
;; mentor
|
||||
;; messages
|
||||
;; mini-modeline
|
||||
;; minimap
|
||||
;; mmm-mode
|
||||
;; mode-line
|
||||
;; mood-line
|
||||
;; mpdel
|
||||
;; mu4e
|
||||
;; multiple-cursors
|
||||
;; nano-modeline
|
||||
;; neotree
|
||||
;; notmuch
|
||||
;; num3-mode
|
||||
;; nxml-mode
|
||||
;; orderless
|
||||
;; org
|
||||
;; org-journal
|
||||
;; org-noter
|
||||
;; org-pomodoro
|
||||
;; org-recur
|
||||
;; org-roam
|
||||
;; org-superstar
|
||||
;; org-table-sticky-header
|
||||
;; org-tree-slide
|
||||
;; org-treescope
|
||||
;; origami
|
||||
;; outline-mode
|
||||
;; outline-minor-faces
|
||||
;; package (M-x list-packages)
|
||||
;; page-break-lines
|
||||
;; pandoc-mode
|
||||
;; paradox
|
||||
;; paren-face
|
||||
;; pass
|
||||
;; pdf-tools
|
||||
;; persp-mode
|
||||
;; perspective
|
||||
;; phi-grep
|
||||
;; pomidor
|
||||
;; popup
|
||||
;; powerline
|
||||
;; powerline-evil
|
||||
;; prism (see "Note for prism.el" in the manual)
|
||||
;; proced
|
||||
;; prodigy
|
||||
;; pulse
|
||||
;; pyim
|
||||
;; quick-peek
|
||||
;; racket-mode
|
||||
;; rainbow-blocks
|
||||
;; rainbow-delimiters
|
||||
;; rcirc
|
||||
;; recursion-indicator
|
||||
;; regexp-builder (also known as `re-builder')
|
||||
;; rg
|
||||
;; ripgrep
|
||||
;; rmail
|
||||
;; ruler-mode
|
||||
;; selectrum
|
||||
;; selectrum-prescient
|
||||
;; semantic
|
||||
;; sesman
|
||||
;; shell-script-mode
|
||||
;; shortdoc
|
||||
;; show-paren-mode
|
||||
;; shr
|
||||
;; side-notes
|
||||
;; sieve-mode
|
||||
;; skewer-mode
|
||||
;; slime (sldb)
|
||||
;; sly
|
||||
;; smart-mode-line
|
||||
;; smartparens
|
||||
;; smerge
|
||||
;; spaceline
|
||||
;; speedbar
|
||||
;; stripes
|
||||
;; suggest
|
||||
;; switch-window
|
||||
;; swiper
|
||||
;; sx
|
||||
;; symbol-overlay
|
||||
;; syslog-mode
|
||||
;; tab-bar-groups
|
||||
;; tab-bar-mode
|
||||
;; tab-line-mode
|
||||
;; table (built-in table.el)
|
||||
;; telega
|
||||
;; telephone-line
|
||||
;; terraform-mode
|
||||
;; term
|
||||
;; textsec
|
||||
;; tomatinho
|
||||
;; transient (pop-up windows like Magit's)
|
||||
;; trashed
|
||||
;; treemacs
|
||||
;; tty-menu
|
||||
;; tuareg
|
||||
;; typescript
|
||||
;; undo-tree
|
||||
;; vc (vc-dir.el, vc-hooks.el)
|
||||
;; vc-annotate (C-x v g)
|
||||
;; vertico
|
||||
;; vertico-quick
|
||||
;; vimish-fold
|
||||
;; visible-mark
|
||||
;; visual-regexp
|
||||
;; vterm
|
||||
;; wcheck-mode
|
||||
;; web-mode
|
||||
;; wgrep
|
||||
;; which-function-mode
|
||||
;; which-key
|
||||
;; whitespace-mode
|
||||
;; window-divider-mode
|
||||
;; winum
|
||||
;; writegood-mode
|
||||
;; woman
|
||||
;; xah-elisp-mode
|
||||
;; xref
|
||||
;; xterm-color (and ansi-colors)
|
||||
;; yaml-mode
|
||||
;; yasnippet
|
||||
;; ztree
|
||||
;; Check the manual for all supported packages (there are hundreds of
|
||||
;; them).
|
||||
;;
|
||||
;; For a complete view of the project, also refer to the following files
|
||||
;; (should be distributed in the same repository/directory as the
|
||||
|
|
@ -383,7 +85,6 @@
|
|||
(eval-when-compile
|
||||
(require 'cl-lib)
|
||||
(require 'subr-x))
|
||||
(require 'seq)
|
||||
|
||||
(defgroup modus-themes ()
|
||||
"Options for `modus-operandi', `modus-vivendi'.
|
||||
|
|
@ -407,6 +108,36 @@ cover the blue-cyan-magenta side of the spectrum."
|
|||
:prefix "modus-themes-"
|
||||
:tag "Modus Themes Faces")
|
||||
|
||||
(defvar modus-themes--version "2.5.0-dev"
|
||||
"Current version of the Modus themes.
|
||||
|
||||
The version either is the last tagged release, such as '2.4.0',
|
||||
or an in-development version like '2.5.0-dev'. As we use
|
||||
semantic versioning, tags of the '2.4.1' sort are not reported:
|
||||
those would count as part of '2.5.0-dev'.")
|
||||
|
||||
;;;###autoload
|
||||
(defun modus-themes-version (&optional insert)
|
||||
"Print `modus-themes--version' in the echo area.
|
||||
If optional INSERT argument is provided from Lisp or as a prefix
|
||||
argument, insert the `modus-themes--version' at point."
|
||||
(interactive "P")
|
||||
(if-let ((version modus-themes--version)
|
||||
((or insert current-prefix-arg)))
|
||||
(insert version)
|
||||
(message version)))
|
||||
|
||||
;;;###autoload
|
||||
(defun modus-themes-report-bug ()
|
||||
"Submit a bug report or issue to the Modus themes developers."
|
||||
(interactive)
|
||||
(reporter-submit-bug-report
|
||||
"~protesilaos/modus-themes@lists.sr.ht"
|
||||
(format "modus-themes (%s)\n" modus-themes--version)
|
||||
;; I am just getting started with this. Let's first see what people
|
||||
;; think about it.
|
||||
nil nil nil nil))
|
||||
|
||||
;;; Variables for each theme variant
|
||||
|
||||
;;;; Modus Operandi
|
||||
|
|
@ -561,7 +292,8 @@ cover the blue-cyan-magenta side of the spectrum."
|
|||
;; while bg-tab-inactive should be combined with fg-dim, whereas
|
||||
;; bg-tab-inactive-alt goes together with fg-main
|
||||
;;
|
||||
;; bg-completion-* variants are meant to be combined with fg-main
|
||||
;; bg-completion-* and bg-char-* variants are meant to be combined
|
||||
;; with fg-main
|
||||
;;
|
||||
;; fg-escape-char-construct and fg-escape-char-backslash can
|
||||
;; be combined bg-main, bg-dim, bg-alt
|
||||
|
|
@ -595,6 +327,10 @@ cover the blue-cyan-magenta side of the spectrum."
|
|||
(bg-completion . "#b7dbff")
|
||||
(bg-completion-subtle . "#def3ff")
|
||||
|
||||
(bg-char-0 . "#7feaff")
|
||||
(bg-char-1 . "#ffaaff")
|
||||
(bg-char-2 . "#dff000")
|
||||
|
||||
(bg-tab-active . "#f6f6f6")
|
||||
(bg-tab-inactive . "#b7b7b7")
|
||||
(bg-tab-inactive-accent . "#a9b4f6")
|
||||
|
|
@ -807,7 +543,8 @@ symbol and the latter as a string.")
|
|||
;; while bg-tab-inactive should be combined with fg-dim, whereas
|
||||
;; bg-tab-inactive-alt goes together with fg-main
|
||||
;;
|
||||
;; bg-completion-* variants are meant to be combined with fg-main
|
||||
;; bg-completion-* and bg-char-* variants are meant to be combined
|
||||
;; with fg-main
|
||||
;;
|
||||
;; fg-escape-char-construct and fg-escape-char-backslash can
|
||||
;; be combined bg-main, bg-dim, bg-alt
|
||||
|
|
@ -841,6 +578,10 @@ symbol and the latter as a string.")
|
|||
(bg-completion . "#142f69")
|
||||
(bg-completion-subtle . "#0e194b")
|
||||
|
||||
(bg-char-0 . "#0050af")
|
||||
(bg-char-1 . "#7f1f7f")
|
||||
(bg-char-2 . "#625a00")
|
||||
|
||||
(bg-tab-active . "#0e0e0e")
|
||||
(bg-tab-inactive . "#424242")
|
||||
(bg-tab-inactive-accent . "#35398f")
|
||||
|
|
@ -1449,9 +1190,8 @@ The actual styling of the face is done by `modus-themes-faces'."
|
|||
|
||||
(defface modus-themes-variable-pitch nil
|
||||
"Generic face for applying a conditional `variable-pitch'.
|
||||
This behaves in accordance with `modus-themes-mixed-fonts',
|
||||
`modus-themes-variable-pitch-headings' for all heading levels,
|
||||
and `modus-themes-variable-pitch-ui'.
|
||||
This behaves in accordance with `modus-themes-mixed-fonts' and/or
|
||||
`modus-themes-variable-pitch-ui'.
|
||||
|
||||
The actual styling of the face is done by `modus-themes-faces'."
|
||||
:group 'modus-themes-faces)
|
||||
|
|
@ -3142,13 +2882,15 @@ In user configuration files the form may look like this:
|
|||
value
|
||||
(modus-themes--warn option))))
|
||||
|
||||
(defun modus-themes--alist-or-seq (properties alist-key seq-pred seq-default)
|
||||
"Return value from alist or sequence.
|
||||
(defun modus-themes--property-lookup (properties alist-key list-pred default)
|
||||
"Return value from property alist or list.
|
||||
Check PROPERTIES for an alist value that corresponds to
|
||||
ALIST-KEY. If no alist is present, search the PROPERTIES
|
||||
sequence given SEQ-PRED, using SEQ-DEFAULT as a fallback."
|
||||
list given LIST-PRED, using DEFAULT as a fallback."
|
||||
(if-let* ((val (or (alist-get alist-key properties)
|
||||
(seq-find seq-pred properties seq-default)))
|
||||
(cl-loop for x in properties
|
||||
if (funcall list-pred x) return x)
|
||||
default))
|
||||
((listp val)))
|
||||
(car val)
|
||||
val))
|
||||
|
|
@ -3192,7 +2934,10 @@ Those are stored in `modus-themes-faces' and
|
|||
|
||||
(defun modus-themes--current-theme ()
|
||||
"Return current modus theme."
|
||||
(car (seq-filter (lambda (arg) (string-match-p "^modus" (symbol-name arg)))
|
||||
(car
|
||||
(seq-filter
|
||||
(lambda (theme)
|
||||
(string-match-p "^modus" (symbol-name theme)))
|
||||
custom-enabled-themes)))
|
||||
|
||||
;; Helper functions that are meant to ease the implementation of the
|
||||
|
|
@ -3245,11 +2990,11 @@ foreground. INTENSEFG is an alternative to the default."
|
|||
(cond
|
||||
((and (memq 'bold properties)
|
||||
(memq 'italic properties))
|
||||
(list 'modus-themes-fixed-pitch 'bold-italic))
|
||||
(list 'bold-italic 'modus-themes-fixed-pitch))
|
||||
((memq 'italic properties)
|
||||
(list 'modus-themes-fixed-pitch 'italic))
|
||||
(list 'italic 'modus-themes-fixed-pitch))
|
||||
((memq 'bold properties)
|
||||
(list 'modus-themes-fixed-pitch 'bold))
|
||||
(list 'bold 'modus-themes-fixed-pitch))
|
||||
(t 'modus-themes-fixed-pitch))
|
||||
:background
|
||||
(cond
|
||||
|
|
@ -3368,10 +3113,10 @@ theme's fallback text color."
|
|||
|
||||
(defun modus-themes--paren (normalbg intensebg)
|
||||
"Conditional use of intense colors for matching parentheses.
|
||||
NORMALBG should be the special palette color `bg-paren-match' or
|
||||
NORMALBG should be the special palette color 'bg-paren-match' or
|
||||
something similar. INTENSEBG must be easier to discern next to
|
||||
other backgrounds, such as the special palette color
|
||||
`bg-paren-match-intense'."
|
||||
'bg-paren-match-intense'."
|
||||
(let ((properties (modus-themes--list-or-warn 'modus-themes-paren-match)))
|
||||
(list :inherit
|
||||
(if (memq 'bold properties)
|
||||
|
|
@ -3521,7 +3266,7 @@ that combines well with the background and foreground."
|
|||
fg-alt)
|
||||
(fg))
|
||||
:height
|
||||
(modus-themes--alist-or-seq properties 'height #'floatp 'unspecified)
|
||||
(modus-themes--property-lookup properties 'height #'floatp 'unspecified)
|
||||
:weight
|
||||
(or weight 'unspecified)
|
||||
:overline
|
||||
|
|
@ -3546,7 +3291,7 @@ FG is the foreground color to use."
|
|||
(or weight 'unspecified)
|
||||
:height
|
||||
(cond ((memq 'no-scale properties) 'unspecified)
|
||||
((modus-themes--alist-or-seq properties 'height #'floatp 1.15)))
|
||||
((modus-themes--property-lookup properties 'height #'floatp 1.15)))
|
||||
:foreground fg)))
|
||||
|
||||
(defun modus-themes--agenda-date (defaultfg grayscalefg &optional workaholicfg grayscaleworkaholicfg bg bold ul)
|
||||
|
|
@ -3581,7 +3326,7 @@ weight. Optional UL applies an underline."
|
|||
(t
|
||||
defaultfg))
|
||||
:height
|
||||
(modus-themes--alist-or-seq properties 'height #'floatp 'unspecified)
|
||||
(modus-themes--property-lookup properties 'height #'floatp 'unspecified)
|
||||
:underline
|
||||
(if (and ul (memq 'underline-today properties))
|
||||
t
|
||||
|
|
@ -3637,8 +3382,8 @@ clearly distinguishes past, present, future tasks."
|
|||
(defun modus-themes--agenda-habit (default traffic simple &optional default-d traffic-d simple-d)
|
||||
"Specify background values for `modus-themes-org-agenda' habits.
|
||||
DEFAULT is the original foregrounc color. TRAFFIC is to be used
|
||||
when the `traffic-light' style is applied, while SIMPLE
|
||||
corresponds to the \"simplified style\".
|
||||
when the 'traffic-light' style is applied, while SIMPLE
|
||||
corresponds to the 'simplified style'.
|
||||
|
||||
Optional DEFAULT-D, TRAFFIC-D, SIMPLE-D are alternatives to the
|
||||
main colors, meant for dopia when `modus-themes-deuteranopia' is
|
||||
|
|
@ -3712,8 +3457,8 @@ Optional FG-DISTANT should be close to the main background
|
|||
values. It is intended to be used as a distant-foreground
|
||||
property."
|
||||
(let* ((properties (modus-themes--list-or-warn 'modus-themes-mode-line))
|
||||
(padding (modus-themes--alist-or-seq properties 'padding #'natnump 1))
|
||||
(height (modus-themes--alist-or-seq properties 'height #'floatp 'unspecified))
|
||||
(padding (modus-themes--property-lookup properties 'padding #'natnump 1))
|
||||
(height (modus-themes--property-lookup properties 'height #'floatp 'unspecified))
|
||||
(padded (> padding 1))
|
||||
(base (cond ((memq 'accented properties)
|
||||
(cons fg-accent bg-accent))
|
||||
|
|
@ -3778,10 +3523,14 @@ property."
|
|||
;; Basically this is just for the keycast key indicator.
|
||||
(defun modus-themes--mode-line-padded-box (color)
|
||||
"Set padding of mode line box attribute with given COLOR."
|
||||
(let ((padding (seq-find #'natnump modus-themes-mode-line 1)))
|
||||
(list :box (list :line-width padding :color color))))
|
||||
(list :box (list :color color
|
||||
:line-width
|
||||
(or (cl-loop
|
||||
for x in modus-themes-mode-line
|
||||
if (natnump x) return x)
|
||||
1))))
|
||||
|
||||
(defun modus-themes--diff (mainbg mainfg altbg altfg &optional deuteranbg deuteranfg bg-only-fg)
|
||||
(defun modus-themes--diff (mainbg mainfg altbg altfg &optional deubg deufg deualtbg deualtfg bg-only-fg)
|
||||
"Color combinations for `modus-themes-diffs'.
|
||||
|
||||
MAINBG must be one of the dedicated backgrounds for diffs while
|
||||
|
|
@ -3791,13 +3540,20 @@ ALTBG needs to be a slightly accented background that is meant to
|
|||
be combined with ALTFG. Both must be less intense than MAINBG
|
||||
and MAINFG respectively.
|
||||
|
||||
DEUTERANBG and DEUTERANFG must be combinations of colors that account
|
||||
for red-green color defficiency (deuteranopia).
|
||||
DEUBG and DEUFG must be combinations of colors that account for
|
||||
red-green color defficiency (deuteranopia). They are the
|
||||
equivalent of MAINBG and MAINFG.
|
||||
|
||||
Optional BG-ONLY-FG applies ALTFG else leaves the foreground
|
||||
unspecified."
|
||||
DEUALTBG and DEUALTFG are the equivalent of ALTBG and ALTFG for
|
||||
deuteranopia.
|
||||
|
||||
Optional non-nil BG-ONLY-FG applies ALTFG else leaves the
|
||||
foreground unspecified."
|
||||
(if modus-themes-deuteranopia
|
||||
(list :background (or deuteranbg mainbg) :foreground (or deuteranfg mainfg))
|
||||
(pcase modus-themes-diffs
|
||||
('desaturated (list :background (or deualtbg altbg) :foreground (or deualtfg altfg)))
|
||||
('bg-only (list :background (or deualtbg altbg) :foreground (if bg-only-fg (or deualtfg altfg) 'unspecified)))
|
||||
(_ (list :background (or deubg mainbg) :foreground (or deufg mainfg))))
|
||||
(pcase modus-themes-diffs
|
||||
('desaturated (list :background altbg :foreground altfg))
|
||||
('bg-only (list :background altbg :foreground (if bg-only-fg altfg 'unspecified)))
|
||||
|
|
@ -4114,7 +3870,7 @@ pressed button style, else the released button."
|
|||
(weight weight)
|
||||
('unspecified))
|
||||
:height
|
||||
(modus-themes--alist-or-seq properties 'height #'floatp 'unspecified)
|
||||
(modus-themes--property-lookup properties 'height #'floatp 'unspecified)
|
||||
:underline
|
||||
(if (memq 'underline properties)
|
||||
t
|
||||
|
|
@ -4379,7 +4135,8 @@ by virtue of calling either of `modus-themes-load-operandi' and
|
|||
((,class ,@(modus-themes--diff
|
||||
bg-diff-focus-added fg-diff-focus-added
|
||||
green-nuanced-bg fg-diff-added
|
||||
bg-diff-focus-added-deuteran fg-diff-focus-added-deuteran))))
|
||||
bg-diff-focus-added-deuteran fg-diff-focus-added-deuteran
|
||||
blue-nuanced-bg fg-diff-added-deuteran))))
|
||||
`(modus-themes-diff-changed
|
||||
((,class ,@(modus-themes--diff
|
||||
bg-diff-focus-changed fg-diff-focus-changed
|
||||
|
|
@ -4392,7 +4149,8 @@ by virtue of calling either of `modus-themes-load-operandi' and
|
|||
((,class ,@(modus-themes--diff
|
||||
bg-diff-refine-added fg-diff-refine-added
|
||||
bg-diff-focus-added fg-diff-focus-added
|
||||
bg-diff-refine-added-deuteran fg-diff-refine-added-deuteran))))
|
||||
bg-diff-refine-added-deuteran fg-diff-refine-added-deuteran
|
||||
bg-diff-focus-added-deuteran fg-diff-focus-added-deuteran))))
|
||||
`(modus-themes-diff-refine-changed
|
||||
((,class ,@(modus-themes--diff
|
||||
bg-diff-refine-changed fg-diff-refine-changed
|
||||
|
|
@ -4405,7 +4163,8 @@ by virtue of calling either of `modus-themes-load-operandi' and
|
|||
((,class ,@(modus-themes--diff
|
||||
bg-diff-focus-added fg-diff-focus-added
|
||||
bg-diff-added fg-diff-added
|
||||
bg-diff-focus-added-deuteran fg-diff-focus-added-deuteran))))
|
||||
bg-diff-focus-added-deuteran fg-diff-focus-added-deuteran
|
||||
bg-diff-added-deuteran fg-diff-added-deuteran))))
|
||||
`(modus-themes-diff-focus-changed
|
||||
((,class ,@(modus-themes--diff
|
||||
bg-diff-focus-changed fg-diff-focus-changed
|
||||
|
|
@ -4419,6 +4178,7 @@ by virtue of calling either of `modus-themes-load-operandi' and
|
|||
bg-diff-heading fg-diff-heading
|
||||
cyan-nuanced-bg cyan-nuanced-fg
|
||||
bg-header fg-main
|
||||
bg-header fg-main
|
||||
t))))
|
||||
;;;;; deuteranopia-specific
|
||||
`(modus-themes-grue ((,class :foreground ,@(modus-themes--deuteran blue green))))
|
||||
|
|
@ -4564,7 +4324,8 @@ by virtue of calling either of `modus-themes-load-operandi' and
|
|||
bg-region blue-intense-bg
|
||||
fg-alt blue-intense)
|
||||
:extend t)))
|
||||
`(modus-themes-key-binding ((,class :inherit bold :foreground ,blue-alt-other)))
|
||||
`(modus-themes-key-binding ((,class :inherit (bold modus-themes-fixed-pitch)
|
||||
:foreground ,blue-alt-other)))
|
||||
`(modus-themes-prompt ((,class ,@(modus-themes--prompt
|
||||
cyan-alt-other blue-alt-other fg-alt
|
||||
cyan-nuanced-bg blue-refine-bg fg-main
|
||||
|
|
@ -4592,7 +4353,7 @@ by virtue of calling either of `modus-themes-load-operandi' and
|
|||
`(elisp-shorthand-font-lock-face ((,class :inherit font-lock-variable-name-face)))
|
||||
`(error ((,class :inherit bold :foreground ,red)))
|
||||
`(escape-glyph ((,class :foreground ,fg-escape-char-construct)))
|
||||
`(file-name-shadow ((,class :inherit (shadow italic))))
|
||||
`(file-name-shadow ((,class :inherit shadow)))
|
||||
`(header-line ((,class :inherit modus-themes-ui-variable-pitch
|
||||
:background ,bg-header :foreground ,fg-header)))
|
||||
`(header-line-highlight ((,class :inherit highlight)))
|
||||
|
|
@ -4759,10 +4520,10 @@ by virtue of calling either of `modus-themes-load-operandi' and
|
|||
;;;;; avy
|
||||
`(avy-background-face ((,class :background ,bg-dim :foreground ,fg-dim :extend t)))
|
||||
`(avy-goto-char-timer-face ((,class :inherit (modus-themes-intense-neutral bold))))
|
||||
`(avy-lead-face ((,class :inherit (modus-themes-intense-blue bold modus-themes-reset-soft))))
|
||||
`(avy-lead-face-0 ((,class :inherit (modus-themes-refine-magenta bold modus-themes-reset-soft))))
|
||||
`(avy-lead-face ((,class :inherit (bold modus-themes-reset-soft) :background ,bg-char-0)))
|
||||
`(avy-lead-face-0 ((,class :inherit (bold modus-themes-reset-soft) :background ,bg-char-1)))
|
||||
`(avy-lead-face-1 ((,class :inherit (modus-themes-special-warm modus-themes-reset-soft))))
|
||||
`(avy-lead-face-2 ((,class :inherit (modus-themes-refine-green bold modus-themes-reset-soft))))
|
||||
`(avy-lead-face-2 ((,class :inherit (bold modus-themes-reset-soft) :background ,bg-char-2)))
|
||||
;;;;; aw (ace-window)
|
||||
`(aw-background-face ((,class :foreground ,fg-unfocused)))
|
||||
`(aw-key-face ((,class :inherit modus-themes-key-binding)))
|
||||
|
|
@ -4849,6 +4610,27 @@ by virtue of calling either of `modus-themes-load-operandi' and
|
|||
`(cfw:face-toolbar-button-off ((,class :inherit shadow)))
|
||||
`(cfw:face-toolbar-button-on ((,class :inherit bold :background ,blue-nuanced-bg
|
||||
:foreground ,blue-alt)))
|
||||
;;;;; calibredb
|
||||
`(calibredb-archive-face ((,class :foreground ,magenta-alt-faint)))
|
||||
`(calibredb-author-face ((,class :foreground ,blue-faint)))
|
||||
`(calibredb-comment-face ((,class :inherit shadow)))
|
||||
`(calibredb-date-face ((,class :foreground ,cyan)))
|
||||
`(calibredb-edit-annotation-header-title-face ((,class :inherit bold)))
|
||||
`(calibredb-favorite-face ((,class :foreground ,red-alt)))
|
||||
`(calibredb-file-face (( )))
|
||||
`(calibredb-format-face ((,class :foreground ,cyan-faint)))
|
||||
`(calibredb-highlight-face ((,class :inherit success)))
|
||||
`(calibredb-id-face (( )))
|
||||
`(calibredb-ids-face (( )))
|
||||
`(calibredb-search-header-highlight-face ((,class :inherit modus-themes-hl-line)))
|
||||
`(calibredb-search-header-library-name-face ((,class :foreground ,blue-active)))
|
||||
`(calibredb-search-header-library-path-face ((,class :inherit bold)))
|
||||
`(calibredb-search-header-sort-face ((,class :inherit bold :foreground ,magenta-active)))
|
||||
`(calibredb-search-header-total-face ((,class :inherit bold :foreground ,cyan-active)))
|
||||
`(calibredb-search-header-filter-face ((,class :inherit bold)))
|
||||
`(calibredb-mark-face ((,class :inherit modus-themes-mark-sel)))
|
||||
`(calibredb-size-face (( )))
|
||||
`(calibredb-tag-face ((,class :foreground ,magenta-alt-faint)))
|
||||
;;;;; centaur-tabs
|
||||
`(centaur-tabs-active-bar-face ((,class :background ,blue-active)))
|
||||
`(centaur-tabs-close-mouse-face ((,class :inherit bold :foreground ,red-active :underline t)))
|
||||
|
|
@ -4992,6 +4774,9 @@ by virtue of calling either of `modus-themes-load-operandi' and
|
|||
`(corfu-bar ((,class :background ,fg-alt)))
|
||||
`(corfu-border ((,class :background ,bg-active)))
|
||||
`(corfu-default ((,class :background ,bg-alt)))
|
||||
;;;;; corfu-quick
|
||||
`(corfu-quick1 ((,class :inherit bold :background ,bg-char-0)))
|
||||
`(corfu-quick2 ((,class :inherit bold :background ,bg-char-1)))
|
||||
;;;;; counsel
|
||||
`(counsel-active-mode ((,class :foreground ,magenta-alt-other)))
|
||||
`(counsel-application-name ((,class :foreground ,red-alt-other)))
|
||||
|
|
@ -5323,6 +5108,13 @@ by virtue of calling either of `modus-themes-load-operandi' and
|
|||
`(ediff-odd-diff-Ancestor ((,class :inherit ediff-even-diff-Ancestor)))
|
||||
`(ediff-odd-diff-B ((,class :inherit ediff-even-diff-B)))
|
||||
`(ediff-odd-diff-C ((,class :inherit ediff-even-diff-C)))
|
||||
;;;;; ein (Emacs IPython Notebook)
|
||||
`(ein:basecell-input-area-face ((,class :background ,bg-dim :extend t)))
|
||||
`(ein:cell-output-area (( )))
|
||||
`(ein:cell-output-area-error ((,class :background ,red-nuanced-bg :extend t)))
|
||||
`(ein:cell-output-stderr ((,class :background ,red-nuanced-bg :extend t)))
|
||||
`(ein:markdowncell-input-area-face (( )))
|
||||
`(ein:notification-tab-normal ((,class :underline t)))
|
||||
;;;;; eglot
|
||||
`(eglot-mode-line ((,class :inherit modus-themes-bold :foreground ,magenta-active)))
|
||||
;;;;; el-search
|
||||
|
|
@ -5637,7 +5429,7 @@ by virtue of calling either of `modus-themes-load-operandi' and
|
|||
`(font-lock-doc-face ((,class :inherit modus-themes-slant
|
||||
,@(modus-themes--syntax-string
|
||||
fg-docstring fg-special-cold
|
||||
fg-special-mild magenta-nuanced-fg
|
||||
fg-special-mild fg-special-calm
|
||||
fg-special-mild magenta-nuanced-fg))))
|
||||
`(font-lock-function-name-face ((,class ,@(modus-themes--syntax-extra
|
||||
magenta magenta-faint
|
||||
|
|
@ -5651,30 +5443,31 @@ by virtue of calling either of `modus-themes-load-operandi' and
|
|||
yellow yellow-faint))))
|
||||
`(font-lock-preprocessor-face ((,class ,@(modus-themes--syntax-extra
|
||||
red-alt-other red-alt-other-faint
|
||||
blue-alt blue-alt-faint))))
|
||||
`(font-lock-regexp-grouping-backslash ((,class :inherit bold
|
||||
cyan-alt-other cyan-alt-faint))))
|
||||
`(font-lock-regexp-grouping-backslash ((,class :inherit modus-themes-bold
|
||||
,@(modus-themes--syntax-string
|
||||
fg-escape-char-backslash yellow-alt-faint
|
||||
yellow-alt magenta-alt
|
||||
red-faint green-alt-other-faint))))
|
||||
`(font-lock-regexp-grouping-construct ((,class :inherit bold
|
||||
`(font-lock-regexp-grouping-construct ((,class :inherit modus-themes-bold
|
||||
,@(modus-themes--syntax-string
|
||||
fg-escape-char-construct red-alt-other-faint
|
||||
red-alt-other blue-alt-other
|
||||
blue-faint blue-alt-other-faint))))
|
||||
`(font-lock-string-face ((,class ,@(modus-themes--syntax-string
|
||||
blue-alt blue-alt-faint
|
||||
green-alt-other red-alt
|
||||
green-alt-other red-alt-other
|
||||
green-alt-faint red-alt-faint))))
|
||||
`(font-lock-type-face ((,class :inherit modus-themes-bold
|
||||
,@(modus-themes--syntax-foreground
|
||||
cyan-alt-other cyan-alt-faint))))
|
||||
,@(modus-themes--syntax-extra
|
||||
cyan-alt-other cyan-alt-faint
|
||||
magenta-alt-other magenta-alt-other-faint))))
|
||||
`(font-lock-variable-name-face ((,class ,@(modus-themes--syntax-extra
|
||||
cyan cyan-faint
|
||||
blue-alt-other blue-alt-other-faint))))
|
||||
blue-alt blue-alt-faint))))
|
||||
`(font-lock-warning-face ((,class :inherit modus-themes-bold
|
||||
,@(modus-themes--syntax-comment
|
||||
yellow-active red-active red-faint yellow-faint))))
|
||||
,@(modus-themes--syntax-foreground
|
||||
yellow-active yellow-alt-faint))))
|
||||
;;;;; forge
|
||||
`(forge-post-author ((,class :inherit bold :foreground ,fg-main)))
|
||||
`(forge-post-date ((,class :foreground ,fg-special-cold)))
|
||||
|
|
@ -5685,7 +5478,7 @@ by virtue of calling either of `modus-themes-load-operandi' and
|
|||
`(forge-topic-unread ((,class :inherit bold :foreground ,fg-main)))
|
||||
;;;;; fountain-mode
|
||||
`(fountain-character ((,class :foreground ,blue-alt-other)))
|
||||
`(fountain-comment ((,class :inherit modus-themes-slant :foreground ,fg-alt)))
|
||||
`(fountain-comment ((,class :inherit font-lock-comment-face)))
|
||||
`(fountain-dialog ((,class :foreground ,blue-alt)))
|
||||
`(fountain-metadata-key ((,class :foreground ,green-alt-other)))
|
||||
`(fountain-metadata-value ((,class :foreground ,blue)))
|
||||
|
|
@ -5719,11 +5512,11 @@ by virtue of calling either of `modus-themes-load-operandi' and
|
|||
`(geiser-font-lock-xref-link ((,class :inherit button)))
|
||||
;;;;; git-commit
|
||||
`(git-commit-comment-action ((,class :inherit font-lock-comment-face)))
|
||||
`(git-commit-comment-branch-local ((,class :inherit modus-themes-slant :foreground ,blue-alt)))
|
||||
`(git-commit-comment-branch-remote ((,class :inherit modus-themes-slant :foreground ,magenta-alt)))
|
||||
`(git-commit-comment-detached ((,class :inherit modus-themes-slant :foreground ,cyan-alt)))
|
||||
`(git-commit-comment-file ((,class :inherit modus-themes-slant :foreground ,cyan)))
|
||||
`(git-commit-comment-heading ((,class :inherit (bold modus-themes-slant))))
|
||||
`(git-commit-comment-branch-local ((,class :inherit font-lock-comment-face :foreground ,blue-alt)))
|
||||
`(git-commit-comment-branch-remote ((,class :inherit font-lock-comment-face :foreground ,magenta-alt)))
|
||||
`(git-commit-comment-detached ((,class :inherit font-lock-comment-face :foreground ,cyan-alt)))
|
||||
`(git-commit-comment-file ((,class :inherit font-lock-comment-face :foreground ,cyan)))
|
||||
`(git-commit-comment-heading ((,class :inherit (bold font-lock-comment-face))))
|
||||
`(git-commit-keyword ((,class :foreground ,magenta)))
|
||||
`(git-commit-known-pseudo-header ((,class :foreground ,cyan-alt-other)))
|
||||
`(git-commit-nonempty-second-line ((,class :inherit error)))
|
||||
|
|
@ -5741,8 +5534,8 @@ by virtue of calling either of `modus-themes-load-operandi' and
|
|||
`(git-gutter-fr:deleted ((,class :inherit modus-themes-fringe-red)))
|
||||
`(git-gutter-fr:modified ((,class :inherit modus-themes-fringe-yellow)))
|
||||
;;;;; git-rebase
|
||||
`(git-rebase-comment-hash ((,class :inherit modus-themes-slant :foreground ,cyan)))
|
||||
`(git-rebase-comment-heading ((,class :inherit (bold modus-themes-slant))))
|
||||
`(git-rebase-comment-hash ((,class :inherit font-lock-comment-face :foreground ,cyan)))
|
||||
`(git-rebase-comment-heading ((,class :inherit (bold font-lock-comment-face))))
|
||||
`(git-rebase-description ((,class :foreground ,fg-main)))
|
||||
`(git-rebase-hash ((,class :foreground ,cyan-alt-other)))
|
||||
;;;;; git-timemachine
|
||||
|
|
@ -6114,7 +5907,8 @@ by virtue of calling either of `modus-themes-load-operandi' and
|
|||
`(kaocha-runner-warning-face ((,class :inherit warning)))
|
||||
;;;;; keycast
|
||||
`(keycast-command ((,class :inherit bold :foreground ,blue-active)))
|
||||
`(keycast-key ((,class ,@(modus-themes--mode-line-padded-box blue-active)
|
||||
;; FIXME 2022-05-03: The padding breaks `keycast-tab-bar-mode'
|
||||
`(keycast-key ((,class ;; ,@(modus-themes--mode-line-padded-box blue-active)
|
||||
:background ,blue-active :foreground ,bg-main)))
|
||||
;;;;; ledger-mode
|
||||
`(ledger-font-auto-xact-face ((,class :foreground ,magenta)))
|
||||
|
|
@ -6128,23 +5922,26 @@ by virtue of calling either of `modus-themes-load-operandi' and
|
|||
`(ledger-font-payee-uncleared-face ((,class :foreground ,red-alt-other)))
|
||||
`(ledger-font-xact-highlight-face ((,class :background ,bg-hl-alt)))
|
||||
;;;;; line numbers (display-line-numbers-mode and global variant)
|
||||
;; Here we cannot inherit `modus-themes-fixed-pitch'. We need to
|
||||
;; fall back to `default' otherwise line numbers do not scale when
|
||||
;; using `text-scale-adjust'.
|
||||
`(line-number
|
||||
((,class :inherit default
|
||||
((,class :inherit ,(if modus-themes-mixed-fonts 'fixed-pitch 'default)
|
||||
,@(modus-themes--line-numbers
|
||||
fg-alt bg-dim
|
||||
fg-unfocused))))
|
||||
`(line-number-current-line
|
||||
((,class :inherit (bold default)
|
||||
((,class :inherit (bold line-number)
|
||||
,@(modus-themes--line-numbers
|
||||
fg-main bg-active
|
||||
blue-alt-other))))
|
||||
`(line-number-major-tick
|
||||
((,class :inherit (bold default)
|
||||
((,class :inherit (bold line-number)
|
||||
,@(modus-themes--line-numbers
|
||||
yellow-nuanced-fg yellow-nuanced-bg
|
||||
red-alt))))
|
||||
`(line-number-minor-tick
|
||||
((,class :inherit (bold default)
|
||||
((,class :inherit (bold line-number)
|
||||
,@(modus-themes--line-numbers
|
||||
fg-alt bg-inactive
|
||||
fg-inactive))))
|
||||
|
|
@ -6228,7 +6025,8 @@ by virtue of calling either of `modus-themes-load-operandi' and
|
|||
`(magit-diff-added ((,class ,@(modus-themes--diff
|
||||
bg-diff-added fg-diff-added
|
||||
green-nuanced-bg fg-diff-added
|
||||
bg-diff-added-deuteran fg-diff-added-deuteran))))
|
||||
bg-diff-added-deuteran fg-diff-added-deuteran
|
||||
blue-nuanced-bg fg-diff-added-deuteran))))
|
||||
`(magit-diff-added-highlight ((,class :inherit modus-themes-diff-focus-added)))
|
||||
`(magit-diff-base ((,class ,@(modus-themes--diff
|
||||
bg-diff-changed fg-diff-changed
|
||||
|
|
@ -6249,6 +6047,7 @@ by virtue of calling either of `modus-themes-load-operandi' and
|
|||
bg-active fg-inactive
|
||||
bg-inactive fg-inactive
|
||||
bg-inactive fg-inactive
|
||||
nil nil
|
||||
t))))
|
||||
;; NOTE: we do not follow the pattern of inheriting from
|
||||
;; modus-themes-grue-* faces, as this is a special case.
|
||||
|
|
@ -6687,9 +6486,7 @@ by virtue of calling either of `modus-themes-load-operandi' and
|
|||
:background ,bg-alt)))
|
||||
`(org-column-title ((,class :inherit (bold modus-themes-fixed-pitch default)
|
||||
:underline t :background ,bg-alt)))
|
||||
`(org-date ((,class :inherit ,(if modus-themes-mixed-fonts
|
||||
'(fixed-pitch modus-themes-link-symlink)
|
||||
'modus-themes-link-symlink))))
|
||||
`(org-date ((,class :inherit (modus-themes-link-symlink modus-themes-fixed-pitch))))
|
||||
`(org-date-selected ((,class :foreground ,blue-alt :inverse-video t)))
|
||||
`(org-dispatcher-highlight ((,class :inherit (bold modus-themes-mark-alt))))
|
||||
`(org-document-info ((,class :foreground ,fg-special-cold)))
|
||||
|
|
@ -6906,7 +6703,7 @@ by virtue of calling either of `modus-themes-load-operandi' and
|
|||
`(popup-summary-face ((,class :background ,bg-active :foreground ,fg-inactive)))
|
||||
`(popup-tip-face ((,class :inherit modus-themes-refine-yellow)))
|
||||
;;;;; powerline
|
||||
`(powerline-active0 ((,class :background ,bg-main :foreground ,blue-faint :inverse-video t)))
|
||||
`(powerline-active0 ((,class :background ,blue-faint :foreground ,bg-main)))
|
||||
`(powerline-active1 ((,class :background ,blue-nuanced-bg :foreground ,blue-nuanced-fg)))
|
||||
`(powerline-active2 ((,class :background ,bg-active :foreground ,fg-active)))
|
||||
`(powerline-inactive0 ((,class :background ,bg-special-cold :foreground ,fg-special-cold)))
|
||||
|
|
@ -7355,7 +7152,9 @@ by virtue of calling either of `modus-themes-load-operandi' and
|
|||
;;;;; transient
|
||||
`(transient-active-infix ((,class :inherit modus-themes-special-mild)))
|
||||
`(transient-amaranth ((,class :inherit bold :foreground ,yellow-alt)))
|
||||
`(transient-argument ((,class :inherit bold :background ,cyan-nuanced-bg :foreground ,cyan)))
|
||||
;; Placate the compiler for what is a spurious warning. We also
|
||||
;; have to do this with `eldoc-highlight-function-argument'.
|
||||
(list 'transient-argument `((,class :inherit bold :background ,cyan-nuanced-bg :foreground ,cyan)))
|
||||
`(transient-blue ((,class :inherit bold :foreground ,blue)))
|
||||
`(transient-disabled-suffix ((,class :inherit modus-themes-intense-red)))
|
||||
`(transient-enabled-suffix ((,class :inherit modus-themes-grue-background-subtle)))
|
||||
|
|
@ -7379,6 +7178,24 @@ by virtue of calling either of `modus-themes-load-operandi' and
|
|||
`(trashed-marked ((,class :inherit modus-themes-mark-alt)))
|
||||
`(trashed-restored ((,class :inherit modus-themes-mark-sel)))
|
||||
`(trashed-symlink ((,class :inherit modus-themes-link-symlink)))
|
||||
;;;;; tree-sitter
|
||||
`(tree-sitter-hl-face:attribute ((,class :inherit font-lock-variable-name-face)))
|
||||
`(tree-sitter-hl-face:constant.builtin ((,class :inherit tree-sitter-hl-face:constant)))
|
||||
`(tree-sitter-hl-face:escape ((,class :inherit font-lock-regexp-grouping-backslash)))
|
||||
`(tree-sitter-hl-face:function ((,class :inherit font-lock-function-name-face)))
|
||||
`(tree-sitter-hl-face:function.call ((,class :inherit tree-sitter-hl-face:function)))
|
||||
`(tree-sitter-hl-face:label (( )))
|
||||
`(tree-sitter-hl-face:method.call (( )))
|
||||
`(tree-sitter-hl-face:operator ((,class :inherit modus-themes-bold)))
|
||||
`(tree-sitter-hl-face:property (( )))
|
||||
`(tree-sitter-hl-face:property.definition ((,class :inherit font-lock-variable-name-face)))
|
||||
`(tree-sitter-hl-face:punctuation (( )))
|
||||
`(tree-sitter-hl-face:punctuation.bracket (( )))
|
||||
`(tree-sitter-hl-face:punctuation.delimiter (( )))
|
||||
`(tree-sitter-hl-face:punctuation.special ((,class :inherit font-lock-regexp-grouping-construct)))
|
||||
`(tree-sitter-hl-face:string.special ((,class :inherit tree-sitter-hl-face:string)))
|
||||
`(tree-sitter-hl-face:tag ((,class :inherit font-lock-function-name-face)))
|
||||
`(tree-sitter-hl-face:type.argument (( )))
|
||||
;;;;; treemacs
|
||||
`(treemacs-directory-collapsed-face ((,class :foreground ,magenta-alt)))
|
||||
`(treemacs-directory-face ((,class :inherit dired-directory)))
|
||||
|
|
@ -7460,8 +7277,8 @@ by virtue of calling either of `modus-themes-load-operandi' and
|
|||
;;;;; vertico
|
||||
`(vertico-current ((,class :inherit modus-themes-completion-selected)))
|
||||
;;;;; vertico-quick
|
||||
`(vertico-quick1 ((,class :inherit (modus-themes-intense-blue bold))))
|
||||
`(vertico-quick2 ((,class :inherit (modus-themes-refine-magenta bold))))
|
||||
`(vertico-quick1 ((,class :inherit bold :background ,bg-char-0)))
|
||||
`(vertico-quick2 ((,class :inherit bold :background ,bg-char-1)))
|
||||
;;;;; vimish-fold
|
||||
`(vimish-fold-fringe ((,class :foreground ,cyan-active)))
|
||||
`(vimish-fold-mouse-face ((,class :inherit modus-themes-intense-blue)))
|
||||
|
|
@ -7491,6 +7308,8 @@ by virtue of calling either of `modus-themes-load-operandi' and
|
|||
`(vterm-color-underline ((,class :foreground ,fg-special-warm :underline t)))
|
||||
`(vterm-color-white ((,class :background "gray65" :foreground "gray65")))
|
||||
`(vterm-color-yellow ((,class :background ,yellow :foreground ,yellow)))
|
||||
;;;;; vundo
|
||||
`(vundo-highlight ((,class :inherit (bold vundo-node) :foreground ,red-intense)))
|
||||
;;;;; wcheck-mode
|
||||
`(wcheck-default-face ((,class :foreground ,red :underline t)))
|
||||
;;;;; web-mode
|
||||
|
|
@ -7652,6 +7471,9 @@ by virtue of calling either of `modus-themes-load-operandi' and
|
|||
`(flymake-error-bitmap '(flymake-double-exclamation-mark modus-themes-fringe-red))
|
||||
`(flymake-warning-bitmap '(exclamation-mark modus-themes-fringe-yellow))
|
||||
`(flymake-note-bitmap '(exclamation-mark modus-themes-fringe-cyan))
|
||||
;;;; highlight-changes
|
||||
`(highlight-changes-colors nil)
|
||||
`(highlight-changes-face-list '(success warning error bold bold-italic))
|
||||
;;;; ibuffer
|
||||
`(ibuffer-deletion-face 'modus-themes-mark-del)
|
||||
`(ibuffer-filter-group-name-face 'modus-themes-pseudo-header)
|
||||
|
|
@ -7753,9 +7575,4 @@ by virtue of calling either of `modus-themes-load-operandi' and
|
|||
(add-to-list 'custom-theme-load-path dir))))
|
||||
|
||||
(provide 'modus-themes)
|
||||
|
||||
;; Local Variables:
|
||||
;; time-stamp-pattern: "Last-Modified: <%Y-%02m-%02d %02H:%02M:%02S %5z>"
|
||||
;; End:
|
||||
|
||||
;;; modus-themes.el ends here
|
||||
|
|
|
|||
|
|
@ -3,8 +3,8 @@
|
|||
;; Copyright (C) 2019-2022 Free Software Foundation, Inc.
|
||||
|
||||
;; Author: Protesilaos Stavrou <info@protesilaos.com>
|
||||
;; URL: https://gitlab.com/protesilaos/modus-themes
|
||||
;; Version: 2.3.0
|
||||
;; URL: https://git.sr.ht/~protesilaos/modus-themes
|
||||
;; Version: 2.4.1
|
||||
;; Package-Requires: ((emacs "27.1"))
|
||||
;; Keywords: faces, theme, accessibility
|
||||
|
||||
|
|
|
|||
|
|
@ -905,6 +905,15 @@ Dired 能够在一个缓冲区里列出一个目录下的所有文件(可以
|
|||
|
||||
Emacs 使用手册里还有许许多多的精彩功能等着你来了解。
|
||||
|
||||
* 安装包裹(INSTALLING PACKAGES)
|
||||
---------------------------
|
||||
|
||||
Emacs 社区著作了许多持有扩展性的包裹(packages),其中包括对各种语言的
|
||||
支持、色彩鲜艳的主题、用于集成外部程序的包裹,等等。
|
||||
|
||||
使用 M-x list-packages 便可浏览存在的包裹。这个命令显示的界面中可以安
|
||||
装和卸载包裹,以及查看包裹的简介。Emacs 使用手册中有对包裹管理更详细的
|
||||
介绍。
|
||||
|
||||
* 总结(CONCLUSION)
|
||||
--------------------
|
||||
|
|
|
|||
1267
etc/tutorials/TUTORIAL.el_GR
Normal file
1267
etc/tutorials/TUTORIAL.el_GR
Normal file
File diff suppressed because it is too large
Load diff
|
|
@ -1110,7 +1110,7 @@ mentre fai riferimento al testo di aiuto e poi usare un C-x 1.
|
|||
|
||||
Ecco altre utili opzioni di C-h:
|
||||
|
||||
C-h x Descrive un comando. Inserisci il nome della comando.
|
||||
C-h x Descrive un comando. Inserisci il nome del comando.
|
||||
|
||||
>> Prova con C-h x previous-line <Invio>.
|
||||
Questo mostrerà tutte le informazioni che Emacs possiede sulla
|
||||
|
|
|
|||
|
|
@ -26,6 +26,10 @@ Maintainer: Dale Gulledge <dsplat@rochester.rr.com>
|
|||
Author: Rafael Sepúlveda <drs@gnulinux.org.mx>
|
||||
Maintainer: Rafael Sepúlveda <drs@gnulinux.org.mx>
|
||||
|
||||
* TUTORIAL.el_GR:
|
||||
Author: Protesilaos Stavrou <info@protesilaos.com>
|
||||
Maintainer: Protesilaos Stavrou <info@protesilaos.com>
|
||||
|
||||
* TUTORIAL.fr:
|
||||
Author: Éric Jacoboni <jaco@teaser.fr>
|
||||
Maintainer: Éric Jacoboni <jaco@teaser.fr>
|
||||
|
|
|
|||
|
|
@ -32,6 +32,12 @@ leimdir = ${srcdir}/../lisp/leim
|
|||
|
||||
EXEEXT = @EXEEXT@
|
||||
|
||||
SMALL_JA_DIC = @SMALL_JA_DIC@
|
||||
JA_DIC_NO_REDUCTION_OPTION = --no-reduction
|
||||
ifeq ($(SMALL_JA_DIC), yes)
|
||||
JA_DIC_NO_REDUCTION_OPTION =
|
||||
endif
|
||||
|
||||
-include ${top_builddir}/src/verbose.mk
|
||||
|
||||
# Prevent any settings in the user environment causing problems.
|
||||
|
|
@ -80,7 +86,7 @@ MISC= \
|
|||
TIT_MISC = ${TIT_GB} ${TIT_BIG5} ${MISC}
|
||||
|
||||
|
||||
all: ${leimdir}/leim-list.el ${leimdir}/ja-dic/ja-dic.el
|
||||
all: ${leimdir}/leim-list.el
|
||||
.PHONY: all
|
||||
|
||||
|
||||
|
|
@ -129,10 +135,12 @@ ${leimdir}/leim-list.el: ${srcdir}/leim-ext.el ${TIT_MISC}
|
|||
|
||||
${leimdir}/ja-dic/ja-dic.el: | $(leimdir)/ja-dic
|
||||
|
||||
.PHONY: generate-ja-dic
|
||||
generate-ja-dic: ${leimdir}/ja-dic/ja-dic.el
|
||||
${leimdir}/ja-dic/ja-dic.el: $(srcdir)/SKK-DIC/SKK-JISYO.L
|
||||
$(AM_V_GEN)$(RUN_EMACS) -batch -l ja-dic-cnv \
|
||||
--eval "(setq max-specpdl-size 5000)" \
|
||||
-f batch-skkdic-convert -dir "$(leimdir)/ja-dic" "$<"
|
||||
-f batch-skkdic-convert -dir "$(leimdir)/ja-dic" $(JA_DIC_NO_REDUCTION_OPTION) "$<"
|
||||
|
||||
${srcdir}/../lisp/language/pinyin.el: ${srcdir}/MISC-DIC/pinyin.map
|
||||
$(AM_V_GEN)${RUN_EMACS} -l titdic-cnv -f pinyin-convert $< $@
|
||||
|
|
|
|||
|
|
@ -1427,14 +1427,19 @@ main (int argc, char **argv)
|
|||
if (CTAGS)
|
||||
if (append_to_tagfile || update)
|
||||
{
|
||||
char *cmd = xmalloc (2 * strlen (tagfile) + sizeof "sort -u -o..");
|
||||
/* Maybe these should be used:
|
||||
setenv ("LC_COLLATE", "C", 1);
|
||||
setenv ("LC_ALL", "C", 1); */
|
||||
char *z = stpcpy (cmd, "sort -u -o ");
|
||||
z = stpcpy (z, tagfile);
|
||||
*z++ = ' ';
|
||||
strcpy (z, tagfile);
|
||||
char *cmd = xmalloc (8 * strlen (tagfile) + sizeof "sort -u -o '' ''");
|
||||
char *z = stpcpy (cmd, "sort -u -o '");
|
||||
char *escaped_tagfile = z;
|
||||
for (; *tagfile; *z++ = *tagfile++)
|
||||
if (*tagfile == '\'')
|
||||
z = stpcpy (z, "'\\'");
|
||||
ptrdiff_t escaped_tagfile_len = z - escaped_tagfile;
|
||||
z = stpcpy (z, "' '");
|
||||
z = mempcpy (z, escaped_tagfile, escaped_tagfile_len);
|
||||
strcpy (z, "'");
|
||||
return system (cmd);
|
||||
}
|
||||
return EXIT_SUCCESS;
|
||||
|
|
@ -4161,6 +4166,9 @@ C_entries (int c_ext, /* extension of C */
|
|||
if (definedef != dnone)
|
||||
break;
|
||||
bracelev -= 1;
|
||||
/* If we see a closing brace in column zero, and we weren't told to
|
||||
ignore indentation, we assume this the final brace of a function
|
||||
or struct definition, and reset bracelev to zero. */
|
||||
if (!ignoreindent && lp == newlb.buffer + 1)
|
||||
{
|
||||
if (bracelev != 0)
|
||||
|
|
@ -6396,7 +6404,8 @@ mercury_decl (char *s, size_t pos)
|
|||
size_t origpos;
|
||||
origpos = pos;
|
||||
|
||||
while (s + pos != NULL && (c_isalnum (s[pos]) || s[pos] == '_')) ++pos;
|
||||
while (c_isalnum (s[pos]) || s[pos] == '_')
|
||||
pos++;
|
||||
|
||||
unsigned char decl_type_length = pos - origpos;
|
||||
char buf[decl_type_length + 1];
|
||||
|
|
@ -6440,9 +6449,9 @@ mercury_decl (char *s, size_t pos)
|
|||
so this is the hard case. */
|
||||
if (strcmp (buf, "solver") == 0)
|
||||
{
|
||||
++pos;
|
||||
while (s + pos != NULL && (c_isalnum (s[pos]) || s[pos] == '_'))
|
||||
++pos;
|
||||
do
|
||||
pos++;
|
||||
while (c_isalnum (s[pos]) || s[pos] == '_');
|
||||
|
||||
decl_type_length = pos - origpos;
|
||||
char buf2[decl_type_length + 1];
|
||||
|
|
@ -6492,7 +6501,6 @@ mercury_decl (char *s, size_t pos)
|
|||
while (c_isalnum (s[pos])
|
||||
|| s[pos] == '_'
|
||||
|| (s[pos] == '.' /* A module dot. */
|
||||
&& s + pos + 1 != NULL
|
||||
&& (c_isalnum (s[pos + 1]) || s[pos + 1] == '_')
|
||||
&& (module_dot_pos = pos))) /* Record module dot position.
|
||||
Erase module from name. */
|
||||
|
|
@ -6536,10 +6544,10 @@ mercury_decl (char *s, size_t pos)
|
|||
}
|
||||
else if (is_mercury_quantifier && s[pos] == '[') /* :- some [T] pred/func. */
|
||||
{
|
||||
for (++pos; s + pos != NULL && s[pos] != ']'; ++pos) {}
|
||||
if (s + pos == NULL) return null_pos;
|
||||
++pos;
|
||||
pos = skip_spaces (s + pos) - s;
|
||||
char *close_bracket = strchr (s + pos + 1, ']');
|
||||
if (!close_bracket)
|
||||
return null_pos;
|
||||
pos = skip_spaces (close_bracket + 1) - s;
|
||||
mercury_pos_t position = mercury_decl (s, pos);
|
||||
position.totlength += pos - origpos;
|
||||
return position;
|
||||
|
|
@ -7243,8 +7251,8 @@ readline_internal (linebuffer *lbp, FILE *stream, char const *filename)
|
|||
{
|
||||
/* We're at the end of linebuffer: expand it. */
|
||||
xrnew (buffer, lbp->size, 2);
|
||||
p = buffer + lbp->size;
|
||||
lbp->size *= 2;
|
||||
p += buffer - lbp->buffer;
|
||||
pend = buffer + lbp->size;
|
||||
lbp->buffer = buffer;
|
||||
}
|
||||
|
|
@ -7665,21 +7673,21 @@ relative_filename (char *file, char *dir)
|
|||
{
|
||||
char *fp, *dp, *afn, *res;
|
||||
ptrdiff_t i;
|
||||
char *dir_last_slash UNINIT;
|
||||
|
||||
/* Find the common root of file and dir (with a trailing slash). */
|
||||
afn = absolute_filename (file, cwd);
|
||||
fp = afn;
|
||||
dp = dir;
|
||||
while (*fp++ == *dp++)
|
||||
continue;
|
||||
fp--, dp--; /* back to the first differing char */
|
||||
if (dp[-1] == '/')
|
||||
dir_last_slash = dp - 1;
|
||||
#ifdef DOS_NT
|
||||
if (fp == afn && afn[0] != '/') /* cannot build a relative name */
|
||||
return afn;
|
||||
if (fp - 1 == afn && afn[0] != '/')
|
||||
return afn; /* Cannot build a relative name. */
|
||||
#endif
|
||||
do /* look at the equal chars until '/' */
|
||||
fp--, dp--;
|
||||
while (*fp != '/');
|
||||
fp -= dp - dir_last_slash;
|
||||
dp = dir_last_slash;
|
||||
|
||||
/* Build a sequence of "../" strings for the resulting relative file name. */
|
||||
i = 0;
|
||||
|
|
|
|||
|
|
@ -1068,7 +1068,7 @@ scan_c_stream (FILE *infile)
|
|||
attributes: attribute1 attribute2 ...)
|
||||
(Lisp_Object arg...)
|
||||
|
||||
Now only ’const’, ’noinline’ and 'noreturn' attributes
|
||||
Now only `const', `noinline' and `noreturn' attributes
|
||||
are used. */
|
||||
|
||||
/* Advance to the end of docstring. */
|
||||
|
|
|
|||
|
|
@ -208,7 +208,6 @@ CPP = @CPP@
|
|||
CPPFLAGS = @CPPFLAGS@
|
||||
CRYPTOLIB = @CRYPTOLIB@
|
||||
CXX = @CXX@
|
||||
CXXCPP = @CXXCPP@
|
||||
CXXFLAGS = @CXXFLAGS@
|
||||
CYGWIN_OBJ = @CYGWIN_OBJ@
|
||||
C_SWITCH_MACHINE = @C_SWITCH_MACHINE@
|
||||
|
|
|
|||
113
lisp/Makefile.in
113
lisp/Makefile.in
|
|
@ -59,15 +59,6 @@ BYTE_COMPILE_EXTRA_FLAGS =
|
|||
# BYTE_COMPILE_EXTRA_FLAGS = --eval '(setq byte-compile-warnings (quote (not unresolved)))'
|
||||
# The example above is just for developers, it should not be used by default.
|
||||
|
||||
# Those automatically generated autoload files that need special rules
|
||||
# to build; i.e. not including things created via generated-autoload-file
|
||||
# (eg calc/calc-loaddefs.el).
|
||||
LOADDEFS = $(lisp)/calendar/cal-loaddefs.el \
|
||||
$(lisp)/calendar/diary-loaddefs.el \
|
||||
$(lisp)/calendar/hol-loaddefs.el \
|
||||
$(lisp)/mh-e/mh-loaddefs.el \
|
||||
$(lisp)/net/tramp-loaddefs.el
|
||||
|
||||
# All generated autoload files.
|
||||
loaddefs = $(shell find ${srcdir} -name '*loaddefs.el' ! -name '.*')
|
||||
# Elisp files auto-generated.
|
||||
|
|
@ -84,10 +75,11 @@ compile-first: BYTE_COMPILE_FLAGS = \
|
|||
|
||||
# Files to compile before others during a bootstrap. This is done to
|
||||
# speed up the bootstrap process. They're ordered by size, so we use
|
||||
# the slowest-compiler on the smallest file and move to larger files as the
|
||||
# compiler gets faster. 'autoload.elc' comes last because it is not used by
|
||||
# the compiler (so its compilation does not speed up subsequent compilations),
|
||||
# it's only placed here so as to speed up generation of the loaddefs.el file.
|
||||
# the slowest-compiler on the smallest file and move to larger files
|
||||
# as the compiler gets faster. 'loaddefs-gen.elc'/'radix-tree.el'
|
||||
# comes last because they're not used by the compiler (so its
|
||||
# compilation does not speed up subsequent compilations), it's only
|
||||
# placed here so as to speed up generation of the loaddefs.el files.
|
||||
|
||||
COMPILE_FIRST = \
|
||||
$(lisp)/emacs-lisp/macroexp.elc \
|
||||
|
|
@ -98,11 +90,18 @@ ifeq ($(HAVE_NATIVE_COMP),yes)
|
|||
COMPILE_FIRST += $(lisp)/emacs-lisp/comp.elc
|
||||
COMPILE_FIRST += $(lisp)/emacs-lisp/comp-cstr.elc
|
||||
endif
|
||||
COMPILE_FIRST += $(lisp)/emacs-lisp/autoload.elc
|
||||
COMPILE_FIRST += $(lisp)/emacs-lisp/loaddefs-gen.elc
|
||||
COMPILE_FIRST += $(lisp)/emacs-lisp/radix-tree.elc
|
||||
|
||||
# Files to compile early in compile-main. Works around bug#25556.
|
||||
# Also compile the ja-dic file used to convert the Japanese dictionary
|
||||
# to speed things up. The org files are used to convert org files to
|
||||
# texi files.
|
||||
MAIN_FIRST = ./emacs-lisp/eieio.el ./emacs-lisp/eieio-base.el \
|
||||
./cedet/semantic/db.el ./emacs-lisp/cconv.el
|
||||
./cedet/semantic/db.el ./emacs-lisp/cconv.el \
|
||||
./international/ja-dic-cnv.el \
|
||||
./org/ox.el ./org/ox-texinfo.el ./org/org-macro.el ./org/org-element.el \
|
||||
./org/oc.el ./org/ol.el ./emacs-lisp/cl-lib.el
|
||||
|
||||
# Prevent any settings in the user environment causing problems.
|
||||
unexport EMACSDATA EMACSDOC EMACSLOADPATH EMACSPATH
|
||||
|
|
@ -125,10 +124,12 @@ SUBDIRS_SUBDIRS = $(filter-out ${srcdir}/cedet% ${srcdir}/leim%,${SUBDIRS})
|
|||
|
||||
# cus-load and finder-inf are not explicitly requested by anything, so
|
||||
# we add them here to make sure they get built.
|
||||
all: compile-main $(lisp)/cus-load.el $(lisp)/finder-inf.el
|
||||
all: compile-main $(lisp)/cus-load.el $(lisp)/finder-inf.el generate-ja-dic \
|
||||
org-manuals
|
||||
|
||||
PHONY_EXTRAS =
|
||||
.PHONY: all custom-deps finder-data autoloads update-subdirs $(PHONY_EXTRAS)
|
||||
.PHONY: all custom-deps finder-data autoloads update-subdirs $(PHONY_EXTRAS) \
|
||||
generate-ja-dic org-manuals
|
||||
|
||||
# custom-deps and finder-data both used to scan _all_ the *.el files.
|
||||
# This could lead to problems in parallel builds if automatically
|
||||
|
|
@ -159,6 +160,14 @@ $(lisp)/finder-inf.el:
|
|||
--eval '(setq generated-finder-keywords-file (unmsys--file-name "$(srcdir)/finder-inf.el"))' \
|
||||
-f finder-compile-keywords-make-dist ${SUBDIRS_FINDER}
|
||||
|
||||
# This is the OKURO-NASI compilation trigger.
|
||||
generate-ja-dic: main-first
|
||||
$(AM_V_at)$(MAKE) -C ../leim generate-ja-dic EMACS="$(EMACS)"
|
||||
$(AM_V_at)$(MAKE) compile-targets TARGETS="./leim/ja-dic/ja-dic.elc"
|
||||
|
||||
org-manuals: main-first
|
||||
$(AM_V_at)$(MAKE) -C ../doc/misc org.texi modus-themes.texi
|
||||
|
||||
## Comments on loaddefs generation:
|
||||
|
||||
# loaddefs depends on gen-lisp for two reasons:
|
||||
|
|
@ -167,6 +176,9 @@ $(lisp)/finder-inf.el:
|
|||
# gets created before the final emacs is dumped. Having leim
|
||||
# dependencies in ../src as well would create a parallel race condition.
|
||||
#
|
||||
# FIXME: 2) is no longer correct, so perhaps we could add unidata to
|
||||
# gen-lisp now?
|
||||
#
|
||||
# 2) Files that are marked no-update-autoloads still get recorded in loaddefs.
|
||||
# So those files should be generated before we make autoloads, if we
|
||||
# don't want a successive make autoloads to change the output file.
|
||||
|
|
@ -186,19 +198,13 @@ $(lisp)/finder-inf.el:
|
|||
# We make $(lisp)/loaddefs.el a dependency of .PHONY to cause Make to
|
||||
# ignore its time stamp. That's because the real dependencies of
|
||||
# loaddefs.el aren't known to Make, they are implemented in
|
||||
# batch-update-autoloads, which only updates the autoloads whose
|
||||
# sources have changed.
|
||||
|
||||
# Use expand-file-name rather than $abs_scrdir so that Emacs does not
|
||||
# get confused when it compares file-names for equality.
|
||||
# loaddefs-generate--emacs-batch.
|
||||
|
||||
autoloads .PHONY: $(lisp)/loaddefs.el
|
||||
$(lisp)/loaddefs.el: gen-lisp $(LOADDEFS)
|
||||
$(AM_V_GEN)$(emacs) -l autoload \
|
||||
--eval '(setq autoload-ensure-writable t)' \
|
||||
--eval '(setq autoload-builtin-package-versions t)' \
|
||||
--eval '(setq generated-autoload-file (expand-file-name (unmsys--file-name "$@")))' \
|
||||
-f batch-update-autoloads ${SUBDIRS_ALMOST}
|
||||
$(lisp)/loaddefs.el: gen-lisp $(LOADDEFS) $(lisp)/emacs-lisp/loaddefs-gen.elc
|
||||
$(AM_V_GEN)$(emacs) \
|
||||
-l $(lisp)/emacs-lisp/loaddefs-gen.elc \
|
||||
-f loaddefs-generate--emacs-batch ${SUBDIRS_ALMOST}
|
||||
|
||||
# autoloads only runs when loaddefs.el is nonexistent, although it
|
||||
# generates a number of different files. Provide a force option to enable
|
||||
|
|
@ -456,57 +462,6 @@ compile-one-process: $(LOADDEFS) compile-first
|
|||
$(emacs) $(BYTE_COMPILE_FLAGS) \
|
||||
--eval "(batch-byte-recompile-directory 0)" $(lisp)
|
||||
|
||||
# Update MH-E internal autoloads. These are not to be confused with
|
||||
# the autoloads for the MH-E entry points, which are already in loaddefs.el.
|
||||
MH_E_DIR = $(lisp)/mh-e
|
||||
MH_E_SRC = $(sort $(wildcard ${MH_E_DIR}/mh*.el))
|
||||
MH_E_SRC := $(filter-out ${MH_E_DIR}/mh-loaddefs.el,${MH_E_SRC})
|
||||
|
||||
.PHONY: mh-autoloads
|
||||
mh-autoloads: $(MH_E_DIR)/mh-loaddefs.el
|
||||
$(MH_E_DIR)/mh-loaddefs.el: $(MH_E_SRC)
|
||||
$(AM_V_GEN)$(emacs) -l autoload \
|
||||
--eval "(setq generate-autoload-cookie \";;;###mh-autoload\")" \
|
||||
--eval "(setq generated-autoload-file (expand-file-name (unmsys--file-name \"$@\")))" \
|
||||
-f batch-update-autoloads $(MH_E_DIR)
|
||||
|
||||
# Update TRAMP internal autoloads. Maybe we could move tramp*.el into
|
||||
# an own subdirectory. OTOH, it does not hurt to keep them in
|
||||
# lisp/net.
|
||||
TRAMP_DIR = $(lisp)/net
|
||||
TRAMP_SRC = $(sort $(wildcard ${TRAMP_DIR}/tramp*.el))
|
||||
TRAMP_SRC := $(filter-out ${TRAMP_DIR}/tramp-loaddefs.el,${TRAMP_SRC})
|
||||
|
||||
$(TRAMP_DIR)/tramp-loaddefs.el: $(TRAMP_SRC)
|
||||
$(AM_V_GEN)$(emacs) -l autoload \
|
||||
--eval "(setq generate-autoload-cookie \";;;###tramp-autoload\")" \
|
||||
--eval "(setq generated-autoload-file (expand-file-name (unmsys--file-name \"$@\")))" \
|
||||
-f batch-update-autoloads $(TRAMP_DIR)
|
||||
|
||||
CAL_DIR = $(lisp)/calendar
|
||||
## Those files that may contain internal calendar autoload cookies.
|
||||
CAL_SRC = $(addprefix ${CAL_DIR}/,diary-lib.el holidays.el lunar.el solar.el)
|
||||
CAL_SRC := $(sort ${CAL_SRC} $(wildcard ${CAL_DIR}/cal-*.el))
|
||||
CAL_SRC := $(filter-out ${CAL_DIR}/cal-loaddefs.el,${CAL_SRC})
|
||||
|
||||
$(CAL_DIR)/cal-loaddefs.el: $(CAL_SRC)
|
||||
$(AM_V_GEN)$(emacs) -l autoload \
|
||||
--eval "(setq generate-autoload-cookie \";;;###cal-autoload\")" \
|
||||
--eval "(setq generated-autoload-file (expand-file-name (unmsys--file-name \"$@\")))" \
|
||||
-f batch-update-autoloads $(CAL_DIR)
|
||||
|
||||
$(CAL_DIR)/diary-loaddefs.el: $(CAL_SRC) $(CAL_DIR)/cal-loaddefs.el
|
||||
$(AM_V_GEN)$(emacs) -l autoload \
|
||||
--eval "(setq generate-autoload-cookie \";;;###diary-autoload\")" \
|
||||
--eval "(setq generated-autoload-file (expand-file-name (unmsys--file-name \"$@\")))" \
|
||||
-f batch-update-autoloads $(CAL_DIR)
|
||||
|
||||
$(CAL_DIR)/hol-loaddefs.el: $(CAL_SRC) $(CAL_DIR)/diary-loaddefs.el
|
||||
$(AM_V_GEN)$(emacs) -l autoload \
|
||||
--eval "(setq generate-autoload-cookie \";;;###holiday-autoload\")" \
|
||||
--eval "(setq generated-autoload-file (expand-file-name (unmsys--file-name \"$@\")))" \
|
||||
-f batch-update-autoloads $(CAL_DIR)
|
||||
|
||||
.PHONY: bootstrap-clean distclean maintainer-clean
|
||||
|
||||
bootstrap-clean:
|
||||
|
|
|
|||
269
lisp/abbrev.el
269
lisp/abbrev.el
|
|
@ -42,12 +42,12 @@
|
|||
|
||||
(defcustom abbrev-file-name
|
||||
(locate-user-emacs-file "abbrev_defs" ".abbrev_defs")
|
||||
"Default name of file from which to read abbrevs."
|
||||
"Default name of file from which to read and where to save abbrevs."
|
||||
:initialize 'custom-initialize-delay
|
||||
:type 'file)
|
||||
|
||||
(defcustom only-global-abbrevs nil
|
||||
"Non-nil means user plans to use global abbrevs only.
|
||||
"Non-nil means user plans to use only global abbrevs.
|
||||
This makes the commands that normally define mode-specific abbrevs
|
||||
define global abbrevs instead."
|
||||
:type 'boolean
|
||||
|
|
@ -59,7 +59,8 @@ define global abbrevs instead."
|
|||
|
||||
In Abbrev mode, inserting an abbreviation causes it to expand and
|
||||
be replaced by its expansion."
|
||||
;; It's defined in C, this stops the d-m-m macro defining it again.
|
||||
;; It's defined in C, this stops the 'define-minor-mode' macro from
|
||||
;; defining it again.
|
||||
:variable abbrev-mode)
|
||||
|
||||
(put 'abbrev-mode 'safe-local-variable 'booleanp)
|
||||
|
|
@ -81,7 +82,8 @@ be replaced by its expansion."
|
|||
|
||||
(defun copy-abbrev-table (table)
|
||||
"Make a new abbrev-table with the same abbrevs as TABLE.
|
||||
Does not copy property lists."
|
||||
This function does not copy property lists of the abbrevs.
|
||||
See `define-abbrev' for the documentation of abbrev properties."
|
||||
(let ((new-table (make-abbrev-table)))
|
||||
(obarray-map
|
||||
(lambda (symbol)
|
||||
|
|
@ -93,8 +95,8 @@ Does not copy property lists."
|
|||
new-table))
|
||||
|
||||
(defun insert-abbrevs ()
|
||||
"Insert after point a description of all defined abbrevs.
|
||||
Mark is set after the inserted text."
|
||||
"Insert the description of all defined abbrevs after point.
|
||||
Set mark after the inserted text."
|
||||
(interactive)
|
||||
(push-mark
|
||||
(save-excursion
|
||||
|
|
@ -103,15 +105,15 @@ Mark is set after the inserted text."
|
|||
(point))))
|
||||
|
||||
(defun list-abbrevs (&optional local)
|
||||
"Display a list of defined abbrevs.
|
||||
If LOCAL is non-nil, interactively when invoked with a
|
||||
prefix arg, display only local, i.e. mode-specific, abbrevs.
|
||||
Otherwise display all abbrevs."
|
||||
"Display a list of the defined abbrevs.
|
||||
If LOCAL is non-nil (interactively, when invoked with a
|
||||
prefix arg), display only local, i.e. mode-specific, abbrevs.
|
||||
Otherwise display all the abbrevs."
|
||||
(interactive "P")
|
||||
(display-buffer (prepare-abbrev-list-buffer local)))
|
||||
|
||||
(defun abbrev-table-name (table)
|
||||
"Value is the name of abbrev table TABLE."
|
||||
"Return the name of the specified abbrev TABLE."
|
||||
(let ((tables abbrev-table-name-list)
|
||||
found)
|
||||
(while (and (not found) tables)
|
||||
|
|
@ -135,33 +137,33 @@ Otherwise display all abbrevs."
|
|||
(dolist (table (nreverse empty-tables))
|
||||
(insert-abbrev-table-description table t)))
|
||||
;; Note: `list-abbrevs' can display only local abbrevs, in
|
||||
;; which case editing could lose abbrevs of other tables. Thus
|
||||
;; enter `edit-abbrevs-mode' only if LOCAL is nil.
|
||||
;; which case editing could lose abbrevs of other tables.
|
||||
;; Thus enter `edit-abbrevs-mode' only if LOCAL is nil.
|
||||
(edit-abbrevs-mode))
|
||||
(goto-char (point-min))
|
||||
(set-buffer-modified-p nil)
|
||||
(current-buffer))))
|
||||
|
||||
(defun edit-abbrevs ()
|
||||
"Alter abbrev definitions by editing a list of them.
|
||||
Selects a buffer containing a list of abbrev definitions with
|
||||
point located in the abbrev table for the current buffer, and
|
||||
turns on `edit-abbrevs-mode' in that buffer.
|
||||
"Alter abbrev definitions by editing the list of abbrevs.
|
||||
This selects a buffer containing the list of abbrev definitions
|
||||
with point located in the abbrev table for the current buffer, and
|
||||
turns on `edit-abbrevs-mode' in the buffer with the list of abbrevs.
|
||||
|
||||
You can edit them and type \\<edit-abbrevs-mode-map>\\[edit-abbrevs-redefine] \
|
||||
You can edit the abbrevs and type \\<edit-abbrevs-mode-map>\\[edit-abbrevs-redefine] \
|
||||
to redefine abbrevs
|
||||
according to your editing.
|
||||
|
||||
The abbrevs editing buffer contains a header line for each
|
||||
abbrev table, which is the abbrev table name in parentheses.
|
||||
|
||||
This is followed by one line per abbrev in that table:
|
||||
The header line is followed by one line per abbrev in that table:
|
||||
|
||||
NAME USECOUNT EXPANSION HOOK
|
||||
|
||||
where NAME and EXPANSION are strings with quotes,
|
||||
USECOUNT is an integer, and HOOK is any valid function
|
||||
or may be omitted (it is usually omitted)."
|
||||
that may be omitted (it is usually omitted)."
|
||||
(interactive)
|
||||
(let ((table-name (abbrev-table-name local-abbrev-table)))
|
||||
(switch-to-buffer (prepare-abbrev-list-buffer))
|
||||
|
|
@ -182,8 +184,9 @@ or may be omitted (it is usually omitted)."
|
|||
"Define abbrevs according to current visible buffer contents.
|
||||
See documentation of `edit-abbrevs' for info on the format of the
|
||||
text you must have in the buffer.
|
||||
With argument, eliminate all abbrev definitions except
|
||||
the ones defined from the buffer now."
|
||||
If ARG is non-nil (interactively, when invoked with a prefix
|
||||
argument), eliminate all abbrev definitions except the ones
|
||||
defined by the current buffer contents."
|
||||
(interactive "P")
|
||||
(if arg (kill-all-abbrevs))
|
||||
(save-excursion
|
||||
|
|
@ -214,7 +217,8 @@ the ones defined from the buffer now."
|
|||
"Read abbrev definitions from file written with `write-abbrev-file'.
|
||||
Optional argument FILE is the name of the file to read;
|
||||
it defaults to the value of `abbrev-file-name'.
|
||||
Optional second argument QUIETLY non-nil means don't display a message."
|
||||
Optional second argument QUIETLY non-nil means don't display a message
|
||||
about loading the abbrevs."
|
||||
(interactive
|
||||
(list
|
||||
(read-file-name (format-prompt "Read abbrev file" abbrev-file-name)
|
||||
|
|
@ -223,22 +227,22 @@ Optional second argument QUIETLY non-nil means don't display a message."
|
|||
(setq abbrevs-changed nil))
|
||||
|
||||
(defun quietly-read-abbrev-file (&optional file)
|
||||
"Read abbrev definitions from file written with `write-abbrev-file'.
|
||||
"Quietly read abbrev definitions from file written with `write-abbrev-file'.
|
||||
Optional argument FILE is the name of the file to read;
|
||||
it defaults to the value of `abbrev-file-name'.
|
||||
Does not display any message."
|
||||
Do not display any messages about loading the abbrevs."
|
||||
;(interactive "fRead abbrev file: ")
|
||||
(read-abbrev-file file t))
|
||||
|
||||
(defun write-abbrev-file (&optional file verbose)
|
||||
"Write all user-level abbrev definitions to a file of Lisp code.
|
||||
This does not include system abbrevs; it includes only the abbrev tables
|
||||
listed in listed in `abbrev-table-name-list'.
|
||||
listed in `abbrev-table-name-list'.
|
||||
The file written can be loaded in another session to define the same abbrevs.
|
||||
The argument FILE is the file name to write. If omitted or nil, the file
|
||||
specified in `abbrev-file-name' is used.
|
||||
If VERBOSE is non-nil, display a message indicating where abbrevs
|
||||
have been saved."
|
||||
The argument FILE is the file name to write. If omitted or nil, it defaults
|
||||
to the value of `abbrev-file-name'.
|
||||
If VERBOSE is non-nil, display a message indicating the file where the
|
||||
abbrevs have been saved."
|
||||
(interactive
|
||||
(list
|
||||
(read-file-name "Write abbrev file: "
|
||||
|
|
@ -251,10 +255,10 @@ have been saved."
|
|||
(dolist (table
|
||||
;; We sort the table in order to ease the automatic
|
||||
;; merging of different versions of the user's abbrevs
|
||||
;; file. This is useful, for example, for when the
|
||||
;; file. This is useful, for example, when the
|
||||
;; user keeps their home directory in a revision
|
||||
;; control system, and is therefore keeping multiple
|
||||
;; slightly-differing copies loosely synchronized.
|
||||
;; control system, and therefore keeps multiple
|
||||
;; slightly-differing loosely synchronized copies.
|
||||
(sort (copy-sequence abbrev-table-name-list)
|
||||
(lambda (s1 s2)
|
||||
(string< (symbol-name s1)
|
||||
|
|
@ -268,7 +272,7 @@ have been saved."
|
|||
(write-region nil nil file nil (and (not verbose) 0)))))
|
||||
|
||||
(defun abbrev-edit-save-to-file (file)
|
||||
"Save all user-level abbrev definitions in current buffer to FILE."
|
||||
"Save to FILE all the user-level abbrev definitions in current buffer."
|
||||
(interactive
|
||||
(list (read-file-name "Save abbrevs to file: "
|
||||
(file-name-directory
|
||||
|
|
@ -279,7 +283,7 @@ have been saved."
|
|||
(write-abbrev-file file t))
|
||||
|
||||
(defun abbrev-edit-save-buffer ()
|
||||
"Save all user-level abbrev definitions in current buffer.
|
||||
"Save all the user-level abbrev definitions in current buffer.
|
||||
The saved abbrevs are written to the file specified by
|
||||
`abbrev-file-name'."
|
||||
(interactive nil edit-abbrevs-mode)
|
||||
|
|
@ -287,15 +291,16 @@ The saved abbrevs are written to the file specified by
|
|||
|
||||
|
||||
(defun add-mode-abbrev (arg)
|
||||
"Define mode-specific abbrev for last word(s) before point.
|
||||
Argument is how many words before point form the expansion;
|
||||
or zero means the region is the expansion.
|
||||
A negative argument means to undefine the specified abbrev.
|
||||
Reads the abbreviation in the minibuffer.
|
||||
"Define a mode-specific abbrev whose expansion is the last word before point.
|
||||
Prefix argument ARG says how many words before point to use for the expansion;
|
||||
zero means the entire region is the expansion.
|
||||
A negative ARG means to undefine the specified abbrev.
|
||||
|
||||
This command reads the abbreviation from the minibuffer.
|
||||
|
||||
See also `inverse-add-mode-abbrev', which performs the opposite task:
|
||||
if the abbrev text is already in the buffer, use this command to
|
||||
define an abbrev by specifying the expansion in the minibuffer.
|
||||
if the abbreviation is already in the buffer, use that command to define
|
||||
a mode-specific abbrev by specifying its expansion in the minibuffer.
|
||||
|
||||
Don't use this function in a Lisp program; use `define-abbrev' instead."
|
||||
(interactive "p")
|
||||
|
|
@ -307,15 +312,16 @@ Don't use this function in a Lisp program; use `define-abbrev' instead."
|
|||
"Mode" arg))
|
||||
|
||||
(defun add-global-abbrev (arg)
|
||||
"Define global (all modes) abbrev for last word(s) before point.
|
||||
The prefix argument specifies the number of words before point that form the
|
||||
expansion; or zero means the region is the expansion.
|
||||
A negative argument means to undefine the specified abbrev.
|
||||
This command uses the minibuffer to read the abbreviation.
|
||||
"Define a global (all modes) abbrev whose expansion is last word before point.
|
||||
Prefix argument ARG says how many words before point to use for the expansion;
|
||||
zero means the entire region is the expansion.
|
||||
A negative ARG means to undefine the specified abbrev.
|
||||
|
||||
This command reads the abbreviation from the minibuffer.
|
||||
|
||||
See also `inverse-add-global-abbrev', which performs the opposite task:
|
||||
if the abbrev text is already in the buffer, use this command to
|
||||
define an abbrev by specifying the expansion in the minibuffer.
|
||||
if the abbreviation is already in the buffer, use that command to define
|
||||
a global abbrev by specifying its expansion in the minibuffer.
|
||||
|
||||
Don't use this function in a Lisp program; use `define-abbrev' instead."
|
||||
(interactive "p")
|
||||
|
|
@ -329,25 +335,30 @@ Don't use this function in a Lisp program; use `define-abbrev' instead."
|
|||
(save-excursion (forward-word (- arg)) (point))))))
|
||||
name)
|
||||
(setq name
|
||||
(read-string (format (if exp "%s abbrev for \"%s\": "
|
||||
(read-string (format (if exp "%s abbrev that expands into \"%s\": "
|
||||
"Undefine %s abbrev: ")
|
||||
type exp)))
|
||||
(set-text-properties 0 (length name) nil name)
|
||||
(if (or (null exp)
|
||||
(not (abbrev-expansion name table))
|
||||
(y-or-n-p (format "%s expands to \"%s\"; redefine? "
|
||||
(y-or-n-p (format "%s expands into \"%s\"; redefine? "
|
||||
name (abbrev-expansion name table))))
|
||||
(define-abbrev table (downcase name) exp))))
|
||||
|
||||
(defun inverse-add-mode-abbrev (n)
|
||||
"Define last word before point as a mode-specific abbrev.
|
||||
With prefix argument N, defines the Nth word before point.
|
||||
This command uses the minibuffer to read the expansion.
|
||||
Expands the abbreviation after defining it.
|
||||
"Define the word before point as a mode-specific abbreviation.
|
||||
With prefix argument N, define the Nth word before point as the
|
||||
abbreviation. Negative N means use the Nth word after point.
|
||||
|
||||
If `only-global-abbrevs' is non-nil, this command defines a
|
||||
global (mode-independent) abbrev instead of a mode-specific one.
|
||||
|
||||
This command reads the expansion from the minibuffer, defines the
|
||||
abbrev, and then expands the abbreviation in the current buffer.
|
||||
|
||||
See also `add-mode-abbrev', which performs the opposite task:
|
||||
if the expansion is already in the buffer, use this command
|
||||
to define an abbrev by specifying the abbrev in the minibuffer."
|
||||
if the expansion is already in the buffer, use that command
|
||||
to define an abbrev by specifying the abbreviation in the minibuffer."
|
||||
(interactive "p")
|
||||
(inverse-add-abbrev
|
||||
(if only-global-abbrevs
|
||||
|
|
@ -357,14 +368,16 @@ to define an abbrev by specifying the abbrev in the minibuffer."
|
|||
"Mode" n))
|
||||
|
||||
(defun inverse-add-global-abbrev (n)
|
||||
"Define last word before point as a global (mode-independent) abbrev.
|
||||
With prefix argument N, defines the Nth word before point.
|
||||
This command uses the minibuffer to read the expansion.
|
||||
Expands the abbreviation after defining it.
|
||||
"Define the word before point as a global (mode-independent) abbreviation.
|
||||
With prefix argument N, define the Nth word before point as the
|
||||
abbreviation. Negative N means use the Nth word after point.
|
||||
|
||||
This command reads the expansion from the minibuffer, defines the
|
||||
abbrev, and then expands the abbreviation in the current buffer.
|
||||
|
||||
See also `add-global-abbrev', which performs the opposite task:
|
||||
if the expansion is already in the buffer, use this command
|
||||
to define an abbrev by specifying the abbrev in the minibuffer."
|
||||
if the expansion is already in the buffer, use that command
|
||||
to define an abbrev by specifying the abbreviation in the minibuffer."
|
||||
(interactive "p")
|
||||
(inverse-add-abbrev global-abbrev-table "Global" n))
|
||||
|
||||
|
|
@ -378,10 +391,10 @@ to define an abbrev by specifying the abbrev in the minibuffer."
|
|||
(setq start (point)
|
||||
name (buffer-substring-no-properties start end)))
|
||||
|
||||
(setq exp (read-string (format "%s expansion for \"%s\": " type name)
|
||||
(setq exp (read-string (format "Expansion for %s abbrev \"%s\": " type name)
|
||||
nil nil nil t))
|
||||
(when (or (not (abbrev-expansion name table))
|
||||
(y-or-n-p (format "%s expands to \"%s\"; redefine? "
|
||||
(y-or-n-p (format "%s expands into \"%s\"; redefine? "
|
||||
name (abbrev-expansion name table))))
|
||||
(define-abbrev table (downcase name) exp)
|
||||
(save-excursion
|
||||
|
|
@ -389,10 +402,11 @@ to define an abbrev by specifying the abbrev in the minibuffer."
|
|||
(expand-abbrev)))))
|
||||
|
||||
(defun abbrev-prefix-mark (&optional arg)
|
||||
"Mark current point as the beginning of an abbrev.
|
||||
The abbrev to be expanded starts here rather than at beginning of
|
||||
word. This way, you can expand an abbrev with a prefix: insert
|
||||
the prefix, use this command, then insert the abbrev.
|
||||
"Mark point as the beginning of an abbreviation.
|
||||
The abbrev to be expanded starts at point rather than at the
|
||||
beginning of a word. This way, you can expand an abbrev with
|
||||
a prefix: insert the prefix, use this command, then insert the
|
||||
abbrev.
|
||||
|
||||
This command inserts a hyphen after the prefix, and if the abbrev
|
||||
is subsequently expanded, this hyphen will be removed.
|
||||
|
|
@ -407,8 +421,8 @@ argument."
|
|||
(insert "-"))
|
||||
|
||||
(defun expand-region-abbrevs (start end &optional noquery)
|
||||
"For abbrev occurrence in the region, offer to expand it.
|
||||
The user is asked to type \\`y' or \\`n' for each occurrence.
|
||||
"For each abbrev occurrence in the region, offer to expand it.
|
||||
Ask the user to type `y' or `n' for each occurrence.
|
||||
A prefix argument means don't query; expand all abbrevs."
|
||||
(interactive "r\nP")
|
||||
(save-excursion
|
||||
|
|
@ -429,18 +443,19 @@ A prefix argument means don't query; expand all abbrevs."
|
|||
;;; Abbrev properties.
|
||||
|
||||
(defun abbrev-table-get (table prop)
|
||||
"Get the PROP property of abbrev table TABLE."
|
||||
"Get the property PROP of abbrev table TABLE."
|
||||
(let ((sym (obarray-get table "")))
|
||||
(if sym (get sym prop))))
|
||||
|
||||
(defun abbrev-table-put (table prop val)
|
||||
"Set the PROP property of abbrev table TABLE to VAL."
|
||||
"Set the property PROP of abbrev table TABLE to VAL."
|
||||
(let ((sym (obarray-put table "")))
|
||||
(set sym nil) ; Make sure it won't be confused for an abbrev.
|
||||
(put sym prop val)))
|
||||
|
||||
(defalias 'abbrev-get 'get
|
||||
"Get the property PROP of abbrev ABBREV
|
||||
See `define-abbrev' for the effect of some special properties.
|
||||
|
||||
\(fn ABBREV PROP)")
|
||||
|
||||
|
|
@ -500,7 +515,8 @@ for any particular abbrev defined in both.")
|
|||
(defvar abbrev-minor-mode-table-alist nil
|
||||
"Alist of abbrev tables to use for minor modes.
|
||||
Each element looks like (VARIABLE . ABBREV-TABLE);
|
||||
ABBREV-TABLE is active whenever VARIABLE's value is non-nil.
|
||||
ABBREV-TABLE is active whenever VARIABLE's value is non-nil;
|
||||
VARIABLE is supposed to be a minor-mode variable.
|
||||
ABBREV-TABLE can also be a list of abbrev tables.")
|
||||
|
||||
(defvar fundamental-mode-abbrev-table
|
||||
|
|
@ -511,11 +527,11 @@ ABBREV-TABLE can also be a list of abbrev tables.")
|
|||
"The abbrev table of mode-specific abbrevs for Fundamental Mode.")
|
||||
|
||||
(defvar abbrevs-changed nil
|
||||
"Set non-nil by defining or altering any word abbrevs.
|
||||
"Non-nil if any word abbrevs were defined or altered.
|
||||
This causes `save-some-buffers' to offer to save the abbrevs.")
|
||||
|
||||
(defcustom abbrev-all-caps nil
|
||||
"Non-nil means expand multi-word abbrevs all caps if abbrev was so."
|
||||
"Non-nil means expand multi-word abbrevs in all caps if the abbrev was so."
|
||||
:type 'boolean
|
||||
:group 'abbrev-mode)
|
||||
|
||||
|
|
@ -532,17 +548,17 @@ Trying to expand an abbrev in any other buffer clears `abbrev-start-location'.")
|
|||
"The abbrev-symbol of the last abbrev expanded. See `abbrev-symbol'.")
|
||||
|
||||
(defvar last-abbrev-text nil
|
||||
"The exact text of the last abbrev expanded.
|
||||
"The exact text of the last abbrev that was expanded.
|
||||
It is nil if the abbrev has already been unexpanded.")
|
||||
|
||||
(defvar last-abbrev-location 0
|
||||
"The location of the start of the last abbrev expanded.")
|
||||
"The location of the start of the last abbrev that was expanded.")
|
||||
|
||||
;; (defvar-local local-abbrev-table fundamental-mode-abbrev-table
|
||||
;; "Local (mode-specific) abbrev table of current buffer.")
|
||||
|
||||
(defun clear-abbrev-table (table)
|
||||
"Undefine all abbrevs in abbrev table TABLE, leaving it empty."
|
||||
"Undefine all abbrevs in abbrev table TABLE, leaving TABLE empty."
|
||||
(setq abbrevs-changed t)
|
||||
(let* ((sym (obarray-get table "")))
|
||||
(dotimes (i (length table))
|
||||
|
|
@ -557,9 +573,9 @@ It is nil if the abbrev has already been unexpanded.")
|
|||
;; For backward compatibility, always return nil.
|
||||
nil)
|
||||
|
||||
(defun define-abbrev (table name expansion &optional hook &rest props)
|
||||
"Define an abbrev in TABLE named NAME, to expand to EXPANSION and call HOOK.
|
||||
NAME must be a string, and should be lower-case.
|
||||
(defun define-abbrev (table abbrev expansion &optional hook &rest props)
|
||||
"Define ABBREV in TABLE, to expand into EXPANSION and optionally call HOOK.
|
||||
ABBREV must be a string, and should be lower-case.
|
||||
EXPANSION should usually be a string.
|
||||
To undefine an abbrev, define it with EXPANSION = nil.
|
||||
If HOOK is non-nil, it should be a function of no arguments;
|
||||
|
|
@ -583,8 +599,8 @@ PROPS is a property list. The following properties are special:
|
|||
overwrite a non-system abbreviation of the same name.
|
||||
- `:case-fixed': non-nil means that abbreviations are looked up without
|
||||
case-folding, and the expansion is not capitalized/upcased.
|
||||
- `:enable-function': a function of no argument which returns non-nil if the
|
||||
abbrev should be used for a particular call of `expand-abbrev'.
|
||||
- `:enable-function': a function of no arguments which returns non-nil
|
||||
if the abbrev should be used for a particular call of `expand-abbrev'.
|
||||
|
||||
An obsolete but still supported calling form is:
|
||||
|
||||
|
|
@ -599,7 +615,7 @@ An obsolete but still supported calling form is:
|
|||
(setq props (plist-put props :abbrev-table-modiff
|
||||
(abbrev-table-get table :abbrev-table-modiff)))
|
||||
(let ((system-flag (plist-get props :system))
|
||||
(sym (obarray-put table name)))
|
||||
(sym (obarray-put table abbrev)))
|
||||
;; Don't override a prior user-defined abbrev with a system abbrev,
|
||||
;; unless system-flag is `force'.
|
||||
(unless (and (not (memq system-flag '(nil force)))
|
||||
|
|
@ -619,7 +635,7 @@ An obsolete but still supported calling form is:
|
|||
(if (eq 'force system-flag) (plist-put props :system t) props))
|
||||
(abbrev-table-put table :abbrev-table-modiff
|
||||
(1+ (abbrev-table-get table :abbrev-table-modiff))))
|
||||
name))
|
||||
abbrev))
|
||||
|
||||
(defun abbrev--check-chars (abbrev global)
|
||||
"Check if the characters in ABBREV have word syntax in either the
|
||||
|
|
@ -639,7 +655,7 @@ current (if global is nil) or standard syntax table."
|
|||
(if global "in the standard syntax" "in this mode"))))))
|
||||
|
||||
(defun define-global-abbrev (abbrev expansion)
|
||||
"Define ABBREV as a global abbreviation for EXPANSION.
|
||||
"Define ABBREV as a global abbreviation that expands into EXPANSION.
|
||||
The characters in ABBREV must all be word constituents in the standard
|
||||
syntax table."
|
||||
(interactive "sDefine global abbrev: \nsExpansion for %s: ")
|
||||
|
|
@ -647,7 +663,7 @@ syntax table."
|
|||
(define-abbrev global-abbrev-table (downcase abbrev) expansion))
|
||||
|
||||
(defun define-mode-abbrev (abbrev expansion)
|
||||
"Define ABBREV as a mode-specific abbreviation for EXPANSION.
|
||||
"Define ABBREV as a mode-specific abbreviation that expands into EXPANSION.
|
||||
The characters in ABBREV must all be word-constituents in the current mode."
|
||||
(interactive "sDefine mode abbrev: \nsExpansion for %s: ")
|
||||
(unless local-abbrev-table
|
||||
|
|
@ -656,8 +672,8 @@ The characters in ABBREV must all be word-constituents in the current mode."
|
|||
(define-abbrev local-abbrev-table (downcase abbrev) expansion))
|
||||
|
||||
(defun abbrev--active-tables (&optional tables)
|
||||
"Return the list of abbrev tables currently active.
|
||||
TABLES if non-nil overrides the usual rules. It can hold
|
||||
"Return the list of abbrev tables that are currently active.
|
||||
TABLES, if non-nil, overrides the usual rules. It can hold
|
||||
either a single abbrev table or a list of abbrev tables."
|
||||
;; We could just remove the `tables' arg and let callers use
|
||||
;; (or table (abbrev--active-tables)) but then they'd have to be careful
|
||||
|
|
@ -683,7 +699,7 @@ either a single abbrev table or a list of abbrev tables."
|
|||
"Return the symbol representing abbrev named ABBREV in TABLE.
|
||||
This symbol's name is ABBREV, but it is not the canonical symbol of that name;
|
||||
it is interned in the abbrev-table TABLE rather than the normal obarray.
|
||||
The value is nil if that abbrev is not defined."
|
||||
The value is nil if such an abbrev is not defined."
|
||||
(let* ((case-fold (not (abbrev-table-get table :case-fixed)))
|
||||
;; In case the table doesn't set :case-fixed but some of the
|
||||
;; abbrevs do, we have to be careful.
|
||||
|
|
@ -700,11 +716,11 @@ The value is nil if that abbrev is not defined."
|
|||
sym)))
|
||||
|
||||
(defun abbrev-symbol (abbrev &optional table)
|
||||
"Return the symbol representing abbrev named ABBREV.
|
||||
"Return the symbol representing the abbrev named ABBREV in TABLE.
|
||||
This symbol's name is ABBREV, but it is not the canonical symbol of that name;
|
||||
it is interned in an abbrev-table rather than the normal obarray.
|
||||
The value is nil if that abbrev is not defined.
|
||||
Optional second arg TABLE is abbrev table to look it up in.
|
||||
The value is nil if such an abbrev is not defined.
|
||||
Optional second arg TABLE is the abbrev table to look it up in.
|
||||
The default is to try buffer's mode-specific abbrev table, then global table."
|
||||
(let ((tables (abbrev--active-tables table))
|
||||
sym)
|
||||
|
|
@ -717,7 +733,7 @@ The default is to try buffer's mode-specific abbrev table, then global table."
|
|||
|
||||
(defun abbrev-expansion (abbrev &optional table)
|
||||
"Return the string that ABBREV expands into in the current buffer.
|
||||
Optionally specify an abbrev table as second arg;
|
||||
Optionally specify an abbrev TABLE as second arg;
|
||||
then ABBREV is looked up in that table only."
|
||||
(symbol-value (abbrev-symbol abbrev table)))
|
||||
|
||||
|
|
@ -781,9 +797,9 @@ then ABBREV is looked up in that table only."
|
|||
(defun abbrev-insert (abbrev &optional name wordstart wordend)
|
||||
"Insert abbrev ABBREV at point.
|
||||
If non-nil, NAME is the name by which this abbrev was found.
|
||||
If non-nil, WORDSTART is the place where to insert the abbrev.
|
||||
If WORDEND is non-nil, the abbrev replaces the previous text between
|
||||
WORDSTART and WORDEND.
|
||||
If non-nil, WORDSTART is the buffer position where to insert the abbrev.
|
||||
If WORDEND is non-nil, it is a buffer position; the abbrev replaces the
|
||||
previous text between WORDSTART and WORDEND.
|
||||
Return ABBREV if the expansion should be considered as having taken place.
|
||||
The return value can be influenced by a `no-self-insert' property;
|
||||
see `define-abbrev' for details."
|
||||
|
|
@ -848,7 +864,8 @@ see `define-abbrev' for details."
|
|||
|
||||
(defvar abbrev-expand-function #'abbrev--default-expand
|
||||
"Function that `expand-abbrev' uses to perform abbrev expansion.
|
||||
Takes no argument and should return the abbrev symbol if expansion took place.")
|
||||
Takes no arguments, and should return the abbrev symbol if expansion
|
||||
took place.")
|
||||
|
||||
(defcustom abbrev-suggest nil
|
||||
"Non-nil means suggest using abbrevs to save typing.
|
||||
|
|
@ -907,15 +924,17 @@ Expansion is a string of one or more words."
|
|||
|
||||
(defun abbrev--suggest-above-threshold (expansion)
|
||||
"Return non-nil if the abbrev in EXPANSION provides significant savings.
|
||||
A significant saving, here, is the difference in length between
|
||||
the abbrev and the abbrev expansion. EXPANSION is a cons cell
|
||||
where the car is the expansion and the cdr is the abbrev."
|
||||
A significant saving, here, means the difference in length between
|
||||
the abbrev and its expansion is not below the threshold specified
|
||||
by the value of `abbrev-suggest-hint-threshold'.
|
||||
EXPANSION is a cons cell where the car is the expansion and the cdr is
|
||||
the abbrev."
|
||||
(>= (- (length (car expansion))
|
||||
(length (cdr expansion)))
|
||||
abbrev-suggest-hint-threshold))
|
||||
|
||||
(defvar abbrev--suggest-saved-recommendations nil
|
||||
"Keeps a list of expansions that have abbrevs defined.
|
||||
"Keeps the list of expansions that have abbrevs defined.
|
||||
The user can show this list by calling
|
||||
`abbrev-suggest-show-report'.")
|
||||
|
||||
|
|
@ -931,7 +950,7 @@ EXPANSION is a cons cell where the `car' is the expansion and the
|
|||
(push expansion abbrev--suggest-saved-recommendations))
|
||||
|
||||
(defun abbrev--suggest-shortest-abbrev (new current)
|
||||
"Return the shortest abbrev of NEW and CURRENT.
|
||||
"Return the shortest of the two abbrevs given by NEW and CURRENT.
|
||||
NEW and CURRENT are cons cells where the `car' is the expansion
|
||||
and the `cdr' is the abbrev."
|
||||
(if (not current)
|
||||
|
|
@ -960,8 +979,8 @@ informed about the existing abbrev."
|
|||
|
||||
(defun abbrev--suggest-get-totals ()
|
||||
"Return a list of all expansions and how many times they were used.
|
||||
Each expansion is a cons cell where the `car' is the expansion
|
||||
and the `cdr' is the number of times the expansion has been
|
||||
Each expansion in the returned list is a cons cell where the `car' is the
|
||||
expansion text and the `cdr' is the number of times the expansion has been
|
||||
typed."
|
||||
(let (total cell)
|
||||
(dolist (expansion abbrev--suggest-saved-recommendations)
|
||||
|
|
@ -1089,11 +1108,11 @@ Presumes that `standard-output' points to `current-buffer'."
|
|||
(defun insert-abbrev-table-description (name &optional readable)
|
||||
"Insert before point a full description of abbrev table named NAME.
|
||||
NAME is a symbol whose value is an abbrev table.
|
||||
If optional 2nd arg READABLE is non-nil, a human-readable description
|
||||
is inserted.
|
||||
If optional 2nd arg READABLE is non-nil, insert a human-readable
|
||||
description.
|
||||
|
||||
If READABLE is nil, an expression is inserted. The expression is
|
||||
a call to `define-abbrev-table' that when evaluated will define
|
||||
If READABLE is nil, insert an expression. The expression is
|
||||
a call to `define-abbrev-table' that, when evaluated, will define
|
||||
the abbrev table NAME exactly as it is currently defined.
|
||||
Abbrevs marked as \"system abbrevs\" are ignored."
|
||||
(let ((symbols (abbrev--table-symbols name readable)))
|
||||
|
|
@ -1140,10 +1159,10 @@ Properties with special meaning:
|
|||
case-folding, and the expansion is not capitalized/upcased.
|
||||
- `:regexp' is a regular expression that specifies how to extract the
|
||||
name of the abbrev before point. The submatch 1 is treated
|
||||
as the potential name of an abbrev. If :regexp is nil, the default
|
||||
as the potential name of an abbrev. If `:regexp' is nil, the default
|
||||
behavior uses `backward-word' and `forward-word' to extract the name
|
||||
of the abbrev, which can therefore only be a single word.
|
||||
- `:enable-function' can be set to a function of no argument which returns
|
||||
of the abbrev, which can therefore by default only be a single word.
|
||||
- `:enable-function' can be set to a function of no arguments which returns
|
||||
non-nil if and only if the abbrevs in this table should be used for this
|
||||
instance of `expand-abbrev'."
|
||||
(declare (doc-string 3) (indent defun))
|
||||
|
|
@ -1172,7 +1191,7 @@ Properties with special meaning:
|
|||
|
||||
(defun abbrev-table-menu (table &optional prompt sortfun)
|
||||
"Return a menu that shows all abbrevs in TABLE.
|
||||
Selecting an entry runs `abbrev-insert'.
|
||||
Selecting an entry runs `abbrev-insert' for that entry's abbrev.
|
||||
PROMPT is the prompt to use for the keymap.
|
||||
SORTFUN is passed to `sort' to change the default ordering."
|
||||
(unless sortfun (setq sortfun 'string-lessp))
|
||||
|
|
@ -1197,6 +1216,28 @@ This mode is for editing abbrevs in a buffer prepared by `edit-abbrevs',
|
|||
which see."
|
||||
:interactive nil)
|
||||
|
||||
(defun abbrev--possibly-save (query &optional arg)
|
||||
;; Query mode.
|
||||
(if (eq query 'query)
|
||||
(and save-abbrevs abbrevs-changed)
|
||||
;; Maybe save abbrevs, and record whether we either saved them or
|
||||
;; asked to.
|
||||
(and save-abbrevs
|
||||
abbrevs-changed
|
||||
(progn
|
||||
(if (or arg
|
||||
(eq save-abbrevs 'silently)
|
||||
(y-or-n-p (format "Save abbrevs in %s? " abbrev-file-name)))
|
||||
(progn
|
||||
(write-abbrev-file nil)
|
||||
nil)
|
||||
;; Don't keep bothering user if they say no.
|
||||
(setq abbrevs-changed nil)
|
||||
;; Inhibit message in `save-some-buffers'.
|
||||
t)))))
|
||||
|
||||
(add-hook 'save-some-buffers-functions #'abbrev--possibly-save)
|
||||
|
||||
(provide 'abbrev)
|
||||
|
||||
;;; abbrev.el ends here
|
||||
|
|
|
|||
|
|
@ -234,7 +234,7 @@ This vector holds the faces used for SGR control sequence parameters 0
|
|||
to 7.
|
||||
|
||||
This variable is obsolete. To customize the display of faces used by
|
||||
ansi-color, change 'ansi-color-FACE', e.g. `ansi-color-bold'. To
|
||||
ansi-color, change `ansi-color-FACE', e.g. `ansi-color-bold'. To
|
||||
customize the actual faces used (e.g. to temporarily display SGR
|
||||
control sequences differently), use `ansi-color-basic-faces-vector'."
|
||||
:type '(vector face face face face face face face face)
|
||||
|
|
@ -249,7 +249,7 @@ This vector holds the colors used for SGR control sequence parameters
|
|||
30 to 37 (foreground colors) and 40 to 47 (background colors).
|
||||
|
||||
This variable is obsolete. To customize the display of colors used by
|
||||
ansi-color, change 'ansi-color-COLOR', e.g. `ansi-color-red'. To
|
||||
ansi-color, change `ansi-color-COLOR', e.g. `ansi-color-red'. To
|
||||
customize the actual faces used (e.g. to temporarily display SGR
|
||||
control sequences differently), use `ansi-color-normal-colors-vector'."
|
||||
:type '(vector (choice color (cons color color))
|
||||
|
|
|
|||
|
|
@ -518,7 +518,7 @@ variables, not just user options."
|
|||
(if (or current-prefix-arg apropos-do-all)
|
||||
"variable" "user option"))
|
||||
current-prefix-arg))
|
||||
(apropos-command pattern nil
|
||||
(apropos-command pattern (or do-all apropos-do-all)
|
||||
(if (or do-all apropos-do-all)
|
||||
(lambda (symbol)
|
||||
(and (boundp symbol)
|
||||
|
|
@ -874,7 +874,7 @@ Optional arg BUFFER (default: current buffer) is the buffer to check."
|
|||
apropos-all-words apropos-accumulator))
|
||||
(setq var (apropos-value-internal #'local-variable-if-set-p symb
|
||||
#'symbol-value)))
|
||||
(when (and (fboundp 'apropos-false-hit-str) (apropos-false-hit-str var))
|
||||
(when (apropos-false-hit-str var)
|
||||
(setq var nil))
|
||||
(when var
|
||||
(setq apropos-accumulator (cons (list symb (apropos-score-str var) nil var)
|
||||
|
|
@ -1055,7 +1055,13 @@ non-nil."
|
|||
(setq sepa (goto-char sepb)))))
|
||||
|
||||
(defun apropos-documentation-check-elc-file (file)
|
||||
(if (member file apropos-files-scanned)
|
||||
;; .elc files have the location of the file specified as #$, but for
|
||||
;; built-in files, that's a relative name (while for the rest, it's
|
||||
;; absolute). So expand the name in the former case.
|
||||
(unless (file-name-absolute-p file)
|
||||
(setq file (expand-file-name file lisp-directory)))
|
||||
(if (or (member file apropos-files-scanned)
|
||||
(not (file-exists-p file)))
|
||||
nil
|
||||
(let (symbol doc beg end this-is-a-variable)
|
||||
(setq apropos-files-scanned (cons file apropos-files-scanned))
|
||||
|
|
@ -1247,6 +1253,19 @@ as a heading."
|
|||
'apropos-user-option
|
||||
'apropos-variable)
|
||||
(not nosubst))
|
||||
;; Insert an excerpt of variable values.
|
||||
(when (boundp symbol)
|
||||
(insert " Value: ")
|
||||
(let* ((print-escape-newlines t)
|
||||
(value (prin1-to-string (symbol-value symbol)))
|
||||
(truncated (truncate-string-to-width
|
||||
value (- (window-width) 20) nil nil t)))
|
||||
(insert truncated)
|
||||
(unless (equal value truncated)
|
||||
(buttonize-region (1- (point)) (point)
|
||||
(lambda (_)
|
||||
(message "Value: %s" value))))
|
||||
(insert "\n")))
|
||||
(apropos-print-doc 7 'apropos-group t)
|
||||
(apropos-print-doc 6 'apropos-face t)
|
||||
(apropos-print-doc 5 'apropos-widget t)
|
||||
|
|
@ -1262,12 +1281,13 @@ as a heading."
|
|||
(let ((doc (nth i apropos-item)))
|
||||
(when (stringp doc)
|
||||
(if apropos-compact-layout
|
||||
(insert (propertize "\t" 'display '(space :align-to 32)) " ")
|
||||
(insert (propertize "\t" 'display '(space :align-to 32)))
|
||||
(insert " "))
|
||||
(if apropos-multi-type
|
||||
(let ((button-face (button-type-get type 'face)))
|
||||
(unless (consp button-face)
|
||||
(setq button-face (list button-face)))
|
||||
(insert " ")
|
||||
(insert-text-button
|
||||
(if apropos-compact-layout
|
||||
(format "<%s>" (button-type-get type 'apropos-short-label))
|
||||
|
|
|
|||
|
|
@ -767,29 +767,27 @@ Return COLUMN."
|
|||
|
||||
;;; Array mode.
|
||||
|
||||
(defvar array-mode-map
|
||||
(let ((map (make-keymap)))
|
||||
(define-key map "\M-ad" #'array-display-local-variables)
|
||||
(define-key map "\M-am" #'array-make-template)
|
||||
(define-key map "\M-ae" #'array-expand-rows)
|
||||
(define-key map "\M-ar" #'array-reconfigure-rows)
|
||||
(define-key map "\M-a=" #'array-what-position)
|
||||
(define-key map "\M-ag" #'array-goto-cell)
|
||||
(define-key map "\M-af" #'array-fill-rectangle)
|
||||
(define-key map "\C-n" #'array-next-row)
|
||||
(define-key map "\C-p" #'array-previous-row)
|
||||
(define-key map "\C-f" #'array-forward-column)
|
||||
(define-key map "\C-b" #'array-backward-column)
|
||||
(define-key map "\M-n" #'array-copy-down)
|
||||
(define-key map "\M-p" #'array-copy-up)
|
||||
(define-key map "\M-f" #'array-copy-forward)
|
||||
(define-key map "\M-b" #'array-copy-backward)
|
||||
(define-key map "\M-\C-n" #'array-copy-row-down)
|
||||
(define-key map "\M-\C-p" #'array-copy-row-up)
|
||||
(define-key map "\M-\C-f" #'array-copy-column-forward)
|
||||
(define-key map "\M-\C-b" #'array-copy-column-backward)
|
||||
map)
|
||||
"Keymap used in array mode.")
|
||||
(defvar-keymap array-mode-map
|
||||
:doc "Keymap used in array mode."
|
||||
"M-a d" #'array-display-local-variables
|
||||
"M-a m" #'array-make-template
|
||||
"M-a e" #'array-expand-rows
|
||||
"M-a r" #'array-reconfigure-rows
|
||||
"M-a =" #'array-what-position
|
||||
"M-a g" #'array-goto-cell
|
||||
"M-a f" #'array-fill-rectangle
|
||||
"C-n" #'array-next-row
|
||||
"C-p" #'array-previous-row
|
||||
"C-f" #'array-forward-column
|
||||
"C-b" #'array-backward-column
|
||||
"M-n" #'array-copy-down
|
||||
"M-p" #'array-copy-up
|
||||
"M-f" #'array-copy-forward
|
||||
"M-b" #'array-copy-backward
|
||||
"C-M-n" #'array-copy-row-down
|
||||
"C-M-p" #'array-copy-row-up
|
||||
"C-M-f" #'array-copy-column-forward
|
||||
"C-M-b" #'array-copy-column-backward)
|
||||
|
||||
|
||||
(put 'array-mode 'mode-class 'special)
|
||||
|
|
|
|||
|
|
@ -89,7 +89,7 @@ If this contains a %s, that will be replaced by the matching rule."
|
|||
:type 'string
|
||||
:version "28.1")
|
||||
|
||||
(declare-function sgml-tag "sgml-mode" (&optional str arg))
|
||||
(declare-function sgml-tag "textmodes/sgml-mode" (&optional str arg))
|
||||
|
||||
(defcustom auto-insert-alist
|
||||
`((("\\.\\([Hh]\\|hh\\|hpp\\|hxx\\|h\\+\\+\\)\\'" . "C / C++ header")
|
||||
|
|
|
|||
|
|
@ -293,6 +293,8 @@ accumulated, and tries to keep it close to zero."
|
|||
(mouse-avoidance-set-mouse-position (cons (+ (car (cdr cur)) deltax)
|
||||
(+ (cdr (cdr cur)) deltay))))))
|
||||
|
||||
(defvar x-pointer-invisible) ; silence byte-compiler
|
||||
|
||||
(defun mouse-avoidance-random-shape ()
|
||||
"Return a random cursor shape.
|
||||
This assumes that any variable whose name begins with x-pointer- and
|
||||
|
|
@ -300,12 +302,14 @@ has an integer value is a valid cursor shape. You might want to
|
|||
redefine this function to suit your own tastes."
|
||||
(if (null mouse-avoidance-pointer-shapes)
|
||||
(progn
|
||||
(setq mouse-avoidance-pointer-shapes
|
||||
(mapcar (lambda (x) (symbol-value (intern x)))
|
||||
(all-completions "x-pointer-" obarray
|
||||
(dolist (i (all-completions "x-pointer-" obarray
|
||||
(lambda (x)
|
||||
(and (boundp x)
|
||||
(integerp (symbol-value x)))))))))
|
||||
(integerp (symbol-value x))))))
|
||||
(ignore-errors
|
||||
(let ((value (symbol-value (intern i))))
|
||||
(when (< value x-pointer-invisible)
|
||||
(push value mouse-avoidance-pointer-shapes)))))))
|
||||
(seq-random-elt mouse-avoidance-pointer-shapes))
|
||||
|
||||
(defun mouse-avoidance-ignore-p ()
|
||||
|
|
@ -317,7 +321,8 @@ redefine this function to suit your own tastes."
|
|||
(not (eq (car mp) (selected-frame)))
|
||||
;; Don't interfere with ongoing `mouse-drag-and-drop-region'
|
||||
;; (Bug#36269).
|
||||
(eq track-mouse 'dropping)
|
||||
(or (eq track-mouse 'dropping)
|
||||
(eq track-mouse 'drag-source))
|
||||
;; Don't do anything if last event was a mouse event.
|
||||
;; FIXME: this code fails in the case where the mouse was moved
|
||||
;; since the last key-press but without generating any event.
|
||||
|
|
|
|||
|
|
@ -232,6 +232,40 @@ The text being displayed in the echo area is controlled by the variables
|
|||
(funcall battery-status-function))
|
||||
"Battery status not available")))
|
||||
|
||||
(defcustom battery-update-functions nil
|
||||
"Functions run by `display-battery-mode' after updating the status.
|
||||
These functions will be called with one parameter, an alist that
|
||||
contains data about the current battery status. The keys in the
|
||||
alist are single characters and the values are strings.
|
||||
Different battery backends deliver different information, so some
|
||||
of the following information may or may not be available:
|
||||
|
||||
v: driver-version
|
||||
V: bios-version
|
||||
I: bios-interface
|
||||
L: line-status
|
||||
B: battery-status
|
||||
b: battery-status-symbol
|
||||
p: load-percentage
|
||||
s: seconds
|
||||
m: minutes
|
||||
h: hours
|
||||
t: remaining-time
|
||||
|
||||
For instance, to play an alarm when the battery power dips below
|
||||
10%, you could use a function like the following:
|
||||
|
||||
(defvar my-prev-battery nil)
|
||||
(defun my-battery-alarm (data)
|
||||
(when (and my-prev-battery
|
||||
(equal (alist-get ?L data) \"off-line\")
|
||||
(< (string-to-number (alist-get ?p data)) 10)
|
||||
(>= (string-to-number (alist-get ?p my-prev-battery)) 10))
|
||||
(play-sound-file \"~/alarm.wav\" 5))
|
||||
(setq my-prev-battery data))"
|
||||
:version "29.1"
|
||||
:type '(repeat function))
|
||||
|
||||
;;;###autoload
|
||||
(define-minor-mode display-battery-mode
|
||||
"Toggle battery status display in mode line (Display Battery mode).
|
||||
|
|
@ -239,7 +273,11 @@ The text being displayed in the echo area is controlled by the variables
|
|||
The text displayed in the mode line is controlled by
|
||||
`battery-mode-line-format' and `battery-status-function'.
|
||||
The mode line is be updated every `battery-update-interval'
|
||||
seconds."
|
||||
seconds.
|
||||
|
||||
The function which updates the mode-line display will call the
|
||||
functions in `battery-update-functions', which can be used to
|
||||
trigger actions based on battery-related events."
|
||||
:global t
|
||||
(setq battery-mode-line-string "")
|
||||
(or global-mode-string (setq global-mode-string '("")))
|
||||
|
|
@ -279,7 +317,8 @@ seconds."
|
|||
((< percentage battery-load-low)
|
||||
(add-face-text-property 0 len 'battery-load-low t res)))
|
||||
(put-text-property 0 len 'help-echo "Battery status information" res))
|
||||
(setq battery-mode-line-string (or res "")))
|
||||
(setq battery-mode-line-string (or res ""))
|
||||
(run-hook-with-args 'battery-update-functions data))
|
||||
(force-mode-line-update t))
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -990,7 +990,7 @@ if `inhibit-field-text-motion' is non-nil."
|
|||
(define-key esc-map "\\" 'delete-horizontal-space)
|
||||
(define-key esc-map "m" 'back-to-indentation)
|
||||
(define-key ctl-x-map "\C-o" 'delete-blank-lines)
|
||||
(define-key esc-map " " 'just-one-space)
|
||||
(define-key esc-map " " 'cycle-spacing)
|
||||
(define-key esc-map "z" 'zap-to-char)
|
||||
(define-key esc-map "=" 'count-words-region)
|
||||
(define-key ctl-x-map "=" 'what-cursor-position)
|
||||
|
|
|
|||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue