diff options
| author | Andrea Corallo | 2021-04-05 21:00:18 +0200 |
|---|---|---|
| committer | Andrea Corallo | 2021-04-05 21:00:18 +0200 |
| commit | 74b58f28ecbc6fe9d7a60c96c79acfdf2329ff73 (patch) | |
| tree | b1e99508f836a1d12d17eb3072e14b0cfb2ba407 | |
| parent | 0a3e715e1f5e13874139b4678375b8f5704b800b (diff) | |
| parent | 14d295871a93c37a33d558ec4e8d49a93b787d8e (diff) | |
| download | emacs-74b58f28ecbc6fe9d7a60c96c79acfdf2329ff73.tar.gz emacs-74b58f28ecbc6fe9d7a60c96c79acfdf2329ff73.zip | |
Merge remote-tracking branch 'savannah/master' into native-comp
143 files changed, 2073 insertions, 1904 deletions
diff --git a/GNUmakefile b/GNUmakefile index f27163840b7..5155487de28 100644 --- a/GNUmakefile +++ b/GNUmakefile | |||
| @@ -50,6 +50,8 @@ help: | |||
| 50 | @echo "make distclean -- delete all build and configuration files," | 50 | @echo "make distclean -- delete all build and configuration files," |
| 51 | @echo " leave only files included in source distribution" | 51 | @echo " leave only files included in source distribution" |
| 52 | @echo "make maintainer-clean -- delete almost everything that can be regenerated" | 52 | @echo "make maintainer-clean -- delete almost everything that can be regenerated" |
| 53 | @echo "make extraclean -- like maintainer-clean, and also delete" | ||
| 54 | @echo " backup and autosave files" | ||
| 53 | @echo "make bootstrap -- delete all compiled files to force a new bootstrap" | 55 | @echo "make bootstrap -- delete all compiled files to force a new bootstrap" |
| 54 | @echo " from a clean slate, then build in the normal way" | 56 | @echo " from a clean slate, then build in the normal way" |
| 55 | @echo "make uninstall -- remove files installed by 'make install'" | 57 | @echo "make uninstall -- remove files installed by 'make install'" |
diff --git a/Makefile.in b/Makefile.in index 6f09878331a..aa32ec8bc5e 100644 --- a/Makefile.in +++ b/Makefile.in | |||
| @@ -48,8 +48,6 @@ | |||
| 48 | # | 48 | # |
| 49 | # make extraclean | 49 | # make extraclean |
| 50 | # Still more severe - delete backup and autosave files, too. | 50 | # Still more severe - delete backup and autosave files, too. |
| 51 | # Also generated files that do not normally change and can be slow | ||
| 52 | # to rebuild (eg leim/ja-dic). | ||
| 53 | # | 51 | # |
| 54 | # make bootstrap | 52 | # make bootstrap |
| 55 | # Removes all the compiled files to force a new bootstrap from a | 53 | # Removes all the compiled files to force a new bootstrap from a |
| @@ -941,7 +939,7 @@ maintainer-clean: bootstrap-clean $(maintainer_clean_dirs:=_maintainer-clean) | |||
| 941 | ### Note that we abuse this in some subdirectories (eg leim), | 939 | ### Note that we abuse this in some subdirectories (eg leim), |
| 942 | ### to delete some generated files that are slow to rebuild. | 940 | ### to delete some generated files that are slow to rebuild. |
| 943 | extraclean_dirs = ${NTDIR} lib-src src leim \ | 941 | extraclean_dirs = ${NTDIR} lib-src src leim \ |
| 944 | admin/charsets admin/grammars admin/unidata lisp lib | 942 | admin/charsets admin/grammars admin/unidata lisp lib lwlib |
| 945 | 943 | ||
| 946 | $(foreach dir,$(extraclean_dirs),$(eval $(call submake_template,$(dir),extraclean))) | 944 | $(foreach dir,$(extraclean_dirs),$(eval $(call submake_template,$(dir),extraclean))) |
| 947 | 945 | ||
diff --git a/admin/charsets/Makefile.in b/admin/charsets/Makefile.in index 1fe029984b8..00424843bc4 100644 --- a/admin/charsets/Makefile.in +++ b/admin/charsets/Makefile.in | |||
| @@ -297,17 +297,19 @@ ${charsetdir}/%.map: ${GLIBC_CHARMAPS}/%.gz ${mapconv} ${compact} | |||
| 297 | ${AM_V_GEN}${run_mapconv} $< '/^<.*[ ]\/x/' GLIBC-1 ${compact} > $@ | 297 | ${AM_V_GEN}${run_mapconv} $< '/^<.*[ ]\/x/' GLIBC-1 ${compact} > $@ |
| 298 | 298 | ||
| 299 | 299 | ||
| 300 | .PHONY: clean bootstrap-clean distclean maintainer-clean extraclean | 300 | .PHONY: clean bootstrap-clean distclean maintainer-clean extraclean gen-clean |
| 301 | 301 | ||
| 302 | clean: | 302 | clean: |
| 303 | 303 | ||
| 304 | ## IMO this should also run gen-clean. | ||
| 304 | bootstrap-clean: clean | 305 | bootstrap-clean: clean |
| 305 | 306 | ||
| 306 | distclean: clean | 307 | distclean: clean |
| 307 | rm -f Makefile | 308 | rm -f Makefile |
| 308 | 309 | ||
| 309 | maintainer-clean: distclean | 310 | gen-clean: |
| 310 | |||
| 311 | ## Do not remove these files, even in a bootstrap. They rarely change. | ||
| 312 | extraclean: | ||
| 313 | rm -f ${CHARSETS} ${SED_SCRIPT} ${TRANS_TABLE} ${srcdir}/charsets.stamp | 311 | rm -f ${CHARSETS} ${SED_SCRIPT} ${TRANS_TABLE} ${srcdir}/charsets.stamp |
| 312 | |||
| 313 | maintainer-clean: gen-clean distclean | ||
| 314 | |||
| 315 | extraclean: maintainer-clean | ||
diff --git a/admin/grammars/Makefile.in b/admin/grammars/Makefile.in index aa09d9edf94..35ce55461f3 100644 --- a/admin/grammars/Makefile.in +++ b/admin/grammars/Makefile.in | |||
| @@ -34,7 +34,7 @@ top_builddir = @top_builddir@ | |||
| 34 | unexport EMACSDATA EMACSDOC EMACSPATH | 34 | unexport EMACSDATA EMACSDOC EMACSPATH |
| 35 | 35 | ||
| 36 | EMACS = ${top_builddir}/src/emacs | 36 | EMACS = ${top_builddir}/src/emacs |
| 37 | emacs = EMACSLOADPATH= "${EMACS}" -batch --no-site-file --no-site-lisp | 37 | emacs = EMACSLOADPATH= "${EMACS}" -batch --no-site-file --no-site-lisp --eval '(setq load-prefer-newer t)' |
| 38 | 38 | ||
| 39 | make_bovine = ${emacs} -l semantic/bovine/grammar -f bovine-batch-make-parser | 39 | make_bovine = ${emacs} -l semantic/bovine/grammar -f bovine-batch-make-parser |
| 40 | make_wisent = ${emacs} -l semantic/wisent/grammar -f wisent-batch-make-parser | 40 | make_wisent = ${emacs} -l semantic/wisent/grammar -f wisent-batch-make-parser |
| @@ -43,6 +43,9 @@ cedetdir = ${top_srcdir}/lisp/cedet | |||
| 43 | bovinedir = ${cedetdir}/semantic/bovine | 43 | bovinedir = ${cedetdir}/semantic/bovine |
| 44 | wisentdir = ${cedetdir}/semantic/wisent | 44 | wisentdir = ${cedetdir}/semantic/wisent |
| 45 | 45 | ||
| 46 | grammar_bovine = ${bovinedir}/grammar.el | ||
| 47 | grammar_wisent = ${wisentdir}/grammar.el | ||
| 48 | |||
| 46 | BOVINE = \ | 49 | BOVINE = \ |
| 47 | ${bovinedir}/c-by.el \ | 50 | ${bovinedir}/c-by.el \ |
| 48 | ${bovinedir}/make-by.el \ | 51 | ${bovinedir}/make-by.el \ |
| @@ -51,7 +54,7 @@ BOVINE = \ | |||
| 51 | ## FIXME Should include this one too: | 54 | ## FIXME Should include this one too: |
| 52 | ## ${cedetdir}/semantic/grammar-wy.el | 55 | ## ${cedetdir}/semantic/grammar-wy.el |
| 53 | ## but semantic/grammar.el (which is what we use to generate grammar-wy.el) | 56 | ## but semantic/grammar.el (which is what we use to generate grammar-wy.el) |
| 54 | ## requires it! | 57 | ## requires it! https://debbugs.gnu.org/16008 |
| 55 | WISENT = \ | 58 | WISENT = \ |
| 56 | ${wisentdir}/javat-wy.el \ | 59 | ${wisentdir}/javat-wy.el \ |
| 57 | ${wisentdir}/js-wy.el \ | 60 | ${wisentdir}/js-wy.el \ |
| @@ -69,46 +72,46 @@ bovine: ${BOVINE} | |||
| 69 | wisent: ${WISENT} | 72 | wisent: ${WISENT} |
| 70 | 73 | ||
| 71 | ## c-by.el, make-by.el. | 74 | ## c-by.el, make-by.el. |
| 72 | ${bovinedir}/%-by.el: ${srcdir}/%.by | 75 | ${bovinedir}/%-by.el: ${srcdir}/%.by ${grammar_bovine} |
| 73 | $(AM_V_GEN)[ ! -f "$@" ] || chmod +w "$@" | 76 | $(AM_V_GEN)[ ! -f "$@" ] || chmod +w "$@" |
| 74 | $(AM_V_at)${make_bovine} -o "$@" $< | 77 | $(AM_V_at)${make_bovine} -o "$@" $< |
| 75 | 78 | ||
| 76 | ${bovinedir}/scm-by.el: ${srcdir}/scheme.by | 79 | ${bovinedir}/scm-by.el: ${srcdir}/scheme.by ${grammar_bovine} |
| 77 | $(AM_V_GEN)[ ! -f "$@" ] || chmod +w "$@" | 80 | $(AM_V_GEN)[ ! -f "$@" ] || chmod +w "$@" |
| 78 | $(AM_V_at)${make_bovine} -o "$@" $< | 81 | $(AM_V_at)${make_bovine} -o "$@" $< |
| 79 | 82 | ||
| 80 | ## grammar-wy.el | 83 | ## grammar-wy.el |
| 81 | ${cedetdir}/semantic/%-wy.el: ${srcdir}/%.wy | 84 | ${cedetdir}/semantic/%-wy.el: ${srcdir}/%.wy ${grammar_wisent} |
| 82 | $(AM_V_GEN)[ ! -f "$@" ] || chmod +w "$@" | 85 | $(AM_V_GEN)[ ! -f "$@" ] || chmod +w "$@" |
| 83 | $(AM_V_at)${make_wisent} -o "$@" $< | 86 | $(AM_V_at)${make_wisent} -o "$@" $< |
| 84 | 87 | ||
| 85 | ## js-wy.el, python-wy.el | 88 | ## js-wy.el, python-wy.el |
| 86 | ${wisentdir}/%-wy.el: ${srcdir}/%.wy | 89 | ${wisentdir}/%-wy.el: ${srcdir}/%.wy ${grammar_wisent} |
| 87 | $(AM_V_GEN)[ ! -f "$@" ] || chmod +w "$@" | 90 | $(AM_V_GEN)[ ! -f "$@" ] || chmod +w "$@" |
| 88 | $(AM_V_at)${make_wisent} -o "$@" $< | 91 | $(AM_V_at)${make_wisent} -o "$@" $< |
| 89 | 92 | ||
| 90 | ${wisentdir}/javat-wy.el: ${srcdir}/java-tags.wy | 93 | ${wisentdir}/javat-wy.el: ${srcdir}/java-tags.wy ${grammar_wisent} |
| 91 | $(AM_V_GEN)[ ! -f "$@" ] || chmod +w "$@" | 94 | $(AM_V_GEN)[ ! -f "$@" ] || chmod +w "$@" |
| 92 | $(AM_V_at)${make_wisent} -o "$@" $< | 95 | $(AM_V_at)${make_wisent} -o "$@" $< |
| 93 | 96 | ||
| 94 | ${cedetdir}/srecode/srt-wy.el: ${srcdir}/srecode-template.wy | 97 | ${cedetdir}/srecode/srt-wy.el: ${srcdir}/srecode-template.wy ${grammar_wisent} |
| 95 | $(AM_V_GEN)[ ! -f "$@" ] || chmod +w "$@" | 98 | $(AM_V_GEN)[ ! -f "$@" ] || chmod +w "$@" |
| 96 | $(AM_V_at)${make_wisent} -o "$@" $< | 99 | $(AM_V_at)${make_wisent} -o "$@" $< |
| 97 | 100 | ||
| 98 | 101 | .PHONY: distclean bootstrap-clean maintainer-clean extraclean gen-clean | |
| 99 | .PHONY: distclean bootstrap-clean maintainer-clean extraclean | ||
| 100 | 102 | ||
| 101 | distclean: | 103 | distclean: |
| 102 | rm -f Makefile | 104 | rm -f Makefile |
| 103 | 105 | ||
| 104 | ## Perhaps this should do what extraclean (qv) does. | 106 | ## IMO this should run gen-clean. |
| 105 | bootstrap-clean: | 107 | bootstrap-clean: |
| 106 | 108 | ||
| 107 | maintainer-clean: distclean | 109 | gen-clean: |
| 108 | |||
| 109 | ## We do not normally delete the generated files, even in bootstrap. | ||
| 110 | ## Creating them does not take long, so we could easily change this. | ||
| 111 | extraclean: | ||
| 112 | rm -f ${ALL} | 110 | rm -f ${ALL} |
| 113 | 111 | ||
| 112 | maintainer-clean: gen-clean distclean | ||
| 113 | |||
| 114 | extraclean: maintainer-clean | ||
| 115 | |||
| 116 | |||
| 114 | # Makefile.in ends here | 117 | # Makefile.in ends here |
diff --git a/admin/unidata/Makefile.in b/admin/unidata/Makefile.in index 183569fb9b6..b7a927d1919 100644 --- a/admin/unidata/Makefile.in +++ b/admin/unidata/Makefile.in | |||
| @@ -85,26 +85,26 @@ ${unidir}/charscript.el: ${srcdir}/Blocks.txt ${blocks} | |||
| 85 | $(AM_V_GEN)$(AWK) -f ${blocks} < $< > $@ | 85 | $(AM_V_GEN)$(AWK) -f ${blocks} < $< > $@ |
| 86 | 86 | ||
| 87 | 87 | ||
| 88 | .PHONY: clean bootstrap-clean distclean maintainer-clean extraclean | 88 | .PHONY: clean bootstrap-clean distclean maintainer-clean extraclean gen-clean |
| 89 | 89 | ||
| 90 | clean: | 90 | clean: |
| 91 | rm -f ${srcdir}/*.elc unidata.txt | 91 | rm -f ${srcdir}/*.elc unidata.txt |
| 92 | 92 | ||
| 93 | ## IMO this should also run gen-clean. | ||
| 93 | bootstrap-clean: clean | 94 | bootstrap-clean: clean |
| 94 | 95 | ||
| 95 | distclean: clean | 96 | distclean: clean |
| 96 | rm -f Makefile | 97 | rm -f Makefile |
| 97 | 98 | ||
| 98 | maintainer-clean: distclean | ||
| 99 | |||
| 100 | ## Do not remove these files, even in a bootstrap, because they rarely | ||
| 101 | ## change and it slows down bootstrap (a tiny bit). | ||
| 102 | ## Cf leim/ja-dic (which is much slower). | ||
| 103 | |||
| 104 | ## macuvs.h is a generated file, but it's also checked in because | 99 | ## macuvs.h is a generated file, but it's also checked in because |
| 105 | ## macOS builds would need to do a headless bootstrap without it, | 100 | ## macOS builds would need to do a headless bootstrap without it, |
| 106 | ## which is currently awkward. To avoid changing checked-in files | 101 | ## which is currently awkward. To avoid changing checked-in files |
| 107 | ## from a make target, we don't delete it here. | 102 | ## from a make target, we don't delete it here. |
| 108 | extraclean: distclean | 103 | gen-clean: |
| 109 | rm -f ${unidir}/charscript.el* | 104 | rm -f ${unidir}/charscript.el* |
| 110 | rm -f ${unifiles} ${unidir}/charprop.el | 105 | rm -f ${unifiles} ${unidir}/charprop.el |
| 106 | ## ref: https://lists.gnu.org/r/emacs-devel/2013-11/msg01029.html | ||
| 107 | |||
| 108 | maintainer-clean: gen-clean distclean | ||
| 109 | |||
| 110 | extraclean: maintainer-clean | ||
diff --git a/doc/lispintro/emacs-lisp-intro.texi b/doc/lispintro/emacs-lisp-intro.texi index 5b15a456ff0..fade4096e38 100644 --- a/doc/lispintro/emacs-lisp-intro.texi +++ b/doc/lispintro/emacs-lisp-intro.texi | |||
| @@ -1364,19 +1364,6 @@ C-e}: | |||
| 1364 | (this is an unquoted list) | 1364 | (this is an unquoted list) |
| 1365 | @end smallexample | 1365 | @end smallexample |
| 1366 | 1366 | ||
| 1367 | @ignore | ||
| 1368 | @noindent | ||
| 1369 | What you see depends on which version of Emacs you are running. GNU | ||
| 1370 | Emacs version 22 provides more information than version 20 and before. | ||
| 1371 | First, the more recent result of generating an error; then the | ||
| 1372 | earlier, version 20 result. | ||
| 1373 | |||
| 1374 | @need 1250 | ||
| 1375 | @noindent | ||
| 1376 | In GNU Emacs version 22, a @file{*Backtrace*} window will open up and | ||
| 1377 | you will see the following in it: | ||
| 1378 | @end ignore | ||
| 1379 | |||
| 1380 | A @file{*Backtrace*} window will open up and you should see the | 1367 | A @file{*Backtrace*} window will open up and you should see the |
| 1381 | following in it: | 1368 | following in it: |
| 1382 | 1369 | ||
| @@ -1838,19 +1825,6 @@ Debugger entered--Lisp error: (void-function fill-column) | |||
| 1838 | (Remember, to quit the debugger and make the debugger window go away, | 1825 | (Remember, to quit the debugger and make the debugger window go away, |
| 1839 | type @kbd{q} in the @file{*Backtrace*} buffer.) | 1826 | type @kbd{q} in the @file{*Backtrace*} buffer.) |
| 1840 | 1827 | ||
| 1841 | @ignore | ||
| 1842 | @need 800 | ||
| 1843 | In GNU Emacs 20 and before, you will produce an error message that says: | ||
| 1844 | |||
| 1845 | @smallexample | ||
| 1846 | Symbol's function definition is void:@: fill-column | ||
| 1847 | @end smallexample | ||
| 1848 | |||
| 1849 | @noindent | ||
| 1850 | (The message will go away as soon as you move the cursor or type | ||
| 1851 | another key.) | ||
| 1852 | @end ignore | ||
| 1853 | |||
| 1854 | @node Void Variable | 1828 | @node Void Variable |
| 1855 | @subsection Error Message for a Symbol Without a Value | 1829 | @subsection Error Message for a Symbol Without a Value |
| 1856 | @cindex Symbol without value error | 1830 | @cindex Symbol without value error |
| @@ -1907,18 +1881,6 @@ Since @code{+} does not have a value bound to it, just the function | |||
| 1907 | definition, the error message reported that the symbol's value as a | 1881 | definition, the error message reported that the symbol's value as a |
| 1908 | variable was void. | 1882 | variable was void. |
| 1909 | 1883 | ||
| 1910 | @ignore | ||
| 1911 | @need 800 | ||
| 1912 | In GNU Emacs version 20 and before, your error message will say: | ||
| 1913 | |||
| 1914 | @example | ||
| 1915 | Symbol's value as variable is void:@: + | ||
| 1916 | @end example | ||
| 1917 | |||
| 1918 | @noindent | ||
| 1919 | The meaning is the same as in GNU Emacs 22. | ||
| 1920 | @end ignore | ||
| 1921 | |||
| 1922 | @node Arguments | 1884 | @node Arguments |
| 1923 | @section Arguments | 1885 | @section Arguments |
| 1924 | @cindex Arguments | 1886 | @cindex Arguments |
| @@ -2197,19 +2159,6 @@ addition had been passed the correct type of object, the value passed | |||
| 2197 | would have been a number, such as 37, rather than a symbol like | 2159 | would have been a number, such as 37, rather than a symbol like |
| 2198 | @code{hello}. But then you would not have got the error message. | 2160 | @code{hello}. But then you would not have got the error message. |
| 2199 | 2161 | ||
| 2200 | @ignore | ||
| 2201 | @need 1250 | ||
| 2202 | In GNU Emacs version 20 and before, the echo area displays an error | ||
| 2203 | message that says: | ||
| 2204 | |||
| 2205 | @smallexample | ||
| 2206 | Wrong type argument:@: number-or-marker-p, hello | ||
| 2207 | @end smallexample | ||
| 2208 | |||
| 2209 | This says, in different words, the same as the top line of the | ||
| 2210 | @file{*Backtrace*} buffer. | ||
| 2211 | @end ignore | ||
| 2212 | |||
| 2213 | @node message | 2162 | @node message |
| 2214 | @subsection The @code{message} Function | 2163 | @subsection The @code{message} Function |
| 2215 | @findex message | 2164 | @findex message |
| @@ -6663,9 +6612,9 @@ original text of the function: | |||
| 6663 | @end group | 6612 | @end group |
| 6664 | @end smallexample | 6613 | @end smallexample |
| 6665 | 6614 | ||
| 6666 | (In recent versions of GNU Emacs, the @code{what-line} function has | 6615 | (In modern versions of GNU Emacs, the @code{what-line} function has |
| 6667 | been expanded to tell you your line number in a narrowed buffer as | 6616 | been expanded to tell you your line number in a narrowed buffer as |
| 6668 | well as your line number in a widened buffer. The recent version is | 6617 | well as your line number in a widened buffer. The modern version is |
| 6669 | more complex than the version shown here. If you feel adventurous, | 6618 | more complex than the version shown here. If you feel adventurous, |
| 6670 | you might want to look at it after figuring out how this version | 6619 | you might want to look at it after figuring out how this version |
| 6671 | works. You will probably need to use @kbd{C-h f} | 6620 | works. You will probably need to use @kbd{C-h f} |
| @@ -10392,9 +10341,8 @@ echo area: @code{^Jgazelle^J^Jgiraffe^J^Jlion^J^Jtiger^Jnil}, in which | |||
| 10392 | each @samp{^J} stands for a newline.) | 10341 | each @samp{^J} stands for a newline.) |
| 10393 | 10342 | ||
| 10394 | @need 1500 | 10343 | @need 1500 |
| 10395 | In a recent instance of GNU Emacs, you can evaluate these expressions | 10344 | You can evaluate these expressions directly in the Info buffer, and |
| 10396 | directly in the Info buffer, and the echo area will grow to show the | 10345 | the echo area will grow to show the results. |
| 10397 | results. | ||
| 10398 | 10346 | ||
| 10399 | @smallexample | 10347 | @smallexample |
| 10400 | @group | 10348 | @group |
| @@ -18104,8 +18052,7 @@ argument of 4: | |||
| 18104 | @end smallexample | 18052 | @end smallexample |
| 18105 | 18053 | ||
| 18106 | @noindent | 18054 | @noindent |
| 18107 | In a recent GNU Emacs, you will create and enter a @file{*Backtrace*} | 18055 | This will create and enter a @file{*Backtrace*} buffer that says: |
| 18108 | buffer that says: | ||
| 18109 | 18056 | ||
| 18110 | @noindent | 18057 | @noindent |
| 18111 | @smallexample | 18058 | @smallexample |
| @@ -18139,25 +18086,12 @@ In practice, for a bug as simple as this, the Lisp error line will | |||
| 18139 | tell you what you need to know to correct the definition. The | 18086 | tell you what you need to know to correct the definition. The |
| 18140 | function @code{1=} is void. | 18087 | function @code{1=} is void. |
| 18141 | 18088 | ||
| 18142 | @ignore | ||
| 18143 | @need 800 | ||
| 18144 | In GNU Emacs 20 and before, you will see: | ||
| 18145 | |||
| 18146 | @smallexample | ||
| 18147 | Symbol's function definition is void:@: 1= | ||
| 18148 | @end smallexample | ||
| 18149 | |||
| 18150 | @noindent | ||
| 18151 | which has the same meaning as the @file{*Backtrace*} buffer line in | ||
| 18152 | version 21. | ||
| 18153 | @end ignore | ||
| 18154 | |||
| 18155 | However, suppose you are not quite certain what is going on? | 18089 | However, suppose you are not quite certain what is going on? |
| 18156 | You can read the complete backtrace. | 18090 | You can read the complete backtrace. |
| 18157 | 18091 | ||
| 18158 | In this case, you need to run a recent GNU Emacs, which automatically | 18092 | Emacs automatically starts the debugger that puts you in the |
| 18159 | starts the debugger that puts you in the @file{*Backtrace*} buffer; or | 18093 | @file{*Backtrace*} buffer. You can also start the debugger manually |
| 18160 | else, you need to start the debugger manually as described below. | 18094 | as described below. |
| 18161 | 18095 | ||
| 18162 | Read the @file{*Backtrace*} buffer from the bottom up; it tells you | 18096 | Read the @file{*Backtrace*} buffer from the bottom up; it tells you |
| 18163 | what Emacs did that led to the error. Emacs made an interactive call | 18097 | what Emacs did that led to the error. Emacs made an interactive call |
| @@ -18197,14 +18131,8 @@ then run your test again. | |||
| 18197 | @section @code{debug-on-entry} | 18131 | @section @code{debug-on-entry} |
| 18198 | @findex debug-on-entry | 18132 | @findex debug-on-entry |
| 18199 | 18133 | ||
| 18200 | A recent GNU Emacs starts the debugger automatically when your | 18134 | Emacs starts the debugger automatically when your function has an |
| 18201 | function has an error. | 18135 | error. |
| 18202 | |||
| 18203 | @ignore | ||
| 18204 | GNU Emacs version 20 and before did not; it simply | ||
| 18205 | presented you with an error message. You had to start the debugger | ||
| 18206 | manually. | ||
| 18207 | @end ignore | ||
| 18208 | 18136 | ||
| 18209 | Incidentally, you can start the debugger manually for all versions of | 18137 | Incidentally, you can start the debugger manually for all versions of |
| 18210 | Emacs; the advantage is that the debugger runs even if you do not have | 18138 | Emacs; the advantage is that the debugger runs even if you do not have |
| @@ -20079,8 +20007,8 @@ the tic marks themselves and their spacing: | |||
| 20079 | @code{defvar}. The @code{boundp} predicate checks whether it has | 20007 | @code{defvar}. The @code{boundp} predicate checks whether it has |
| 20080 | already been set; @code{boundp} returns @code{nil} if it has not. If | 20008 | already been set; @code{boundp} returns @code{nil} if it has not. If |
| 20081 | @code{graph-blank} were unbound and we did not use this conditional | 20009 | @code{graph-blank} were unbound and we did not use this conditional |
| 20082 | construction, in a recent GNU Emacs, we would enter the debugger and | 20010 | construction, we would enter the debugger and see an error message |
| 20083 | see an error message saying @samp{@w{Debugger entered--Lisp error:} | 20011 | saying @samp{@w{Debugger entered--Lisp error:} |
| 20084 | @w{(void-variable graph-blank)}}.) | 20012 | @w{(void-variable graph-blank)}}.) |
| 20085 | 20013 | ||
| 20086 | @need 1200 | 20014 | @need 1200 |
diff --git a/doc/lispref/display.texi b/doc/lispref/display.texi index 2e1b4a6b669..68d7e827d26 100644 --- a/doc/lispref/display.texi +++ b/doc/lispref/display.texi | |||
| @@ -5751,6 +5751,28 @@ Cropping is performed after scaling but before rotation. | |||
| 5751 | @cindex SVG images | 5751 | @cindex SVG images |
| 5752 | 5752 | ||
| 5753 | SVG (Scalable Vector Graphics) is an XML format for specifying images. | 5753 | SVG (Scalable Vector Graphics) is an XML format for specifying images. |
| 5754 | SVG images support the following additional image descriptor | ||
| 5755 | properties: | ||
| 5756 | |||
| 5757 | @table @code | ||
| 5758 | @item :foreground @var{foreground} | ||
| 5759 | @var{foreground}, if non-@code{nil}, should be a string specifying a | ||
| 5760 | color, which is used as the image's foreground color. If the value is | ||
| 5761 | @code{nil}, it defaults to the faces's foreground color. | ||
| 5762 | |||
| 5763 | @item :background @var{background} | ||
| 5764 | @var{background}, if non-@code{nil}, should be a string specifying a | ||
| 5765 | color, which is used as the image's background color if the image | ||
| 5766 | supports transparency. If the value is @code{nil}, it defaults to the | ||
| 5767 | faces's background color. | ||
| 5768 | |||
| 5769 | @item :css @var{css} | ||
| 5770 | @var{css}, if non-@code{nil}, should be a string specifying the CSS to | ||
| 5771 | override the default CSS used when generating the image. | ||
| 5772 | @end table | ||
| 5773 | |||
| 5774 | @subsubheading SVG library | ||
| 5775 | |||
| 5754 | If your Emacs build has SVG support, you can create and manipulate | 5776 | If your Emacs build has SVG support, you can create and manipulate |
| 5755 | these images with the following functions from the @file{svg.el} | 5777 | these images with the following functions from the @file{svg.el} |
| 5756 | library. | 5778 | library. |
diff --git a/doc/misc/Makefile.in b/doc/misc/Makefile.in index 63d4bf0337f..7982c0dc5ae 100644 --- a/doc/misc/Makefile.in +++ b/doc/misc/Makefile.in | |||
| @@ -22,7 +22,7 @@ SHELL = @SHELL@ | |||
| 22 | # Where to find the source code. $(srcdir) will be the doc/misc subdirectory | 22 | # Where to find the source code. $(srcdir) will be the doc/misc subdirectory |
| 23 | # of the source tree. This is set by configure's '--srcdir' option. | 23 | # of the source tree. This is set by configure's '--srcdir' option. |
| 24 | srcdir=@srcdir@ | 24 | srcdir=@srcdir@ |
| 25 | 25 | top_srcdir = @top_srcdir@ | |
| 26 | top_builddir = @top_builddir@ | 26 | top_builddir = @top_builddir@ |
| 27 | 27 | ||
| 28 | ## Where the output files go. | 28 | ## Where the output files go. |
| @@ -100,10 +100,6 @@ texi_sources = $(addsuffix .texi,${TARGETS}) | |||
| 100 | texi_notgen = $(filter-out $(notdir ${TEXI_FROM_ORG}),${texi_sources}) | 100 | texi_notgen = $(filter-out $(notdir ${TEXI_FROM_ORG}),${texi_sources}) |
| 101 | texi_and_org = $(notdir ${ORG_SRC}) ${texi_notgen} | 101 | texi_and_org = $(notdir ${ORG_SRC}) ${texi_notgen} |
| 102 | SOURCES = $(sort ${texi_and_org}) | 102 | SOURCES = $(sort ${texi_and_org}) |
| 103 | .PHONY: echo-sources | ||
| 104 | ## Used by the top-level Makefile. | ||
| 105 | echo-sources: | ||
| 106 | @echo ${SOURCES} | ||
| 107 | 103 | ||
| 108 | DVI_TARGETS = $(TARGETS:=.dvi) | 104 | DVI_TARGETS = $(TARGETS:=.dvi) |
| 109 | HTML_TARGETS = $(TARGETS:=.html) | 105 | HTML_TARGETS = $(TARGETS:=.html) |
| @@ -122,7 +118,7 @@ ENVADD = $(AM_V_GEN)TEXINPUTS="$(srcdir):$(emacsdir):$(TEXINPUTS)" \ | |||
| 122 | gfdl = ${srcdir}/doclicense.texi | 118 | gfdl = ${srcdir}/doclicense.texi |
| 123 | style = ${emacsdir}/docstyle.texi | 119 | style = ${emacsdir}/docstyle.texi |
| 124 | 120 | ||
| 125 | .PHONY: info dvi html pdf ps echo-info $(INFO_TARGETS) | 121 | .PHONY: info dvi html pdf ps echo-info echo-sources $(INFO_TARGETS) |
| 126 | ## Prevent implicit rule triggering for foo.info. | 122 | ## Prevent implicit rule triggering for foo.info. |
| 127 | .SUFFIXES: | 123 | .SUFFIXES: |
| 128 | 124 | ||
| @@ -138,6 +134,9 @@ echo-info: | |||
| 138 | @echo "$(INFO_INSTALL) " | \ | 134 | @echo "$(INFO_INSTALL) " | \ |
| 139 | sed -e 's|[^ ]*/||g' -e 's/\.info//g' -e "s/ */.info /g" | 135 | sed -e 's|[^ ]*/||g' -e 's/\.info//g' -e "s/ */.info /g" |
| 140 | 136 | ||
| 137 | echo-sources: | ||
| 138 | @echo ${SOURCES} | ||
| 139 | |||
| 141 | dvi: $(DVI_TARGETS) | 140 | dvi: $(DVI_TARGETS) |
| 142 | 141 | ||
| 143 | html: $(HTML_TARGETS) | 142 | html: $(HTML_TARGETS) |
| @@ -235,14 +234,14 @@ ${buildinfodir}/tramp.info tramp.html: ${srcdir}/trampver.texi | |||
| 235 | 234 | ||
| 236 | abs_top_builddir = @abs_top_builddir@ | 235 | abs_top_builddir = @abs_top_builddir@ |
| 237 | EMACS = ${abs_top_builddir}/src/emacs | 236 | EMACS = ${abs_top_builddir}/src/emacs |
| 238 | emacs = "${EMACS}" -batch --no-site-file --no-site-lisp | 237 | emacs = "${EMACS}" -batch --no-site-file --no-site-lisp --eval '(setq load-prefer-newer t)' |
| 239 | 238 | ||
| 240 | # Generated .texi files go in srcdir so they can be included in the | 239 | # Generated .texi files go in srcdir so they can be included in the |
| 241 | # release tarfile along with the others. | 240 | # release tarfile along with the others. |
| 242 | # Work in srcdir (and use abs_top_builddir) so that +setupfile and | 241 | # Work in srcdir (and use abs_top_builddir) so that +setupfile and |
| 243 | # things like org-setup's "version" macro work. Sigh. | 242 | # things like org-setup's "version" macro work. Sigh. |
| 244 | define org_template | 243 | define org_template |
| 245 | $(1:.org=.texi): $(1) | 244 | $(1:.org=.texi): $(1) ${top_srcdir}/lisp/org/ox-texinfo.el |
| 246 | $${AM_V_GEN}cd "$${srcdir}" && $${emacs} -l ox-texinfo \ | 245 | $${AM_V_GEN}cd "$${srcdir}" && $${emacs} -l ox-texinfo \ |
| 247 | -f org-texinfo-export-to-texinfo-batch $$(notdir $$<) $$(notdir $$@) | 246 | -f org-texinfo-export-to-texinfo-batch $$(notdir $$<) $$(notdir $$@) |
| 248 | endef | 247 | endef |
diff --git a/doc/misc/reftex.texi b/doc/misc/reftex.texi index 599252fabf7..f1074d3d143 100644 --- a/doc/misc/reftex.texi +++ b/doc/misc/reftex.texi | |||
| @@ -254,73 +254,6 @@ version 20.2. It has also been bundled and pre-installed with XEmacs | |||
| 254 | plug-in package which is available from the @value{XEMACSFTP}. See the | 254 | plug-in package which is available from the @value{XEMACSFTP}. See the |
| 255 | XEmacs 21.x documentation on package installation for details. | 255 | XEmacs 21.x documentation on package installation for details. |
| 256 | 256 | ||
| 257 | Users of earlier Emacs distributions (including Emacs 19) or people | ||
| 258 | craving for new features and bugs can get a copy of the @RefTeX{} | ||
| 259 | distribution from the maintainer's web page. @xref{Imprint}, for more | ||
| 260 | information. The following instructions will guide you through the | ||
| 261 | process of installing such a distribution. | ||
| 262 | |||
| 263 | @subsection Building and Installing | ||
| 264 | |||
| 265 | Note: Currently installation is supported for Emacs only. XEmacs users | ||
| 266 | might want to refer to the @RefTeX{} package available through the | ||
| 267 | package system of XEmacs. | ||
| 268 | |||
| 269 | @subsubheading Installation with make | ||
| 270 | |||
| 271 | In order to install RefTeX, unpack the distribution and edit the header | ||
| 272 | of the Makefile. Basically, you need to change the path specifications | ||
| 273 | for Emacs Lisp files and info files. Also, enter the name of your Emacs | ||
| 274 | executable (usually either @samp{emacs} or @samp{xemacs}). | ||
| 275 | |||
| 276 | Then, type | ||
| 277 | |||
| 278 | @example | ||
| 279 | make | ||
| 280 | make install | ||
| 281 | @end example | ||
| 282 | |||
| 283 | to compile and install the code and documentation. | ||
| 284 | |||
| 285 | Per default @RefTeX{} is installed in its own subdirectory which might | ||
| 286 | not be on your load path. In this case, add it to load path with a | ||
| 287 | command like the following, replacing the sample directory with the one | ||
| 288 | where @RefTeX{} is installed in your case. | ||
| 289 | |||
| 290 | @example | ||
| 291 | (add-to-list 'load-path "/path/to/reftex") | ||
| 292 | @end example | ||
| 293 | |||
| 294 | Put this command into your init file before other @RefTeX{}-related | ||
| 295 | settings. | ||
| 296 | |||
| 297 | @subsubheading Installation by Hand | ||
| 298 | |||
| 299 | If you want to get your hands dirty, there is also the possibility to | ||
| 300 | install by manually copying files. | ||
| 301 | |||
| 302 | @enumerate a | ||
| 303 | @item | ||
| 304 | Copy the reftex*.el lisp files to a directory on your load path. Make | ||
| 305 | sure that no old copy of @RefTeX{} shadows these files. | ||
| 306 | @item | ||
| 307 | Byte compile the files. The sequence of compiling should be: | ||
| 308 | reftex-var.el, reftex.el, and then all the others. | ||
| 309 | @item | ||
| 310 | Copy the info file reftex.info to the info directory. | ||
| 311 | @end enumerate | ||
| 312 | |||
| 313 | @subsection Loading @RefTeX{} | ||
| 314 | |||
| 315 | In order to make the most important functions for entering @RefTeX{} | ||
| 316 | mode available add the following line to your init file. | ||
| 317 | |||
| 318 | @example | ||
| 319 | (require 'reftex) | ||
| 320 | @end example | ||
| 321 | |||
| 322 | @subsection Entering @RefTeX{} Mode | ||
| 323 | |||
| 324 | @findex turn-on-reftex | 257 | @findex turn-on-reftex |
| 325 | @findex reftex-mode | 258 | @findex reftex-mode |
| 326 | @vindex LaTeX-mode-hook | 259 | @vindex LaTeX-mode-hook |
| @@ -3259,9 +3192,9 @@ with the @kbd{g} key. To get this behavior, use instead | |||
| 3259 | 3192 | ||
| 3260 | @AUCTeX{} is without doubt the best major mode for editing @TeX{} and @LaTeX{} | 3193 | @AUCTeX{} is without doubt the best major mode for editing @TeX{} and @LaTeX{} |
| 3261 | files with Emacs (@pxref{Top,AUCTeX,,auctex, The AUCTeX User Manual}). | 3194 | files with Emacs (@pxref{Top,AUCTeX,,auctex, The AUCTeX User Manual}). |
| 3262 | If @AUCTeX{} is not part of your Emacs distribution, you can get | 3195 | You can get it from its home page at @value{AUCTEXSITE}, but since |
| 3263 | it@footnote{XEmacs 21.x users may want to install the corresponding | 3196 | it is available from GNU ELPA, you can simply install it from @kbd{M-x |
| 3264 | XEmacs package.} by FTP from the @value{AUCTEXSITE}. | 3197 | list-packages}. |
| 3265 | 3198 | ||
| 3266 | @menu | 3199 | @menu |
| 3267 | * AUCTeX-RefTeX Interface:: How both packages work together | 3200 | * AUCTeX-RefTeX Interface:: How both packages work together |
| @@ -3611,18 +3544,6 @@ after the @samp{@{step+@}}, also when specifying how to get | |||
| 3611 | context. | 3544 | context. |
| 3612 | 3545 | ||
| 3613 | @item | 3546 | @item |
| 3614 | @b{Idle timers in XEmacs}@* | ||
| 3615 | @cindex Idle timer restart | ||
| 3616 | @vindex reftex-use-itimer-in-xemacs | ||
| 3617 | In XEmacs, idle timer restart does not work reliably after fast | ||
| 3618 | keystrokes. Therefore @RefTeX{} currently uses the post command | ||
| 3619 | hook to start the timer used for automatic crossref information. When | ||
| 3620 | this bug gets fixed, a real idle timer can be requested with | ||
| 3621 | @lisp | ||
| 3622 | (setq reftex-use-itimer-in-xemacs t) | ||
| 3623 | @end lisp | ||
| 3624 | |||
| 3625 | @item | ||
| 3626 | @b{Viper mode}@* | 3547 | @b{Viper mode}@* |
| 3627 | @cindex Viper mode | 3548 | @cindex Viper mode |
| 3628 | @cindex Key bindings, problems with Viper mode | 3549 | @cindex Key bindings, problems with Viper mode |
diff --git a/doc/misc/woman.texi b/doc/misc/woman.texi index 4470afcad20..33b3a33f0f4 100644 --- a/doc/misc/woman.texi +++ b/doc/misc/woman.texi | |||
| @@ -105,11 +105,9 @@ Mile End Road, London E1 4NS, UK | |||
| 105 | @chapter Introduction | 105 | @chapter Introduction |
| 106 | @cindex introduction | 106 | @cindex introduction |
| 107 | 107 | ||
| 108 | This version of WoMan should run with GNU Emacs 20.3 or later on any | 108 | WoMan was developed primarily on various versions of Microsoft |
| 109 | platform. It has not been tested, and may not run, with any other | 109 | Windows, but has also been tested on MS-DOS, and various versions of |
| 110 | version of Emacs. It was developed primarily on various versions of | 110 | UNIX and GNU/Linux. |
| 111 | Microsoft Windows, but has also been tested on MS-DOS, and various | ||
| 112 | versions of UNIX and GNU/Linux. | ||
| 113 | 111 | ||
| 114 | WoMan is distributed with GNU Emacs. | 112 | WoMan is distributed with GNU Emacs. |
| 115 | 113 | ||
| @@ -1061,6 +1061,10 @@ the commands 'customize', 'customize-group', 'customize-apropos' and | |||
| 1061 | To customize obsolete user options, use 'customize-option' or | 1061 | To customize obsolete user options, use 'customize-option' or |
| 1062 | 'customize-saved'. | 1062 | 'customize-saved'. |
| 1063 | 1063 | ||
| 1064 | *** New SVG icons for checkboxes and arrows. | ||
| 1065 | They will be used automatically instead of the old icons. If Emacs is | ||
| 1066 | built without SVG support, the old icons will be used instead. | ||
| 1067 | |||
| 1064 | ** Edebug | 1068 | ** Edebug |
| 1065 | 1069 | ||
| 1066 | *** Obsoletions | 1070 | *** Obsoletions |
| @@ -1524,6 +1528,15 @@ This controls whether to use smoothing or not for an image. Values | |||
| 1524 | include nil (no smoothing), t (do smoothing) or a predicate function | 1528 | include nil (no smoothing), t (do smoothing) or a predicate function |
| 1525 | that's called with the image object and should return nil/t. | 1529 | that's called with the image object and should return nil/t. |
| 1526 | 1530 | ||
| 1531 | +++ | ||
| 1532 | *** SVG images now support user stylesheets. | ||
| 1533 | The ':css' image attribute can be used to override the default CSS | ||
| 1534 | stylesheet for an image. The default sets 'font-family' and | ||
| 1535 | 'font-size' to match the current face, so an image with 'height="1em"' | ||
| 1536 | will match the font size in use where it is embedded. | ||
| 1537 | |||
| 1538 | This feature relies on librsvg 2.48 or above being available. | ||
| 1539 | |||
| 1527 | ** EWW | 1540 | ** EWW |
| 1528 | 1541 | ||
| 1529 | +++ | 1542 | +++ |
diff --git a/etc/images/README b/etc/images/README index 00aac4f510a..9bbe796cc95 100644 --- a/etc/images/README +++ b/etc/images/README | |||
| @@ -104,3 +104,30 @@ same conditions. | |||
| 104 | 104 | ||
| 105 | The *.pbm files were generally converted from *.xpm by running GIMP or | 105 | The *.pbm files were generally converted from *.xpm by running GIMP or |
| 106 | ImageMagick's 'convert'. | 106 | ImageMagick's 'convert'. |
| 107 | |||
| 108 | |||
| 109 | * The following icons are from the Adwaita Icon Theme (made by the | ||
| 110 | GNOME project). They are not part of Emacs, but are distributed and | ||
| 111 | used by Emacs. They are licensed under either the GNU LGPL v3 or the | ||
| 112 | Creative Commons Attribution-Share Alike 3.0 United States License. | ||
| 113 | |||
| 114 | To view a copy of the CC-BY-SA licence, visit | ||
| 115 | http://creativecommons.org/licenses/by-sa/3.0/ or send a letter to Creative | ||
| 116 | Commons, 171 Second Street, Suite 300, San Francisco, California 94105, USA. | ||
| 117 | |||
| 118 | For more information see the adwaita-icon-theme repository at: | ||
| 119 | |||
| 120 | https://gitlab.gnome.org/GNOME/adwaita-icon-theme | ||
| 121 | |||
| 122 | Emacs images and their source in the Adwaita/scalable directory: | ||
| 123 | |||
| 124 | checked.svg ui/checkbox-checked-symbolic.svg | ||
| 125 | unchecked.svg ui/checkbox-symbolic.svg | ||
| 126 | checkbox-mixed.svg ui/checkbox-mixed-symbolic.svg | ||
| 127 | radio.svg ui/radio-symbolic.svg | ||
| 128 | radio-mixed.svg ui/radio-mixed-symbolic.svg | ||
| 129 | radio-checked.svg ui/radio-checked-symbolic.svg | ||
| 130 | down.svg ui/pan-down-symbolic.svg | ||
| 131 | left.svg ui/pan-start-symbolic.svg | ||
| 132 | right.svg ui/pan-end-symbolic.svg | ||
| 133 | up.svg ui/pan-up-symbolic.svg | ||
diff --git a/etc/images/checkbox-mixed.svg b/etc/images/checkbox-mixed.svg new file mode 100644 index 00000000000..6e46b803c81 --- /dev/null +++ b/etc/images/checkbox-mixed.svg | |||
| @@ -0,0 +1,6 @@ | |||
| 1 | <svg xmlns="http://www.w3.org/2000/svg" height="1em" viewBox="0 0 16 16"> | ||
| 2 | <g> | ||
| 3 | <path d="M3.5 1A2.506 2.506 0 0 0 1 3.5v9C1 13.876 2.124 15 3.5 15h9c1.376 0 2.5-1.124 2.5-2.5v-9C15 2.124 13.876 1 12.5 1zm0 1h9c.84 0 1.5 .66 1.5 1.5v9c0 .84-.66 1.5-1.5 1.5h-9c-.84 0-1.5-.66-1.5-1.5v-9C2 2.66 2.66 2 3.5 2z" overflow="visible" /> | ||
| 4 | <path d="M5 6a2 2 0 1 0 0 4h6a2 2 0 1 0 0 -4z" overflow="visible" /> | ||
| 5 | </g> | ||
| 6 | </svg> | ||
diff --git a/etc/images/checked.svg b/etc/images/checked.svg new file mode 100644 index 00000000000..4cbdef04f25 --- /dev/null +++ b/etc/images/checked.svg | |||
| @@ -0,0 +1,6 @@ | |||
| 1 | <svg xmlns="http://www.w3.org/2000/svg" height="1em" viewBox="0 0 16 16"> | ||
| 2 | <g> | ||
| 3 | <path d="M3.5 1A2.506 2.506 0 0 0 1 3.5v9C1 13.876 2.124 15 3.5 15h9c1.376 0 2.5-1.124 2.5-2.5v-9C15 2.124 13.876 1 12.5 1zm0 1h9c.84 0 1.5 .66 1.5 1.5v9c0 .84-.66 1.5-1.5 1.5h-9c-.84 0-1.5-.66-1.5-1.5v-9C2 2.66 2.66 2 3.5 2z" overflow="visible" /> | ||
| 4 | <path d="M14.5 3l-.5-.5L7.5 9 5 6.5l-2 2L7.5 13l7-7z" overflow="visible" /> | ||
| 5 | </g> | ||
| 6 | </svg> | ||
diff --git a/etc/images/down.svg b/etc/images/down.svg new file mode 100644 index 00000000000..e2760427d73 --- /dev/null +++ b/etc/images/down.svg | |||
| @@ -0,0 +1,40 @@ | |||
| 1 | <?xml version='1.0' encoding='UTF-8' standalone='no'?> | ||
| 2 | <svg xmlns:cc='http://creativecommons.org/ns#' xmlns:dc='http://purl.org/dc/elements/1.1/' sodipodi:docname='pan-down-symbolic.svg' inkscape:export-filename='/home/sam/source-symbolic.png' inkscape:export-xdpi='270' inkscape:export-ydpi='270' height='16' id='svg7384' xmlns:inkscape='http://www.inkscape.org/namespaces/inkscape' xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#' xmlns:sodipodi='http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd' style='enable-background:new' xmlns:svg='http://www.w3.org/2000/svg' version='1.1' inkscape:version='1.0 (4035a4fb49, 2020-05-01)' width='16' xmlns='http://www.w3.org/2000/svg'> | ||
| 3 | <sodipodi:namedview inkscape:bbox-nodes='true' inkscape:bbox-paths='false' bordercolor='#000000' borderlayer='false' borderopacity='0.50196078' inkscape:current-layer='layer10' inkscape:cx='-8.85234' inkscape:cy='7.9624984' inkscape:document-rotation='0' gridtolerance='10' inkscape:guide-bbox='true' guidetolerance='10' id='namedview88' inkscape:measure-end='0,0' inkscape:measure-start='0,0' inkscape:object-nodes='true' inkscape:object-paths='true' objecttolerance='10' pagecolor='#e2e2e2' inkscape:pageopacity='0' inkscape:pageshadow='2' showborder='false' showgrid='true' showguides='false' inkscape:showpageshadow='false' inkscape:snap-bbox='true' inkscape:snap-bbox-edge-midpoints='false' inkscape:snap-bbox-midpoints='true' inkscape:snap-center='false' inkscape:snap-global='true' inkscape:snap-grids='true' inkscape:snap-intersection-paths='false' inkscape:snap-midpoints='true' inkscape:snap-nodes='true' inkscape:snap-object-midpoints='true' inkscape:snap-others='true' inkscape:snap-page='false' inkscape:snap-smooth-nodes='true' inkscape:snap-to-guides='true' inkscape:window-height='1205' inkscape:window-maximized='0' inkscape:window-width='1553' inkscape:window-x='26' inkscape:window-y='23' inkscape:zoom='1'> | ||
| 4 | <inkscape:grid color='#000000' dotted='false' empcolor='#0800ff' empopacity='0.4627451' empspacing='4' enabled='true' id='grid4866' opacity='0.16470588' originx='-152.00586' originy='-952' snapvisiblegridlinesonly='true' spacingx='1' spacingy='1' type='xygrid' visible='true'/> | ||
| 5 | <inkscape:grid dotted='true' empcolor='#3f3fff' empopacity='0' empspacing='4' id='grid3540' originx='-152.00586' originy='-952' spacingx='0.5' spacingy='0.5' type='xygrid'/> | ||
| 6 | </sodipodi:namedview> | ||
| 7 | <metadata id='metadata90'> | ||
| 8 | <rdf:RDF> | ||
| 9 | <cc:Work rdf:about=''> | ||
| 10 | <dc:format>image/svg+xml</dc:format> | ||
| 11 | <dc:type rdf:resource='http://purl.org/dc/dcmitype/StillImage'/> | ||
| 12 | <dc:title>Gnome Symbolic Icons</dc:title> | ||
| 13 | <cc:license rdf:resource='http://creativecommons.org/licenses/by-sa/4.0/'/> | ||
| 14 | </cc:Work> | ||
| 15 | <cc:License rdf:about='http://creativecommons.org/licenses/by-sa/4.0/'> | ||
| 16 | <cc:permits rdf:resource='http://creativecommons.org/ns#Reproduction'/> | ||
| 17 | <cc:permits rdf:resource='http://creativecommons.org/ns#Distribution'/> | ||
| 18 | <cc:requires rdf:resource='http://creativecommons.org/ns#Notice'/> | ||
| 19 | <cc:requires rdf:resource='http://creativecommons.org/ns#Attribution'/> | ||
| 20 | <cc:permits rdf:resource='http://creativecommons.org/ns#DerivativeWorks'/> | ||
| 21 | <cc:requires rdf:resource='http://creativecommons.org/ns#ShareAlike'/> | ||
| 22 | </cc:License> | ||
| 23 | </rdf:RDF> | ||
| 24 | </metadata> | ||
| 25 | <title id='title8473'>Gnome Symbolic Icons</title> | ||
| 26 | <defs id='defs7386'/> | ||
| 27 | <g inkscape:groupmode='layer' id='layer10' inkscape:label='ui' transform='translate(-152.00586,-952)'> | ||
| 28 | <path inkscape:connector-curvature='0' d='m 166,957 -5.99414,5.99999 L 154,957 Z' id='path6424' sodipodi:nodetypes='cccc' style='fill:#2e3436;fill-opacity:1;stroke:none'/> | ||
| 29 | </g> | ||
| 30 | <g inkscape:groupmode='layer' id='layer1' inkscape:label='status' transform='translate(-152.00586,-888)'/> | ||
| 31 | <g inkscape:groupmode='layer' id='layer11' inkscape:label='legacy' transform='translate(-152.00586,-952)'/> | ||
| 32 | <g inkscape:groupmode='layer' id='layer7' inkscape:label='places' transform='translate(-152.00586,-888)'/> | ||
| 33 | <g inkscape:groupmode='layer' id='layer6' inkscape:label='mimetypes' transform='translate(-152.00586,-888)'/> | ||
| 34 | <g inkscape:groupmode='layer' id='layer5' inkscape:label='emotes' transform='translate(-152.00586,-888)'/> | ||
| 35 | <g inkscape:groupmode='layer' id='layer9' inkscape:label='emblems' transform='translate(-152.00586,-888)'/> | ||
| 36 | <g inkscape:groupmode='layer' id='layer2' inkscape:label='devices' transform='translate(-152.00586,-888)'/> | ||
| 37 | <g inkscape:groupmode='layer' id='layer8' inkscape:label='categories' transform='translate(-152.00586,-888)'/> | ||
| 38 | <g inkscape:groupmode='layer' id='layer3' inkscape:label='apps' transform='translate(-152.00586,-888)'/> | ||
| 39 | <g inkscape:groupmode='layer' id='layer4' inkscape:label='actions' transform='translate(-152.00586,-888)'/> | ||
| 40 | </svg> | ||
diff --git a/etc/images/left.svg b/etc/images/left.svg new file mode 100644 index 00000000000..d6429bc4109 --- /dev/null +++ b/etc/images/left.svg | |||
| @@ -0,0 +1,40 @@ | |||
| 1 | <?xml version='1.0' encoding='UTF-8' standalone='no'?> | ||
| 2 | <svg xmlns:cc='http://creativecommons.org/ns#' xmlns:dc='http://purl.org/dc/elements/1.1/' sodipodi:docname='pan-start-symbolic.svg' inkscape:export-filename='/home/sam/source-symbolic.png' inkscape:export-xdpi='270' inkscape:export-ydpi='270' height='16' id='svg7384' xmlns:inkscape='http://www.inkscape.org/namespaces/inkscape' xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#' xmlns:sodipodi='http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd' style='enable-background:new' xmlns:svg='http://www.w3.org/2000/svg' version='1.1' inkscape:version='1.0 (4035a4fb49, 2020-05-01)' width='16' xmlns='http://www.w3.org/2000/svg'> | ||
| 3 | <sodipodi:namedview inkscape:bbox-nodes='true' inkscape:bbox-paths='false' bordercolor='#000000' borderlayer='false' borderopacity='0.50196078' inkscape:current-layer='layer10' inkscape:cx='51.147672' inkscape:cy='7.96251' inkscape:document-rotation='0' gridtolerance='10' inkscape:guide-bbox='true' guidetolerance='10' id='namedview88' inkscape:measure-end='0,0' inkscape:measure-start='0,0' inkscape:object-nodes='true' inkscape:object-paths='true' objecttolerance='10' pagecolor='#e2e2e2' inkscape:pageopacity='0' inkscape:pageshadow='2' showborder='false' showgrid='true' showguides='false' inkscape:showpageshadow='false' inkscape:snap-bbox='true' inkscape:snap-bbox-edge-midpoints='false' inkscape:snap-bbox-midpoints='true' inkscape:snap-center='false' inkscape:snap-global='true' inkscape:snap-grids='true' inkscape:snap-intersection-paths='false' inkscape:snap-midpoints='true' inkscape:snap-nodes='true' inkscape:snap-object-midpoints='true' inkscape:snap-others='true' inkscape:snap-page='false' inkscape:snap-smooth-nodes='true' inkscape:snap-to-guides='true' inkscape:window-height='1205' inkscape:window-maximized='0' inkscape:window-width='1553' inkscape:window-x='26' inkscape:window-y='23' inkscape:zoom='1'> | ||
| 4 | <inkscape:grid color='#000000' dotted='false' empcolor='#0800ff' empopacity='0.4627451' empspacing='4' enabled='true' id='grid4866' opacity='0.16470588' originx='-92.005848' originy='-951.99999' snapvisiblegridlinesonly='true' spacingx='1' spacingy='1' type='xygrid' visible='true'/> | ||
| 5 | <inkscape:grid dotted='true' empcolor='#3f3fff' empopacity='0' empspacing='4' id='grid3540' originx='-92.005848' originy='-951.99999' spacingx='0.5' spacingy='0.5' type='xygrid'/> | ||
| 6 | </sodipodi:namedview> | ||
| 7 | <metadata id='metadata90'> | ||
| 8 | <rdf:RDF> | ||
| 9 | <cc:Work rdf:about=''> | ||
| 10 | <dc:format>image/svg+xml</dc:format> | ||
| 11 | <dc:type rdf:resource='http://purl.org/dc/dcmitype/StillImage'/> | ||
| 12 | <dc:title>Gnome Symbolic Icons</dc:title> | ||
| 13 | <cc:license rdf:resource='http://creativecommons.org/licenses/by-sa/4.0/'/> | ||
| 14 | </cc:Work> | ||
| 15 | <cc:License rdf:about='http://creativecommons.org/licenses/by-sa/4.0/'> | ||
| 16 | <cc:permits rdf:resource='http://creativecommons.org/ns#Reproduction'/> | ||
| 17 | <cc:permits rdf:resource='http://creativecommons.org/ns#Distribution'/> | ||
| 18 | <cc:requires rdf:resource='http://creativecommons.org/ns#Notice'/> | ||
| 19 | <cc:requires rdf:resource='http://creativecommons.org/ns#Attribution'/> | ||
| 20 | <cc:permits rdf:resource='http://creativecommons.org/ns#DerivativeWorks'/> | ||
| 21 | <cc:requires rdf:resource='http://creativecommons.org/ns#ShareAlike'/> | ||
| 22 | </cc:License> | ||
| 23 | </rdf:RDF> | ||
| 24 | </metadata> | ||
| 25 | <title id='title8473'>Gnome Symbolic Icons</title> | ||
| 26 | <defs id='defs7386'/> | ||
| 27 | <g inkscape:groupmode='layer' id='layer10' inkscape:label='ui' transform='translate(-92.005848,-951.99999)'> | ||
| 28 | <path inkscape:connector-curvature='0' d='M 103,966 97.00585,959.99999 103,954 Z' id='path6400' sodipodi:nodetypes='cccc' style='fill:#2e3436;fill-opacity:1;stroke:none'/> | ||
| 29 | </g> | ||
| 30 | <g inkscape:groupmode='layer' id='layer1' inkscape:label='status' transform='translate(-92.005848,-887.99999)'/> | ||
| 31 | <g inkscape:groupmode='layer' id='layer11' inkscape:label='legacy' transform='translate(-92.005848,-951.99999)'/> | ||
| 32 | <g inkscape:groupmode='layer' id='layer7' inkscape:label='places' transform='translate(-92.005848,-887.99999)'/> | ||
| 33 | <g inkscape:groupmode='layer' id='layer6' inkscape:label='mimetypes' transform='translate(-92.005848,-887.99999)'/> | ||
| 34 | <g inkscape:groupmode='layer' id='layer5' inkscape:label='emotes' transform='translate(-92.005848,-887.99999)'/> | ||
| 35 | <g inkscape:groupmode='layer' id='layer9' inkscape:label='emblems' transform='translate(-92.005848,-887.99999)'/> | ||
| 36 | <g inkscape:groupmode='layer' id='layer2' inkscape:label='devices' transform='translate(-92.005848,-887.99999)'/> | ||
| 37 | <g inkscape:groupmode='layer' id='layer8' inkscape:label='categories' transform='translate(-92.005848,-887.99999)'/> | ||
| 38 | <g inkscape:groupmode='layer' id='layer3' inkscape:label='apps' transform='translate(-92.005848,-887.99999)'/> | ||
| 39 | <g inkscape:groupmode='layer' id='layer4' inkscape:label='actions' transform='translate(-92.005848,-887.99999)'/> | ||
| 40 | </svg> | ||
diff --git a/etc/images/radio-checked.svg b/etc/images/radio-checked.svg new file mode 100644 index 00000000000..8950b447a0b --- /dev/null +++ b/etc/images/radio-checked.svg | |||
| @@ -0,0 +1,6 @@ | |||
| 1 | <svg xmlns="http://www.w3.org/2000/svg" height="1em" viewBox="0 0 16 16"> | ||
| 2 | <g> | ||
| 3 | <path d="M8 5a3.001 3.001 0 0 0 0 6 3.001 3.001 0 0 0 0 -6z" overflow="visible"/> | ||
| 4 | <path d="M8.004 1C4.144 1 1 4.144 1 8.004c0 3.86 3.144 7.006 7.004 7.006 3.86 0 7.006-3.146 7.006-7.006C15.01 4.144 11.864 1 8.004 1zm0 1a6.002 6.002 0 0 1 6.006 6.004 6.004 6.004 0 0 1 -6.006 6.006A6.002 6.002 0 0 1 2 8.004 6 6 0 0 1 8.004 2z" overflow="visible"/> | ||
| 5 | </g> | ||
| 6 | </svg> | ||
diff --git a/etc/images/radio-mixed.svg b/etc/images/radio-mixed.svg new file mode 100644 index 00000000000..1b3bfa78e9d --- /dev/null +++ b/etc/images/radio-mixed.svg | |||
| @@ -0,0 +1,6 @@ | |||
| 1 | <svg xmlns="http://www.w3.org/2000/svg" height="1em" viewBox="0 0 16 16"> | ||
| 2 | <g> | ||
| 3 | <path d="M8 1C4.142 1 1 4.142 1 8s3.142 7 7 7 7-3.142 7-7-3.142-7-7-7zm0 1c3.316 0 6 2.684 6 6s-2.684 6-6 6-6-2.684-6-6 2.684-6 6-6z" overflow="visible" /> | ||
| 4 | <path d="M5 6a2 2 0 1 0 0 4h6a2 2 0 1 0 0 -4z" overflow="visible" /> | ||
| 5 | </g> | ||
| 6 | </svg> | ||
diff --git a/etc/images/radio.svg b/etc/images/radio.svg new file mode 100644 index 00000000000..2593a78610e --- /dev/null +++ b/etc/images/radio.svg | |||
| @@ -0,0 +1,3 @@ | |||
| 1 | <svg xmlns="http://www.w3.org/2000/svg" height="1em" viewBox="0 0 16 16"> | ||
| 2 | <path d="M8 1C4.142 1 1 4.142 1 8s3.142 7 7 7 7-3.142 7-7-3.142-7-7-7zm0 1c3.316 0 6 2.684 6 6s-2.684 6-6 6-6-2.684-6-6 2.684-6 6-6z" overflow="visible" /> | ||
| 3 | </svg> | ||
diff --git a/etc/images/right.svg b/etc/images/right.svg new file mode 100644 index 00000000000..d58cd364359 --- /dev/null +++ b/etc/images/right.svg | |||
| @@ -0,0 +1,40 @@ | |||
| 1 | <?xml version='1.0' encoding='UTF-8' standalone='no'?> | ||
| 2 | <svg xmlns:cc='http://creativecommons.org/ns#' xmlns:dc='http://purl.org/dc/elements/1.1/' sodipodi:docname='pan-end-symbolic.svg' inkscape:export-filename='/home/sam/source-symbolic.png' inkscape:export-xdpi='270' inkscape:export-ydpi='270' height='16' id='svg7384' xmlns:inkscape='http://www.inkscape.org/namespaces/inkscape' xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#' xmlns:sodipodi='http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd' style='enable-background:new' xmlns:svg='http://www.w3.org/2000/svg' version='1.1' inkscape:version='1.0 (4035a4fb49, 2020-05-01)' width='16' xmlns='http://www.w3.org/2000/svg'> | ||
| 3 | <sodipodi:namedview inkscape:bbox-nodes='true' inkscape:bbox-paths='false' bordercolor='#000000' borderlayer='false' borderopacity='0.50196078' inkscape:current-layer='layer10' inkscape:cx='31.147668' inkscape:cy='7.96251' inkscape:document-rotation='0' gridtolerance='10' inkscape:guide-bbox='true' guidetolerance='10' id='namedview88' inkscape:measure-end='0,0' inkscape:measure-start='0,0' inkscape:object-nodes='true' inkscape:object-paths='true' objecttolerance='10' pagecolor='#e2e2e2' inkscape:pageopacity='0' inkscape:pageshadow='2' showborder='false' showgrid='true' showguides='false' inkscape:showpageshadow='false' inkscape:snap-bbox='true' inkscape:snap-bbox-edge-midpoints='false' inkscape:snap-bbox-midpoints='true' inkscape:snap-center='false' inkscape:snap-global='true' inkscape:snap-grids='true' inkscape:snap-intersection-paths='false' inkscape:snap-midpoints='true' inkscape:snap-nodes='true' inkscape:snap-object-midpoints='true' inkscape:snap-others='true' inkscape:snap-page='false' inkscape:snap-smooth-nodes='true' inkscape:snap-to-guides='true' inkscape:window-height='1205' inkscape:window-maximized='0' inkscape:window-width='1553' inkscape:window-x='26' inkscape:window-y='23' inkscape:zoom='1'> | ||
| 4 | <inkscape:grid color='#000000' dotted='false' empcolor='#0800ff' empopacity='0.4627451' empspacing='4' enabled='true' id='grid4866' opacity='0.16470588' originx='-112.00585' originy='-951.99999' snapvisiblegridlinesonly='true' spacingx='1' spacingy='1' type='xygrid' visible='true'/> | ||
| 5 | <inkscape:grid dotted='true' empcolor='#3f3fff' empopacity='0' empspacing='4' id='grid3540' originx='-112.00585' originy='-951.99999' spacingx='0.5' spacingy='0.5' type='xygrid'/> | ||
| 6 | </sodipodi:namedview> | ||
| 7 | <metadata id='metadata90'> | ||
| 8 | <rdf:RDF> | ||
| 9 | <cc:Work rdf:about=''> | ||
| 10 | <dc:format>image/svg+xml</dc:format> | ||
| 11 | <dc:type rdf:resource='http://purl.org/dc/dcmitype/StillImage'/> | ||
| 12 | <dc:title>Gnome Symbolic Icons</dc:title> | ||
| 13 | <cc:license rdf:resource='http://creativecommons.org/licenses/by-sa/4.0/'/> | ||
| 14 | </cc:Work> | ||
| 15 | <cc:License rdf:about='http://creativecommons.org/licenses/by-sa/4.0/'> | ||
| 16 | <cc:permits rdf:resource='http://creativecommons.org/ns#Reproduction'/> | ||
| 17 | <cc:permits rdf:resource='http://creativecommons.org/ns#Distribution'/> | ||
| 18 | <cc:requires rdf:resource='http://creativecommons.org/ns#Notice'/> | ||
| 19 | <cc:requires rdf:resource='http://creativecommons.org/ns#Attribution'/> | ||
| 20 | <cc:permits rdf:resource='http://creativecommons.org/ns#DerivativeWorks'/> | ||
| 21 | <cc:requires rdf:resource='http://creativecommons.org/ns#ShareAlike'/> | ||
| 22 | </cc:License> | ||
| 23 | </rdf:RDF> | ||
| 24 | </metadata> | ||
| 25 | <title id='title8473'>Gnome Symbolic Icons</title> | ||
| 26 | <defs id='defs7386'/> | ||
| 27 | <g inkscape:groupmode='layer' id='layer10' inkscape:label='ui' transform='translate(-112.00585,-951.99999)'> | ||
| 28 | <path inkscape:connector-curvature='0' d='m 117,966 6.00585,-6.00001 L 117,954 Z' id='path6412' sodipodi:nodetypes='cccc' style='fill:#2e3436;fill-opacity:1;stroke:none'/> | ||
| 29 | </g> | ||
| 30 | <g inkscape:groupmode='layer' id='layer1' inkscape:label='status' transform='translate(-112.00585,-887.99999)'/> | ||
| 31 | <g inkscape:groupmode='layer' id='layer11' inkscape:label='legacy' transform='translate(-112.00585,-951.99999)'/> | ||
| 32 | <g inkscape:groupmode='layer' id='layer7' inkscape:label='places' transform='translate(-112.00585,-887.99999)'/> | ||
| 33 | <g inkscape:groupmode='layer' id='layer6' inkscape:label='mimetypes' transform='translate(-112.00585,-887.99999)'/> | ||
| 34 | <g inkscape:groupmode='layer' id='layer5' inkscape:label='emotes' transform='translate(-112.00585,-887.99999)'/> | ||
| 35 | <g inkscape:groupmode='layer' id='layer9' inkscape:label='emblems' transform='translate(-112.00585,-887.99999)'/> | ||
| 36 | <g inkscape:groupmode='layer' id='layer2' inkscape:label='devices' transform='translate(-112.00585,-887.99999)'/> | ||
| 37 | <g inkscape:groupmode='layer' id='layer8' inkscape:label='categories' transform='translate(-112.00585,-887.99999)'/> | ||
| 38 | <g inkscape:groupmode='layer' id='layer3' inkscape:label='apps' transform='translate(-112.00585,-887.99999)'/> | ||
| 39 | <g inkscape:groupmode='layer' id='layer4' inkscape:label='actions' transform='translate(-112.00585,-887.99999)'/> | ||
| 40 | </svg> | ||
diff --git a/etc/images/unchecked.svg b/etc/images/unchecked.svg new file mode 100644 index 00000000000..09bab8de95b --- /dev/null +++ b/etc/images/unchecked.svg | |||
| @@ -0,0 +1,3 @@ | |||
| 1 | <svg xmlns="http://www.w3.org/2000/svg" height="1em" viewBox="0 0 16 16"> | ||
| 2 | <path d="M3.5 1A2.506 2.506 0 0 0 1 3.5v9C1 13.876 2.124 15 3.5 15h9c1.376 0 2.5-1.124 2.5-2.5v-9C15 2.124 13.876 1 12.5 1zm0 1h9c.84 0 1.5 .66 1.5 1.5v9c0 .84-.66 1.5-1.5 1.5h-9c-.84 0-1.5-.66-1.5-1.5v-9C2 2.66 2.66 2 3.5 2z" overflow="visible" /> | ||
| 3 | </svg> | ||
diff --git a/etc/images/up.svg b/etc/images/up.svg new file mode 100644 index 00000000000..9e1a245be74 --- /dev/null +++ b/etc/images/up.svg | |||
| @@ -0,0 +1,40 @@ | |||
| 1 | <?xml version='1.0' encoding='UTF-8' standalone='no'?> | ||
| 2 | <svg xmlns:cc='http://creativecommons.org/ns#' xmlns:dc='http://purl.org/dc/elements/1.1/' sodipodi:docname='pan-up-symbolic.svg' inkscape:export-filename='/home/sam/source-symbolic.png' inkscape:export-xdpi='270' inkscape:export-ydpi='270' height='16' id='svg7384' xmlns:inkscape='http://www.inkscape.org/namespaces/inkscape' xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#' xmlns:sodipodi='http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd' style='enable-background:new' xmlns:svg='http://www.w3.org/2000/svg' version='1.1' inkscape:version='1.0 (4035a4fb49, 2020-05-01)' width='16' xmlns='http://www.w3.org/2000/svg'> | ||
| 3 | <sodipodi:namedview inkscape:bbox-nodes='true' inkscape:bbox-paths='false' bordercolor='#000000' borderlayer='false' borderopacity='0.50196078' inkscape:current-layer='layer10' inkscape:cx='11.14767' inkscape:cy='7.9625016' inkscape:document-rotation='0' gridtolerance='10' inkscape:guide-bbox='true' guidetolerance='10' id='namedview88' inkscape:measure-end='0,0' inkscape:measure-start='0,0' inkscape:object-nodes='true' inkscape:object-paths='true' objecttolerance='10' pagecolor='#e2e2e2' inkscape:pageopacity='0' inkscape:pageshadow='2' showborder='false' showgrid='true' showguides='false' inkscape:showpageshadow='false' inkscape:snap-bbox='true' inkscape:snap-bbox-edge-midpoints='false' inkscape:snap-bbox-midpoints='true' inkscape:snap-center='false' inkscape:snap-global='true' inkscape:snap-grids='true' inkscape:snap-intersection-paths='false' inkscape:snap-midpoints='true' inkscape:snap-nodes='true' inkscape:snap-object-midpoints='true' inkscape:snap-others='true' inkscape:snap-page='false' inkscape:snap-smooth-nodes='true' inkscape:snap-to-guides='true' inkscape:window-height='1205' inkscape:window-maximized='0' inkscape:window-width='1553' inkscape:window-x='26' inkscape:window-y='23' inkscape:zoom='1'> | ||
| 4 | <inkscape:grid color='#000000' dotted='false' empcolor='#0800ff' empopacity='0.4627451' empspacing='4' enabled='true' id='grid4866' opacity='0.16470588' originx='-132.00585' originy='-952' snapvisiblegridlinesonly='true' spacingx='1' spacingy='1' type='xygrid' visible='true'/> | ||
| 5 | <inkscape:grid dotted='true' empcolor='#3f3fff' empopacity='0' empspacing='4' id='grid3540' originx='-132.00585' originy='-952' spacingx='0.5' spacingy='0.5' type='xygrid'/> | ||
| 6 | </sodipodi:namedview> | ||
| 7 | <metadata id='metadata90'> | ||
| 8 | <rdf:RDF> | ||
| 9 | <cc:Work rdf:about=''> | ||
| 10 | <dc:format>image/svg+xml</dc:format> | ||
| 11 | <dc:type rdf:resource='http://purl.org/dc/dcmitype/StillImage'/> | ||
| 12 | <dc:title>Gnome Symbolic Icons</dc:title> | ||
| 13 | <cc:license rdf:resource='http://creativecommons.org/licenses/by-sa/4.0/'/> | ||
| 14 | </cc:Work> | ||
| 15 | <cc:License rdf:about='http://creativecommons.org/licenses/by-sa/4.0/'> | ||
| 16 | <cc:permits rdf:resource='http://creativecommons.org/ns#Reproduction'/> | ||
| 17 | <cc:permits rdf:resource='http://creativecommons.org/ns#Distribution'/> | ||
| 18 | <cc:requires rdf:resource='http://creativecommons.org/ns#Notice'/> | ||
| 19 | <cc:requires rdf:resource='http://creativecommons.org/ns#Attribution'/> | ||
| 20 | <cc:permits rdf:resource='http://creativecommons.org/ns#DerivativeWorks'/> | ||
| 21 | <cc:requires rdf:resource='http://creativecommons.org/ns#ShareAlike'/> | ||
| 22 | </cc:License> | ||
| 23 | </rdf:RDF> | ||
| 24 | </metadata> | ||
| 25 | <title id='title8473'>Gnome Symbolic Icons</title> | ||
| 26 | <defs id='defs7386'/> | ||
| 27 | <g inkscape:groupmode='layer' id='layer10' inkscape:label='ui' transform='translate(-132.00585,-952)'> | ||
| 28 | <path inkscape:connector-curvature='0' d='M 146,963 140.00585,956.99999 134,963 Z' id='path6418' sodipodi:nodetypes='cccc' style='fill:#2e3436;fill-opacity:1;stroke:none'/> | ||
| 29 | </g> | ||
| 30 | <g inkscape:groupmode='layer' id='layer1' inkscape:label='status' transform='translate(-132.00585,-888)'/> | ||
| 31 | <g inkscape:groupmode='layer' id='layer11' inkscape:label='legacy' transform='translate(-132.00585,-952)'/> | ||
| 32 | <g inkscape:groupmode='layer' id='layer7' inkscape:label='places' transform='translate(-132.00585,-888)'/> | ||
| 33 | <g inkscape:groupmode='layer' id='layer6' inkscape:label='mimetypes' transform='translate(-132.00585,-888)'/> | ||
| 34 | <g inkscape:groupmode='layer' id='layer5' inkscape:label='emotes' transform='translate(-132.00585,-888)'/> | ||
| 35 | <g inkscape:groupmode='layer' id='layer9' inkscape:label='emblems' transform='translate(-132.00585,-888)'/> | ||
| 36 | <g inkscape:groupmode='layer' id='layer2' inkscape:label='devices' transform='translate(-132.00585,-888)'/> | ||
| 37 | <g inkscape:groupmode='layer' id='layer8' inkscape:label='categories' transform='translate(-132.00585,-888)'/> | ||
| 38 | <g inkscape:groupmode='layer' id='layer3' inkscape:label='apps' transform='translate(-132.00585,-888)'/> | ||
| 39 | <g inkscape:groupmode='layer' id='layer4' inkscape:label='actions' transform='translate(-132.00585,-888)'/> | ||
| 40 | </svg> | ||
diff --git a/leim/Makefile.in b/leim/Makefile.in index c2f9cf5ab5f..2646abcfff9 100644 --- a/leim/Makefile.in +++ b/leim/Makefile.in | |||
| @@ -137,19 +137,23 @@ ${srcdir}/../lisp/language/pinyin.el: ${srcdir}/MISC-DIC/pinyin.map | |||
| 137 | $(AM_V_GEN)${RUN_EMACS} -l titdic-cnv -f pinyin-convert $< $@ | 137 | $(AM_V_GEN)${RUN_EMACS} -l titdic-cnv -f pinyin-convert $< $@ |
| 138 | 138 | ||
| 139 | 139 | ||
| 140 | .PHONY: bootstrap-clean distclean maintainer-clean extraclean | 140 | .PHONY: bootstrap-clean distclean maintainer-clean extraclean gen-clean |
| 141 | 141 | ||
| 142 | ## Perhaps this should run gen-clean. | ||
| 142 | bootstrap-clean: | 143 | bootstrap-clean: |
| 143 | rm -f ${TIT_MISC} ${leimdir}/leim-list.el | 144 | rm -f ${TIT_MISC} ${leimdir}/leim-list.el |
| 144 | 145 | ||
| 145 | distclean: | 146 | distclean: |
| 146 | rm -f Makefile | 147 | rm -f Makefile |
| 147 | 148 | ||
| 148 | maintainer-clean: distclean bootstrap-clean | 149 | maintainer-clean: gen-clean distclean |
| 149 | 150 | ||
| 150 | ## We do not delete ja-dic, even in a bootstrap, because it rarely | 151 | ## ja-dic rarely changes and is slow to regenerate, and tends to be a |
| 151 | ## changes and is slow to regenerate. | 152 | ## bottleneck in parallel builds. |
| 152 | extraclean: bootstrap-clean | 153 | gen-clean: |
| 154 | rm -f ${TIT_MISC} ${leimdir}/leim-list.el | ||
| 153 | rm -rf ${leimdir}/ja-dic | 155 | rm -rf ${leimdir}/ja-dic |
| 154 | 156 | ||
| 157 | extraclean: maintainer-clean | ||
| 158 | |||
| 155 | ### Makefile.in ends here | 159 | ### Makefile.in ends here |
diff --git a/lisp/Makefile.in b/lisp/Makefile.in index c9266489a95..b970451dd20 100644 --- a/lisp/Makefile.in +++ b/lisp/Makefile.in | |||
| @@ -480,8 +480,10 @@ maintainer-clean: distclean bootstrap-clean | |||
| 480 | rm -f TAGS | 480 | rm -f TAGS |
| 481 | 481 | ||
| 482 | extraclean: bootstrap-clean distclean | 482 | extraclean: bootstrap-clean distclean |
| 483 | -for file in $(LOADDEFS); do rm -f $${file}~; done | 483 | -for file in $(loaddefs); do rm -f $${file}~; done |
| 484 | -rm -f $(lisp)/loaddefs.el~ | 484 | -rm -f $(lisp)/loaddefs.el~ |
| 485 | -find $(lisp) -name '*~' $(FIND_DELETE) | ||
| 486 | -find $(lisp) -name '#*' $(FIND_DELETE) | ||
| 485 | 487 | ||
| 486 | .PHONY: check-declare | 488 | .PHONY: check-declare |
| 487 | 489 | ||
diff --git a/lisp/avoid.el b/lisp/avoid.el index 3b3848e20d1..d3afecf8cc2 100644 --- a/lisp/avoid.el +++ b/lisp/avoid.el | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | ;;; avoid.el --- make mouse pointer stay out of the way of editing | 1 | ;;; avoid.el --- make mouse pointer stay out of the way of editing -*- lexical-binding: t -*- |
| 2 | 2 | ||
| 3 | ;; Copyright (C) 1993-1994, 2000-2021 Free Software Foundation, Inc. | 3 | ;; Copyright (C) 1993-1994, 2000-2021 Free Software Foundation, Inc. |
| 4 | 4 | ||
| @@ -80,7 +80,6 @@ use either \\[customize] or \\[mouse-avoidance-mode]." | |||
| 80 | :initialize 'custom-initialize-default | 80 | :initialize 'custom-initialize-default |
| 81 | :type '(choice (const :tag "none" nil) (const banish) (const jump) | 81 | :type '(choice (const :tag "none" nil) (const banish) (const jump) |
| 82 | (const animate) (const exile) (const proteus)) | 82 | (const animate) (const exile) (const proteus)) |
| 83 | :group 'avoid | ||
| 84 | :require 'avoid | 83 | :require 'avoid |
| 85 | :version "20.3") | 84 | :version "20.3") |
| 86 | 85 | ||
| @@ -89,25 +88,21 @@ use either \\[customize] or \\[mouse-avoidance-mode]." | |||
| 89 | "Average distance that mouse will be moved when approached by cursor. | 88 | "Average distance that mouse will be moved when approached by cursor. |
| 90 | Only applies in Mouse Avoidance mode `jump' and its derivatives. | 89 | Only applies in Mouse Avoidance mode `jump' and its derivatives. |
| 91 | For best results make this larger than `mouse-avoidance-threshold'." | 90 | For best results make this larger than `mouse-avoidance-threshold'." |
| 92 | :type 'integer | 91 | :type 'integer) |
| 93 | :group 'avoid) | ||
| 94 | 92 | ||
| 95 | (defcustom mouse-avoidance-nudge-var 10 | 93 | (defcustom mouse-avoidance-nudge-var 10 |
| 96 | "Variability of `mouse-avoidance-nudge-dist' (which see)." | 94 | "Variability of `mouse-avoidance-nudge-dist' (which see)." |
| 97 | :type 'integer | 95 | :type 'integer) |
| 98 | :group 'avoid) | ||
| 99 | 96 | ||
| 100 | (defcustom mouse-avoidance-animation-delay .01 | 97 | (defcustom mouse-avoidance-animation-delay .01 |
| 101 | "Delay between animation steps, in seconds." | 98 | "Delay between animation steps, in seconds." |
| 102 | :type 'number | 99 | :type 'number) |
| 103 | :group 'avoid) | ||
| 104 | 100 | ||
| 105 | (defcustom mouse-avoidance-threshold 5 | 101 | (defcustom mouse-avoidance-threshold 5 |
| 106 | "Mouse-pointer's flight distance. | 102 | "Mouse-pointer's flight distance. |
| 107 | If the cursor gets closer than this, the mouse pointer will move away. | 103 | If the cursor gets closer than this, the mouse pointer will move away. |
| 108 | Only applies in Mouse Avoidance modes `animate' and `jump'." | 104 | Only applies in Mouse Avoidance modes `animate' and `jump'." |
| 109 | :type 'integer | 105 | :type 'integer) |
| 110 | :group 'avoid) | ||
| 111 | 106 | ||
| 112 | (defcustom mouse-avoidance-banish-position '((frame-or-window . frame) | 107 | (defcustom mouse-avoidance-banish-position '((frame-or-window . frame) |
| 113 | (side . right) | 108 | (side . right) |
| @@ -380,7 +375,7 @@ redefine this function to suit your own tastes." | |||
| 380 | (mouse-avoidance-nudge-mouse) | 375 | (mouse-avoidance-nudge-mouse) |
| 381 | (if (not (eq (selected-frame) (car old-pos))) | 376 | (if (not (eq (selected-frame) (car old-pos))) |
| 382 | ;; This should never happen. | 377 | ;; This should never happen. |
| 383 | (apply 'set-mouse-position old-pos))))) | 378 | (apply #'set-mouse-position old-pos))))) |
| 384 | 379 | ||
| 385 | ;;;###autoload | 380 | ;;;###autoload |
| 386 | (defun mouse-avoidance-mode (&optional mode) | 381 | (defun mouse-avoidance-mode (&optional mode) |
diff --git a/lisp/calc/calc-alg.el b/lisp/calc/calc-alg.el index 1327cf0a39b..162026d092b 100644 --- a/lisp/calc/calc-alg.el +++ b/lisp/calc/calc-alg.el | |||
| @@ -444,12 +444,12 @@ Code can refer to the expression to simplify via lexical variable `expr' | |||
| 444 | and should return the simplified expression to use (or nil)." | 444 | and should return the simplified expression to use (or nil)." |
| 445 | (declare (indent 1) (debug (sexp body))) | 445 | (declare (indent 1) (debug (sexp body))) |
| 446 | (cons 'progn | 446 | (cons 'progn |
| 447 | (mapcar #'(lambda (func) | 447 | (mapcar (lambda (func) |
| 448 | `(put ',func 'math-simplify | 448 | `(put ',func 'math-simplify |
| 449 | (nconc | 449 | (nconc |
| 450 | (get ',func 'math-simplify) | 450 | (get ',func 'math-simplify) |
| 451 | (list | 451 | (list |
| 452 | #'(lambda (expr) ,@code))))) | 452 | (lambda (expr) ,@code))))) |
| 453 | (if (symbolp funcs) (list funcs) funcs)))) | 453 | (if (symbolp funcs) (list funcs) funcs)))) |
| 454 | 454 | ||
| 455 | (math-defsimplify (+ -) | 455 | (math-defsimplify (+ -) |
diff --git a/lisp/calc/calc-ext.el b/lisp/calc/calc-ext.el index 24781ed6c86..e85ecf03906 100644 --- a/lisp/calc/calc-ext.el +++ b/lisp/calc/calc-ext.el | |||
| @@ -2784,23 +2784,23 @@ If X is not an error form, return 1." | |||
| 2784 | (declare (indent 1) (debug (sexp body))) | 2784 | (declare (indent 1) (debug (sexp body))) |
| 2785 | (setq math-integral-cache nil) | 2785 | (setq math-integral-cache nil) |
| 2786 | (cons 'progn | 2786 | (cons 'progn |
| 2787 | (mapcar #'(lambda (func) | 2787 | (mapcar (lambda (func) |
| 2788 | `(put ',func 'math-integral | 2788 | `(put ',func 'math-integral |
| 2789 | (nconc | 2789 | (nconc |
| 2790 | (get ',func 'math-integral) | 2790 | (get ',func 'math-integral) |
| 2791 | (list | 2791 | (list |
| 2792 | #'(lambda (u) ,@code))))) | 2792 | (lambda (u) ,@code))))) |
| 2793 | (if (symbolp funcs) (list funcs) funcs)))) | 2793 | (if (symbolp funcs) (list funcs) funcs)))) |
| 2794 | 2794 | ||
| 2795 | (defmacro math-defintegral-2 (funcs &rest code) | 2795 | (defmacro math-defintegral-2 (funcs &rest code) |
| 2796 | (declare (indent 1) (debug (sexp body))) | 2796 | (declare (indent 1) (debug (sexp body))) |
| 2797 | (setq math-integral-cache nil) | 2797 | (setq math-integral-cache nil) |
| 2798 | (cons 'progn | 2798 | (cons 'progn |
| 2799 | (mapcar #'(lambda (func) | 2799 | (mapcar (lambda (func) |
| 2800 | `(put ',func 'math-integral-2 | 2800 | `(put ',func 'math-integral-2 |
| 2801 | (nconc | 2801 | (nconc |
| 2802 | (get ',func 'math-integral-2) | 2802 | (get ',func 'math-integral-2) |
| 2803 | (list #'(lambda (u v) ,@code))))) | 2803 | (list (lambda (u v) ,@code))))) |
| 2804 | (if (symbolp funcs) (list funcs) funcs)))) | 2804 | (if (symbolp funcs) (list funcs) funcs)))) |
| 2805 | 2805 | ||
| 2806 | (defvar var-IntegAfterRules 'calc-IntegAfterRules) | 2806 | (defvar var-IntegAfterRules 'calc-IntegAfterRules) |
diff --git a/lisp/calc/calc-prog.el b/lisp/calc/calc-prog.el index dd221457f83..4e27d7671e2 100644 --- a/lisp/calc/calc-prog.el +++ b/lisp/calc/calc-prog.el | |||
| @@ -1881,9 +1881,9 @@ Redefine the corresponding command." | |||
| 1881 | (if (fboundp (setq chk (intern (concat "math-" qual-name)))) | 1881 | (if (fboundp (setq chk (intern (concat "math-" qual-name)))) |
| 1882 | (append rest | 1882 | (append rest |
| 1883 | (if is-rest | 1883 | (if is-rest |
| 1884 | `((mapcar #'(lambda (x) | 1884 | `((mapcar (lambda (x) |
| 1885 | (or (,chk x) | 1885 | (or (,chk x) |
| 1886 | (math-reject-arg x ',qual))) | 1886 | (math-reject-arg x ',qual))) |
| 1887 | ,var)) | 1887 | ,var)) |
| 1888 | `((or (,chk ,var) | 1888 | `((or (,chk ,var) |
| 1889 | (math-reject-arg ,var ',qual))))) | 1889 | (math-reject-arg ,var ',qual))))) |
| @@ -1894,9 +1894,9 @@ Redefine the corresponding command." | |||
| 1894 | qual-name 1)))))) | 1894 | qual-name 1)))))) |
| 1895 | (append rest | 1895 | (append rest |
| 1896 | (if is-rest | 1896 | (if is-rest |
| 1897 | `((mapcar #'(lambda (x) | 1897 | `((mapcar (lambda (x) |
| 1898 | (and (,chk x) | 1898 | (and (,chk x) |
| 1899 | (math-reject-arg x ',qual))) | 1899 | (math-reject-arg x ',qual))) |
| 1900 | ,var)) | 1900 | ,var)) |
| 1901 | `((and | 1901 | `((and |
| 1902 | (,chk ,var) | 1902 | (,chk ,var) |
diff --git a/lisp/calendar/icalendar.el b/lisp/calendar/icalendar.el index d9cd21e3cd2..04b525efc8a 100644 --- a/lisp/calendar/icalendar.el +++ b/lisp/calendar/icalendar.el | |||
| @@ -105,10 +105,6 @@ | |||
| 105 | 105 | ||
| 106 | ;;; Code: | 106 | ;;; Code: |
| 107 | 107 | ||
| 108 | (defconst icalendar-version "0.19" | ||
| 109 | "Version number of icalendar.el.") | ||
| 110 | (make-obsolete-variable 'icalendar-version nil "28.1") | ||
| 111 | |||
| 112 | ;; ====================================================================== | 108 | ;; ====================================================================== |
| 113 | ;; Customizables | 109 | ;; Customizables |
| 114 | ;; ====================================================================== | 110 | ;; ====================================================================== |
| @@ -2557,6 +2553,11 @@ the entry." | |||
| 2557 | (or (icalendar--get-event-property event 'URL) "") | 2553 | (or (icalendar--get-event-property event 'URL) "") |
| 2558 | (or (icalendar--get-event-property event 'CLASS) ""))) | 2554 | (or (icalendar--get-event-property event 'CLASS) ""))) |
| 2559 | 2555 | ||
| 2556 | ;; Obsolete | ||
| 2557 | |||
| 2558 | (defconst icalendar-version "0.19" "Version number of icalendar.el.") | ||
| 2559 | (make-obsolete-variable 'icalendar-version 'emacs-version "28.1") | ||
| 2560 | |||
| 2560 | (provide 'icalendar) | 2561 | (provide 'icalendar) |
| 2561 | 2562 | ||
| 2562 | ;;; icalendar.el ends here | 2563 | ;;; icalendar.el ends here |
diff --git a/lisp/cedet/semantic/bovine/grammar.el b/lisp/cedet/semantic/bovine/grammar.el index a5b9873445e..a2717d711fe 100644 --- a/lisp/cedet/semantic/bovine/grammar.el +++ b/lisp/cedet/semantic/bovine/grammar.el | |||
| @@ -475,7 +475,7 @@ Menu items are appended to the common grammar menu.") | |||
| 475 | (with-current-buffer (find-file-noselect infile) | 475 | (with-current-buffer (find-file-noselect infile) |
| 476 | (setq infile buffer-file-name) | 476 | (setq infile buffer-file-name) |
| 477 | (if outdir (setq default-directory outdir)) | 477 | (if outdir (setq default-directory outdir)) |
| 478 | (semantic-grammar-create-package nil t)) | 478 | (semantic-grammar-create-package t t)) |
| 479 | (error (message "%s" (error-message-string err)) nil))) | 479 | (error (message "%s" (error-message-string err)) nil))) |
| 480 | lang filename copyright-end) | 480 | lang filename copyright-end) |
| 481 | (when (and packagename | 481 | (when (and packagename |
diff --git a/lisp/cedet/semantic/wisent/grammar.el b/lisp/cedet/semantic/wisent/grammar.el index 465d4720031..c5e4554082e 100644 --- a/lisp/cedet/semantic/wisent/grammar.el +++ b/lisp/cedet/semantic/wisent/grammar.el | |||
| @@ -477,7 +477,7 @@ Menu items are appended to the common grammar menu.") | |||
| 477 | (condition-case err | 477 | (condition-case err |
| 478 | (with-current-buffer (find-file-noselect infile) | 478 | (with-current-buffer (find-file-noselect infile) |
| 479 | (if outdir (setq default-directory outdir)) | 479 | (if outdir (setq default-directory outdir)) |
| 480 | (semantic-grammar-create-package nil t)) | 480 | (semantic-grammar-create-package t t)) |
| 481 | (error (message "%s" (error-message-string err)) nil))) | 481 | (error (message "%s" (error-message-string err)) nil))) |
| 482 | output-data) | 482 | output-data) |
| 483 | (when (setq output-data (assoc packagename wisent-make-parsers--parser-file-name)) | 483 | (when (setq output-data (assoc packagename wisent-make-parsers--parser-file-name)) |
diff --git a/lisp/dframe.el b/lisp/dframe.el index e61d2ea0581..f4208f3755a 100644 --- a/lisp/dframe.el +++ b/lisp/dframe.el | |||
| @@ -828,7 +828,7 @@ the mode-line." | |||
| 828 | 828 | ||
| 829 | (defvar dframe-version "1.3" | 829 | (defvar dframe-version "1.3" |
| 830 | "The current version of the dedicated frame library.") | 830 | "The current version of the dedicated frame library.") |
| 831 | (make-obsolete-variable 'dframe-version nil "28.1") | 831 | (make-obsolete-variable 'dframe-version 'emacs-version "28.1") |
| 832 | 832 | ||
| 833 | (provide 'dframe) | 833 | (provide 'dframe) |
| 834 | 834 | ||
diff --git a/lisp/doc-view.el b/lisp/doc-view.el index cef09009d95..0ae22934b2c 100644 --- a/lisp/doc-view.el +++ b/lisp/doc-view.el | |||
| @@ -1802,11 +1802,6 @@ If BACKWARD is non-nil, jump to the previous match." | |||
| 1802 | (remove-overlays (point-min) (point-max) 'doc-view t) | 1802 | (remove-overlays (point-min) (point-max) 'doc-view t) |
| 1803 | (if (consp image-mode-winprops-alist) (setq image-mode-winprops-alist nil))) | 1803 | (if (consp image-mode-winprops-alist) (setq image-mode-winprops-alist nil))) |
| 1804 | 1804 | ||
| 1805 | (defun doc-view-intersection (l1 l2) | ||
| 1806 | (let ((l ())) | ||
| 1807 | (dolist (x l1) (if (memq x l2) (push x l))) | ||
| 1808 | l)) | ||
| 1809 | |||
| 1810 | (defun doc-view-set-doc-type () | 1805 | (defun doc-view-set-doc-type () |
| 1811 | "Figure out the current document type (`doc-view-doc-type')." | 1806 | "Figure out the current document type (`doc-view-doc-type')." |
| 1812 | (let ((name-types | 1807 | (let ((name-types |
| @@ -1841,7 +1836,7 @@ If BACKWARD is non-nil, jump to the previous match." | |||
| 1841 | ((looking-at "AT&TFORM") '(djvu)))))) | 1836 | ((looking-at "AT&TFORM") '(djvu)))))) |
| 1842 | (setq-local | 1837 | (setq-local |
| 1843 | doc-view-doc-type | 1838 | doc-view-doc-type |
| 1844 | (car (or (doc-view-intersection name-types content-types) | 1839 | (car (or (nreverse (seq-intersection name-types content-types #'eq)) |
| 1845 | (when (and name-types content-types) | 1840 | (when (and name-types content-types) |
| 1846 | (error "Conflicting types: name says %s but content says %s" | 1841 | (error "Conflicting types: name says %s but content says %s" |
| 1847 | name-types content-types)) | 1842 | name-types content-types)) |
| @@ -2146,6 +2141,12 @@ See the command `doc-view-mode' for more information on this mode." | |||
| 2146 | (add-hook 'bookmark-after-jump-hook show-fn-sym) | 2141 | (add-hook 'bookmark-after-jump-hook show-fn-sym) |
| 2147 | (bookmark-default-handler bmk))) | 2142 | (bookmark-default-handler bmk))) |
| 2148 | 2143 | ||
| 2144 | ;; Obsolete. | ||
| 2145 | |||
| 2146 | (defun doc-view-intersection (l1 l2) | ||
| 2147 | (declare (obsolete seq-intersection "28.1")) | ||
| 2148 | (nreverse (seq-intersection l1 l2 #'eq))) | ||
| 2149 | |||
| 2149 | (provide 'doc-view) | 2150 | (provide 'doc-view) |
| 2150 | 2151 | ||
| 2151 | ;; Local Variables: | 2152 | ;; Local Variables: |
diff --git a/lisp/emacs-lisp/checkdoc.el b/lisp/emacs-lisp/checkdoc.el index 62851660c66..96b16f7ed45 100644 --- a/lisp/emacs-lisp/checkdoc.el +++ b/lisp/emacs-lisp/checkdoc.el | |||
| @@ -160,9 +160,6 @@ | |||
| 160 | ;; not specifically docstring related. Would this even be useful? | 160 | ;; not specifically docstring related. Would this even be useful? |
| 161 | 161 | ||
| 162 | ;;; Code: | 162 | ;;; Code: |
| 163 | (defvar checkdoc-version "0.6.2" | ||
| 164 | "Release version of checkdoc you are currently running.") | ||
| 165 | (make-obsolete-variable 'checkdoc-version nil "28.1") | ||
| 166 | 163 | ||
| 167 | (require 'cl-lib) | 164 | (require 'cl-lib) |
| 168 | (require 'help-mode) ;; for help-xref-info-regexp | 165 | (require 'help-mode) ;; for help-xref-info-regexp |
| @@ -2709,6 +2706,12 @@ function called to create the messages." | |||
| 2709 | 2706 | ||
| 2710 | (custom-add-option 'emacs-lisp-mode-hook 'checkdoc-minor-mode) | 2707 | (custom-add-option 'emacs-lisp-mode-hook 'checkdoc-minor-mode) |
| 2711 | 2708 | ||
| 2709 | ;; Obsolete | ||
| 2710 | |||
| 2711 | (defvar checkdoc-version "0.6.2" | ||
| 2712 | "Release version of checkdoc you are currently running.") | ||
| 2713 | (make-obsolete-variable 'checkdoc-version 'emacs-version "28.1") | ||
| 2714 | |||
| 2712 | (provide 'checkdoc) | 2715 | (provide 'checkdoc) |
| 2713 | 2716 | ||
| 2714 | ;;; checkdoc.el ends here | 2717 | ;;; checkdoc.el ends here |
diff --git a/lisp/emacs-lisp/seq.el b/lisp/emacs-lisp/seq.el index 2b8807faad5..6c15463ad52 100644 --- a/lisp/emacs-lisp/seq.el +++ b/lisp/emacs-lisp/seq.el | |||
| @@ -147,6 +147,7 @@ the sequence, and its index within the sequence." | |||
| 147 | "Return a shallow copy of SEQUENCE." | 147 | "Return a shallow copy of SEQUENCE." |
| 148 | (copy-sequence sequence)) | 148 | (copy-sequence sequence)) |
| 149 | 149 | ||
| 150 | ;;;###autoload | ||
| 150 | (cl-defgeneric seq-subseq (sequence start &optional end) | 151 | (cl-defgeneric seq-subseq (sequence start &optional end) |
| 151 | "Return the sequence of elements of SEQUENCE from START to END. | 152 | "Return the sequence of elements of SEQUENCE from START to END. |
| 152 | END is exclusive. | 153 | END is exclusive. |
| @@ -430,6 +431,7 @@ Equality is defined by TESTFN if non-nil or by `equal' if nil." | |||
| 430 | (setq index (1+ index))) | 431 | (setq index (1+ index))) |
| 431 | nil))) | 432 | nil))) |
| 432 | 433 | ||
| 434 | ;;;###autoload | ||
| 433 | (cl-defgeneric seq-uniq (sequence &optional testfn) | 435 | (cl-defgeneric seq-uniq (sequence &optional testfn) |
| 434 | "Return a list of the elements of SEQUENCE with duplicates removed. | 436 | "Return a list of the elements of SEQUENCE with duplicates removed. |
| 435 | TESTFN is used to compare elements, or `equal' if TESTFN is nil." | 437 | TESTFN is used to compare elements, or `equal' if TESTFN is nil." |
| @@ -467,6 +469,7 @@ Equality is defined by TESTFN if non-nil or by `equal' if nil." | |||
| 467 | (seq-reverse sequence1) | 469 | (seq-reverse sequence1) |
| 468 | '())) | 470 | '())) |
| 469 | 471 | ||
| 472 | ;;;###autoload | ||
| 470 | (cl-defgeneric seq-difference (sequence1 sequence2 &optional testfn) | 473 | (cl-defgeneric seq-difference (sequence1 sequence2 &optional testfn) |
| 471 | "Return a list of the elements that appear in SEQUENCE1 but not in SEQUENCE2. | 474 | "Return a list of the elements that appear in SEQUENCE1 but not in SEQUENCE2. |
| 472 | Equality is defined by TESTFN if non-nil or by `equal' if nil." | 475 | Equality is defined by TESTFN if non-nil or by `equal' if nil." |
diff --git a/lisp/emulation/edt.el b/lisp/emulation/edt.el index 50979c4dbb3..f11afb1d02d 100644 --- a/lisp/emulation/edt.el +++ b/lisp/emulation/edt.el | |||
| @@ -178,9 +178,6 @@ | |||
| 178 | (defvar edt-user-global-map) | 178 | (defvar edt-user-global-map) |
| 179 | (defvar rect-start-point) | 179 | (defvar rect-start-point) |
| 180 | 180 | ||
| 181 | (defconst edt-version "4.0" "EDT Emulation version number.") | ||
| 182 | (make-obsolete-variable 'edt-version nil "28.1") | ||
| 183 | |||
| 184 | ;;; | 181 | ;;; |
| 185 | ;;; User Configurable Variables | 182 | ;;; User Configurable Variables |
| 186 | ;;; | 183 | ;;; |
| @@ -2533,6 +2530,9 @@ G-C-\\: Split Window | FNDNXT | Yank | CUT | | |||
| 2533 | (set-frame-width nil 132) | 2530 | (set-frame-width nil 132) |
| 2534 | (message "Terminal width 132")) | 2531 | (message "Terminal width 132")) |
| 2535 | 2532 | ||
| 2533 | (defconst edt-version "4.0" "EDT Emulation version number.") | ||
| 2534 | (make-obsolete-variable 'edt-version 'emacs-version "28.1") | ||
| 2535 | |||
| 2536 | (provide 'edt) | 2536 | (provide 'edt) |
| 2537 | 2537 | ||
| 2538 | ;;; edt.el ends here | 2538 | ;;; edt.el ends here |
diff --git a/lisp/epg-config.el b/lisp/epg-config.el index 59d097c91f0..d32c8c897c7 100644 --- a/lisp/epg-config.el +++ b/lisp/epg-config.el | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | ;;; epg-config.el --- configuration of the EasyPG Library | 1 | ;;; epg-config.el --- configuration of the EasyPG Library -*- lexical-binding: t -*- |
| 2 | 2 | ||
| 3 | ;; Copyright (C) 2006-2021 Free Software Foundation, Inc. | 3 | ;; Copyright (C) 2006-2021 Free Software Foundation, Inc. |
| 4 | 4 | ||
| @@ -21,6 +21,8 @@ | |||
| 21 | ;; You should have received a copy of the GNU General Public License | 21 | ;; You should have received a copy of the GNU General Public License |
| 22 | ;; along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. | 22 | ;; along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. |
| 23 | 23 | ||
| 24 | ;;; Commentary: | ||
| 25 | |||
| 24 | ;;; Code: | 26 | ;;; Code: |
| 25 | ;;; Prelude | 27 | ;;; Prelude |
| 26 | 28 | ||
| @@ -157,7 +159,7 @@ version requirement is met." | |||
| 157 | (setq program-alist epg-config--program-alist)) | 159 | (setq program-alist epg-config--program-alist)) |
| 158 | (let ((entry (assq protocol program-alist))) | 160 | (let ((entry (assq protocol program-alist))) |
| 159 | (unless entry | 161 | (unless entry |
| 160 | (error "Unknown protocol %S" protocol)) | 162 | (error "Unknown protocol `%S'" protocol)) |
| 161 | (cl-destructuring-bind (symbol . alist) | 163 | (cl-destructuring-bind (symbol . alist) |
| 162 | (cdr entry) | 164 | (cdr entry) |
| 163 | (let ((constructor | 165 | (let ((constructor |
diff --git a/lisp/eshell/em-dirs.el b/lisp/eshell/em-dirs.el index c702ee192a6..c04a1a67d58 100644 --- a/lisp/eshell/em-dirs.el +++ b/lisp/eshell/em-dirs.el | |||
| @@ -199,10 +199,10 @@ Thus, this does not include the current directory.") | |||
| 199 | 199 | ||
| 200 | (when eshell-cd-on-directory | 200 | (when eshell-cd-on-directory |
| 201 | (setq-local eshell-interpreter-alist | 201 | (setq-local eshell-interpreter-alist |
| 202 | (cons (cons #'(lambda (file _args) | 202 | (cons (cons (lambda (file _args) |
| 203 | (eshell-lone-directory-p file)) | 203 | (eshell-lone-directory-p file)) |
| 204 | 'eshell-dirs-substitute-cd) | 204 | 'eshell-dirs-substitute-cd) |
| 205 | eshell-interpreter-alist))) | 205 | eshell-interpreter-alist))) |
| 206 | 206 | ||
| 207 | (add-hook 'eshell-parse-argument-hook | 207 | (add-hook 'eshell-parse-argument-hook |
| 208 | #'eshell-parse-user-reference nil t) | 208 | #'eshell-parse-user-reference nil t) |
diff --git a/lisp/eshell/em-hist.el b/lisp/eshell/em-hist.el index b7b1778ebb1..e559f5b39fe 100644 --- a/lisp/eshell/em-hist.el +++ b/lisp/eshell/em-hist.el | |||
| @@ -758,7 +758,7 @@ matched." | |||
| 758 | (setq nth (eshell-hist-word-reference nth))) | 758 | (setq nth (eshell-hist-word-reference nth))) |
| 759 | (unless (numberp mth) | 759 | (unless (numberp mth) |
| 760 | (setq mth (eshell-hist-word-reference mth))) | 760 | (setq mth (eshell-hist-word-reference mth))) |
| 761 | (cons (mapconcat #'identity (eshell-sublist textargs nth mth) " ") | 761 | (cons (mapconcat #'identity (seq-subseq textargs nth (1+ mth)) " ") |
| 762 | end)))) | 762 | end)))) |
| 763 | 763 | ||
| 764 | (defun eshell-hist-parse-modifier (hist reference) | 764 | (defun eshell-hist-parse-modifier (hist reference) |
diff --git a/lisp/eshell/em-pred.el b/lisp/eshell/em-pred.el index aecc8bb4e0a..0780d6ee83a 100644 --- a/lisp/eshell/em-pred.el +++ b/lisp/eshell/em-pred.el | |||
| @@ -85,18 +85,18 @@ ordinary strings." | |||
| 85 | (?s . (eshell-pred-file-mode #o4000)) ; setuid | 85 | (?s . (eshell-pred-file-mode #o4000)) ; setuid |
| 86 | (?S . (eshell-pred-file-mode #o2000)) ; setgid | 86 | (?S . (eshell-pred-file-mode #o2000)) ; setgid |
| 87 | (?t . (eshell-pred-file-mode #o1000)) ; sticky bit | 87 | (?t . (eshell-pred-file-mode #o1000)) ; sticky bit |
| 88 | (?U . #'(lambda (file) ; owned by effective uid | 88 | (?U . (lambda (file) ; owned by effective uid |
| 89 | (if (file-exists-p file) | 89 | (if (file-exists-p file) |
| 90 | (= (file-attribute-user-id (file-attributes file)) | 90 | (= (file-attribute-user-id (file-attributes file)) |
| 91 | (user-uid))))) | 91 | (user-uid))))) |
| 92 | ;; (?G . #'(lambda (file) ; owned by effective gid | 92 | ;; (?G . (lambda (file) ; owned by effective gid |
| 93 | ;; (if (file-exists-p file) | 93 | ;; (if (file-exists-p file) |
| 94 | ;; (= (file-attribute-user-id (file-attributes file)) | 94 | ;; (= (file-attribute-user-id (file-attributes file)) |
| 95 | ;; (user-uid))))) | 95 | ;; (user-uid))))) |
| 96 | (?* . #'(lambda (file) | 96 | (?* . (lambda (file) |
| 97 | (and (file-regular-p file) | 97 | (and (file-regular-p file) |
| 98 | (not (file-symlink-p file)) | 98 | (not (file-symlink-p file)) |
| 99 | (file-executable-p file)))) | 99 | (file-executable-p file)))) |
| 100 | (?l . (eshell-pred-file-links)) | 100 | (?l . (eshell-pred-file-links)) |
| 101 | (?u . (eshell-pred-user-or-group ?u "user" 2 'eshell-user-id)) | 101 | (?u . (eshell-pred-user-or-group ?u "user" 2 'eshell-user-id)) |
| 102 | (?g . (eshell-pred-user-or-group ?g "group" 3 'eshell-group-id)) | 102 | (?g . (eshell-pred-user-or-group ?g "group" 3 'eshell-group-id)) |
| @@ -114,25 +114,25 @@ The format of each entry is | |||
| 114 | (put 'eshell-predicate-alist 'risky-local-variable t) | 114 | (put 'eshell-predicate-alist 'risky-local-variable t) |
| 115 | 115 | ||
| 116 | (defcustom eshell-modifier-alist | 116 | (defcustom eshell-modifier-alist |
| 117 | '((?E . #'(lambda (lst) | 117 | '((?E . (lambda (lst) |
| 118 | (mapcar | 118 | (mapcar |
| 119 | (lambda (str) | 119 | (lambda (str) |
| 120 | (eshell-stringify | 120 | (eshell-stringify |
| 121 | (car (eshell-parse-argument str)))) | 121 | (car (eshell-parse-argument str)))) |
| 122 | lst))) | 122 | lst))) |
| 123 | (?L . #'(lambda (lst) (mapcar 'downcase lst))) | 123 | (?L . (lambda (lst) (mapcar #'downcase lst))) |
| 124 | (?U . #'(lambda (lst) (mapcar 'upcase lst))) | 124 | (?U . (lambda (lst) (mapcar #'upcase lst))) |
| 125 | (?C . #'(lambda (lst) (mapcar 'capitalize lst))) | 125 | (?C . (lambda (lst) (mapcar #'capitalize lst))) |
| 126 | (?h . #'(lambda (lst) (mapcar 'file-name-directory lst))) | 126 | (?h . (lambda (lst) (mapcar #'file-name-directory lst))) |
| 127 | (?i . (eshell-include-members)) | 127 | (?i . (eshell-include-members)) |
| 128 | (?x . (eshell-include-members t)) | 128 | (?x . (eshell-include-members t)) |
| 129 | (?r . #'(lambda (lst) (mapcar 'file-name-sans-extension lst))) | 129 | (?r . (lambda (lst) (mapcar #'file-name-sans-extension lst))) |
| 130 | (?e . #'(lambda (lst) (mapcar 'file-name-extension lst))) | 130 | (?e . (lambda (lst) (mapcar #'file-name-extension lst))) |
| 131 | (?t . #'(lambda (lst) (mapcar 'file-name-nondirectory lst))) | 131 | (?t . (lambda (lst) (mapcar #'file-name-nondirectory lst))) |
| 132 | (?q . #'(lambda (lst) (mapcar 'eshell-escape-arg lst))) | 132 | (?q . (lambda (lst) (mapcar #'eshell-escape-arg lst))) |
| 133 | (?u . #'(lambda (lst) (eshell-uniquify-list lst))) | 133 | (?u . (lambda (lst) (seq-uniq lst))) |
| 134 | (?o . #'(lambda (lst) (sort lst 'string-lessp))) | 134 | (?o . (lambda (lst) (sort lst #'string-lessp))) |
| 135 | (?O . #'(lambda (lst) (nreverse (sort lst 'string-lessp)))) | 135 | (?O . (lambda (lst) (nreverse (sort lst #'string-lessp)))) |
| 136 | (?j . (eshell-join-members)) | 136 | (?j . (eshell-join-members)) |
| 137 | (?S . (eshell-split-members)) | 137 | (?S . (eshell-split-members)) |
| 138 | (?R . 'reverse) | 138 | (?R . 'reverse) |
diff --git a/lisp/eshell/em-script.el b/lisp/eshell/em-script.el index aecc48610f7..1f08e891919 100644 --- a/lisp/eshell/em-script.el +++ b/lisp/eshell/em-script.el | |||
| @@ -59,11 +59,12 @@ This includes when running `eshell-command'." | |||
| 59 | (defun eshell-script-initialize () ;Called from `eshell-mode' via intern-soft! | 59 | (defun eshell-script-initialize () ;Called from `eshell-mode' via intern-soft! |
| 60 | "Initialize the script parsing code." | 60 | "Initialize the script parsing code." |
| 61 | (setq-local eshell-interpreter-alist | 61 | (setq-local eshell-interpreter-alist |
| 62 | (cons (cons #'(lambda (file _args) | 62 | (cons (cons (lambda (file _args) |
| 63 | (string= (file-name-nondirectory file) | 63 | (and (file-regular-p file) |
| 64 | "eshell")) | 64 | (string= (file-name-nondirectory file) |
| 65 | 'eshell/source) | 65 | "eshell"))) |
| 66 | eshell-interpreter-alist)) | 66 | 'eshell/source) |
| 67 | eshell-interpreter-alist)) | ||
| 67 | (setq-local eshell-complex-commands | 68 | (setq-local eshell-complex-commands |
| 68 | (append '("source" ".") eshell-complex-commands)) | 69 | (append '("source" ".") eshell-complex-commands)) |
| 69 | ;; these two variables are changed through usage, but we don't want | 70 | ;; these two variables are changed through usage, but we don't want |
diff --git a/lisp/eshell/esh-util.el b/lisp/eshell/esh-util.el index 8ef1ac9c345..a48f62654d5 100644 --- a/lisp/eshell/esh-util.el +++ b/lisp/eshell/esh-util.el | |||
| @@ -223,18 +223,6 @@ then quoting is done by a backslash, rather than a doubled delimiter." | |||
| 223 | (string-to-number string) | 223 | (string-to-number string) |
| 224 | string)))))) | 224 | string)))))) |
| 225 | 225 | ||
| 226 | (defun eshell-sublist (l &optional n m) | ||
| 227 | "Return from LIST the N to M elements. | ||
| 228 | If N or M is nil, it means the end of the list." | ||
| 229 | (let ((a (copy-sequence l))) | ||
| 230 | (if (and m (consp (nthcdr m a))) | ||
| 231 | (setcdr (nthcdr m a) nil)) | ||
| 232 | (if n | ||
| 233 | (setq a (nthcdr n a)) | ||
| 234 | (setq n (1- (length a)) | ||
| 235 | a (last a))) | ||
| 236 | a)) | ||
| 237 | |||
| 238 | (defvar-local eshell-path-env (getenv "PATH") | 226 | (defvar-local eshell-path-env (getenv "PATH") |
| 239 | "Content of $PATH. | 227 | "Content of $PATH. |
| 240 | It might be different from \(getenv \"PATH\"), when | 228 | It might be different from \(getenv \"PATH\"), when |
| @@ -303,20 +291,6 @@ Prepend remote identification of `default-directory', if any." | |||
| 303 | 291 | ||
| 304 | (define-obsolete-function-alias 'eshell-flatten-list #'flatten-tree "27.1") | 292 | (define-obsolete-function-alias 'eshell-flatten-list #'flatten-tree "27.1") |
| 305 | 293 | ||
| 306 | (defun eshell-uniquify-list (l) | ||
| 307 | "Remove occurring multiples in L. You probably want to sort first." | ||
| 308 | (let ((m l)) | ||
| 309 | (while m | ||
| 310 | (while (and (cdr m) | ||
| 311 | (string= (car m) | ||
| 312 | (cadr m))) | ||
| 313 | (setcdr m (cddr m))) | ||
| 314 | (setq m (cdr m)))) | ||
| 315 | l) | ||
| 316 | (define-obsolete-function-alias | ||
| 317 | 'eshell-uniqify-list | ||
| 318 | 'eshell-uniquify-list "27.1") | ||
| 319 | |||
| 320 | (defun eshell-stringify (object) | 294 | (defun eshell-stringify (object) |
| 321 | "Convert OBJECT into a string value." | 295 | "Convert OBJECT into a string value." |
| 322 | (cond | 296 | (cond |
| @@ -710,9 +684,19 @@ gid format. Valid values are `string' and `integer', defaulting to | |||
| 710 | ; (or result | 684 | ; (or result |
| 711 | ; (file-attributes filename)))) | 685 | ; (file-attributes filename)))) |
| 712 | 686 | ||
| 687 | ;; Obsolete. | ||
| 688 | |||
| 689 | (define-obsolete-function-alias 'eshell-uniquify-list #'seq-uniq "28.1") | ||
| 690 | (define-obsolete-function-alias 'eshell-uniqify-list #'seq-uniq "28.1") | ||
| 713 | (define-obsolete-function-alias 'eshell-copy-tree #'copy-tree "28.1") | 691 | (define-obsolete-function-alias 'eshell-copy-tree #'copy-tree "28.1") |
| 714 | (define-obsolete-function-alias 'eshell-user-name #'user-login-name "28.1") | 692 | (define-obsolete-function-alias 'eshell-user-name #'user-login-name "28.1") |
| 715 | 693 | ||
| 694 | (defun eshell-sublist (l &optional n m) | ||
| 695 | "Return from LIST the N to M elements. | ||
| 696 | If N or M is nil, it means the end of the list." | ||
| 697 | (declare (obsolete seq-subseq "28.1")) | ||
| 698 | (seq-subseq l n (1+ m))) | ||
| 699 | |||
| 716 | (provide 'esh-util) | 700 | (provide 'esh-util) |
| 717 | 701 | ||
| 718 | ;;; esh-util.el ends here | 702 | ;;; esh-util.el ends here |
diff --git a/lisp/eshell/eshell.el b/lisp/eshell/eshell.el index 3aaf2fb78aa..101ac860346 100644 --- a/lisp/eshell/eshell.el +++ b/lisp/eshell/eshell.el | |||
| @@ -294,9 +294,9 @@ With prefix ARG, insert output into the current buffer at point." | |||
| 294 | (setq arg current-prefix-arg)) | 294 | (setq arg current-prefix-arg)) |
| 295 | (let ((eshell-non-interactive-p t)) | 295 | (let ((eshell-non-interactive-p t)) |
| 296 | ;; Enable `eshell-mode' only in this minibuffer. | 296 | ;; Enable `eshell-mode' only in this minibuffer. |
| 297 | (minibuffer-with-setup-hook #'(lambda () | 297 | (minibuffer-with-setup-hook (lambda () |
| 298 | (eshell-mode) | 298 | (eshell-mode) |
| 299 | (eshell-command-mode +1)) | 299 | (eshell-command-mode +1)) |
| 300 | (unless command | 300 | (unless command |
| 301 | (setq command (read-from-minibuffer "Emacs shell command: ")) | 301 | (setq command (read-from-minibuffer "Emacs shell command: ")) |
| 302 | (if (eshell-using-module 'eshell-hist) | 302 | (if (eshell-using-module 'eshell-hist) |
diff --git a/lisp/forms.el b/lisp/forms.el index 62c4288869a..8696aea98ee 100644 --- a/lisp/forms.el +++ b/lisp/forms.el | |||
| @@ -1,7 +1,6 @@ | |||
| 1 | ;;; forms.el --- Forms mode: edit a file as a form to fill in | 1 | ;;; forms.el --- Forms mode: edit a file as a form to fill in -*- lexical-binding: t; -*- |
| 2 | 2 | ||
| 3 | ;; Copyright (C) 1991, 1994-1997, 2001-2021 Free Software Foundation, | 3 | ;; Copyright (C) 1991-2021 Free Software Foundation, Inc. |
| 4 | ;; Inc. | ||
| 5 | 4 | ||
| 6 | ;; Author: Johan Vromans <jvromans@squirrel.nl> | 5 | ;; Author: Johan Vromans <jvromans@squirrel.nl> |
| 7 | 6 | ||
| @@ -298,7 +297,6 @@ | |||
| 298 | 297 | ||
| 299 | (defcustom forms-mode-hook nil | 298 | (defcustom forms-mode-hook nil |
| 300 | "Hook run upon entering Forms mode." | 299 | "Hook run upon entering Forms mode." |
| 301 | :group 'forms | ||
| 302 | :type 'hook) | 300 | :type 'hook) |
| 303 | 301 | ||
| 304 | ;;; Mandatory variables - must be set by evaluating the control file. | 302 | ;;; Mandatory variables - must be set by evaluating the control file. |
| @@ -316,7 +314,6 @@ | |||
| 316 | 314 | ||
| 317 | (defcustom forms-check-number-of-fields t | 315 | (defcustom forms-check-number-of-fields t |
| 318 | "If non-nil, warn about records with wrong number of fields." | 316 | "If non-nil, warn about records with wrong number of fields." |
| 319 | :group 'forms | ||
| 320 | :type 'boolean) | 317 | :type 'boolean) |
| 321 | 318 | ||
| 322 | (defvar forms-field-sep "\t" | 319 | (defvar forms-field-sep "\t" |
| @@ -332,13 +329,11 @@ If not nil: use this character to separate multi-line fields (default C-k).") | |||
| 332 | (defcustom forms-forms-scroll nil | 329 | (defcustom forms-forms-scroll nil |
| 333 | "Non-nil means replace scroll-up/down commands in Forms mode. | 330 | "Non-nil means replace scroll-up/down commands in Forms mode. |
| 334 | The replacement commands performs forms-next/prev-record." | 331 | The replacement commands performs forms-next/prev-record." |
| 335 | :group 'forms | ||
| 336 | :type 'boolean) | 332 | :type 'boolean) |
| 337 | 333 | ||
| 338 | (defcustom forms-forms-jump nil | 334 | (defcustom forms-forms-jump nil |
| 339 | "Non-nil means redefine beginning/end-of-buffer in Forms mode. | 335 | "Non-nil means redefine beginning/end-of-buffer in Forms mode. |
| 340 | The replacement commands performs forms-first/last-record." | 336 | The replacement commands performs forms-first/last-record." |
| 341 | :group 'forms | ||
| 342 | :type 'boolean) | 337 | :type 'boolean) |
| 343 | 338 | ||
| 344 | (defvar forms-read-file-filter nil | 339 | (defvar forms-read-file-filter nil |
| @@ -363,23 +358,19 @@ The contents may NOT be modified.") | |||
| 363 | 358 | ||
| 364 | (defcustom forms-use-text-properties t | 359 | (defcustom forms-use-text-properties t |
| 365 | "Non-nil means to use text properties. " | 360 | "Non-nil means to use text properties. " |
| 366 | :group 'forms | ||
| 367 | :type 'boolean) | 361 | :type 'boolean) |
| 368 | 362 | ||
| 369 | (defcustom forms-insert-after nil | 363 | (defcustom forms-insert-after nil |
| 370 | "Non-nil means: inserts of new records go after current record. | 364 | "Non-nil means: inserts of new records go after current record. |
| 371 | Also, initial position is at last record." | 365 | Also, initial position is at last record." |
| 372 | :group 'forms | ||
| 373 | :type 'boolean) | 366 | :type 'boolean) |
| 374 | 367 | ||
| 375 | (defcustom forms-ro-face 'default | 368 | (defcustom forms-ro-face 'default |
| 376 | "The face (a symbol) that is used to display read-only text on the screen." | 369 | "The face (a symbol) that is used to display read-only text on the screen." |
| 377 | :group 'forms | ||
| 378 | :type 'face) | 370 | :type 'face) |
| 379 | 371 | ||
| 380 | (defcustom forms-rw-face 'region | 372 | (defcustom forms-rw-face 'region |
| 381 | "The face (a symbol) that is used to display read-write text on the screen." | 373 | "The face (a symbol) that is used to display read-write text on the screen." |
| 382 | :group 'forms | ||
| 383 | :type 'face) | 374 | :type 'face) |
| 384 | 375 | ||
| 385 | ;;; Internal variables. | 376 | ;;; Internal variables. |
| @@ -767,7 +758,7 @@ Commands: Equivalent keys in read-only mode: | |||
| 767 | ;; If it is a symbol, eval it first. | 758 | ;; If it is a symbol, eval it first. |
| 768 | (if (and (symbolp el) | 759 | (if (and (symbolp el) |
| 769 | (boundp el)) | 760 | (boundp el)) |
| 770 | (setq el (eval el))) | 761 | (setq el (symbol-value el))) |
| 771 | 762 | ||
| 772 | (cond | 763 | (cond |
| 773 | 764 | ||
| @@ -1261,35 +1252,35 @@ Commands: Equivalent keys in read-only mode: | |||
| 1261 | 1252 | ||
| 1262 | ;; `forms-mode-map' is always accessible via \C-c prefix. | 1253 | ;; `forms-mode-map' is always accessible via \C-c prefix. |
| 1263 | (setq forms-mode-map (make-keymap)) | 1254 | (setq forms-mode-map (make-keymap)) |
| 1264 | (define-key forms-mode-map "\t" 'forms-next-field) | 1255 | (define-key forms-mode-map "\t" #'forms-next-field) |
| 1265 | (define-key forms-mode-map "\C-k" 'forms-delete-record) | 1256 | (define-key forms-mode-map "\C-k" #'forms-delete-record) |
| 1266 | (define-key forms-mode-map "\C-q" 'forms-toggle-read-only) | 1257 | (define-key forms-mode-map "\C-q" #'forms-toggle-read-only) |
| 1267 | (define-key forms-mode-map "\C-o" 'forms-insert-record) | 1258 | (define-key forms-mode-map "\C-o" #'forms-insert-record) |
| 1268 | (define-key forms-mode-map "\C-l" 'forms-jump-record) | 1259 | (define-key forms-mode-map "\C-l" #'forms-jump-record) |
| 1269 | (define-key forms-mode-map "\C-n" 'forms-next-record) | 1260 | (define-key forms-mode-map "\C-n" #'forms-next-record) |
| 1270 | (define-key forms-mode-map "\C-p" 'forms-prev-record) | 1261 | (define-key forms-mode-map "\C-p" #'forms-prev-record) |
| 1271 | (define-key forms-mode-map "\C-r" 'forms-search-backward) | 1262 | (define-key forms-mode-map "\C-r" #'forms-search-backward) |
| 1272 | (define-key forms-mode-map "\C-s" 'forms-search-forward) | 1263 | (define-key forms-mode-map "\C-s" #'forms-search-forward) |
| 1273 | (define-key forms-mode-map "\C-x" 'forms-exit) | 1264 | (define-key forms-mode-map "\C-x" #'forms-exit) |
| 1274 | (define-key forms-mode-map "<" 'forms-first-record) | 1265 | (define-key forms-mode-map "<" #'forms-first-record) |
| 1275 | (define-key forms-mode-map ">" 'forms-last-record) | 1266 | (define-key forms-mode-map ">" #'forms-last-record) |
| 1276 | (define-key forms-mode-map "\C-?" 'forms-prev-record) | 1267 | (define-key forms-mode-map "\C-?" #'forms-prev-record) |
| 1277 | 1268 | ||
| 1278 | ;; `forms-mode-ro-map' replaces the local map when in read-only mode. | 1269 | ;; `forms-mode-ro-map' replaces the local map when in read-only mode. |
| 1279 | (setq forms-mode-ro-map (make-keymap)) | 1270 | (setq forms-mode-ro-map (make-keymap)) |
| 1280 | (suppress-keymap forms-mode-ro-map) | 1271 | (suppress-keymap forms-mode-ro-map) |
| 1281 | (define-key forms-mode-ro-map "\C-c" forms-mode-map) | 1272 | (define-key forms-mode-ro-map "\C-c" forms-mode-map) |
| 1282 | (define-key forms-mode-ro-map "q" 'forms-toggle-read-only) | 1273 | (define-key forms-mode-ro-map "q" #'forms-toggle-read-only) |
| 1283 | (define-key forms-mode-ro-map "l" 'forms-jump-record) | 1274 | (define-key forms-mode-ro-map "l" #'forms-jump-record) |
| 1284 | (define-key forms-mode-ro-map "n" 'forms-next-record) | 1275 | (define-key forms-mode-ro-map "n" #'forms-next-record) |
| 1285 | (define-key forms-mode-ro-map "p" 'forms-prev-record) | 1276 | (define-key forms-mode-ro-map "p" #'forms-prev-record) |
| 1286 | (define-key forms-mode-ro-map "r" 'forms-search-backward) | 1277 | (define-key forms-mode-ro-map "r" #'forms-search-backward) |
| 1287 | (define-key forms-mode-ro-map "s" 'forms-search-forward) | 1278 | (define-key forms-mode-ro-map "s" #'forms-search-forward) |
| 1288 | (define-key forms-mode-ro-map "x" 'forms-exit) | 1279 | (define-key forms-mode-ro-map "x" #'forms-exit) |
| 1289 | (define-key forms-mode-ro-map "<" 'forms-first-record) | 1280 | (define-key forms-mode-ro-map "<" #'forms-first-record) |
| 1290 | (define-key forms-mode-ro-map ">" 'forms-last-record) | 1281 | (define-key forms-mode-ro-map ">" #'forms-last-record) |
| 1291 | (define-key forms-mode-ro-map "?" 'describe-mode) | 1282 | (define-key forms-mode-ro-map "?" #'describe-mode) |
| 1292 | (define-key forms-mode-ro-map " " 'forms-next-record) | 1283 | (define-key forms-mode-ro-map " " #'forms-next-record) |
| 1293 | (forms--mode-commands1 forms-mode-ro-map) | 1284 | (forms--mode-commands1 forms-mode-ro-map) |
| 1294 | (forms--mode-menu-ro forms-mode-ro-map) | 1285 | (forms--mode-menu-ro forms-mode-ro-map) |
| 1295 | 1286 | ||
| @@ -1395,13 +1386,13 @@ Commands: Equivalent keys in read-only mode: | |||
| 1395 | 1386 | ||
| 1396 | (defun forms--mode-commands1 (map) | 1387 | (defun forms--mode-commands1 (map) |
| 1397 | "Helper routine to define keys." | 1388 | "Helper routine to define keys." |
| 1398 | (define-key map "\t" 'forms-next-field) | 1389 | (define-key map "\t" #'forms-next-field) |
| 1399 | (define-key map [S-tab] 'forms-prev-field) | 1390 | (define-key map [S-tab] #'forms-prev-field) |
| 1400 | (define-key map [next] 'forms-next-record) | 1391 | (define-key map [next] #'forms-next-record) |
| 1401 | (define-key map [prior] 'forms-prev-record) | 1392 | (define-key map [prior] #'forms-prev-record) |
| 1402 | (define-key map [begin] 'forms-first-record) | 1393 | (define-key map [begin] #'forms-first-record) |
| 1403 | (define-key map [last] 'forms-last-record) | 1394 | (define-key map [last] #'forms-last-record) |
| 1404 | (define-key map [backtab] 'forms-prev-field) | 1395 | (define-key map [backtab] #'forms-prev-field) |
| 1405 | ) | 1396 | ) |
| 1406 | 1397 | ||
| 1407 | ;;; Changed functions | 1398 | ;;; Changed functions |
| @@ -2034,8 +2025,7 @@ Usage: (setq forms-number-of-fields | |||
| 2034 | 2025 | ||
| 2035 | (defcustom forms--debug nil | 2026 | (defcustom forms--debug nil |
| 2036 | "If non-nil, enable Forms mode debugging." | 2027 | "If non-nil, enable Forms mode debugging." |
| 2037 | :type 'boolean | 2028 | :type 'boolean) |
| 2038 | :group 'forms) | ||
| 2039 | 2029 | ||
| 2040 | (defun forms--debug (&rest args) | 2030 | (defun forms--debug (&rest args) |
| 2041 | "Internal debugging routine." | 2031 | "Internal debugging routine." |
| @@ -2046,7 +2036,7 @@ Usage: (setq forms-number-of-fields | |||
| 2046 | (if (stringp el) el | 2036 | (if (stringp el) el |
| 2047 | (concat (prin1-to-string el) " = " | 2037 | (concat (prin1-to-string el) " = " |
| 2048 | (if (boundp el) | 2038 | (if (boundp el) |
| 2049 | (prin1-to-string (eval el)) | 2039 | (prin1-to-string (symbol-value el)) |
| 2050 | "<unbound>") | 2040 | "<unbound>") |
| 2051 | "\n" | 2041 | "\n" |
| 2052 | (if (fboundp el) | 2042 | (if (fboundp el) |
diff --git a/lisp/gnus/gnus-art.el b/lisp/gnus/gnus-art.el index c1071c1c68c..d989a4d5bb5 100644 --- a/lisp/gnus/gnus-art.el +++ b/lisp/gnus/gnus-art.el | |||
| @@ -6648,9 +6648,10 @@ not have a face in `gnus-article-boring-faces'." | |||
| 6648 | (catch 'only-boring | 6648 | (catch 'only-boring |
| 6649 | (while (re-search-forward "\\b\\w\\w" nil t) | 6649 | (while (re-search-forward "\\b\\w\\w" nil t) |
| 6650 | (forward-char -1) | 6650 | (forward-char -1) |
| 6651 | (when (not (gnus-intersection | 6651 | (when (not (seq-intersection |
| 6652 | (gnus-faces-at (point)) | 6652 | (gnus-faces-at (point)) |
| 6653 | (symbol-value 'gnus-article-boring-faces))) | 6653 | (symbol-value 'gnus-article-boring-faces) |
| 6654 | #'eq)) | ||
| 6654 | (throw 'only-boring nil))) | 6655 | (throw 'only-boring nil))) |
| 6655 | (throw 'only-boring t)))))) | 6656 | (throw 'only-boring t)))))) |
| 6656 | 6657 | ||
diff --git a/lisp/gnus/gnus-cite.el b/lisp/gnus/gnus-cite.el index 1f564f192b0..4249b50b9ff 100644 --- a/lisp/gnus/gnus-cite.el +++ b/lisp/gnus/gnus-cite.el | |||
| @@ -839,7 +839,7 @@ See also the documentation for `gnus-article-highlight-citation'." | |||
| 839 | (setq current (car loop) | 839 | (setq current (car loop) |
| 840 | loop (cdr loop)) | 840 | loop (cdr loop)) |
| 841 | (setcdr current | 841 | (setcdr current |
| 842 | (gnus-set-difference (cdr current) numbers))))))))) | 842 | (seq-difference (cdr current) numbers #'eq))))))))) |
| 843 | 843 | ||
| 844 | (defun gnus-cite-parse-attributions () | 844 | (defun gnus-cite-parse-attributions () |
| 845 | (let (al-alist) | 845 | (let (al-alist) |
| @@ -999,7 +999,7 @@ See also the documentation for `gnus-article-highlight-citation'." | |||
| 999 | loop (cdr loop)) | 999 | loop (cdr loop)) |
| 1000 | (if (eq current best) | 1000 | (if (eq current best) |
| 1001 | () | 1001 | () |
| 1002 | (setcdr current (gnus-set-difference (cdr current) numbers)) | 1002 | (setcdr current (seq-difference (cdr current) numbers #'eq)) |
| 1003 | (when (null (cdr current)) | 1003 | (when (null (cdr current)) |
| 1004 | (setq gnus-cite-loose-prefix-alist | 1004 | (setq gnus-cite-loose-prefix-alist |
| 1005 | (delq current gnus-cite-loose-prefix-alist) | 1005 | (delq current gnus-cite-loose-prefix-alist) |
diff --git a/lisp/gnus/gnus-group.el b/lisp/gnus/gnus-group.el index 909391b6b0c..423b180408a 100644 --- a/lisp/gnus/gnus-group.el +++ b/lisp/gnus/gnus-group.el | |||
| @@ -4697,20 +4697,20 @@ This command may read the active file." | |||
| 4697 | (gnus-cache-open)) | 4697 | (gnus-cache-open)) |
| 4698 | (funcall gnus-group-prepare-function | 4698 | (funcall gnus-group-prepare-function |
| 4699 | (or level gnus-level-subscribed) | 4699 | (or level gnus-level-subscribed) |
| 4700 | #'(lambda (info) | 4700 | (lambda (info) |
| 4701 | (let ((marks (gnus-info-marks info))) | 4701 | (let ((marks (gnus-info-marks info))) |
| 4702 | (assq 'cache marks))) | 4702 | (assq 'cache marks))) |
| 4703 | lowest | 4703 | lowest |
| 4704 | #'(lambda (group) | 4704 | (lambda (group) |
| 4705 | (or (gethash group | 4705 | (or (gethash group |
| 4706 | gnus-cache-active-hashtb) | 4706 | gnus-cache-active-hashtb) |
| 4707 | ;; Cache active file might use "." | 4707 | ;; Cache active file might use "." |
| 4708 | ;; instead of ":". | 4708 | ;; instead of ":". |
| 4709 | (gethash | 4709 | (gethash |
| 4710 | (mapconcat #'identity | 4710 | (mapconcat #'identity |
| 4711 | (split-string group ":") | 4711 | (split-string group ":") |
| 4712 | ".") | 4712 | ".") |
| 4713 | gnus-cache-active-hashtb)))) | 4713 | gnus-cache-active-hashtb)))) |
| 4714 | (goto-char (point-min)) | 4714 | (goto-char (point-min)) |
| 4715 | (gnus-group-position-point)) | 4715 | (gnus-group-position-point)) |
| 4716 | 4716 | ||
| @@ -4728,9 +4728,9 @@ This command may read the active file." | |||
| 4728 | (gnus-cache-open)) | 4728 | (gnus-cache-open)) |
| 4729 | (funcall gnus-group-prepare-function | 4729 | (funcall gnus-group-prepare-function |
| 4730 | (or level gnus-level-subscribed) | 4730 | (or level gnus-level-subscribed) |
| 4731 | #'(lambda (info) | 4731 | (lambda (info) |
| 4732 | (let ((marks (gnus-info-marks info))) | 4732 | (let ((marks (gnus-info-marks info))) |
| 4733 | (assq 'dormant marks))) | 4733 | (assq 'dormant marks))) |
| 4734 | lowest | 4734 | lowest |
| 4735 | 'ignore) | 4735 | 'ignore) |
| 4736 | (goto-char (point-min)) | 4736 | (goto-char (point-min)) |
| @@ -4750,9 +4750,9 @@ This command may read the active file." | |||
| 4750 | (gnus-cache-open)) | 4750 | (gnus-cache-open)) |
| 4751 | (funcall gnus-group-prepare-function | 4751 | (funcall gnus-group-prepare-function |
| 4752 | (or level gnus-level-subscribed) | 4752 | (or level gnus-level-subscribed) |
| 4753 | #'(lambda (info) | 4753 | (lambda (info) |
| 4754 | (let ((marks (gnus-info-marks info))) | 4754 | (let ((marks (gnus-info-marks info))) |
| 4755 | (assq 'tick marks))) | 4755 | (assq 'tick marks))) |
| 4756 | lowest | 4756 | lowest |
| 4757 | 'ignore) | 4757 | 'ignore) |
| 4758 | (goto-char (point-min)) | 4758 | (goto-char (point-min)) |
diff --git a/lisp/gnus/gnus-range.el b/lisp/gnus/gnus-range.el index 6cc60cb49b3..7d12ae9fdcc 100644 --- a/lisp/gnus/gnus-range.el +++ b/lisp/gnus/gnus-range.el | |||
| @@ -42,13 +42,8 @@ If RANGE is a single range, return (RANGE). Otherwise, return RANGE." | |||
| 42 | 42 | ||
| 43 | (defun gnus-set-difference (list1 list2) | 43 | (defun gnus-set-difference (list1 list2) |
| 44 | "Return a list of elements of LIST1 that do not appear in LIST2." | 44 | "Return a list of elements of LIST1 that do not appear in LIST2." |
| 45 | (let ((hash2 (make-hash-table :test 'eq)) | 45 | (declare (obsolete seq-difference "28.1")) |
| 46 | (result nil)) | 46 | (seq-difference list1 list2 #'eq)) |
| 47 | (dolist (elt list2) (puthash elt t hash2)) | ||
| 48 | (dolist (elt list1) | ||
| 49 | (unless (gethash elt hash2) | ||
| 50 | (setq result (cons elt result)))) | ||
| 51 | (nreverse result))) | ||
| 52 | 47 | ||
| 53 | (defun gnus-range-nconcat (&rest ranges) | 48 | (defun gnus-range-nconcat (&rest ranges) |
| 54 | "Return a range comprising all the RANGES, which are pre-sorted. | 49 | "Return a range comprising all the RANGES, which are pre-sorted. |
| @@ -179,12 +174,8 @@ Both lists have to be sorted over <." | |||
| 179 | 174 | ||
| 180 | ;;;###autoload | 175 | ;;;###autoload |
| 181 | (defun gnus-intersection (list1 list2) | 176 | (defun gnus-intersection (list1 list2) |
| 182 | (let ((result nil)) | 177 | (declare (obsolete seq-intersection "28.1")) |
| 183 | (while list2 | 178 | (nreverse (seq-intersection list1 list2 #'eq))) |
| 184 | (when (memq (car list2) list1) | ||
| 185 | (setq result (cons (car list2) result))) | ||
| 186 | (setq list2 (cdr list2))) | ||
| 187 | result)) | ||
| 188 | 179 | ||
| 189 | ;;;###autoload | 180 | ;;;###autoload |
| 190 | (defun gnus-sorted-intersection (list1 list2) | 181 | (defun gnus-sorted-intersection (list1 list2) |
diff --git a/lisp/gnus/gnus-registry.el b/lisp/gnus/gnus-registry.el index e3b9c196186..6ac646fbeac 100644 --- a/lisp/gnus/gnus-registry.el +++ b/lisp/gnus/gnus-registry.el | |||
| @@ -1290,9 +1290,9 @@ from your existing entries." | |||
| 1290 | (registry-reindex db) | 1290 | (registry-reindex db) |
| 1291 | (cl-loop for k being the hash-keys of (oref db data) | 1291 | (cl-loop for k being the hash-keys of (oref db data) |
| 1292 | using (hash-value v) | 1292 | using (hash-value v) |
| 1293 | do (let ((newv (delq nil (mapcar #'(lambda (entry) | 1293 | do (let ((newv (delq nil (mapcar (lambda (entry) |
| 1294 | (unless (member (car entry) extra) | 1294 | (unless (member (car entry) extra) |
| 1295 | entry)) | 1295 | entry)) |
| 1296 | v)))) | 1296 | v)))) |
| 1297 | (registry-delete db (list k) nil) | 1297 | (registry-delete db (list k) nil) |
| 1298 | (gnus-registry-insert db k newv))) | 1298 | (gnus-registry-insert db k newv))) |
diff --git a/lisp/gnus/gnus-score.el b/lisp/gnus/gnus-score.el index ce64dcef041..f40da9e9c4c 100644 --- a/lisp/gnus/gnus-score.el +++ b/lisp/gnus/gnus-score.el | |||
| @@ -1182,8 +1182,8 @@ If FORMAT, also format the current score file." | |||
| 1182 | (when (consp rule) ;; the rule exists | 1182 | (when (consp rule) ;; the rule exists |
| 1183 | (setq rule (if (symbolp (car rule)) | 1183 | (setq rule (if (symbolp (car rule)) |
| 1184 | (format "(%S)" (car rule)) | 1184 | (format "(%S)" (car rule)) |
| 1185 | (mapconcat #'(lambda (obj) | 1185 | (mapconcat (lambda (obj) |
| 1186 | (regexp-quote (format "%S" obj))) | 1186 | (regexp-quote (format "%S" obj))) |
| 1187 | rule | 1187 | rule |
| 1188 | sep))) | 1188 | sep))) |
| 1189 | (goto-char (point-min)) | 1189 | (goto-char (point-min)) |
diff --git a/lisp/gnus/gnus-sum.el b/lisp/gnus/gnus-sum.el index c30f9a5f350..eeb5ac851ae 100644 --- a/lisp/gnus/gnus-sum.el +++ b/lisp/gnus/gnus-sum.el | |||
| @@ -5676,9 +5676,9 @@ or a straight list of headers." | |||
| 5676 | (or dependencies | 5676 | (or dependencies |
| 5677 | (with-current-buffer gnus-summary-buffer | 5677 | (with-current-buffer gnus-summary-buffer |
| 5678 | gnus-newsgroup-dependencies)))) | 5678 | gnus-newsgroup-dependencies)))) |
| 5679 | (delq nil (mapcar #'(lambda (header) | 5679 | (delq nil (mapcar (lambda (header) |
| 5680 | (gnus-dependencies-add-header | 5680 | (gnus-dependencies-add-header |
| 5681 | header dependencies force-new)) | 5681 | header dependencies force-new)) |
| 5682 | gnus-headers-retrieved-by))))) | 5682 | gnus-headers-retrieved-by))))) |
| 5683 | (gnus-message 7 "Fetching headers for %s...done" gnus-newsgroup-name))) | 5683 | (gnus-message 7 "Fetching headers for %s...done" gnus-newsgroup-name))) |
| 5684 | 5684 | ||
| @@ -8569,8 +8569,9 @@ If UNREPLIED (the prefix), limit to unreplied articles." | |||
| 8569 | (interactive "P" gnus-summary-mode) | 8569 | (interactive "P" gnus-summary-mode) |
| 8570 | (if unreplied | 8570 | (if unreplied |
| 8571 | (gnus-summary-limit | 8571 | (gnus-summary-limit |
| 8572 | (gnus-set-difference gnus-newsgroup-articles | 8572 | (seq-difference gnus-newsgroup-articles |
| 8573 | gnus-newsgroup-replied)) | 8573 | gnus-newsgroup-replied |
| 8574 | #'eq)) | ||
| 8574 | (gnus-summary-limit gnus-newsgroup-replied)) | 8575 | (gnus-summary-limit gnus-newsgroup-replied)) |
| 8575 | (gnus-summary-position-point)) | 8576 | (gnus-summary-position-point)) |
| 8576 | 8577 | ||
diff --git a/lisp/gnus/gnus-uu.el b/lisp/gnus/gnus-uu.el index bd9a1a33ec3..ceb2ebcdcb1 100644 --- a/lisp/gnus/gnus-uu.el +++ b/lisp/gnus/gnus-uu.el | |||
| @@ -578,8 +578,8 @@ didn't work, and overwrite existing files. Otherwise, ask each time." | |||
| 578 | 578 | ||
| 579 | (defun gnus-new-processable (unmarkp articles) | 579 | (defun gnus-new-processable (unmarkp articles) |
| 580 | (if unmarkp | 580 | (if unmarkp |
| 581 | (gnus-intersection gnus-newsgroup-processable articles) | 581 | (nreverse (seq-intersection gnus-newsgroup-processable articles #'eq)) |
| 582 | (gnus-set-difference articles gnus-newsgroup-processable))) | 582 | (seq-difference articles gnus-newsgroup-processable #'eq))) |
| 583 | 583 | ||
| 584 | (defun gnus-uu-mark-by-regexp (regexp &optional unmark) | 584 | (defun gnus-uu-mark-by-regexp (regexp &optional unmark) |
| 585 | "Set the process mark on articles whose subjects match REGEXP. | 585 | "Set the process mark on articles whose subjects match REGEXP. |
diff --git a/lisp/gnus/mm-partial.el b/lisp/gnus/mm-partial.el index 0c25c8f8bcd..0c628055acb 100644 --- a/lisp/gnus/mm-partial.el +++ b/lisp/gnus/mm-partial.el | |||
| @@ -72,14 +72,14 @@ If NO-DISPLAY is nil, display it. Otherwise, do nothing after replacing." | |||
| 72 | id | 72 | id |
| 73 | (with-current-buffer gnus-summary-buffer | 73 | (with-current-buffer gnus-summary-buffer |
| 74 | (gnus-summary-article-number)))) | 74 | (gnus-summary-article-number)))) |
| 75 | #'(lambda (a b) | 75 | (lambda (a b) |
| 76 | (let ((anumber (string-to-number | 76 | (let ((anumber (string-to-number |
| 77 | (cdr (assq 'number | 77 | (cdr (assq 'number |
| 78 | (cdr (mm-handle-type a)))))) | 78 | (cdr (mm-handle-type a)))))) |
| 79 | (bnumber (string-to-number | 79 | (bnumber (string-to-number |
| 80 | (cdr (assq 'number | 80 | (cdr (assq 'number |
| 81 | (cdr (mm-handle-type b))))))) | 81 | (cdr (mm-handle-type b))))))) |
| 82 | (< anumber bnumber))))) | 82 | (< anumber bnumber))))) |
| 83 | (setq gnus-article-mime-handles | 83 | (setq gnus-article-mime-handles |
| 84 | (mm-merge-handles gnus-article-mime-handles phandles)) | 84 | (mm-merge-handles gnus-article-mime-handles phandles)) |
| 85 | (with-current-buffer (generate-new-buffer " *mm*") | 85 | (with-current-buffer (generate-new-buffer " *mm*") |
diff --git a/lisp/gnus/nndiary.el b/lisp/gnus/nndiary.el index 15003fabcd2..adf4427523f 100644 --- a/lisp/gnus/nndiary.el +++ b/lisp/gnus/nndiary.el | |||
| @@ -558,7 +558,7 @@ all. This may very well take some time.") | |||
| 558 | (nnmail-activate 'nndiary) | 558 | (nnmail-activate 'nndiary) |
| 559 | ;; Articles not listed in active-articles are already gone, | 559 | ;; Articles not listed in active-articles are already gone, |
| 560 | ;; so don't try to expire them. | 560 | ;; so don't try to expire them. |
| 561 | (setq articles (gnus-intersection articles active-articles)) | 561 | (setq articles (nreverse (seq-intersection articles active-articles #'eq))) |
| 562 | (while articles | 562 | (while articles |
| 563 | (setq article (nndiary-article-to-file (setq number (pop articles)))) | 563 | (setq article (nndiary-article-to-file (setq number (pop articles)))) |
| 564 | (if (and (nndiary-deletable-article-p group number) | 564 | (if (and (nndiary-deletable-article-p group number) |
diff --git a/lisp/gnus/nnimap.el b/lisp/gnus/nnimap.el index f06959f65d9..8990b2bebeb 100644 --- a/lisp/gnus/nnimap.el +++ b/lisp/gnus/nnimap.el | |||
| @@ -1614,13 +1614,15 @@ If LIMIT, first try to limit the search to the N last articles." | |||
| 1614 | (setq start-article 1)) | 1614 | (setq start-article 1)) |
| 1615 | (let* ((unread | 1615 | (let* ((unread |
| 1616 | (gnus-compress-sequence | 1616 | (gnus-compress-sequence |
| 1617 | (gnus-set-difference | 1617 | (seq-difference |
| 1618 | (gnus-set-difference | 1618 | (seq-difference |
| 1619 | existing | 1619 | existing |
| 1620 | (gnus-sorted-union | 1620 | (gnus-sorted-union |
| 1621 | (cdr (assoc '%Seen flags)) | 1621 | (cdr (assoc '%Seen flags)) |
| 1622 | (cdr (assoc '%Deleted flags)))) | 1622 | (cdr (assoc '%Deleted flags))) |
| 1623 | (cdr (assoc '%Flagged flags))))) | 1623 | #'eq) |
| 1624 | (cdr (assoc '%Flagged flags)) | ||
| 1625 | #'eq))) | ||
| 1624 | (read (gnus-range-difference | 1626 | (read (gnus-range-difference |
| 1625 | (cons start-article high) unread))) | 1627 | (cons start-article high) unread))) |
| 1626 | (when (> start-article 1) | 1628 | (when (> start-article 1) |
diff --git a/lisp/gnus/nnselect.el b/lisp/gnus/nnselect.el index 1daa8aa673b..e314e1d8d10 100644 --- a/lisp/gnus/nnselect.el +++ b/lisp/gnus/nnselect.el | |||
| @@ -100,8 +100,8 @@ | |||
| 100 | (setq selection | 100 | (setq selection |
| 101 | (vconcat | 101 | (vconcat |
| 102 | (cl-map 'vector | 102 | (cl-map 'vector |
| 103 | #'(lambda (art) | 103 | (lambda (art) |
| 104 | (vector artgroup art artrsv)) | 104 | (vector artgroup art artrsv)) |
| 105 | (gnus-uncompress-sequence artseq)) selection))) | 105 | (gnus-uncompress-sequence artseq)) selection))) |
| 106 | selection))) | 106 | selection))) |
| 107 | 107 | ||
| @@ -211,12 +211,12 @@ as `(keyfunc member)' and the corresponding element is just | |||
| 211 | #'nnselect-article-group #'nnselect-article-number)) | 211 | #'nnselect-article-group #'nnselect-article-number)) |
| 212 | ((eq ,type 'tuple) | 212 | ((eq ,type 'tuple) |
| 213 | (nnselect-categorize ,articles | 213 | (nnselect-categorize ,articles |
| 214 | #'(lambda (elem) | 214 | (lambda (elem) |
| 215 | (nnselect-article-group (car elem))) | 215 | (nnselect-article-group (car elem))) |
| 216 | #'(lambda (elem) | 216 | (lambda (elem) |
| 217 | (cons (nnselect-article-number | 217 | (cons (nnselect-article-number |
| 218 | (car elem)) | 218 | (car elem)) |
| 219 | (cdr elem))))) | 219 | (cdr elem))))) |
| 220 | (t | 220 | (t |
| 221 | (nnselect-categorize ,articles | 221 | (nnselect-categorize ,articles |
| 222 | #'nnselect-article-group | 222 | #'nnselect-article-group |
| @@ -464,8 +464,8 @@ If this variable is nil, or if the provided function returns nil, | |||
| 464 | (error "Group %s does not support article expiration" artgroup)) | 464 | (error "Group %s does not support article expiration" artgroup)) |
| 465 | (unless (gnus-check-server (gnus-find-method-for-group artgroup)) | 465 | (unless (gnus-check-server (gnus-find-method-for-group artgroup)) |
| 466 | (error "Couldn't open server for group %s" artgroup)) | 466 | (error "Couldn't open server for group %s" artgroup)) |
| 467 | (push (mapcar #'(lambda (art) | 467 | (push (mapcar (lambda (art) |
| 468 | (car (rassq art artids))) | 468 | (car (rassq art artids))) |
| 469 | (let ((nnimap-expunge 'immediately)) | 469 | (let ((nnimap-expunge 'immediately)) |
| 470 | (gnus-request-expire-articles | 470 | (gnus-request-expire-articles |
| 471 | artlist artgroup force))) | 471 | artlist artgroup force))) |
| @@ -549,8 +549,8 @@ If this variable is nil, or if the provided function returns nil, | |||
| 549 | (gnus-add-to-range | 549 | (gnus-add-to-range |
| 550 | (gnus-info-read info) | 550 | (gnus-info-read info) |
| 551 | (delq nil (mapcar | 551 | (delq nil (mapcar |
| 552 | #'(lambda (art) | 552 | (lambda (art) |
| 553 | (unless (memq (cdr art) unread) (car art))) | 553 | (unless (memq (cdr art) unread) (car art))) |
| 554 | artids)))) | 554 | artids)))) |
| 555 | (pcase-dolist (`(,type . ,mark-list) marks) | 555 | (pcase-dolist (`(,type . ,mark-list) marks) |
| 556 | (let ((mark-type (gnus-article-mark-to-type type)) new) | 556 | (let ((mark-type (gnus-article-mark-to-type type)) new) |
| @@ -560,19 +560,19 @@ If this variable is nil, or if the provided function returns nil, | |||
| 560 | (cond | 560 | (cond |
| 561 | ((eq mark-type 'tuple) | 561 | ((eq mark-type 'tuple) |
| 562 | (mapcar | 562 | (mapcar |
| 563 | #'(lambda (id) | 563 | (lambda (id) |
| 564 | (let (mark) | 564 | (let (mark) |
| 565 | (when | 565 | (when |
| 566 | (setq mark (assq (cdr id) mark-list)) | 566 | (setq mark (assq (cdr id) mark-list)) |
| 567 | (cons (car id) (cdr mark))))) | 567 | (cons (car id) (cdr mark))))) |
| 568 | artids)) | 568 | artids)) |
| 569 | (t | 569 | (t |
| 570 | (setq mark-list | 570 | (setq mark-list |
| 571 | (gnus-uncompress-range mark-list)) | 571 | (gnus-uncompress-range mark-list)) |
| 572 | (mapcar | 572 | (mapcar |
| 573 | #'(lambda (id) | 573 | (lambda (id) |
| 574 | (when (memq (cdr id) mark-list) | 574 | (when (memq (cdr id) mark-list) |
| 575 | (car id))) artids))))) | 575 | (car id))) artids))))) |
| 576 | (let ((previous (alist-get type newmarks))) | 576 | (let ((previous (alist-get type newmarks))) |
| 577 | (if previous | 577 | (if previous |
| 578 | (nconc previous new) | 578 | (nconc previous new) |
| @@ -607,8 +607,8 @@ If this variable is nil, or if the provided function returns nil, | |||
| 607 | (let ((thread | 607 | (let ((thread |
| 608 | (gnus-id-to-thread (mail-header-id header)))) | 608 | (gnus-id-to-thread (mail-header-id header)))) |
| 609 | (when thread | 609 | (when thread |
| 610 | (cl-some #'(lambda (x) | 610 | (cl-some (lambda (x) |
| 611 | (when (and x (> x 0)) x)) | 611 | (when (and x (> x 0)) x)) |
| 612 | (gnus-articles-in-thread thread))))))))) | 612 | (gnus-articles-in-thread thread))))))))) |
| 613 | ;; Check if search-based thread referral is permitted, and | 613 | ;; Check if search-based thread referral is permitted, and |
| 614 | ;; available. | 614 | ;; available. |
| @@ -642,15 +642,15 @@ If this variable is nil, or if the provided function returns nil, | |||
| 642 | old-arts seq | 642 | old-arts seq |
| 643 | headers) | 643 | headers) |
| 644 | (mapc | 644 | (mapc |
| 645 | #'(lambda (article) | 645 | (lambda (article) |
| 646 | (if | 646 | (if |
| 647 | (setq seq | 647 | (setq seq |
| 648 | (cl-position article | 648 | (cl-position article |
| 649 | gnus-newsgroup-selection :test 'equal)) | 649 | gnus-newsgroup-selection :test 'equal)) |
| 650 | (push (1+ seq) old-arts) | 650 | (push (1+ seq) old-arts) |
| 651 | (setq gnus-newsgroup-selection | 651 | (setq gnus-newsgroup-selection |
| 652 | (vconcat gnus-newsgroup-selection (vector article))) | 652 | (vconcat gnus-newsgroup-selection (vector article))) |
| 653 | (cl-incf last))) | 653 | (cl-incf last))) |
| 654 | new-nnselect-artlist) | 654 | new-nnselect-artlist) |
| 655 | (setq headers | 655 | (setq headers |
| 656 | (gnus-fetch-headers | 656 | (gnus-fetch-headers |
| @@ -671,9 +671,9 @@ If this variable is nil, or if the provided function returns nil, | |||
| 671 | (when (setq new-marks | 671 | (when (setq new-marks |
| 672 | (delq nil | 672 | (delq nil |
| 673 | (mapcar | 673 | (mapcar |
| 674 | #'(lambda (art) | 674 | (lambda (art) |
| 675 | (when (memq (cdr art) marked) | 675 | (when (memq (cdr art) marked) |
| 676 | (car art))) | 676 | (car art))) |
| 677 | artids))) | 677 | artids))) |
| 678 | (nconc | 678 | (nconc |
| 679 | (symbol-value | 679 | (symbol-value |
diff --git a/lisp/gnus/nnvirtual.el b/lisp/gnus/nnvirtual.el index b3b701e4126..03a0ff296f2 100644 --- a/lisp/gnus/nnvirtual.el +++ b/lisp/gnus/nnvirtual.el | |||
| @@ -362,9 +362,9 @@ It is computed from the marks of individual component groups.") | |||
| 362 | (dolist (group nnvirtual-component-groups) | 362 | (dolist (group nnvirtual-component-groups) |
| 363 | (setq unexpired (nconc unexpired | 363 | (setq unexpired (nconc unexpired |
| 364 | (mapcar | 364 | (mapcar |
| 365 | #'(lambda (article) | 365 | (lambda (article) |
| 366 | (nnvirtual-reverse-map-article | 366 | (nnvirtual-reverse-map-article |
| 367 | group article)) | 367 | group article)) |
| 368 | (gnus-uncompress-range | 368 | (gnus-uncompress-range |
| 369 | (gnus-group-expire-articles-1 group)))))) | 369 | (gnus-group-expire-articles-1 group)))))) |
| 370 | (sort (delq nil unexpired) #'<))) | 370 | (sort (delq nil unexpired) #'<))) |
diff --git a/lisp/gnus/spam-stat.el b/lisp/gnus/spam-stat.el index 3e804ecb4bb..ab9be0da890 100644 --- a/lisp/gnus/spam-stat.el +++ b/lisp/gnus/spam-stat.el | |||
| @@ -492,7 +492,7 @@ Add user supplied modifications if supplied." | |||
| 492 | (let* ((probs (mapcar #'cadr spam-stat-score-data)) | 492 | (let* ((probs (mapcar #'cadr spam-stat-score-data)) |
| 493 | (prod (apply #'* probs)) | 493 | (prod (apply #'* probs)) |
| 494 | (score0 | 494 | (score0 |
| 495 | (/ prod (+ prod (apply #'* (mapcar #'(lambda (x) (- 1 x)) | 495 | (/ prod (+ prod (apply #'* (mapcar (lambda (x) (- 1 x)) |
| 496 | probs))))) | 496 | probs))))) |
| 497 | (score1s | 497 | (score1s |
| 498 | (condition-case nil | 498 | (condition-case nil |
diff --git a/lisp/gnus/spam.el b/lisp/gnus/spam.el index d00f0a60b66..3f978918b9a 100644 --- a/lisp/gnus/spam.el +++ b/lisp/gnus/spam.el | |||
| @@ -710,16 +710,8 @@ finds ham or spam.") | |||
| 710 | (defun spam-set-difference (list1 list2) | 710 | (defun spam-set-difference (list1 list2) |
| 711 | "Return a set difference of LIST1 and LIST2. | 711 | "Return a set difference of LIST1 and LIST2. |
| 712 | When either list is nil, the other is returned." | 712 | When either list is nil, the other is returned." |
| 713 | (if (and list1 list2) | 713 | (declare (obsolete seq-difference "28.1")) |
| 714 | ;; we have two non-nil lists | 714 | (seq-difference list1 list2 #'eq)) |
| 715 | (progn | ||
| 716 | (dolist (item (append list1 list2)) | ||
| 717 | (when (and (memq item list1) (memq item list2)) | ||
| 718 | (setq list1 (delq item list1)) | ||
| 719 | (setq list2 (delq item list2)))) | ||
| 720 | (append list1 list2)) | ||
| 721 | ;; if either of the lists was nil, return the other one | ||
| 722 | (if list1 list1 list2))) | ||
| 723 | 715 | ||
| 724 | (defun spam-group-ham-mark-p (group mark &optional spam) | 716 | (defun spam-group-ham-mark-p (group mark &optional spam) |
| 725 | "Checks if MARK is considered a ham mark in GROUP." | 717 | "Checks if MARK is considered a ham mark in GROUP." |
| @@ -1327,7 +1319,7 @@ In the case of mover backends, checks the setting of | |||
| 1327 | (new-articles (spam-list-articles | 1319 | (new-articles (spam-list-articles |
| 1328 | gnus-newsgroup-articles | 1320 | gnus-newsgroup-articles |
| 1329 | classification)) | 1321 | classification)) |
| 1330 | (changed-articles (spam-set-difference new-articles old-articles))) | 1322 | (changed-articles (seq-difference new-articles old-articles #'eq))) |
| 1331 | ;; now that we have the changed articles, we go through the processors | 1323 | ;; now that we have the changed articles, we go through the processors |
| 1332 | (dolist (backend (spam-backend-list)) | 1324 | (dolist (backend (spam-backend-list)) |
| 1333 | (let (unregister-list) | 1325 | (let (unregister-list) |
diff --git a/lisp/hilit-chg.el b/lisp/hilit-chg.el index 89a1a9108c4..3c3c4073986 100644 --- a/lisp/hilit-chg.el +++ b/lisp/hilit-chg.el | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | ;;; hilit-chg.el --- minor mode displaying buffer changes with special face | 1 | ;;; hilit-chg.el --- minor mode displaying buffer changes with special face -*- lexical-binding: t -*- |
| 2 | 2 | ||
| 3 | ;; Copyright (C) 1998, 2000-2021 Free Software Foundation, Inc. | 3 | ;; Copyright (C) 1998, 2000-2021 Free Software Foundation, Inc. |
| 4 | 4 | ||
| @@ -68,8 +68,7 @@ | |||
| 68 | ;; (defun my-highlight-changes-mode-hook () | 68 | ;; (defun my-highlight-changes-mode-hook () |
| 69 | ;; (if highlight-changes-mode | 69 | ;; (if highlight-changes-mode |
| 70 | ;; (add-hook 'write-file-functions 'highlight-changes-rotate-faces nil t) | 70 | ;; (add-hook 'write-file-functions 'highlight-changes-rotate-faces nil t) |
| 71 | ;; (remove-hook 'write-file-functions 'highlight-changes-rotate-faces t) | 71 | ;; (remove-hook 'write-file-functions 'highlight-changes-rotate-faces t))) |
| 72 | ;; )) | ||
| 73 | 72 | ||
| 74 | 73 | ||
| 75 | ;; Automatically enabling Highlight Changes mode | 74 | ;; Automatically enabling Highlight Changes mode |
| @@ -114,16 +113,16 @@ | |||
| 114 | 113 | ||
| 115 | 114 | ||
| 116 | ;; Possible bindings: | 115 | ;; Possible bindings: |
| 117 | ;; (global-set-key '[C-right] 'highlight-changes-next-change) | 116 | ;; (global-set-key '[C-right] #'highlight-changes-next-change) |
| 118 | ;; (global-set-key '[C-left] 'highlight-changes-previous-change) | 117 | ;; (global-set-key '[C-left] #'highlight-changes-previous-change) |
| 119 | ;; | 118 | ;; |
| 120 | ;; Other interactive functions (that could be bound if desired): | 119 | ;; Other interactive functions (that could be bound if desired): |
| 121 | ;; highlight-changes-mode | 120 | ;; `highlight-changes-mode' |
| 122 | ;; highlight-changes-toggle-visibility | 121 | ;; `highlight-changes-toggle-visibility' |
| 123 | ;; highlight-changes-remove-highlight | 122 | ;; `highlight-changes-remove-highlight' |
| 124 | ;; highlight-compare-with-file | 123 | ;; `highlight-compare-with-file' |
| 125 | ;; highlight-compare-buffers | 124 | ;; `highlight-compare-buffers' |
| 126 | ;; highlight-changes-rotate-faces | 125 | ;; `highlight-changes-rotate-faces' |
| 127 | 126 | ||
| 128 | 127 | ||
| 129 | ;;; Bugs: | 128 | ;;; Bugs: |
| @@ -179,7 +178,6 @@ | |||
| 179 | :version "20.4" | 178 | :version "20.4" |
| 180 | :group 'faces) | 179 | :group 'faces) |
| 181 | 180 | ||
| 182 | |||
| 183 | ;; Face information: How the changes appear. | 181 | ;; Face information: How the changes appear. |
| 184 | 182 | ||
| 185 | ;; Defaults for face: red foreground, no change to background, | 183 | ;; Defaults for face: red foreground, no change to background, |
| @@ -192,22 +190,20 @@ | |||
| 192 | '((((min-colors 88) (class color)) (:foreground "red1")) | 190 | '((((min-colors 88) (class color)) (:foreground "red1")) |
| 193 | (((class color)) (:foreground "red" )) | 191 | (((class color)) (:foreground "red" )) |
| 194 | (t (:inverse-video t))) | 192 | (t (:inverse-video t))) |
| 195 | "Face used for highlighting changes." | 193 | "Face used for highlighting changes.") |
| 196 | :group 'highlight-changes) | ||
| 197 | 194 | ||
| 198 | ;; This looks pretty ugly, actually. Maybe the underline should be removed. | 195 | ;; This looks pretty ugly, actually. Maybe the underline should be removed. |
| 199 | (defface highlight-changes-delete | 196 | (defface highlight-changes-delete |
| 200 | '((((min-colors 88) (class color)) (:foreground "red1" :underline t)) | 197 | '((((min-colors 88) (class color)) (:foreground "red1" :underline t)) |
| 201 | (((class color)) (:foreground "red" :underline t)) | 198 | (((class color)) (:foreground "red" :underline t)) |
| 202 | (t (:inverse-video t))) | 199 | (t (:inverse-video t))) |
| 203 | "Face used for highlighting deletions." | 200 | "Face used for highlighting deletions.") |
| 204 | :group 'highlight-changes) | ||
| 205 | 201 | ||
| 206 | ;; A (not very good) default list of colors to rotate through. | 202 | ;; A (not very good) default list of colors to rotate through. |
| 207 | (defcustom highlight-changes-colors | 203 | (defcustom highlight-changes-colors |
| 208 | (if (eq (frame-parameter nil 'background-mode) 'light) | 204 | (if (eq (frame-parameter nil 'background-mode) 'light) |
| 209 | ;; defaults for light background: | 205 | ;; defaults for light background: |
| 210 | '( "magenta" "blue" "darkgreen" "chocolate" "sienna4" "NavyBlue") | 206 | '("magenta" "blue" "darkgreen" "chocolate" "sienna4" "NavyBlue") |
| 211 | ;; defaults for dark background: | 207 | ;; defaults for dark background: |
| 212 | '("yellow" "magenta" "blue" "maroon" "firebrick" "green4" "DarkOrchid")) | 208 | '("yellow" "magenta" "blue" "maroon" "firebrick" "green4" "DarkOrchid")) |
| 213 | "Colors used by `highlight-changes-rotate-faces'. | 209 | "Colors used by `highlight-changes-rotate-faces'. |
| @@ -218,8 +214,7 @@ This list is used if `highlight-changes-face-list' is nil, otherwise that | |||
| 218 | variable overrides this list. If you only care about foreground | 214 | variable overrides this list. If you only care about foreground |
| 219 | colors then use this, if you want fancier faces then set | 215 | colors then use this, if you want fancier faces then set |
| 220 | `highlight-changes-face-list'." | 216 | `highlight-changes-face-list'." |
| 221 | :type '(repeat color) | 217 | :type '(repeat color)) |
| 222 | :group 'highlight-changes) | ||
| 223 | 218 | ||
| 224 | ;; When you invoke highlight-changes-mode, should highlight-changes-visible-mode | 219 | ;; When you invoke highlight-changes-mode, should highlight-changes-visible-mode |
| 225 | ;; be on or off? | 220 | ;; be on or off? |
| @@ -230,8 +225,7 @@ colors then use this, if you want fancier faces then set | |||
| 230 | This controls the initial value of `highlight-changes-visible-mode'. | 225 | This controls the initial value of `highlight-changes-visible-mode'. |
| 231 | When a buffer is in Highlight Changes mode the function | 226 | When a buffer is in Highlight Changes mode the function |
| 232 | `highlight-changes-visible-mode' is used to toggle the mode on or off." | 227 | `highlight-changes-visible-mode' is used to toggle the mode on or off." |
| 233 | :type 'boolean | 228 | :type 'boolean) |
| 234 | :group 'highlight-changes) | ||
| 235 | 229 | ||
| 236 | ;; These are the strings displayed in the mode-line for the minor mode: | 230 | ;; These are the strings displayed in the mode-line for the minor mode: |
| 237 | 231 | ||
| @@ -240,16 +234,14 @@ When a buffer is in Highlight Changes mode the function | |||
| 240 | This should be set to nil if no indication is desired, or to | 234 | This should be set to nil if no indication is desired, or to |
| 241 | a string with a leading space." | 235 | a string with a leading space." |
| 242 | :type '(choice string | 236 | :type '(choice string |
| 243 | (const :tag "None" nil)) | 237 | (const :tag "None" nil))) |
| 244 | :group 'highlight-changes) | ||
| 245 | 238 | ||
| 246 | (defcustom highlight-changes-invisible-string " -Chg" | 239 | (defcustom highlight-changes-invisible-string " -Chg" |
| 247 | "The string used when in Highlight Changes mode and changes are hidden. | 240 | "The string used when in Highlight Changes mode and changes are hidden. |
| 248 | This should be set to nil if no indication is desired, or to | 241 | This should be set to nil if no indication is desired, or to |
| 249 | a string with a leading space." | 242 | a string with a leading space." |
| 250 | :type '(choice string | 243 | :type '(choice string |
| 251 | (const :tag "None" nil)) | 244 | (const :tag "None" nil))) |
| 252 | :group 'highlight-changes) | ||
| 253 | 245 | ||
| 254 | (defcustom highlight-changes-global-modes t | 246 | (defcustom highlight-changes-global-modes t |
| 255 | "Determine whether a buffer is suitable for global Highlight Changes mode. | 247 | "Determine whether a buffer is suitable for global Highlight Changes mode. |
| @@ -279,9 +271,7 @@ modes only." | |||
| 279 | (repeat :tag "Modes" :inline t (symbol :tag "mode"))) | 271 | (repeat :tag "Modes" :inline t (symbol :tag "mode"))) |
| 280 | (function :menu-tag "determined by function" | 272 | (function :menu-tag "determined by function" |
| 281 | :value buffer-file-name) | 273 | :value buffer-file-name) |
| 282 | (const :tag "none" nil) | 274 | (const :tag "none" nil))) |
| 283 | ) | ||
| 284 | :group 'highlight-changes) | ||
| 285 | 275 | ||
| 286 | (defcustom highlight-changes-global-changes-existing-buffers nil | 276 | (defcustom highlight-changes-global-changes-existing-buffers nil |
| 287 | "If non-nil, toggling global Highlight Changes mode affects existing buffers. | 277 | "If non-nil, toggling global Highlight Changes mode affects existing buffers. |
| @@ -290,8 +280,7 @@ created). However, if `highlight-changes-global-changes-existing-buffers' | |||
| 290 | is non-nil, then turning on `global-highlight-changes-mode' will turn on | 280 | is non-nil, then turning on `global-highlight-changes-mode' will turn on |
| 291 | Highlight Changes mode in suitable buffers, and turning the mode off will | 281 | Highlight Changes mode in suitable buffers, and turning the mode off will |
| 292 | remove it from existing buffers." | 282 | remove it from existing buffers." |
| 293 | :type 'boolean | 283 | :type 'boolean) |
| 294 | :group 'highlight-changes) | ||
| 295 | 284 | ||
| 296 | ;; These are for internal use. | 285 | ;; These are for internal use. |
| 297 | 286 | ||
| @@ -320,9 +309,7 @@ through various faces. | |||
| 320 | \\[highlight-compare-with-file] - mark text as changed by comparing this | 309 | \\[highlight-compare-with-file] - mark text as changed by comparing this |
| 321 | buffer with the contents of a file | 310 | buffer with the contents of a file |
| 322 | \\[highlight-compare-buffers] highlights differences between two buffers." | 311 | \\[highlight-compare-buffers] highlights differences between two buffers." |
| 323 | nil ;; init-value | 312 | :lighter hilit-chg-string |
| 324 | hilit-chg-string ;; lighter | ||
| 325 | nil ;; keymap | ||
| 326 | (if (or (display-color-p) | 313 | (if (or (display-color-p) |
| 327 | (and (fboundp 'x-display-grayscale-p) (x-display-grayscale-p))) | 314 | (and (fboundp 'x-display-grayscale-p) (x-display-grayscale-p))) |
| 328 | (progn | 315 | (progn |
| @@ -352,13 +339,8 @@ The default value can be customized with variable | |||
| 352 | `highlight-changes-visibility-initial-state'. | 339 | `highlight-changes-visibility-initial-state'. |
| 353 | 340 | ||
| 354 | This command does not itself set Highlight Changes mode." | 341 | This command does not itself set Highlight Changes mode." |
| 355 | 342 | :init-value t | |
| 356 | t ;; init-value | 343 | (hilit-chg-update)) |
| 357 | nil ;; lighter | ||
| 358 | nil ;; keymap | ||
| 359 | |||
| 360 | (hilit-chg-update) | ||
| 361 | ) | ||
| 362 | 344 | ||
| 363 | 345 | ||
| 364 | (defun hilit-chg-cust-fix-changes-face-list (w _wc &optional event) | 346 | (defun hilit-chg-cust-fix-changes-face-list (w _wc &optional event) |
| @@ -371,12 +353,10 @@ This command does not itself set Highlight Changes mode." | |||
| 371 | ;; faces are saved but not to the actual list itself. | 353 | ;; faces are saved but not to the actual list itself. |
| 372 | (let ((old-list (widget-value w))) | 354 | (let ((old-list (widget-value w))) |
| 373 | (if (member 'default old-list) | 355 | (if (member 'default old-list) |
| 374 | (let | 356 | (let ((p (reverse old-list)) |
| 375 | ((p (reverse old-list)) | ||
| 376 | (n (length old-list)) | 357 | (n (length old-list)) |
| 377 | new-name old-name | 358 | new-name old-name |
| 378 | (new-list nil) | 359 | (new-list nil)) |
| 379 | ) | ||
| 380 | (while p | 360 | (while p |
| 381 | (setq old-name (car p)) | 361 | (setq old-name (car p)) |
| 382 | (setq new-name (intern (format "highlight-changes-%d" n))) | 362 | (setq new-name (intern (format "highlight-changes-%d" n))) |
| @@ -396,9 +376,7 @@ This command does not itself set Highlight Changes mode." | |||
| 396 | (if (equal new-list (widget-value w)) | 376 | (if (equal new-list (widget-value w)) |
| 397 | nil ;; (message "notify: no change!") | 377 | nil ;; (message "notify: no change!") |
| 398 | (widget-value-set w new-list) | 378 | (widget-value-set w new-list) |
| 399 | (widget-setup) | 379 | (widget-setup))) |
| 400 | ) | ||
| 401 | ) | ||
| 402 | ;; (message "notify: no default here!") | 380 | ;; (message "notify: no default here!") |
| 403 | )) | 381 | )) |
| 404 | (let ((parent (widget-get w :parent))) | 382 | (let ((parent (widget-get w :parent))) |
| @@ -417,10 +395,8 @@ Otherwise, this list will be constructed when needed from | |||
| 417 | :type '(choice | 395 | :type '(choice |
| 418 | (repeat | 396 | (repeat |
| 419 | :notify hilit-chg-cust-fix-changes-face-list | 397 | :notify hilit-chg-cust-fix-changes-face-list |
| 420 | face ) | 398 | face) |
| 421 | (const :tag "Derive from highlight-changes-colors" nil) | 399 | (const :tag "Derive from highlight-changes-colors" nil))) |
| 422 | ) | ||
| 423 | :group 'highlight-changes) | ||
| 424 | 400 | ||
| 425 | 401 | ||
| 426 | (defun hilit-chg-map-changes (func &optional start-position end-position) | 402 | (defun hilit-chg-map-changes (func &optional start-position end-position) |
| @@ -446,7 +422,7 @@ An overlay from BEG to END containing a change face is added | |||
| 446 | from the information in the text property of type `hilit-chg'. | 422 | from the information in the text property of type `hilit-chg'. |
| 447 | 423 | ||
| 448 | This is the opposite of `hilit-chg-hide-changes'." | 424 | This is the opposite of `hilit-chg-hide-changes'." |
| 449 | (hilit-chg-map-changes 'hilit-chg-make-ov beg end)) | 425 | (hilit-chg-map-changes #'hilit-chg-make-ov beg end)) |
| 450 | 426 | ||
| 451 | 427 | ||
| 452 | (defun hilit-chg-make-ov (prop start end) | 428 | (defun hilit-chg-make-ov (prop start end) |
| @@ -467,8 +443,7 @@ This is the opposite of `hilit-chg-hide-changes'." | |||
| 467 | (overlay-put ov 'evaporate t) | 443 | (overlay-put ov 'evaporate t) |
| 468 | ;; We set the change property so we can tell this is one | 444 | ;; We set the change property so we can tell this is one |
| 469 | ;; of our overlays (so we don't delete someone else's). | 445 | ;; of our overlays (so we don't delete someone else's). |
| 470 | (overlay-put ov 'hilit-chg t) | 446 | (overlay-put ov 'hilit-chg t)) |
| 471 | ) | ||
| 472 | (error "hilit-chg-make-ov: no face for prop: %s" prop)))) | 447 | (error "hilit-chg-make-ov: no face for prop: %s" prop)))) |
| 473 | 448 | ||
| 474 | (defun hilit-chg-hide-changes (&optional beg end) | 449 | (defun hilit-chg-hide-changes (&optional beg end) |
| @@ -726,7 +701,7 @@ this, eval the following in the buffer to be saved: | |||
| 726 | ;; remove our existing overlays | 701 | ;; remove our existing overlays |
| 727 | (hilit-chg-hide-changes) | 702 | (hilit-chg-hide-changes) |
| 728 | ;; for each change text property, increment it | 703 | ;; for each change text property, increment it |
| 729 | (hilit-chg-map-changes 'hilit-chg-bump-change) | 704 | (hilit-chg-map-changes #'hilit-chg-bump-change) |
| 730 | ;; and display them | 705 | ;; and display them |
| 731 | (hilit-chg-display-changes)) | 706 | (hilit-chg-display-changes)) |
| 732 | (unless modified | 707 | (unless modified |
| @@ -759,7 +734,7 @@ is non-nil." | |||
| 759 | (buf-b-read-only (with-current-buffer buf-b buffer-read-only)) | 734 | (buf-b-read-only (with-current-buffer buf-b buffer-read-only)) |
| 760 | temp-a temp-b) | 735 | temp-a temp-b) |
| 761 | (if (and file-a bufa-modified) | 736 | (if (and file-a bufa-modified) |
| 762 | (if (y-or-n-p (format "Save buffer %s? " buf-a)) | 737 | (if (y-or-n-p (format "Save buffer %s? " buf-a)) |
| 763 | (with-current-buffer buf-a | 738 | (with-current-buffer buf-a |
| 764 | (save-buffer) | 739 | (save-buffer) |
| 765 | (setq bufa-modified (buffer-modified-p buf-a))) | 740 | (setq bufa-modified (buffer-modified-p buf-a))) |
| @@ -768,7 +743,7 @@ is non-nil." | |||
| 768 | (setq temp-a (setq file-a (ediff-make-temp-file buf-a nil)))) | 743 | (setq temp-a (setq file-a (ediff-make-temp-file buf-a nil)))) |
| 769 | 744 | ||
| 770 | (if (and file-b bufb-modified) | 745 | (if (and file-b bufb-modified) |
| 771 | (if (y-or-n-p (format "Save buffer %s? " buf-b)) | 746 | (if (y-or-n-p (format "Save buffer %s? " buf-b)) |
| 772 | (with-current-buffer buf-b | 747 | (with-current-buffer buf-b |
| 773 | (save-buffer) | 748 | (save-buffer) |
| 774 | (setq bufb-modified (buffer-modified-p buf-b))) | 749 | (setq bufb-modified (buffer-modified-p buf-b))) |
| @@ -809,12 +784,11 @@ is non-nil." | |||
| 809 | (if temp-a | 784 | (if temp-a |
| 810 | (delete-file temp-a)) | 785 | (delete-file temp-a)) |
| 811 | (if temp-b | 786 | (if temp-b |
| 812 | (delete-file temp-b))) | 787 | (delete-file temp-b))))) |
| 813 | )) | ||
| 814 | 788 | ||
| 815 | ;;;###autoload | 789 | ;;;###autoload |
| 816 | (defun highlight-compare-buffers (buf-a buf-b) | 790 | (defun highlight-compare-buffers (buf-a buf-b) |
| 817 | "Compare two buffers and highlight the differences. | 791 | "Compare two buffers and highlight the differences. |
| 818 | 792 | ||
| 819 | The default is the current buffer and the one in the next window. | 793 | The default is the current buffer and the one in the next window. |
| 820 | 794 | ||
| @@ -835,8 +809,7 @@ changes are made, so \\[highlight-changes-next-change] and | |||
| 835 | (window-buffer (next-window)) t)))) | 809 | (window-buffer (next-window)) t)))) |
| 836 | (let ((file-a (buffer-file-name buf-a)) | 810 | (let ((file-a (buffer-file-name buf-a)) |
| 837 | (file-b (buffer-file-name buf-b))) | 811 | (file-b (buffer-file-name buf-b))) |
| 838 | (highlight-markup-buffers buf-a file-a buf-b file-b) | 812 | (highlight-markup-buffers buf-a file-a buf-b file-b))) |
| 839 | )) | ||
| 840 | 813 | ||
| 841 | ;;;###autoload | 814 | ;;;###autoload |
| 842 | (defun highlight-compare-with-file (file-b) | 815 | (defun highlight-compare-with-file (file-b) |
| @@ -876,9 +849,11 @@ changes are made, so \\[highlight-changes-next-change] and | |||
| 876 | (find-file-noselect file-b)))) | 849 | (find-file-noselect file-b)))) |
| 877 | (highlight-markup-buffers buf-a file-a buf-b file-b (not existing-buf)) | 850 | (highlight-markup-buffers buf-a file-a buf-b file-b (not existing-buf)) |
| 878 | (unless existing-buf | 851 | (unless existing-buf |
| 879 | (kill-buffer buf-b)) | 852 | (kill-buffer buf-b)))) |
| 880 | )) | ||
| 881 | 853 | ||
| 854 | (defvar hilit-x) ; placate the byte-compiler | ||
| 855 | (defvar hilit-y) | ||
| 856 | (defvar hilit-e) | ||
| 882 | 857 | ||
| 883 | (defun hilit-chg-get-diff-info (buf-a file-a buf-b file-b) | 858 | (defun hilit-chg-get-diff-info (buf-a file-a buf-b file-b) |
| 884 | ;; hilit-e,x,y are set by function hilit-chg-get-diff-list-hk. | 859 | ;; hilit-e,x,y are set by function hilit-chg-get-diff-list-hk. |
| @@ -886,8 +861,7 @@ changes are made, so \\[highlight-changes-next-change] and | |||
| 886 | (ediff-setup buf-a file-a buf-b file-b | 861 | (ediff-setup buf-a file-a buf-b file-b |
| 887 | nil nil ; buf-c file-C | 862 | nil nil ; buf-c file-C |
| 888 | '(hilit-chg-get-diff-list-hk) | 863 | '(hilit-chg-get-diff-list-hk) |
| 889 | (list (cons 'ediff-job-name 'something)) | 864 | (list (cons 'ediff-job-name 'something))) |
| 890 | ) | ||
| 891 | (ediff-with-current-buffer hilit-e (ediff-really-quit nil)) | 865 | (ediff-with-current-buffer hilit-e (ediff-really-quit nil)) |
| 892 | (list hilit-x hilit-y))) | 866 | (list hilit-x hilit-y))) |
| 893 | 867 | ||
| @@ -895,9 +869,6 @@ changes are made, so \\[highlight-changes-next-change] and | |||
| 895 | (defun hilit-chg-get-diff-list-hk () | 869 | (defun hilit-chg-get-diff-list-hk () |
| 896 | ;; hilit-e/x/y are dynamically bound by hilit-chg-get-diff-info | 870 | ;; hilit-e/x/y are dynamically bound by hilit-chg-get-diff-info |
| 897 | ;; which calls this function as a hook. | 871 | ;; which calls this function as a hook. |
| 898 | (defvar hilit-x) ; placate the byte-compiler | ||
| 899 | (defvar hilit-y) | ||
| 900 | (defvar hilit-e) | ||
| 901 | (setq hilit-e (current-buffer)) | 872 | (setq hilit-e (current-buffer)) |
| 902 | (let ((n 0) extent p va vb a b) | 873 | (let ((n 0) extent p va vb a b) |
| 903 | (setq hilit-x nil hilit-y nil) | 874 | (setq hilit-x nil hilit-y nil) |
| @@ -931,7 +902,7 @@ changes are made, so \\[highlight-changes-next-change] and | |||
| 931 | (setq extent (list (overlay-start (car p)) | 902 | (setq extent (list (overlay-start (car p)) |
| 932 | (overlay-end (car p)))) | 903 | (overlay-end (car p)))) |
| 933 | (setq p (cdr p)) | 904 | (setq p (cdr p)) |
| 934 | (setq hilit-y (append hilit-y (list extent) ))) | 905 | (setq hilit-y (append hilit-y (list extent)))) |
| 935 | (setq n (1+ n)));; while | 906 | (setq n (1+ n)));; while |
| 936 | ;; ediff-quit doesn't work here. | 907 | ;; ediff-quit doesn't work here. |
| 937 | ;; No point in returning a value, since this is a hook function. | 908 | ;; No point in returning a value, since this is a hook function. |
| @@ -961,8 +932,7 @@ This is called when `global-highlight-changes-mode' is turned on." | |||
| 961 | (and | 932 | (and |
| 962 | (not (string-match "^[ *]" (buffer-name))) | 933 | (not (string-match "^[ *]" (buffer-name))) |
| 963 | (buffer-file-name)))) | 934 | (buffer-file-name)))) |
| 964 | (highlight-changes-mode 1)) | 935 | (highlight-changes-mode 1)))) |
| 965 | )) | ||
| 966 | 936 | ||
| 967 | 937 | ||
| 968 | ;;;; Desktop support. | 938 | ;;;; Desktop support. |
| @@ -985,8 +955,7 @@ This is called when `global-highlight-changes-mode' is turned on." | |||
| 985 | ;; (message "--- hilit-chg-debug-show ---") | 955 | ;; (message "--- hilit-chg-debug-show ---") |
| 986 | ;; (hilit-chg-map-changes (lambda (prop start end) | 956 | ;; (hilit-chg-map-changes (lambda (prop start end) |
| 987 | ;; (message "%d-%d: %s" start end prop)) | 957 | ;; (message "%d-%d: %s" start end prop)) |
| 988 | ;; beg end | 958 | ;; beg end)) |
| 989 | ;; )) | ||
| 990 | ;; | 959 | ;; |
| 991 | ;; ================== end of debug =============== | 960 | ;; ================== end of debug =============== |
| 992 | 961 | ||
diff --git a/lisp/htmlfontify.el b/lisp/htmlfontify.el index 0c8d5348247..b453061388f 100644 --- a/lisp/htmlfontify.el +++ b/lisp/htmlfontify.el | |||
| @@ -523,22 +523,10 @@ therefore no longer care about) will be invalid at any time.\n | |||
| 523 | (defvar hfy-tmpfont-stack nil | 523 | (defvar hfy-tmpfont-stack nil |
| 524 | "An alist of derived fonts resulting from overlays.") | 524 | "An alist of derived fonts resulting from overlays.") |
| 525 | 525 | ||
| 526 | (defconst hfy-hex-regex "[[:xdigit:]]") | ||
| 527 | |||
| 528 | (defconst hfy-triplet-regex | 526 | (defconst hfy-triplet-regex |
| 529 | (concat | 527 | (rx (group xdigit xdigit) |
| 530 | "\\(" hfy-hex-regex hfy-hex-regex "\\)" | 528 | (group xdigit xdigit) |
| 531 | "\\(" hfy-hex-regex hfy-hex-regex "\\)" | 529 | (group xdigit xdigit))) |
| 532 | "\\(" hfy-hex-regex hfy-hex-regex "\\)")) | ||
| 533 | |||
| 534 | (defun hfy-interq (set-a set-b) | ||
| 535 | "Return the intersection (using `eq') of two lists SET-A and SET-B." | ||
| 536 | (let ((sa set-a) (interq nil) (elt nil)) | ||
| 537 | (while sa | ||
| 538 | (setq elt (car sa) | ||
| 539 | sa (cdr sa)) | ||
| 540 | (if (memq elt set-b) (setq interq (cons elt interq)))) | ||
| 541 | interq)) | ||
| 542 | 530 | ||
| 543 | (defun hfy-color-vals (color) | 531 | (defun hfy-color-vals (color) |
| 544 | "Where COLOR is a color name or #XXXXXX style triplet, return a | 532 | "Where COLOR is a color name or #XXXXXX style triplet, return a |
| @@ -887,7 +875,9 @@ See also `hfy-display-class' for details of valid values for CLASS." | |||
| 887 | (setq score 0) (ignore "t match")) | 875 | (setq score 0) (ignore "t match")) |
| 888 | ((not (cdr (assq key face-class))) ;Neither good nor bad. | 876 | ((not (cdr (assq key face-class))) ;Neither good nor bad. |
| 889 | nil (ignore "non match, non collision")) | 877 | nil (ignore "non match, non collision")) |
| 890 | ((setq x (hfy-interq val (cdr (assq key face-class)))) | 878 | ((setq x (nreverse |
| 879 | (seq-intersection val (cdr (assq key face-class)) | ||
| 880 | #'eq))) | ||
| 891 | (setq score (+ score (length x))) | 881 | (setq score (+ score (length x))) |
| 892 | (ignore "intersection")) | 882 | (ignore "intersection")) |
| 893 | (t ;; nope. | 883 | (t ;; nope. |
| @@ -2355,6 +2345,13 @@ You may also want to set `hfy-page-header' and `hfy-page-footer'." | |||
| 2355 | (let ((file (hfy-initfile))) | 2345 | (let ((file (hfy-initfile))) |
| 2356 | (load file 'NOERROR nil nil) )) | 2346 | (load file 'NOERROR nil nil) )) |
| 2357 | 2347 | ||
| 2348 | ;; Obsolete. | ||
| 2349 | |||
| 2350 | (defun hfy-interq (set-a set-b) | ||
| 2351 | "Return the intersection (using `eq') of two lists SET-A and SET-B." | ||
| 2352 | (declare (obsolete seq-intersection "28.1")) | ||
| 2353 | (nreverse (seq-intersection set-a set-b #'eq))) | ||
| 2354 | |||
| 2358 | (provide 'htmlfontify) | 2355 | (provide 'htmlfontify) |
| 2359 | 2356 | ||
| 2360 | ;;; htmlfontify.el ends here | 2357 | ;;; htmlfontify.el ends here |
diff --git a/lisp/image-mode.el b/lisp/image-mode.el index 2de16cb6afd..f4ff35f9c41 100644 --- a/lisp/image-mode.el +++ b/lisp/image-mode.el | |||
| @@ -732,8 +732,9 @@ displays an image file as text." | |||
| 732 | (setq image-type previous-image-type) | 732 | (setq image-type previous-image-type) |
| 733 | ;; Enable image minor mode with `C-c C-c'. | 733 | ;; Enable image minor mode with `C-c C-c'. |
| 734 | (image-minor-mode 1) | 734 | (image-minor-mode 1) |
| 735 | ;; Show the image file as text. | 735 | (unless (image-get-display-property) |
| 736 | (image-toggle-display-text))) | 736 | ;; Show the image file as text. |
| 737 | (image-toggle-display-text)))) | ||
| 737 | 738 | ||
| 738 | (defun image-mode-as-hex () | 739 | (defun image-mode-as-hex () |
| 739 | "Set a non-image mode as major mode in combination with image minor mode. | 740 | "Set a non-image mode as major mode in combination with image minor mode. |
diff --git a/lisp/image.el b/lisp/image.el index b802c1c906f..610d020aab5 100644 --- a/lisp/image.el +++ b/lisp/image.el | |||
| @@ -603,12 +603,16 @@ means display it in the right marginal area." | |||
| 603 | (defun insert-image (image &optional string area slice) | 603 | (defun insert-image (image &optional string area slice) |
| 604 | "Insert IMAGE into current buffer at point. | 604 | "Insert IMAGE into current buffer at point. |
| 605 | IMAGE is displayed by inserting STRING into the current buffer | 605 | IMAGE is displayed by inserting STRING into the current buffer |
| 606 | with a `display' property whose value is the image. STRING | 606 | with a `display' property whose value is the image. |
| 607 | defaults to a single space if you omit it. | 607 | |
| 608 | STRING defaults to a single space if you omit it, which means | ||
| 609 | that the inserted image will behave as whitespace syntactically. | ||
| 610 | |||
| 608 | AREA is where to display the image. AREA nil or omitted means | 611 | AREA is where to display the image. AREA nil or omitted means |
| 609 | display it in the text area, a value of `left-margin' means | 612 | display it in the text area, a value of `left-margin' means |
| 610 | display it in the left marginal area, a value of `right-margin' | 613 | display it in the left marginal area, a value of `right-margin' |
| 611 | means display it in the right marginal area. | 614 | means display it in the right marginal area. |
| 615 | |||
| 612 | SLICE specifies slice of IMAGE to insert. SLICE nil or omitted | 616 | SLICE specifies slice of IMAGE to insert. SLICE nil or omitted |
| 613 | means insert whole image. SLICE is a list (X Y WIDTH HEIGHT) | 617 | means insert whole image. SLICE is a list (X Y WIDTH HEIGHT) |
| 614 | specifying the X and Y positions and WIDTH and HEIGHT of image area | 618 | specifying the X and Y positions and WIDTH and HEIGHT of image area |
diff --git a/lisp/international/characters.el b/lisp/international/characters.el index c643f66cbb0..97bf31acfc3 100644 --- a/lisp/international/characters.el +++ b/lisp/international/characters.el | |||
| @@ -484,9 +484,9 @@ with L, LRE, or LRO Unicode bidi character type.") | |||
| 484 | (progn | 484 | (progn |
| 485 | (modify-syntax-entry chars syntax) | 485 | (modify-syntax-entry chars syntax) |
| 486 | (modify-category-entry chars category)) | 486 | (modify-category-entry chars category)) |
| 487 | (mapc #'(lambda (x) | 487 | (mapc (lambda (x) |
| 488 | (modify-syntax-entry x syntax) | 488 | (modify-syntax-entry x syntax) |
| 489 | (modify-category-entry x category)) | 489 | (modify-category-entry x category)) |
| 490 | chars))))) | 490 | chars))))) |
| 491 | 491 | ||
| 492 | ;; Bidi categories | 492 | ;; Bidi categories |
| @@ -1390,8 +1390,8 @@ with L, LRE, or LRO Unicode bidi character type.") | |||
| 1390 | (dolist (charset-info (nthcdr 2 slot)) | 1390 | (dolist (charset-info (nthcdr 2 slot)) |
| 1391 | (let ((charset (car charset-info))) | 1391 | (let ((charset (car charset-info))) |
| 1392 | (dolist (code-range (cdr charset-info)) | 1392 | (dolist (code-range (cdr charset-info)) |
| 1393 | (map-charset-chars #'(lambda (range _arg) | 1393 | (map-charset-chars (lambda (range _arg) |
| 1394 | (set-char-table-range table range 2)) | 1394 | (set-char-table-range table range 2)) |
| 1395 | charset nil | 1395 | charset nil |
| 1396 | (car code-range) (cdr code-range))))) | 1396 | (car code-range) (cdr code-range))))) |
| 1397 | (optimize-char-table table) | 1397 | (optimize-char-table table) |
| @@ -1417,8 +1417,8 @@ Setup char-width-table appropriate for non-CJK language environment." | |||
| 1417 | (require 'charscript)) | 1417 | (require 'charscript)) |
| 1418 | 1418 | ||
| 1419 | (map-charset-chars | 1419 | (map-charset-chars |
| 1420 | #'(lambda (range _ignore) | 1420 | (lambda (range _ignore) |
| 1421 | (set-char-table-range char-script-table range 'tibetan)) | 1421 | (set-char-table-range char-script-table range 'tibetan)) |
| 1422 | 'tibetan) | 1422 | 'tibetan) |
| 1423 | 1423 | ||
| 1424 | 1424 | ||
| @@ -1426,14 +1426,14 @@ Setup char-width-table appropriate for non-CJK language environment." | |||
| 1426 | 1426 | ||
| 1427 | (when (setq unicode-category-table | 1427 | (when (setq unicode-category-table |
| 1428 | (unicode-property-table-internal 'general-category)) | 1428 | (unicode-property-table-internal 'general-category)) |
| 1429 | (map-char-table #'(lambda (key val) | 1429 | (map-char-table (lambda (key val) |
| 1430 | (if val | 1430 | (if val |
| 1431 | (cond ((or (and (/= (aref (symbol-name val) 0) ?M) | 1431 | (cond ((or (and (/= (aref (symbol-name val) 0) ?M) |
| 1432 | (/= (aref (symbol-name val) 0) ?C)) | 1432 | (/= (aref (symbol-name val) 0) ?C)) |
| 1433 | (eq val 'Zs)) | 1433 | (eq val 'Zs)) |
| 1434 | (modify-category-entry key ?.)) | 1434 | (modify-category-entry key ?.)) |
| 1435 | ((eq val 'Mn) | 1435 | ((eq val 'Mn) |
| 1436 | (modify-category-entry key ?^))))) | 1436 | (modify-category-entry key ?^))))) |
| 1437 | unicode-category-table)) | 1437 | unicode-category-table)) |
| 1438 | 1438 | ||
| 1439 | (optimize-char-table (standard-category-table)) | 1439 | (optimize-char-table (standard-category-table)) |
| @@ -1524,21 +1524,21 @@ option `glyphless-char-display'." | |||
| 1524 | ((eq target 'format-control) | 1524 | ((eq target 'format-control) |
| 1525 | (when unicode-category-table | 1525 | (when unicode-category-table |
| 1526 | (map-char-table | 1526 | (map-char-table |
| 1527 | #'(lambda (char category) | 1527 | (lambda (char category) |
| 1528 | (if (eq category 'Cf) | 1528 | (if (eq category 'Cf) |
| 1529 | (let ((this-method method) | 1529 | (let ((this-method method) |
| 1530 | from to) | 1530 | from to) |
| 1531 | (if (consp char) | 1531 | (if (consp char) |
| 1532 | (setq from (car char) to (cdr char)) | 1532 | (setq from (car char) to (cdr char)) |
| 1533 | (setq from char to char)) | 1533 | (setq from char to char)) |
| 1534 | (while (<= from to) | 1534 | (while (<= from to) |
| 1535 | (when (/= from #xAD) | 1535 | (when (/= from #xAD) |
| 1536 | (if (eq method 'acronym) | 1536 | (if (eq method 'acronym) |
| 1537 | (setq this-method | 1537 | (setq this-method |
| 1538 | (aref char-acronym-table from))) | 1538 | (aref char-acronym-table from))) |
| 1539 | (set-char-table-range glyphless-char-display | 1539 | (set-char-table-range glyphless-char-display |
| 1540 | from this-method)) | 1540 | from this-method)) |
| 1541 | (setq from (1+ from)))))) | 1541 | (setq from (1+ from)))))) |
| 1542 | unicode-category-table))) | 1542 | unicode-category-table))) |
| 1543 | ((eq target 'no-font) | 1543 | ((eq target 'no-font) |
| 1544 | (set-char-table-extra-slot glyphless-char-display 0 method)) | 1544 | (set-char-table-extra-slot glyphless-char-display 0 method)) |
diff --git a/lisp/international/fontset.el b/lisp/international/fontset.el index 8f0f263dcce..3deaff96774 100644 --- a/lisp/international/fontset.el +++ b/lisp/international/fontset.el | |||
| @@ -497,37 +497,37 @@ | |||
| 497 | (:registry "iso10646-1")))) | 497 | (:registry "iso10646-1")))) |
| 498 | (cjk-table (make-char-table nil)) | 498 | (cjk-table (make-char-table nil)) |
| 499 | (script-coverage | 499 | (script-coverage |
| 500 | #'(lambda (script) | 500 | (lambda (script) |
| 501 | (let ((coverage)) | 501 | (let ((coverage)) |
| 502 | (map-char-table | 502 | (map-char-table |
| 503 | #'(lambda (range val) | 503 | (lambda (range val) |
| 504 | (when (eq val script) | 504 | (when (eq val script) |
| 505 | (if (consp range) | 505 | (if (consp range) |
| 506 | (setq range (cons (car range) (cdr range)))) | 506 | (setq range (cons (car range) (cdr range)))) |
| 507 | (push range coverage))) | 507 | (push range coverage))) |
| 508 | char-script-table) | 508 | char-script-table) |
| 509 | coverage))) | 509 | coverage))) |
| 510 | (data (list (vconcat (mapcar 'car cjk)))) | 510 | (data (list (vconcat (mapcar 'car cjk)))) |
| 511 | (i 0)) | 511 | (i 0)) |
| 512 | (dolist (elt cjk) | 512 | (dolist (elt cjk) |
| 513 | (let ((mask (ash 1 i))) | 513 | (let ((mask (ash 1 i))) |
| 514 | (map-charset-chars | 514 | (map-charset-chars |
| 515 | #'(lambda (range _arg) | 515 | (lambda (range _arg) |
| 516 | (let ((from (car range)) (to (cdr range))) | 516 | (let ((from (car range)) (to (cdr range))) |
| 517 | (if (< to #x110000) | 517 | (if (< to #x110000) |
| 518 | (while (<= from to) | 518 | (while (<= from to) |
| 519 | (or (memq (aref char-script-table from) | 519 | (or (memq (aref char-script-table from) |
| 520 | '(kana hangul han cjk-misc)) | 520 | '(kana hangul han cjk-misc)) |
| 521 | (aset cjk-table from | 521 | (aset cjk-table from |
| 522 | (logior (or (aref cjk-table from) 0) mask))) | 522 | (logior (or (aref cjk-table from) 0) mask))) |
| 523 | (setq from (1+ from)))))) | 523 | (setq from (1+ from)))))) |
| 524 | (nth 1 elt) nil (nth 2 elt) (nth 3 elt))) | 524 | (nth 1 elt) nil (nth 2 elt) (nth 3 elt))) |
| 525 | (setq i (1+ i))) | 525 | (setq i (1+ i))) |
| 526 | (map-char-table | 526 | (map-char-table |
| 527 | #'(lambda (range val) | 527 | (lambda (range val) |
| 528 | (if (consp range) | 528 | (if (consp range) |
| 529 | (setq range (cons (car range) (cdr range)))) | 529 | (setq range (cons (car range) (cdr range)))) |
| 530 | (push (cons range val) data)) | 530 | (push (cons range val) data)) |
| 531 | cjk-table) | 531 | cjk-table) |
| 532 | (dolist (script scripts) | 532 | (dolist (script scripts) |
| 533 | (dolist (range (funcall script-coverage (car script))) | 533 | (dolist (range (funcall script-coverage (car script))) |
| @@ -1227,7 +1227,7 @@ Done when `mouse-set-font' is called." | |||
| 1227 | (string-match "fontset-auto[0-9]+$" fontset) | 1227 | (string-match "fontset-auto[0-9]+$" fontset) |
| 1228 | (push (list (fontset-plain-name fontset) fontset) l))) | 1228 | (push (list (fontset-plain-name fontset) fontset) l))) |
| 1229 | (cons "Fontset" | 1229 | (cons "Fontset" |
| 1230 | (sort l #'(lambda (x y) (string< (car x) (car y))))))) | 1230 | (sort l (lambda (x y) (string< (car x) (car y))))))) |
| 1231 | 1231 | ||
| 1232 | (declare-function query-fontset "fontset.c" (pattern &optional regexpp)) | 1232 | (declare-function query-fontset "fontset.c" (pattern &optional regexpp)) |
| 1233 | 1233 | ||
diff --git a/lisp/international/latin1-disp.el b/lisp/international/latin1-disp.el index 4b6ef9833e5..b3d6a635b1c 100644 --- a/lisp/international/latin1-disp.el +++ b/lisp/international/latin1-disp.el | |||
| @@ -186,8 +186,8 @@ character set." | |||
| 186 | 'arabic-iso8859-6 | 186 | 'arabic-iso8859-6 |
| 187 | (car (remq 'ascii (get-language-info language | 187 | (car (remq 'ascii (get-language-info language |
| 188 | 'charset)))))) | 188 | 'charset)))))) |
| 189 | (map-charset-chars #'(lambda (range _arg) | 189 | (map-charset-chars (lambda (range _arg) |
| 190 | (standard-display-default (car range) (cdr range))) | 190 | (standard-display-default (car range) (cdr range))) |
| 191 | charset)) | 191 | charset)) |
| 192 | (sit-for 0)) | 192 | (sit-for 0)) |
| 193 | 193 | ||
diff --git a/lisp/international/mule-cmds.el b/lisp/international/mule-cmds.el index bf0df6f971d..578d97bcc0a 100644 --- a/lisp/international/mule-cmds.el +++ b/lisp/international/mule-cmds.el | |||
| @@ -679,18 +679,18 @@ DEFAULT is the coding system to use by default in the query." | |||
| 679 | ;; ((CODING (POS . CHAR) (POS . CHAR) ...) ...) | 679 | ;; ((CODING (POS . CHAR) (POS . CHAR) ...) ...) |
| 680 | (if unsafe | 680 | (if unsafe |
| 681 | (setq unsafe | 681 | (setq unsafe |
| 682 | (mapcar #'(lambda (coding) | 682 | (mapcar (lambda (coding) |
| 683 | (cons coding | 683 | (cons coding |
| 684 | (if (stringp from) | 684 | (if (stringp from) |
| 685 | (mapcar #'(lambda (pos) | 685 | (mapcar (lambda (pos) |
| 686 | (cons pos (aref from pos))) | 686 | (cons pos (aref from pos))) |
| 687 | (unencodable-char-position | 687 | (unencodable-char-position |
| 688 | 0 (length from) coding | 688 | 0 (length from) coding |
| 689 | 11 from)) | 689 | 11 from)) |
| 690 | (mapcar #'(lambda (pos) | 690 | (mapcar (lambda (pos) |
| 691 | (cons pos (char-after pos))) | 691 | (cons pos (char-after pos))) |
| 692 | (unencodable-char-position | 692 | (unencodable-char-position |
| 693 | from to coding 11))))) | 693 | from to coding 11))))) |
| 694 | unsafe))) | 694 | unsafe))) |
| 695 | 695 | ||
| 696 | (setq codings (sanitize-coding-system-list codings)) | 696 | (setq codings (sanitize-coding-system-list codings)) |
| @@ -744,19 +744,19 @@ e.g., for sending an email message.\n ") | |||
| 744 | (insert (format " %s cannot encode these:" (car coding))) | 744 | (insert (format " %s cannot encode these:" (car coding))) |
| 745 | (let ((i 0) | 745 | (let ((i 0) |
| 746 | (func1 | 746 | (func1 |
| 747 | #'(lambda (bufname pos) | 747 | (lambda (bufname pos) |
| 748 | (when (buffer-live-p (get-buffer bufname)) | 748 | (when (buffer-live-p (get-buffer bufname)) |
| 749 | (pop-to-buffer bufname) | 749 | (pop-to-buffer bufname) |
| 750 | (goto-char pos)))) | 750 | (goto-char pos)))) |
| 751 | (func2 | 751 | (func2 |
| 752 | #'(lambda (bufname pos coding) | 752 | (lambda (bufname pos coding) |
| 753 | (when (buffer-live-p (get-buffer bufname)) | 753 | (when (buffer-live-p (get-buffer bufname)) |
| 754 | (pop-to-buffer bufname) | 754 | (pop-to-buffer bufname) |
| 755 | (if (< (point) pos) | 755 | (if (< (point) pos) |
| 756 | (goto-char pos) | 756 | (goto-char pos) |
| 757 | (forward-char 1) | 757 | (forward-char 1) |
| 758 | (search-unencodable-char coding) | 758 | (search-unencodable-char coding) |
| 759 | (forward-char -1)))))) | 759 | (forward-char -1)))))) |
| 760 | (dolist (elt (cdr coding)) | 760 | (dolist (elt (cdr coding)) |
| 761 | (insert " ") | 761 | (insert " ") |
| 762 | (if (stringp from) | 762 | (if (stringp from) |
diff --git a/lisp/international/mule-diag.el b/lisp/international/mule-diag.el index a0063c8dbb6..2d3cd25b4a4 100644 --- a/lisp/international/mule-diag.el +++ b/lisp/international/mule-diag.el | |||
| @@ -45,8 +45,8 @@ | |||
| 45 | (define-button-type 'sort-listed-character-sets | 45 | (define-button-type 'sort-listed-character-sets |
| 46 | 'help-echo (purecopy "mouse-2, RET: sort on this column") | 46 | 'help-echo (purecopy "mouse-2, RET: sort on this column") |
| 47 | 'face 'bold | 47 | 'face 'bold |
| 48 | 'action #'(lambda (button) | 48 | 'action (lambda (button) |
| 49 | (sort-listed-character-sets (button-get button 'sort-key)))) | 49 | (sort-listed-character-sets (button-get button 'sort-key)))) |
| 50 | 50 | ||
| 51 | (define-button-type 'list-charset-chars | 51 | (define-button-type 'list-charset-chars |
| 52 | :supertype 'help-xref | 52 | :supertype 'help-xref |
| @@ -1172,12 +1172,12 @@ The default is 20. If LIMIT is negative, do not limit the listing." | |||
| 1172 | (if (or (vectorp elt) (listp elt)) | 1172 | (if (or (vectorp elt) (listp elt)) |
| 1173 | (let ((i 0)) | 1173 | (let ((i 0)) |
| 1174 | (catch 'tag | 1174 | (catch 'tag |
| 1175 | (mapc #'(lambda (x) | 1175 | (mapc (lambda (x) |
| 1176 | (setq i (1+ i)) | 1176 | (setq i (1+ i)) |
| 1177 | (when (= i limit) | 1177 | (when (= i limit) |
| 1178 | (insert " ...\n") | 1178 | (insert " ...\n") |
| 1179 | (throw 'tag nil)) | 1179 | (throw 'tag nil)) |
| 1180 | (insert (format " %s\n" x))) | 1180 | (insert (format " %s\n" x))) |
| 1181 | elt))) | 1181 | elt))) |
| 1182 | (insert (format " %s\n" elt))))))) | 1182 | (insert (format " %s\n" elt))))))) |
| 1183 | 1183 | ||
diff --git a/lisp/international/mule.el b/lisp/international/mule.el index 91d18c34295..9cd38afd8be 100644 --- a/lisp/international/mule.el +++ b/lisp/international/mule.el | |||
| @@ -32,7 +32,7 @@ | |||
| 32 | 32 | ||
| 33 | (defconst mule-version "6.0 (HANACHIRUSATO)" "\ | 33 | (defconst mule-version "6.0 (HANACHIRUSATO)" "\ |
| 34 | Version number and name of this version of MULE (multilingual environment).") | 34 | Version number and name of this version of MULE (multilingual environment).") |
| 35 | (make-obsolete-variable 'mule-version nil "28.1") | 35 | (make-obsolete-variable 'mule-version 'emacs-version "28.1") |
| 36 | 36 | ||
| 37 | (defconst mule-version-date "2003.9.1" "\ | 37 | (defconst mule-version-date "2003.9.1" "\ |
| 38 | Distribution date of this version of MULE (multilingual environment).") | 38 | Distribution date of this version of MULE (multilingual environment).") |
| @@ -491,27 +491,27 @@ per-character basis, this may not be accurate." | |||
| 491 | (cond | 491 | (cond |
| 492 | ((listp cs-list) | 492 | ((listp cs-list) |
| 493 | (catch 'tag | 493 | (catch 'tag |
| 494 | (mapc #'(lambda (charset) | 494 | (mapc (lambda (charset) |
| 495 | (if (encode-char char charset) | 495 | (if (encode-char char charset) |
| 496 | (throw 'tag charset))) | 496 | (throw 'tag charset))) |
| 497 | cs-list) | 497 | cs-list) |
| 498 | nil)) | 498 | nil)) |
| 499 | ((eq cs-list 'iso-2022) | 499 | ((eq cs-list 'iso-2022) |
| 500 | (catch 'tag2 | 500 | (catch 'tag2 |
| 501 | (mapc #'(lambda (charset) | 501 | (mapc (lambda (charset) |
| 502 | (if (and (plist-get (charset-plist charset) | 502 | (if (and (plist-get (charset-plist charset) |
| 503 | :iso-final-char) | 503 | :iso-final-char) |
| 504 | (encode-char char charset)) | 504 | (encode-char char charset)) |
| 505 | (throw 'tag2 charset))) | 505 | (throw 'tag2 charset))) |
| 506 | charset-list) | 506 | charset-list) |
| 507 | nil)) | 507 | nil)) |
| 508 | ((eq cs-list 'emacs-mule) | 508 | ((eq cs-list 'emacs-mule) |
| 509 | (catch 'tag3 | 509 | (catch 'tag3 |
| 510 | (mapc #'(lambda (charset) | 510 | (mapc (lambda (charset) |
| 511 | (if (and (plist-get (charset-plist charset) | 511 | (if (and (plist-get (charset-plist charset) |
| 512 | :emacs-mule-id) | 512 | :emacs-mule-id) |
| 513 | (encode-char char charset)) | 513 | (encode-char char charset)) |
| 514 | (throw 'tag3 charset))) | 514 | (throw 'tag3 charset))) |
| 515 | charset-list) | 515 | charset-list) |
| 516 | nil))))))))))) | 516 | nil))))))))))) |
| 517 | 517 | ||
diff --git a/lisp/international/quail.el b/lisp/international/quail.el index 87a905045d4..fff06deee88 100644 --- a/lisp/international/quail.el +++ b/lisp/international/quail.el | |||
| @@ -728,9 +728,9 @@ Available types are listed in the variable `quail-keyboard-layout-alist'." | |||
| 728 | :type (cons 'choice (mapcar (lambda (elt) | 728 | :type (cons 'choice (mapcar (lambda (elt) |
| 729 | (list 'const (car elt))) | 729 | (list 'const (car elt))) |
| 730 | quail-keyboard-layout-alist)) | 730 | quail-keyboard-layout-alist)) |
| 731 | :set #'(lambda (symbol value) | 731 | :set (lambda (symbol value) |
| 732 | (quail-update-keyboard-layout value) | 732 | (quail-update-keyboard-layout value) |
| 733 | (set symbol value))) | 733 | (set symbol value))) |
| 734 | 734 | ||
| 735 | ;;;###autoload | 735 | ;;;###autoload |
| 736 | (defun quail-set-keyboard-layout (kbd-type) | 736 | (defun quail-set-keyboard-layout (kbd-type) |
| @@ -1571,12 +1571,12 @@ with more keys." | |||
| 1571 | (let (char) | 1571 | (let (char) |
| 1572 | (if (stringp quail-current-str) | 1572 | (if (stringp quail-current-str) |
| 1573 | (catch 'tag | 1573 | (catch 'tag |
| 1574 | (mapc #'(lambda (ch) | 1574 | (mapc (lambda (ch) |
| 1575 | (when (/= (unibyte-char-to-multibyte | 1575 | (when (/= (unibyte-char-to-multibyte |
| 1576 | (multibyte-char-to-unibyte ch)) | 1576 | (multibyte-char-to-unibyte ch)) |
| 1577 | ch) | 1577 | ch) |
| 1578 | (setq char ch) | 1578 | (setq char ch) |
| 1579 | (throw 'tag nil))) | 1579 | (throw 'tag nil))) |
| 1580 | quail-current-str)) | 1580 | quail-current-str)) |
| 1581 | (if (/= (unibyte-char-to-multibyte | 1581 | (if (/= (unibyte-char-to-multibyte |
| 1582 | (multibyte-char-to-unibyte quail-current-str)) | 1582 | (multibyte-char-to-unibyte quail-current-str)) |
| @@ -2827,19 +2827,19 @@ If CHAR is an ASCII character and can be input by typing itself, return t." | |||
| 2827 | (key-list nil)) | 2827 | (key-list nil)) |
| 2828 | (if (consp decode-map) | 2828 | (if (consp decode-map) |
| 2829 | (let ((str (string char))) | 2829 | (let ((str (string char))) |
| 2830 | (mapc #'(lambda (elt) | 2830 | (mapc (lambda (elt) |
| 2831 | (if (string= str (car elt)) | 2831 | (if (string= str (car elt)) |
| 2832 | (setq key-list (cons (cdr elt) key-list)))) | 2832 | (setq key-list (cons (cdr elt) key-list)))) |
| 2833 | (cdr decode-map))) | 2833 | (cdr decode-map))) |
| 2834 | (let ((key-head (aref decode-map char))) | 2834 | (let ((key-head (aref decode-map char))) |
| 2835 | (if (stringp key-head) | 2835 | (if (stringp key-head) |
| 2836 | (setq key-list (quail-find-key1 | 2836 | (setq key-list (quail-find-key1 |
| 2837 | (quail-lookup-key key-head nil t) | 2837 | (quail-lookup-key key-head nil t) |
| 2838 | key-head char nil)) | 2838 | key-head char nil)) |
| 2839 | (mapc #'(lambda (elt) | 2839 | (mapc (lambda (elt) |
| 2840 | (setq key-list | 2840 | (setq key-list |
| 2841 | (quail-find-key1 | 2841 | (quail-find-key1 |
| 2842 | (quail-lookup-key elt nil t) elt char key-list))) | 2842 | (quail-lookup-key elt nil t) elt char key-list))) |
| 2843 | key-head)))) | 2843 | key-head)))) |
| 2844 | (or key-list | 2844 | (or key-list |
| 2845 | (and (< char 128) | 2845 | (and (< char 128) |
diff --git a/lisp/international/titdic-cnv.el b/lisp/international/titdic-cnv.el index 64d66443760..ccb4c8390bb 100644 --- a/lisp/international/titdic-cnv.el +++ b/lisp/international/titdic-cnv.el | |||
| @@ -781,7 +781,7 @@ To get complete usage, invoke \"emacs -batch -f batch-titdic-convert -h\"." | |||
| 781 | (if val (setq trans (concat val trans))) | 781 | (if val (setq trans (concat val trans))) |
| 782 | (puthash key trans table) | 782 | (puthash key trans table) |
| 783 | (forward-line 1))) | 783 | (forward-line 1))) |
| 784 | (maphash #'(lambda (key val) (setq dic (cons (cons key val) dic))) | 784 | (maphash (lambda (key val) (setq dic (cons (cons key val) dic))) |
| 785 | table))) | 785 | table))) |
| 786 | (setq dic (sort dic (lambda (x y) (string< (car x ) (car y))))) | 786 | (setq dic (sort dic (lambda (x y) (string< (car x ) (car y))))) |
| 787 | (dolist (elt dic) | 787 | (dolist (elt dic) |
| @@ -931,18 +931,18 @@ method `chinese-tonepy' with which you must specify tones by digits | |||
| 931 | (if val (setq trans (vconcat val trans))) | 931 | (if val (setq trans (vconcat val trans))) |
| 932 | (puthash key trans table) | 932 | (puthash key trans table) |
| 933 | (forward-line 1)) | 933 | (forward-line 1)) |
| 934 | (maphash #'(lambda (key trans) | 934 | (maphash (lambda (key trans) |
| 935 | (let ((len (length trans)) | 935 | (let ((len (length trans)) |
| 936 | i) | 936 | i) |
| 937 | (if (and (= len 1) (= (length (aref trans 0)) 1)) | 937 | (if (and (= len 1) (= (length (aref trans 0)) 1)) |
| 938 | (setq trans (aref trans 0)) | 938 | (setq trans (aref trans 0)) |
| 939 | (setq i 0) | 939 | (setq i 0) |
| 940 | (while (and (< i len) | 940 | (while (and (< i len) |
| 941 | (= (length (aref trans i)) 1)) | 941 | (= (length (aref trans i)) 1)) |
| 942 | (setq i (1+ i))) | 942 | (setq i (1+ i))) |
| 943 | (if (= i len) | 943 | (if (= i len) |
| 944 | (setq trans (mapconcat #'identity trans ""))))) | 944 | (setq trans (mapconcat #'identity trans ""))))) |
| 945 | (setq dic (cons (cons key trans) dic))) | 945 | (setq dic (cons (cons key trans) dic))) |
| 946 | table))) | 946 | table))) |
| 947 | (setq dic (sort dic (lambda (x y) (string< (car x) (car y))))) | 947 | (setq dic (sort dic (lambda (x y) (string< (car x) (car y))))) |
| 948 | (goto-char (point-max)) | 948 | (goto-char (point-max)) |
diff --git a/lisp/isearchb.el b/lisp/isearchb.el index 3713879e3b6..67020b76ecb 100644 --- a/lisp/isearchb.el +++ b/lisp/isearchb.el | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | ;;; isearchb --- a marriage between iswitchb and isearch | 1 | ;;; isearchb.el --- a marriage between iswitchb and isearch -*- lexical-binding: t -*- |
| 2 | 2 | ||
| 3 | ;; Copyright (C) 2004-2021 Free Software Foundation, Inc. | 3 | ;; Copyright (C) 2004-2021 Free Software Foundation, Inc. |
| 4 | 4 | ||
| @@ -89,13 +89,11 @@ | |||
| 89 | "Number of idle seconds before isearchb turns itself off. | 89 | "Number of idle seconds before isearchb turns itself off. |
| 90 | If nil, don't use a timeout." | 90 | If nil, don't use a timeout." |
| 91 | :type '(choice (integer :tag "Seconds") | 91 | :type '(choice (integer :tag "Seconds") |
| 92 | (const :tag "Disable" nil)) | 92 | (const :tag "Disable" nil))) |
| 93 | :group 'isearchb) | ||
| 94 | 93 | ||
| 95 | (defcustom isearchb-show-completions t | 94 | (defcustom isearchb-show-completions t |
| 96 | "If non-nil, show possible completions in the minibuffer." | 95 | "If non-nil, show possible completions in the minibuffer." |
| 97 | :type 'boolean | 96 | :type 'boolean) |
| 98 | :group 'isearchb) | ||
| 99 | 97 | ||
| 100 | (defvar isearchb-start-buffer nil) | 98 | (defvar isearchb-start-buffer nil) |
| 101 | (defvar isearchb-last-buffer nil) | 99 | (defvar isearchb-last-buffer nil) |
diff --git a/lisp/ldefs-boot.el b/lisp/ldefs-boot.el index c9210c62514..412751bf450 100644 --- a/lisp/ldefs-boot.el +++ b/lisp/ldefs-boot.el | |||
| @@ -477,31 +477,31 @@ With value nil, inhibit any automatic allout-mode activation.") | |||
| 477 | 477 | ||
| 478 | (custom-autoload 'allout-auto-activation "allout" nil) | 478 | (custom-autoload 'allout-auto-activation "allout" nil) |
| 479 | 479 | ||
| 480 | (put 'allout-use-hanging-indents 'safe-local-variable 'booleanp) | 480 | (put 'allout-use-hanging-indents 'safe-local-variable #'booleanp) |
| 481 | 481 | ||
| 482 | (put 'allout-reindent-bodies 'safe-local-variable (lambda (x) (memq x '(nil t text force)))) | 482 | (put 'allout-reindent-bodies 'safe-local-variable (lambda (x) (memq x '(nil t text force)))) |
| 483 | 483 | ||
| 484 | (put 'allout-show-bodies 'safe-local-variable 'booleanp) | 484 | (put 'allout-show-bodies 'safe-local-variable #'booleanp) |
| 485 | 485 | ||
| 486 | (put 'allout-header-prefix 'safe-local-variable 'stringp) | 486 | (put 'allout-header-prefix 'safe-local-variable #'stringp) |
| 487 | 487 | ||
| 488 | (put 'allout-primary-bullet 'safe-local-variable 'stringp) | 488 | (put 'allout-primary-bullet 'safe-local-variable #'stringp) |
| 489 | 489 | ||
| 490 | (put 'allout-plain-bullets-string 'safe-local-variable 'stringp) | 490 | (put 'allout-plain-bullets-string 'safe-local-variable #'stringp) |
| 491 | 491 | ||
| 492 | (put 'allout-distinctive-bullets-string 'safe-local-variable 'stringp) | 492 | (put 'allout-distinctive-bullets-string 'safe-local-variable #'stringp) |
| 493 | 493 | ||
| 494 | (put 'allout-use-mode-specific-leader 'safe-local-variable (lambda (x) (or (memq x '(t nil allout-mode-leaders comment-start)) (stringp x)))) | 494 | (put 'allout-use-mode-specific-leader 'safe-local-variable (lambda (x) (or (memq x '(t nil allout-mode-leaders comment-start)) (stringp x)))) |
| 495 | 495 | ||
| 496 | (put 'allout-old-style-prefixes 'safe-local-variable 'booleanp) | 496 | (put 'allout-old-style-prefixes 'safe-local-variable #'booleanp) |
| 497 | 497 | ||
| 498 | (put 'allout-stylish-prefixes 'safe-local-variable 'booleanp) | 498 | (put 'allout-stylish-prefixes 'safe-local-variable #'booleanp) |
| 499 | 499 | ||
| 500 | (put 'allout-numbered-bullet 'safe-local-variable 'string-or-null-p) | 500 | (put 'allout-numbered-bullet 'safe-local-variable #'string-or-null-p) |
| 501 | 501 | ||
| 502 | (put 'allout-file-xref-bullet 'safe-local-variable 'string-or-null-p) | 502 | (put 'allout-file-xref-bullet 'safe-local-variable #'string-or-null-p) |
| 503 | 503 | ||
| 504 | (put 'allout-presentation-padding 'safe-local-variable 'integerp) | 504 | (put 'allout-presentation-padding 'safe-local-variable #'integerp) |
| 505 | 505 | ||
| 506 | (put 'allout-layout 'safe-local-variable (lambda (x) (or (numberp x) (listp x) (memq x '(: * + -))))) | 506 | (put 'allout-layout 'safe-local-variable (lambda (x) (or (numberp x) (listp x) (memq x '(: * + -))))) |
| 507 | 507 | ||
| @@ -784,7 +784,7 @@ OPEN: A TOPIC that is not CLOSED, though its OFFSPRING or BODY may be. | |||
| 784 | 784 | ||
| 785 | \(fn &optional ARG)" t nil) | 785 | \(fn &optional ARG)" t nil) |
| 786 | 786 | ||
| 787 | (defalias 'outlinify-sticky 'outlineify-sticky) | 787 | (defalias 'outlinify-sticky #'outlineify-sticky) |
| 788 | 788 | ||
| 789 | (autoload 'outlineify-sticky "allout" "\ | 789 | (autoload 'outlineify-sticky "allout" "\ |
| 790 | Activate outline mode and establish file var so it is started subsequently. | 790 | Activate outline mode and establish file var so it is started subsequently. |
| @@ -827,7 +827,7 @@ See `allout-widgets-mode' for allout widgets mode features.") | |||
| 827 | 827 | ||
| 828 | (custom-autoload 'allout-widgets-auto-activation "allout-widgets" nil) | 828 | (custom-autoload 'allout-widgets-auto-activation "allout-widgets" nil) |
| 829 | 829 | ||
| 830 | (put 'allout-widgets-mode-inhibit 'safe-local-variable 'booleanp) | 830 | (put 'allout-widgets-mode-inhibit 'safe-local-variable #'booleanp) |
| 831 | 831 | ||
| 832 | (autoload 'allout-widgets-mode "allout-widgets" "\ | 832 | (autoload 'allout-widgets-mode "allout-widgets" "\ |
| 833 | Toggle Allout Widgets mode. | 833 | Toggle Allout Widgets mode. |
| @@ -1161,11 +1161,11 @@ Returns list of symbols and documentation found. | |||
| 1161 | (autoload 'archive-mode "arc-mode" "\ | 1161 | (autoload 'archive-mode "arc-mode" "\ |
| 1162 | Major mode for viewing an archive file in a dired-like way. | 1162 | Major mode for viewing an archive file in a dired-like way. |
| 1163 | You can move around using the usual cursor motion commands. | 1163 | You can move around using the usual cursor motion commands. |
| 1164 | Letters no longer insert themselves. | 1164 | Letters no longer insert themselves.\\<archive-mode-map> |
| 1165 | Type `e' to pull a file out of the archive and into its own buffer; | 1165 | Type \\[archive-extract] to pull a file out of the archive and into its own buffer; |
| 1166 | or click mouse-2 on the file's line in the archive mode buffer. | 1166 | or click mouse-2 on the file's line in the archive mode buffer. |
| 1167 | 1167 | ||
| 1168 | If you edit a sub-file of this archive (as with the `e' command) and | 1168 | If you edit a sub-file of this archive (as with the \\[archive-extract] command) and |
| 1169 | save it, the contents of that buffer will be saved back into the | 1169 | save it, the contents of that buffer will be saved back into the |
| 1170 | archive. | 1170 | archive. |
| 1171 | 1171 | ||
| @@ -1539,7 +1539,7 @@ ENTRY is the name of a password-store entry. | |||
| 1539 | The key used to retrieve the password is the symbol `secret'. | 1539 | The key used to retrieve the password is the symbol `secret'. |
| 1540 | 1540 | ||
| 1541 | The convention used as the format for a password-store file is | 1541 | The convention used as the format for a password-store file is |
| 1542 | the following (see http://www.passwordstore.org/#organization): | 1542 | the following (see https://www.passwordstore.org/#organization): |
| 1543 | 1543 | ||
| 1544 | secret | 1544 | secret |
| 1545 | key1: value1 | 1545 | key1: value1 |
| @@ -1995,6 +1995,20 @@ seconds. | |||
| 1995 | ;;;;;; 0 0)) | 1995 | ;;;;;; 0 0)) |
| 1996 | ;;; Generated autoloads from emacs-lisp/benchmark.el | 1996 | ;;; Generated autoloads from emacs-lisp/benchmark.el |
| 1997 | 1997 | ||
| 1998 | (autoload 'benchmark-call "benchmark" "\ | ||
| 1999 | Measure the run time of calling FUNC a number REPETITIONS of times. | ||
| 2000 | The result is a list (TIME GC GCTIME) | ||
| 2001 | where TIME is the total time it took, in seconds. | ||
| 2002 | GCTIME is the amount of time that was spent in the GC | ||
| 2003 | and GC is the number of times the GC was called. | ||
| 2004 | |||
| 2005 | REPETITIONS can also be a floating point number, in which case it | ||
| 2006 | specifies a minimum number of seconds that the benchmark execution | ||
| 2007 | should take. In that case the return value is prepended with the | ||
| 2008 | number of repetitions actually used. | ||
| 2009 | |||
| 2010 | \(fn FUNC &optional REPETITIONS)" nil nil) | ||
| 2011 | |||
| 1998 | (autoload 'benchmark-run "benchmark" "\ | 2012 | (autoload 'benchmark-run "benchmark" "\ |
| 1999 | Time execution of FORMS. | 2013 | Time execution of FORMS. |
| 2000 | If REPETITIONS is supplied as a number, run FORMS that many times, | 2014 | If REPETITIONS is supplied as a number, run FORMS that many times, |
| @@ -2024,6 +2038,8 @@ Interactively, REPETITIONS is taken from the prefix arg, and | |||
| 2024 | the command prompts for the form to benchmark. | 2038 | the command prompts for the form to benchmark. |
| 2025 | For non-interactive use see also `benchmark-run' and | 2039 | For non-interactive use see also `benchmark-run' and |
| 2026 | `benchmark-run-compiled'. | 2040 | `benchmark-run-compiled'. |
| 2041 | FORM can also be a function in which case we measure the time it takes | ||
| 2042 | to call it without any argument. | ||
| 2027 | 2043 | ||
| 2028 | \(fn REPETITIONS FORM)" t nil) | 2044 | \(fn REPETITIONS FORM)" t nil) |
| 2029 | 2045 | ||
| @@ -2035,7 +2051,7 @@ The return value is the value of the final form in BODY. | |||
| 2035 | 2051 | ||
| 2036 | (function-put 'benchmark-progn 'lisp-indent-function '0) | 2052 | (function-put 'benchmark-progn 'lisp-indent-function '0) |
| 2037 | 2053 | ||
| 2038 | (register-definition-prefixes "benchmark" '("benchmark-elapse")) | 2054 | (register-definition-prefixes "benchmark" '("benchmark-")) |
| 2039 | 2055 | ||
| 2040 | ;;;*** | 2056 | ;;;*** |
| 2041 | 2057 | ||
| @@ -4794,7 +4810,7 @@ element to judge if that element should be excluded from the list. | |||
| 4794 | The buffer is left in Command History mode." t nil) | 4810 | The buffer is left in Command History mode." t nil) |
| 4795 | 4811 | ||
| 4796 | (autoload 'command-history "chistory" "\ | 4812 | (autoload 'command-history "chistory" "\ |
| 4797 | Examine commands from `command-history' in a buffer. | 4813 | Examine commands from variable `command-history' in a buffer. |
| 4798 | The number of commands listed is controlled by `list-command-history-max'. | 4814 | The number of commands listed is controlled by `list-command-history-max'. |
| 4799 | The command history is filtered by `list-command-history-filter' if non-nil. | 4815 | The command history is filtered by `list-command-history-filter' if non-nil. |
| 4800 | Use \\<command-history-map>\\[command-history-repeat] to repeat the command on the current line. | 4816 | Use \\<command-history-map>\\[command-history-repeat] to repeat the command on the current line. |
| @@ -4892,8 +4908,12 @@ all methods of NAME have to use the same set of arguments for dispatch. | |||
| 4892 | Each dispatch argument and TYPE are specified in ARGS where the corresponding | 4908 | Each dispatch argument and TYPE are specified in ARGS where the corresponding |
| 4893 | formal argument appears as (VAR TYPE) rather than just VAR. | 4909 | formal argument appears as (VAR TYPE) rather than just VAR. |
| 4894 | 4910 | ||
| 4895 | The optional second argument QUALIFIER is a specifier that | 4911 | The optional EXTRA element, on the form `:extra STRING', allows |
| 4896 | modifies how the method is combined with other methods, including: | 4912 | you to add more methods for the same specializers and qualifiers. |
| 4913 | These are distinguished by STRING. | ||
| 4914 | |||
| 4915 | The optional argument QUALIFIER is a specifier that modifies how | ||
| 4916 | the method is combined with other methods, including: | ||
| 4897 | :before - Method will be called before the primary | 4917 | :before - Method will be called before the primary |
| 4898 | :after - Method will be called after the primary | 4918 | :after - Method will be called after the primary |
| 4899 | :around - Method will be called around everything else | 4919 | :around - Method will be called around everything else |
| @@ -4910,9 +4930,9 @@ method to be applicable. | |||
| 4910 | The set of acceptable TYPEs (also called \"specializers\") is defined | 4930 | The set of acceptable TYPEs (also called \"specializers\") is defined |
| 4911 | \(and can be extended) by the various methods of `cl-generic-generalizers'. | 4931 | \(and can be extended) by the various methods of `cl-generic-generalizers'. |
| 4912 | 4932 | ||
| 4913 | \(fn NAME [QUALIFIER] ARGS &rest [DOCSTRING] BODY)" nil t) | 4933 | \(fn NAME [EXTRA] [QUALIFIER] ARGS &rest [DOCSTRING] BODY)" nil t) |
| 4914 | 4934 | ||
| 4915 | (function-put 'cl-defmethod 'doc-string-elt '3) | 4935 | (function-put 'cl-defmethod 'doc-string-elt 'cl--defmethod-doc-pos) |
| 4916 | 4936 | ||
| 4917 | (function-put 'cl-defmethod 'lisp-indent-function 'defun) | 4937 | (function-put 'cl-defmethod 'lisp-indent-function 'defun) |
| 4918 | 4938 | ||
| @@ -6769,6 +6789,8 @@ If the HANDLER returns a `dbus-error', it is propagated as return message. | |||
| 6769 | 6789 | ||
| 6770 | \(fn EVENT)" t nil) | 6790 | \(fn EVENT)" t nil) |
| 6771 | 6791 | ||
| 6792 | (function-put 'dbus-handle-event 'completion-predicate #'ignore) | ||
| 6793 | |||
| 6772 | (autoload 'dbus-monitor "dbus" "\ | 6794 | (autoload 'dbus-monitor "dbus" "\ |
| 6773 | Invoke `dbus-register-monitor' interactively, and switch to the buffer. | 6795 | Invoke `dbus-register-monitor' interactively, and switch to the buffer. |
| 6774 | BUS is either a Lisp keyword, `:system' or `:session', or a | 6796 | BUS is either a Lisp keyword, `:system' or `:session', or a |
| @@ -10614,7 +10636,7 @@ be invoked for the values of the other parameters. | |||
| 10614 | 10636 | ||
| 10615 | \(fn &key (SERVER (erc-compute-server)) (PORT (erc-compute-port)) (NICK (erc-compute-nick)) PASSWORD (FULL-NAME (erc-compute-full-name)))" t nil) | 10637 | \(fn &key (SERVER (erc-compute-server)) (PORT (erc-compute-port)) (NICK (erc-compute-nick)) PASSWORD (FULL-NAME (erc-compute-full-name)))" t nil) |
| 10616 | 10638 | ||
| 10617 | (defalias 'erc-select 'erc) | 10639 | (defalias 'erc-select #'erc) |
| 10618 | 10640 | ||
| 10619 | (autoload 'erc-tls "erc" "\ | 10641 | (autoload 'erc-tls "erc" "\ |
| 10620 | Interactively select TLS connection parameters and run ERC. | 10642 | Interactively select TLS connection parameters and run ERC. |
| @@ -10737,7 +10759,7 @@ and how to display message. | |||
| 10737 | 10759 | ||
| 10738 | \(fn SELECTOR &optional OUTPUT-BUFFER-NAME MESSAGE-FN)" t nil) | 10760 | \(fn SELECTOR &optional OUTPUT-BUFFER-NAME MESSAGE-FN)" t nil) |
| 10739 | 10761 | ||
| 10740 | (defalias 'ert 'ert-run-tests-interactively) | 10762 | (defalias 'ert #'ert-run-tests-interactively) |
| 10741 | 10763 | ||
| 10742 | (autoload 'ert-describe-test "ert" "\ | 10764 | (autoload 'ert-describe-test "ert" "\ |
| 10743 | Display the documentation for TEST-OR-TEST-NAME (a symbol or ert-test). | 10765 | Display the documentation for TEST-OR-TEST-NAME (a symbol or ert-test). |
| @@ -11948,6 +11970,13 @@ Besides the choice of face, it is the same as `buffer-face-mode'. | |||
| 11948 | 11970 | ||
| 11949 | ;;;*** | 11971 | ;;;*** |
| 11950 | 11972 | ||
| 11973 | ;;;### (autoloads nil "facemenu" "facemenu.el" (0 0 0 0)) | ||
| 11974 | ;;; Generated autoloads from facemenu.el | ||
| 11975 | |||
| 11976 | (register-definition-prefixes "facemenu" '("facemenu-" "list-colors-")) | ||
| 11977 | |||
| 11978 | ;;;*** | ||
| 11979 | |||
| 11951 | ;;;### (autoloads nil "faceup" "emacs-lisp/faceup.el" (0 0 0 0)) | 11980 | ;;;### (autoloads nil "faceup" "emacs-lisp/faceup.el" (0 0 0 0)) |
| 11952 | ;;; Generated autoloads from emacs-lisp/faceup.el | 11981 | ;;; Generated autoloads from emacs-lisp/faceup.el |
| 11953 | (push (purecopy '(faceup 0 0 6)) package--builtin-versions) | 11982 | (push (purecopy '(faceup 0 0 6)) package--builtin-versions) |
| @@ -12212,6 +12241,8 @@ Otherwise, signal a `file-notify-error'. | |||
| 12212 | 12241 | ||
| 12213 | \(fn OBJECT)" t nil) | 12242 | \(fn OBJECT)" t nil) |
| 12214 | 12243 | ||
| 12244 | (function-put 'file-notify-handle-event 'completion-predicate #'ignore) | ||
| 12245 | |||
| 12215 | (register-definition-prefixes "filenotify" '("file-notify-")) | 12246 | (register-definition-prefixes "filenotify" '("file-notify-")) |
| 12216 | 12247 | ||
| 12217 | ;;;*** | 12248 | ;;;*** |
| @@ -12711,7 +12742,6 @@ Change the filter on a `find-lisp-find-dired' buffer to REGEXP. | |||
| 12711 | 12742 | ||
| 12712 | ;;;### (autoloads nil "finder" "finder.el" (0 0 0 0)) | 12743 | ;;;### (autoloads nil "finder" "finder.el" (0 0 0 0)) |
| 12713 | ;;; Generated autoloads from finder.el | 12744 | ;;; Generated autoloads from finder.el |
| 12714 | (push (purecopy '(finder 1 0)) package--builtin-versions) | ||
| 12715 | 12745 | ||
| 12716 | (autoload 'finder-list-keywords "finder" "\ | 12746 | (autoload 'finder-list-keywords "finder" "\ |
| 12717 | Display descriptions of the keywords in the Finder buffer." t nil) | 12747 | Display descriptions of the keywords in the Finder buffer." t nil) |
| @@ -12780,7 +12810,7 @@ lines. | |||
| 12780 | (autoload 'flymake-log "flymake" "\ | 12810 | (autoload 'flymake-log "flymake" "\ |
| 12781 | Log, at level LEVEL, the message MSG formatted with ARGS. | 12811 | Log, at level LEVEL, the message MSG formatted with ARGS. |
| 12782 | LEVEL is passed to `display-warning', which is used to display | 12812 | LEVEL is passed to `display-warning', which is used to display |
| 12783 | the warning. If this form is included in a byte-compiled file, | 12813 | the warning. If this form is included in a file, |
| 12784 | the generated warning contains an indication of the file that | 12814 | the generated warning contains an indication of the file that |
| 12785 | generated it. | 12815 | generated it. |
| 12786 | 12816 | ||
| @@ -14390,15 +14420,15 @@ If FORCE is non-nil, replace the old ones. | |||
| 14390 | Minor mode for providing mailing-list commands. | 14420 | Minor mode for providing mailing-list commands. |
| 14391 | 14421 | ||
| 14392 | If called interactively, toggle `Gnus-Mailing-List mode'. If the | 14422 | If called interactively, toggle `Gnus-Mailing-List mode'. If the |
| 14393 | prefix argument is positive, enable the mode, and if it is zero | 14423 | prefix argument is positive, enable the mode, and if it is zero or |
| 14394 | or negative, disable the mode. | 14424 | negative, disable the mode. |
| 14395 | 14425 | ||
| 14396 | If called from Lisp, toggle the mode if ARG is `toggle'. Enable | 14426 | If called from Lisp, toggle the mode if ARG is `toggle'. Enable the |
| 14397 | the mode if ARG is nil, omitted, or is a positive number. | 14427 | mode if ARG is nil, omitted, or is a positive number. Disable the |
| 14398 | Disable the mode if ARG is a negative number. | 14428 | mode if ARG is a negative number. |
| 14399 | 14429 | ||
| 14400 | The mode's hook is called both when the mode is enabled and when | 14430 | The mode's hook is called both when the mode is enabled and when it is |
| 14401 | it is disabled. | 14431 | disabled. |
| 14402 | 14432 | ||
| 14403 | \\{gnus-mailing-list-mode-map} | 14433 | \\{gnus-mailing-list-mode-map} |
| 14404 | 14434 | ||
| @@ -16840,7 +16870,7 @@ buffers which are visiting a file. | |||
| 16840 | 16870 | ||
| 16841 | (autoload 'ibuffer "ibuffer" "\ | 16871 | (autoload 'ibuffer "ibuffer" "\ |
| 16842 | Begin using Ibuffer to edit a list of buffers. | 16872 | Begin using Ibuffer to edit a list of buffers. |
| 16843 | Type `h' after entering ibuffer for more information. | 16873 | Type \\<ibuffer-mode-map>\\[describe-mode] after entering ibuffer for more information. |
| 16844 | 16874 | ||
| 16845 | All arguments are optional. | 16875 | All arguments are optional. |
| 16846 | OTHER-WINDOW-P says to use another window. | 16876 | OTHER-WINDOW-P says to use another window. |
| @@ -17126,7 +17156,7 @@ The main features of this mode are | |||
| 17126 | Use \\[idlwave-fill-paragraph] to refill a paragraph inside a | 17156 | Use \\[idlwave-fill-paragraph] to refill a paragraph inside a |
| 17127 | comment. The indentation of the second line of the paragraph | 17157 | comment. The indentation of the second line of the paragraph |
| 17128 | relative to the first will be retained. Use | 17158 | relative to the first will be retained. Use |
| 17129 | \\[idlwave-auto-fill-mode] to toggle auto-fill mode for these | 17159 | \\[auto-fill-mode] to toggle auto-fill mode for these |
| 17130 | comments. When the variable `idlwave-fill-comment-line-only' is | 17160 | comments. When the variable `idlwave-fill-comment-line-only' is |
| 17131 | nil, code can also be auto-filled and auto-indented. | 17161 | nil, code can also be auto-filled and auto-indented. |
| 17132 | 17162 | ||
| @@ -18594,25 +18624,6 @@ See Info node `(elisp)Defining Functions' for more details. | |||
| 18594 | 18624 | ||
| 18595 | ;;;*** | 18625 | ;;;*** |
| 18596 | 18626 | ||
| 18597 | ;;;### (autoloads nil "inversion" "cedet/inversion.el" (0 0 0 0)) | ||
| 18598 | ;;; Generated autoloads from cedet/inversion.el | ||
| 18599 | (push (purecopy '(inversion 1 3)) package--builtin-versions) | ||
| 18600 | |||
| 18601 | (autoload 'inversion-require-emacs "inversion" "\ | ||
| 18602 | Declare that you need either EMACS-VER, XEMACS-VER or SXEMACS-ver. | ||
| 18603 | Only checks one based on which kind of Emacs is being run. | ||
| 18604 | |||
| 18605 | This function is obsolete; do this instead: | ||
| 18606 | (when (version<= \"28.1\" emacs-version) ...) | ||
| 18607 | |||
| 18608 | \(fn EMACS-VER XEMACS-VER SXEMACS-VER)" nil nil) | ||
| 18609 | |||
| 18610 | (make-obsolete 'inversion-require-emacs 'nil '"28.1") | ||
| 18611 | |||
| 18612 | (register-definition-prefixes "inversion" '("inversion-")) | ||
| 18613 | |||
| 18614 | ;;;*** | ||
| 18615 | |||
| 18616 | ;;;### (autoloads nil "isearch-x" "international/isearch-x.el" (0 | 18627 | ;;;### (autoloads nil "isearch-x" "international/isearch-x.el" (0 |
| 18617 | ;;;;;; 0 0 0)) | 18628 | ;;;;;; 0 0 0)) |
| 18618 | ;;; Generated autoloads from international/isearch-x.el | 18629 | ;;; Generated autoloads from international/isearch-x.el |
| @@ -19540,13 +19551,13 @@ A major mode to edit GNU ld script files | |||
| 19540 | ;;;;;; (0 0 0 0)) | 19551 | ;;;;;; (0 0 0 0)) |
| 19541 | ;;; Generated autoloads from textmodes/less-css-mode.el | 19552 | ;;; Generated autoloads from textmodes/less-css-mode.el |
| 19542 | 19553 | ||
| 19543 | (put 'less-css-compile-at-save 'safe-local-variable 'booleanp) | 19554 | (put 'less-css-compile-at-save 'safe-local-variable #'booleanp) |
| 19544 | 19555 | ||
| 19545 | (put 'less-css-lessc-options 'safe-local-variable t) | 19556 | (put 'less-css-lessc-options 'safe-local-variable t) |
| 19546 | 19557 | ||
| 19547 | (put 'less-css-output-directory 'safe-local-variable 'stringp) | 19558 | (put 'less-css-output-directory 'safe-local-variable #'stringp) |
| 19548 | 19559 | ||
| 19549 | (put 'less-css-input-file-name 'safe-local-variable 'stringp) | 19560 | (put 'less-css-input-file-name 'safe-local-variable #'stringp) |
| 19550 | (add-to-list 'auto-mode-alist '("\\.less\\'" . less-css-mode)) | 19561 | (add-to-list 'auto-mode-alist '("\\.less\\'" . less-css-mode)) |
| 19551 | 19562 | ||
| 19552 | (autoload 'less-css-mode "less-css-mode" "\ | 19563 | (autoload 'less-css-mode "less-css-mode" "\ |
| @@ -20535,7 +20546,7 @@ Default bookmark handler for Man buffers. | |||
| 20535 | 20546 | ||
| 20536 | ;;;### (autoloads nil "map" "emacs-lisp/map.el" (0 0 0 0)) | 20547 | ;;;### (autoloads nil "map" "emacs-lisp/map.el" (0 0 0 0)) |
| 20537 | ;;; Generated autoloads from emacs-lisp/map.el | 20548 | ;;; Generated autoloads from emacs-lisp/map.el |
| 20538 | (push (purecopy '(map 2 1)) package--builtin-versions) | 20549 | (push (purecopy '(map 3 0)) package--builtin-versions) |
| 20539 | 20550 | ||
| 20540 | (register-definition-prefixes "map" '("map-")) | 20551 | (register-definition-prefixes "map" '("map-")) |
| 20541 | 20552 | ||
| @@ -22087,6 +22098,32 @@ QUALITY can be: | |||
| 22087 | ;;;### (autoloads nil "mwheel" "mwheel.el" (0 0 0 0)) | 22098 | ;;;### (autoloads nil "mwheel" "mwheel.el" (0 0 0 0)) |
| 22088 | ;;; Generated autoloads from mwheel.el | 22099 | ;;; Generated autoloads from mwheel.el |
| 22089 | 22100 | ||
| 22101 | (defcustom mouse-wheel-mode t "\ | ||
| 22102 | Non-nil if Mouse-Wheel mode is enabled. | ||
| 22103 | See the `mouse-wheel-mode' command | ||
| 22104 | for a description of this minor mode. | ||
| 22105 | Setting this variable directly does not take effect; | ||
| 22106 | either customize it (see the info node `Easy Customization') | ||
| 22107 | or call the function `mouse-wheel-mode'." :set #'custom-set-minor-mode :initialize 'custom-initialize-delay :group 'mouse :type 'boolean) | ||
| 22108 | |||
| 22109 | (custom-autoload 'mouse-wheel-mode "mwheel" nil) | ||
| 22110 | |||
| 22111 | (autoload 'mouse-wheel-mode "mwheel" "\ | ||
| 22112 | Toggle mouse wheel support (Mouse Wheel mode). | ||
| 22113 | |||
| 22114 | If called interactively, toggle `Mouse-Wheel mode'. If the prefix | ||
| 22115 | argument is positive, enable the mode, and if it is zero or negative, | ||
| 22116 | disable the mode. | ||
| 22117 | |||
| 22118 | If called from Lisp, toggle the mode if ARG is `toggle'. Enable the | ||
| 22119 | mode if ARG is nil, omitted, or is a positive number. Disable the | ||
| 22120 | mode if ARG is a negative number. | ||
| 22121 | |||
| 22122 | The mode's hook is called both when the mode is enabled and when it is | ||
| 22123 | disabled. | ||
| 22124 | |||
| 22125 | \(fn &optional ARG)" t nil) | ||
| 22126 | |||
| 22090 | (register-definition-prefixes "mwheel" '("mouse-wheel-" "mwheel-")) | 22127 | (register-definition-prefixes "mwheel" '("mouse-wheel-" "mwheel-")) |
| 22091 | 22128 | ||
| 22092 | ;;;*** | 22129 | ;;;*** |
| @@ -22347,7 +22384,7 @@ gnutls-boot (as returned by `gnutls-boot-parameters'). | |||
| 22347 | 22384 | ||
| 22348 | \(fn NAME BUFFER HOST SERVICE &rest PARAMETERS)" nil nil) | 22385 | \(fn NAME BUFFER HOST SERVICE &rest PARAMETERS)" nil nil) |
| 22349 | 22386 | ||
| 22350 | (defalias 'open-protocol-stream 'open-network-stream) | 22387 | (define-obsolete-function-alias 'open-protocol-stream #'open-network-stream "26.1") |
| 22351 | 22388 | ||
| 22352 | (register-definition-prefixes "network-stream" '("network-stream-")) | 22389 | (register-definition-prefixes "network-stream" '("network-stream-")) |
| 22353 | 22390 | ||
| @@ -24041,6 +24078,8 @@ Turning on outline mode calls the value of `text-mode-hook' and then of | |||
| 24041 | `outline-mode-hook', if they are non-nil. | 24078 | `outline-mode-hook', if they are non-nil. |
| 24042 | 24079 | ||
| 24043 | \(fn)" t nil) | 24080 | \(fn)" t nil) |
| 24081 | (put 'outline-minor-mode-cycle 'safe-local-variable 'booleanp) | ||
| 24082 | (put 'outline-minor-mode-highlight 'safe-local-variable 'booleanp) | ||
| 24044 | 24083 | ||
| 24045 | (autoload 'outline-minor-mode "outline" "\ | 24084 | (autoload 'outline-minor-mode "outline" "\ |
| 24046 | Toggle Outline minor mode. | 24085 | Toggle Outline minor mode. |
| @@ -24186,7 +24225,11 @@ directory. | |||
| 24186 | 24225 | ||
| 24187 | (autoload 'package-install-selected-packages "package" "\ | 24226 | (autoload 'package-install-selected-packages "package" "\ |
| 24188 | Ensure packages in `package-selected-packages' are installed. | 24227 | Ensure packages in `package-selected-packages' are installed. |
| 24189 | If some packages are not installed propose to install them." t nil) | 24228 | If some packages are not installed, propose to install them. |
| 24229 | If optional argument NOCONFIRM is non-nil, don't ask for | ||
| 24230 | confirmation to install packages. | ||
| 24231 | |||
| 24232 | \(fn &optional NOCONFIRM)" t nil) | ||
| 24190 | 24233 | ||
| 24191 | (autoload 'package-reinstall "package" "\ | 24234 | (autoload 'package-reinstall "package" "\ |
| 24192 | Reinstall package PKG. | 24235 | Reinstall package PKG. |
| @@ -25898,6 +25941,13 @@ Save the result in `project-list-file' if the list of projects has changed. | |||
| 25898 | 25941 | ||
| 25899 | \(fn PR)" nil nil) | 25942 | \(fn PR)" nil nil) |
| 25900 | 25943 | ||
| 25944 | (autoload 'project-remove-known-project "project" "\ | ||
| 25945 | Remove directory PROJECT-ROOT from the project list. | ||
| 25946 | PROJECT-ROOT is the root directory of a known project listed in | ||
| 25947 | the project list. | ||
| 25948 | |||
| 25949 | \(fn PROJECT-ROOT)" t nil) | ||
| 25950 | |||
| 25901 | (autoload 'project-known-project-roots "project" "\ | 25951 | (autoload 'project-known-project-roots "project" "\ |
| 25902 | Return the list of root directories of all known projects." nil nil) | 25952 | Return the list of root directories of all known projects." nil nil) |
| 25903 | 25953 | ||
| @@ -25906,19 +25956,6 @@ Execute an extended command in project root." t nil) | |||
| 25906 | 25956 | ||
| 25907 | (function-put 'project-execute-extended-command 'interactive-only 'command-execute) | 25957 | (function-put 'project-execute-extended-command 'interactive-only 'command-execute) |
| 25908 | 25958 | ||
| 25909 | (defvar project-switch-commands '((project-find-file "Find file") (project-find-regexp "Find regexp") (project-dired "Dired") (project-vc-dir "VC-Dir") (project-eshell "Eshell")) "\ | ||
| 25910 | Alist mapping commands to descriptions. | ||
| 25911 | Used by `project-switch-project' to construct a dispatch menu of | ||
| 25912 | commands available upon \"switching\" to another project. | ||
| 25913 | |||
| 25914 | Each element is of the form (COMMAND LABEL &optional KEY) where | ||
| 25915 | COMMAND is the command to run when KEY is pressed. LABEL is used | ||
| 25916 | to distinguish the menu entries in the dispatch menu. If KEY is | ||
| 25917 | absent, COMMAND must be bound in `project-prefix-map', and the | ||
| 25918 | key is looked up in that map.") | ||
| 25919 | |||
| 25920 | (custom-autoload 'project-switch-commands "project" t) | ||
| 25921 | |||
| 25922 | (autoload 'project-switch-project "project" "\ | 25959 | (autoload 'project-switch-project "project" "\ |
| 25923 | \"Switch\" to another project by running an Emacs command. | 25960 | \"Switch\" to another project by running an Emacs command. |
| 25924 | The available commands are presented as a dispatch menu | 25961 | The available commands are presented as a dispatch menu |
| @@ -26495,7 +26532,7 @@ Add one translation rule, KEY to TRANSLATION, in the current Quail package. | |||
| 26495 | KEY is a string meaning a sequence of keystrokes to be translated. | 26532 | KEY is a string meaning a sequence of keystrokes to be translated. |
| 26496 | TRANSLATION is a character, a string, a vector, a Quail map, | 26533 | TRANSLATION is a character, a string, a vector, a Quail map, |
| 26497 | a function, or a cons. | 26534 | a function, or a cons. |
| 26498 | It it is a character, it is the sole translation of KEY. | 26535 | If it is a character, it is the sole translation of KEY. |
| 26499 | If it is a string, each character is a candidate for the translation. | 26536 | If it is a string, each character is a candidate for the translation. |
| 26500 | If it is a vector, each element (string or character) is a candidate | 26537 | If it is a vector, each element (string or character) is a candidate |
| 26501 | for the translation. | 26538 | for the translation. |
| @@ -28351,24 +28388,7 @@ For more details, see Info node `(elisp) Extending Rx'. | |||
| 28351 | 28388 | ||
| 28352 | (function-put 'rx-define 'lisp-indent-function 'defun) | 28389 | (function-put 'rx-define 'lisp-indent-function 'defun) |
| 28353 | 28390 | ||
| 28354 | (autoload 'rx--pcase-macroexpander "rx" "\ | 28391 | (eval-and-compile (defun rx--pcase-macroexpander (&rest regexps) "A pattern that matches strings against `rx' REGEXPS in sexp form.\nREGEXPS are interpreted as in `rx'. The pattern matches any\nstring that is a match for REGEXPS, as if by `string-match'.\n\nIn addition to the usual `rx' syntax, REGEXPS can contain the\nfollowing constructs:\n\n (let REF RX...) binds the symbol REF to a submatch that matches\n the regular expressions RX. REF is bound in\n CODE to the string of the submatch or nil, but\n can also be used in `backref'.\n (backref REF) matches whatever the submatch REF matched.\n REF can be a number, as usual, or a name\n introduced by a previous (let REF ...)\n construct." (let* ((rx--pcase-vars nil) (regexp (rx--to-expr (rx--pcase-transform (cons 'seq regexps)))) (nvars (length rx--pcase-vars))) `(and (pred stringp) ,(if (zerop nvars) `(pred (string-match ,regexp)) `(app (lambda (s) (and (string-match ,regexp s) ,(rx--reduce-right (lambda (a b) `(cons ,a ,b)) (mapcar (lambda (i) `(match-string ,i s)) (number-sequence 1 nvars))))) ,(list '\` (rx--reduce-right #'cons (mapcar (lambda (name) (list '\, name)) (reverse rx--pcase-vars)))))))))) |
| 28355 | A pattern that matches strings against `rx' REGEXPS in sexp form. | ||
| 28356 | REGEXPS are interpreted as in `rx'. The pattern matches any | ||
| 28357 | string that is a match for REGEXPS, as if by `string-match'. | ||
| 28358 | |||
| 28359 | In addition to the usual `rx' syntax, REGEXPS can contain the | ||
| 28360 | following constructs: | ||
| 28361 | |||
| 28362 | (let REF RX...) binds the symbol REF to a submatch that matches | ||
| 28363 | the regular expressions RX. REF is bound in | ||
| 28364 | CODE to the string of the submatch or nil, but | ||
| 28365 | can also be used in `backref'. | ||
| 28366 | (backref REF) matches whatever the submatch REF matched. | ||
| 28367 | REF can be a number, as usual, or a name | ||
| 28368 | introduced by a previous (let REF ...) | ||
| 28369 | construct. | ||
| 28370 | |||
| 28371 | \(fn &rest REGEXPS)" nil nil) | ||
| 28372 | 28392 | ||
| 28373 | (define-symbol-prop 'rx--pcase-macroexpander 'edebug-form-spec 'nil) | 28393 | (define-symbol-prop 'rx--pcase-macroexpander 'edebug-form-spec 'nil) |
| 28374 | 28394 | ||
| @@ -28863,14 +28883,6 @@ Major mode for editing Bovine grammars. | |||
| 28863 | 28883 | ||
| 28864 | ;;;*** | 28884 | ;;;*** |
| 28865 | 28885 | ||
| 28866 | ;;;### (autoloads nil "semantic/grammar-wy" "cedet/semantic/grammar-wy.el" | ||
| 28867 | ;;;;;; (0 0 0 0)) | ||
| 28868 | ;;; Generated autoloads from cedet/semantic/grammar-wy.el | ||
| 28869 | |||
| 28870 | (register-definition-prefixes "semantic/grammar-wy" '("semantic-grammar-wy--")) | ||
| 28871 | |||
| 28872 | ;;;*** | ||
| 28873 | |||
| 28874 | ;;;### (autoloads nil "semantic/java" "cedet/semantic/java.el" (0 | 28886 | ;;;### (autoloads nil "semantic/java" "cedet/semantic/java.el" (0 |
| 28875 | ;;;;;; 0 0 0)) | 28887 | ;;;;;; 0 0 0)) |
| 28876 | ;;; Generated autoloads from cedet/semantic/java.el | 28888 | ;;; Generated autoloads from cedet/semantic/java.el |
| @@ -29500,7 +29512,7 @@ or Edit/Text Properties/Face commands. | |||
| 29500 | Pages can have <a name=\"SOMENAME\">named points</a> and can link other points | 29512 | Pages can have <a name=\"SOMENAME\">named points</a> and can link other points |
| 29501 | to them with <a href=\"#SOMENAME\">see also somename</a>. In the same way <a | 29513 | to them with <a href=\"#SOMENAME\">see also somename</a>. In the same way <a |
| 29502 | href=\"URL\">see also URL</a> where URL is a filename relative to current | 29514 | href=\"URL\">see also URL</a> where URL is a filename relative to current |
| 29503 | directory, or absolute as in `http://www.cs.indiana.edu/elisp/w3/docs.html'. | 29515 | directory, or absolute as in `https://www.cs.indiana.edu/elisp/w3/docs.html'. |
| 29504 | 29516 | ||
| 29505 | Images in many formats can be inlined with <img src=\"URL\">. | 29517 | Images in many formats can be inlined with <img src=\"URL\">. |
| 29506 | 29518 | ||
| @@ -31249,7 +31261,7 @@ Major-mode for writing SRecode macros. | |||
| 31249 | 31261 | ||
| 31250 | \(fn)" t nil) | 31262 | \(fn)" t nil) |
| 31251 | 31263 | ||
| 31252 | (defalias 'srt-mode 'srecode-template-mode) | 31264 | (defalias 'srt-mode #'srecode-template-mode) |
| 31253 | 31265 | ||
| 31254 | (register-definition-prefixes "srecode/srt-mode" '("semantic-" "srecode-")) | 31266 | (register-definition-prefixes "srecode/srt-mode" '("semantic-" "srecode-")) |
| 31255 | 31267 | ||
| @@ -31811,7 +31823,7 @@ Move the point under the table as shown below. | |||
| 31811 | +--------------+------+--------------------------------+ | 31823 | +--------------+------+--------------------------------+ |
| 31812 | -!- | 31824 | -!- |
| 31813 | 31825 | ||
| 31814 | Type M-x table-insert-row instead of \\[table-insert-row-column]. \\[table-insert-row-column] does not work | 31826 | Type \\[table-insert-row] instead of \\[table-insert-row-column]. \\[table-insert-row-column] does not work |
| 31815 | when the point is outside of the table. This insertion at | 31827 | when the point is outside of the table. This insertion at |
| 31816 | outside of the table effectively appends a row at the end. | 31828 | outside of the table effectively appends a row at the end. |
| 31817 | 31829 | ||
| @@ -32108,11 +32120,11 @@ HTML: | |||
| 32108 | URL `https://www.w3.org' | 32120 | URL `https://www.w3.org' |
| 32109 | 32121 | ||
| 32110 | LaTeX: | 32122 | LaTeX: |
| 32111 | URL `http://www.maths.tcd.ie/~dwilkins/LaTeXPrimer/Tables.html' | 32123 | URL `https://www.maths.tcd.ie/~dwilkins/LaTeXPrimer/Tables.html' |
| 32112 | 32124 | ||
| 32113 | CALS (DocBook DTD): | 32125 | CALS (DocBook DTD): |
| 32114 | URL `http://www.oasis-open.org/html/a502.htm' | 32126 | URL `https://www.oasis-open.org/html/a502.htm' |
| 32115 | URL `http://www.oreilly.com/catalog/docbook/chapter/book/table.html#AEN114751' | 32127 | URL `https://www.oreilly.com/catalog/docbook/chapter/book/table.html#AEN114751' |
| 32116 | 32128 | ||
| 32117 | \(fn LANGUAGE &optional DEST-BUFFER CAPTION)" t nil) | 32129 | \(fn LANGUAGE &optional DEST-BUFFER CAPTION)" t nil) |
| 32118 | 32130 | ||
| @@ -32320,12 +32332,12 @@ Connect to the Emacs talk group from the current X display or tty frame." t nil) | |||
| 32320 | (autoload 'tar-mode "tar-mode" "\ | 32332 | (autoload 'tar-mode "tar-mode" "\ |
| 32321 | Major mode for viewing a tar file as a dired-like listing of its contents. | 32333 | Major mode for viewing a tar file as a dired-like listing of its contents. |
| 32322 | You can move around using the usual cursor motion commands. | 32334 | You can move around using the usual cursor motion commands. |
| 32323 | Letters no longer insert themselves. | 32335 | Letters no longer insert themselves.\\<tar-mode-map> |
| 32324 | Type `e' to pull a file out of the tar file and into its own buffer; | 32336 | Type \\[tar-extract] to pull a file out of the tar file and into its own buffer; |
| 32325 | or click mouse-2 on the file's line in the Tar mode buffer. | 32337 | or click mouse-2 on the file's line in the Tar mode buffer. |
| 32326 | Type `c' to copy an entry from the tar file into another file on disk. | 32338 | Type \\[tar-copy] to copy an entry from the tar file into another file on disk. |
| 32327 | 32339 | ||
| 32328 | If you edit a sub-file of this archive (as with the `e' command) and | 32340 | If you edit a sub-file of this archive (as with the \\[tar-extract] command) and |
| 32329 | save it with \\[save-buffer], the contents of that buffer will be | 32341 | save it with \\[save-buffer], the contents of that buffer will be |
| 32330 | saved back into the tar-file buffer; in this way you can edit a file | 32342 | saved back into the tar-file buffer; in this way you can edit a file |
| 32331 | inside of a tar archive without extracting it and re-archiving it. | 32343 | inside of a tar archive without extracting it and re-archiving it. |
| @@ -32679,11 +32691,11 @@ says which mode to use. | |||
| 32679 | 32691 | ||
| 32680 | \(fn)" t nil) | 32692 | \(fn)" t nil) |
| 32681 | 32693 | ||
| 32682 | (defalias 'TeX-mode 'tex-mode) | 32694 | (defalias 'TeX-mode #'tex-mode) |
| 32683 | 32695 | ||
| 32684 | (defalias 'plain-TeX-mode 'plain-tex-mode) | 32696 | (defalias 'plain-TeX-mode #'plain-tex-mode) |
| 32685 | 32697 | ||
| 32686 | (defalias 'LaTeX-mode 'latex-mode) | 32698 | (defalias 'LaTeX-mode #'latex-mode) |
| 32687 | 32699 | ||
| 32688 | (autoload 'plain-tex-mode "tex-mode" "\ | 32700 | (autoload 'plain-tex-mode "tex-mode" "\ |
| 32689 | Major mode for editing files of input for plain TeX. | 32701 | Major mode for editing files of input for plain TeX. |
| @@ -33339,7 +33351,11 @@ point. | |||
| 33339 | \(fn &optional FORMAT HERE)" t nil) | 33351 | \(fn &optional FORMAT HERE)" t nil) |
| 33340 | 33352 | ||
| 33341 | (autoload 'emacs-init-time "time" "\ | 33353 | (autoload 'emacs-init-time "time" "\ |
| 33342 | Return a string giving the duration of the Emacs initialization." t nil) | 33354 | Return a string giving the duration of the Emacs initialization. |
| 33355 | FORMAT is a string to format the result, using `format'. If nil, | ||
| 33356 | the default format \"%f seconds\" is used. | ||
| 33357 | |||
| 33358 | \(fn &optional FORMAT)" t nil) | ||
| 33343 | 33359 | ||
| 33344 | (register-definition-prefixes "time" '("display-time-" "legacy-style-world-list" "time--display-world-list" "world-clock-" "zoneinfo-style-world-list")) | 33360 | (register-definition-prefixes "time" '("display-time-" "legacy-style-world-list" "time--display-world-list" "world-clock-" "zoneinfo-style-world-list")) |
| 33345 | 33361 | ||
| @@ -34025,6 +34041,13 @@ Add archive file name handler to `file-name-handler-alist'." (when tramp-archive | |||
| 34025 | 34041 | ||
| 34026 | ;;;*** | 34042 | ;;;*** |
| 34027 | 34043 | ||
| 34044 | ;;;### (autoloads nil "tramp-fuse" "net/tramp-fuse.el" (0 0 0 0)) | ||
| 34045 | ;;; Generated autoloads from net/tramp-fuse.el | ||
| 34046 | |||
| 34047 | (register-definition-prefixes "tramp-fuse" '("tramp-fuse-")) | ||
| 34048 | |||
| 34049 | ;;;*** | ||
| 34050 | |||
| 34028 | ;;;### (autoloads nil "tramp-gvfs" "net/tramp-gvfs.el" (0 0 0 0)) | 34051 | ;;;### (autoloads nil "tramp-gvfs" "net/tramp-gvfs.el" (0 0 0 0)) |
| 34029 | ;;; Generated autoloads from net/tramp-gvfs.el | 34052 | ;;; Generated autoloads from net/tramp-gvfs.el |
| 34030 | 34053 | ||
| @@ -34062,6 +34085,13 @@ Add archive file name handler to `file-name-handler-alist'." (when tramp-archive | |||
| 34062 | 34085 | ||
| 34063 | ;;;*** | 34086 | ;;;*** |
| 34064 | 34087 | ||
| 34088 | ;;;### (autoloads nil "tramp-sshfs" "net/tramp-sshfs.el" (0 0 0 0)) | ||
| 34089 | ;;; Generated autoloads from net/tramp-sshfs.el | ||
| 34090 | |||
| 34091 | (register-definition-prefixes "tramp-sshfs" '("tramp-sshfs-")) | ||
| 34092 | |||
| 34093 | ;;;*** | ||
| 34094 | |||
| 34065 | ;;;### (autoloads nil "tramp-sudoedit" "net/tramp-sudoedit.el" (0 | 34095 | ;;;### (autoloads nil "tramp-sudoedit" "net/tramp-sudoedit.el" (0 |
| 34066 | ;;;;;; 0 0 0)) | 34096 | ;;;;;; 0 0 0)) |
| 34067 | ;;; Generated autoloads from net/tramp-sudoedit.el | 34097 | ;;; Generated autoloads from net/tramp-sudoedit.el |
| @@ -34134,8 +34164,8 @@ resumed later. | |||
| 34134 | ;;;;;; 0 0)) | 34164 | ;;;;;; 0 0)) |
| 34135 | ;;; Generated autoloads from textmodes/two-column.el | 34165 | ;;; Generated autoloads from textmodes/two-column.el |
| 34136 | (autoload '2C-command "two-column" () t 'keymap) | 34166 | (autoload '2C-command "two-column" () t 'keymap) |
| 34137 | (global-set-key "\C-x6" '2C-command) | 34167 | (global-set-key "\C-x6" #'2C-command) |
| 34138 | (global-set-key [f2] '2C-command) | 34168 | (global-set-key [f2] #'2C-command) |
| 34139 | 34169 | ||
| 34140 | (autoload '2C-two-columns "two-column" "\ | 34170 | (autoload '2C-two-columns "two-column" "\ |
| 34141 | Split current window vertically for two-column editing. | 34171 | Split current window vertically for two-column editing. |
| @@ -35240,7 +35270,12 @@ The buffer in question is current when this function is called. | |||
| 35240 | 35270 | ||
| 35241 | \(fn FILENAME)" nil nil) | 35271 | \(fn FILENAME)" nil nil) |
| 35242 | 35272 | ||
| 35243 | (register-definition-prefixes "userlock" '("ask-user-about-" "file-" "userlock--check-content-unchanged")) | 35273 | (autoload 'userlock--handle-unlock-error "userlock" "\ |
| 35274 | Report an ERROR that occurred while unlocking a file. | ||
| 35275 | |||
| 35276 | \(fn ERROR)" nil nil) | ||
| 35277 | |||
| 35278 | (register-definition-prefixes "userlock" '("ask-user-about-" "file-" "userlock--")) | ||
| 35244 | 35279 | ||
| 35245 | ;;;*** | 35280 | ;;;*** |
| 35246 | 35281 | ||
| @@ -36027,7 +36062,7 @@ Key bindings: | |||
| 36027 | ;;;### (autoloads nil "verilog-mode" "progmodes/verilog-mode.el" | 36062 | ;;;### (autoloads nil "verilog-mode" "progmodes/verilog-mode.el" |
| 36028 | ;;;;;; (0 0 0 0)) | 36063 | ;;;;;; (0 0 0 0)) |
| 36029 | ;;; Generated autoloads from progmodes/verilog-mode.el | 36064 | ;;; Generated autoloads from progmodes/verilog-mode.el |
| 36030 | (push (purecopy '(verilog-mode 2021 2 2 263931197)) package--builtin-versions) | 36065 | (push (purecopy '(verilog-mode 2021 3 30 243771231)) package--builtin-versions) |
| 36031 | 36066 | ||
| 36032 | (autoload 'verilog-mode "verilog-mode" "\ | 36067 | (autoload 'verilog-mode "verilog-mode" "\ |
| 36033 | Major mode for editing Verilog code. | 36068 | Major mode for editing Verilog code. |
| @@ -36782,7 +36817,7 @@ Don't change this variable directly, you must change it by one of the | |||
| 36782 | functions that enable or disable view mode.") | 36817 | functions that enable or disable view mode.") |
| 36783 | 36818 | ||
| 36784 | (autoload 'kill-buffer-if-not-modified "view" "\ | 36819 | (autoload 'kill-buffer-if-not-modified "view" "\ |
| 36785 | Like `kill-buffer', but does nothing if the buffer is modified. | 36820 | Like `kill-buffer', but does nothing if buffer BUF is modified. |
| 36786 | 36821 | ||
| 36787 | \(fn BUF)" nil nil) | 36822 | \(fn BUF)" nil nil) |
| 36788 | 36823 | ||
| @@ -36848,7 +36883,7 @@ file: Users may suspend viewing in order to modify the buffer. | |||
| 36848 | Exiting View mode will then discard the user's edits. Setting | 36883 | Exiting View mode will then discard the user's edits. Setting |
| 36849 | EXIT-ACTION to `kill-buffer-if-not-modified' avoids this. | 36884 | EXIT-ACTION to `kill-buffer-if-not-modified' avoids this. |
| 36850 | 36885 | ||
| 36851 | This function does not enable View mode if the buffer's major-mode | 36886 | This function does not enable View mode if the buffer's major mode |
| 36852 | has a `special' mode-class, because such modes usually have their | 36887 | has a `special' mode-class, because such modes usually have their |
| 36853 | own View-like bindings. | 36888 | own View-like bindings. |
| 36854 | 36889 | ||
| @@ -36870,7 +36905,7 @@ Optional argument EXIT-ACTION is either nil or a function with buffer as | |||
| 36870 | argument. This function is called when finished viewing buffer. Use | 36905 | argument. This function is called when finished viewing buffer. Use |
| 36871 | this argument instead of explicitly setting `view-exit-action'. | 36906 | this argument instead of explicitly setting `view-exit-action'. |
| 36872 | 36907 | ||
| 36873 | This function does not enable View mode if the buffer's major-mode | 36908 | This function does not enable View mode if the buffer's major mode |
| 36874 | has a `special' mode-class, because such modes usually have their | 36909 | has a `special' mode-class, because such modes usually have their |
| 36875 | own View-like bindings. | 36910 | own View-like bindings. |
| 36876 | 36911 | ||
| @@ -36892,7 +36927,7 @@ Optional argument EXIT-ACTION is either nil or a function with buffer as | |||
| 36892 | argument. This function is called when finished viewing buffer. Use | 36927 | argument. This function is called when finished viewing buffer. Use |
| 36893 | this argument instead of explicitly setting `view-exit-action'. | 36928 | this argument instead of explicitly setting `view-exit-action'. |
| 36894 | 36929 | ||
| 36895 | This function does not enable View mode if the buffer's major-mode | 36930 | This function does not enable View mode if the buffer's major mode |
| 36896 | has a `special' mode-class, because such modes usually have their | 36931 | has a `special' mode-class, because such modes usually have their |
| 36897 | own View-like bindings. | 36932 | own View-like bindings. |
| 36898 | 36933 | ||
| @@ -38341,15 +38376,15 @@ Zone out, completely." t nil) | |||
| 38341 | ;;;;;; "cedet/semantic/db-typecache.el" "cedet/semantic/db.el" "cedet/semantic/debug.el" | 38376 | ;;;;;; "cedet/semantic/db-typecache.el" "cedet/semantic/db.el" "cedet/semantic/debug.el" |
| 38342 | ;;;;;; "cedet/semantic/decorate/include.el" "cedet/semantic/decorate/mode.el" | 38377 | ;;;;;; "cedet/semantic/decorate/include.el" "cedet/semantic/decorate/mode.el" |
| 38343 | ;;;;;; "cedet/semantic/dep.el" "cedet/semantic/doc.el" "cedet/semantic/edit.el" | 38378 | ;;;;;; "cedet/semantic/dep.el" "cedet/semantic/doc.el" "cedet/semantic/edit.el" |
| 38344 | ;;;;;; "cedet/semantic/find.el" "cedet/semantic/format.el" "cedet/semantic/html.el" | 38379 | ;;;;;; "cedet/semantic/find.el" "cedet/semantic/format.el" "cedet/semantic/grammar-wy.el" |
| 38345 | ;;;;;; "cedet/semantic/ia-sb.el" "cedet/semantic/ia.el" "cedet/semantic/idle.el" | 38380 | ;;;;;; "cedet/semantic/html.el" "cedet/semantic/ia-sb.el" "cedet/semantic/ia.el" |
| 38346 | ;;;;;; "cedet/semantic/imenu.el" "cedet/semantic/lex-spp.el" "cedet/semantic/lex.el" | 38381 | ;;;;;; "cedet/semantic/idle.el" "cedet/semantic/imenu.el" "cedet/semantic/lex-spp.el" |
| 38347 | ;;;;;; "cedet/semantic/mru-bookmark.el" "cedet/semantic/scope.el" | 38382 | ;;;;;; "cedet/semantic/lex.el" "cedet/semantic/mru-bookmark.el" |
| 38348 | ;;;;;; "cedet/semantic/senator.el" "cedet/semantic/sort.el" "cedet/semantic/symref.el" | 38383 | ;;;;;; "cedet/semantic/scope.el" "cedet/semantic/senator.el" "cedet/semantic/sort.el" |
| 38349 | ;;;;;; "cedet/semantic/symref/cscope.el" "cedet/semantic/symref/global.el" | 38384 | ;;;;;; "cedet/semantic/symref.el" "cedet/semantic/symref/cscope.el" |
| 38350 | ;;;;;; "cedet/semantic/symref/grep.el" "cedet/semantic/symref/idutils.el" | 38385 | ;;;;;; "cedet/semantic/symref/global.el" "cedet/semantic/symref/grep.el" |
| 38351 | ;;;;;; "cedet/semantic/symref/list.el" "cedet/semantic/tag-file.el" | 38386 | ;;;;;; "cedet/semantic/symref/idutils.el" "cedet/semantic/symref/list.el" |
| 38352 | ;;;;;; "cedet/semantic/tag-ls.el" "cedet/semantic/tag-write.el" | 38387 | ;;;;;; "cedet/semantic/tag-file.el" "cedet/semantic/tag-ls.el" "cedet/semantic/tag-write.el" |
| 38353 | ;;;;;; "cedet/semantic/tag.el" "cedet/semantic/texi.el" "cedet/semantic/util-modes.el" | 38388 | ;;;;;; "cedet/semantic/tag.el" "cedet/semantic/texi.el" "cedet/semantic/util-modes.el" |
| 38354 | ;;;;;; "cedet/semantic/wisent/java-tags.el" "cedet/semantic/wisent/javascript.el" | 38389 | ;;;;;; "cedet/semantic/wisent/java-tags.el" "cedet/semantic/wisent/javascript.el" |
| 38355 | ;;;;;; "cedet/semantic/wisent/javat-wy.el" "cedet/semantic/wisent/js-wy.el" | 38390 | ;;;;;; "cedet/semantic/wisent/javat-wy.el" "cedet/semantic/wisent/js-wy.el" |
| @@ -38381,7 +38416,7 @@ Zone out, completely." t nil) | |||
| 38381 | ;;;;;; "eshell/em-ls.el" "eshell/em-pred.el" "eshell/em-prompt.el" | 38416 | ;;;;;; "eshell/em-ls.el" "eshell/em-pred.el" "eshell/em-prompt.el" |
| 38382 | ;;;;;; "eshell/em-rebind.el" "eshell/em-script.el" "eshell/em-smart.el" | 38417 | ;;;;;; "eshell/em-rebind.el" "eshell/em-script.el" "eshell/em-smart.el" |
| 38383 | ;;;;;; "eshell/em-term.el" "eshell/em-tramp.el" "eshell/em-unix.el" | 38418 | ;;;;;; "eshell/em-term.el" "eshell/em-tramp.el" "eshell/em-unix.el" |
| 38384 | ;;;;;; "eshell/em-xtra.el" "facemenu.el" "faces.el" "files.el" "font-core.el" | 38419 | ;;;;;; "eshell/em-xtra.el" "faces.el" "files.el" "font-core.el" |
| 38385 | ;;;;;; "font-lock.el" "format.el" "frame.el" "help.el" "hfy-cmap.el" | 38420 | ;;;;;; "font-lock.el" "format.el" "frame.el" "help.el" "hfy-cmap.el" |
| 38386 | ;;;;;; "ibuf-ext.el" "indent.el" "international/characters.el" "international/charprop.el" | 38421 | ;;;;;; "ibuf-ext.el" "indent.el" "international/characters.el" "international/charprop.el" |
| 38387 | ;;;;;; "international/charscript.el" "international/cp51932.el" | 38422 | ;;;;;; "international/charscript.el" "international/cp51932.el" |
diff --git a/lisp/linum.el b/lisp/linum.el index f9761d22c6e..b0281d366cd 100644 --- a/lisp/linum.el +++ b/lisp/linum.el | |||
| @@ -31,9 +31,6 @@ | |||
| 31 | 31 | ||
| 32 | ;;; Code: | 32 | ;;; Code: |
| 33 | 33 | ||
| 34 | (defconst linum-version "0.9x") | ||
| 35 | (make-obsolete-variable 'linum-version nil "28.1") | ||
| 36 | |||
| 37 | (defvar-local linum-overlays nil "Overlays used in this buffer.") | 34 | (defvar-local linum-overlays nil "Overlays used in this buffer.") |
| 38 | (defvar-local linum-available nil "Overlays available for reuse.") | 35 | (defvar-local linum-available nil "Overlays available for reuse.") |
| 39 | (defvar linum-before-numbering-hook nil | 36 | (defvar linum-before-numbering-hook nil |
| @@ -244,6 +241,9 @@ Linum mode is a buffer-local minor mode." | |||
| 244 | ;; continue standard unloading | 241 | ;; continue standard unloading |
| 245 | nil) | 242 | nil) |
| 246 | 243 | ||
| 244 | (defconst linum-version "0.9x") | ||
| 245 | (make-obsolete-variable 'linum-version 'emacs-version "28.1") | ||
| 246 | |||
| 247 | (provide 'linum) | 247 | (provide 'linum) |
| 248 | 248 | ||
| 249 | ;;; linum.el ends here | 249 | ;;; linum.el ends here |
diff --git a/lisp/loadhist.el b/lisp/loadhist.el index a60d6b29095..59c002d3078 100644 --- a/lisp/loadhist.el +++ b/lisp/loadhist.el | |||
| @@ -82,12 +82,6 @@ A library name is equivalent to the file name that `load-library' would load." | |||
| 82 | (when (eq (car-safe x) 'require) | 82 | (when (eq (car-safe x) 'require) |
| 83 | (push (cdr x) requires))))) | 83 | (push (cdr x) requires))))) |
| 84 | 84 | ||
| 85 | (defsubst file-set-intersect (p q) | ||
| 86 | "Return the set intersection of two lists." | ||
| 87 | (let (ret) | ||
| 88 | (dolist (x p ret) | ||
| 89 | (when (memq x q) (push x ret))))) | ||
| 90 | |||
| 91 | (defun file-dependents (file) | 85 | (defun file-dependents (file) |
| 92 | "Return the list of loaded libraries that depend on FILE. | 86 | "Return the list of loaded libraries that depend on FILE. |
| 93 | This can include FILE itself. | 87 | This can include FILE itself. |
| @@ -97,7 +91,7 @@ A library name is equivalent to the file name that `load-library' would load." | |||
| 97 | (dependents nil)) | 91 | (dependents nil)) |
| 98 | (dolist (x load-history dependents) | 92 | (dolist (x load-history dependents) |
| 99 | (when (and (stringp (car x)) | 93 | (when (and (stringp (car x)) |
| 100 | (file-set-intersect provides (file-requires (car x)))) | 94 | (seq-intersection provides (file-requires (car x)) #'eq)) |
| 101 | (push (car x) dependents))))) | 95 | (push (car x) dependents))))) |
| 102 | 96 | ||
| 103 | (defun read-feature (prompt &optional loaded-p) | 97 | (defun read-feature (prompt &optional loaded-p) |
| @@ -322,6 +316,13 @@ something strange, such as redefining an Emacs function." | |||
| 322 | ;; Don't return load-history, it is not useful. | 316 | ;; Don't return load-history, it is not useful. |
| 323 | nil) | 317 | nil) |
| 324 | 318 | ||
| 319 | ;; Obsolete. | ||
| 320 | |||
| 321 | (defsubst file-set-intersect (p q) | ||
| 322 | "Return the set intersection of two lists." | ||
| 323 | (declare (obsolete seq-intersection "28.1")) | ||
| 324 | (nreverse (seq-intersection p q #'eq))) | ||
| 325 | |||
| 325 | (provide 'loadhist) | 326 | (provide 'loadhist) |
| 326 | 327 | ||
| 327 | ;;; loadhist.el ends here | 328 | ;;; loadhist.el ends here |
diff --git a/lisp/mail/mail-extr.el b/lisp/mail/mail-extr.el index 7fbdfefc461..88fb0866856 100644 --- a/lisp/mail/mail-extr.el +++ b/lisp/mail/mail-extr.el | |||
| @@ -2236,13 +2236,13 @@ place. It affects how `mail-extract-address-components' works." | |||
| 2236 | 2236 | ||
| 2237 | 2237 | ||
| 2238 | ;(let ((all nil)) | 2238 | ;(let ((all nil)) |
| 2239 | ; (mapatoms #'(lambda (x) | 2239 | ; (mapatoms (lambda (x) |
| 2240 | ; (if (and (boundp x) | 2240 | ; (if (and (boundp x) |
| 2241 | ; (string-match "^mail-extr-" (symbol-name x))) | 2241 | ; (string-match "^mail-extr-" (symbol-name x))) |
| 2242 | ; (setq all (cons x all))))) | 2242 | ; (setq all (cons x all))))) |
| 2243 | ; (setq all (sort all #'string-lessp)) | 2243 | ; (setq all (sort all #'string-lessp)) |
| 2244 | ; (cons 'setq | 2244 | ; (cons 'setq |
| 2245 | ; (apply 'nconc (mapcar #'(lambda (x) | 2245 | ; (apply 'nconc (mapcar (lambda (x) |
| 2246 | ; (list x (symbol-value x))) | 2246 | ; (list x (symbol-value x))) |
| 2247 | ; all)))) | 2247 | ; all)))) |
| 2248 | 2248 | ||
diff --git a/lisp/mail/rmail.el b/lisp/mail/rmail.el index c7960f85043..455ae7feefc 100644 --- a/lisp/mail/rmail.el +++ b/lisp/mail/rmail.el | |||
| @@ -3671,9 +3671,9 @@ If BUFFER is not swapped, yank out of its message viewer buffer." | |||
| 3671 | (push (cons "cc" cc) other-headers) | 3671 | (push (cons "cc" cc) other-headers) |
| 3672 | (push (cons "in-reply-to" in-reply-to) other-headers) | 3672 | (push (cons "in-reply-to" in-reply-to) other-headers) |
| 3673 | (setq other-headers | 3673 | (setq other-headers |
| 3674 | (mapcar #'(lambda (elt) | 3674 | (mapcar (lambda (elt) |
| 3675 | (cons (car elt) (if (stringp (cdr elt)) | 3675 | (cons (car elt) (if (stringp (cdr elt)) |
| 3676 | (rfc2047-decode-string (cdr elt))))) | 3676 | (rfc2047-decode-string (cdr elt))))) |
| 3677 | other-headers)) | 3677 | other-headers)) |
| 3678 | (if (stringp to) (setq to (rfc2047-decode-string to))) | 3678 | (if (stringp to) (setq to (rfc2047-decode-string to))) |
| 3679 | (if (stringp in-reply-to) | 3679 | (if (stringp in-reply-to) |
diff --git a/lisp/mail/smtpmail.el b/lisp/mail/smtpmail.el index ac5e8c3b6fb..ab58aa455e9 100644 --- a/lisp/mail/smtpmail.el +++ b/lisp/mail/smtpmail.el | |||
| @@ -489,13 +489,6 @@ for `smtpmail-try-auth-method'.") | |||
| 489 | recipient | 489 | recipient |
| 490 | (concat recipient "@" smtpmail-sendto-domain))) | 490 | (concat recipient "@" smtpmail-sendto-domain))) |
| 491 | 491 | ||
| 492 | (defun smtpmail-intersection (list1 list2) | ||
| 493 | (let ((result nil)) | ||
| 494 | (dolist (el2 list2) | ||
| 495 | (when (memq el2 list1) | ||
| 496 | (push el2 result))) | ||
| 497 | (nreverse result))) | ||
| 498 | |||
| 499 | (defun smtpmail-command-or-throw (process string &optional code) | 492 | (defun smtpmail-command-or-throw (process string &optional code) |
| 500 | (let (ret) | 493 | (let (ret) |
| 501 | (smtpmail-send-command process string) | 494 | (smtpmail-send-command process string) |
| @@ -512,9 +505,10 @@ for `smtpmail-try-auth-method'.") | |||
| 512 | (if port | 505 | (if port |
| 513 | (format "%s" port) | 506 | (format "%s" port) |
| 514 | "smtp")) | 507 | "smtp")) |
| 515 | (let* ((mechs (smtpmail-intersection | 508 | (let* ((mechs (seq-intersection |
| 509 | smtpmail-auth-supported | ||
| 516 | (cdr-safe (assoc 'auth supported-extensions)) | 510 | (cdr-safe (assoc 'auth supported-extensions)) |
| 517 | smtpmail-auth-supported)) | 511 | #'eq)) |
| 518 | (auth-source-creation-prompts | 512 | (auth-source-creation-prompts |
| 519 | '((user . "SMTP user name for %h: ") | 513 | '((user . "SMTP user name for %h: ") |
| 520 | (secret . "SMTP password for %u@%h: "))) | 514 | (secret . "SMTP password for %u@%h: "))) |
| @@ -1087,6 +1081,12 @@ many continuation lines." | |||
| 1087 | (while (and (looking-at "^[ \t].*\n") (< (point) header-end)) | 1081 | (while (and (looking-at "^[ \t].*\n") (< (point) header-end)) |
| 1088 | (replace-match "")))))) | 1082 | (replace-match "")))))) |
| 1089 | 1083 | ||
| 1084 | ;; Obsolete. | ||
| 1085 | |||
| 1086 | (defun smtpmail-intersection (list1 list2) | ||
| 1087 | (declare (obsolete seq-intersection "28.1")) | ||
| 1088 | (seq-intersection list2 list1 #'eq)) | ||
| 1089 | |||
| 1090 | (provide 'smtpmail) | 1090 | (provide 'smtpmail) |
| 1091 | 1091 | ||
| 1092 | ;;; smtpmail.el ends here | 1092 | ;;; smtpmail.el ends here |
diff --git a/lisp/man.el b/lisp/man.el index abb9bbad8fd..9b941a2b3d2 100644 --- a/lisp/man.el +++ b/lisp/man.el | |||
| @@ -1503,7 +1503,9 @@ manpage command." | |||
| 1503 | (quit-restore-window | 1503 | (quit-restore-window |
| 1504 | (get-buffer-window Man-buffer t) 'kill) | 1504 | (get-buffer-window Man-buffer t) 'kill) |
| 1505 | ;; Ensure that we end up in the correct window. | 1505 | ;; Ensure that we end up in the correct window. |
| 1506 | (select-window (old-selected-window))) | 1506 | (let ((old-window (old-selected-window))) |
| 1507 | (when (window-live-p old-window) | ||
| 1508 | (select-window old-window)))) | ||
| 1507 | (kill-buffer Man-buffer))) | 1509 | (kill-buffer Man-buffer))) |
| 1508 | 1510 | ||
| 1509 | (when message | 1511 | (when message |
diff --git a/lisp/mpc.el b/lisp/mpc.el index 827f8aacdd6..315d8c0626d 100644 --- a/lisp/mpc.el +++ b/lisp/mpc.el | |||
| @@ -129,12 +129,10 @@ | |||
| 129 | "Return L1 after removing all elements not found in L2. | 129 | "Return L1 after removing all elements not found in L2. |
| 130 | If SELECTFUN is non-nil, elements aren't compared directly, but instead | 130 | If SELECTFUN is non-nil, elements aren't compared directly, but instead |
| 131 | they are passed through SELECTFUN before comparison." | 131 | they are passed through SELECTFUN before comparison." |
| 132 | (let ((res ())) | 132 | (when selectfun |
| 133 | (if selectfun (setq l2 (mapcar selectfun l2))) | 133 | (setq l1 (mapcar selectfun l1)) |
| 134 | (dolist (elem l1) | 134 | (setq l2 (mapcar selectfun l2))) |
| 135 | (when (member (if selectfun (funcall selectfun elem) elem) l2) | 135 | (seq-intersection l1 l2)) |
| 136 | (push elem res))) | ||
| 137 | (nreverse res))) | ||
| 138 | 136 | ||
| 139 | (defun mpc-event-set-point (event) | 137 | (defun mpc-event-set-point (event) |
| 140 | (condition-case nil (posn-set-point (event-end event)) | 138 | (condition-case nil (posn-set-point (event-end event)) |
| @@ -698,7 +696,7 @@ The songs are returned as alists." | |||
| 698 | (let* ((osongs (mpc-cmd-find other-tag value)) | 696 | (let* ((osongs (mpc-cmd-find other-tag value)) |
| 699 | (ofiles (mpc-assq-all 'file (apply 'append osongs))) | 697 | (ofiles (mpc-assq-all 'file (apply 'append osongs))) |
| 700 | (plfiles (mpc-assq-all 'file (apply 'append plsongs)))) | 698 | (plfiles (mpc-assq-all 'file (apply 'append plsongs)))) |
| 701 | (when (mpc-intersection plfiles ofiles) | 699 | (when (seq-intersection plfiles ofiles) |
| 702 | (push pl pls))))))) | 700 | (push pl pls))))))) |
| 703 | pls)) | 701 | pls)) |
| 704 | 702 | ||
| @@ -1669,7 +1667,7 @@ Return non-nil if a selection was deactivated." | |||
| 1669 | (mpc-cmd-list mpc-tag (car cst) val)) | 1667 | (mpc-cmd-list mpc-tag (car cst) val)) |
| 1670 | (cdr cst))))) | 1668 | (cdr cst))))) |
| 1671 | (setq active | 1669 | (setq active |
| 1672 | (if (listp active) (mpc-intersection active vals) vals)))) | 1670 | (if (listp active) (seq-intersection active vals) vals)))) |
| 1673 | 1671 | ||
| 1674 | (when (listp active) | 1672 | (when (listp active) |
| 1675 | ;; Remove the selections if they are all in conflict with | 1673 | ;; Remove the selections if they are all in conflict with |
diff --git a/lisp/net/gnutls.el b/lisp/net/gnutls.el index 683abaaa04a..43dd9dc15cd 100644 --- a/lisp/net/gnutls.el +++ b/lisp/net/gnutls.el | |||
| @@ -336,8 +336,8 @@ defaults to GNUTLS_VERIFY_ALLOW_X509_V1_CA_CRT." | |||
| 336 | t) | 336 | t) |
| 337 | ;; if a list, look for hostname matches | 337 | ;; if a list, look for hostname matches |
| 338 | ((listp gnutls-verify-error) | 338 | ((listp gnutls-verify-error) |
| 339 | (cadr (cl-find-if #'(lambda (x) | 339 | (cadr (cl-find-if (lambda (x) |
| 340 | (string-match (car x) hostname)) | 340 | (string-match (car x) hostname)) |
| 341 | gnutls-verify-error))) | 341 | gnutls-verify-error))) |
| 342 | ;; else it's nil | 342 | ;; else it's nil |
| 343 | (t nil)))) | 343 | (t nil)))) |
diff --git a/lisp/net/imap.el b/lisp/net/imap.el index 052ef292957..d29584e55bd 100644 --- a/lisp/net/imap.el +++ b/lisp/net/imap.el | |||
| @@ -737,9 +737,9 @@ sure of changing the value of `foo'." | |||
| 737 | :end-of-command "\r\n" | 737 | :end-of-command "\r\n" |
| 738 | :success "^1 OK " | 738 | :success "^1 OK " |
| 739 | :starttls-function | 739 | :starttls-function |
| 740 | #'(lambda (capabilities) | 740 | (lambda (capabilities) |
| 741 | (when (string-match-p "STARTTLS" capabilities) | 741 | (when (string-match-p "STARTTLS" capabilities) |
| 742 | "1 STARTTLS\r\n")))) | 742 | "1 STARTTLS\r\n")))) |
| 743 | done) | 743 | done) |
| 744 | (when process | 744 | (when process |
| 745 | (imap-log buffer) | 745 | (imap-log buffer) |
diff --git a/lisp/net/newst-backend.el b/lisp/net/newst-backend.el index 1d3a5e0f7da..e623dab26df 100644 --- a/lisp/net/newst-backend.el +++ b/lisp/net/newst-backend.el | |||
| @@ -1680,6 +1680,7 @@ Sat, 07 Sep 2002 00:00:01 GMT | |||
| 1680 | nil)))) | 1680 | nil)))) |
| 1681 | nil)) | 1681 | nil)) |
| 1682 | 1682 | ||
| 1683 | ;; FIXME: Can this be replaced by seq-intersection? | ||
| 1683 | (defun newsticker--lists-intersect-p (list1 list2) | 1684 | (defun newsticker--lists-intersect-p (list1 list2) |
| 1684 | "Return t if LIST1 and LIST2 share elements." | 1685 | "Return t if LIST1 and LIST2 share elements." |
| 1685 | (let ((result nil)) | 1686 | (let ((result nil)) |
diff --git a/lisp/net/pop3.el b/lisp/net/pop3.el index dcac36f2a4a..cb49f75c81d 100644 --- a/lisp/net/pop3.el +++ b/lisp/net/pop3.el | |||
| @@ -725,9 +725,9 @@ Otherwise, return the size of the message-id MSG." | |||
| 725 | (setq pop3-read-point (point-marker)) | 725 | (setq pop3-read-point (point-marker)) |
| 726 | (goto-char (match-beginning 0)) | 726 | (goto-char (match-beginning 0)) |
| 727 | (setq end (point-marker)) | 727 | (setq end (point-marker)) |
| 728 | (mapcar #'(lambda (s) (let ((split (split-string s " "))) | 728 | (mapcar (lambda (s) (let ((split (split-string s " "))) |
| 729 | (cons (string-to-number (nth 0 split)) | 729 | (cons (string-to-number (nth 0 split)) |
| 730 | (string-to-number (nth 1 split))))) | 730 | (string-to-number (nth 1 split))))) |
| 731 | (split-string (buffer-substring start end) "\r\n" t))))))) | 731 | (split-string (buffer-substring start end) "\r\n" t))))))) |
| 732 | 732 | ||
| 733 | (defun pop3-retr (process msg crashbuf) | 733 | (defun pop3-retr (process msg crashbuf) |
diff --git a/lisp/net/tramp-sh.el b/lisp/net/tramp-sh.el index 1764f2ef03f..499bf8abe41 100644 --- a/lisp/net/tramp-sh.el +++ b/lisp/net/tramp-sh.el | |||
| @@ -103,12 +103,12 @@ detected as prompt when being sent on echoing hosts, therefore.") | |||
| 103 | (defconst tramp-end-of-heredoc (md5 tramp-end-of-output) | 103 | (defconst tramp-end-of-heredoc (md5 tramp-end-of-output) |
| 104 | "String used to recognize end of heredoc strings.") | 104 | "String used to recognize end of heredoc strings.") |
| 105 | 105 | ||
| 106 | (defcustom tramp-use-ssh-controlmaster-options t | 106 | (defcustom tramp-use-ssh-controlmaster-options (not (eq system-type 'windows-nt)) |
| 107 | "Whether to use `tramp-ssh-controlmaster-options'. | 107 | "Whether to use `tramp-ssh-controlmaster-options'. |
| 108 | Set it to nil, if you use Control* or Proxy* options in your ssh | 108 | Set it to nil, if you use Control* or Proxy* options in your ssh |
| 109 | configuration." | 109 | configuration." |
| 110 | :group 'tramp | 110 | :group 'tramp |
| 111 | :version "24.4" | 111 | :version "28.1" |
| 112 | :type 'boolean) | 112 | :type 'boolean) |
| 113 | 113 | ||
| 114 | (defvar tramp-ssh-controlmaster-options nil | 114 | (defvar tramp-ssh-controlmaster-options nil |
| @@ -389,7 +389,14 @@ The string is used in `tramp-methods'.") | |||
| 389 | (regexp-opt | 389 | (regexp-opt |
| 390 | '("rcp" "remcp" "rsh" "telnet" "nc" "krlogin" "fcp")) | 390 | '("rcp" "remcp" "rsh" "telnet" "nc" "krlogin" "fcp")) |
| 391 | "\\'") | 391 | "\\'") |
| 392 | nil ,(user-login-name)))) | 392 | nil ,(user-login-name))) |
| 393 | |||
| 394 | ;; MS Windows Openssh client does not cooperate well with cmdproxy. | ||
| 395 | (when-let ((encoding-shell | ||
| 396 | (and (eq system-type 'windows-nt) (executable-find "powershell")))) | ||
| 397 | (add-to-list 'tramp-connection-properties | ||
| 398 | `(,(regexp-opt '("/sshx:" "/scpx:")) | ||
| 399 | "encoding-shell" ,encoding-shell)))) | ||
| 393 | 400 | ||
| 394 | ;;;###tramp-autoload | 401 | ;;;###tramp-autoload |
| 395 | (defconst tramp-completion-function-alist-rsh | 402 | (defconst tramp-completion-function-alist-rsh |
| @@ -484,6 +491,7 @@ shell from reading its init file." | |||
| 484 | '((tramp-login-prompt-regexp tramp-action-login) | 491 | '((tramp-login-prompt-regexp tramp-action-login) |
| 485 | (tramp-password-prompt-regexp tramp-action-password) | 492 | (tramp-password-prompt-regexp tramp-action-password) |
| 486 | (tramp-wrong-passwd-regexp tramp-action-permission-denied) | 493 | (tramp-wrong-passwd-regexp tramp-action-permission-denied) |
| 494 | (tramp-no-job-control-regexp tramp-action-permission-denied) | ||
| 487 | (shell-prompt-pattern tramp-action-succeed) | 495 | (shell-prompt-pattern tramp-action-succeed) |
| 488 | (tramp-shell-prompt-pattern tramp-action-succeed) | 496 | (tramp-shell-prompt-pattern tramp-action-succeed) |
| 489 | (tramp-yesno-prompt-regexp tramp-action-yesno) | 497 | (tramp-yesno-prompt-regexp tramp-action-yesno) |
| @@ -2584,12 +2592,9 @@ The method used must be an out-of-band method." | |||
| 2584 | (save-restriction | 2592 | (save-restriction |
| 2585 | (narrow-to-region beg-marker end-marker) | 2593 | (narrow-to-region beg-marker end-marker) |
| 2586 | ;; Check for "--dired" output. | 2594 | ;; Check for "--dired" output. |
| 2587 | (forward-line -2) | 2595 | (when (re-search-backward "^//DIRED//\\s-+\\(.+\\)$" nil 'noerror) |
| 2588 | (when (looking-at-p "//SUBDIRED//") | 2596 | (let ((beg (match-beginning 1)) |
| 2589 | (forward-line -1)) | 2597 | (end (match-end 0))) |
| 2590 | (when (looking-at "//DIRED//\\s-+") | ||
| 2591 | (let ((beg (match-end 0)) | ||
| 2592 | (end (point-at-eol))) | ||
| 2593 | ;; Now read the numeric positions of file names. | 2598 | ;; Now read the numeric positions of file names. |
| 2594 | (goto-char beg) | 2599 | (goto-char beg) |
| 2595 | (while (< (point) end) | 2600 | (while (< (point) end) |
| @@ -2599,7 +2604,7 @@ The method used must be an out-of-band method." | |||
| 2599 | ;; End is followed by \n or by " -> ". | 2604 | ;; End is followed by \n or by " -> ". |
| 2600 | (put-text-property start end 'dired-filename t)))))) | 2605 | (put-text-property start end 'dired-filename t)))))) |
| 2601 | ;; Remove trailing lines. | 2606 | ;; Remove trailing lines. |
| 2602 | (goto-char (point-at-bol)) | 2607 | (beginning-of-line) |
| 2603 | (while (looking-at "//") | 2608 | (while (looking-at "//") |
| 2604 | (forward-line 1) | 2609 | (forward-line 1) |
| 2605 | (delete-region (match-beginning 0) (point)))) | 2610 | (delete-region (match-beginning 0) (point)))) |
| @@ -3751,12 +3756,17 @@ Fall back to normal file name handler if no Tramp handler exists." | |||
| 3751 | ;; Determine monitor name. | 3756 | ;; Determine monitor name. |
| 3752 | (unless (tramp-connection-property-p proc "gio-file-monitor") | 3757 | (unless (tramp-connection-property-p proc "gio-file-monitor") |
| 3753 | (cond | 3758 | (cond |
| 3754 | ;; We have seen this only on cygwin gio, which uses the | 3759 | ;; We have seen this on cygwin gio and on emba. Let's make some assumptions. |
| 3755 | ;; GPollFileMonitor. | ||
| 3756 | ((string-match | 3760 | ((string-match |
| 3757 | "Can't find module 'help' specified in GIO_USE_FILE_MONITOR" string) | 3761 | "Can't find module 'help' specified in GIO_USE_FILE_MONITOR" string) |
| 3758 | (tramp-set-connection-property | 3762 | (cond |
| 3759 | proc "gio-file-monitor" 'GPollFileMonitor)) | 3763 | ((getenv "EMACS_EMBA_CI") |
| 3764 | (tramp-set-connection-property | ||
| 3765 | proc "gio-file-monitor" 'GInotifyFileMonitor)) | ||
| 3766 | ((eq system-type 'cygwin) | ||
| 3767 | (tramp-set-connection-property | ||
| 3768 | proc "gio-file-monitor" 'GPollFileMonitor)) | ||
| 3769 | (t (tramp-error proc 'file-error "Cannot determine gio monitor")))) | ||
| 3760 | ;; TODO: What happens, if several monitor names are reported? | 3770 | ;; TODO: What happens, if several monitor names are reported? |
| 3761 | ((string-match "\ | 3771 | ((string-match "\ |
| 3762 | Supported arguments for GIO_USE_FILE_MONITOR environment variable: | 3772 | Supported arguments for GIO_USE_FILE_MONITOR environment variable: |
| @@ -4855,8 +4865,6 @@ connection if a previous connection has died for some reason." | |||
| 4855 | (setenv "HISTSIZE" "0")))) | 4865 | (setenv "HISTSIZE" "0")))) |
| 4856 | (setenv "PROMPT_COMMAND") | 4866 | (setenv "PROMPT_COMMAND") |
| 4857 | (setenv "PS1" tramp-initial-end-of-output) | 4867 | (setenv "PS1" tramp-initial-end-of-output) |
| 4858 | (unless (stringp tramp-encoding-shell) | ||
| 4859 | (tramp-error vec 'file-error "`tramp-encoding-shell' not set")) | ||
| 4860 | (let* ((current-host tramp-system-name) | 4868 | (let* ((current-host tramp-system-name) |
| 4861 | (target-alist (tramp-compute-multi-hops vec)) | 4869 | (target-alist (tramp-compute-multi-hops vec)) |
| 4862 | ;; We will apply `tramp-ssh-controlmaster-options' | 4870 | ;; We will apply `tramp-ssh-controlmaster-options' |
| @@ -4868,17 +4876,23 @@ connection if a previous connection has died for some reason." | |||
| 4868 | ;; W32 systems. | 4876 | ;; W32 systems. |
| 4869 | (process-coding-system-alist nil) | 4877 | (process-coding-system-alist nil) |
| 4870 | (coding-system-for-read nil) | 4878 | (coding-system-for-read nil) |
| 4871 | (extra-args (tramp-get-sh-extra-args tramp-encoding-shell)) | 4879 | (encoding-shell |
| 4880 | (tramp-get-connection-property | ||
| 4881 | vec "encoding-shell" tramp-encoding-shell)) | ||
| 4882 | (extra-args (tramp-get-sh-extra-args encoding-shell)) | ||
| 4872 | ;; This must be done in order to avoid our file | 4883 | ;; This must be done in order to avoid our file |
| 4873 | ;; name handler. | 4884 | ;; name handler. |
| 4874 | (p (let ((default-directory | 4885 | (p (let ((default-directory |
| 4875 | (tramp-compat-temporary-file-directory))) | 4886 | (tramp-compat-temporary-file-directory))) |
| 4887 | (unless (stringp encoding-shell) | ||
| 4888 | (tramp-error | ||
| 4889 | vec 'file-error "`tramp-encoding-shell' not set")) | ||
| 4876 | (apply | 4890 | (apply |
| 4877 | #'start-process | 4891 | #'start-process |
| 4878 | (tramp-get-connection-name vec) | 4892 | (tramp-get-connection-name vec) |
| 4879 | (tramp-get-connection-buffer vec) | 4893 | (tramp-get-connection-buffer vec) |
| 4880 | (append | 4894 | (append |
| 4881 | (list tramp-encoding-shell) | 4895 | (list encoding-shell) |
| 4882 | (and extra-args (split-string extra-args)) | 4896 | (and extra-args (split-string extra-args)) |
| 4883 | (and tramp-encoding-command-interactive | 4897 | (and tramp-encoding-command-interactive |
| 4884 | (list tramp-encoding-command-interactive))))))) | 4898 | (list tramp-encoding-command-interactive))))))) |
| @@ -4897,8 +4911,7 @@ connection if a previous connection has died for some reason." | |||
| 4897 | 4911 | ||
| 4898 | ;; Check whether process is alive. | 4912 | ;; Check whether process is alive. |
| 4899 | (tramp-barf-if-no-shell-prompt | 4913 | (tramp-barf-if-no-shell-prompt |
| 4900 | p 10 | 4914 | p 10 "Couldn't find local shell prompt for %s" encoding-shell) |
| 4901 | "Couldn't find local shell prompt for %s" tramp-encoding-shell) | ||
| 4902 | 4915 | ||
| 4903 | ;; Now do all the connections as specified. | 4916 | ;; Now do all the connections as specified. |
| 4904 | (while target-alist | 4917 | (while target-alist |
| @@ -4972,12 +4985,8 @@ connection if a previous connection has died for some reason." | |||
| 4972 | ?h (or l-host "") ?u (or l-user "") ?p (or l-port "") | 4985 | ?h (or l-host "") ?u (or l-user "") ?p (or l-port "") |
| 4973 | ?c (format-spec options (format-spec-make ?t tmpfile)) | 4986 | ?c (format-spec options (format-spec-make ?t tmpfile)) |
| 4974 | ?l (concat remote-shell " " extra-args " -i")) | 4987 | ?l (concat remote-shell " " extra-args " -i")) |
| 4975 | ;; Local shell could be a Windows COMSPEC. It | 4988 | ;; A restricted shell does not allow "exec". |
| 4976 | ;; doesn't know the ";" syntax, but we must | 4989 | (when r-shell '("; exit"))) |
| 4977 | ;; exit always for `start-file-process'. It | ||
| 4978 | ;; could also be a restricted shell, which does | ||
| 4979 | ;; not allow "exec". | ||
| 4980 | (when r-shell '("&&" "exit" "||" "exit"))) | ||
| 4981 | " ")) | 4990 | " ")) |
| 4982 | 4991 | ||
| 4983 | ;; Send the command. | 4992 | ;; Send the command. |
diff --git a/lisp/net/tramp.el b/lisp/net/tramp.el index 8141f026f74..99955b54598 100644 --- a/lisp/net/tramp.el +++ b/lisp/net/tramp.el | |||
| @@ -354,12 +354,13 @@ Notes: | |||
| 354 | All these arguments can be overwritten by connection properties. | 354 | All these arguments can be overwritten by connection properties. |
| 355 | See Info node `(tramp) Predefined connection information'. | 355 | See Info node `(tramp) Predefined connection information'. |
| 356 | 356 | ||
| 357 | When using `su' or `sudo' the phrase \"open connection to a remote | 357 | When using `su', `sudo' or `doas' the phrase \"open connection to |
| 358 | host\" sounds strange, but it is used nevertheless, for consistency. | 358 | a remote host\" sounds strange, but it is used nevertheless, for |
| 359 | No connection is opened to a remote host, but `su' or `sudo' is | 359 | consistency. No connection is opened to a remote host, but `su', |
| 360 | started on the local host. You should specify a remote host | 360 | `sudo' or `doas' is started on the local host. You should |
| 361 | `localhost' or the name of the local host. Another host name is | 361 | specify a remote host `localhost' or the name of the local host. |
| 362 | useful only in combination with `tramp-default-proxies-alist'.") | 362 | Another host name is useful only in combination with |
| 363 | `tramp-default-proxies-alist'.") | ||
| 363 | 364 | ||
| 364 | (defcustom tramp-default-method | 365 | (defcustom tramp-default-method |
| 365 | ;; An external copy method seems to be preferred, because it performs | 366 | ;; An external copy method seems to be preferred, because it performs |
| @@ -690,6 +691,15 @@ The regexp should match at end of buffer." | |||
| 690 | :version "27.1" | 691 | :version "27.1" |
| 691 | :type 'regexp) | 692 | :type 'regexp) |
| 692 | 693 | ||
| 694 | ;; Powershell requires "ssh -t -t" for terminal emulation. If it | ||
| 695 | ;; doesn't fit, there is an error. | ||
| 696 | (defcustom tramp-no-job-control-regexp | ||
| 697 | (regexp-quote "Thus no job control in this shell.") | ||
| 698 | "Regular expression matching powershell's job control message. | ||
| 699 | The regexp should match at end of buffer." | ||
| 700 | :version "28.1" | ||
| 701 | :type 'regexp) | ||
| 702 | |||
| 693 | (defcustom tramp-operation-not-permitted-regexp | 703 | (defcustom tramp-operation-not-permitted-regexp |
| 694 | (concat "\\(" "preserving times.*" "\\|" "set mode" "\\)" ":\\s-*" | 704 | (concat "\\(" "preserving times.*" "\\|" "set mode" "\\)" ":\\s-*" |
| 695 | (regexp-opt '("Operation not permitted") t)) | 705 | (regexp-opt '("Operation not permitted") t)) |
| @@ -1808,6 +1818,7 @@ The outline level is equal to the verbosity of the Tramp message." | |||
| 1808 | "Get the debug buffer for VEC." | 1818 | "Get the debug buffer for VEC." |
| 1809 | (with-current-buffer (get-buffer-create (tramp-debug-buffer-name vec)) | 1819 | (with-current-buffer (get-buffer-create (tramp-debug-buffer-name vec)) |
| 1810 | (when (bobp) | 1820 | (when (bobp) |
| 1821 | (set-buffer-file-coding-system 'utf-8) | ||
| 1811 | (setq buffer-undo-list t) | 1822 | (setq buffer-undo-list t) |
| 1812 | ;; Activate `outline-mode'. This runs `text-mode-hook' and | 1823 | ;; Activate `outline-mode'. This runs `text-mode-hook' and |
| 1813 | ;; `outline-mode-hook'. We must prevent that local processes | 1824 | ;; `outline-mode-hook'. We must prevent that local processes |
| @@ -1848,7 +1859,7 @@ ARGUMENTS to actually emit the message (if applicable)." | |||
| 1848 | (when (bobp) | 1859 | (when (bobp) |
| 1849 | (insert | 1860 | (insert |
| 1850 | (format | 1861 | (format |
| 1851 | ";; Emacs: %s Tramp: %s -*- mode: outline; -*-" | 1862 | ";; Emacs: %s Tramp: %s -*- mode: outline; coding: utf-8; -*-" |
| 1852 | emacs-version tramp-version)) | 1863 | emacs-version tramp-version)) |
| 1853 | (when (>= tramp-verbose 10) | 1864 | (when (>= tramp-verbose 10) |
| 1854 | (let ((tramp-verbose 0)) | 1865 | (let ((tramp-verbose 0)) |
diff --git a/lisp/nxml/rng-loc.el b/lisp/nxml/rng-loc.el index d5a608d6ff2..a38da794226 100644 --- a/lisp/nxml/rng-loc.el +++ b/lisp/nxml/rng-loc.el | |||
| @@ -182,7 +182,7 @@ If TYPE-ID is non-nil, then locate the schema for this TYPE-ID." | |||
| 182 | (while files | 182 | (while files |
| 183 | (setq type-ids (rng-possible-type-ids-using (car files) type-ids)) | 183 | (setq type-ids (rng-possible-type-ids-using (car files) type-ids)) |
| 184 | (setq files (cdr files))) | 184 | (setq files (cdr files))) |
| 185 | (rng-uniquify-equal (sort type-ids 'string<)))) | 185 | (seq-uniq (sort type-ids 'string<)))) |
| 186 | 186 | ||
| 187 | (defun rng-locate-schema-file-using (files) | 187 | (defun rng-locate-schema-file-using (files) |
| 188 | "Locate a schema using the schema locating files FILES. | 188 | "Locate a schema using the schema locating files FILES. |
diff --git a/lisp/nxml/rng-match.el b/lisp/nxml/rng-match.el index 4fc6727d0e6..7a2739c0616 100644 --- a/lisp/nxml/rng-match.el +++ b/lisp/nxml/rng-match.el | |||
| @@ -472,7 +472,7 @@ list is nullable and whose cdr is the normalized list." | |||
| 472 | (cons nullable | 472 | (cons nullable |
| 473 | (if sorted | 473 | (if sorted |
| 474 | head | 474 | head |
| 475 | (rng-uniquify-eq (sort head 'rng-compare-ipattern)))))) | 475 | (seq-uniq (sort head 'rng-compare-ipattern) #'eq))))) |
| 476 | 476 | ||
| 477 | (defun rng-compare-ipattern (p1 p2) | 477 | (defun rng-compare-ipattern (p1 p2) |
| 478 | (< (rng--ipattern-index p1) | 478 | (< (rng--ipattern-index p1) |
diff --git a/lisp/nxml/rng-nxml.el b/lisp/nxml/rng-nxml.el index 7ea6fb2e49d..33768a46c94 100644 --- a/lisp/nxml/rng-nxml.el +++ b/lisp/nxml/rng-nxml.el | |||
| @@ -522,7 +522,7 @@ set `xmltok-dtd'. Returns the position of the end of the token." | |||
| 522 | (unless attribute-flag | 522 | (unless attribute-flag |
| 523 | (setcdr ns-prefixes (cons nil (cdr ns-prefixes)))))) | 523 | (setcdr ns-prefixes (cons nil (cdr ns-prefixes)))))) |
| 524 | (setq iter (cdr iter))) | 524 | (setq iter (cdr iter))) |
| 525 | (rng-uniquify-equal | 525 | (seq-uniq |
| 526 | (sort (apply #'append | 526 | (sort (apply #'append |
| 527 | (cons extra-strings | 527 | (cons extra-strings |
| 528 | (mapcar (lambda (name) | 528 | (mapcar (lambda (name) |
diff --git a/lisp/nxml/rng-util.el b/lisp/nxml/rng-util.el index a20e95086cb..67e2ee9f1e3 100644 --- a/lisp/nxml/rng-util.el +++ b/lisp/nxml/rng-util.el | |||
| @@ -36,26 +36,6 @@ | |||
| 36 | 36 | ||
| 37 | (defconst rng-builtin-datatypes-uri (rng-make-datatypes-uri "")) | 37 | (defconst rng-builtin-datatypes-uri (rng-make-datatypes-uri "")) |
| 38 | 38 | ||
| 39 | (defun rng-uniquify-eq (list) | ||
| 40 | "Destructively remove `eq' duplicates from LIST." | ||
| 41 | (and list | ||
| 42 | (let ((head list)) | ||
| 43 | (while (cdr head) | ||
| 44 | (if (eq (car head) (cadr head)) | ||
| 45 | (setcdr head (cddr head))) | ||
| 46 | (setq head (cdr head))) | ||
| 47 | list))) | ||
| 48 | |||
| 49 | (defun rng-uniquify-equal (list) | ||
| 50 | "Destructively remove `equal' duplicates from LIST." | ||
| 51 | (and list | ||
| 52 | (let ((head list)) | ||
| 53 | (while (cdr head) | ||
| 54 | (if (equal (car head) (cadr head)) | ||
| 55 | (setcdr head (cddr head))) | ||
| 56 | (setq head (cdr head))) | ||
| 57 | list))) | ||
| 58 | |||
| 59 | (defun rng-blank-p (str) (string-match "\\`[ \t\n\r]*\\'" str)) | 39 | (defun rng-blank-p (str) (string-match "\\`[ \t\n\r]*\\'" str)) |
| 60 | 40 | ||
| 61 | (defun rng-substq (new old list) | 41 | (defun rng-substq (new old list) |
| @@ -104,6 +84,14 @@ LIST is not modified." | |||
| 104 | 84 | ||
| 105 | (define-error 'rng-error nil) | 85 | (define-error 'rng-error nil) |
| 106 | 86 | ||
| 87 | ;; Obsolete. | ||
| 88 | |||
| 89 | (defun rng-uniquify-eq (list) | ||
| 90 | (declare (obsolete seq-uniq "28.1")) | ||
| 91 | (seq-uniq list #'eq)) | ||
| 92 | |||
| 93 | (define-obsolete-function-alias 'rng-uniquify-equal #'seq-uniq "28.1") | ||
| 94 | |||
| 107 | (provide 'rng-util) | 95 | (provide 'rng-util) |
| 108 | 96 | ||
| 109 | ;;; rng-util.el ends here | 97 | ;;; rng-util.el ends here |
diff --git a/lisp/pcomplete.el b/lisp/pcomplete.el index b648ecf0986..64acc416c23 100644 --- a/lisp/pcomplete.el +++ b/lisp/pcomplete.el | |||
| @@ -1260,18 +1260,9 @@ If specific documentation can't be given, be generic." | |||
| 1260 | 1260 | ||
| 1261 | (defun pcomplete-uniquify-list (l) | 1261 | (defun pcomplete-uniquify-list (l) |
| 1262 | "Sort and remove multiples in L." | 1262 | "Sort and remove multiples in L." |
| 1263 | (setq l (sort l 'string-lessp)) | 1263 | (setq l (sort l #'string-lessp)) |
| 1264 | (let ((m l)) | 1264 | (seq-uniq l)) |
| 1265 | (while m | 1265 | (define-obsolete-function-alias 'pcomplete-uniqify-list #'pcomplete-uniquify-list "27.1") |
| 1266 | (while (and (cdr m) | ||
| 1267 | (string= (car m) | ||
| 1268 | (cadr m))) | ||
| 1269 | (setcdr m (cddr m))) | ||
| 1270 | (setq m (cdr m)))) | ||
| 1271 | l) | ||
| 1272 | (define-obsolete-function-alias | ||
| 1273 | 'pcomplete-uniqify-list | ||
| 1274 | 'pcomplete-uniquify-list "27.1") | ||
| 1275 | 1266 | ||
| 1276 | (defun pcomplete-process-result (cmd &rest args) | 1267 | (defun pcomplete-process-result (cmd &rest args) |
| 1277 | "Call CMD using `call-process' and return the simplest result." | 1268 | "Call CMD using `call-process' and return the simplest result." |
| @@ -1320,18 +1311,6 @@ If specific documentation can't be given, be generic." | |||
| 1320 | (pcomplete-read-hosts pcomplete-hosts-file 'pcomplete--host-name-cache | 1311 | (pcomplete-read-hosts pcomplete-hosts-file 'pcomplete--host-name-cache |
| 1321 | 'pcomplete--host-name-cache-timestamp))) | 1312 | 'pcomplete--host-name-cache-timestamp))) |
| 1322 | 1313 | ||
| 1323 | ;; create a set of aliases which allow completion functions to be not | ||
| 1324 | ;; quite so verbose | ||
| 1325 | |||
| 1326 | ;;; jww (1999-10-20): are these a good idea? | ||
| 1327 | ;; (defalias 'pc-here 'pcomplete-here) | ||
| 1328 | ;; (defalias 'pc-test 'pcomplete-test) | ||
| 1329 | ;; (defalias 'pc-opt 'pcomplete-opt) | ||
| 1330 | ;; (defalias 'pc-match 'pcomplete-match) | ||
| 1331 | ;; (defalias 'pc-match-string 'pcomplete-match-string) | ||
| 1332 | ;; (defalias 'pc-match-beginning 'pcomplete-match-beginning) | ||
| 1333 | ;; (defalias 'pc-match-end 'pcomplete-match-end) | ||
| 1334 | |||
| 1335 | (provide 'pcomplete) | 1314 | (provide 'pcomplete) |
| 1336 | 1315 | ||
| 1337 | ;;; pcomplete.el ends here | 1316 | ;;; pcomplete.el ends here |
diff --git a/lisp/pixel-scroll.el b/lisp/pixel-scroll.el index 68dc0fb94b3..78b8259b395 100644 --- a/lisp/pixel-scroll.el +++ b/lisp/pixel-scroll.el | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | ;;; pixel-scroll.el --- Scroll a line smoothly | 1 | ;;; pixel-scroll.el --- Scroll a line smoothly -*- lexical-binding: t -*- |
| 2 | 2 | ||
| 3 | ;; Copyright (C) 2017-2021 Free Software Foundation, Inc. | 3 | ;; Copyright (C) 2017-2021 Free Software Foundation, Inc. |
| 4 | ;; Author: Tak Kunihiro <tkk@misasa.okayama-u.ac.jp> | 4 | ;; Author: Tak Kunihiro <tkk@misasa.okayama-u.ac.jp> |
| @@ -124,7 +124,7 @@ This is an alternative of `scroll-up'. Scope moves downward." | |||
| 124 | (or arg (setq arg 1)) | 124 | (or arg (setq arg 1)) |
| 125 | (if (pixel-scroll-in-rush-p) | 125 | (if (pixel-scroll-in-rush-p) |
| 126 | (scroll-up arg) | 126 | (scroll-up arg) |
| 127 | (dotimes (ii arg) ; move scope downward | 127 | (dotimes (_ arg) ; move scope downward |
| 128 | (let ((amt (if pixel-resolution-fine-flag | 128 | (let ((amt (if pixel-resolution-fine-flag |
| 129 | (if (integerp pixel-resolution-fine-flag) | 129 | (if (integerp pixel-resolution-fine-flag) |
| 130 | pixel-resolution-fine-flag | 130 | pixel-resolution-fine-flag |
| @@ -145,7 +145,7 @@ This is and alternative of `scroll-down'. Scope moves upward." | |||
| 145 | (or arg (setq arg 1)) | 145 | (or arg (setq arg 1)) |
| 146 | (if (pixel-scroll-in-rush-p) | 146 | (if (pixel-scroll-in-rush-p) |
| 147 | (scroll-down arg) | 147 | (scroll-down arg) |
| 148 | (dotimes (ii arg) | 148 | (dotimes (_ arg) |
| 149 | (let ((amt (if pixel-resolution-fine-flag | 149 | (let ((amt (if pixel-resolution-fine-flag |
| 150 | (if (integerp pixel-resolution-fine-flag) | 150 | (if (integerp pixel-resolution-fine-flag) |
| 151 | pixel-resolution-fine-flag | 151 | pixel-resolution-fine-flag |
| @@ -244,7 +244,7 @@ that was scrolled." | |||
| 244 | (dst (* line height)) ; goal @25 @25 @92 | 244 | (dst (* line height)) ; goal @25 @25 @92 |
| 245 | (delta (- dst src))) ; pixels to be scrolled 25 17 4 | 245 | (delta (- dst src))) ; pixels to be scrolled 25 17 4 |
| 246 | (pixel--whistlestop-pixel-up (1- delta)) ; until one less @24 @24 @91 | 246 | (pixel--whistlestop-pixel-up (1- delta)) ; until one less @24 @24 @91 |
| 247 | (dotimes (ii line) | 247 | (dotimes (_ line) |
| 248 | ;; On horizontal scrolling, move cursor. | 248 | ;; On horizontal scrolling, move cursor. |
| 249 | (when (> (window-hscroll) 0) | 249 | (when (> (window-hscroll) 0) |
| 250 | (vertical-motion 1)) | 250 | (vertical-motion 1)) |
diff --git a/lisp/play/bubbles.el b/lisp/play/bubbles.el index 50f65a1215e..e695a75e083 100644 --- a/lisp/play/bubbles.el +++ b/lisp/play/bubbles.el | |||
| @@ -72,9 +72,6 @@ | |||
| 72 | 72 | ||
| 73 | ;;; Code: | 73 | ;;; Code: |
| 74 | 74 | ||
| 75 | (defconst bubbles-version "0.5" "Version number of bubbles.el.") | ||
| 76 | (make-obsolete-variable 'bubbles-version nil "28.1") | ||
| 77 | |||
| 78 | (require 'gamegrid) | 75 | (require 'gamegrid) |
| 79 | 76 | ||
| 80 | ;; User options | 77 | ;; User options |
| @@ -1405,6 +1402,11 @@ Return t if new char is non-empty." | |||
| 1405 | (forward-char 1))) | 1402 | (forward-char 1))) |
| 1406 | (put-text-property (point-min) (point-max) 'pointer 'arrow))))) | 1403 | (put-text-property (point-min) (point-max) 'pointer 'arrow))))) |
| 1407 | 1404 | ||
| 1405 | ;; Obsolete. | ||
| 1406 | |||
| 1407 | (defconst bubbles-version "0.5" "Version number of bubbles.el.") | ||
| 1408 | (make-obsolete-variable 'bubbles-version 'emacs-version "28.1") | ||
| 1409 | |||
| 1408 | (provide 'bubbles) | 1410 | (provide 'bubbles) |
| 1409 | 1411 | ||
| 1410 | ;;; bubbles.el ends here | 1412 | ;;; bubbles.el ends here |
diff --git a/lisp/progmodes/cc-styles.el b/lisp/progmodes/cc-styles.el index aec259f1b38..29cbe54c3bd 100644 --- a/lisp/progmodes/cc-styles.el +++ b/lisp/progmodes/cc-styles.el | |||
| @@ -476,8 +476,8 @@ and exists only for compatibility reasons." | |||
| 476 | (if current-prefix-arg " or add" "") | 476 | (if current-prefix-arg " or add" "") |
| 477 | ": ") | 477 | ": ") |
| 478 | (mapcar | 478 | (mapcar |
| 479 | #'(lambda (langelem) | 479 | (lambda (langelem) |
| 480 | (cons (format "%s" (car langelem)) nil)) | 480 | (cons (format "%s" (car langelem)) nil)) |
| 481 | (get 'c-offsets-alist 'c-stylevar-fallback)) | 481 | (get 'c-offsets-alist 'c-stylevar-fallback)) |
| 482 | nil (not current-prefix-arg) | 482 | nil (not current-prefix-arg) |
| 483 | ;; initial contents tries to be the last element | 483 | ;; initial contents tries to be the last element |
diff --git a/lisp/progmodes/cfengine.el b/lisp/progmodes/cfengine.el index 472788d18e5..4649e506541 100644 --- a/lisp/progmodes/cfengine.el +++ b/lisp/progmodes/cfengine.el | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | ;;; cfengine.el --- mode for editing Cfengine files | 1 | ;;; cfengine.el --- mode for editing Cfengine files -*- lexical-binding: t; -*- |
| 2 | 2 | ||
| 3 | ;; Copyright (C) 2001-2021 Free Software Foundation, Inc. | 3 | ;; Copyright (C) 2001-2021 Free Software Foundation, Inc. |
| 4 | 4 | ||
| @@ -1440,7 +1440,7 @@ to the action header." | |||
| 1440 | (cfengine3-mode) | 1440 | (cfengine3-mode) |
| 1441 | (cfengine2-mode))) | 1441 | (cfengine2-mode))) |
| 1442 | 1442 | ||
| 1443 | (defalias 'cfengine-mode 'cfengine3-mode) | 1443 | (defalias 'cfengine-mode #'cfengine3-mode) |
| 1444 | 1444 | ||
| 1445 | (provide 'cfengine3) | 1445 | (provide 'cfengine3) |
| 1446 | (provide 'cfengine) | 1446 | (provide 'cfengine) |
diff --git a/lisp/progmodes/cperl-mode.el b/lisp/progmodes/cperl-mode.el index 7612f8d284a..7878e91096c 100644 --- a/lisp/progmodes/cperl-mode.el +++ b/lisp/progmodes/cperl-mode.el | |||
| @@ -3608,7 +3608,8 @@ the sections using `cperl-pod-head-face', `cperl-pod-face', | |||
| 3608 | ;; 1+6+2+1+1+6+1+1+1=20 extra () before this: | 3608 | ;; 1+6+2+1+1+6+1+1+1=20 extra () before this: |
| 3609 | "\\|" | 3609 | "\\|" |
| 3610 | "\\\\\\(['`\"($]\\)") ; BACKWACKED something-hairy | 3610 | "\\\\\\(['`\"($]\\)") ; BACKWACKED something-hairy |
| 3611 | "")))) | 3611 | ""))) |
| 3612 | warning-message) | ||
| 3612 | (unwind-protect | 3613 | (unwind-protect |
| 3613 | (progn | 3614 | (progn |
| 3614 | (save-excursion | 3615 | (save-excursion |
| @@ -3671,7 +3672,7 @@ the sections using `cperl-pod-head-face', `cperl-pod-face', | |||
| 3671 | (looking-at "\\(cut\\|end\\)\\>")) | 3672 | (looking-at "\\(cut\\|end\\)\\>")) |
| 3672 | (if (or (nth 3 state) (nth 4 state) ignore-max) | 3673 | (if (or (nth 3 state) (nth 4 state) ignore-max) |
| 3673 | nil ; Doing a chunk only | 3674 | nil ; Doing a chunk only |
| 3674 | (message "=cut is not preceded by a POD section") | 3675 | (setq warning-message "=cut is not preceded by a POD section") |
| 3675 | (or (car err-l) (setcar err-l (point)))) | 3676 | (or (car err-l) (setcar err-l (point)))) |
| 3676 | (beginning-of-line) | 3677 | (beginning-of-line) |
| 3677 | 3678 | ||
| @@ -3686,7 +3687,7 @@ the sections using `cperl-pod-head-face', `cperl-pod-face', | |||
| 3686 | (goto-char b) | 3687 | (goto-char b) |
| 3687 | (if (re-search-forward "\n=\\(cut\\|end\\)\\>" stop-point 'toend) | 3688 | (if (re-search-forward "\n=\\(cut\\|end\\)\\>" stop-point 'toend) |
| 3688 | (progn | 3689 | (progn |
| 3689 | (message "=cut is not preceded by an empty line") | 3690 | (setq warning-message "=cut is not preceded by an empty line") |
| 3690 | (setq b1 t) | 3691 | (setq b1 t) |
| 3691 | (or (car err-l) (setcar err-l b)))))) | 3692 | (or (car err-l) (setcar err-l b)))))) |
| 3692 | (beginning-of-line 2) ; An empty line after =cut is not POD! | 3693 | (beginning-of-line 2) ; An empty line after =cut is not POD! |
| @@ -3829,7 +3830,8 @@ the sections using `cperl-pod-head-face', `cperl-pod-face', | |||
| 3829 | (progn ; Pretend we matched at the end | 3830 | (progn ; Pretend we matched at the end |
| 3830 | (goto-char (point-max)) | 3831 | (goto-char (point-max)) |
| 3831 | (re-search-forward "\\'") | 3832 | (re-search-forward "\\'") |
| 3832 | (message "End of here-document `%s' not found." tag) | 3833 | (setq warning-message |
| 3834 | (format "End of here-document `%s' not found." tag)) | ||
| 3833 | (or (car err-l) (setcar err-l b)))) | 3835 | (or (car err-l) (setcar err-l b)))) |
| 3834 | (if cperl-pod-here-fontify | 3836 | (if cperl-pod-here-fontify |
| 3835 | (progn | 3837 | (progn |
| @@ -3906,7 +3908,8 @@ the sections using `cperl-pod-head-face', `cperl-pod-face', | |||
| 3906 | 'face font-lock-string-face) | 3908 | 'face font-lock-string-face) |
| 3907 | (cperl-commentify (point) (+ (point) 2) nil) | 3909 | (cperl-commentify (point) (+ (point) 2) nil) |
| 3908 | (cperl-put-do-not-fontify (point) (+ (point) 2) t)) | 3910 | (cperl-put-do-not-fontify (point) (+ (point) 2) t)) |
| 3909 | (message "End of format `%s' not found." name) | 3911 | (setq warning-message |
| 3912 | (format "End of format `%s' not found." name)) | ||
| 3910 | (or (car err-l) (setcar err-l b))) | 3913 | (or (car err-l) (setcar err-l b))) |
| 3911 | (forward-line) | 3914 | (forward-line) |
| 3912 | (if (> (point) max) | 3915 | (if (> (point) max) |
| @@ -4426,8 +4429,9 @@ the sections using `cperl-pod-head-face', `cperl-pod-face', | |||
| 4426 | REx-subgr-end argument) ; continue | 4429 | REx-subgr-end argument) ; continue |
| 4427 | (setq argument nil))) | 4430 | (setq argument nil))) |
| 4428 | (and argument | 4431 | (and argument |
| 4429 | (message "Couldn't find end of charclass in a REx, pos=%s" | 4432 | (setq warning-message |
| 4430 | REx-subgr-start)) | 4433 | (format "Couldn't find end of charclass in a REx, pos=%s" |
| 4434 | REx-subgr-start))) | ||
| 4431 | (setq argument (1- (point))) | 4435 | (setq argument (1- (point))) |
| 4432 | (goto-char REx-subgr-end) | 4436 | (goto-char REx-subgr-end) |
| 4433 | (cperl-highlight-charclass | 4437 | (cperl-highlight-charclass |
| @@ -4483,7 +4487,8 @@ the sections using `cperl-pod-head-face', `cperl-pod-face', | |||
| 4483 | (setq qtag "Can't find })"))) | 4487 | (setq qtag "Can't find })"))) |
| 4484 | (progn | 4488 | (progn |
| 4485 | (goto-char (1- e)) | 4489 | (goto-char (1- e)) |
| 4486 | (message "%s" qtag)) | 4490 | (setq warning-message |
| 4491 | (format "%s" qtag))) | ||
| 4487 | (cperl-postpone-fontification | 4492 | (cperl-postpone-fontification |
| 4488 | (1- tag) (1- (point)) | 4493 | (1- tag) (1- (point)) |
| 4489 | 'face font-lock-variable-name-face) | 4494 | 'face font-lock-variable-name-face) |
| @@ -4512,9 +4517,9 @@ the sections using `cperl-pod-head-face', `cperl-pod-face', | |||
| 4512 | ;; (1- e) 'toend) | 4517 | ;; (1- e) 'toend) |
| 4513 | (search-forward ")" (1- e) 'toend) | 4518 | (search-forward ")" (1- e) 'toend) |
| 4514 | ;;) | 4519 | ;;) |
| 4515 | (message | 4520 | (setq warning-message |
| 4516 | "Couldn't find end of (?#...)-comment in a REx, pos=%s" | 4521 | (format "Couldn't find end of (?#...)-comment in a REx, pos=%s" |
| 4517 | REx-subgr-start)))) | 4522 | REx-subgr-start))))) |
| 4518 | (if (>= (point) e) | 4523 | (if (>= (point) e) |
| 4519 | (goto-char (1- e))) | 4524 | (goto-char (1- e))) |
| 4520 | (cond | 4525 | (cond |
| @@ -4592,8 +4597,8 @@ the sections using `cperl-pod-head-face', `cperl-pod-face', | |||
| 4592 | (if (> (point) stop-point) | 4597 | (if (> (point) stop-point) |
| 4593 | (progn | 4598 | (progn |
| 4594 | (if end | 4599 | (if end |
| 4595 | (message "Garbage after __END__/__DATA__ ignored") | 4600 | (setq warning-message "Garbage after __END__/__DATA__ ignored") |
| 4596 | (message "Unbalanced syntax found while scanning") | 4601 | (setq warning-message "Unbalanced syntax found while scanning") |
| 4597 | (or (car err-l) (setcar err-l b))) | 4602 | (or (car err-l) (setcar err-l b))) |
| 4598 | (goto-char stop-point)))) | 4603 | (goto-char stop-point)))) |
| 4599 | (setq cperl-syntax-state (cons state-point state) | 4604 | (setq cperl-syntax-state (cons state-point state) |
| @@ -4612,6 +4617,7 @@ the sections using `cperl-pod-head-face', `cperl-pod-face', | |||
| 4612 | ;; cperl-mode-syntax-table. | 4617 | ;; cperl-mode-syntax-table. |
| 4613 | ;; (set-syntax-table cperl-mode-syntax-table) | 4618 | ;; (set-syntax-table cperl-mode-syntax-table) |
| 4614 | ) | 4619 | ) |
| 4620 | (when warning-message (message warning-message)) | ||
| 4615 | (list (car err-l) overshoot))) | 4621 | (list (car err-l) overshoot))) |
| 4616 | 4622 | ||
| 4617 | (defun cperl-find-pods-heres-region (min max) | 4623 | (defun cperl-find-pods-heres-region (min max) |
diff --git a/lisp/progmodes/dcl-mode.el b/lisp/progmodes/dcl-mode.el index 14eefdca1e6..ed024f24344 100644 --- a/lisp/progmodes/dcl-mode.el +++ b/lisp/progmodes/dcl-mode.el | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | ;;; dcl-mode.el --- major mode for editing DCL command files | 1 | ;;; dcl-mode.el --- major mode for editing DCL command files -*- lexical-binding: t; -*- |
| 2 | 2 | ||
| 3 | ;; Copyright (C) 1997, 2001-2021 Free Software Foundation, Inc. | 3 | ;; Copyright (C) 1997, 2001-2021 Free Software Foundation, Inc. |
| 4 | 4 | ||
| @@ -23,9 +23,11 @@ | |||
| 23 | 23 | ||
| 24 | ;;; Commentary: | 24 | ;;; Commentary: |
| 25 | 25 | ||
| 26 | ;; DCL mode is a package for editing DCL command files. It helps you | 26 | ;; DCL mode is a package for editing |
| 27 | ;; indent lines, add leading `$' and trailing `-', move around in the | 27 | ;; [DCL](https://en.wikipedia.org/wiki/DIGITAL_Command_Language) |
| 28 | ;; code and insert lexical functions. | 28 | ;; command files. |
| 29 | ;; It helps you indent lines, add leading `$' and trailing `-', move | ||
| 30 | ;; around in the code and insert lexical functions. | ||
| 29 | ;; | 31 | ;; |
| 30 | ;; Type `C-h m' when you are editing a .COM file to get more | 32 | ;; Type `C-h m' when you are editing a .COM file to get more |
| 31 | ;; information about this mode. | 33 | ;; information about this mode. |
| @@ -270,22 +272,22 @@ See `imenu-generic-expression' for details." | |||
| 270 | 272 | ||
| 271 | (defvar dcl-mode-map | 273 | (defvar dcl-mode-map |
| 272 | (let ((map (make-sparse-keymap))) | 274 | (let ((map (make-sparse-keymap))) |
| 273 | (define-key map "\e\n" 'dcl-split-line) | 275 | (define-key map "\e\n" #'dcl-split-line) |
| 274 | (define-key map "\e\t" 'tempo-complete-tag) | 276 | (define-key map "\e\t" #'tempo-complete-tag) |
| 275 | (define-key map "\e^" 'dcl-delete-indentation) | 277 | (define-key map "\e^" #'dcl-delete-indentation) |
| 276 | (define-key map "\em" 'dcl-back-to-indentation) | 278 | (define-key map "\em" #'dcl-back-to-indentation) |
| 277 | (define-key map "\ee" 'dcl-forward-command) | 279 | (define-key map "\ee" #'dcl-forward-command) |
| 278 | (define-key map "\ea" 'dcl-backward-command) | 280 | (define-key map "\ea" #'dcl-backward-command) |
| 279 | (define-key map "\e\C-q" 'dcl-indent-command) | 281 | (define-key map "\e\C-q" #'dcl-indent-command) |
| 280 | (define-key map "\t" 'dcl-tab) | 282 | (define-key map "\t" #'dcl-tab) |
| 281 | (define-key map ":" 'dcl-electric-character) | 283 | (define-key map ":" #'dcl-electric-character) |
| 282 | (define-key map "F" 'dcl-electric-character) | 284 | (define-key map "F" #'dcl-electric-character) |
| 283 | (define-key map "f" 'dcl-electric-character) | 285 | (define-key map "f" #'dcl-electric-character) |
| 284 | (define-key map "E" 'dcl-electric-character) | 286 | (define-key map "E" #'dcl-electric-character) |
| 285 | (define-key map "e" 'dcl-electric-character) | 287 | (define-key map "e" #'dcl-electric-character) |
| 286 | (define-key map "\C-c\C-o" 'dcl-set-option) | 288 | (define-key map "\C-c\C-o" #'dcl-set-option) |
| 287 | (define-key map "\C-c\C-f" 'tempo-forward-mark) | 289 | (define-key map "\C-c\C-f" #'tempo-forward-mark) |
| 288 | (define-key map "\C-c\C-b" 'tempo-backward-mark) | 290 | (define-key map "\C-c\C-b" #'tempo-backward-mark) |
| 289 | map) | 291 | map) |
| 290 | "Keymap used in DCL-mode buffers.") | 292 | "Keymap used in DCL-mode buffers.") |
| 291 | 293 | ||
| @@ -533,7 +535,7 @@ $ | |||
| 533 | 535 | ||
| 534 | There is some minimal font-lock support (see vars | 536 | There is some minimal font-lock support (see vars |
| 535 | `dcl-font-lock-defaults' and `dcl-font-lock-keywords')." | 537 | `dcl-font-lock-defaults' and `dcl-font-lock-keywords')." |
| 536 | (setq-local indent-line-function 'dcl-indent-line) | 538 | (setq-local indent-line-function #'dcl-indent-line) |
| 537 | (setq-local comment-start "!") | 539 | (setq-local comment-start "!") |
| 538 | (setq-local comment-end "") | 540 | (setq-local comment-end "") |
| 539 | (setq-local comment-multi-line nil) | 541 | (setq-local comment-multi-line nil) |
| @@ -547,7 +549,7 @@ There is some minimal font-lock support (see vars | |||
| 547 | 549 | ||
| 548 | (setq imenu-generic-expression dcl-imenu-generic-expression) | 550 | (setq imenu-generic-expression dcl-imenu-generic-expression) |
| 549 | (setq imenu-case-fold-search t) | 551 | (setq imenu-case-fold-search t) |
| 550 | (setq imenu-create-index-function 'dcl-imenu-create-index-function) | 552 | (setq imenu-create-index-function #'dcl-imenu-create-index-function) |
| 551 | 553 | ||
| 552 | (make-local-variable 'dcl-comment-line-regexp) | 554 | (make-local-variable 'dcl-comment-line-regexp) |
| 553 | (make-local-variable 'dcl-block-begin-regexp) | 555 | (make-local-variable 'dcl-block-begin-regexp) |
| @@ -1391,7 +1393,7 @@ regexps in `dcl-electric-reindent-regexps'." | |||
| 1391 | (let ((case-fold-search t)) | 1393 | (let ((case-fold-search t)) |
| 1392 | ;; There must be a better way than (memq t ...). | 1394 | ;; There must be a better way than (memq t ...). |
| 1393 | ;; (apply 'or ...) didn't work | 1395 | ;; (apply 'or ...) didn't work |
| 1394 | (if (memq t (mapcar 'dcl-was-looking-at dcl-electric-reindent-regexps)) | 1396 | (if (memq t (mapcar #'dcl-was-looking-at dcl-electric-reindent-regexps)) |
| 1395 | (dcl-indent-line))))) | 1397 | (dcl-indent-line))))) |
| 1396 | 1398 | ||
| 1397 | 1399 | ||
| @@ -1567,7 +1569,7 @@ Must return a string." | |||
| 1567 | ((fboundp action) | 1569 | ((fboundp action) |
| 1568 | (funcall action option-assoc)) | 1570 | (funcall action option-assoc)) |
| 1569 | ((eq action 'toggle) | 1571 | ((eq action 'toggle) |
| 1570 | (not (eval option))) | 1572 | (not (symbol-value option))) |
| 1571 | ((eq action 'curval) | 1573 | ((eq action 'curval) |
| 1572 | (cond ((or (stringp (symbol-value option)) | 1574 | (cond ((or (stringp (symbol-value option)) |
| 1573 | (numberp (symbol-value option))) | 1575 | (numberp (symbol-value option))) |
| @@ -1735,7 +1737,7 @@ Set or update the value of VAR in the current buffers | |||
| 1735 | (setq continue nil) | 1737 | (setq continue nil) |
| 1736 | (beginning-of-line) | 1738 | (beginning-of-line) |
| 1737 | (insert (concat prefix-string (symbol-name var) ": " | 1739 | (insert (concat prefix-string (symbol-name var) ": " |
| 1738 | (prin1-to-string (eval var)) " " | 1740 | (prin1-to-string (symbol-value var)) " " |
| 1739 | suffix-string "\n"))) | 1741 | suffix-string "\n"))) |
| 1740 | ;; Is it the variable we are looking for? | 1742 | ;; Is it the variable we are looking for? |
| 1741 | (if (eq var found-var) | 1743 | (if (eq var found-var) |
| @@ -1748,7 +1750,7 @@ Set or update the value of VAR in the current buffers | |||
| 1748 | (delete-region (point) (progn (read (current-buffer)) | 1750 | (delete-region (point) (progn (read (current-buffer)) |
| 1749 | (point))) | 1751 | (point))) |
| 1750 | (insert " ") | 1752 | (insert " ") |
| 1751 | (prin1 (eval var) (current-buffer)) | 1753 | (prin1 (symbol-value var) (current-buffer)) |
| 1752 | (skip-chars-backward "\n") | 1754 | (skip-chars-backward "\n") |
| 1753 | (skip-chars-forward " \t") | 1755 | (skip-chars-forward " \t") |
| 1754 | (or (if suffix (looking-at suffix) (eolp)) | 1756 | (or (if suffix (looking-at suffix) (eolp)) |
| @@ -1781,7 +1783,7 @@ Set or update the value of VAR in the current buffers | |||
| 1781 | (concat " " comment-end)))))) | 1783 | (concat " " comment-end)))))) |
| 1782 | (insert (concat def-prefix "Local variables:" def-suffix "\n")) | 1784 | (insert (concat def-prefix "Local variables:" def-suffix "\n")) |
| 1783 | (insert (concat def-prefix (symbol-name var) ": " | 1785 | (insert (concat def-prefix (symbol-name var) ": " |
| 1784 | (prin1-to-string (eval var)) def-suffix "\n")) | 1786 | (prin1-to-string (symbol-value var)) def-suffix "\n")) |
| 1785 | (insert (concat def-prefix "end:" def-suffix))) | 1787 | (insert (concat def-prefix "end:" def-suffix))) |
| 1786 | ))) | 1788 | ))) |
| 1787 | 1789 | ||
| @@ -1815,7 +1817,8 @@ still be present in the `Local Variables:' section with its old value." | |||
| 1815 | (option-name (symbol-name option))) | 1817 | (option-name (symbol-name option))) |
| 1816 | (if (and (string-equal "dcl-" | 1818 | (if (and (string-equal "dcl-" |
| 1817 | (substring option-name 0 4)) | 1819 | (substring option-name 0 4)) |
| 1818 | (not (equal (default-value option) (eval option)))) | 1820 | (not (equal (default-value option) |
| 1821 | (symbol-value option)))) | ||
| 1819 | (dcl-save-local-variable option "$! ")))) | 1822 | (dcl-save-local-variable option "$! ")))) |
| 1820 | dcl-option-alist)) | 1823 | dcl-option-alist)) |
| 1821 | 1824 | ||
diff --git a/lisp/progmodes/ebnf-yac.el b/lisp/progmodes/ebnf-yac.el index 5abf1debb15..816cc432d1b 100644 --- a/lisp/progmodes/ebnf-yac.el +++ b/lisp/progmodes/ebnf-yac.el | |||
| @@ -271,13 +271,13 @@ | |||
| 271 | (let ((table (make-vector 256 'error))) | 271 | (let ((table (make-vector 256 'error))) |
| 272 | ;; upper & lower case letters: | 272 | ;; upper & lower case letters: |
| 273 | (mapc | 273 | (mapc |
| 274 | #'(lambda (char) | 274 | (lambda (char) |
| 275 | (aset table char 'non-terminal)) | 275 | (aset table char 'non-terminal)) |
| 276 | "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz") | 276 | "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz") |
| 277 | ;; printable characters: | 277 | ;; printable characters: |
| 278 | (mapc | 278 | (mapc |
| 279 | #'(lambda (char) | 279 | (lambda (char) |
| 280 | (aset table char 'character)) | 280 | (aset table char 'character)) |
| 281 | "!#$&()*+-.0123456789=?@[\\]^_`~") | 281 | "!#$&()*+-.0123456789=?@[\\]^_`~") |
| 282 | ;; Override space characters: | 282 | ;; Override space characters: |
| 283 | (aset table ?\n 'space) ; [NL] linefeed | 283 | (aset table ?\n 'space) ; [NL] linefeed |
diff --git a/lisp/progmodes/ebnf2ps.el b/lisp/progmodes/ebnf2ps.el index 7092d2c1d1f..a00440d898c 100644 --- a/lisp/progmodes/ebnf2ps.el +++ b/lisp/progmodes/ebnf2ps.el | |||
| @@ -4398,8 +4398,8 @@ end | |||
| 4398 | 4398 | ||
| 4399 | (defun ebnf-format-float (&rest floats) | 4399 | (defun ebnf-format-float (&rest floats) |
| 4400 | (mapconcat | 4400 | (mapconcat |
| 4401 | #'(lambda (float) | 4401 | (lambda (float) |
| 4402 | (format ebnf-format-float float)) | 4402 | (format ebnf-format-float float)) |
| 4403 | floats | 4403 | floats |
| 4404 | " ")) | 4404 | " ")) |
| 4405 | 4405 | ||
| @@ -4959,8 +4959,8 @@ killed after process termination." | |||
| 4959 | 4959 | ||
| 4960 | (defvar ebnf-map-name | 4960 | (defvar ebnf-map-name |
| 4961 | (let ((map (make-vector 256 ?\_))) | 4961 | (let ((map (make-vector 256 ?\_))) |
| 4962 | (mapc #'(lambda (char) | 4962 | (mapc (lambda (char) |
| 4963 | (aset map char char)) | 4963 | (aset map char char)) |
| 4964 | (concat "#$%&+-.0123456789=?@~" | 4964 | (concat "#$%&+-.0123456789=?@~" |
| 4965 | "ABCDEFGHIJKLMNOPQRSTUVWXYZ" | 4965 | "ABCDEFGHIJKLMNOPQRSTUVWXYZ" |
| 4966 | "abcdefghijklmnopqrstuvwxyz")) | 4966 | "abcdefghijklmnopqrstuvwxyz")) |
diff --git a/lisp/progmodes/executable.el b/lisp/progmodes/executable.el index 85e9b4bb882..0d8b09c33c1 100644 --- a/lisp/progmodes/executable.el +++ b/lisp/progmodes/executable.el | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | ;;; executable.el --- base functionality for executable interpreter scripts | 1 | ;;; executable.el --- base functionality for executable interpreter scripts -*- lexical-binding: t -*- |
| 2 | 2 | ||
| 3 | ;; Copyright (C) 1994-1996, 2000-2021 Free Software Foundation, Inc. | 3 | ;; Copyright (C) 1994-1996, 2000-2021 Free Software Foundation, Inc. |
| 4 | 4 | ||
diff --git a/lisp/progmodes/grep.el b/lisp/progmodes/grep.el index 8c9a1b53b1b..e9fbcbbfcd0 100644 --- a/lisp/progmodes/grep.el +++ b/lisp/progmodes/grep.el | |||
| @@ -1134,13 +1134,13 @@ command before it's run." | |||
| 1134 | (and grep-find-ignored-files | 1134 | (and grep-find-ignored-files |
| 1135 | (concat " --exclude=" | 1135 | (concat " --exclude=" |
| 1136 | (mapconcat | 1136 | (mapconcat |
| 1137 | #'(lambda (ignore) | 1137 | (lambda (ignore) |
| 1138 | (cond ((stringp ignore) | 1138 | (cond ((stringp ignore) |
| 1139 | (shell-quote-argument ignore)) | 1139 | (shell-quote-argument ignore)) |
| 1140 | ((consp ignore) | 1140 | ((consp ignore) |
| 1141 | (and (funcall (car ignore) dir) | 1141 | (and (funcall (car ignore) dir) |
| 1142 | (shell-quote-argument | 1142 | (shell-quote-argument |
| 1143 | (cdr ignore)))))) | 1143 | (cdr ignore)))))) |
| 1144 | grep-find-ignored-files | 1144 | grep-find-ignored-files |
| 1145 | " --exclude="))) | 1145 | " --exclude="))) |
| 1146 | (and (eq grep-use-directories-skip t) | 1146 | (and (eq grep-use-directories-skip t) |
| @@ -1274,13 +1274,13 @@ command before it's run." | |||
| 1274 | ;; we should use shell-quote-argument here | 1274 | ;; we should use shell-quote-argument here |
| 1275 | " -name " | 1275 | " -name " |
| 1276 | (mapconcat | 1276 | (mapconcat |
| 1277 | #'(lambda (ignore) | 1277 | (lambda (ignore) |
| 1278 | (cond ((stringp ignore) | 1278 | (cond ((stringp ignore) |
| 1279 | (shell-quote-argument ignore)) | 1279 | (shell-quote-argument ignore)) |
| 1280 | ((consp ignore) | 1280 | ((consp ignore) |
| 1281 | (and (funcall (car ignore) dir) | 1281 | (and (funcall (car ignore) dir) |
| 1282 | (shell-quote-argument | 1282 | (shell-quote-argument |
| 1283 | (cdr ignore)))))) | 1283 | (cdr ignore)))))) |
| 1284 | grep-find-ignored-files | 1284 | grep-find-ignored-files |
| 1285 | " -o -name ") | 1285 | " -o -name ") |
| 1286 | " " | 1286 | " " |
diff --git a/lisp/progmodes/idlwave.el b/lisp/progmodes/idlwave.el index f53f3f3b995..75f2016fc24 100644 --- a/lisp/progmodes/idlwave.el +++ b/lisp/progmodes/idlwave.el | |||
| @@ -7601,15 +7601,6 @@ associated TAG, if any." | |||
| 7601 | (put-text-property (match-beginning 0) (match-end 0) | 7601 | (put-text-property (match-beginning 0) (match-end 0) |
| 7602 | 'face 'font-lock-string-face)))))) | 7602 | 'face 'font-lock-string-face)))))) |
| 7603 | 7603 | ||
| 7604 | (defun idlwave-uniquify (list) | ||
| 7605 | (let ((ht (make-hash-table :size (length list) :test 'equal))) | ||
| 7606 | (delq nil | ||
| 7607 | (mapcar (lambda (x) | ||
| 7608 | (unless (gethash x ht) | ||
| 7609 | (puthash x t ht) | ||
| 7610 | x)) | ||
| 7611 | list)))) | ||
| 7612 | |||
| 7613 | (defun idlwave-after-successful-completion (type slash &optional verify) | 7604 | (defun idlwave-after-successful-completion (type slash &optional verify) |
| 7614 | "Add `=' or `(' after successful completion of keyword and function. | 7605 | "Add `=' or `(' after successful completion of keyword and function. |
| 7615 | Restore the pre-completion window configuration if possible." | 7606 | Restore the pre-completion window configuration if possible." |
| @@ -9101,6 +9092,9 @@ This function was written since `list-abbrevs' looks terrible for IDLWAVE mode." | |||
| 9101 | ;; Run the hook | 9092 | ;; Run the hook |
| 9102 | (run-hooks 'idlwave-load-hook) | 9093 | (run-hooks 'idlwave-load-hook) |
| 9103 | 9094 | ||
| 9095 | ;; Obsolete. | ||
| 9096 | (define-obsolete-function-alias 'idlwave-uniquify #'seq-uniq "28.1") | ||
| 9097 | |||
| 9104 | (provide 'idlwave) | 9098 | (provide 'idlwave) |
| 9105 | 9099 | ||
| 9106 | ;;; idlwave.el ends here | 9100 | ;;; idlwave.el ends here |
diff --git a/lisp/progmodes/inf-lisp.el b/lisp/progmodes/inf-lisp.el index af6ccce3d62..0a72ae96bba 100644 --- a/lisp/progmodes/inf-lisp.el +++ b/lisp/progmodes/inf-lisp.el | |||
| @@ -1,7 +1,6 @@ | |||
| 1 | ;;; inf-lisp.el --- an inferior-lisp mode | 1 | ;;; inf-lisp.el --- an inferior-lisp mode -*- lexical-binding: t -*- |
| 2 | 2 | ||
| 3 | ;; Copyright (C) 1988, 1993-1994, 2001-2021 Free Software Foundation, | 3 | ;; Copyright (C) 1988-2021 Free Software Foundation, Inc. |
| 4 | ;; Inc. | ||
| 5 | 4 | ||
| 6 | ;; Author: Olin Shivers <shivers@cs.cmu.edu> | 5 | ;; Author: Olin Shivers <shivers@cs.cmu.edu> |
| 7 | ;; Keywords: processes, lisp | 6 | ;; Keywords: processes, lisp |
| @@ -23,13 +22,13 @@ | |||
| 23 | 22 | ||
| 24 | ;;; Commentary: | 23 | ;;; Commentary: |
| 25 | 24 | ||
| 26 | ;; Hacked from tea.el by Olin Shivers (shivers@cs.cmu.edu). 8/88 | 25 | ;; Hacked from tea.el by Olin Shivers (shivers@cs.cmu.edu). 8/88 |
| 27 | 26 | ||
| 28 | ;; This file defines a lisp-in-a-buffer package (inferior-lisp mode) | 27 | ;; This file defines a lisp-in-a-buffer package (inferior-lisp mode) |
| 29 | ;; built on top of comint mode. This version is more featureful, | 28 | ;; built on top of comint mode. This version is more featureful, |
| 30 | ;; robust, and uniform than the Emacs 18 version. The key bindings are | 29 | ;; robust, and uniform than the Emacs 18 version. The key bindings are |
| 31 | ;; also more compatible with the bindings of Hemlock and Zwei (the | 30 | ;; also more compatible with the bindings of Hemlock and Zwei (the |
| 32 | ;; Lisp Machine emacs). | 31 | ;; Lisp Machine Emacs). |
| 33 | 32 | ||
| 34 | ;; Since this mode is built on top of the general command-interpreter-in- | 33 | ;; Since this mode is built on top of the general command-interpreter-in- |
| 35 | ;; a-buffer mode (comint mode), it shares a common base functionality, | 34 | ;; a-buffer mode (comint mode), it shares a common base functionality, |
| @@ -40,19 +39,19 @@ | |||
| 40 | ;; the hooks available for customizing it, see the file comint.el. | 39 | ;; the hooks available for customizing it, see the file comint.el. |
| 41 | ;; For further information on inferior-lisp mode, see the comments below. | 40 | ;; For further information on inferior-lisp mode, see the comments below. |
| 42 | 41 | ||
| 43 | ;; Needs fixin: | 42 | ;; Needs fixing: |
| 44 | ;; The load-file/compile-file default mechanism could be smarter -- it | 43 | ;; The load-file/compile-file default mechanism could be smarter -- it |
| 45 | ;; doesn't know about the relationship between filename extensions and | 44 | ;; doesn't know about the relationship between filename extensions and |
| 46 | ;; whether the file is source or executable. If you compile foo.lisp | 45 | ;; whether the file is source or executable. If you compile foo.lisp |
| 47 | ;; with compile-file, then the next load-file should use foo.bin for | 46 | ;; with compile-file, then the next load-file should use foo.bin for |
| 48 | ;; the default, not foo.lisp. This is tricky to do right, particularly | 47 | ;; the default, not foo.lisp. This is tricky to do right, particularly |
| 49 | ;; because the extension for executable files varies so much (.o, .bin, | 48 | ;; because the extension for executable files varies so much (.o, .bin, |
| 50 | ;; .lbin, .mo, .vo, .ao, ...). | 49 | ;; .lbin, .mo, .vo, .ao, ...). |
| 51 | ;; | 50 | ;; |
| 52 | ;; It would be nice if inferior-lisp (and inferior scheme, T, ...) modes | 51 | ;; It would be nice if inferior-lisp (and inferior scheme, T, ...) modes |
| 53 | ;; had a verbose minor mode wherein sending or compiling defuns, etc. | 52 | ;; had a verbose minor mode wherein sending or compiling defuns, etc. |
| 54 | ;; would be reflected in the transcript with suitable comments, e.g. | 53 | ;; would be reflected in the transcript with suitable comments, e.g. |
| 55 | ;; ";;; redefining fact". Several ways to do this. Which is right? | 54 | ;; ";;; redefining fact". Several ways to do this. Which is right? |
| 56 | ;; | 55 | ;; |
| 57 | ;; When sending text from a source file to a subprocess, the process-mark can | 56 | ;; When sending text from a source file to a subprocess, the process-mark can |
| 58 | ;; move off the window, so you can lose sight of the process interactions. | 57 | ;; move off the window, so you can lose sight of the process interactions. |
| @@ -81,19 +80,19 @@ mode. Default is whitespace followed by 0 or 1 single-letter colon-keyword | |||
| 81 | (defvar inferior-lisp-mode-map | 80 | (defvar inferior-lisp-mode-map |
| 82 | (let ((map (copy-keymap comint-mode-map))) | 81 | (let ((map (copy-keymap comint-mode-map))) |
| 83 | (set-keymap-parent map lisp-mode-shared-map) | 82 | (set-keymap-parent map lisp-mode-shared-map) |
| 84 | (define-key map "\C-x\C-e" 'lisp-eval-last-sexp) | 83 | (define-key map "\C-x\C-e" #'lisp-eval-last-sexp) |
| 85 | (define-key map "\C-c\C-l" 'lisp-load-file) | 84 | (define-key map "\C-c\C-l" #'lisp-load-file) |
| 86 | (define-key map "\C-c\C-k" 'lisp-compile-file) | 85 | (define-key map "\C-c\C-k" #'lisp-compile-file) |
| 87 | (define-key map "\C-c\C-a" 'lisp-show-arglist) | 86 | (define-key map "\C-c\C-a" #'lisp-show-arglist) |
| 88 | (define-key map "\C-c\C-d" 'lisp-describe-sym) | 87 | (define-key map "\C-c\C-d" #'lisp-describe-sym) |
| 89 | (define-key map "\C-c\C-f" 'lisp-show-function-documentation) | 88 | (define-key map "\C-c\C-f" #'lisp-show-function-documentation) |
| 90 | (define-key map "\C-c\C-v" 'lisp-show-variable-documentation) | 89 | (define-key map "\C-c\C-v" #'lisp-show-variable-documentation) |
| 91 | map)) | 90 | map)) |
| 92 | 91 | ||
| 93 | (easy-menu-define | 92 | (easy-menu-define |
| 94 | inferior-lisp-menu | 93 | inferior-lisp-menu |
| 95 | inferior-lisp-mode-map | 94 | inferior-lisp-mode-map |
| 96 | "Inferior Lisp Menu" | 95 | "Inferior Lisp Menu." |
| 97 | '("Inf-Lisp" | 96 | '("Inf-Lisp" |
| 98 | ["Eval Last Sexp" lisp-eval-last-sexp t] | 97 | ["Eval Last Sexp" lisp-eval-last-sexp t] |
| 99 | "--" | 98 | "--" |
| @@ -107,20 +106,20 @@ mode. Default is whitespace followed by 0 or 1 single-letter colon-keyword | |||
| 107 | 106 | ||
| 108 | ;;; These commands augment Lisp mode, so you can process Lisp code in | 107 | ;;; These commands augment Lisp mode, so you can process Lisp code in |
| 109 | ;;; the source files. | 108 | ;;; the source files. |
| 110 | (define-key lisp-mode-map "\M-\C-x" 'lisp-eval-defun) ; GNU convention | 109 | (define-key lisp-mode-map "\M-\C-x" #'lisp-eval-defun) ; GNU convention |
| 111 | (define-key lisp-mode-map "\C-x\C-e" 'lisp-eval-last-sexp) ; GNU convention | 110 | (define-key lisp-mode-map "\C-x\C-e" #'lisp-eval-last-sexp) ; GNU convention |
| 112 | (define-key lisp-mode-map "\C-c\C-e" 'lisp-eval-defun) | 111 | (define-key lisp-mode-map "\C-c\C-e" #'lisp-eval-defun) |
| 113 | (define-key lisp-mode-map "\C-c\C-r" 'lisp-eval-region) | 112 | (define-key lisp-mode-map "\C-c\C-r" #'lisp-eval-region) |
| 114 | (define-key lisp-mode-map "\C-c\C-n" 'lisp-eval-form-and-next) | 113 | (define-key lisp-mode-map "\C-c\C-n" #'lisp-eval-form-and-next) |
| 115 | (define-key lisp-mode-map "\C-c\C-p" 'lisp-eval-paragraph) | 114 | (define-key lisp-mode-map "\C-c\C-p" #'lisp-eval-paragraph) |
| 116 | (define-key lisp-mode-map "\C-c\C-c" 'lisp-compile-defun) | 115 | (define-key lisp-mode-map "\C-c\C-c" #'lisp-compile-defun) |
| 117 | (define-key lisp-mode-map "\C-c\C-z" 'switch-to-lisp) | 116 | (define-key lisp-mode-map "\C-c\C-z" #'switch-to-lisp) |
| 118 | (define-key lisp-mode-map "\C-c\C-l" 'lisp-load-file) | 117 | (define-key lisp-mode-map "\C-c\C-l" #'lisp-load-file) |
| 119 | (define-key lisp-mode-map "\C-c\C-k" 'lisp-compile-file) ; "kompile" file | 118 | (define-key lisp-mode-map "\C-c\C-k" #'lisp-compile-file) ; "kompile" file |
| 120 | (define-key lisp-mode-map "\C-c\C-a" 'lisp-show-arglist) | 119 | (define-key lisp-mode-map "\C-c\C-a" #'lisp-show-arglist) |
| 121 | (define-key lisp-mode-map "\C-c\C-d" 'lisp-describe-sym) | 120 | (define-key lisp-mode-map "\C-c\C-d" #'lisp-describe-sym) |
| 122 | (define-key lisp-mode-map "\C-c\C-f" 'lisp-show-function-documentation) | 121 | (define-key lisp-mode-map "\C-c\C-f" #'lisp-show-function-documentation) |
| 123 | (define-key lisp-mode-map "\C-c\C-v" 'lisp-show-variable-documentation) | 122 | (define-key lisp-mode-map "\C-c\C-v" #'lisp-show-variable-documentation) |
| 124 | 123 | ||
| 125 | 124 | ||
| 126 | ;; This function exists for backwards compatibility. | 125 | ;; This function exists for backwards compatibility. |
| @@ -133,24 +132,23 @@ mode. Default is whitespace followed by 0 or 1 single-letter colon-keyword | |||
| 133 | ;;; (with-eval-after-load 'inf-lisp 'inferior-lisp-install-letter-bindings) | 132 | ;;; (with-eval-after-load 'inf-lisp 'inferior-lisp-install-letter-bindings) |
| 134 | ;;;You can modify this function to install just the bindings you want." | 133 | ;;;You can modify this function to install just the bindings you want." |
| 135 | (defun inferior-lisp-install-letter-bindings () | 134 | (defun inferior-lisp-install-letter-bindings () |
| 136 | (define-key lisp-mode-map "\C-ce" 'lisp-eval-defun-and-go) | 135 | (define-key lisp-mode-map "\C-ce" #'lisp-eval-defun-and-go) |
| 137 | (define-key lisp-mode-map "\C-cr" 'lisp-eval-region-and-go) | 136 | (define-key lisp-mode-map "\C-cr" #'lisp-eval-region-and-go) |
| 138 | (define-key lisp-mode-map "\C-cc" 'lisp-compile-defun-and-go) | 137 | (define-key lisp-mode-map "\C-cc" #'lisp-compile-defun-and-go) |
| 139 | (define-key lisp-mode-map "\C-cz" 'switch-to-lisp) | 138 | (define-key lisp-mode-map "\C-cz" #'switch-to-lisp) |
| 140 | (define-key lisp-mode-map "\C-cl" 'lisp-load-file) | 139 | (define-key lisp-mode-map "\C-cl" #'lisp-load-file) |
| 141 | (define-key lisp-mode-map "\C-ck" 'lisp-compile-file) | 140 | (define-key lisp-mode-map "\C-ck" #'lisp-compile-file) |
| 142 | (define-key lisp-mode-map "\C-ca" 'lisp-show-arglist) | 141 | (define-key lisp-mode-map "\C-ca" #'lisp-show-arglist) |
| 143 | (define-key lisp-mode-map "\C-cd" 'lisp-describe-sym) | 142 | (define-key lisp-mode-map "\C-cd" #'lisp-describe-sym) |
| 144 | (define-key lisp-mode-map "\C-cf" 'lisp-show-function-documentation) | 143 | (define-key lisp-mode-map "\C-cf" #'lisp-show-function-documentation) |
| 145 | (define-key lisp-mode-map "\C-cv" 'lisp-show-variable-documentation) | 144 | (define-key lisp-mode-map "\C-cv" #'lisp-show-variable-documentation) |
| 146 | 145 | ||
| 147 | (define-key inferior-lisp-mode-map "\C-cl" 'lisp-load-file) | 146 | (define-key inferior-lisp-mode-map "\C-cl" #'lisp-load-file) |
| 148 | (define-key inferior-lisp-mode-map "\C-ck" 'lisp-compile-file) | 147 | (define-key inferior-lisp-mode-map "\C-ck" #'lisp-compile-file) |
| 149 | (define-key inferior-lisp-mode-map "\C-ca" 'lisp-show-arglist) | 148 | (define-key inferior-lisp-mode-map "\C-ca" #'lisp-show-arglist) |
| 150 | (define-key inferior-lisp-mode-map "\C-cd" 'lisp-describe-sym) | 149 | (define-key inferior-lisp-mode-map "\C-cd" #'lisp-describe-sym) |
| 151 | (define-key inferior-lisp-mode-map "\C-cf" 'lisp-show-function-documentation) | 150 | (define-key inferior-lisp-mode-map "\C-cf" #'lisp-show-function-documentation) |
| 152 | (define-key inferior-lisp-mode-map "\C-cv" | 151 | (define-key inferior-lisp-mode-map "\C-cv" #'lisp-show-variable-documentation)) |
| 153 | 'lisp-show-variable-documentation)) | ||
| 154 | 152 | ||
| 155 | (defcustom inferior-lisp-program "lisp" | 153 | (defcustom inferior-lisp-program "lisp" |
| 156 | "Program name for invoking an inferior Lisp in Inferior Lisp mode." | 154 | "Program name for invoking an inferior Lisp in Inferior Lisp mode." |
| @@ -181,7 +179,7 @@ franz: \"^\\\\(->\\\\|<[0-9]*>:\\\\) *\" | |||
| 181 | kcl: \"^>+ *\"" | 179 | kcl: \"^>+ *\"" |
| 182 | :type 'regexp) | 180 | :type 'regexp) |
| 183 | 181 | ||
| 184 | (defvar inferior-lisp-buffer nil "*The current inferior-lisp process buffer. | 182 | (defvar inferior-lisp-buffer nil "*The current `inferior-lisp' process buffer. |
| 185 | 183 | ||
| 186 | MULTIPLE PROCESS SUPPORT | 184 | MULTIPLE PROCESS SUPPORT |
| 187 | =========================================================================== | 185 | =========================================================================== |
| @@ -326,18 +324,18 @@ Prefix argument means switch to the Lisp buffer afterwards." | |||
| 326 | (if and-go (switch-to-lisp t))) | 324 | (if and-go (switch-to-lisp t))) |
| 327 | 325 | ||
| 328 | (defun lisp-compile-string (string) | 326 | (defun lisp-compile-string (string) |
| 329 | "Send the string to the inferior Lisp process to be compiled and executed." | 327 | "Send STRING to the inferior Lisp process to be compiled and executed." |
| 330 | (comint-send-string | 328 | (comint-send-string |
| 331 | (inferior-lisp-proc) | 329 | (inferior-lisp-proc) |
| 332 | (format "(funcall (compile nil (lambda () %s)))\n" string))) | 330 | (format "(funcall (compile nil (lambda () %s)))\n" string))) |
| 333 | 331 | ||
| 334 | (defun lisp-eval-string (string) | 332 | (defun lisp-eval-string (string) |
| 335 | "Send the string to the inferior Lisp process to be executed." | 333 | "Send STRING to the inferior Lisp process to be executed." |
| 336 | (comint-send-string (inferior-lisp-proc) (concat string "\n"))) | 334 | (comint-send-string (inferior-lisp-proc) (concat string "\n"))) |
| 337 | 335 | ||
| 338 | (defun lisp-do-defun (do-string do-region) | 336 | (defun lisp-do-defun (do-string do-region) |
| 339 | "Send the current defun to the inferior Lisp process. | 337 | "Send the current defun to the inferior Lisp process. |
| 340 | The actually processing is done by `do-string' and `do-region' | 338 | The actually processing is done by DO-STRING and DO-REGION |
| 341 | which determine whether the code is compiled before evaluation. | 339 | which determine whether the code is compiled before evaluation. |
| 342 | DEFVAR forms reset the variables to the init values." | 340 | DEFVAR forms reset the variables to the init values." |
| 343 | (save-excursion | 341 | (save-excursion |
| @@ -444,7 +442,7 @@ With argument, positions cursor at end of buffer." | |||
| 444 | ;;; (let ((name-start (point))) | 442 | ;;; (let ((name-start (point))) |
| 445 | ;;; (forward-sexp 1) | 443 | ;;; (forward-sexp 1) |
| 446 | ;;; (process-send-string "inferior-lisp" | 444 | ;;; (process-send-string "inferior-lisp" |
| 447 | ;;; (format "(compile '%s #'(lambda " | 445 | ;;; (format "(compile '%s (lambda " |
| 448 | ;;; (buffer-substring name-start | 446 | ;;; (buffer-substring name-start |
| 449 | ;;; (point))))) | 447 | ;;; (point))))) |
| 450 | ;;; (let ((body-start (point))) | 448 | ;;; (let ((body-start (point))) |
| @@ -460,7 +458,7 @@ With argument, positions cursor at end of buffer." | |||
| 460 | ;;; (interactive "r") | 458 | ;;; (interactive "r") |
| 461 | ;;; (save-excursion | 459 | ;;; (save-excursion |
| 462 | ;;; (goto-char start) (end-of-defun) (beginning-of-defun) ; error check | 460 | ;;; (goto-char start) (end-of-defun) (beginning-of-defun) ; error check |
| 463 | ;;; (if (< (point) start) (error "region begins in middle of defun")) | 461 | ;;; (if (< (point) start) (error "Region begins in middle of defun")) |
| 464 | ;;; (goto-char start) | 462 | ;;; (goto-char start) |
| 465 | ;;; (let ((s start)) | 463 | ;;; (let ((s start)) |
| 466 | ;;; (end-of-defun) | 464 | ;;; (end-of-defun) |
| @@ -591,7 +589,7 @@ See variable `lisp-function-doc-command'." | |||
| 591 | (format lisp-function-doc-command fn))) | 589 | (format lisp-function-doc-command fn))) |
| 592 | 590 | ||
| 593 | (defun lisp-show-variable-documentation (var) | 591 | (defun lisp-show-variable-documentation (var) |
| 594 | "Send a command to the inferior Lisp to give documentation for function FN. | 592 | "Send a command to the inferior Lisp to give documentation for variable VAR. |
| 595 | See variable `lisp-var-doc-command'." | 593 | See variable `lisp-var-doc-command'." |
| 596 | (interactive (lisp-symprompt "Variable doc" (lisp-var-at-pt))) | 594 | (interactive (lisp-symprompt "Variable doc" (lisp-var-at-pt))) |
| 597 | (comint-proc-query (inferior-lisp-proc) (format lisp-var-doc-command var))) | 595 | (comint-proc-query (inferior-lisp-proc) (format lisp-var-doc-command var))) |
| @@ -620,8 +618,8 @@ See variable `lisp-describe-sym-command'." | |||
| 620 | (error "No Lisp subprocess; see variable `inferior-lisp-buffer'")))) | 618 | (error "No Lisp subprocess; see variable `inferior-lisp-buffer'")))) |
| 621 | 619 | ||
| 622 | 620 | ||
| 623 | ;;; Do the user's customization... | 621 | ;; Obsolete. |
| 624 | ;;;=============================== | 622 | |
| 625 | (defvar inferior-lisp-load-hook nil | 623 | (defvar inferior-lisp-load-hook nil |
| 626 | "This hook is run when the library `inf-lisp' is loaded.") | 624 | "This hook is run when the library `inf-lisp' is loaded.") |
| 627 | (make-obsolete-variable 'inferior-lisp-load-hook | 625 | (make-obsolete-variable 'inferior-lisp-load-hook |
diff --git a/lisp/progmodes/octave.el b/lisp/progmodes/octave.el index 196f2de3440..a1a5192ee1f 100644 --- a/lisp/progmodes/octave.el +++ b/lisp/progmodes/octave.el | |||
| @@ -1769,8 +1769,8 @@ sentence." | |||
| 1769 | (insert "\nRetry with ") | 1769 | (insert "\nRetry with ") |
| 1770 | (insert-text-button "'-all'" | 1770 | (insert-text-button "'-all'" |
| 1771 | 'follow-link t | 1771 | 'follow-link t |
| 1772 | 'action #'(lambda (_b) | 1772 | 'action (lambda (_b) |
| 1773 | (octave-lookfor str '-all))) | 1773 | (octave-lookfor str '-all))) |
| 1774 | (insert ".\n")) | 1774 | (insert ".\n")) |
| 1775 | (octave-help-mode))))) | 1775 | (octave-help-mode))))) |
| 1776 | 1776 | ||
diff --git a/lisp/progmodes/project.el b/lisp/progmodes/project.el index 4101962f06a..910f70db03c 100644 --- a/lisp/progmodes/project.el +++ b/lisp/progmodes/project.el | |||
| @@ -732,13 +732,14 @@ requires quoting, e.g. `\\[quoted-insert]<space>'." | |||
| 732 | (interactive (list (project--read-regexp))) | 732 | (interactive (list (project--read-regexp))) |
| 733 | (require 'xref) | 733 | (require 'xref) |
| 734 | (require 'grep) | 734 | (require 'grep) |
| 735 | (let* ((pr (project-current t)) | 735 | (let* ((caller-dir default-directory) |
| 736 | (pr (project-current t)) | ||
| 736 | (default-directory (project-root pr)) | 737 | (default-directory (project-root pr)) |
| 737 | (files | 738 | (files |
| 738 | (if (not current-prefix-arg) | 739 | (if (not current-prefix-arg) |
| 739 | (project-files pr) | 740 | (project-files pr) |
| 740 | (let ((dir (read-directory-name "Base directory: " | 741 | (let ((dir (read-directory-name "Base directory: " |
| 741 | nil default-directory t))) | 742 | caller-dir nil t))) |
| 742 | (project--files-in-directory dir | 743 | (project--files-in-directory dir |
| 743 | nil | 744 | nil |
| 744 | (grep-read-files regexp)))))) | 745 | (grep-read-files regexp)))))) |
| @@ -1321,7 +1322,7 @@ are legal even if they aren't listed in the dispatch menu." | |||
| 1321 | key tmp))) | 1322 | key tmp))) |
| 1322 | (let ((key (if key | 1323 | (let ((key (if key |
| 1323 | (vector key) | 1324 | (vector key) |
| 1324 | (where-is-internal cmd project-prefix-map t)))) | 1325 | (where-is-internal cmd (list project-prefix-map) t)))) |
| 1325 | (format "[%s] %s" | 1326 | (format "[%s] %s" |
| 1326 | (propertize (key-description key) 'face 'bold) | 1327 | (propertize (key-description key) 'face 'bold) |
| 1327 | label))) | 1328 | label))) |
diff --git a/lisp/progmodes/python.el b/lisp/progmodes/python.el index afb96974b17..e5c15d148f8 100644 --- a/lisp/progmodes/python.el +++ b/lisp/progmodes/python.el | |||
| @@ -241,8 +241,8 @@ | |||
| 241 | ;; 2) Add the following hook in your .emacs: | 241 | ;; 2) Add the following hook in your .emacs: |
| 242 | 242 | ||
| 243 | ;; (add-hook 'python-mode-hook | 243 | ;; (add-hook 'python-mode-hook |
| 244 | ;; #'(lambda () | 244 | ;; (lambda () |
| 245 | ;; (define-key python-mode-map "\C-m" 'newline-and-indent))) | 245 | ;; (define-key python-mode-map "\C-m" 'newline-and-indent))) |
| 246 | 246 | ||
| 247 | ;; I'd recommend the first one since you'll get the same behavior for | 247 | ;; I'd recommend the first one since you'll get the same behavior for |
| 248 | ;; all modes out-of-the-box. | 248 | ;; all modes out-of-the-box. |
| @@ -3976,8 +3976,8 @@ Returns the tracked buffer." | |||
| 3976 | "Finish tracking." | 3976 | "Finish tracking." |
| 3977 | (python-pdbtrack-unset-tracked-buffer) | 3977 | (python-pdbtrack-unset-tracked-buffer) |
| 3978 | (when python-pdbtrack-kill-buffers | 3978 | (when python-pdbtrack-kill-buffers |
| 3979 | (mapc #'(lambda (buffer) | 3979 | (mapc (lambda (buffer) |
| 3980 | (ignore-errors (kill-buffer buffer))) | 3980 | (ignore-errors (kill-buffer buffer))) |
| 3981 | python-pdbtrack-buffers-to-kill)) | 3981 | python-pdbtrack-buffers-to-kill)) |
| 3982 | (setq python-pdbtrack-buffers-to-kill nil)) | 3982 | (setq python-pdbtrack-buffers-to-kill nil)) |
| 3983 | 3983 | ||
diff --git a/lisp/progmodes/simula.el b/lisp/progmodes/simula.el index f92f4468098..7c0de9fc359 100644 --- a/lisp/progmodes/simula.el +++ b/lisp/progmodes/simula.el | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | ;;; simula.el --- SIMULA 87 code editing commands for Emacs | 1 | ;;; simula.el --- SIMULA 87 code editing commands for Emacs -*- lexical-binding: t; -*- |
| 2 | 2 | ||
| 3 | ;; Copyright (C) 1992, 1994, 1996, 2001-2021 Free Software Foundation, | 3 | ;; Copyright (C) 1992, 1994, 1996, 2001-2021 Free Software Foundation, |
| 4 | ;; Inc. | 4 | ;; Inc. |
| @@ -52,6 +52,7 @@ the run of whitespace at the beginning of the line.") | |||
| 52 | Otherwise TAB indents only when point is within | 52 | Otherwise TAB indents only when point is within |
| 53 | the run of whitespace at the beginning of the line." | 53 | the run of whitespace at the beginning of the line." |
| 54 | :type 'boolean) | 54 | :type 'boolean) |
| 55 | (make-obsolete-variable 'simula-tab-always-indent 'tab-always-indent "28.1") | ||
| 55 | 56 | ||
| 56 | (defconst simula-indent-level-default 3 | 57 | (defconst simula-indent-level-default 3 |
| 57 | "Indentation of SIMULA statements with respect to containing block.") | 58 | "Indentation of SIMULA statements with respect to containing block.") |
| @@ -148,7 +149,24 @@ Please note that the standard definitions are required | |||
| 148 | for SIMULA mode to function correctly." | 149 | for SIMULA mode to function correctly." |
| 149 | :type '(choice file (const nil))) | 150 | :type '(choice file (const nil))) |
| 150 | 151 | ||
| 151 | (defvar simula-mode-syntax-table nil | 152 | (defvar simula-mode-syntax-table |
| 153 | (let ((st (copy-syntax-table (standard-syntax-table)))) | ||
| 154 | (modify-syntax-entry ?! "<" st) | ||
| 155 | (modify-syntax-entry ?$ "." st) | ||
| 156 | (modify-syntax-entry ?% "< b" st) | ||
| 157 | (modify-syntax-entry ?\n "> b" st) | ||
| 158 | (modify-syntax-entry ?' "\"" st) | ||
| 159 | (modify-syntax-entry ?\( "()" st) | ||
| 160 | (modify-syntax-entry ?\) ")(" st) | ||
| 161 | (modify-syntax-entry ?\; ">" st) | ||
| 162 | (modify-syntax-entry ?\[ "." st) | ||
| 163 | (modify-syntax-entry ?\\ "." st) | ||
| 164 | (modify-syntax-entry ?\] "." st) | ||
| 165 | (modify-syntax-entry ?_ "_" st) | ||
| 166 | (modify-syntax-entry ?\| "." st) | ||
| 167 | (modify-syntax-entry ?\{ "." st) | ||
| 168 | (modify-syntax-entry ?\} "." st) | ||
| 169 | st) | ||
| 152 | "Syntax table in SIMULA mode buffers.") | 170 | "Syntax table in SIMULA mode buffers.") |
| 153 | 171 | ||
| 154 | (defconst simula-syntax-propertize-function | 172 | (defconst simula-syntax-propertize-function |
| @@ -237,39 +255,20 @@ for SIMULA mode to function correctly." | |||
| 237 | ["Forward Statement" simula-next-statement t] | 255 | ["Forward Statement" simula-next-statement t] |
| 238 | ["Backward Up Level" simula-backward-up-level t] | 256 | ["Backward Up Level" simula-backward-up-level t] |
| 239 | ["Forward Down Statement" simula-forward-down-level t]) | 257 | ["Forward Down Statement" simula-forward-down-level t]) |
| 240 | "Lucid Emacs menu for SIMULA mode.") | 258 | "Emacs menu for SIMULA mode.") |
| 241 | |||
| 242 | (if simula-mode-syntax-table | ||
| 243 | () | ||
| 244 | (setq simula-mode-syntax-table (copy-syntax-table (standard-syntax-table))) | ||
| 245 | (modify-syntax-entry ?! "<" simula-mode-syntax-table) | ||
| 246 | (modify-syntax-entry ?$ "." simula-mode-syntax-table) | ||
| 247 | (modify-syntax-entry ?% "< b" simula-mode-syntax-table) | ||
| 248 | (modify-syntax-entry ?\n "> b" simula-mode-syntax-table) | ||
| 249 | (modify-syntax-entry ?' "\"" simula-mode-syntax-table) | ||
| 250 | (modify-syntax-entry ?\( "()" simula-mode-syntax-table) | ||
| 251 | (modify-syntax-entry ?\) ")(" simula-mode-syntax-table) | ||
| 252 | (modify-syntax-entry ?\; ">" simula-mode-syntax-table) | ||
| 253 | (modify-syntax-entry ?\[ "." simula-mode-syntax-table) | ||
| 254 | (modify-syntax-entry ?\\ "." simula-mode-syntax-table) | ||
| 255 | (modify-syntax-entry ?\] "." simula-mode-syntax-table) | ||
| 256 | (modify-syntax-entry ?_ "_" simula-mode-syntax-table) | ||
| 257 | (modify-syntax-entry ?\| "." simula-mode-syntax-table) | ||
| 258 | (modify-syntax-entry ?\{ "." simula-mode-syntax-table) | ||
| 259 | (modify-syntax-entry ?\} "." simula-mode-syntax-table)) | ||
| 260 | 259 | ||
| 261 | (defvar simula-mode-map | 260 | (defvar simula-mode-map |
| 262 | (let ((map (make-sparse-keymap))) | 261 | (let ((map (make-sparse-keymap))) |
| 263 | (define-key map "\C-c\C-u" 'simula-backward-up-level) | 262 | (define-key map "\C-c\C-u" #'simula-backward-up-level) |
| 264 | (define-key map "\C-c\C-p" 'simula-previous-statement) | 263 | (define-key map "\C-c\C-p" #'simula-previous-statement) |
| 265 | (define-key map "\C-c\C-d" 'simula-forward-down-level) | 264 | (define-key map "\C-c\C-d" #'simula-forward-down-level) |
| 266 | (define-key map "\C-c\C-n" 'simula-next-statement) | 265 | (define-key map "\C-c\C-n" #'simula-next-statement) |
| 267 | ;; (define-key map "\C-c\C-g" 'simula-goto-definition) | 266 | ;; (define-key map "\C-c\C-g" #'simula-goto-definition) |
| 268 | ;; (define-key map "\C-c\C-h" 'simula-standard-help) | 267 | ;; (define-key map "\C-c\C-h" #'simula-standard-help) |
| 269 | (define-key map "\177" 'backward-delete-char-untabify) | 268 | (define-key map "\177" #'backward-delete-char-untabify) |
| 270 | (define-key map ":" 'simula-electric-label) | 269 | (define-key map ":" #'simula-electric-label) |
| 271 | (define-key map "\e\C-q" 'simula-indent-exp) | 270 | (define-key map "\e\C-q" #'simula-indent-exp) |
| 272 | (define-key map "\t" 'simula-indent-command) | 271 | ;; (define-key map "\t" #'simula-indent-command) |
| 273 | map) | 272 | map) |
| 274 | "Keymap used in `simula-mode'.") | 273 | "Keymap used in `simula-mode'.") |
| 275 | 274 | ||
| @@ -285,8 +284,8 @@ for SIMULA mode to function correctly." | |||
| 285 | ["Previous Statement" simula-previous-statement | 284 | ["Previous Statement" simula-previous-statement |
| 286 | :enable (not (bobp))] | 285 | :enable (not (bobp))] |
| 287 | "---" | 286 | "---" |
| 288 | ["Indent Line" simula-indent-command | 287 | ;; ["Indent Line" simula-indent-command |
| 289 | :enable (not buffer-read-only)] | 288 | ;; :enable (not buffer-read-only)] |
| 290 | ["Indent Expression" simula-indent-exp | 289 | ["Indent Expression" simula-indent-exp |
| 291 | :enable (not buffer-read-only)])) | 290 | :enable (not buffer-read-only)])) |
| 292 | 291 | ||
| @@ -295,9 +294,6 @@ for SIMULA mode to function correctly." | |||
| 295 | "Major mode for editing SIMULA code. | 294 | "Major mode for editing SIMULA code. |
| 296 | \\{simula-mode-map} | 295 | \\{simula-mode-map} |
| 297 | Variables controlling indentation style: | 296 | Variables controlling indentation style: |
| 298 | `simula-tab-always-indent' | ||
| 299 | Non-nil means TAB in SIMULA mode should always reindent the current line, | ||
| 300 | regardless of where in the line point is when the TAB command is used. | ||
| 301 | `simula-indent-level' | 297 | `simula-indent-level' |
| 302 | Indentation of SIMULA statements with respect to containing block. | 298 | Indentation of SIMULA statements with respect to containing block. |
| 303 | `simula-substatement-offset' | 299 | `simula-substatement-offset' |
| @@ -335,7 +331,7 @@ with no arguments, if that value is non-nil." | |||
| 335 | ;; (setq-local end-comment-column 75) | 331 | ;; (setq-local end-comment-column 75) |
| 336 | (setq-local paragraph-start "[ \t]*$\\|\f") | 332 | (setq-local paragraph-start "[ \t]*$\\|\f") |
| 337 | (setq-local paragraph-separate paragraph-start) | 333 | (setq-local paragraph-separate paragraph-start) |
| 338 | (setq-local indent-line-function 'simula-indent-line) | 334 | (setq-local indent-line-function #'simula-indent-line) |
| 339 | (setq-local comment-start "! ") | 335 | (setq-local comment-start "! ") |
| 340 | (setq-local comment-end " ;") | 336 | (setq-local comment-end " ;") |
| 341 | (setq-local comment-start-skip "!+ *") | 337 | (setq-local comment-start-skip "!+ *") |
| @@ -415,6 +411,7 @@ A numeric argument, regardless of its value, means indent rigidly | |||
| 415 | all the lines of the SIMULA statement after point so that this line | 411 | all the lines of the SIMULA statement after point so that this line |
| 416 | becomes properly indented. | 412 | becomes properly indented. |
| 417 | The relative indentation among the lines of the statement are preserved." | 413 | The relative indentation among the lines of the statement are preserved." |
| 414 | (declare (obsolete indent-for-tab-command "28.1")) | ||
| 418 | (interactive "P") | 415 | (interactive "P") |
| 419 | (let ((case-fold-search t)) | 416 | (let ((case-fold-search t)) |
| 420 | (if (or whole-exp simula-tab-always-indent | 417 | (if (or whole-exp simula-tab-always-indent |
| @@ -1564,30 +1561,6 @@ If not nil and not t, move to limit of search and return nil." | |||
| 1564 | (simula-install-standard-abbrevs)) | 1561 | (simula-install-standard-abbrevs)) |
| 1565 | 1562 | ||
| 1566 | ;; Hilit mode support. | 1563 | ;; Hilit mode support. |
| 1567 | (when (fboundp 'hilit-set-mode-patterns) | ||
| 1568 | (when (and (boundp 'hilit-patterns-alist) | ||
| 1569 | (not (assoc 'simula-mode hilit-patterns-alist))) | ||
| 1570 | (hilit-set-mode-patterns | ||
| 1571 | 'simula-mode | ||
| 1572 | '( | ||
| 1573 | ("^%\\([ \t\f].*\\)?$" nil comment) | ||
| 1574 | ("^%include\\>" nil include) | ||
| 1575 | ("\"[^\"\n]*\"\\|'.'\\|'![0-9]+!'" nil string) | ||
| 1576 | ((regexp-opt '("ACTIVATE" "AFTER" "AND" "ARRAY" "AT" "BEFORE" | ||
| 1577 | "BEGIN" "BOOLEAN" "CHARACTER" "CLASS" "DELAY" | ||
| 1578 | "DO" "ELSE" "END" "EQ" "EQV" "EXTERNAL" "FALSE" | ||
| 1579 | "FOR" "GE" "GO" "GOTO" "GT" "HIDDEN" "IF" "IMP" | ||
| 1580 | "IN" "INNER" "INSPECT" "INTEGER" "IS" "LABEL" | ||
| 1581 | "LE" "LONG" "LT" "NAME" "NE" "NEW" "NONE" "NOT" | ||
| 1582 | "NOTEXT" "OR" "OTHERWISE" "PRIOR" "PROCEDURE" | ||
| 1583 | "PROTECTED" "QUA" "REACTIVATE" "REAL" "REF" | ||
| 1584 | "SHORT" "STEP" "SWITCH" "TEXT" "THEN" "THIS" | ||
| 1585 | "TO" "TRUE" "UNTIL" "VALUE" "VIRTUAL" "WHEN" | ||
| 1586 | "WHILE") | ||
| 1587 | 'words) | ||
| 1588 | nil keyword) | ||
| 1589 | ("!\\|\\<COMMENT\\>" ";" comment)) | ||
| 1590 | nil 'case-insensitive))) | ||
| 1591 | 1564 | ||
| 1592 | ;; obsolete | 1565 | ;; obsolete |
| 1593 | 1566 | ||
| @@ -1598,7 +1571,7 @@ If not nil and not t, move to limit of search and return nil." | |||
| 1598 | "24.4") | 1571 | "24.4") |
| 1599 | 1572 | ||
| 1600 | (define-obsolete-function-alias 'simula-submit-bug-report | 1573 | (define-obsolete-function-alias 'simula-submit-bug-report |
| 1601 | 'report-emacs-bug "24.4") | 1574 | #'report-emacs-bug "24.4") |
| 1602 | 1575 | ||
| 1603 | (defun simula-popup-menu (_e) | 1576 | (defun simula-popup-menu (_e) |
| 1604 | "Pops up the SIMULA menu." | 1577 | "Pops up the SIMULA menu." |
diff --git a/lisp/progmodes/xref.el b/lisp/progmodes/xref.el index ea52befec57..cada1f11092 100644 --- a/lisp/progmodes/xref.el +++ b/lisp/progmodes/xref.el | |||
| @@ -103,7 +103,7 @@ This is typically the filename.") | |||
| 103 | 103 | ||
| 104 | ;;;; Commonly needed location classes are defined here: | 104 | ;;;; Commonly needed location classes are defined here: |
| 105 | 105 | ||
| 106 | (defcustom xref-file-name-display 'abs | 106 | (defcustom xref-file-name-display 'project-relative |
| 107 | "Style of file name display in *xref* buffers. | 107 | "Style of file name display in *xref* buffers. |
| 108 | 108 | ||
| 109 | If the value is the symbol `abs', the default, show the file names | 109 | If the value is the symbol `abs', the default, show the file names |
| @@ -521,7 +521,7 @@ If SELECT is non-nil, select the target window." | |||
| 521 | "Face for displaying line numbers in the xref buffer." | 521 | "Face for displaying line numbers in the xref buffer." |
| 522 | :version "27.1") | 522 | :version "27.1") |
| 523 | 523 | ||
| 524 | (defface xref-match '((t :inherit highlight)) | 524 | (defface xref-match '((t :inherit match)) |
| 525 | "Face used to highlight matches in the xref buffer." | 525 | "Face used to highlight matches in the xref buffer." |
| 526 | :version "27.1") | 526 | :version "27.1") |
| 527 | 527 | ||
diff --git a/lisp/recentf.el b/lisp/recentf.el index c819397a33d..9ae059a70dd 100644 --- a/lisp/recentf.el +++ b/lisp/recentf.el | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | ;;; recentf.el --- setup a menu of recently opened files | 1 | ;;; recentf.el --- setup a menu of recently opened files -*- lexical-binding: t -*- |
| 2 | 2 | ||
| 3 | ;; Copyright (C) 1999-2021 Free Software Foundation, Inc. | 3 | ;; Copyright (C) 1999-2021 Free Software Foundation, Inc. |
| 4 | 4 | ||
| @@ -24,16 +24,21 @@ | |||
| 24 | ;;; Commentary: | 24 | ;;; Commentary: |
| 25 | 25 | ||
| 26 | ;; This package maintains a menu for visiting files that were operated | 26 | ;; This package maintains a menu for visiting files that were operated |
| 27 | ;; on recently. When enabled a new "Open Recent" sub menu is | 27 | ;; on recently. When enabled a new "Open Recent" submenu is |
| 28 | ;; displayed in the "File" menu. The recent files list is | 28 | ;; displayed in the "File" menu. The recent files list is |
| 29 | ;; automatically saved across Emacs sessions. You can customize the | 29 | ;; automatically saved across Emacs sessions. |
| 30 | ;; number of recent files displayed, the location of the menu and | ||
| 31 | ;; others options (see the source code for details). | ||
| 32 | 30 | ||
| 33 | ;; To enable this package, add the following to your .emacs: | 31 | ;; You can customize the number of recent files displayed, the |
| 34 | ;; (recentf-mode 1) | 32 | ;; location of the menu and others options. Type: |
| 33 | ;; | ||
| 34 | ;; M-x customize-group RET recentf RET | ||
| 35 | |||
| 36 | ;; To enable this package, add this line to your Init file: | ||
| 37 | ;; | ||
| 38 | ;; (recentf-mode 1) | ||
| 35 | 39 | ||
| 36 | ;;; Code: | 40 | ;;; Code: |
| 41 | |||
| 37 | (require 'tree-widget) | 42 | (require 'tree-widget) |
| 38 | (require 'timer) | 43 | (require 'timer) |
| 39 | 44 | ||
| @@ -73,7 +78,7 @@ See the command `recentf-save-list'." | |||
| 73 | :type 'file | 78 | :type 'file |
| 74 | :initialize 'custom-initialize-default | 79 | :initialize 'custom-initialize-default |
| 75 | :set (lambda (symbol value) | 80 | :set (lambda (symbol value) |
| 76 | (let ((oldvalue (eval symbol))) | 81 | (let ((oldvalue (symbol-value symbol))) |
| 77 | (custom-set-default symbol value) | 82 | (custom-set-default symbol value) |
| 78 | (and (not (equal value oldvalue)) | 83 | (and (not (equal value oldvalue)) |
| 79 | recentf-mode | 84 | recentf-mode |
| @@ -292,7 +297,7 @@ They are successively passed a file name to transform it." | |||
| 292 | (function :tag "Other function"))))) | 297 | (function :tag "Other function"))))) |
| 293 | 298 | ||
| 294 | (defcustom recentf-show-file-shortcuts-flag t | 299 | (defcustom recentf-show-file-shortcuts-flag t |
| 295 | "Whether to show \"[N]\" for the Nth item up to 10. | 300 | "Non-nil means to show \"[N]\" for the Nth item up to 10. |
| 296 | If non-nil, `recentf-open-files' will show labels for keys that can be | 301 | If non-nil, `recentf-open-files' will show labels for keys that can be |
| 297 | used as shortcuts to open the Nth file." | 302 | used as shortcuts to open the Nth file." |
| 298 | :group 'recentf | 303 | :group 'recentf |
| @@ -327,15 +332,6 @@ Ignore case if `recentf-case-fold-search' is non-nil." | |||
| 327 | (setq list (cdr list))) | 332 | (setq list (cdr list))) |
| 328 | list) | 333 | list) |
| 329 | 334 | ||
| 330 | (defsubst recentf-trunc-list (l n) | ||
| 331 | "Return from L the list of its first N elements." | ||
| 332 | (let (nl) | ||
| 333 | (while (and l (> n 0)) | ||
| 334 | (setq nl (cons (car l) nl) | ||
| 335 | n (1- n) | ||
| 336 | l (cdr l))) | ||
| 337 | (nreverse nl))) | ||
| 338 | |||
| 339 | (defun recentf-dump-variable (variable &optional limit) | 335 | (defun recentf-dump-variable (variable &optional limit) |
| 340 | "Insert a \"(setq VARIABLE value)\" in the current buffer. | 336 | "Insert a \"(setq VARIABLE value)\" in the current buffer. |
| 341 | When the value of VARIABLE is a list, optional argument LIMIT | 337 | When the value of VARIABLE is a list, optional argument LIMIT |
| @@ -345,7 +341,7 @@ the full list." | |||
| 345 | (if (atom value) | 341 | (if (atom value) |
| 346 | (insert (format "\n(setq %S '%S)\n" variable value)) | 342 | (insert (format "\n(setq %S '%S)\n" variable value)) |
| 347 | (when (and (integerp limit) (> limit 0)) | 343 | (when (and (integerp limit) (> limit 0)) |
| 348 | (setq value (recentf-trunc-list value limit))) | 344 | (setq value (seq-take value limit))) |
| 349 | (insert (format "\n(setq %S\n '(" variable)) | 345 | (insert (format "\n(setq %S\n '(" variable)) |
| 350 | (dolist (e value) | 346 | (dolist (e value) |
| 351 | (insert (format "\n %S" e))) | 347 | (insert (format "\n %S" e))) |
| @@ -516,7 +512,7 @@ filter function this variable is reset to nil.") | |||
| 516 | 512 | ||
| 517 | (defsubst recentf-elements (n) | 513 | (defsubst recentf-elements (n) |
| 518 | "Return a list of the first N elements of the recent list." | 514 | "Return a list of the first N elements of the recent list." |
| 519 | (recentf-trunc-list recentf-list n)) | 515 | (seq-take recentf-list n)) |
| 520 | 516 | ||
| 521 | (defsubst recentf-make-menu-element (menu-item menu-value) | 517 | (defsubst recentf-make-menu-element (menu-item menu-value) |
| 522 | "Create a new menu-element. | 518 | "Create a new menu-element. |
| @@ -556,7 +552,7 @@ This a menu element (FILE . FILE)." | |||
| 556 | (defsubst recentf-menu-elements (n) | 552 | (defsubst recentf-menu-elements (n) |
| 557 | "Return a list of the first N default menu elements from the recent list. | 553 | "Return a list of the first N default menu elements from the recent list. |
| 558 | See also `recentf-make-default-menu-element'." | 554 | See also `recentf-make-default-menu-element'." |
| 559 | (mapcar 'recentf-make-default-menu-element | 555 | (mapcar #'recentf-make-default-menu-element |
| 560 | (recentf-elements n))) | 556 | (recentf-elements n))) |
| 561 | 557 | ||
| 562 | (defun recentf-apply-menu-filter (filter l) | 558 | (defun recentf-apply-menu-filter (filter l) |
| @@ -597,7 +593,7 @@ This is a menu filter function which ignores the MENU argument." | |||
| 597 | (let* ((recentf-menu-shortcuts 0) | 593 | (let* ((recentf-menu-shortcuts 0) |
| 598 | (file-items | 594 | (file-items |
| 599 | (condition-case err | 595 | (condition-case err |
| 600 | (mapcar 'recentf-make-menu-item | 596 | (mapcar #'recentf-make-menu-item |
| 601 | (recentf-apply-menu-filter | 597 | (recentf-apply-menu-filter |
| 602 | recentf-menu-filter | 598 | recentf-menu-filter |
| 603 | (recentf-menu-elements recentf-max-menu-items))) | 599 | (recentf-menu-elements recentf-max-menu-items))) |
| @@ -639,7 +635,7 @@ Return nil if file NAME is not one of the ten more recent." | |||
| 639 | (let ((item (recentf-menu-element-item elt)) | 635 | (let ((item (recentf-menu-element-item elt)) |
| 640 | (value (recentf-menu-element-value elt))) | 636 | (value (recentf-menu-element-value elt))) |
| 641 | (if (recentf-sub-menu-element-p elt) | 637 | (if (recentf-sub-menu-element-p elt) |
| 642 | (cons item (mapcar 'recentf-make-menu-item value)) | 638 | (cons item (mapcar #'recentf-make-menu-item value)) |
| 643 | (let ((k (and (< recentf-menu-shortcuts 10) | 639 | (let ((k (and (< recentf-menu-shortcuts 10) |
| 644 | (recentf-menu-value-shortcut value)))) | 640 | (recentf-menu-value-shortcut value)))) |
| 645 | (vector item | 641 | (vector item |
| @@ -764,12 +760,12 @@ This filter combines the `recentf-sort-basenames-descending' and | |||
| 764 | (defun recentf-relative-filter (l) | 760 | (defun recentf-relative-filter (l) |
| 765 | "Filter the list of menu-elements L to show relative filenames. | 761 | "Filter the list of menu-elements L to show relative filenames. |
| 766 | Filenames are relative to the `default-directory'." | 762 | Filenames are relative to the `default-directory'." |
| 767 | (mapcar #'(lambda (menu-element) | 763 | (mapcar (lambda (menu-element) |
| 768 | (let* ((ful (recentf-menu-element-value menu-element)) | 764 | (let* ((ful (recentf-menu-element-value menu-element)) |
| 769 | (rel (file-relative-name ful default-directory))) | 765 | (rel (file-relative-name ful default-directory))) |
| 770 | (if (string-match "^\\.\\." rel) | 766 | (if (string-match "^\\.\\." rel) |
| 771 | menu-element | 767 | menu-element |
| 772 | (recentf-make-menu-element rel ful)))) | 768 | (recentf-make-menu-element rel ful)))) |
| 773 | l)) | 769 | l)) |
| 774 | 770 | ||
| 775 | ;;; Rule based menu filters | 771 | ;;; Rule based menu filters |
| @@ -941,10 +937,10 @@ Rules obey `recentf-arrange-rules' format." | |||
| 941 | This simplified version of `recentf-show-basenames' does not handle | 937 | This simplified version of `recentf-show-basenames' does not handle |
| 942 | duplicates. It is used by `recentf-arrange-by-dir' as its | 938 | duplicates. It is used by `recentf-arrange-by-dir' as its |
| 943 | `recentf-arrange-by-rule-subfilter'." | 939 | `recentf-arrange-by-rule-subfilter'." |
| 944 | (mapcar #'(lambda (e) | 940 | (mapcar (lambda (e) |
| 945 | (recentf-make-menu-element | 941 | (recentf-make-menu-element |
| 946 | (file-name-nondirectory (recentf-menu-element-value e)) | 942 | (file-name-nondirectory (recentf-menu-element-value e)) |
| 947 | (recentf-menu-element-value e))) | 943 | (recentf-menu-element-value e))) |
| 948 | l)) | 944 | l)) |
| 949 | 945 | ||
| 950 | (defun recentf-dir-rule (file) | 946 | (defun recentf-dir-rule (file) |
| @@ -997,15 +993,15 @@ Filtering of L is delegated to the selected filter in the menu." | |||
| 997 | (list | 993 | (list |
| 998 | `("Show files" | 994 | `("Show files" |
| 999 | ,@(mapcar | 995 | ,@(mapcar |
| 1000 | #'(lambda (f) | 996 | (lambda (f) |
| 1001 | `[,(cdr f) | 997 | `[,(cdr f) |
| 1002 | (setq recentf-filter-changer-current ',(car f)) | 998 | (setq recentf-filter-changer-current ',(car f)) |
| 1003 | ;;:active t | 999 | ;;:active t |
| 1004 | :style radio ;;radio Don't work with GTK :-( | 1000 | :style radio ;;radio Don't work with GTK :-( |
| 1005 | :selected (eq recentf-filter-changer-current | 1001 | :selected (eq recentf-filter-changer-current |
| 1006 | ',(car f)) | 1002 | ',(car f)) |
| 1007 | ;;:help ,(cdr f) | 1003 | ;;:help ,(cdr f) |
| 1008 | ]) | 1004 | ]) |
| 1009 | recentf-filter-changer-alist)))) | 1005 | recentf-filter-changer-alist)))) |
| 1010 | (recentf-apply-menu-filter recentf-filter-changer-current l))) | 1006 | (recentf-apply-menu-filter recentf-filter-changer-current l))) |
| 1011 | 1007 | ||
| @@ -1062,9 +1058,9 @@ Go to the beginning of buffer if not found." | |||
| 1062 | (defvar recentf-dialog-mode-map | 1058 | (defvar recentf-dialog-mode-map |
| 1063 | (let ((km (copy-keymap recentf--shortcuts-keymap))) | 1059 | (let ((km (copy-keymap recentf--shortcuts-keymap))) |
| 1064 | (set-keymap-parent km widget-keymap) | 1060 | (set-keymap-parent km widget-keymap) |
| 1065 | (define-key km "q" 'recentf-cancel-dialog) | 1061 | (define-key km "q" #'recentf-cancel-dialog) |
| 1066 | (define-key km "n" 'next-line) | 1062 | (define-key km "n" #'next-line) |
| 1067 | (define-key km "p" 'previous-line) | 1063 | (define-key km "p" #'previous-line) |
| 1068 | km) | 1064 | km) |
| 1069 | "Keymap used in recentf dialogs.") | 1065 | "Keymap used in recentf dialogs.") |
| 1070 | 1066 | ||
| @@ -1083,8 +1079,8 @@ Go to the beginning of buffer if not found." | |||
| 1083 | ;; Cleanup buffer | 1079 | ;; Cleanup buffer |
| 1084 | (let ((inhibit-read-only t) | 1080 | (let ((inhibit-read-only t) |
| 1085 | (ol (overlay-lists))) | 1081 | (ol (overlay-lists))) |
| 1086 | (mapc 'delete-overlay (car ol)) | 1082 | (mapc #'delete-overlay (car ol)) |
| 1087 | (mapc 'delete-overlay (cdr ol)) | 1083 | (mapc #'delete-overlay (cdr ol)) |
| 1088 | (erase-buffer)) | 1084 | (erase-buffer)) |
| 1089 | (recentf-dialog-mode) | 1085 | (recentf-dialog-mode) |
| 1090 | ,@forms | 1086 | ,@forms |
| @@ -1178,7 +1174,7 @@ IGNORE other arguments." | |||
| 1178 | :node (item :tag ,(car menu-element) | 1174 | :node (item :tag ,(car menu-element) |
| 1179 | :sample-face bold | 1175 | :sample-face bold |
| 1180 | :format "%{%t%}:\n") | 1176 | :format "%{%t%}:\n") |
| 1181 | ,@(mapcar 'recentf-open-files-item | 1177 | ,@(mapcar #'recentf-open-files-item |
| 1182 | (cdr menu-element))) | 1178 | (cdr menu-element))) |
| 1183 | ;; Represent a single file with a link widget | 1179 | ;; Represent a single file with a link widget |
| 1184 | `(link :tag ,(car menu-element) | 1180 | `(link :tag ,(car menu-element) |
| @@ -1193,8 +1189,8 @@ IGNORE other arguments." | |||
| 1193 | (defun recentf-open-files-items (files) | 1189 | (defun recentf-open-files-items (files) |
| 1194 | "Return a list of widgets to display FILES in a dialog buffer." | 1190 | "Return a list of widgets to display FILES in a dialog buffer." |
| 1195 | (setq-local recentf--files-with-key | 1191 | (setq-local recentf--files-with-key |
| 1196 | (recentf-trunc-list files 10)) | 1192 | (seq-take files 10)) |
| 1197 | (mapcar 'recentf-open-files-item | 1193 | (mapcar #'recentf-open-files-item |
| 1198 | (append | 1194 | (append |
| 1199 | ;; When requested group the files with shortcuts together | 1195 | ;; When requested group the files with shortcuts together |
| 1200 | ;; at the top of the list. | 1196 | ;; at the top of the list. |
| @@ -1202,12 +1198,12 @@ IGNORE other arguments." | |||
| 1202 | (setq files (nthcdr 10 files)) | 1198 | (setq files (nthcdr 10 files)) |
| 1203 | (recentf-apply-menu-filter | 1199 | (recentf-apply-menu-filter |
| 1204 | 'recentf-show-digit-shortcut-filter | 1200 | 'recentf-show-digit-shortcut-filter |
| 1205 | (mapcar 'recentf-make-default-menu-element | 1201 | (mapcar #'recentf-make-default-menu-element |
| 1206 | recentf--files-with-key))) | 1202 | recentf--files-with-key))) |
| 1207 | ;; Then the other files. | 1203 | ;; Then the other files. |
| 1208 | (recentf-apply-menu-filter | 1204 | (recentf-apply-menu-filter |
| 1209 | recentf-menu-filter | 1205 | recentf-menu-filter |
| 1210 | (mapcar 'recentf-make-default-menu-element | 1206 | (mapcar #'recentf-make-default-menu-element |
| 1211 | files))))) | 1207 | files))))) |
| 1212 | 1208 | ||
| 1213 | (defun recentf-open-files (&optional files buffer-name) | 1209 | (defun recentf-open-files (&optional files buffer-name) |
| @@ -1228,7 +1224,7 @@ use for the dialog. It defaults to \"*`recentf-menu-title'*\"." | |||
| 1228 | (format-message "Click on Cancel or type `q' to cancel.\n")) | 1224 | (format-message "Click on Cancel or type `q' to cancel.\n")) |
| 1229 | ;; Use a L&F that looks like the recentf menu. | 1225 | ;; Use a L&F that looks like the recentf menu. |
| 1230 | (tree-widget-set-theme "folder") | 1226 | (tree-widget-set-theme "folder") |
| 1231 | (apply 'widget-create | 1227 | (apply #'widget-create |
| 1232 | `(group | 1228 | `(group |
| 1233 | :indent 2 | 1229 | :indent 2 |
| 1234 | :format "\n%v\n" | 1230 | :format "\n%v\n" |
| @@ -1310,7 +1306,7 @@ empty `file-name-history' with the recent list." | |||
| 1310 | (load-file file) | 1306 | (load-file file) |
| 1311 | (and recentf-initialize-file-name-history | 1307 | (and recentf-initialize-file-name-history |
| 1312 | (not file-name-history) | 1308 | (not file-name-history) |
| 1313 | (setq file-name-history (mapcar 'abbreviate-file-name | 1309 | (setq file-name-history (mapcar #'abbreviate-file-name |
| 1314 | recentf-list)))))) | 1310 | recentf-list)))))) |
| 1315 | 1311 | ||
| 1316 | (defun recentf-cleanup () | 1312 | (defun recentf-cleanup () |
| @@ -1377,6 +1373,10 @@ buffers you switch to a lot, you can say something like the following: | |||
| 1377 | ;; continue standard unloading | 1373 | ;; continue standard unloading |
| 1378 | nil) | 1374 | nil) |
| 1379 | 1375 | ||
| 1376 | ;; Obsolete. | ||
| 1377 | |||
| 1378 | (define-obsolete-function-alias 'recentf-trunc-list #'seq-take "28.1") | ||
| 1379 | |||
| 1380 | (provide 'recentf) | 1380 | (provide 'recentf) |
| 1381 | 1381 | ||
| 1382 | (run-hooks 'recentf-load-hook) | 1382 | (run-hooks 'recentf-load-hook) |
diff --git a/lisp/shadowfile.el b/lisp/shadowfile.el index a4f0eba4449..a03965cf6c7 100644 --- a/lisp/shadowfile.el +++ b/lisp/shadowfile.el | |||
| @@ -172,20 +172,6 @@ created by `shadow-define-regexp-group'.") | |||
| 172 | ;;; Syntactic sugar; General list and string manipulation | 172 | ;;; Syntactic sugar; General list and string manipulation |
| 173 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | 173 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
| 174 | 174 | ||
| 175 | (defun shadow-union (a b) | ||
| 176 | "Add members of list A to list B if not equal to items already in B." | ||
| 177 | (if (null a) | ||
| 178 | b | ||
| 179 | (if (member (car a) b) | ||
| 180 | (shadow-union (cdr a) b) | ||
| 181 | (shadow-union (cdr a) (cons (car a) b))))) | ||
| 182 | |||
| 183 | (defun shadow-find (func list) | ||
| 184 | "If FUNC applied to some element of LIST is non-nil, return first such element." | ||
| 185 | (while (and list (not (funcall func (car list)))) | ||
| 186 | (setq list (cdr list))) | ||
| 187 | (car list)) | ||
| 188 | |||
| 189 | (defun shadow-regexp-superquote (string) | 175 | (defun shadow-regexp-superquote (string) |
| 190 | "Like `regexp-quote', but includes the \\` and \\'. | 176 | "Like `regexp-quote', but includes the \\` and \\'. |
| 191 | This makes sure regexp matches nothing but STRING." | 177 | This makes sure regexp matches nothing but STRING." |
| @@ -226,7 +212,7 @@ information defining the cluster. For interactive use, call | |||
| 226 | 212 | ||
| 227 | (defun shadow-get-cluster (name) | 213 | (defun shadow-get-cluster (name) |
| 228 | "Return cluster named NAME, or nil." | 214 | "Return cluster named NAME, or nil." |
| 229 | (shadow-find | 215 | (seq-find |
| 230 | (lambda (x) (string-equal (shadow-cluster-name x) name)) | 216 | (lambda (x) (string-equal (shadow-cluster-name x) name)) |
| 231 | shadow-clusters)) | 217 | shadow-clusters)) |
| 232 | 218 | ||
| @@ -252,7 +238,7 @@ information defining the cluster. For interactive use, call | |||
| 252 | (defun shadow-site-cluster (site) | 238 | (defun shadow-site-cluster (site) |
| 253 | "Given a SITE, return cluster it is in, or nil." | 239 | "Given a SITE, return cluster it is in, or nil." |
| 254 | (or (shadow-get-cluster (shadow-site-name site)) | 240 | (or (shadow-get-cluster (shadow-site-name site)) |
| 255 | (shadow-find | 241 | (seq-find |
| 256 | (lambda (x) | 242 | (lambda (x) |
| 257 | (string-match (shadow-cluster-regexp x) (shadow-name-site site))) | 243 | (string-match (shadow-cluster-regexp x) (shadow-name-site site))) |
| 258 | shadow-clusters))) | 244 | shadow-clusters))) |
| @@ -653,7 +639,7 @@ Consider them as regular expressions if third arg REGEXP is true." | |||
| 653 | shadows shadow-files-to-copy (with-output-to-string (backtrace)))) | 639 | shadows shadow-files-to-copy (with-output-to-string (backtrace)))) |
| 654 | (when shadows | 640 | (when shadows |
| 655 | (setq shadow-files-to-copy | 641 | (setq shadow-files-to-copy |
| 656 | (shadow-union shadows shadow-files-to-copy)) | 642 | (cl-union shadows shadow-files-to-copy :test #'equal)) |
| 657 | (when (not shadow-inhibit-message) | 643 | (when (not shadow-inhibit-message) |
| 658 | (message "%s" (substitute-command-keys | 644 | (message "%s" (substitute-command-keys |
| 659 | "Use \\[shadow-copy-files] to update shadows.")) | 645 | "Use \\[shadow-copy-files] to update shadows.")) |
| @@ -839,6 +825,17 @@ look for files that have been changed and need to be copied to other systems." | |||
| 839 | ;; continue standard unloading | 825 | ;; continue standard unloading |
| 840 | nil) | 826 | nil) |
| 841 | 827 | ||
| 828 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 829 | ;;; Obsolete | ||
| 830 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 831 | |||
| 832 | (defun shadow-union (a b) | ||
| 833 | "Add members of list A to list B if not equal to items already in B." | ||
| 834 | (declare (obsolete cl-union "28.1")) | ||
| 835 | (cl-union a b :test #'equal)) | ||
| 836 | |||
| 837 | (define-obsolete-function-alias 'shadow-find #'seq-find "28.1") | ||
| 838 | |||
| 842 | (provide 'shadowfile) | 839 | (provide 'shadowfile) |
| 843 | 840 | ||
| 844 | ;;; shadowfile.el ends here | 841 | ;;; shadowfile.el ends here |
diff --git a/lisp/strokes.el b/lisp/strokes.el index 55f2ae8cc47..4b682e99feb 100644 --- a/lisp/strokes.el +++ b/lisp/strokes.el | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | ;;; strokes.el --- control Emacs through mouse strokes | 1 | ;;; strokes.el --- control Emacs through mouse strokes -*- lexical-binding: t; -*- |
| 2 | 2 | ||
| 3 | ;; Copyright (C) 1997, 2000-2021 Free Software Foundation, Inc. | 3 | ;; Copyright (C) 1997, 2000-2021 Free Software Foundation, Inc. |
| 4 | 4 | ||
| @@ -216,14 +216,12 @@ static char * stroke_xpm[] = { | |||
| 216 | 216 | ||
| 217 | (defcustom strokes-lighter " Strokes" | 217 | (defcustom strokes-lighter " Strokes" |
| 218 | "Mode line identifier for Strokes mode." | 218 | "Mode line identifier for Strokes mode." |
| 219 | :type 'string | 219 | :type 'string) |
| 220 | :group 'strokes) | ||
| 221 | 220 | ||
| 222 | (defcustom strokes-character ?@ | 221 | (defcustom strokes-character ?@ |
| 223 | "Character used when drawing strokes in the strokes buffer. | 222 | "Character used when drawing strokes in the strokes buffer. |
| 224 | \(The default is `@', which works well.)" | 223 | \(The default is `@', which works well.)" |
| 225 | :type 'character | 224 | :type 'character) |
| 226 | :group 'strokes) | ||
| 227 | 225 | ||
| 228 | (defcustom strokes-minimum-match-score 1000 | 226 | (defcustom strokes-minimum-match-score 1000 |
| 229 | "Minimum score for a stroke to be considered a possible match. | 227 | "Minimum score for a stroke to be considered a possible match. |
| @@ -239,8 +237,7 @@ then you can set `strokes-minimum-match-score' to something that works | |||
| 239 | for you. The only purpose of this variable is to insure that if you | 237 | for you. The only purpose of this variable is to insure that if you |
| 240 | do a bogus stroke that really doesn't match any of the predefined | 238 | do a bogus stroke that really doesn't match any of the predefined |
| 241 | ones, then strokes should NOT pick the one that came closest." | 239 | ones, then strokes should NOT pick the one that came closest." |
| 242 | :type 'integer | 240 | :type 'integer) |
| 243 | :group 'strokes) | ||
| 244 | 241 | ||
| 245 | (defcustom strokes-grid-resolution 9 | 242 | (defcustom strokes-grid-resolution 9 |
| 246 | "Integer defining dimensions of the stroke grid. | 243 | "Integer defining dimensions of the stroke grid. |
| @@ -256,14 +253,12 @@ WARNING: Changing the value of this variable will gravely affect the | |||
| 256 | figure out what it should be based on your needs and on how | 253 | figure out what it should be based on your needs and on how |
| 257 | quick the particular platform(s) you're operating on, and | 254 | quick the particular platform(s) you're operating on, and |
| 258 | only then start programming in your custom strokes." | 255 | only then start programming in your custom strokes." |
| 259 | :type 'integer | 256 | :type 'integer) |
| 260 | :group 'strokes) | ||
| 261 | 257 | ||
| 262 | (defcustom strokes-file (locate-user-emacs-file "strokes" ".strokes") | 258 | (defcustom strokes-file (locate-user-emacs-file "strokes" ".strokes") |
| 263 | "File containing saved strokes for Strokes mode." | 259 | "File containing saved strokes for Strokes mode." |
| 264 | :version "24.4" ; added locate-user-emacs-file | 260 | :version "24.4" ; added locate-user-emacs-file |
| 265 | :type 'file | 261 | :type 'file) |
| 266 | :group 'strokes) | ||
| 267 | 262 | ||
| 268 | (defvar strokes-buffer-name " *strokes*" | 263 | (defvar strokes-buffer-name " *strokes*" |
| 269 | "The name of the buffer that the strokes take place in.") | 264 | "The name of the buffer that the strokes take place in.") |
| @@ -273,8 +268,7 @@ WARNING: Changing the value of this variable will gravely affect the | |||
| 273 | If nil, strokes will be read the same, however the user will not be | 268 | If nil, strokes will be read the same, however the user will not be |
| 274 | able to see the strokes. This be helpful for people who don't like | 269 | able to see the strokes. This be helpful for people who don't like |
| 275 | the delay in switching to the strokes buffer." | 270 | the delay in switching to the strokes buffer." |
| 276 | :type 'boolean | 271 | :type 'boolean) |
| 277 | :group 'strokes) | ||
| 278 | 272 | ||
| 279 | ;;; internal variables... | 273 | ;;; internal variables... |
| 280 | 274 | ||
| @@ -1044,7 +1038,7 @@ o Strokes are a bit computer-dependent in that they depend somewhat on | |||
| 1044 | (help-mode) | 1038 | (help-mode) |
| 1045 | (help-print-return-message))) | 1039 | (help-print-return-message))) |
| 1046 | 1040 | ||
| 1047 | (define-obsolete-function-alias 'strokes-report-bug 'report-emacs-bug "24.1") | 1041 | (define-obsolete-function-alias 'strokes-report-bug #'report-emacs-bug "24.1") |
| 1048 | 1042 | ||
| 1049 | (defun strokes-window-configuration-changed-p () | 1043 | (defun strokes-window-configuration-changed-p () |
| 1050 | "Non-nil if the `strokes-window-configuration' frame properties changed. | 1044 | "Non-nil if the `strokes-window-configuration' frame properties changed. |
| @@ -1379,8 +1373,8 @@ If STROKES-MAP is not given, `strokes-global-map' will be used instead." | |||
| 1379 | 1373 | ||
| 1380 | (defvar strokes-mode-map | 1374 | (defvar strokes-mode-map |
| 1381 | (let ((map (make-sparse-keymap))) | 1375 | (let ((map (make-sparse-keymap))) |
| 1382 | (define-key map [(shift down-mouse-2)] 'strokes-do-stroke) | 1376 | (define-key map [(shift down-mouse-2)] #'strokes-do-stroke) |
| 1383 | (define-key map [(meta down-mouse-2)] 'strokes-do-complex-stroke) | 1377 | (define-key map [(meta down-mouse-2)] #'strokes-do-complex-stroke) |
| 1384 | map)) | 1378 | map)) |
| 1385 | 1379 | ||
| 1386 | ;;;###autoload | 1380 | ;;;###autoload |
| @@ -1399,8 +1393,7 @@ Encode/decode your strokes with \\[strokes-encode-buffer], | |||
| 1399 | \\[strokes-decode-buffer]. | 1393 | \\[strokes-decode-buffer]. |
| 1400 | 1394 | ||
| 1401 | \\{strokes-mode-map}" | 1395 | \\{strokes-mode-map}" |
| 1402 | nil strokes-lighter strokes-mode-map | 1396 | nil strokes-lighter strokes-mode-map :global t |
| 1403 | :group 'strokes :global t | ||
| 1404 | (cond ((not (display-mouse-p)) | 1397 | (cond ((not (display-mouse-p)) |
| 1405 | (error "Can't use Strokes without a mouse")) | 1398 | (error "Can't use Strokes without a mouse")) |
| 1406 | (strokes-mode ; turn on strokes | 1399 | (strokes-mode ; turn on strokes |
| @@ -1408,15 +1401,15 @@ Encode/decode your strokes with \\[strokes-encode-buffer], | |||
| 1408 | (null strokes-global-map) | 1401 | (null strokes-global-map) |
| 1409 | (strokes-load-user-strokes)) | 1402 | (strokes-load-user-strokes)) |
| 1410 | (add-hook 'kill-emacs-query-functions | 1403 | (add-hook 'kill-emacs-query-functions |
| 1411 | 'strokes-prompt-user-save-strokes) | 1404 | #'strokes-prompt-user-save-strokes) |
| 1412 | (add-hook 'select-frame-hook | 1405 | (add-hook 'select-frame-hook |
| 1413 | 'strokes-update-window-configuration) | 1406 | #'strokes-update-window-configuration) |
| 1414 | (strokes-update-window-configuration)) | 1407 | (strokes-update-window-configuration)) |
| 1415 | (t ; turn off strokes | 1408 | (t ; turn off strokes |
| 1416 | (if (get-buffer strokes-buffer-name) | 1409 | (if (get-buffer strokes-buffer-name) |
| 1417 | (kill-buffer (get-buffer strokes-buffer-name))) | 1410 | (kill-buffer (get-buffer strokes-buffer-name))) |
| 1418 | (remove-hook 'select-frame-hook | 1411 | (remove-hook 'select-frame-hook |
| 1419 | 'strokes-update-window-configuration)))) | 1412 | #'strokes-update-window-configuration)))) |
| 1420 | 1413 | ||
| 1421 | 1414 | ||
| 1422 | ;;;; strokes-xpm stuff (later may be separate)... | 1415 | ;;;; strokes-xpm stuff (later may be separate)... |
| @@ -1426,74 +1419,75 @@ Encode/decode your strokes with \\[strokes-encode-buffer], | |||
| 1426 | 1419 | ||
| 1427 | (defface strokes-char '((t (:background "lightgray"))) | 1420 | (defface strokes-char '((t (:background "lightgray"))) |
| 1428 | "Face for strokes characters." | 1421 | "Face for strokes characters." |
| 1429 | :version "21.1" | 1422 | :version "21.1") |
| 1430 | :group 'strokes) | ||
| 1431 | 1423 | ||
| 1432 | (put 'strokes 'char-table-extra-slots 0) | 1424 | (put 'strokes 'char-table-extra-slots 0) |
| 1433 | (defconst strokes-char-table (make-char-table 'strokes) ; | 1425 | (defconst strokes-char-table |
| 1426 | (let ((ct (make-char-table 'strokes))) ; | ||
| 1427 | (aset ct ?0 0) | ||
| 1428 | (aset ct ?1 1) | ||
| 1429 | (aset ct ?2 2) | ||
| 1430 | (aset ct ?3 3) | ||
| 1431 | (aset ct ?4 4) | ||
| 1432 | (aset ct ?5 5) | ||
| 1433 | (aset ct ?6 6) | ||
| 1434 | (aset ct ?7 7) | ||
| 1435 | (aset ct ?8 8) | ||
| 1436 | (aset ct ?9 9) | ||
| 1437 | (aset ct ?a 10) | ||
| 1438 | (aset ct ?b 11) | ||
| 1439 | (aset ct ?c 12) | ||
| 1440 | (aset ct ?d 13) | ||
| 1441 | (aset ct ?e 14) | ||
| 1442 | (aset ct ?f 15) | ||
| 1443 | (aset ct ?g 16) | ||
| 1444 | (aset ct ?h 17) | ||
| 1445 | (aset ct ?i 18) | ||
| 1446 | (aset ct ?j 19) | ||
| 1447 | (aset ct ?k 20) | ||
| 1448 | (aset ct ?l 21) | ||
| 1449 | (aset ct ?m 22) | ||
| 1450 | (aset ct ?n 23) | ||
| 1451 | (aset ct ?o 24) | ||
| 1452 | (aset ct ?p 25) | ||
| 1453 | (aset ct ?q 26) | ||
| 1454 | (aset ct ?r 27) | ||
| 1455 | (aset ct ?s 28) | ||
| 1456 | (aset ct ?t 29) | ||
| 1457 | (aset ct ?u 30) | ||
| 1458 | (aset ct ?v 31) | ||
| 1459 | (aset ct ?w 32) | ||
| 1460 | (aset ct ?x 33) | ||
| 1461 | (aset ct ?y 34) | ||
| 1462 | (aset ct ?z 35) | ||
| 1463 | (aset ct ?A 36) | ||
| 1464 | (aset ct ?B 37) | ||
| 1465 | (aset ct ?C 38) | ||
| 1466 | (aset ct ?D 39) | ||
| 1467 | (aset ct ?E 40) | ||
| 1468 | (aset ct ?F 41) | ||
| 1469 | (aset ct ?G 42) | ||
| 1470 | (aset ct ?H 43) | ||
| 1471 | (aset ct ?I 44) | ||
| 1472 | (aset ct ?J 45) | ||
| 1473 | (aset ct ?K 46) | ||
| 1474 | (aset ct ?L 47) | ||
| 1475 | (aset ct ?M 48) | ||
| 1476 | (aset ct ?N 49) | ||
| 1477 | (aset ct ?O 50) | ||
| 1478 | (aset ct ?P 51) | ||
| 1479 | (aset ct ?Q 52) | ||
| 1480 | (aset ct ?R 53) | ||
| 1481 | (aset ct ?S 54) | ||
| 1482 | (aset ct ?T 55) | ||
| 1483 | (aset ct ?U 56) | ||
| 1484 | (aset ct ?V 57) | ||
| 1485 | (aset ct ?W 58) | ||
| 1486 | (aset ct ?X 59) | ||
| 1487 | (aset ct ?Y 60) | ||
| 1488 | (aset ct ?Z 61) | ||
| 1489 | ct) | ||
| 1434 | "The table which stores values for the character keys.") | 1490 | "The table which stores values for the character keys.") |
| 1435 | (aset strokes-char-table ?0 0) | ||
| 1436 | (aset strokes-char-table ?1 1) | ||
| 1437 | (aset strokes-char-table ?2 2) | ||
| 1438 | (aset strokes-char-table ?3 3) | ||
| 1439 | (aset strokes-char-table ?4 4) | ||
| 1440 | (aset strokes-char-table ?5 5) | ||
| 1441 | (aset strokes-char-table ?6 6) | ||
| 1442 | (aset strokes-char-table ?7 7) | ||
| 1443 | (aset strokes-char-table ?8 8) | ||
| 1444 | (aset strokes-char-table ?9 9) | ||
| 1445 | (aset strokes-char-table ?a 10) | ||
| 1446 | (aset strokes-char-table ?b 11) | ||
| 1447 | (aset strokes-char-table ?c 12) | ||
| 1448 | (aset strokes-char-table ?d 13) | ||
| 1449 | (aset strokes-char-table ?e 14) | ||
| 1450 | (aset strokes-char-table ?f 15) | ||
| 1451 | (aset strokes-char-table ?g 16) | ||
| 1452 | (aset strokes-char-table ?h 17) | ||
| 1453 | (aset strokes-char-table ?i 18) | ||
| 1454 | (aset strokes-char-table ?j 19) | ||
| 1455 | (aset strokes-char-table ?k 20) | ||
| 1456 | (aset strokes-char-table ?l 21) | ||
| 1457 | (aset strokes-char-table ?m 22) | ||
| 1458 | (aset strokes-char-table ?n 23) | ||
| 1459 | (aset strokes-char-table ?o 24) | ||
| 1460 | (aset strokes-char-table ?p 25) | ||
| 1461 | (aset strokes-char-table ?q 26) | ||
| 1462 | (aset strokes-char-table ?r 27) | ||
| 1463 | (aset strokes-char-table ?s 28) | ||
| 1464 | (aset strokes-char-table ?t 29) | ||
| 1465 | (aset strokes-char-table ?u 30) | ||
| 1466 | (aset strokes-char-table ?v 31) | ||
| 1467 | (aset strokes-char-table ?w 32) | ||
| 1468 | (aset strokes-char-table ?x 33) | ||
| 1469 | (aset strokes-char-table ?y 34) | ||
| 1470 | (aset strokes-char-table ?z 35) | ||
| 1471 | (aset strokes-char-table ?A 36) | ||
| 1472 | (aset strokes-char-table ?B 37) | ||
| 1473 | (aset strokes-char-table ?C 38) | ||
| 1474 | (aset strokes-char-table ?D 39) | ||
| 1475 | (aset strokes-char-table ?E 40) | ||
| 1476 | (aset strokes-char-table ?F 41) | ||
| 1477 | (aset strokes-char-table ?G 42) | ||
| 1478 | (aset strokes-char-table ?H 43) | ||
| 1479 | (aset strokes-char-table ?I 44) | ||
| 1480 | (aset strokes-char-table ?J 45) | ||
| 1481 | (aset strokes-char-table ?K 46) | ||
| 1482 | (aset strokes-char-table ?L 47) | ||
| 1483 | (aset strokes-char-table ?M 48) | ||
| 1484 | (aset strokes-char-table ?N 49) | ||
| 1485 | (aset strokes-char-table ?O 50) | ||
| 1486 | (aset strokes-char-table ?P 51) | ||
| 1487 | (aset strokes-char-table ?Q 52) | ||
| 1488 | (aset strokes-char-table ?R 53) | ||
| 1489 | (aset strokes-char-table ?S 54) | ||
| 1490 | (aset strokes-char-table ?T 55) | ||
| 1491 | (aset strokes-char-table ?U 56) | ||
| 1492 | (aset strokes-char-table ?V 57) | ||
| 1493 | (aset strokes-char-table ?W 58) | ||
| 1494 | (aset strokes-char-table ?X 59) | ||
| 1495 | (aset strokes-char-table ?Y 60) | ||
| 1496 | (aset strokes-char-table ?Z 61) | ||
| 1497 | 1491 | ||
| 1498 | (defconst strokes-base64-chars | 1492 | (defconst strokes-base64-chars |
| 1499 | ;; I wanted to make this a vector of individual like (vector ?0 | 1493 | ;; I wanted to make this a vector of individual like (vector ?0 |
diff --git a/lisp/textmodes/artist.el b/lisp/textmodes/artist.el index dc45a7306d8..fbb9d2174fd 100644 --- a/lisp/textmodes/artist.el +++ b/lisp/textmodes/artist.el | |||
| @@ -106,13 +106,6 @@ | |||
| 106 | ;; If you add a new drawing mode, send it to me, and I would gladly | 106 | ;; If you add a new drawing mode, send it to me, and I would gladly |
| 107 | ;; include in the next release! | 107 | ;; include in the next release! |
| 108 | 108 | ||
| 109 | ;;; Installation: | ||
| 110 | |||
| 111 | ;; To use artist, put this in your .emacs: | ||
| 112 | ;; | ||
| 113 | ;; (autoload 'artist-mode "artist" "Enter artist-mode" t) | ||
| 114 | |||
| 115 | |||
| 116 | ;;; Requirements: | 109 | ;;; Requirements: |
| 117 | 110 | ||
| 118 | ;; Artist requires the `rect' package (which comes with Emacs) to be | 111 | ;; Artist requires the `rect' package (which comes with Emacs) to be |
| @@ -1760,13 +1753,6 @@ info-variant-part." | |||
| 1760 | "Call function FN with ARGS, if FN is not nil." | 1753 | "Call function FN with ARGS, if FN is not nil." |
| 1761 | `(if ,fn (funcall ,fn ,@args))) | 1754 | `(if ,fn (funcall ,fn ,@args))) |
| 1762 | 1755 | ||
| 1763 | (defun artist-uniq (l) | ||
| 1764 | "Remove consecutive duplicates in list L. Comparison is done with `equal'." | ||
| 1765 | (cond ((null l) nil) | ||
| 1766 | ((null (cdr l)) l) ; only one element in list | ||
| 1767 | ((equal (car l) (car (cdr l))) (artist-uniq (cdr l))) ; first 2 equal | ||
| 1768 | (t (cons (car l) (artist-uniq (cdr l)))))) ; first 2 are different | ||
| 1769 | |||
| 1770 | (defun artist-string-split (str r) | 1756 | (defun artist-string-split (str r) |
| 1771 | "Split string STR at occurrences of regexp R, returning a list of strings." | 1757 | "Split string STR at occurrences of regexp R, returning a list of strings." |
| 1772 | (let ((res nil) | 1758 | (let ((res nil) |
| @@ -2768,7 +2754,7 @@ to append to the end of the list, when doing free-hand drawing)." | |||
| 2768 | Also, the `artist-key-poly-point-list' is reversed." | 2754 | Also, the `artist-key-poly-point-list' is reversed." |
| 2769 | 2755 | ||
| 2770 | (setq artist-key-poly-point-list | 2756 | (setq artist-key-poly-point-list |
| 2771 | (artist-uniq artist-key-poly-point-list)) | 2757 | (seq-uniq artist-key-poly-point-list)) |
| 2772 | 2758 | ||
| 2773 | (if (>= (length artist-key-poly-point-list) 2) | 2759 | (if (>= (length artist-key-poly-point-list) 2) |
| 2774 | 2760 | ||
| @@ -5379,10 +5365,7 @@ The event, EV, is the mouse event." | |||
| 5379 | (concat "Hello Tomas,\n\n" | 5365 | (concat "Hello Tomas,\n\n" |
| 5380 | "I have a nice bug report on Artist for you! Here it is:"))))) | 5366 | "I have a nice bug report on Artist for you! Here it is:"))))) |
| 5381 | 5367 | ||
| 5382 | 5368 | (define-obsolete-function-alias 'artist-uniq #'seq-uniq "28.1") | |
| 5383 | ;; | ||
| 5384 | ;; Now provide this minor mode | ||
| 5385 | ;; | ||
| 5386 | 5369 | ||
| 5387 | (provide 'artist) | 5370 | (provide 'artist) |
| 5388 | 5371 | ||
diff --git a/lisp/textmodes/fill.el b/lisp/textmodes/fill.el index cb5027a9763..61514d6761b 100644 --- a/lisp/textmodes/fill.el +++ b/lisp/textmodes/fill.el | |||
| @@ -412,12 +412,12 @@ and `fill-nobreak-invisible'." | |||
| 412 | ;; Register `kinsoku' for scripts HAN, KANA, BOPOMOFO, and CJK-MISC. | 412 | ;; Register `kinsoku' for scripts HAN, KANA, BOPOMOFO, and CJK-MISC. |
| 413 | ;; Also tell that they don't use space between words. | 413 | ;; Also tell that they don't use space between words. |
| 414 | (map-char-table | 414 | (map-char-table |
| 415 | #'(lambda (key val) | 415 | (lambda (key val) |
| 416 | (when (memq val '(han kana bopomofo cjk-misc)) | 416 | (when (memq val '(han kana bopomofo cjk-misc)) |
| 417 | (set-char-table-range fill-find-break-point-function-table | 417 | (set-char-table-range fill-find-break-point-function-table |
| 418 | key 'kinsoku) | 418 | key 'kinsoku) |
| 419 | (set-char-table-range fill-nospace-between-words-table | 419 | (set-char-table-range fill-nospace-between-words-table |
| 420 | key t))) | 420 | key t))) |
| 421 | char-script-table) | 421 | char-script-table) |
| 422 | ;; Do the same thing also for full width characters and half | 422 | ;; Do the same thing also for full width characters and half |
| 423 | ;; width kana variants. | 423 | ;; width kana variants. |
diff --git a/lisp/textmodes/ispell.el b/lisp/textmodes/ispell.el index cee578fc4b8..eb521134dc4 100644 --- a/lisp/textmodes/ispell.el +++ b/lisp/textmodes/ispell.el | |||
| @@ -1207,9 +1207,9 @@ If LANG is omitted, get the extra word characters for the default language." | |||
| 1207 | (split-string | 1207 | (split-string |
| 1208 | (ispell--call-enchant-lsmod "-list-dicts") " ([^)]+)\n" t)) | 1208 | (ispell--call-enchant-lsmod "-list-dicts") " ([^)]+)\n" t)) |
| 1209 | (found | 1209 | (found |
| 1210 | (mapcar #'(lambda (lang) | 1210 | (mapcar (lambda (lang) |
| 1211 | `(,lang "[[:alpha:]]" "[^[:alpha:]]" | 1211 | `(,lang "[[:alpha:]]" "[^[:alpha:]]" |
| 1212 | ,(ispell--get-extra-word-characters lang) t nil nil utf-8)) | 1212 | ,(ispell--get-extra-word-characters lang) t nil nil utf-8)) |
| 1213 | dictionaries))) | 1213 | dictionaries))) |
| 1214 | ;; Merge into FOUND any elements from the standard ispell-dictionary-base-alist | 1214 | ;; Merge into FOUND any elements from the standard ispell-dictionary-base-alist |
| 1215 | ;; which have no element in FOUND at all. | 1215 | ;; which have no element in FOUND at all. |
diff --git a/lisp/textmodes/reftex-vars.el b/lisp/textmodes/reftex-vars.el index a65772da1a4..0d6bfb5d860 100644 --- a/lisp/textmodes/reftex-vars.el +++ b/lisp/textmodes/reftex-vars.el | |||
| @@ -888,50 +888,46 @@ DOWNCASE t: Downcase words before using them." | |||
| 888 | (string :tag "")) | 888 | (string :tag "")) |
| 889 | (option (boolean :tag "Downcase words ")))) | 889 | (option (boolean :tag "Downcase words ")))) |
| 890 | 890 | ||
| 891 | (if (featurep 'xemacs) | 891 | (defcustom reftex-label-regexps |
| 892 | ;; XEmacs 21.5 doesn't have explicitly numbered matching groups, | 892 | `(;; Normal \\label{foo} labels |
| 893 | ;; so this list mustn't get any more items. | 893 | "\\\\label{\\(?1:[^}]*\\)}" |
| 894 | (defconst reftex-label-regexps '("\\\\label{\\([^}]*\\)}")) | 894 | ;; keyvals [..., label = {foo}, ...] forms used by ctable, |
| 895 | (defcustom reftex-label-regexps | 895 | ;; listings, breqn, ... |
| 896 | `(;; Normal \\label{foo} labels | 896 | ,(concat |
| 897 | "\\\\label{\\(?1:[^}]*\\)}" | 897 | ;; Make sure we search only for optional arguments of |
| 898 | ;; keyvals [..., label = {foo}, ...] forms used by ctable, | 898 | ;; environments/macros and don't match any other [. ctable |
| 899 | ;; listings, breqn, ... | 899 | ;; provides a macro called \ctable, beamer/breqn/listings have |
| 900 | ,(concat | 900 | ;; environments. Start with a backslash and a group for names |
| 901 | ;; Make sure we search only for optional arguments of | 901 | "\\\\\\(?:" |
| 902 | ;; environments/macros and don't match any other [. ctable | 902 | ;; begin, optional spaces and opening brace |
| 903 | ;; provides a macro called \ctable, beamer/breqn/listings have | 903 | "begin[[:space:]]*{" |
| 904 | ;; environments. Start with a backslash and a group for names | 904 | ;; Build a regexp for env names |
| 905 | "\\\\\\(?:" | 905 | (regexp-opt '("lstlisting" "dmath" "dseries" "dgroup" |
| 906 | ;; begin, optional spaces and opening brace | 906 | "darray" "frame")) |
| 907 | "begin[[:space:]]*{" | 907 | ;; closing brace, optional spaces |
| 908 | ;; Build a regexp for env names | 908 | "}[[:space:]]*" |
| 909 | (regexp-opt '("lstlisting" "dmath" "dseries" "dgroup" | 909 | ;; Now for macros |
| 910 | "darray" "frame")) | 910 | "\\|" |
| 911 | ;; closing brace, optional spaces | 911 | ;; Build a regexp for macro names; currently only \ctable |
| 912 | "}[[:space:]]*" | 912 | (regexp-opt '("ctable")) |
| 913 | ;; Now for macros | 913 | ;; Close the group for names |
| 914 | "\\|" | 914 | "\\)" |
| 915 | ;; Build a regexp for macro names; currently only \ctable | 915 | ;; Match the opening [ and the following chars |
| 916 | (regexp-opt '("ctable")) | 916 | "\\[[^][]*" |
| 917 | ;; Close the group for names | 917 | ;; Allow nested levels of chars enclosed in braces |
| 918 | "\\)" | 918 | "\\(?:{[^}{]*" |
| 919 | ;; Match the opening [ and the following chars | 919 | "\\(?:{[^}{]*" |
| 920 | "\\[[^][]*" | 920 | "\\(?:{[^}{]*}[^}{]*\\)*" |
| 921 | ;; Allow nested levels of chars enclosed in braces | 921 | "}[^}{]*\\)*" |
| 922 | "\\(?:{[^}{]*" | 922 | "}[^][]*\\)*" |
| 923 | "\\(?:{[^}{]*" | 923 | ;; Match the label key |
| 924 | "\\(?:{[^}{]*}[^}{]*\\)*" | 924 | "\\<label[[:space:]]*=[[:space:]]*" |
| 925 | "}[^}{]*\\)*" | 925 | ;; Match the label value; braces around the value are |
| 926 | "}[^][]*\\)*" | 926 | ;; optional. |
| 927 | ;; Match the label key | 927 | "{?\\(?1:[^] ,}\r\n\t%]+\\)" |
| 928 | "\\<label[[:space:]]*=[[:space:]]*" | 928 | ;; We are done. Just search until the next closing bracket |
| 929 | ;; Match the label value; braces around the value are | 929 | "[^]]*\\]")) |
| 930 | ;; optional. | 930 | "List of regexps matching \\label definitions. |
| 931 | "{?\\(?1:[^] ,}\r\n\t%]+\\)" | ||
| 932 | ;; We are done. Just search until the next closing bracket | ||
| 933 | "[^]]*\\]")) | ||
| 934 | "List of regexps matching \\label definitions. | ||
| 935 | The default value matches usual \\label{...} definitions and | 931 | The default value matches usual \\label{...} definitions and |
| 936 | keyval style [..., label = {...}, ...] label definitions. The | 932 | keyval style [..., label = {...}, ...] label definitions. The |
| 937 | regexp for keyval style explicitly looks for environments | 933 | regexp for keyval style explicitly looks for environments |
| @@ -946,13 +942,13 @@ you have to define it using \\(?1:...\\) when adding new regexps. | |||
| 946 | When changed from Lisp, make sure to call | 942 | When changed from Lisp, make sure to call |
| 947 | `reftex-compile-variables' afterwards to make the change | 943 | `reftex-compile-variables' afterwards to make the change |
| 948 | effective." | 944 | effective." |
| 949 | :version "28.1" | 945 | :version "28.1" |
| 950 | :set (lambda (symbol value) | 946 | :set (lambda (symbol value) |
| 951 | (set symbol value) | 947 | (set symbol value) |
| 952 | (when (fboundp 'reftex-compile-variables) | 948 | (when (fboundp 'reftex-compile-variables) |
| 953 | (reftex-compile-variables))) | 949 | (reftex-compile-variables))) |
| 954 | :group 'reftex-defining-label-environments | 950 | :group 'reftex-defining-label-environments |
| 955 | :type '(repeat (regexp :tag "Regular Expression")))) | 951 | :type '(repeat (regexp :tag "Regular Expression"))) |
| 956 | 952 | ||
| 957 | (defcustom reftex-label-ignored-macros-and-environments nil | 953 | (defcustom reftex-label-ignored-macros-and-environments nil |
| 958 | "List of macros and environments to be ignored when searching for labels. | 954 | "List of macros and environments to be ignored when searching for labels. |
diff --git a/lisp/textmodes/remember.el b/lisp/textmodes/remember.el index 3affb462011..cd76bf80f19 100644 --- a/lisp/textmodes/remember.el +++ b/lisp/textmodes/remember.el | |||
| @@ -178,10 +178,6 @@ | |||
| 178 | 178 | ||
| 179 | ;;; Code: | 179 | ;;; Code: |
| 180 | 180 | ||
| 181 | (defconst remember-version "2.0" | ||
| 182 | "This version of remember.") | ||
| 183 | (make-obsolete-variable 'remember-version nil "28.1") | ||
| 184 | |||
| 185 | (defgroup remember nil | 181 | (defgroup remember nil |
| 186 | "A mode to remember information." | 182 | "A mode to remember information." |
| 187 | :group 'data) | 183 | :group 'data) |
| @@ -671,6 +667,11 @@ is non-nil, bury it and return nil; otherwise return t." | |||
| 671 | nil) | 667 | nil) |
| 672 | t)) | 668 | t)) |
| 673 | 669 | ||
| 670 | ;; Obsolete | ||
| 671 | |||
| 672 | (defconst remember-version "2.0" "This version of remember.") | ||
| 673 | (make-obsolete-variable 'remember-version 'emacs-version "28.1") | ||
| 674 | |||
| 674 | (provide 'remember) | 675 | (provide 'remember) |
| 675 | 676 | ||
| 676 | ;;; remember.el ends here | 677 | ;;; remember.el ends here |
diff --git a/lisp/textmodes/rst.el b/lisp/textmodes/rst.el index ce156370d57..56cca840047 100644 --- a/lisp/textmodes/rst.el +++ b/lisp/textmodes/rst.el | |||
| @@ -554,30 +554,30 @@ After interpretation of ARGS the results are concatenated as for | |||
| 554 | `:seq'." | 554 | `:seq'." |
| 555 | (apply #'concat | 555 | (apply #'concat |
| 556 | (mapcar | 556 | (mapcar |
| 557 | #'(lambda (re) | 557 | (lambda (re) |
| 558 | (cond | 558 | (cond |
| 559 | ((stringp re) | 559 | ((stringp re) |
| 560 | re) | 560 | re) |
| 561 | ((symbolp re) | 561 | ((symbolp re) |
| 562 | (cadr (assoc re rst-re-alist))) | 562 | (cadr (assoc re rst-re-alist))) |
| 563 | ((characterp re) | 563 | ((characterp re) |
| 564 | (regexp-quote (char-to-string re))) | 564 | (regexp-quote (char-to-string re))) |
| 565 | ((listp re) | 565 | ((listp re) |
| 566 | (let ((nested | 566 | (let ((nested |
| 567 | (mapcar #'rst-re (cdr re)))) | 567 | (mapcar #'rst-re (cdr re)))) |
| 568 | (cond | 568 | (cond |
| 569 | ((eq (car re) :seq) | 569 | ((eq (car re) :seq) |
| 570 | (mapconcat #'identity nested "")) | 570 | (mapconcat #'identity nested "")) |
| 571 | ((eq (car re) :shy) | 571 | ((eq (car re) :shy) |
| 572 | (concat "\\(?:" (mapconcat #'identity nested "") "\\)")) | 572 | (concat "\\(?:" (mapconcat #'identity nested "") "\\)")) |
| 573 | ((eq (car re) :grp) | 573 | ((eq (car re) :grp) |
| 574 | (concat "\\(" (mapconcat #'identity nested "") "\\)")) | 574 | (concat "\\(" (mapconcat #'identity nested "") "\\)")) |
| 575 | ((eq (car re) :alt) | 575 | ((eq (car re) :alt) |
| 576 | (concat "\\(?:" (mapconcat #'identity nested "\\|") "\\)")) | 576 | (concat "\\(?:" (mapconcat #'identity nested "\\|") "\\)")) |
| 577 | (t | 577 | (t |
| 578 | (error "Unknown list car: %s" (car re)))))) | 578 | (error "Unknown list car: %s" (car re)))))) |
| 579 | (t | 579 | (t |
| 580 | (error "Unknown object type for building regex: %s" re)))) | 580 | (error "Unknown object type for building regex: %s" re)))) |
| 581 | args))) | 581 | args))) |
| 582 | 582 | ||
| 583 | ;; FIXME: Remove circular dependency between `rst-re' and `rst-re-alist'. | 583 | ;; FIXME: Remove circular dependency between `rst-re' and `rst-re-alist'. |
| @@ -709,8 +709,8 @@ Return CHAR if so or signal an error otherwise." | |||
| 709 | ;; testcover: ok. | 709 | ;; testcover: ok. |
| 710 | "Return position of SELF in ADOS or nil." | 710 | "Return position of SELF in ADOS or nil." |
| 711 | (cl-check-type self rst-Ado) | 711 | (cl-check-type self rst-Ado) |
| 712 | (cl-position-if #'(lambda (e) | 712 | (cl-position-if (lambda (e) |
| 713 | (rst-Ado-equal self e)) | 713 | (rst-Ado-equal self e)) |
| 714 | ados)) | 714 | ados)) |
| 715 | 715 | ||
| 716 | 716 | ||
| @@ -814,8 +814,8 @@ Return ADO if so or signal an error otherwise." | |||
| 814 | "Return sublist of HDRS whose car's adornment equals that of SELF or nil." | 814 | "Return sublist of HDRS whose car's adornment equals that of SELF or nil." |
| 815 | (cl-check-type self rst-Hdr) | 815 | (cl-check-type self rst-Hdr) |
| 816 | (let ((ado (rst-Hdr-ado self))) | 816 | (let ((ado (rst-Hdr-ado self))) |
| 817 | (cl-member-if #'(lambda (hdr) | 817 | (cl-member-if (lambda (hdr) |
| 818 | (rst-Ado-equal ado (rst-Hdr-ado hdr))) | 818 | (rst-Ado-equal ado (rst-Hdr-ado hdr))) |
| 819 | hdrs))) | 819 | hdrs))) |
| 820 | 820 | ||
| 821 | (defun rst-Hdr-ado-map (selves) | 821 | (defun rst-Hdr-ado-map (selves) |
| @@ -1277,8 +1277,8 @@ This inherits from Text mode.") | |||
| 1277 | 1277 | ||
| 1278 | ;; Abbrevs. | 1278 | ;; Abbrevs. |
| 1279 | (define-abbrev-table 'rst-mode-abbrev-table | 1279 | (define-abbrev-table 'rst-mode-abbrev-table |
| 1280 | (mapcar #'(lambda (x) | 1280 | (mapcar (lambda (x) |
| 1281 | (append x '(nil 0 system))) | 1281 | (append x '(nil 0 system))) |
| 1282 | '(("contents" ".. contents::\n..\n ") | 1282 | '(("contents" ".. contents::\n..\n ") |
| 1283 | ("con" ".. contents::\n..\n ") | 1283 | ("con" ".. contents::\n..\n ") |
| 1284 | ("cont" "[...]") | 1284 | ("cont" "[...]") |
| @@ -1501,9 +1501,9 @@ file." | |||
| 1501 | :type `(repeat | 1501 | :type `(repeat |
| 1502 | (group :tag "Adornment specification" | 1502 | (group :tag "Adornment specification" |
| 1503 | (choice :tag "Adornment character" | 1503 | (choice :tag "Adornment character" |
| 1504 | ,@(mapcar #'(lambda (char) | 1504 | ,@(mapcar (lambda (char) |
| 1505 | (list 'const | 1505 | (list 'const |
| 1506 | :tag (char-to-string char) char)) | 1506 | :tag (char-to-string char) char)) |
| 1507 | rst-adornment-chars)) | 1507 | rst-adornment-chars)) |
| 1508 | (radio :tag "Adornment type" | 1508 | (radio :tag "Adornment type" |
| 1509 | (const :tag "Overline and underline" over-and-under) | 1509 | (const :tag "Overline and underline" over-and-under) |
| @@ -1540,8 +1540,8 @@ search starts after this entry. Return nil if no new preferred | |||
| 1540 | ;; Start searching after the level of the previous adornment. | 1540 | ;; Start searching after the level of the previous adornment. |
| 1541 | (cdr (rst-Hdr-member-ado prev (rst-Hdr-preferred-adornments)))) | 1541 | (cdr (rst-Hdr-member-ado prev (rst-Hdr-preferred-adornments)))) |
| 1542 | (rst-Hdr-preferred-adornments)))) | 1542 | (rst-Hdr-preferred-adornments)))) |
| 1543 | (cl-find-if #'(lambda (cand) | 1543 | (cl-find-if (lambda (cand) |
| 1544 | (not (rst-Hdr-member-ado cand seen))) | 1544 | (not (rst-Hdr-member-ado cand seen))) |
| 1545 | candidates))) | 1545 | candidates))) |
| 1546 | 1546 | ||
| 1547 | (defun rst-update-section (hdr) | 1547 | (defun rst-update-section (hdr) |
| @@ -1620,55 +1620,55 @@ returned." | |||
| 1620 | (ttl-blw ; Title found below starting here. | 1620 | (ttl-blw ; Title found below starting here. |
| 1621 | (rst-forward-line-looking-at | 1621 | (rst-forward-line-looking-at |
| 1622 | +1 'ttl-beg-1 | 1622 | +1 'ttl-beg-1 |
| 1623 | #'(lambda (mtcd) | 1623 | (lambda (mtcd) |
| 1624 | (when mtcd | 1624 | (when mtcd |
| 1625 | (setq txt-blw (match-string-no-properties 1)) | 1625 | (setq txt-blw (match-string-no-properties 1)) |
| 1626 | (point))))) | 1626 | (point))))) |
| 1627 | txt-abv | 1627 | txt-abv |
| 1628 | (ttl-abv ; Title found above starting here. | 1628 | (ttl-abv ; Title found above starting here. |
| 1629 | (rst-forward-line-looking-at | 1629 | (rst-forward-line-looking-at |
| 1630 | -1 'ttl-beg-1 | 1630 | -1 'ttl-beg-1 |
| 1631 | #'(lambda (mtcd) | 1631 | (lambda (mtcd) |
| 1632 | (when mtcd | 1632 | (when mtcd |
| 1633 | (setq txt-abv (match-string-no-properties 1)) | 1633 | (setq txt-abv (match-string-no-properties 1)) |
| 1634 | (point))))) | 1634 | (point))))) |
| 1635 | (und-fnd ; Matching underline found starting here. | 1635 | (und-fnd ; Matching underline found starting here. |
| 1636 | (and ttl-blw | 1636 | (and ttl-blw |
| 1637 | (rst-forward-line-looking-at | 1637 | (rst-forward-line-looking-at |
| 1638 | +2 (list ado-re 'lin-end) | 1638 | +2 (list ado-re 'lin-end) |
| 1639 | #'(lambda (mtcd) | 1639 | (lambda (mtcd) |
| 1640 | (when mtcd | 1640 | (when mtcd |
| 1641 | (point)))))) | 1641 | (point)))))) |
| 1642 | (ovr-fnd ; Matching overline found starting here. | 1642 | (ovr-fnd ; Matching overline found starting here. |
| 1643 | (and ttl-abv | 1643 | (and ttl-abv |
| 1644 | (rst-forward-line-looking-at | 1644 | (rst-forward-line-looking-at |
| 1645 | -2 (list ado-re 'lin-end) | 1645 | -2 (list ado-re 'lin-end) |
| 1646 | #'(lambda (mtcd) | 1646 | (lambda (mtcd) |
| 1647 | (when mtcd | 1647 | (when mtcd |
| 1648 | (point)))))) | 1648 | (point)))))) |
| 1649 | (und-wng ; Wrong underline found starting here. | 1649 | (und-wng ; Wrong underline found starting here. |
| 1650 | (and ttl-blw | 1650 | (and ttl-blw |
| 1651 | (not und-fnd) | 1651 | (not und-fnd) |
| 1652 | (rst-forward-line-looking-at | 1652 | (rst-forward-line-looking-at |
| 1653 | +2 'ado-beg-2-1 | 1653 | +2 'ado-beg-2-1 |
| 1654 | #'(lambda (mtcd) | 1654 | (lambda (mtcd) |
| 1655 | (when mtcd | 1655 | (when mtcd |
| 1656 | (point)))))) | 1656 | (point)))))) |
| 1657 | (ovr-wng ; Wrong overline found starting here. | 1657 | (ovr-wng ; Wrong overline found starting here. |
| 1658 | (and ttl-abv (not ovr-fnd) | 1658 | (and ttl-abv (not ovr-fnd) |
| 1659 | (rst-forward-line-looking-at | 1659 | (rst-forward-line-looking-at |
| 1660 | -2 'ado-beg-2-1 | 1660 | -2 'ado-beg-2-1 |
| 1661 | #'(lambda (mtcd) | 1661 | (lambda (mtcd) |
| 1662 | (when (and | 1662 | (when (and |
| 1663 | mtcd | 1663 | mtcd |
| 1664 | ;; An adornment above may be a legal | 1664 | ;; An adornment above may be a legal |
| 1665 | ;; adornment for the line above - consider it | 1665 | ;; adornment for the line above - consider it |
| 1666 | ;; a wrong overline only when it is equally | 1666 | ;; a wrong overline only when it is equally |
| 1667 | ;; long. | 1667 | ;; long. |
| 1668 | (equal | 1668 | (equal |
| 1669 | (length (match-string-no-properties 1)) | 1669 | (length (match-string-no-properties 1)) |
| 1670 | (length adornment))) | 1670 | (length adornment))) |
| 1671 | (point))))))) | 1671 | (point))))))) |
| 1672 | (cond | 1672 | (cond |
| 1673 | ((and nxt-emp prv-emp) | 1673 | ((and nxt-emp prv-emp) |
| 1674 | ;; A transition. | 1674 | ;; A transition. |
| @@ -1708,11 +1708,11 @@ a section header or nil if no title line is found." | |||
| 1708 | (rst-forward-line-strict 0)) | 1708 | (rst-forward-line-strict 0)) |
| 1709 | (let* (cnd-beg ; Beginning of a title candidate. | 1709 | (let* (cnd-beg ; Beginning of a title candidate. |
| 1710 | cnd-txt ; Text of a title candidate. | 1710 | cnd-txt ; Text of a title candidate. |
| 1711 | (cnd-fun #'(lambda (mtcd) ; Function setting title candidate data. | 1711 | (cnd-fun (lambda (mtcd) ; Function setting title candidate data. |
| 1712 | (when mtcd | 1712 | (when mtcd |
| 1713 | (setq cnd-beg (match-beginning 0)) | 1713 | (setq cnd-beg (match-beginning 0)) |
| 1714 | (setq cnd-txt (match-string-no-properties 1)) | 1714 | (setq cnd-txt (match-string-no-properties 1)) |
| 1715 | t))) | 1715 | t))) |
| 1716 | ttl) | 1716 | ttl) |
| 1717 | (cond | 1717 | (cond |
| 1718 | ((looking-at (rst-re 'ado-beg-2-1)) | 1718 | ((looking-at (rst-re 'ado-beg-2-1)) |
| @@ -1728,10 +1728,10 @@ a section header or nil if no title line is found." | |||
| 1728 | ;; Title line found - check for a following underline. | 1728 | ;; Title line found - check for a following underline. |
| 1729 | (setq ttl (rst-forward-line-looking-at | 1729 | (setq ttl (rst-forward-line-looking-at |
| 1730 | 1 'ado-beg-2-1 | 1730 | 1 'ado-beg-2-1 |
| 1731 | #'(lambda (mtcd) | 1731 | (lambda (mtcd) |
| 1732 | (when mtcd | 1732 | (when mtcd |
| 1733 | (rst-classify-adornment | 1733 | (rst-classify-adornment |
| 1734 | (match-string-no-properties 0) (match-end 0)))))) | 1734 | (match-string-no-properties 0) (match-end 0)))))) |
| 1735 | ;; Title candidate found if no valid adornment found. | 1735 | ;; Title candidate found if no valid adornment found. |
| 1736 | (funcall cnd-fun (not ttl)))) | 1736 | (funcall cnd-fun (not ttl)))) |
| 1737 | (cond | 1737 | (cond |
| @@ -1827,15 +1827,15 @@ given." | |||
| 1827 | (ignore-ttl | 1827 | (ignore-ttl |
| 1828 | (if ignore-position | 1828 | (if ignore-position |
| 1829 | (cl-find-if | 1829 | (cl-find-if |
| 1830 | #'(lambda (ttl) | 1830 | (lambda (ttl) |
| 1831 | (equal (rst-Ttl-contains ttl ignore-position) 0)) | 1831 | (equal (rst-Ttl-contains ttl ignore-position) 0)) |
| 1832 | all-ttls))) | 1832 | all-ttls))) |
| 1833 | (really-ignore | 1833 | (really-ignore |
| 1834 | (if ignore-ttl | 1834 | (if ignore-ttl |
| 1835 | (<= (cl-count-if | 1835 | (<= (cl-count-if |
| 1836 | #'(lambda (ttl) | 1836 | (lambda (ttl) |
| 1837 | (rst-Ado-equal (rst-Ttl-ado ignore-ttl) | 1837 | (rst-Ado-equal (rst-Ttl-ado ignore-ttl) |
| 1838 | (rst-Ttl-ado ttl))) | 1838 | (rst-Ttl-ado ttl))) |
| 1839 | all-ttls) | 1839 | all-ttls) |
| 1840 | 1))) | 1840 | 1))) |
| 1841 | (real-ttls (delq (if really-ignore ignore-ttl) all-ttls))) | 1841 | (real-ttls (delq (if really-ignore ignore-ttl) all-ttls))) |
| @@ -1859,14 +1859,14 @@ given." | |||
| 1859 | Return a list of (`rst-Ttl' . LEVEL) with ascending line number." | 1859 | Return a list of (`rst-Ttl' . LEVEL) with ascending line number." |
| 1860 | (let ((hier (rst-Hdr-ado-map (rst-hdr-hierarchy)))) | 1860 | (let ((hier (rst-Hdr-ado-map (rst-hdr-hierarchy)))) |
| 1861 | (mapcar | 1861 | (mapcar |
| 1862 | #'(lambda (ttl) | 1862 | (lambda (ttl) |
| 1863 | (cons ttl (rst-Ado-position (rst-Ttl-ado ttl) hier))) | 1863 | (cons ttl (rst-Ado-position (rst-Ttl-ado ttl) hier))) |
| 1864 | (rst-all-ttls)))) | 1864 | (rst-all-ttls)))) |
| 1865 | 1865 | ||
| 1866 | (defun rst-get-previous-hdr () | 1866 | (defun rst-get-previous-hdr () |
| 1867 | "Return the `rst-Hdr' before point or nil if none." | 1867 | "Return the `rst-Hdr' before point or nil if none." |
| 1868 | (let ((prev (cl-find-if #'(lambda (ttl) | 1868 | (let ((prev (cl-find-if (lambda (ttl) |
| 1869 | (< (rst-Ttl-contains ttl (point)) 0)) | 1869 | (< (rst-Ttl-contains ttl (point)) 0)) |
| 1870 | (rst-all-ttls) | 1870 | (rst-all-ttls) |
| 1871 | :from-end t))) | 1871 | :from-end t))) |
| 1872 | (and prev (rst-Ttl-hdr prev)))) | 1872 | (and prev (rst-Ttl-hdr prev)))) |
| @@ -2169,19 +2169,19 @@ hierarchy is similar to that used by `rst-adjust-section'." | |||
| 2169 | (let* ((beg (region-beginning)) | 2169 | (let* ((beg (region-beginning)) |
| 2170 | (end (region-end)) | 2170 | (end (region-end)) |
| 2171 | (ttls-reg (cl-remove-if-not | 2171 | (ttls-reg (cl-remove-if-not |
| 2172 | #'(lambda (ttl) | 2172 | (lambda (ttl) |
| 2173 | (and | 2173 | (and |
| 2174 | (>= (rst-Ttl-contains ttl beg) 0) | 2174 | (>= (rst-Ttl-contains ttl beg) 0) |
| 2175 | (< (rst-Ttl-contains ttl end) 0))) | 2175 | (< (rst-Ttl-contains ttl end) 0))) |
| 2176 | (rst-all-ttls)))) | 2176 | (rst-all-ttls)))) |
| 2177 | (save-excursion | 2177 | (save-excursion |
| 2178 | ;; Apply modifications. | 2178 | ;; Apply modifications. |
| 2179 | (rst-destructuring-dolist | 2179 | (rst-destructuring-dolist |
| 2180 | ((marker &rest hdr | 2180 | ((marker &rest hdr |
| 2181 | &aux (hier (rst-hdr-hierarchy))) | 2181 | &aux (hier (rst-hdr-hierarchy))) |
| 2182 | (mapcar #'(lambda (ttl) | 2182 | (mapcar (lambda (ttl) |
| 2183 | (cons (copy-marker (rst-Ttl-get-title-beginning ttl)) | 2183 | (cons (copy-marker (rst-Ttl-get-title-beginning ttl)) |
| 2184 | (rst-Ttl-hdr ttl))) | 2184 | (rst-Ttl-hdr ttl))) |
| 2185 | ttls-reg)) | 2185 | ttls-reg)) |
| 2186 | (set-marker | 2186 | (set-marker |
| 2187 | (goto-char marker) nil) | 2187 | (goto-char marker) nil) |
| @@ -2391,9 +2391,9 @@ also arranged by `rst-insert-list-new-tag'." | |||
| 2391 | "List of favorite bullets." | 2391 | "List of favorite bullets." |
| 2392 | :group 'rst | 2392 | :group 'rst |
| 2393 | :type `(repeat | 2393 | :type `(repeat |
| 2394 | (choice ,@(mapcar #'(lambda (char) | 2394 | (choice ,@(mapcar (lambda (char) |
| 2395 | (list 'const | 2395 | (list 'const |
| 2396 | :tag (char-to-string char) char)) | 2396 | :tag (char-to-string char) char)) |
| 2397 | rst-bullets))) | 2397 | rst-bullets))) |
| 2398 | :package-version '(rst . "1.1.0")) | 2398 | :package-version '(rst . "1.1.0")) |
| 2399 | 2399 | ||
| @@ -2517,13 +2517,13 @@ ordered by POINT." | |||
| 2517 | (looking-at (rst-re rst-re-beg)) ; Start found | 2517 | (looking-at (rst-re rst-re-beg)) ; Start found |
| 2518 | (not (rst-forward-line-looking-at | 2518 | (not (rst-forward-line-looking-at |
| 2519 | -1 'lin-end | 2519 | -1 'lin-end |
| 2520 | #'(lambda (mtcd) ; Previous line exists and is... | 2520 | (lambda (mtcd) ; Previous line exists and is... |
| 2521 | (and | 2521 | (and |
| 2522 | (not mtcd) ; non-empty, | 2522 | (not mtcd) ; non-empty, |
| 2523 | (<= (current-indentation) clm) ; less indented | 2523 | (<= (current-indentation) clm) ; less indented |
| 2524 | (not (and (= (current-indentation) clm) | 2524 | (not (and (= (current-indentation) clm) |
| 2525 | ; not a beg at same level. | 2525 | ; not a beg at same level. |
| 2526 | (looking-at (rst-re rst-re-beg))))))))) | 2526 | (looking-at (rst-re rst-re-beg))))))))) |
| 2527 | (back-to-indentation) | 2527 | (back-to-indentation) |
| 2528 | (push (cons (point) clm) r))) | 2528 | (push (cons (point) clm) r))) |
| 2529 | (1value ; At least one line is moved in this loop. | 2529 | (1value ; At least one line is moved in this loop. |
| @@ -2553,8 +2553,8 @@ modified." | |||
| 2553 | ((bullet _clm &rest pnts) | 2553 | ((bullet _clm &rest pnts) |
| 2554 | ;; Zip preferred bullets and sorted columns associating a bullet | 2554 | ;; Zip preferred bullets and sorted columns associating a bullet |
| 2555 | ;; with a column and all the points this column is found. | 2555 | ;; with a column and all the points this column is found. |
| 2556 | (cl-mapcar #'(lambda (bullet clm2pnt) | 2556 | (cl-mapcar (lambda (bullet clm2pnt) |
| 2557 | (cons bullet clm2pnt)) | 2557 | (cons bullet clm2pnt)) |
| 2558 | rst-preferred-bullets | 2558 | rst-preferred-bullets |
| 2559 | (sort clm2pnts #'car-less-than-car))) | 2559 | (sort clm2pnts #'car-less-than-car))) |
| 2560 | ;; Replace the bullets by the preferred ones. | 2560 | ;; Replace the bullets by the preferred ones. |
| @@ -2614,8 +2614,8 @@ section headers at all." | |||
| 2614 | (when (>= point (rst-Stn-get-title-beginning stn)) | 2614 | (when (>= point (rst-Stn-get-title-beginning stn)) |
| 2615 | ;; Point may be in this section or a child. | 2615 | ;; Point may be in this section or a child. |
| 2616 | (let ((in-child (cl-find-if | 2616 | (let ((in-child (cl-find-if |
| 2617 | #'(lambda (child) | 2617 | (lambda (child) |
| 2618 | (>= point (rst-Stn-get-title-beginning child))) | 2618 | (>= point (rst-Stn-get-title-beginning child))) |
| 2619 | (rst-Stn-children stn) | 2619 | (rst-Stn-children stn) |
| 2620 | :from-end t))) | 2620 | :from-end t))) |
| 2621 | (if in-child | 2621 | (if in-child |
| @@ -2829,18 +2829,18 @@ file-write hook to always make it up-to-date automatically." | |||
| 2829 | (and beg | 2829 | (and beg |
| 2830 | (rst-forward-line-looking-at | 2830 | (rst-forward-line-looking-at |
| 2831 | 1 'lin-end | 2831 | 1 'lin-end |
| 2832 | #'(lambda (mtcd) | 2832 | (lambda (mtcd) |
| 2833 | (unless mtcd | 2833 | (unless mtcd |
| 2834 | (rst-apply-indented-blocks | 2834 | (rst-apply-indented-blocks |
| 2835 | (point) (point-max) (current-indentation) | 2835 | (point) (point-max) (current-indentation) |
| 2836 | #'(lambda (count _in-first _in-sub in-super in-empty | 2836 | (lambda (count _in-first _in-sub in-super in-empty |
| 2837 | _relind) | 2837 | _relind) |
| 2838 | (cond | 2838 | (cond |
| 2839 | ((or (> count 1) in-super)) | 2839 | ((or (> count 1) in-super)) |
| 2840 | ((not in-empty) | 2840 | ((not in-empty) |
| 2841 | (setq fnd (line-end-position)) | 2841 | (setq fnd (line-end-position)) |
| 2842 | nil))))) | 2842 | nil))))) |
| 2843 | t))) | 2843 | t))) |
| 2844 | (when fnd | 2844 | (when fnd |
| 2845 | (delete-region beg fnd)) | 2845 | (delete-region beg fnd)) |
| 2846 | (goto-char beg) | 2846 | (goto-char beg) |
| @@ -3024,14 +3024,14 @@ direction." | |||
| 3024 | (contained nil) ; Title contains point (or is after point otherwise). | 3024 | (contained nil) ; Title contains point (or is after point otherwise). |
| 3025 | (found (or (cl-position-if | 3025 | (found (or (cl-position-if |
| 3026 | ;; Find a title containing or after point. | 3026 | ;; Find a title containing or after point. |
| 3027 | #'(lambda (ttl) | 3027 | (lambda (ttl) |
| 3028 | (let ((cmp (rst-Ttl-contains ttl pnt))) | 3028 | (let ((cmp (rst-Ttl-contains ttl pnt))) |
| 3029 | (cond | 3029 | (cond |
| 3030 | ((= cmp 0) ; Title contains point. | 3030 | ((= cmp 0) ; Title contains point. |
| 3031 | (setq contained t) | 3031 | (setq contained t) |
| 3032 | t) | 3032 | t) |
| 3033 | ((> cmp 0) ; Title after point. | 3033 | ((> cmp 0) ; Title after point. |
| 3034 | t)))) | 3034 | t)))) |
| 3035 | ttls) | 3035 | ttls) |
| 3036 | ;; Point after all titles. | 3036 | ;; Point after all titles. |
| 3037 | count)) | 3037 | count)) |
| @@ -3290,8 +3290,8 @@ remove all indentation (CNT = 0). A tab is taken from the text | |||
| 3290 | above. If no suitable tab is found `rst-indent-width' is used." | 3290 | above. If no suitable tab is found `rst-indent-width' is used." |
| 3291 | (interactive "r\np") | 3291 | (interactive "r\np") |
| 3292 | (let ((tabs (sort (rst-compute-tabs beg) | 3292 | (let ((tabs (sort (rst-compute-tabs beg) |
| 3293 | #'(lambda (x y) | 3293 | (lambda (x y) |
| 3294 | (<= x y)))) | 3294 | (<= x y)))) |
| 3295 | (leftmostcol (rst-find-leftmost-column beg end))) | 3295 | (leftmostcol (rst-find-leftmost-column beg end))) |
| 3296 | (when (or (> leftmostcol 0) (> cnt 0)) | 3296 | (when (or (> leftmostcol 0) (> cnt 0)) |
| 3297 | ;; Apply the indent. | 3297 | ;; Apply the indent. |
| @@ -3306,8 +3306,8 @@ above. If no suitable tab is found `rst-indent-width' is used." | |||
| 3306 | (dir (cl-signum cnt)) ; Direction to take. | 3306 | (dir (cl-signum cnt)) ; Direction to take. |
| 3307 | (abs (abs cnt)) ; Absolute number of steps to take. | 3307 | (abs (abs cnt)) ; Absolute number of steps to take. |
| 3308 | ;; Get the position of the first tab beyond leftmostcol. | 3308 | ;; Get the position of the first tab beyond leftmostcol. |
| 3309 | (fnd (cl-position-if #'(lambda (elt) | 3309 | (fnd (cl-position-if (lambda (elt) |
| 3310 | (funcall cmp elt leftmostcol)) | 3310 | (funcall cmp elt leftmostcol)) |
| 3311 | tabs)) | 3311 | tabs)) |
| 3312 | ;; Virtual position of tab. | 3312 | ;; Virtual position of tab. |
| 3313 | (pos (+ (or fnd len) (1- abs))) | 3313 | (pos (+ (or fnd len) (1- abs))) |
| @@ -3492,20 +3492,20 @@ do all lines instead of just paragraphs." | |||
| 3492 | (indent "")) | 3492 | (indent "")) |
| 3493 | (rst-apply-indented-blocks | 3493 | (rst-apply-indented-blocks |
| 3494 | beg end (rst-find-leftmost-column beg end) | 3494 | beg end (rst-find-leftmost-column beg end) |
| 3495 | #'(lambda (count in-first in-sub in-super in-empty _relind) | 3495 | (lambda (count in-first in-sub in-super in-empty _relind) |
| 3496 | (cond | 3496 | (cond |
| 3497 | (in-empty) | 3497 | (in-empty) |
| 3498 | (in-super) | 3498 | (in-super) |
| 3499 | ((zerop count)) | 3499 | ((zerop count)) |
| 3500 | (in-sub | 3500 | (in-sub |
| 3501 | (insert indent)) | 3501 | (insert indent)) |
| 3502 | ((or in-first all) | 3502 | ((or in-first all) |
| 3503 | (let ((tag (format "%d. " (cl-incf enum)))) | 3503 | (let ((tag (format "%d. " (cl-incf enum)))) |
| 3504 | (setq indent (make-string (length tag) ? )) | 3504 | (setq indent (make-string (length tag) ? )) |
| 3505 | (insert tag))) | 3505 | (insert tag))) |
| 3506 | (t | 3506 | (t |
| 3507 | (insert indent))) | 3507 | (insert indent))) |
| 3508 | nil)))) | 3508 | nil)))) |
| 3509 | 3509 | ||
| 3510 | ;; FIXME: Does not deal with deeper indentation - although | 3510 | ;; FIXME: Does not deal with deeper indentation - although |
| 3511 | ;; `rst-apply-indented-blocks' could. | 3511 | ;; `rst-apply-indented-blocks' could. |
| @@ -3520,18 +3520,18 @@ do all lines instead of just paragraphs." | |||
| 3520 | (indent (make-string (length bul) ? ))) | 3520 | (indent (make-string (length bul) ? ))) |
| 3521 | (rst-apply-indented-blocks | 3521 | (rst-apply-indented-blocks |
| 3522 | beg end (rst-find-leftmost-column beg end) | 3522 | beg end (rst-find-leftmost-column beg end) |
| 3523 | #'(lambda (count in-first in-sub in-super in-empty _relind) | 3523 | (lambda (count in-first in-sub in-super in-empty _relind) |
| 3524 | (cond | 3524 | (cond |
| 3525 | (in-empty) | 3525 | (in-empty) |
| 3526 | (in-super) | 3526 | (in-super) |
| 3527 | ((zerop count)) | 3527 | ((zerop count)) |
| 3528 | (in-sub | 3528 | (in-sub |
| 3529 | (insert indent)) | 3529 | (insert indent)) |
| 3530 | ((or in-first all) | 3530 | ((or in-first all) |
| 3531 | (insert bul)) | 3531 | (insert bul)) |
| 3532 | (t | 3532 | (t |
| 3533 | (insert indent))) | 3533 | (insert indent))) |
| 3534 | nil)))) | 3534 | nil)))) |
| 3535 | 3535 | ||
| 3536 | ;; FIXME: Does not deal with a varying number of digits appropriately. | 3536 | ;; FIXME: Does not deal with a varying number of digits appropriately. |
| 3537 | ;; FIXME: Does not deal with multiple levels independently. | 3537 | ;; FIXME: Does not deal with multiple levels independently. |
| @@ -3561,11 +3561,11 @@ Region is from BEG to END. With WITH-EMPTY prefix empty lines too." | |||
| 3561 | (let ((ind (rst-find-leftmost-column beg end))) | 3561 | (let ((ind (rst-find-leftmost-column beg end))) |
| 3562 | (rst-apply-indented-blocks | 3562 | (rst-apply-indented-blocks |
| 3563 | beg end ind | 3563 | beg end ind |
| 3564 | #'(lambda (_count _in-first _in-sub in-super in-empty _relind) | 3564 | (lambda (_count _in-first _in-sub in-super in-empty _relind) |
| 3565 | (when (and (not in-super) (or with-empty (not in-empty))) | 3565 | (when (and (not in-super) (or with-empty (not in-empty))) |
| 3566 | (move-to-column ind t) | 3566 | (move-to-column ind t) |
| 3567 | (insert "| ")) | 3567 | (insert "| ")) |
| 3568 | nil)))) | 3568 | nil)))) |
| 3569 | 3569 | ||
| 3570 | 3570 | ||
| 3571 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | 3571 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
| @@ -4085,16 +4085,16 @@ end of the buffer) return nil and do not move point." | |||
| 4085 | (setq fnd (rst-apply-indented-blocks | 4085 | (setq fnd (rst-apply-indented-blocks |
| 4086 | (line-beginning-position 2) ; Skip the current line | 4086 | (line-beginning-position 2) ; Skip the current line |
| 4087 | (or limit (point-max)) (or column (current-column)) | 4087 | (or limit (point-max)) (or column (current-column)) |
| 4088 | #'(lambda (_count _in-first _in-sub in-super in-empty _relind) | 4088 | (lambda (_count _in-first _in-sub in-super in-empty _relind) |
| 4089 | (cond | 4089 | (cond |
| 4090 | (in-empty | 4090 | (in-empty |
| 4091 | (setq candidate (or candidate (line-beginning-position))) | 4091 | (setq candidate (or candidate (line-beginning-position))) |
| 4092 | nil) | 4092 | nil) |
| 4093 | (in-super | 4093 | (in-super |
| 4094 | (or candidate (line-beginning-position))) | 4094 | (or candidate (line-beginning-position))) |
| 4095 | (t ; Non-empty, same or more indented line. | 4095 | (t ; Non-empty, same or more indented line. |
| 4096 | (setq candidate nil) | 4096 | (setq candidate nil) |
| 4097 | nil))))) | 4097 | nil))))) |
| 4098 | (when fnd | 4098 | (when fnd |
| 4099 | (goto-char fnd)))) | 4099 | (goto-char fnd)))) |
| 4100 | 4100 | ||
diff --git a/lisp/url/url-cookie.el b/lisp/url/url-cookie.el index 27f4f88cb89..60388df2554 100644 --- a/lisp/url/url-cookie.el +++ b/lisp/url/url-cookie.el | |||
| @@ -358,10 +358,10 @@ i.e. 1970-1-1) are loaded as expiring one year from now instead." | |||
| 358 | Default is 1 hour. Note that if you change this variable outside of | 358 | Default is 1 hour. Note that if you change this variable outside of |
| 359 | the `customize' interface after `url-do-setup' has been run, you need | 359 | the `customize' interface after `url-do-setup' has been run, you need |
| 360 | to run the `url-cookie-setup-save-timer' function manually." | 360 | to run the `url-cookie-setup-save-timer' function manually." |
| 361 | :set #'(lambda (var val) | 361 | :set (lambda (var val) |
| 362 | (set-default var val) | 362 | (set-default var val) |
| 363 | (if (bound-and-true-p url-setup-done) | 363 | (if (bound-and-true-p url-setup-done) |
| 364 | (url-cookie-setup-save-timer))) | 364 | (url-cookie-setup-save-timer))) |
| 365 | :type 'integer | 365 | :type 'integer |
| 366 | :group 'url-cookie) | 366 | :group 'url-cookie) |
| 367 | 367 | ||
diff --git a/lisp/url/url-dav.el b/lisp/url/url-dav.el index edb1c1de9fc..192b1ac4f41 100644 --- a/lisp/url/url-dav.el +++ b/lisp/url/url-dav.el | |||
| @@ -43,22 +43,11 @@ | |||
| 43 | (defvar url-http-response-status) | 43 | (defvar url-http-response-status) |
| 44 | (defvar url-http-end-of-headers) | 44 | (defvar url-http-end-of-headers) |
| 45 | 45 | ||
| 46 | (defun url-intersection (l1 l2) | ||
| 47 | "Return a list of the elements occurring in both of the lists L1 and L2." | ||
| 48 | (if (null l2) | ||
| 49 | l2 | ||
| 50 | (let (result) | ||
| 51 | (while l1 | ||
| 52 | (if (member (car l1) l2) | ||
| 53 | (setq result (cons (pop l1) result)) | ||
| 54 | (pop l1))) | ||
| 55 | (nreverse result)))) | ||
| 56 | |||
| 57 | ;;;###autoload | 46 | ;;;###autoload |
| 58 | (defun url-dav-supported-p (url) | 47 | (defun url-dav-supported-p (url) |
| 59 | "Return WebDAV protocol version supported by URL. | 48 | "Return WebDAV protocol version supported by URL. |
| 60 | Returns nil if WebDAV is not supported." | 49 | Returns nil if WebDAV is not supported." |
| 61 | (url-intersection url-dav-supported-protocols | 50 | (seq-intersection url-dav-supported-protocols |
| 62 | (plist-get (url-http-options url) 'dav))) | 51 | (plist-get (url-http-options url) 'dav))) |
| 63 | 52 | ||
| 64 | (defun url-dav-node-text (node) | 53 | (defun url-dav-node-text (node) |
| @@ -910,7 +899,9 @@ Returns nil if URL contains no name starting with FILE." | |||
| 910 | t))) | 899 | t))) |
| 911 | 900 | ||
| 912 | 901 | ||
| 913 | ;;; Miscellaneous stuff. | 902 | ;;; Obsolete. |
| 903 | |||
| 904 | (define-obsolete-function-alias 'url-intersection #'seq-intersection "28.1") | ||
| 914 | 905 | ||
| 915 | (provide 'url-dav) | 906 | (provide 'url-dav) |
| 916 | 907 | ||
diff --git a/lisp/url/url-history.el b/lisp/url/url-history.el index 10238a46607..5dd1f099136 100644 --- a/lisp/url/url-history.el +++ b/lisp/url/url-history.el | |||
| @@ -38,10 +38,10 @@ | |||
| 38 | If non-nil, the URL package will keep track of all the URLs visited. | 38 | If non-nil, the URL package will keep track of all the URLs visited. |
| 39 | If set to t, then the list is saved to disk at the end of each Emacs | 39 | If set to t, then the list is saved to disk at the end of each Emacs |
| 40 | session." | 40 | session." |
| 41 | :set #'(lambda (var val) | 41 | :set (lambda (var val) |
| 42 | (set-default var val) | 42 | (set-default var val) |
| 43 | (and (bound-and-true-p url-setup-done) | 43 | (and (bound-and-true-p url-setup-done) |
| 44 | (url-history-setup-save-timer))) | 44 | (url-history-setup-save-timer))) |
| 45 | :type '(choice (const :tag "off" nil) | 45 | :type '(choice (const :tag "off" nil) |
| 46 | (const :tag "on" t) | 46 | (const :tag "on" t) |
| 47 | (other :tag "within session" session)) | 47 | (other :tag "within session" session)) |
| @@ -59,10 +59,10 @@ is parsed at startup and used to provide URL completion." | |||
| 59 | Default is 1 hour. Note that if you change this variable outside of | 59 | Default is 1 hour. Note that if you change this variable outside of |
| 60 | the `customize' interface after `url-do-setup' has been run, you need | 60 | the `customize' interface after `url-do-setup' has been run, you need |
| 61 | to run the `url-history-setup-save-timer' function manually." | 61 | to run the `url-history-setup-save-timer' function manually." |
| 62 | :set #'(lambda (var val) | 62 | :set (lambda (var val) |
| 63 | (set-default var val) | 63 | (set-default var val) |
| 64 | (if (bound-and-true-p url-setup-done) | 64 | (if (bound-and-true-p url-setup-done) |
| 65 | (url-history-setup-save-timer))) | 65 | (url-history-setup-save-timer))) |
| 66 | :type 'integer | 66 | :type 'integer |
| 67 | :group 'url-history) | 67 | :group 'url-history) |
| 68 | 68 | ||
diff --git a/lisp/url/url-mailto.el b/lisp/url/url-mailto.el index 72884c07cc9..c6901d99200 100644 --- a/lisp/url/url-mailto.el +++ b/lisp/url/url-mailto.el | |||
| @@ -104,8 +104,8 @@ | |||
| 104 | (or (search-forward (concat "\n" mail-header-separator "\n") nil t) | 104 | (or (search-forward (concat "\n" mail-header-separator "\n") nil t) |
| 105 | (goto-char (point-max))) | 105 | (goto-char (point-max))) |
| 106 | (insert (mapconcat | 106 | (insert (mapconcat |
| 107 | #'(lambda (string) | 107 | (lambda (string) |
| 108 | (replace-regexp-in-string "\r\n" "\n" string)) | 108 | (replace-regexp-in-string "\r\n" "\n" string)) |
| 109 | (cdar args) "\n"))) | 109 | (cdar args) "\n"))) |
| 110 | (url-mail-goto-field (caar args)) | 110 | (url-mail-goto-field (caar args)) |
| 111 | ;; (setq func (intern-soft (concat "mail-" (caar args)))) | 111 | ;; (setq func (intern-soft (concat "mail-" (caar args)))) |
diff --git a/lisp/url/url-vars.el b/lisp/url/url-vars.el index 8c836f8f64d..2aa2e7912f5 100644 --- a/lisp/url/url-vars.el +++ b/lisp/url/url-vars.el | |||
| @@ -22,10 +22,6 @@ | |||
| 22 | 22 | ||
| 23 | ;;; Code: | 23 | ;;; Code: |
| 24 | 24 | ||
| 25 | (defconst url-version "Emacs" | ||
| 26 | "Version number of URL package.") | ||
| 27 | (make-obsolete-variable 'url-version nil "28.1") | ||
| 28 | |||
| 29 | (defgroup url nil | 25 | (defgroup url nil |
| 30 | "Uniform Resource Locator tool." | 26 | "Uniform Resource Locator tool." |
| 31 | :version "22.1" | 27 | :version "22.1" |
| @@ -427,6 +423,11 @@ Should be one of: | |||
| 427 | This should be set, e.g. by mail user agents rendering HTML to avoid | 423 | This should be set, e.g. by mail user agents rendering HTML to avoid |
| 428 | `bugs' which call home.") | 424 | `bugs' which call home.") |
| 429 | 425 | ||
| 426 | ;; Obsolete | ||
| 427 | |||
| 428 | (defconst url-version "Emacs" "Version number of URL package.") | ||
| 429 | (make-obsolete-variable 'url-version 'emacs-version "28.1") | ||
| 430 | |||
| 430 | (provide 'url-vars) | 431 | (provide 'url-vars) |
| 431 | 432 | ||
| 432 | ;;; url-vars.el ends here | 433 | ;;; url-vars.el ends here |
diff --git a/lisp/vc/ediff-mult.el b/lisp/vc/ediff-mult.el index 49b2890a160..8e88b60a0bd 100644 --- a/lisp/vc/ediff-mult.el +++ b/lisp/vc/ediff-mult.el | |||
| @@ -620,7 +620,7 @@ behavior." | |||
| 620 | (setq common (ediff-intersection common lis3 #'string=))) | 620 | (setq common (ediff-intersection common lis3 #'string=))) |
| 621 | 621 | ||
| 622 | ;; copying is needed because sort sorts via side effects | 622 | ;; copying is needed because sort sorts via side effects |
| 623 | (setq common (sort (ediff-copy-list common) 'string-lessp)) | 623 | (setq common (sort (copy-sequence common) #'string-lessp)) |
| 624 | 624 | ||
| 625 | ;; compute difference list | 625 | ;; compute difference list |
| 626 | (setq difflist (ediff-set-difference | 626 | (setq difflist (ediff-set-difference |
| @@ -631,7 +631,7 @@ behavior." | |||
| 631 | #'string=) | 631 | #'string=) |
| 632 | difflist (delete "." difflist) | 632 | difflist (delete "." difflist) |
| 633 | ;; copying is needed because sort sorts via side effects | 633 | ;; copying is needed because sort sorts via side effects |
| 634 | difflist (sort (ediff-copy-list (delete ".." difflist)) | 634 | difflist (sort (copy-sequence (delete ".." difflist)) |
| 635 | #'string-lessp)) | 635 | #'string-lessp)) |
| 636 | 636 | ||
| 637 | (setq difflist (mapcar (lambda (elt) (cons elt 1)) difflist)) | 637 | (setq difflist (mapcar (lambda (elt) (cons elt 1)) difflist)) |
| @@ -729,7 +729,7 @@ behavior." | |||
| 729 | ) | 729 | ) |
| 730 | 730 | ||
| 731 | ;; copying is needed because sort sorts via side effects | 731 | ;; copying is needed because sort sorts via side effects |
| 732 | (setq common (sort (ediff-copy-list common) 'string-lessp)) | 732 | (setq common (sort (copy-sequence common) #'string-lessp)) |
| 733 | 733 | ||
| 734 | ;; return result | 734 | ;; return result |
| 735 | (cons | 735 | (cons |
diff --git a/lisp/vc/ediff-util.el b/lisp/vc/ediff-util.el index fc6dcf68a43..1c784908702 100644 --- a/lisp/vc/ediff-util.el +++ b/lisp/vc/ediff-util.el | |||
| @@ -4188,12 +4188,7 @@ Mail anyway? (y or n) ") | |||
| 4188 | (cdr result))) | 4188 | (cdr result))) |
| 4189 | 4189 | ||
| 4190 | (define-obsolete-function-alias 'ediff-add-to-history #'add-to-history "27.1") | 4190 | (define-obsolete-function-alias 'ediff-add-to-history #'add-to-history "27.1") |
| 4191 | 4191 | (define-obsolete-function-alias 'ediff-copy-list #'copy-sequence "28.1") | |
| 4192 | (defalias 'ediff-copy-list 'copy-sequence) | ||
| 4193 | |||
| 4194 | |||
| 4195 | ;; don't report error if version control package wasn't found | ||
| 4196 | ;;(ediff-load-version-control 'silent) | ||
| 4197 | 4192 | ||
| 4198 | (run-hooks 'ediff-load-hook) | 4193 | (run-hooks 'ediff-load-hook) |
| 4199 | 4194 | ||
diff --git a/lisp/vc/vc-git.el b/lisp/vc/vc-git.el index fda8605c679..e37c09df7c2 100644 --- a/lisp/vc/vc-git.el +++ b/lisp/vc/vc-git.el | |||
| @@ -27,14 +27,6 @@ | |||
| 27 | ;; system. | 27 | ;; system. |
| 28 | ;; | 28 | ;; |
| 29 | 29 | ||
| 30 | ;;; Installation: | ||
| 31 | |||
| 32 | ;; To install: put this file on the load-path and add Git to the list | ||
| 33 | ;; of supported backends in `vc-handled-backends'; the following line, | ||
| 34 | ;; placed in your init file, will accomplish this: | ||
| 35 | ;; | ||
| 36 | ;; (add-to-list 'vc-handled-backends 'Git) | ||
| 37 | |||
| 38 | ;;; Todo: | 30 | ;;; Todo: |
| 39 | ;; - check if more functions could use vc-git-command instead | 31 | ;; - check if more functions could use vc-git-command instead |
| 40 | ;; of start-process. | 32 | ;; of start-process. |
diff --git a/lisp/vc/vc-hg.el b/lisp/vc/vc-hg.el index 2bc6ae3524b..a054a7c3176 100644 --- a/lisp/vc/vc-hg.el +++ b/lisp/vc/vc-hg.el | |||
| @@ -30,8 +30,6 @@ | |||
| 30 | 30 | ||
| 31 | ;;; Bugs: | 31 | ;;; Bugs: |
| 32 | 32 | ||
| 33 | ;;; Installation: | ||
| 34 | |||
| 35 | ;;; Todo: | 33 | ;;; Todo: |
| 36 | 34 | ||
| 37 | ;; 1) Implement the rest of the vc interface. See the comment at the | 35 | ;; 1) Implement the rest of the vc interface. See the comment at the |
diff --git a/lisp/vcursor.el b/lisp/vcursor.el index 595a25381ab..e219dc2d1a5 100644 --- a/lisp/vcursor.el +++ b/lisp/vcursor.el | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | ;;; vcursor.el --- manipulate an alternative ("virtual") cursor | 1 | ;;; vcursor.el --- manipulate an alternative ("virtual") cursor -*- lexical-binding: t; -*- |
| 2 | 2 | ||
| 3 | ;; Copyright (C) 1994, 1996, 1998, 2001-2021 Free Software Foundation, | 3 | ;; Copyright (C) 1994, 1996, 1998, 2001-2021 Free Software Foundation, |
| 4 | ;; Inc. | 4 | ;; Inc. |
| @@ -27,24 +27,24 @@ | |||
| 27 | ;; Latest changes | 27 | ;; Latest changes |
| 28 | ;; ============== | 28 | ;; ============== |
| 29 | ;; | 29 | ;; |
| 30 | ;; - *IMPORTANT* vcursor-key-bindings is now nil by default, to avoid | 30 | ;; - *IMPORTANT* `vcursor-key-bindings' is now nil by default, to avoid |
| 31 | ;; side-effects when the package is loaded. This means no keys are | 31 | ;; side-effects when the package is loaded. This means no keys are |
| 32 | ;; bound by default. Use customize to change it to t to restore | 32 | ;; bound by default. Use customize to change it to t to restore |
| 33 | ;; the old behavior. (If you do it by hand in .emacs, it | 33 | ;; the old behavior. (If you do it by hand in .emacs, it |
| 34 | ;; must come before vcursor is loaded.) | 34 | ;; must come before vcursor is loaded.) |
| 35 | ;; - You can alter the main variables and the vcursor face via | 35 | ;; - You can alter the main variables and the vcursor face via |
| 36 | ;; M-x customize: go to the Editing group and find Vcursor. | 36 | ;; M-x customize: go to the Editing group and find Vcursor. |
| 37 | ;; - vcursor-auto-disable can now be 'copy (actually any value not nil | 37 | ;; - `vcursor-auto-disable' can now be 'copy (actually any value not nil |
| 38 | ;; or t), which means that copying from the vcursor will be turned | 38 | ;; or t), which means that copying from the vcursor will be turned |
| 39 | ;; off after any operation not involving the vcursor, but the | 39 | ;; off after any operation not involving the vcursor, but the |
| 40 | ;; vcursor itself will be left alone. | 40 | ;; vcursor itself will be left alone. |
| 41 | ;; - works on dumb terminals | 41 | ;; - works on dumb terminals |
| 42 | ;; - new keymap vcursor-map for binding to a prefix key | 42 | ;; - new keymap vcursor-map for binding to a prefix key |
| 43 | ;; - vcursor-compare-windows substantially improved | 43 | ;; - `vcursor-compare-windows' substantially improved |
| 44 | ;; - vcursor-execute-{key,command} much better about using the | 44 | ;; - `vcursor-execute-{key,command}' much better about using the |
| 45 | ;; right keymaps and arranging for the correct windows to be used | 45 | ;; right keymaps and arranging for the correct windows to be used |
| 46 | ;; - vcursor-window-funcall can call functions interactively | 46 | ;; - `vcursor-window-funcall' can call functions interactively |
| 47 | ;; - vcursor-interpret-input for special effects | 47 | ;; - `vcursor-interpret-input' for special effects |
| 48 | ;; | 48 | ;; |
| 49 | ;; Introduction | 49 | ;; Introduction |
| 50 | ;; ============ | 50 | ;; ============ |
| @@ -326,21 +326,18 @@ | |||
| 326 | (defface vcursor | 326 | (defface vcursor |
| 327 | '((((class color)) (:foreground "blue" :background "cyan" :underline t)) | 327 | '((((class color)) (:foreground "blue" :background "cyan" :underline t)) |
| 328 | (t (:inverse-video t :underline t))) | 328 | (t (:inverse-video t :underline t))) |
| 329 | "Face for the virtual cursor." | 329 | "Face for the virtual cursor.") |
| 330 | :group 'vcursor) | ||
| 331 | 330 | ||
| 332 | (defcustom vcursor-auto-disable nil | 331 | (defcustom vcursor-auto-disable nil |
| 333 | "If non-nil, disable the virtual cursor after use. | 332 | "If non-nil, disable the virtual cursor after use. |
| 334 | Any non-vcursor command will force `vcursor-disable' to be called. | 333 | Any non-vcursor command will force `vcursor-disable' to be called. |
| 335 | If non-nil but not t, just make sure copying is toggled off, but don't | 334 | If non-nil but not t, just make sure copying is toggled off, but don't |
| 336 | disable the vcursor." | 335 | disable the vcursor." |
| 337 | :type '(choice (const t) (const nil) (const copy)) | 336 | :type '(choice (const t) (const nil) (const copy))) |
| 338 | :group 'vcursor) | ||
| 339 | 337 | ||
| 340 | (defcustom vcursor-modifiers (list 'control 'shift) | 338 | (defcustom vcursor-modifiers (list 'control 'shift) |
| 341 | "A list of modifiers that are used to define vcursor key bindings." | 339 | "A list of modifiers that are used to define vcursor key bindings." |
| 342 | :type '(repeat symbol) | 340 | :type '(repeat symbol)) |
| 343 | :group 'vcursor) | ||
| 344 | 341 | ||
| 345 | ;; Needed for defcustom, must be up here | 342 | ;; Needed for defcustom, must be up here |
| 346 | (defun vcursor-cs-binding (base &optional meta) | 343 | (defun vcursor-cs-binding (base &optional meta) |
| @@ -349,112 +346,114 @@ disable the vcursor." | |||
| 349 | (cons 'meta key) | 346 | (cons 'meta key) |
| 350 | key)))) | 347 | key)))) |
| 351 | 348 | ||
| 349 | ;; (defvar vcursor) | ||
| 350 | |||
| 352 | (defun vcursor-bind-keys (var value) | 351 | (defun vcursor-bind-keys (var value) |
| 353 | "Alter the value of the variable VAR to VALUE, binding keys as required. | 352 | "Alter the value of the variable VAR to VALUE, binding keys as required. |
| 354 | VAR is usually `vcursor-key-bindings'. Normally this function is called | 353 | VAR is usually `vcursor-key-bindings'. Normally this function is called |
| 355 | on loading vcursor and from the customize package." | 354 | on loading vcursor and from the customize package." |
| 356 | (set var value) | 355 | (set var value) |
| 357 | (cond | 356 | (cond |
| 358 | ((not value));; don't set any key bindings | 357 | ((not value)) ;; Don't set any key bindings. |
| 359 | ((or (eq value 'oemacs) | 358 | ((or (eq value 'oemacs) |
| 360 | (and (eq value t) (fboundp 'oemacs-version))) | 359 | (and (eq value t) (fboundp 'oemacs-version))) |
| 361 | (global-set-key [C-f1] 'vcursor-toggle-copy) | 360 | (global-set-key [C-f1] #'vcursor-toggle-copy) |
| 362 | (global-set-key [C-f2] 'vcursor-copy) | 361 | (global-set-key [C-f2] #'vcursor-copy) |
| 363 | (global-set-key [C-f3] 'vcursor-copy-word) | 362 | (global-set-key [C-f3] #'vcursor-copy-word) |
| 364 | (global-set-key [C-f4] 'vcursor-copy-line) | 363 | (global-set-key [C-f4] #'vcursor-copy-line) |
| 365 | 364 | ||
| 366 | (global-set-key [S-f1] 'vcursor-disable) | 365 | (global-set-key [S-f1] #'vcursor-disable) |
| 367 | (global-set-key [S-f2] 'vcursor-other-window) | 366 | (global-set-key [S-f2] #'vcursor-other-window) |
| 368 | (global-set-key [S-f3] 'vcursor-goto) | 367 | (global-set-key [S-f3] #'vcursor-goto) |
| 369 | (global-set-key [S-f4] 'vcursor-swap-point) | 368 | (global-set-key [S-f4] #'vcursor-swap-point) |
| 370 | 369 | ||
| 371 | (global-set-key [C-f5] 'vcursor-backward-char) | 370 | (global-set-key [C-f5] #'vcursor-backward-char) |
| 372 | (global-set-key [C-f6] 'vcursor-previous-line) | 371 | (global-set-key [C-f6] #'vcursor-previous-line) |
| 373 | (global-set-key [C-f7] 'vcursor-next-line) | 372 | (global-set-key [C-f7] #'vcursor-next-line) |
| 374 | (global-set-key [C-f8] 'vcursor-forward-char) | 373 | (global-set-key [C-f8] #'vcursor-forward-char) |
| 375 | 374 | ||
| 376 | (global-set-key [M-f5] 'vcursor-beginning-of-line) | 375 | (global-set-key [M-f5] #'vcursor-beginning-of-line) |
| 377 | (global-set-key [M-f6] 'vcursor-backward-word) | 376 | (global-set-key [M-f6] #'vcursor-backward-word) |
| 378 | (global-set-key [M-f6] 'vcursor-forward-word) | 377 | (global-set-key [M-f6] #'vcursor-forward-word) |
| 379 | (global-set-key [M-f8] 'vcursor-end-of-line) | 378 | (global-set-key [M-f8] #'vcursor-end-of-line) |
| 380 | 379 | ||
| 381 | (global-set-key [S-f5] 'vcursor-beginning-of-buffer) | 380 | (global-set-key [S-f5] #'vcursor-beginning-of-buffer) |
| 382 | (global-set-key [S-f6] 'vcursor-scroll-down) | 381 | (global-set-key [S-f6] #'vcursor-scroll-down) |
| 383 | (global-set-key [S-f7] 'vcursor-scroll-up) | 382 | (global-set-key [S-f7] #'vcursor-scroll-up) |
| 384 | (global-set-key [S-f8] 'vcursor-end-of-buffer) | 383 | (global-set-key [S-f8] #'vcursor-end-of-buffer) |
| 385 | 384 | ||
| 386 | (global-set-key [C-f9] 'vcursor-isearch-forward) | 385 | (global-set-key [C-f9] #'vcursor-isearch-forward) |
| 387 | 386 | ||
| 388 | (global-set-key [S-f9] 'vcursor-execute-key) | 387 | (global-set-key [S-f9] #'vcursor-execute-key) |
| 389 | (global-set-key [S-f10] 'vcursor-execute-command) | 388 | (global-set-key [S-f10] #'vcursor-execute-command) |
| 390 | 389 | ||
| 391 | ;;; Partial dictionary of Oemacs key sequences for you to roll your own, | 390 | ;; Partial dictionary of Oemacs key sequences for you to roll your own, |
| 392 | ;;; e.g C-S-up: (global-set-key "\M-[\C-f\M-\C-m" 'vcursor-previous-line) | 391 | ;; e.g C-S-up: (global-set-key "\M-[\C-f\M-\C-m" 'vcursor-previous-line) |
| 393 | ;;; Sequence: Sends: | 392 | ;; Sequence: Sends: |
| 394 | ;;; "\M-[\C-f\M-\C-m" C-S-up | 393 | ;; "\M-[\C-f\M-\C-m" C-S-up |
| 395 | ;;; "\M-[\C-f\M-\C-q" C-S-down | 394 | ;; "\M-[\C-f\M-\C-q" C-S-down |
| 396 | ;;; "\M-[\C-fs" C-S-left | 395 | ;; "\M-[\C-fs" C-S-left |
| 397 | ;;; "\M-[\C-ft" C-S-right | 396 | ;; "\M-[\C-ft" C-S-right |
| 398 | ;;; | 397 | ;; |
| 399 | ;;; "\M-[\C-fw" C-S-home | 398 | ;; "\M-[\C-fw" C-S-home |
| 400 | ;;; "\M-[\C-b\C-o" S-tab | 399 | ;; "\M-[\C-b\C-o" S-tab |
| 401 | ;;; "\M-[\C-f\M-\C-r" C-S-insert | 400 | ;; "\M-[\C-f\M-\C-r" C-S-insert |
| 402 | ;;; "\M-[\C-fu" C-S-end | 401 | ;; "\M-[\C-fu" C-S-end |
| 403 | ;;; "\M-[\C-f\M-\C-s" C-S-delete | 402 | ;; "\M-[\C-f\M-\C-s" C-S-delete |
| 404 | ;;; "\M-[\C-f\M-\C-d" C-S-prior | 403 | ;; "\M-[\C-f\M-\C-d" C-S-prior |
| 405 | ;;; "\M-[\C-fv" C-S-next | 404 | ;; "\M-[\C-fv" C-S-next |
| 406 | ;;; | 405 | ;; |
| 407 | ;;; "\M-[\C-f^" C-S-f1 | 406 | ;; "\M-[\C-f^" C-S-f1 |
| 408 | ;;; "\M-[\C-f_" C-S-f2 | 407 | ;; "\M-[\C-f_" C-S-f2 |
| 409 | ;;; "\M-[\C-f`" C-S-f3 | 408 | ;; "\M-[\C-f`" C-S-f3 |
| 410 | ;;; "\M-[\C-fa" C-S-f4 | 409 | ;; "\M-[\C-fa" C-S-f4 |
| 411 | ;;; "\M-[\C-fb" C-S-f5 | 410 | ;; "\M-[\C-fb" C-S-f5 |
| 412 | ;;; "\M-[\C-fc" C-S-f6 | 411 | ;; "\M-[\C-fc" C-S-f6 |
| 413 | ;;; "\M-[\C-fd" C-S-f7 | 412 | ;; "\M-[\C-fd" C-S-f7 |
| 414 | ;;; "\M-[\C-fe" C-S-f8 | 413 | ;; "\M-[\C-fe" C-S-f8 |
| 415 | ;;; "\M-[\C-ff" C-S-f9 | 414 | ;; "\M-[\C-ff" C-S-f9 |
| 416 | ;;; "\M-[\C-fg" C-S-f10 | 415 | ;; "\M-[\C-fg" C-S-f10 |
| 417 | ) | 416 | ) |
| 418 | (t | 417 | (t |
| 419 | (global-set-key (vcursor-cs-binding "up") 'vcursor-previous-line) | 418 | (global-set-key (vcursor-cs-binding "up") #'vcursor-previous-line) |
| 420 | (global-set-key (vcursor-cs-binding "down") 'vcursor-next-line) | 419 | (global-set-key (vcursor-cs-binding "down") #'vcursor-next-line) |
| 421 | (global-set-key (vcursor-cs-binding "left") 'vcursor-backward-char) | 420 | (global-set-key (vcursor-cs-binding "left") #'vcursor-backward-char) |
| 422 | (global-set-key (vcursor-cs-binding "right") 'vcursor-forward-char) | 421 | (global-set-key (vcursor-cs-binding "right") #'vcursor-forward-char) |
| 423 | 422 | ||
| 424 | (global-set-key (vcursor-cs-binding "return") 'vcursor-disable) | 423 | (global-set-key (vcursor-cs-binding "return") #'vcursor-disable) |
| 425 | (global-set-key (vcursor-cs-binding "insert") 'vcursor-copy) | 424 | (global-set-key (vcursor-cs-binding "insert") #'vcursor-copy) |
| 426 | (global-set-key (vcursor-cs-binding "delete") 'vcursor-copy-word) | 425 | (global-set-key (vcursor-cs-binding "delete") #'vcursor-copy-word) |
| 427 | (global-set-key (vcursor-cs-binding "remove") 'vcursor-copy-word) | 426 | (global-set-key (vcursor-cs-binding "remove") #'vcursor-copy-word) |
| 428 | (global-set-key (vcursor-cs-binding "tab") 'vcursor-toggle-copy) | 427 | (global-set-key (vcursor-cs-binding "tab") #'vcursor-toggle-copy) |
| 429 | (global-set-key (vcursor-cs-binding "backtab") 'vcursor-toggle-copy) | 428 | (global-set-key (vcursor-cs-binding "backtab") #'vcursor-toggle-copy) |
| 430 | (global-set-key (vcursor-cs-binding "home") 'vcursor-beginning-of-buffer) | 429 | (global-set-key (vcursor-cs-binding "home") #'vcursor-beginning-of-buffer) |
| 431 | (global-set-key (vcursor-cs-binding "up" t) 'vcursor-beginning-of-buffer) | 430 | (global-set-key (vcursor-cs-binding "up" t) #'vcursor-beginning-of-buffer) |
| 432 | (global-set-key (vcursor-cs-binding "end") 'vcursor-end-of-buffer) | 431 | (global-set-key (vcursor-cs-binding "end") #'vcursor-end-of-buffer) |
| 433 | (global-set-key (vcursor-cs-binding "down" t) 'vcursor-end-of-buffer) | 432 | (global-set-key (vcursor-cs-binding "down" t) #'vcursor-end-of-buffer) |
| 434 | (global-set-key (vcursor-cs-binding "prior") 'vcursor-scroll-down) | 433 | (global-set-key (vcursor-cs-binding "prior") #'vcursor-scroll-down) |
| 435 | (global-set-key (vcursor-cs-binding "next") 'vcursor-scroll-up) | 434 | (global-set-key (vcursor-cs-binding "next") #'vcursor-scroll-up) |
| 436 | 435 | ||
| 437 | (global-set-key (vcursor-cs-binding "f6") 'vcursor-other-window) | 436 | (global-set-key (vcursor-cs-binding "f6") #'vcursor-other-window) |
| 438 | (global-set-key (vcursor-cs-binding "f7") 'vcursor-goto) | 437 | (global-set-key (vcursor-cs-binding "f7") #'vcursor-goto) |
| 439 | 438 | ||
| 440 | (global-set-key (vcursor-cs-binding "select") | 439 | (global-set-key (vcursor-cs-binding "select") |
| 441 | 'vcursor-swap-point) ; DEC keyboards | 440 | #'vcursor-swap-point) ; DEC keyboards |
| 442 | (global-set-key (vcursor-cs-binding "tab" t) 'vcursor-swap-point) | 441 | (global-set-key (vcursor-cs-binding "tab" t) #'vcursor-swap-point) |
| 443 | 442 | ||
| 444 | (global-set-key (vcursor-cs-binding "find") | 443 | (global-set-key (vcursor-cs-binding "find") |
| 445 | 'vcursor-isearch-forward) ; DEC keyboards | 444 | #'vcursor-isearch-forward) ; DEC keyboards |
| 446 | (global-set-key (vcursor-cs-binding "f8") 'vcursor-isearch-forward) | 445 | (global-set-key (vcursor-cs-binding "f8") #'vcursor-isearch-forward) |
| 447 | 446 | ||
| 448 | (global-set-key (vcursor-cs-binding "left" t) 'vcursor-beginning-of-line) | 447 | (global-set-key (vcursor-cs-binding "left" t) #'vcursor-beginning-of-line) |
| 449 | (global-set-key (vcursor-cs-binding "right" t) 'vcursor-end-of-line) | 448 | (global-set-key (vcursor-cs-binding "right" t) #'vcursor-end-of-line) |
| 450 | 449 | ||
| 451 | (global-set-key (vcursor-cs-binding "prior" t) 'vcursor-backward-word) | 450 | (global-set-key (vcursor-cs-binding "prior" t) #'vcursor-backward-word) |
| 452 | (global-set-key (vcursor-cs-binding "next" t) 'vcursor-forward-word) | 451 | (global-set-key (vcursor-cs-binding "next" t) #'vcursor-forward-word) |
| 453 | 452 | ||
| 454 | (global-set-key (vcursor-cs-binding "return" t) 'vcursor-copy-line) | 453 | (global-set-key (vcursor-cs-binding "return" t) #'vcursor-copy-line) |
| 455 | 454 | ||
| 456 | (global-set-key (vcursor-cs-binding "f9") 'vcursor-execute-key) | 455 | (global-set-key (vcursor-cs-binding "f9") #'vcursor-execute-key) |
| 457 | (global-set-key (vcursor-cs-binding "f10") 'vcursor-execute-command) | 456 | (global-set-key (vcursor-cs-binding "f10") #'vcursor-execute-command) |
| 458 | ))) | 457 | ))) |
| 459 | 458 | ||
| 460 | (defcustom vcursor-key-bindings nil | 459 | (defcustom vcursor-key-bindings nil |
| @@ -465,8 +464,7 @@ define any key bindings. | |||
| 465 | 464 | ||
| 466 | Default is nil." | 465 | Default is nil." |
| 467 | :type '(choice (const t) (const nil) (const xterm) (const oemacs)) | 466 | :type '(choice (const t) (const nil) (const xterm) (const oemacs)) |
| 468 | :group 'vcursor | 467 | :set #'vcursor-bind-keys |
| 469 | :set 'vcursor-bind-keys | ||
| 470 | :version "20.3") | 468 | :version "20.3") |
| 471 | 469 | ||
| 472 | (defcustom vcursor-interpret-input nil | 470 | (defcustom vcursor-interpret-input nil |
| @@ -475,13 +473,11 @@ This will cause text insertion to be much slower. Note that no special | |||
| 475 | interpretation of strings is done: \"\C-x\" is a string of four | 473 | interpretation of strings is done: \"\C-x\" is a string of four |
| 476 | characters. The default is simply to copy strings." | 474 | characters. The default is simply to copy strings." |
| 477 | :type 'boolean | 475 | :type 'boolean |
| 478 | :group 'vcursor | ||
| 479 | :version "20.3") | 476 | :version "20.3") |
| 480 | 477 | ||
| 481 | (defcustom vcursor-string "**>" | 478 | (defcustom vcursor-string "**>" |
| 482 | "String used to show the vcursor position on dumb terminals." | 479 | "String used to show the vcursor position on dumb terminals." |
| 483 | :type 'string | 480 | :type 'string |
| 484 | :group 'vcursor | ||
| 485 | :version "20.3") | 481 | :version "20.3") |
| 486 | 482 | ||
| 487 | (defvar vcursor-overlay nil | 483 | (defvar vcursor-overlay nil |
| @@ -501,42 +497,41 @@ scrolling set this. It is used by the `vcursor-auto-disable' code.") | |||
| 501 | 497 | ||
| 502 | (defcustom vcursor-copy-flag nil | 498 | (defcustom vcursor-copy-flag nil |
| 503 | "Non-nil means moving vcursor should copy characters moved over to point." | 499 | "Non-nil means moving vcursor should copy characters moved over to point." |
| 504 | :type 'boolean | 500 | :type 'boolean) |
| 505 | :group 'vcursor) | ||
| 506 | 501 | ||
| 507 | (defvar vcursor-temp-goal-column nil | 502 | (defvar vcursor-temp-goal-column nil |
| 508 | "Keeps track of temporary goal columns for the virtual cursor.") | 503 | "Keeps track of temporary goal columns for the virtual cursor.") |
| 509 | 504 | ||
| 510 | (defvar vcursor-map | 505 | (defvar vcursor-map |
| 511 | (let ((map (make-sparse-keymap))) | 506 | (let ((map (make-sparse-keymap))) |
| 512 | (define-key map "t" 'vcursor-use-vcursor-map) | 507 | (define-key map "t" #'vcursor-use-vcursor-map) |
| 513 | 508 | ||
| 514 | (define-key map "\C-p" 'vcursor-previous-line) | 509 | (define-key map "\C-p" #'vcursor-previous-line) |
| 515 | (define-key map "\C-n" 'vcursor-next-line) | 510 | (define-key map "\C-n" #'vcursor-next-line) |
| 516 | (define-key map "\C-b" 'vcursor-backward-char) | 511 | (define-key map "\C-b" #'vcursor-backward-char) |
| 517 | (define-key map "\C-f" 'vcursor-forward-char) | 512 | (define-key map "\C-f" #'vcursor-forward-char) |
| 518 | 513 | ||
| 519 | (define-key map "\r" 'vcursor-disable) | 514 | (define-key map "\r" #'vcursor-disable) |
| 520 | (define-key map " " 'vcursor-copy) | 515 | (define-key map " " #'vcursor-copy) |
| 521 | (define-key map "\C-y" 'vcursor-copy-word) | 516 | (define-key map "\C-y" #'vcursor-copy-word) |
| 522 | (define-key map "\C-i" 'vcursor-toggle-copy) | 517 | (define-key map "\C-i" #'vcursor-toggle-copy) |
| 523 | (define-key map "<" 'vcursor-beginning-of-buffer) | 518 | (define-key map "<" #'vcursor-beginning-of-buffer) |
| 524 | (define-key map ">" 'vcursor-end-of-buffer) | 519 | (define-key map ">" #'vcursor-end-of-buffer) |
| 525 | (define-key map "\M-v" 'vcursor-scroll-down) | 520 | (define-key map "\M-v" #'vcursor-scroll-down) |
| 526 | (define-key map "\C-v" 'vcursor-scroll-up) | 521 | (define-key map "\C-v" #'vcursor-scroll-up) |
| 527 | (define-key map "o" 'vcursor-other-window) | 522 | (define-key map "o" #'vcursor-other-window) |
| 528 | (define-key map "g" 'vcursor-goto) | 523 | (define-key map "g" #'vcursor-goto) |
| 529 | (define-key map "x" 'vcursor-swap-point) | 524 | (define-key map "x" #'vcursor-swap-point) |
| 530 | (define-key map "\C-s" 'vcursor-isearch-forward) | 525 | (define-key map "\C-s" #'vcursor-isearch-forward) |
| 531 | (define-key map "\C-r" 'vcursor-isearch-backward) | 526 | (define-key map "\C-r" #'vcursor-isearch-backward) |
| 532 | (define-key map "\C-a" 'vcursor-beginning-of-line) | 527 | (define-key map "\C-a" #'vcursor-beginning-of-line) |
| 533 | (define-key map "\C-e" 'vcursor-end-of-line) | 528 | (define-key map "\C-e" #'vcursor-end-of-line) |
| 534 | (define-key map "\M-w" 'vcursor-forward-word) | 529 | (define-key map "\M-w" #'vcursor-forward-word) |
| 535 | (define-key map "\M-b" 'vcursor-backward-word) | 530 | (define-key map "\M-b" #'vcursor-backward-word) |
| 536 | (define-key map "\M-l" 'vcursor-copy-line) | 531 | (define-key map "\M-l" #'vcursor-copy-line) |
| 537 | (define-key map "c" 'vcursor-compare-windows) | 532 | (define-key map "c" #'vcursor-compare-windows) |
| 538 | (define-key map "k" 'vcursor-execute-key) | 533 | (define-key map "k" #'vcursor-execute-key) |
| 539 | (define-key map "\M-x" 'vcursor-execute-command) | 534 | (define-key map "\M-x" #'vcursor-execute-command) |
| 540 | map) | 535 | map) |
| 541 | "Keymap for vcursor command.") | 536 | "Keymap for vcursor command.") |
| 542 | ;; This seems unused, but it was done as part of define-prefix-command, | 537 | ;; This seems unused, but it was done as part of define-prefix-command, |
| @@ -611,7 +606,8 @@ Set `vcursor-window' to the returned value as a side effect." | |||
| 611 | (cond | 606 | (cond |
| 612 | (winok) ; choice 2 | 607 | (winok) ; choice 2 |
| 613 | ((and vcursor-window ; choice 3 | 608 | ((and vcursor-window ; choice 3 |
| 614 | (not (eq thiswin vcursor-window))) vcursor-window) | 609 | (not (eq thiswin vcursor-window))) |
| 610 | vcursor-window) | ||
| 615 | (winbuf) ; choice 4 | 611 | (winbuf) ; choice 4 |
| 616 | (new-win (display-buffer (current-buffer) t)) ; choice 5 | 612 | (new-win (display-buffer (current-buffer) t)) ; choice 5 |
| 617 | (t nil))))))) ; default (choice 6) | 613 | (t nil))))))) ; default (choice 6) |
| @@ -719,16 +715,14 @@ not be visible otherwise, display it in another window." | |||
| 719 | The vcursor will always appear in an unselected window." | 715 | The vcursor will always appear in an unselected window." |
| 720 | 716 | ||
| 721 | (interactive "P") | 717 | (interactive "P") |
| 722 | (vcursor-window-funcall 'scroll-up n) | 718 | (vcursor-window-funcall #'scroll-up n)) |
| 723 | ) | ||
| 724 | 719 | ||
| 725 | (defun vcursor-scroll-down (&optional n) | 720 | (defun vcursor-scroll-down (&optional n) |
| 726 | "Scroll down the vcursor window ARG lines or near full screen if none. | 721 | "Scroll down the vcursor window ARG lines or near full screen if none. |
| 727 | The vcursor will always appear in an unselected window." | 722 | The vcursor will always appear in an unselected window." |
| 728 | 723 | ||
| 729 | (interactive "P") | 724 | (interactive "P") |
| 730 | (vcursor-window-funcall 'scroll-down n) | 725 | (vcursor-window-funcall #'scroll-down n)) |
| 731 | ) | ||
| 732 | 726 | ||
| 733 | (defun vcursor-isearch-forward (&optional rep norecurs) | 727 | (defun vcursor-isearch-forward (&optional rep norecurs) |
| 734 | "Perform forward incremental search in the virtual cursor window. | 728 | "Perform forward incremental search in the virtual cursor window. |
| @@ -736,7 +730,7 @@ The virtual cursor is moved to the resulting point; the ordinary | |||
| 736 | cursor stays where it was." | 730 | cursor stays where it was." |
| 737 | 731 | ||
| 738 | (interactive "P") | 732 | (interactive "P") |
| 739 | (vcursor-window-funcall 'isearch-forward rep norecurs) | 733 | (vcursor-window-funcall #'isearch-forward rep norecurs) |
| 740 | ) | 734 | ) |
| 741 | 735 | ||
| 742 | (defun vcursor-isearch-backward (&optional rep norecurs) | 736 | (defun vcursor-isearch-backward (&optional rep norecurs) |
| @@ -745,7 +739,7 @@ The virtual cursor is moved to the resulting point; the ordinary | |||
| 745 | cursor stays where it was." | 739 | cursor stays where it was." |
| 746 | 740 | ||
| 747 | (interactive "P") | 741 | (interactive "P") |
| 748 | (vcursor-window-funcall 'isearch-backward rep norecurs) | 742 | (vcursor-window-funcall #'isearch-backward rep norecurs) |
| 749 | ) | 743 | ) |
| 750 | 744 | ||
| 751 | (defun vcursor-window-funcall (func &rest args) | 745 | (defun vcursor-window-funcall (func &rest args) |
| @@ -891,7 +885,7 @@ A prefix argument, if any, means ignore changes in whitespace. | |||
| 891 | The variable `compare-windows-whitespace' controls how whitespace is skipped. | 885 | The variable `compare-windows-whitespace' controls how whitespace is skipped. |
| 892 | If `compare-ignore-case' is non-nil, changes in case are also ignored." | 886 | If `compare-ignore-case' is non-nil, changes in case are also ignored." |
| 893 | (interactive "P") | 887 | (interactive "P") |
| 894 | ;; (vcursor-window-funcall 'compare-windows arg) | 888 | ;; (vcursor-window-funcall #'compare-windows arg) |
| 895 | (require 'compare-w) | 889 | (require 'compare-w) |
| 896 | (let* (p1 p2 maxp1 maxp2 b1 b2 w2 | 890 | (let* (p1 p2 maxp1 maxp2 b1 b2 w2 |
| 897 | success | 891 | success |
| @@ -1005,32 +999,32 @@ If `compare-ignore-case' is non-nil, changes in case are also ignored." | |||
| 1005 | (defun vcursor-forward-char (arg) | 999 | (defun vcursor-forward-char (arg) |
| 1006 | "Move the virtual cursor forward ARG characters." | 1000 | "Move the virtual cursor forward ARG characters." |
| 1007 | (interactive "p") | 1001 | (interactive "p") |
| 1008 | (vcursor-relative-move 'forward-char arg) | 1002 | (vcursor-relative-move #'forward-char arg) |
| 1009 | ) | 1003 | ) |
| 1010 | 1004 | ||
| 1011 | (defun vcursor-backward-char (arg) | 1005 | (defun vcursor-backward-char (arg) |
| 1012 | "Move the virtual cursor backward ARG characters." | 1006 | "Move the virtual cursor backward ARG characters." |
| 1013 | (interactive "p") | 1007 | (interactive "p") |
| 1014 | (vcursor-relative-move 'backward-char arg) | 1008 | (vcursor-relative-move #'backward-char arg) |
| 1015 | ) | 1009 | ) |
| 1016 | 1010 | ||
| 1017 | (defun vcursor-forward-word (arg) | 1011 | (defun vcursor-forward-word (arg) |
| 1018 | "Move the virtual cursor forward ARG words." | 1012 | "Move the virtual cursor forward ARG words." |
| 1019 | (interactive "p") | 1013 | (interactive "p") |
| 1020 | (vcursor-relative-move 'forward-word arg) | 1014 | (vcursor-relative-move #'forward-word arg) |
| 1021 | ) | 1015 | ) |
| 1022 | 1016 | ||
| 1023 | (defun vcursor-backward-word (arg) | 1017 | (defun vcursor-backward-word (arg) |
| 1024 | "Move the virtual cursor backward ARG words." | 1018 | "Move the virtual cursor backward ARG words." |
| 1025 | (interactive "p") | 1019 | (interactive "p") |
| 1026 | (vcursor-relative-move 'backward-word arg) | 1020 | (vcursor-relative-move #'backward-word arg) |
| 1027 | ) | 1021 | ) |
| 1028 | 1022 | ||
| 1029 | (defun vcursor-beginning-of-line (arg) | 1023 | (defun vcursor-beginning-of-line (arg) |
| 1030 | "Move the virtual cursor to beginning of its current line. | 1024 | "Move the virtual cursor to beginning of its current line. |
| 1031 | ARG is as for `beginning-of-line'." | 1025 | ARG is as for `beginning-of-line'." |
| 1032 | (interactive "P") | 1026 | (interactive "P") |
| 1033 | (vcursor-relative-move 'beginning-of-line | 1027 | (vcursor-relative-move #'beginning-of-line |
| 1034 | (if arg (prefix-numeric-value arg))) | 1028 | (if arg (prefix-numeric-value arg))) |
| 1035 | ) | 1029 | ) |
| 1036 | 1030 | ||
| @@ -1038,7 +1032,7 @@ ARG is as for `beginning-of-line'." | |||
| 1038 | "Move the virtual cursor to end of its current line. | 1032 | "Move the virtual cursor to end of its current line. |
| 1039 | ARG is as for `end-of-line'." | 1033 | ARG is as for `end-of-line'." |
| 1040 | (interactive "P") | 1034 | (interactive "P") |
| 1041 | (vcursor-relative-move 'end-of-line | 1035 | (vcursor-relative-move #'end-of-line |
| 1042 | (if arg (prefix-numeric-value arg))) | 1036 | (if arg (prefix-numeric-value arg))) |
| 1043 | ) | 1037 | ) |
| 1044 | 1038 | ||
| @@ -1110,7 +1104,7 @@ is called interactively, so prefix argument etc. are usable." | |||
| 1110 | (defun vcursor-copy-word (arg) | 1104 | (defun vcursor-copy-word (arg) |
| 1111 | "Copy ARG words from the virtual cursor position to point." | 1105 | "Copy ARG words from the virtual cursor position to point." |
| 1112 | (interactive "p") | 1106 | (interactive "p") |
| 1113 | (vcursor-copy (vcursor-get-char-count 'forward-word arg)) | 1107 | (vcursor-copy (vcursor-get-char-count #'forward-word arg)) |
| 1114 | ) | 1108 | ) |
| 1115 | 1109 | ||
| 1116 | (defun vcursor-copy-line (arg) | 1110 | (defun vcursor-copy-line (arg) |
| @@ -1123,7 +1117,7 @@ line is treated like ordinary characters." | |||
| 1123 | 1117 | ||
| 1124 | (interactive "P") | 1118 | (interactive "P") |
| 1125 | (let* ((num (prefix-numeric-value arg)) | 1119 | (let* ((num (prefix-numeric-value arg)) |
| 1126 | (count (vcursor-get-char-count 'end-of-line num))) | 1120 | (count (vcursor-get-char-count #'end-of-line num))) |
| 1127 | (vcursor-copy (if (or (= count 0) arg) (1+ count) count))) | 1121 | (vcursor-copy (if (or (= count 0) arg) (1+ count) count))) |
| 1128 | ) | 1122 | ) |
| 1129 | 1123 | ||
| @@ -1136,7 +1130,7 @@ line is treated like ordinary characters." | |||
| 1136 | (setq vcursor-last-command nil) | 1130 | (setq vcursor-last-command nil) |
| 1137 | ) | 1131 | ) |
| 1138 | 1132 | ||
| 1139 | (add-hook 'post-command-hook 'vcursor-post-command) | 1133 | (add-hook 'post-command-hook #'vcursor-post-command) |
| 1140 | 1134 | ||
| 1141 | (provide 'vcursor) | 1135 | (provide 'vcursor) |
| 1142 | 1136 | ||
diff --git a/lisp/wid-edit.el b/lisp/wid-edit.el index e71290c7ef9..49baab69199 100644 --- a/lisp/wid-edit.el +++ b/lisp/wid-edit.el | |||
| @@ -750,7 +750,7 @@ automatically." | |||
| 750 | :type 'boolean) | 750 | :type 'boolean) |
| 751 | 751 | ||
| 752 | (defcustom widget-image-conversion | 752 | (defcustom widget-image-conversion |
| 753 | '((xpm ".xpm") (gif ".gif") (png ".png") (jpeg ".jpg" ".jpeg") | 753 | '((svg ".svg") (xpm ".xpm") (gif ".gif") (png ".png") (jpeg ".jpg" ".jpeg") |
| 754 | (xbm ".xbm")) | 754 | (xbm ".xbm")) |
| 755 | "Conversion alist from image formats to file name suffixes." | 755 | "Conversion alist from image formats to file name suffixes." |
| 756 | :group 'widgets | 756 | :group 'widgets |
| @@ -1878,20 +1878,9 @@ as the argument to `documentation-property'." | |||
| 1878 | (let ((value (widget-get widget :value))) | 1878 | (let ((value (widget-get widget :value))) |
| 1879 | (and (listp value) | 1879 | (and (listp value) |
| 1880 | (<= (length value) (length vals)) | 1880 | (<= (length value) (length vals)) |
| 1881 | (let ((head (widget-sublist vals 0 (length value)))) | 1881 | (let ((head (seq-subseq vals 0 (length value)))) |
| 1882 | (and (equal head value) | 1882 | (and (equal head value) |
| 1883 | (cons head (widget-sublist vals (length value)))))))) | 1883 | (cons head (seq-subseq vals (length value)))))))) |
| 1884 | |||
| 1885 | (defun widget-sublist (list start &optional end) | ||
| 1886 | "Return the sublist of LIST from START to END. | ||
| 1887 | If END is omitted, it defaults to the length of LIST." | ||
| 1888 | (if (> start 0) (setq list (nthcdr start list))) | ||
| 1889 | (if end | ||
| 1890 | (unless (<= end start) | ||
| 1891 | (setq list (copy-sequence list)) | ||
| 1892 | (setcdr (nthcdr (- end start 1) list) nil) | ||
| 1893 | list) | ||
| 1894 | (copy-sequence list))) | ||
| 1895 | 1884 | ||
| 1896 | (defun widget-item-action (widget &optional event) | 1885 | (defun widget-item-action (widget &optional event) |
| 1897 | ;; Just notify itself. | 1886 | ;; Just notify itself. |
| @@ -2575,9 +2564,9 @@ Return an alist of (TYPE MATCH)." | |||
| 2575 | :button-suffix "" | 2564 | :button-suffix "" |
| 2576 | :button-prefix "" | 2565 | :button-prefix "" |
| 2577 | :on "(*)" | 2566 | :on "(*)" |
| 2578 | :on-glyph "radio1" | 2567 | :on-glyph "radio-checked" |
| 2579 | :off "( )" | 2568 | :off "( )" |
| 2580 | :off-glyph "radio0") | 2569 | :off-glyph "radio") |
| 2581 | 2570 | ||
| 2582 | (defun widget-radio-button-notify (widget _child &optional event) | 2571 | (defun widget-radio-button-notify (widget _child &optional event) |
| 2583 | ;; Tell daddy. | 2572 | ;; Tell daddy. |
| @@ -4117,7 +4106,9 @@ is inline." | |||
| 4117 | (setq help-echo (funcall help-echo widget))) | 4106 | (setq help-echo (funcall help-echo widget))) |
| 4118 | (if help-echo (message "%s" (eval help-echo))))) | 4107 | (if help-echo (message "%s" (eval help-echo))))) |
| 4119 | 4108 | ||
| 4120 | ;;; The End: | 4109 | ;;; Obsolete. |
| 4110 | |||
| 4111 | (define-obsolete-function-alias 'widget-sublist #'seq-subseq "28.1") | ||
| 4121 | 4112 | ||
| 4122 | (provide 'wid-edit) | 4113 | (provide 'wid-edit) |
| 4123 | 4114 | ||
diff --git a/lisp/woman.el b/lisp/woman.el index 505fdb4c9e1..d9aa573d27b 100644 --- a/lisp/woman.el +++ b/lisp/woman.el | |||
| @@ -390,9 +390,6 @@ | |||
| 390 | 390 | ||
| 391 | (eval-when-compile (require 'cl-lib)) | 391 | (eval-when-compile (require 'cl-lib)) |
| 392 | 392 | ||
| 393 | (defvar woman-version "0.551 (beta)" "WoMan version information.") | ||
| 394 | (make-obsolete-variable 'woman-version nil "28.1") | ||
| 395 | |||
| 396 | (require 'man) | 393 | (require 'man) |
| 397 | (define-button-type 'WoMan-xref-man-page | 394 | (define-button-type 'WoMan-xref-man-page |
| 398 | :supertype 'Man-abstract-xref-man-page | 395 | :supertype 'Man-abstract-xref-man-page |
| @@ -4580,6 +4577,11 @@ logging the message." | |||
| 4580 | (bookmark-default-handler | 4577 | (bookmark-default-handler |
| 4581 | `("" (buffer . ,buf) . ,(bookmark-get-bookmark-record bookmark))))) | 4578 | `("" (buffer . ,buf) . ,(bookmark-get-bookmark-record bookmark))))) |
| 4582 | 4579 | ||
| 4580 | ;; Obsolete. | ||
| 4581 | |||
| 4582 | (defvar woman-version "0.551 (beta)" "WoMan version information.") | ||
| 4583 | (make-obsolete-variable 'woman-version 'emacs-version "28.1") | ||
| 4584 | |||
| 4583 | (provide 'woman) | 4585 | (provide 'woman) |
| 4584 | 4586 | ||
| 4585 | ;;; woman.el ends here | 4587 | ;;; woman.el ends here |
diff --git a/lwlib/Makefile.in b/lwlib/Makefile.in index fb0ae0e1c21..ce77789db89 100644 --- a/lwlib/Makefile.in +++ b/lwlib/Makefile.in | |||
| @@ -93,9 +93,9 @@ globals_h = ../src/globals.h | |||
| 93 | $(globals_h): | 93 | $(globals_h): |
| 94 | $(MAKE) -C ../src globals.h | 94 | $(MAKE) -C ../src globals.h |
| 95 | 95 | ||
| 96 | .PHONY: mostlyclean clean distclean bootstrap-clean maintainer-clean | 96 | .PHONY: mostlyclean clean distclean bootstrap-clean maintainer-clean extraclean |
| 97 | 97 | ||
| 98 | clean mostlyclean: | 98 | clean mostlyclean extraclean: |
| 99 | rm -f ./*.o liblw.a \#* $(DEPDIR)/* | 99 | rm -f ./*.o liblw.a \#* $(DEPDIR)/* |
| 100 | 100 | ||
| 101 | distclean: clean | 101 | distclean: clean |
diff --git a/src/dispextern.h b/src/dispextern.h index f4e872644db..a2ebd04f235 100644 --- a/src/dispextern.h +++ b/src/dispextern.h | |||
| @@ -3066,6 +3066,11 @@ struct image | |||
| 3066 | is created. */ | 3066 | is created. */ |
| 3067 | unsigned long face_foreground, face_background; | 3067 | unsigned long face_foreground, face_background; |
| 3068 | 3068 | ||
| 3069 | /* Details of the font, only really relevant for types like SVG that | ||
| 3070 | allow us to draw text. */ | ||
| 3071 | int face_font_size; | ||
| 3072 | char *face_font_family; | ||
| 3073 | |||
| 3069 | /* True if this image has a `transparent' background -- that is, is | 3074 | /* True if this image has a `transparent' background -- that is, is |
| 3070 | uses an image mask. The accessor macro for this is | 3075 | uses an image mask. The accessor macro for this is |
| 3071 | `IMAGE_BACKGROUND_TRANSPARENT'. */ | 3076 | `IMAGE_BACKGROUND_TRANSPARENT'. */ |
diff --git a/src/frame.c b/src/frame.c index 66ae4943ba2..bbdc3b55992 100644 --- a/src/frame.c +++ b/src/frame.c | |||
| @@ -3744,6 +3744,17 @@ window state change flag is reset. */) | |||
| 3744 | return (FRAME_WINDOW_STATE_CHANGE (f) = !NILP (arg)) ? Qt : Qnil; | 3744 | return (FRAME_WINDOW_STATE_CHANGE (f) = !NILP (arg)) ? Qt : Qnil; |
| 3745 | } | 3745 | } |
| 3746 | 3746 | ||
| 3747 | DEFUN ("frame-scale-factor", Fframe_scale_factor, Sframe_scale_factor, | ||
| 3748 | 0, 1, 0, | ||
| 3749 | doc: /* Return FRAMEs scale factor. | ||
| 3750 | The scale factor is the amount by which a logical pixel size must be | ||
| 3751 | multiplied to find the real number of pixels. */) | ||
| 3752 | (Lisp_Object frame) | ||
| 3753 | { | ||
| 3754 | struct frame *f = decode_live_frame (frame); | ||
| 3755 | |||
| 3756 | return (make_float (f ? FRAME_SCALE_FACTOR (f) : 1)); | ||
| 3757 | } | ||
| 3747 | 3758 | ||
| 3748 | /*********************************************************************** | 3759 | /*********************************************************************** |
| 3749 | Frame Parameters | 3760 | Frame Parameters |
| @@ -6457,6 +6468,7 @@ iconify the top level frame instead. */); | |||
| 6457 | defsubr (&Sframe_pointer_visible_p); | 6468 | defsubr (&Sframe_pointer_visible_p); |
| 6458 | defsubr (&Sframe_window_state_change); | 6469 | defsubr (&Sframe_window_state_change); |
| 6459 | defsubr (&Sset_frame_window_state_change); | 6470 | defsubr (&Sset_frame_window_state_change); |
| 6471 | defsubr (&Sframe_scale_factor); | ||
| 6460 | 6472 | ||
| 6461 | #ifdef HAVE_WINDOW_SYSTEM | 6473 | #ifdef HAVE_WINDOW_SYSTEM |
| 6462 | defsubr (&Sx_get_resource); | 6474 | defsubr (&Sx_get_resource); |
diff --git a/src/frame.h b/src/frame.h index 9ddcb4c6810..0fd95e4dd3c 100644 --- a/src/frame.h +++ b/src/frame.h | |||
| @@ -907,6 +907,13 @@ default_pixels_per_inch_y (void) | |||
| 907 | (WINDOWP (f->minibuffer_window) \ | 907 | (WINDOWP (f->minibuffer_window) \ |
| 908 | && XFRAME (XWINDOW (f->minibuffer_window)->frame) == f) | 908 | && XFRAME (XWINDOW (f->minibuffer_window)->frame) == f) |
| 909 | 909 | ||
| 910 | /* Scale factor of frame F. */ | ||
| 911 | #if defined HAVE_NS | ||
| 912 | # define FRAME_SCALE_FACTOR(f) (FRAME_NS_P (f) ? ns_frame_scale_factor (f) : 1) | ||
| 913 | #else | ||
| 914 | # define FRAME_SCALE_FACTOR(f) 1 | ||
| 915 | #endif | ||
| 916 | |||
| 910 | /* Pixel width of frame F. */ | 917 | /* Pixel width of frame F. */ |
| 911 | #define FRAME_PIXEL_WIDTH(f) ((f)->pixel_width) | 918 | #define FRAME_PIXEL_WIDTH(f) ((f)->pixel_width) |
| 912 | 919 | ||
diff --git a/src/image.c b/src/image.c index 576956d4dbb..18126a804f3 100644 --- a/src/image.c +++ b/src/image.c | |||
| @@ -135,14 +135,6 @@ typedef struct ns_bitmap_record Bitmap_Record; | |||
| 135 | # define COLOR_TABLE_SUPPORT 1 | 135 | # define COLOR_TABLE_SUPPORT 1 |
| 136 | #endif | 136 | #endif |
| 137 | 137 | ||
| 138 | #ifdef HAVE_RSVG | ||
| 139 | #if defined HAVE_NS | ||
| 140 | # define FRAME_SCALE_FACTOR(f) ns_frame_scale_factor (f) | ||
| 141 | #else | ||
| 142 | # define FRAME_SCALE_FACTOR(f) 1; | ||
| 143 | #endif | ||
| 144 | #endif | ||
| 145 | |||
| 146 | static void image_disable_image (struct frame *, struct image *); | 138 | static void image_disable_image (struct frame *, struct image *); |
| 147 | static void image_edge_detection (struct frame *, struct image *, Lisp_Object, | 139 | static void image_edge_detection (struct frame *, struct image *, Lisp_Object, |
| 148 | Lisp_Object); | 140 | Lisp_Object); |
| @@ -1207,6 +1199,7 @@ free_image (struct frame *f, struct image *img) | |||
| 1207 | 1199 | ||
| 1208 | /* Free resources, then free IMG. */ | 1200 | /* Free resources, then free IMG. */ |
| 1209 | img->type->free_img (f, img); | 1201 | img->type->free_img (f, img); |
| 1202 | xfree (img->face_font_family); | ||
| 1210 | xfree (img); | 1203 | xfree (img); |
| 1211 | } | 1204 | } |
| 1212 | } | 1205 | } |
| @@ -1605,7 +1598,7 @@ make_image_cache (void) | |||
| 1605 | static struct image * | 1598 | static struct image * |
| 1606 | search_image_cache (struct frame *f, Lisp_Object spec, EMACS_UINT hash, | 1599 | search_image_cache (struct frame *f, Lisp_Object spec, EMACS_UINT hash, |
| 1607 | unsigned long foreground, unsigned long background, | 1600 | unsigned long foreground, unsigned long background, |
| 1608 | bool ignore_colors) | 1601 | int font_size, char *font_family, bool ignore_colors) |
| 1609 | { | 1602 | { |
| 1610 | struct image *img; | 1603 | struct image *img; |
| 1611 | struct image_cache *c = FRAME_IMAGE_CACHE (f); | 1604 | struct image_cache *c = FRAME_IMAGE_CACHE (f); |
| @@ -1629,7 +1622,10 @@ search_image_cache (struct frame *f, Lisp_Object spec, EMACS_UINT hash, | |||
| 1629 | if (img->hash == hash | 1622 | if (img->hash == hash |
| 1630 | && !NILP (Fequal (img->spec, spec)) | 1623 | && !NILP (Fequal (img->spec, spec)) |
| 1631 | && (ignore_colors || (img->face_foreground == foreground | 1624 | && (ignore_colors || (img->face_foreground == foreground |
| 1632 | && img->face_background == background))) | 1625 | && img->face_background == background |
| 1626 | && img->face_font_size == font_size | ||
| 1627 | && (font_family | ||
| 1628 | &&!strcmp (font_family, img->face_font_family))))) | ||
| 1633 | break; | 1629 | break; |
| 1634 | return img; | 1630 | return img; |
| 1635 | } | 1631 | } |
| @@ -1647,7 +1643,7 @@ uncache_image (struct frame *f, Lisp_Object spec) | |||
| 1647 | can have multiple copies of an image with the same spec. We want | 1643 | can have multiple copies of an image with the same spec. We want |
| 1648 | to remove them all to ensure the user doesn't see an old version | 1644 | to remove them all to ensure the user doesn't see an old version |
| 1649 | of the image when the face changes. */ | 1645 | of the image when the face changes. */ |
| 1650 | while ((img = search_image_cache (f, spec, hash, 0, 0, true))) | 1646 | while ((img = search_image_cache (f, spec, hash, 0, 0, 0, NULL, true))) |
| 1651 | { | 1647 | { |
| 1652 | free_image (f, img); | 1648 | free_image (f, img); |
| 1653 | /* As display glyphs may still be referring to the image ID, we | 1649 | /* As display glyphs may still be referring to the image ID, we |
| @@ -2419,6 +2415,8 @@ lookup_image (struct frame *f, Lisp_Object spec, int face_id) | |||
| 2419 | struct face *face = FACE_FROM_ID (f, face_id); | 2415 | struct face *face = FACE_FROM_ID (f, face_id); |
| 2420 | unsigned long foreground = FACE_COLOR_TO_PIXEL (face->foreground, f); | 2416 | unsigned long foreground = FACE_COLOR_TO_PIXEL (face->foreground, f); |
| 2421 | unsigned long background = FACE_COLOR_TO_PIXEL (face->background, f); | 2417 | unsigned long background = FACE_COLOR_TO_PIXEL (face->background, f); |
| 2418 | int font_size = face->font->pixel_size; | ||
| 2419 | char *font_family = SSDATA (face->lface[LFACE_FAMILY_INDEX]); | ||
| 2422 | 2420 | ||
| 2423 | /* F must be a window-system frame, and SPEC must be a valid image | 2421 | /* F must be a window-system frame, and SPEC must be a valid image |
| 2424 | specification. */ | 2422 | specification. */ |
| @@ -2427,7 +2425,8 @@ lookup_image (struct frame *f, Lisp_Object spec, int face_id) | |||
| 2427 | 2425 | ||
| 2428 | /* Look up SPEC in the hash table of the image cache. */ | 2426 | /* Look up SPEC in the hash table of the image cache. */ |
| 2429 | hash = sxhash (spec); | 2427 | hash = sxhash (spec); |
| 2430 | img = search_image_cache (f, spec, hash, foreground, background, false); | 2428 | img = search_image_cache (f, spec, hash, foreground, background, |
| 2429 | font_size, font_family, false); | ||
| 2431 | if (img && img->load_failed_p) | 2430 | if (img && img->load_failed_p) |
| 2432 | { | 2431 | { |
| 2433 | free_image (f, img); | 2432 | free_image (f, img); |
| @@ -2442,6 +2441,9 @@ lookup_image (struct frame *f, Lisp_Object spec, int face_id) | |||
| 2442 | cache_image (f, img); | 2441 | cache_image (f, img); |
| 2443 | img->face_foreground = foreground; | 2442 | img->face_foreground = foreground; |
| 2444 | img->face_background = background; | 2443 | img->face_background = background; |
| 2444 | img->face_font_size = font_size; | ||
| 2445 | img->face_font_family = xmalloc (strlen (font_family) + 1); | ||
| 2446 | strcpy (img->face_font_family, font_family); | ||
| 2445 | img->load_failed_p = ! img->type->load_img (f, img); | 2447 | img->load_failed_p = ! img->type->load_img (f, img); |
| 2446 | 2448 | ||
| 2447 | /* If we can't load the image, and we don't have a width and | 2449 | /* If we can't load the image, and we don't have a width and |
| @@ -9540,6 +9542,7 @@ enum svg_keyword_index | |||
| 9540 | SVG_DATA, | 9542 | SVG_DATA, |
| 9541 | SVG_FILE, | 9543 | SVG_FILE, |
| 9542 | SVG_BASE_URI, | 9544 | SVG_BASE_URI, |
| 9545 | SVG_CSS, | ||
| 9543 | SVG_ASCENT, | 9546 | SVG_ASCENT, |
| 9544 | SVG_MARGIN, | 9547 | SVG_MARGIN, |
| 9545 | SVG_RELIEF, | 9548 | SVG_RELIEF, |
| @@ -9560,6 +9563,7 @@ static const struct image_keyword svg_format[SVG_LAST] = | |||
| 9560 | {":data", IMAGE_STRING_VALUE, 0}, | 9563 | {":data", IMAGE_STRING_VALUE, 0}, |
| 9561 | {":file", IMAGE_STRING_VALUE, 0}, | 9564 | {":file", IMAGE_STRING_VALUE, 0}, |
| 9562 | {":base-uri", IMAGE_STRING_VALUE, 0}, | 9565 | {":base-uri", IMAGE_STRING_VALUE, 0}, |
| 9566 | {":css", IMAGE_STRING_VALUE, 0}, | ||
| 9563 | {":ascent", IMAGE_ASCENT_VALUE, 0}, | 9567 | {":ascent", IMAGE_ASCENT_VALUE, 0}, |
| 9564 | {":margin", IMAGE_NON_NEGATIVE_INTEGER_VALUE_OR_PAIR, 0}, | 9568 | {":margin", IMAGE_NON_NEGATIVE_INTEGER_VALUE_OR_PAIR, 0}, |
| 9565 | {":relief", IMAGE_INTEGER_VALUE, 0}, | 9569 | {":relief", IMAGE_INTEGER_VALUE, 0}, |
| @@ -9643,6 +9647,11 @@ DEF_DLL_FN (gboolean, rsvg_handle_get_geometry_for_layer, | |||
| 9643 | (RsvgHandle *, const char *, const RsvgRectangle *, | 9647 | (RsvgHandle *, const char *, const RsvgRectangle *, |
| 9644 | RsvgRectangle *, RsvgRectangle *, GError **)); | 9648 | RsvgRectangle *, RsvgRectangle *, GError **)); |
| 9645 | # endif | 9649 | # endif |
| 9650 | |||
| 9651 | # if LIBRSVG_CHECK_VERSION (2, 48, 0) | ||
| 9652 | DEF_DLL_FN (gboolean, rsvg_handle_set_stylesheet, | ||
| 9653 | (RsvgHandle *, const guint8 *, gsize, GError **)); | ||
| 9654 | # endif | ||
| 9646 | DEF_DLL_FN (void, rsvg_handle_get_dimensions, | 9655 | DEF_DLL_FN (void, rsvg_handle_get_dimensions, |
| 9647 | (RsvgHandle *, RsvgDimensionData *)); | 9656 | (RsvgHandle *, RsvgDimensionData *)); |
| 9648 | DEF_DLL_FN (GdkPixbuf *, rsvg_handle_get_pixbuf, (RsvgHandle *)); | 9657 | DEF_DLL_FN (GdkPixbuf *, rsvg_handle_get_pixbuf, (RsvgHandle *)); |
| @@ -9696,6 +9705,9 @@ init_svg_functions (void) | |||
| 9696 | LOAD_DLL_FN (library, rsvg_handle_get_intrinsic_dimensions); | 9705 | LOAD_DLL_FN (library, rsvg_handle_get_intrinsic_dimensions); |
| 9697 | LOAD_DLL_FN (library, rsvg_handle_get_geometry_for_layer); | 9706 | LOAD_DLL_FN (library, rsvg_handle_get_geometry_for_layer); |
| 9698 | #endif | 9707 | #endif |
| 9708 | #if LIBRSVG_CHECK_VERSION (2, 48, 0) | ||
| 9709 | LOAD_DLL_FN (library, rsvg_handle_set_stylesheet); | ||
| 9710 | #endif | ||
| 9699 | LOAD_DLL_FN (library, rsvg_handle_get_dimensions); | 9711 | LOAD_DLL_FN (library, rsvg_handle_get_dimensions); |
| 9700 | LOAD_DLL_FN (library, rsvg_handle_get_pixbuf); | 9712 | LOAD_DLL_FN (library, rsvg_handle_get_pixbuf); |
| 9701 | 9713 | ||
| @@ -9736,6 +9748,9 @@ init_svg_functions (void) | |||
| 9736 | # undef rsvg_handle_get_geometry_for_layer | 9748 | # undef rsvg_handle_get_geometry_for_layer |
| 9737 | # endif | 9749 | # endif |
| 9738 | # undef rsvg_handle_get_dimensions | 9750 | # undef rsvg_handle_get_dimensions |
| 9751 | # if LIBRSVG_CHECK_VERSION (2, 48, 0) | ||
| 9752 | # undef rsvg_handle_set_stylesheet | ||
| 9753 | # endif | ||
| 9739 | # undef rsvg_handle_get_pixbuf | 9754 | # undef rsvg_handle_get_pixbuf |
| 9740 | # if LIBRSVG_CHECK_VERSION (2, 32, 0) | 9755 | # if LIBRSVG_CHECK_VERSION (2, 32, 0) |
| 9741 | # undef g_file_new_for_path | 9756 | # undef g_file_new_for_path |
| @@ -9769,6 +9784,9 @@ init_svg_functions (void) | |||
| 9769 | fn_rsvg_handle_get_geometry_for_layer | 9784 | fn_rsvg_handle_get_geometry_for_layer |
| 9770 | # endif | 9785 | # endif |
| 9771 | # define rsvg_handle_get_dimensions fn_rsvg_handle_get_dimensions | 9786 | # define rsvg_handle_get_dimensions fn_rsvg_handle_get_dimensions |
| 9787 | # if LIBRSVG_CHECK_VERSION (2, 48, 0) | ||
| 9788 | # define rsvg_handle_set_stylesheet fn_rsvg_handle_set_stylesheet | ||
| 9789 | # endif | ||
| 9772 | # define rsvg_handle_get_pixbuf fn_rsvg_handle_get_pixbuf | 9790 | # define rsvg_handle_get_pixbuf fn_rsvg_handle_get_pixbuf |
| 9773 | # if LIBRSVG_CHECK_VERSION (2, 32, 0) | 9791 | # if LIBRSVG_CHECK_VERSION (2, 32, 0) |
| 9774 | # define g_file_new_for_path fn_g_file_new_for_path | 9792 | # define g_file_new_for_path fn_g_file_new_for_path |
| @@ -9846,7 +9864,7 @@ svg_load (struct frame *f, struct image *img) | |||
| 9846 | 9864 | ||
| 9847 | #if LIBRSVG_CHECK_VERSION (2, 46, 0) | 9865 | #if LIBRSVG_CHECK_VERSION (2, 46, 0) |
| 9848 | static double | 9866 | static double |
| 9849 | svg_css_length_to_pixels (RsvgLength length, double dpi) | 9867 | svg_css_length_to_pixels (RsvgLength length, double dpi, int font_size) |
| 9850 | { | 9868 | { |
| 9851 | double value = length.length; | 9869 | double value = length.length; |
| 9852 | 9870 | ||
| @@ -9874,9 +9892,16 @@ svg_css_length_to_pixels (RsvgLength length, double dpi) | |||
| 9874 | case RSVG_UNIT_IN: | 9892 | case RSVG_UNIT_IN: |
| 9875 | value *= dpi; | 9893 | value *= dpi; |
| 9876 | break; | 9894 | break; |
| 9895 | #if LIBRSVG_CHECK_VERSION (2, 48, 0) | ||
| 9896 | /* We don't know exactly what font size is used on older librsvg | ||
| 9897 | versions. */ | ||
| 9898 | case RSVG_UNIT_EM: | ||
| 9899 | value *= font_size; | ||
| 9900 | break; | ||
| 9901 | #endif | ||
| 9877 | default: | 9902 | default: |
| 9878 | /* Probably one of em, ex, or %. We can't know what the pixel | 9903 | /* Probably ex or %. We can't know what the pixel value is |
| 9879 | value is without more information. */ | 9904 | without more information. */ |
| 9880 | value = 0; | 9905 | value = 0; |
| 9881 | } | 9906 | } |
| 9882 | 9907 | ||
| @@ -9906,6 +9931,10 @@ svg_load_image (struct frame *f, struct image *img, char *contents, | |||
| 9906 | char *wrapped_contents = NULL; | 9931 | char *wrapped_contents = NULL; |
| 9907 | ptrdiff_t wrapped_size; | 9932 | ptrdiff_t wrapped_size; |
| 9908 | 9933 | ||
| 9934 | #if LIBRSVG_CHECK_VERSION (2, 48, 0) | ||
| 9935 | char *css = NULL; | ||
| 9936 | #endif | ||
| 9937 | |||
| 9909 | #if ! GLIB_CHECK_VERSION (2, 36, 0) | 9938 | #if ! GLIB_CHECK_VERSION (2, 36, 0) |
| 9910 | /* g_type_init is a glib function that must be called prior to | 9939 | /* g_type_init is a glib function that must be called prior to |
| 9911 | using gnome type library functions (obsolete since 2.36.0). */ | 9940 | using gnome type library functions (obsolete since 2.36.0). */ |
| @@ -9931,6 +9960,26 @@ svg_load_image (struct frame *f, struct image *img, char *contents, | |||
| 9931 | 9960 | ||
| 9932 | rsvg_handle_set_dpi_x_y (rsvg_handle, FRAME_DISPLAY_INFO (f)->resx, | 9961 | rsvg_handle_set_dpi_x_y (rsvg_handle, FRAME_DISPLAY_INFO (f)->resx, |
| 9933 | FRAME_DISPLAY_INFO (f)->resy); | 9962 | FRAME_DISPLAY_INFO (f)->resy); |
| 9963 | |||
| 9964 | #if LIBRSVG_CHECK_VERSION (2, 48, 0) | ||
| 9965 | Lisp_Object lcss = image_spec_value (img->spec, QCcss, NULL); | ||
| 9966 | if (!STRINGP (lcss)) | ||
| 9967 | { | ||
| 9968 | /* Generate the CSS for the SVG image. */ | ||
| 9969 | const char *css_spec = "svg{font-family:\"%s\";font-size:%4dpx}"; | ||
| 9970 | int css_len = strlen (css_spec) + strlen (img->face_font_family); | ||
| 9971 | css = xmalloc (css_len); | ||
| 9972 | snprintf (css, css_len, css_spec, img->face_font_family, img->face_font_size); | ||
| 9973 | rsvg_handle_set_stylesheet (rsvg_handle, (guint8 *)css, strlen (css), NULL); | ||
| 9974 | } | ||
| 9975 | else | ||
| 9976 | { | ||
| 9977 | css = xmalloc (SBYTES (lcss) + 1); | ||
| 9978 | strncpy (css, SSDATA (lcss), SBYTES (lcss)); | ||
| 9979 | *(css + SBYTES (lcss) + 1) = 0; | ||
| 9980 | } | ||
| 9981 | #endif | ||
| 9982 | |||
| 9934 | #else | 9983 | #else |
| 9935 | /* Make a handle to a new rsvg object. */ | 9984 | /* Make a handle to a new rsvg object. */ |
| 9936 | rsvg_handle = rsvg_handle_new (); | 9985 | rsvg_handle = rsvg_handle_new (); |
| @@ -9973,20 +10022,20 @@ svg_load_image (struct frame *f, struct image *img, char *contents, | |||
| 9973 | if (has_width && has_height) | 10022 | if (has_width && has_height) |
| 9974 | { | 10023 | { |
| 9975 | /* Success! We can use these values directly. */ | 10024 | /* Success! We can use these values directly. */ |
| 9976 | viewbox_width = svg_css_length_to_pixels (iwidth, dpi); | 10025 | viewbox_width = svg_css_length_to_pixels (iwidth, dpi, img->face_font_size); |
| 9977 | viewbox_height = svg_css_length_to_pixels (iheight, dpi); | 10026 | viewbox_height = svg_css_length_to_pixels (iheight, dpi, img->face_font_size); |
| 9978 | } | 10027 | } |
| 9979 | else if (has_width && has_viewbox) | 10028 | else if (has_width && has_viewbox) |
| 9980 | { | 10029 | { |
| 9981 | viewbox_width = svg_css_length_to_pixels (iwidth, dpi); | 10030 | viewbox_width = svg_css_length_to_pixels (iwidth, dpi, img->face_font_size); |
| 9982 | viewbox_height = svg_css_length_to_pixels (iwidth, dpi) | 10031 | viewbox_height = svg_css_length_to_pixels (iwidth, dpi, img->face_font_size) |
| 9983 | * viewbox.width / viewbox.height; | 10032 | * viewbox.height / viewbox.width; |
| 9984 | } | 10033 | } |
| 9985 | else if (has_height && has_viewbox) | 10034 | else if (has_height && has_viewbox) |
| 9986 | { | 10035 | { |
| 9987 | viewbox_height = svg_css_length_to_pixels (iheight, dpi); | 10036 | viewbox_height = svg_css_length_to_pixels (iheight, dpi, img->face_font_size); |
| 9988 | viewbox_width = svg_css_length_to_pixels (iheight, dpi) | 10037 | viewbox_width = svg_css_length_to_pixels (iheight, dpi, img->face_font_size) |
| 9989 | * viewbox.height / viewbox.width; | 10038 | * viewbox.width / viewbox.height; |
| 9990 | } | 10039 | } |
| 9991 | else if (has_viewbox) | 10040 | else if (has_viewbox) |
| 9992 | { | 10041 | { |
| @@ -10107,6 +10156,10 @@ svg_load_image (struct frame *f, struct image *img, char *contents, | |||
| 10107 | 10156 | ||
| 10108 | rsvg_handle_set_dpi_x_y (rsvg_handle, FRAME_DISPLAY_INFO (f)->resx, | 10157 | rsvg_handle_set_dpi_x_y (rsvg_handle, FRAME_DISPLAY_INFO (f)->resx, |
| 10109 | FRAME_DISPLAY_INFO (f)->resy); | 10158 | FRAME_DISPLAY_INFO (f)->resy); |
| 10159 | |||
| 10160 | #if LIBRSVG_CHECK_VERSION (2, 48, 0) | ||
| 10161 | rsvg_handle_set_stylesheet (rsvg_handle, (guint8 *)css, strlen (css), NULL); | ||
| 10162 | #endif | ||
| 10110 | #else | 10163 | #else |
| 10111 | /* Make a handle to a new rsvg object. */ | 10164 | /* Make a handle to a new rsvg object. */ |
| 10112 | rsvg_handle = rsvg_handle_new (); | 10165 | rsvg_handle = rsvg_handle_new (); |
| @@ -10140,6 +10193,11 @@ svg_load_image (struct frame *f, struct image *img, char *contents, | |||
| 10140 | g_object_unref (rsvg_handle); | 10193 | g_object_unref (rsvg_handle); |
| 10141 | xfree (wrapped_contents); | 10194 | xfree (wrapped_contents); |
| 10142 | 10195 | ||
| 10196 | #if LIBRSVG_CHECK_VERSION (2, 48, 0) | ||
| 10197 | if (!STRINGP (lcss)) | ||
| 10198 | xfree (css); | ||
| 10199 | #endif | ||
| 10200 | |||
| 10143 | /* Extract some meta data from the svg handle. */ | 10201 | /* Extract some meta data from the svg handle. */ |
| 10144 | width = gdk_pixbuf_get_width (pixbuf); | 10202 | width = gdk_pixbuf_get_width (pixbuf); |
| 10145 | height = gdk_pixbuf_get_height (pixbuf); | 10203 | height = gdk_pixbuf_get_height (pixbuf); |
| @@ -10210,6 +10268,10 @@ svg_load_image (struct frame *f, struct image *img, char *contents, | |||
| 10210 | g_object_unref (rsvg_handle); | 10268 | g_object_unref (rsvg_handle); |
| 10211 | if (wrapped_contents) | 10269 | if (wrapped_contents) |
| 10212 | xfree (wrapped_contents); | 10270 | xfree (wrapped_contents); |
| 10271 | #if LIBRSVG_CHECK_VERSION (2, 48, 0) | ||
| 10272 | if (css && !STRINGP (lcss)) | ||
| 10273 | xfree (css); | ||
| 10274 | #endif | ||
| 10213 | /* FIXME: Use error->message so the user knows what is the actual | 10275 | /* FIXME: Use error->message so the user knows what is the actual |
| 10214 | problem with the image. */ | 10276 | problem with the image. */ |
| 10215 | image_error ("Error parsing SVG image `%s'", img->spec); | 10277 | image_error ("Error parsing SVG image `%s'", img->spec); |
| @@ -10801,6 +10863,7 @@ non-numeric, there is no explicit limit on the size of images. */); | |||
| 10801 | #if defined (HAVE_RSVG) | 10863 | #if defined (HAVE_RSVG) |
| 10802 | DEFSYM (Qsvg, "svg"); | 10864 | DEFSYM (Qsvg, "svg"); |
| 10803 | DEFSYM (QCbase_uri, ":base-uri"); | 10865 | DEFSYM (QCbase_uri, ":base-uri"); |
| 10866 | DEFSYM (QCcss, ":css"); | ||
| 10804 | add_image_type (Qsvg); | 10867 | add_image_type (Qsvg); |
| 10805 | #ifdef HAVE_NTGUI | 10868 | #ifdef HAVE_NTGUI |
| 10806 | /* Other libraries used directly by svg code. */ | 10869 | /* Other libraries used directly by svg code. */ |
diff --git a/src/nsterm.m b/src/nsterm.m index bf175bbd188..a6501100ca9 100644 --- a/src/nsterm.m +++ b/src/nsterm.m | |||
| @@ -9790,7 +9790,7 @@ nswindow_orderedIndex_sort (id w1, id w2, void *c) | |||
| 9790 | IOSurfaceRef surface = NULL; | 9790 | IOSurfaceRef surface = NULL; |
| 9791 | 9791 | ||
| 9792 | NSTRACE ("[EmacsSurface getContextWithSize:]"); | 9792 | NSTRACE ("[EmacsSurface getContextWithSize:]"); |
| 9793 | NSTRACE_MSG (@"IOSurface count: %lu", [cache count] + (lastSurface ? 1 : 0)); | 9793 | NSTRACE_MSG ("IOSurface count: %lu", [cache count] + (lastSurface ? 1 : 0)); |
| 9794 | 9794 | ||
| 9795 | for (id object in cache) | 9795 | for (id object in cache) |
| 9796 | { | 9796 | { |
diff --git a/src/pdumper.c b/src/pdumper.c index 9a3b6dce00b..e266b35ca67 100644 --- a/src/pdumper.c +++ b/src/pdumper.c | |||
| @@ -5681,9 +5681,6 @@ Value is nil if this session was not started using a dump file.*/) | |||
| 5681 | Fcons (Qdump_file_name, dump_fn)); | 5681 | Fcons (Qdump_file_name, dump_fn)); |
| 5682 | } | 5682 | } |
| 5683 | 5683 | ||
| 5684 | #endif /* HAVE_PDUMPER */ | ||
| 5685 | |||
| 5686 | |||
| 5687 | static void | 5684 | static void |
| 5688 | thaw_hash_tables (void) | 5685 | thaw_hash_tables (void) |
| 5689 | { | 5686 | { |
| @@ -5692,10 +5689,15 @@ thaw_hash_tables (void) | |||
| 5692 | hash_table_thaw (AREF (hash_tables, i)); | 5689 | hash_table_thaw (AREF (hash_tables, i)); |
| 5693 | } | 5690 | } |
| 5694 | 5691 | ||
| 5692 | #endif /* HAVE_PDUMPER */ | ||
| 5693 | |||
| 5694 | |||
| 5695 | void | 5695 | void |
| 5696 | init_pdumper_once (void) | 5696 | init_pdumper_once (void) |
| 5697 | { | 5697 | { |
| 5698 | #ifdef HAVE_PDUMPER | ||
| 5698 | pdumper_do_now_and_after_load (thaw_hash_tables); | 5699 | pdumper_do_now_and_after_load (thaw_hash_tables); |
| 5700 | #endif | ||
| 5699 | } | 5701 | } |
| 5700 | 5702 | ||
| 5701 | void | 5703 | void |
diff --git a/test/infra/Dockerfile.emba b/test/infra/Dockerfile.emba index 30a58971340..19c83a8016f 100644 --- a/test/infra/Dockerfile.emba +++ b/test/infra/Dockerfile.emba | |||
| @@ -68,5 +68,5 @@ COPY . /checkout | |||
| 68 | WORKDIR /checkout | 68 | WORKDIR /checkout |
| 69 | RUN ./autogen.sh autoconf | 69 | RUN ./autogen.sh autoconf |
| 70 | RUN ./configure --with-ns | 70 | RUN ./configure --with-ns |
| 71 | RUN make -j4 bootstrap | 71 | RUN make bootstrap |
| 72 | RUN make -j4 | 72 | RUN make -j4 |
diff --git a/test/lisp/electric-tests.el b/test/lisp/electric-tests.el index 44b3d8b672f..235c02f8e8b 100644 --- a/test/lisp/electric-tests.el +++ b/test/lisp/electric-tests.el | |||
| @@ -47,7 +47,7 @@ | |||
| 47 | 47 | ||
| 48 | (defmacro save-electric-modes (&rest body) | 48 | (defmacro save-electric-modes (&rest body) |
| 49 | (declare (indent defun) (debug t)) | 49 | (declare (indent defun) (debug t)) |
| 50 | `(call-with-saved-electric-modes #'(lambda () ,@body))) | 50 | `(call-with-saved-electric-modes (lambda () ,@body))) |
| 51 | 51 | ||
| 52 | (defun electric-pair-test-for (fixture where char expected-string | 52 | (defun electric-pair-test-for (fixture where char expected-string |
| 53 | expected-point mode bindings | 53 | expected-point mode bindings |
| @@ -359,7 +359,7 @@ baz\"\"" | |||
| 359 | # \" | 359 | # \" |
| 360 | # | 360 | # |
| 361 | baz\"\"" | 361 | baz\"\"" |
| 362 | :fixture-fn #'(lambda () (goto-char (point-min)) (search-forward "bar"))) | 362 | :fixture-fn (lambda () (goto-char (point-min)) (search-forward "bar"))) |
| 363 | 363 | ||
| 364 | (define-electric-pair-test inhibit-in-mismatched-string-inside-c-comments | 364 | (define-electric-pair-test inhibit-in-mismatched-string-inside-c-comments |
| 365 | "foo\"\"/* | 365 | "foo\"\"/* |
| @@ -378,7 +378,7 @@ baz\"\"" | |||
| 378 | \" \" | 378 | \" \" |
| 379 | \" | 379 | \" |
| 380 | */baz\"\"" | 380 | */baz\"\"" |
| 381 | :fixture-fn #'(lambda () (goto-char (point-min)) (search-forward "bar"))) | 381 | :fixture-fn (lambda () (goto-char (point-min)) (search-forward "bar"))) |
| 382 | 382 | ||
| 383 | 383 | ||
| 384 | ;;; More quotes, but now don't bind `electric-pair-text-syntax-table' | 384 | ;;; More quotes, but now don't bind `electric-pair-text-syntax-table' |
| @@ -520,8 +520,8 @@ baz\"\"" | |||
| 520 | (define-electric-pair-test js-mode-braces | 520 | (define-electric-pair-test js-mode-braces |
| 521 | "" "{" :expected-string "{}" :expected-point 2 | 521 | "" "{" :expected-string "{}" :expected-point 2 |
| 522 | :modes '(js-mode) | 522 | :modes '(js-mode) |
| 523 | :fixture-fn #'(lambda () | 523 | :fixture-fn (lambda () |
| 524 | (electric-pair-mode 1))) | 524 | (electric-pair-mode 1))) |
| 525 | 525 | ||
| 526 | 526 | ||
| 527 | (define-electric-pair-test js-mode-braces-with-layout | 527 | (define-electric-pair-test js-mode-braces-with-layout |
| @@ -529,29 +529,29 @@ baz\"\"" | |||
| 529 | :modes '(js-mode) | 529 | :modes '(js-mode) |
| 530 | :test-in-comments nil | 530 | :test-in-comments nil |
| 531 | :test-in-strings nil | 531 | :test-in-strings nil |
| 532 | :fixture-fn #'(lambda () | 532 | :fixture-fn (lambda () |
| 533 | (electric-layout-mode 1) | 533 | (electric-layout-mode 1) |
| 534 | (electric-pair-mode 1))) | 534 | (electric-pair-mode 1))) |
| 535 | 535 | ||
| 536 | (define-electric-pair-test js-mode-braces-with-layout-and-indent | 536 | (define-electric-pair-test js-mode-braces-with-layout-and-indent |
| 537 | "" "{" :expected-string "{\n \n}" :expected-point 7 | 537 | "" "{" :expected-string "{\n \n}" :expected-point 7 |
| 538 | :modes '(js-mode) | 538 | :modes '(js-mode) |
| 539 | :test-in-comments nil | 539 | :test-in-comments nil |
| 540 | :test-in-strings nil | 540 | :test-in-strings nil |
| 541 | :fixture-fn #'(lambda () | 541 | :fixture-fn (lambda () |
| 542 | (electric-pair-mode 1) | 542 | (electric-pair-mode 1) |
| 543 | (electric-indent-mode 1) | 543 | (electric-indent-mode 1) |
| 544 | (electric-layout-mode 1))) | 544 | (electric-layout-mode 1))) |
| 545 | 545 | ||
| 546 | (define-electric-pair-test js-mode-braces-with-layout-and-indent | 546 | (define-electric-pair-test js-mode-braces-with-layout-and-indent |
| 547 | "" "{" :expected-string "{\n \n}" :expected-point 7 | 547 | "" "{" :expected-string "{\n \n}" :expected-point 7 |
| 548 | :modes '(js-mode) | 548 | :modes '(js-mode) |
| 549 | :test-in-comments nil | 549 | :test-in-comments nil |
| 550 | :test-in-strings nil | 550 | :test-in-strings nil |
| 551 | :fixture-fn #'(lambda () | 551 | :fixture-fn (lambda () |
| 552 | (electric-pair-mode 1) | 552 | (electric-pair-mode 1) |
| 553 | (electric-indent-mode 1) | 553 | (electric-indent-mode 1) |
| 554 | (electric-layout-mode 1))) | 554 | (electric-layout-mode 1))) |
| 555 | 555 | ||
| 556 | 556 | ||
| 557 | ;;; Backspacing | 557 | ;;; Backspacing |
| @@ -606,55 +606,55 @@ baz\"\"" | |||
| 606 | ;;; | 606 | ;;; |
| 607 | (define-electric-pair-test autowrapping-1 | 607 | (define-electric-pair-test autowrapping-1 |
| 608 | "foo" "(" :expected-string "(foo)" :expected-point 2 | 608 | "foo" "(" :expected-string "(foo)" :expected-point 2 |
| 609 | :fixture-fn #'(lambda () | 609 | :fixture-fn (lambda () |
| 610 | (electric-pair-mode 1) | 610 | (electric-pair-mode 1) |
| 611 | (mark-sexp 1))) | 611 | (mark-sexp 1))) |
| 612 | 612 | ||
| 613 | (define-electric-pair-test autowrapping-2 | 613 | (define-electric-pair-test autowrapping-2 |
| 614 | "foo" ")" :expected-string "(foo)" :expected-point 6 | 614 | "foo" ")" :expected-string "(foo)" :expected-point 6 |
| 615 | :fixture-fn #'(lambda () | 615 | :fixture-fn (lambda () |
| 616 | (electric-pair-mode 1) | 616 | (electric-pair-mode 1) |
| 617 | (mark-sexp 1))) | 617 | (mark-sexp 1))) |
| 618 | 618 | ||
| 619 | (define-electric-pair-test autowrapping-3 | 619 | (define-electric-pair-test autowrapping-3 |
| 620 | "foo" ")" :expected-string "(foo)" :expected-point 6 | 620 | "foo" ")" :expected-string "(foo)" :expected-point 6 |
| 621 | :fixture-fn #'(lambda () | 621 | :fixture-fn (lambda () |
| 622 | (electric-pair-mode 1) | 622 | (electric-pair-mode 1) |
| 623 | (goto-char (point-max)) | 623 | (goto-char (point-max)) |
| 624 | (skip-chars-backward "\"") | 624 | (skip-chars-backward "\"") |
| 625 | (mark-sexp -1))) | 625 | (mark-sexp -1))) |
| 626 | 626 | ||
| 627 | (define-electric-pair-test autowrapping-4 | 627 | (define-electric-pair-test autowrapping-4 |
| 628 | "foo" "(" :expected-string "(foo)" :expected-point 2 | 628 | "foo" "(" :expected-string "(foo)" :expected-point 2 |
| 629 | :fixture-fn #'(lambda () | 629 | :fixture-fn (lambda () |
| 630 | (electric-pair-mode 1) | 630 | (electric-pair-mode 1) |
| 631 | (goto-char (point-max)) | 631 | (goto-char (point-max)) |
| 632 | (skip-chars-backward "\"") | 632 | (skip-chars-backward "\"") |
| 633 | (mark-sexp -1))) | 633 | (mark-sexp -1))) |
| 634 | 634 | ||
| 635 | (define-electric-pair-test autowrapping-5 | 635 | (define-electric-pair-test autowrapping-5 |
| 636 | "foo" "\"" :expected-string "\"foo\"" :expected-point 2 | 636 | "foo" "\"" :expected-string "\"foo\"" :expected-point 2 |
| 637 | :fixture-fn #'(lambda () | 637 | :fixture-fn (lambda () |
| 638 | (electric-pair-mode 1) | 638 | (electric-pair-mode 1) |
| 639 | (mark-sexp 1))) | 639 | (mark-sexp 1))) |
| 640 | 640 | ||
| 641 | (define-electric-pair-test autowrapping-6 | 641 | (define-electric-pair-test autowrapping-6 |
| 642 | "foo" "\"" :expected-string "\"foo\"" :expected-point 6 | 642 | "foo" "\"" :expected-string "\"foo\"" :expected-point 6 |
| 643 | :fixture-fn #'(lambda () | 643 | :fixture-fn (lambda () |
| 644 | (electric-pair-mode 1) | 644 | (electric-pair-mode 1) |
| 645 | (goto-char (point-max)) | 645 | (goto-char (point-max)) |
| 646 | (skip-chars-backward "\"") | 646 | (skip-chars-backward "\"") |
| 647 | (mark-sexp -1))) | 647 | (mark-sexp -1))) |
| 648 | 648 | ||
| 649 | (define-electric-pair-test autowrapping-7 | 649 | (define-electric-pair-test autowrapping-7 |
| 650 | "foo" "\"" :expected-string "``foo''" :expected-point 8 | 650 | "foo" "\"" :expected-string "``foo''" :expected-point 8 |
| 651 | :modes '(tex-mode) | 651 | :modes '(tex-mode) |
| 652 | :test-in-comments nil | 652 | :test-in-comments nil |
| 653 | :fixture-fn #'(lambda () | 653 | :fixture-fn (lambda () |
| 654 | (electric-pair-mode 1) | 654 | (electric-pair-mode 1) |
| 655 | (goto-char (point-max)) | 655 | (goto-char (point-max)) |
| 656 | (skip-chars-backward "\"") | 656 | (skip-chars-backward "\"") |
| 657 | (mark-sexp -1))) | 657 | (mark-sexp -1))) |
| 658 | 658 | ||
| 659 | 659 | ||
| 660 | ;;; Electric quotes | 660 | ;;; Electric quotes |
diff --git a/test/lisp/epg-config-tests.el b/test/lisp/epg-config-tests.el new file mode 100644 index 00000000000..fba61e573c3 --- /dev/null +++ b/test/lisp/epg-config-tests.el | |||
| @@ -0,0 +1,47 @@ | |||
| 1 | ;;; epg-config-tests.el --- Test suite for epg.el -*- lexical-binding: t -*- | ||
| 2 | |||
| 3 | ;; Copyright (C) 2021 Free Software Foundation, Inc. | ||
| 4 | |||
| 5 | ;; This file is part of GNU Emacs. | ||
| 6 | |||
| 7 | ;; GNU Emacs is free software: you can redistribute it and/or modify | ||
| 8 | ;; it under the terms of the GNU General Public License as published by | ||
| 9 | ;; the Free Software Foundation, either version 3 of the License, or | ||
| 10 | ;; (at your option) any later version. | ||
| 11 | |||
| 12 | ;; GNU Emacs is distributed in the hope that it will be useful, | ||
| 13 | ;; but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 14 | ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 15 | ;; GNU General Public License for more details. | ||
| 16 | |||
| 17 | ;; You should have received a copy of the GNU General Public License | ||
| 18 | ;; along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. | ||
| 19 | |||
| 20 | ;;; Commentary: | ||
| 21 | |||
| 22 | ;;; Code: | ||
| 23 | |||
| 24 | (require 'ert) | ||
| 25 | (require 'epg-config) | ||
| 26 | |||
| 27 | (ert-deftest epg-config-test-epg-find-configuration () | ||
| 28 | (skip-unless (executable-find "gpg2")) | ||
| 29 | (should (assq 'version (epg-find-configuration 'OpenPGP)))) | ||
| 30 | |||
| 31 | (ert-deftest epg-config-test-epg-find-configuration/unknown-protocol () | ||
| 32 | (should-error (epg-find-configuration 'does-not-exist))) | ||
| 33 | |||
| 34 | (ert-deftest epg-config-test-epg-check-configuration () | ||
| 35 | (should (epg-check-configuration '((version . "1.0")) "0.9")) | ||
| 36 | (should (epg-check-configuration '((version . "1.0")) "1.0")) | ||
| 37 | (should-error (epg-check-configuration '((version . "1.0")) "1.1")) | ||
| 38 | (should-error (epg-check-configuration '((version . "1.0")) 'foo)) | ||
| 39 | (should-error (epg-check-configuration '((version . "1.0")) "foo"))) | ||
| 40 | |||
| 41 | (ert-deftest epg-config-test-epg-required-version-p () | ||
| 42 | (skip-unless (executable-find "gpg2")) | ||
| 43 | (should (epg-required-version-p 'OpenPGP "1.0"))) | ||
| 44 | |||
| 45 | (provide 'epg-config-tests) | ||
| 46 | |||
| 47 | ;;; epg-config-tests.el ends here | ||
diff --git a/test/lisp/filenotify-tests.el b/test/lisp/filenotify-tests.el index 4a2f1f9a676..13350b24422 100644 --- a/test/lisp/filenotify-tests.el +++ b/test/lisp/filenotify-tests.el | |||
| @@ -117,8 +117,9 @@ There are different timeouts for local and remote file notification libraries." | |||
| 117 | (defun file-notify--test-timeout () | 117 | (defun file-notify--test-timeout () |
| 118 | "Timeout to wait for arriving a bunch of events, in seconds." | 118 | "Timeout to wait for arriving a bunch of events, in seconds." |
| 119 | (cond | 119 | (cond |
| 120 | ((file-remote-p temporary-file-directory) 20) | ||
| 120 | ((eq system-type 'cygwin) 10) | 121 | ((eq system-type 'cygwin) 10) |
| 121 | ((file-remote-p temporary-file-directory) 6) | 122 | ((getenv "EMACS_EMBA_CI") 10) |
| 122 | ((string-equal (file-notify--test-library) "w32notify") 4) | 123 | ((string-equal (file-notify--test-library) "w32notify") 4) |
| 123 | (t 3))) | 124 | (t 3))) |
| 124 | 125 | ||
diff --git a/test/lisp/progmodes/executable-tests.el b/test/lisp/progmodes/executable-tests.el new file mode 100644 index 00000000000..4f0fa699f72 --- /dev/null +++ b/test/lisp/progmodes/executable-tests.el | |||
| @@ -0,0 +1,51 @@ | |||
| 1 | ;;; executable-tests.el --- Tests for executable.el -*- lexical-binding:t -*- | ||
| 2 | |||
| 3 | ;; Copyright (C) 2021 Free Software Foundation, Inc. | ||
| 4 | |||
| 5 | ;; This file is part of GNU Emacs. | ||
| 6 | |||
| 7 | ;; GNU Emacs is free software: you can redistribute it and/or modify | ||
| 8 | ;; it under the terms of the GNU General Public License as published by | ||
| 9 | ;; the Free Software Foundation, either version 3 of the License, or | ||
| 10 | ;; (at your option) any later version. | ||
| 11 | |||
| 12 | ;; GNU Emacs is distributed in the hope that it will be useful, | ||
| 13 | ;; but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 14 | ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 15 | ;; GNU General Public License for more details. | ||
| 16 | |||
| 17 | ;; You should have received a copy of the GNU General Public License | ||
| 18 | ;; along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. | ||
| 19 | |||
| 20 | ;;; Commentary: | ||
| 21 | |||
| 22 | ;;; Code: | ||
| 23 | |||
| 24 | (require 'ert) | ||
| 25 | (require 'executable) | ||
| 26 | |||
| 27 | (ert-deftest executable-tests-set-magic () | ||
| 28 | (with-temp-buffer | ||
| 29 | (insert "#!/foo/bar") | ||
| 30 | (executable-set-magic "/bin/bash" nil t t) | ||
| 31 | (should (equal (buffer-string) "#!/bin/bash")))) | ||
| 32 | |||
| 33 | (ert-deftest executable-tests-set-magic/with-argument () | ||
| 34 | (with-temp-buffer | ||
| 35 | (insert "#!/foo/bar") | ||
| 36 | (executable-set-magic "/bin/bash" "--norc" t t) | ||
| 37 | (should (equal (buffer-string) "#!/bin/bash --norc")))) | ||
| 38 | |||
| 39 | (ert-deftest executable-tests-set-magic/executable-insert-nil () | ||
| 40 | (let ((executable-insert nil)) | ||
| 41 | (with-temp-buffer | ||
| 42 | (insert "#!/foo/bar") | ||
| 43 | (executable-set-magic "/bin/bash" nil t nil) | ||
| 44 | (should (equal (buffer-string) "#!/foo/bar")))) | ||
| 45 | (let ((executable-insert nil)) | ||
| 46 | (with-temp-buffer | ||
| 47 | (insert "#!/foo/bar") | ||
| 48 | (executable-set-magic "/bin/bash" nil t t) | ||
| 49 | (should (equal (buffer-string) "#!/bin/bash"))))) | ||
| 50 | |||
| 51 | ;;; executable-tests.el ends here | ||
diff --git a/test/lisp/progmodes/xref-tests.el b/test/lisp/progmodes/xref-tests.el index 9982c32d41d..c25bbd94775 100644 --- a/test/lisp/progmodes/xref-tests.el +++ b/test/lisp/progmodes/xref-tests.el | |||
| @@ -143,7 +143,7 @@ | |||
| 143 | (let* ((data-parent-dir | 143 | (let* ((data-parent-dir |
| 144 | (file-name-directory (directory-file-name xref-tests--data-dir))) | 144 | (file-name-directory (directory-file-name xref-tests--data-dir))) |
| 145 | (project-find-functions | 145 | (project-find-functions |
| 146 | #'(lambda (_) (cons 'transient data-parent-dir))) | 146 | (lambda (_) (cons 'transient data-parent-dir))) |
| 147 | (xref-file-name-display 'project-relative) | 147 | (xref-file-name-display 'project-relative) |
| 148 | ;; Some older BSD find versions can produce '//' in the output. | 148 | ;; Some older BSD find versions can produce '//' in the output. |
| 149 | (expected (list | 149 | (expected (list |
diff --git a/test/src/thread-tests.el b/test/src/thread-tests.el index f14d2426ef0..0e1ca76fd9c 100644 --- a/test/src/thread-tests.el +++ b/test/src/thread-tests.el | |||
| @@ -315,8 +315,8 @@ | |||
| 315 | "Test signaling a thread as soon as it is started by the OS." | 315 | "Test signaling a thread as soon as it is started by the OS." |
| 316 | (skip-unless (featurep 'threads)) | 316 | (skip-unless (featurep 'threads)) |
| 317 | (let ((thread | 317 | (let ((thread |
| 318 | (make-thread #'(lambda () | 318 | (make-thread (lambda () |
| 319 | (while t (thread-yield)))))) | 319 | (while t (thread-yield)))))) |
| 320 | (thread-signal thread 'error nil) | 320 | (thread-signal thread 'error nil) |
| 321 | (sit-for 1) | 321 | (sit-for 1) |
| 322 | (should-not (thread-live-p thread)) | 322 | (should-not (thread-live-p thread)) |
| @@ -331,7 +331,7 @@ | |||
| 331 | (let (buffer-read-only) | 331 | (let (buffer-read-only) |
| 332 | (erase-buffer)) | 332 | (erase-buffer)) |
| 333 | (let ((thread | 333 | (let ((thread |
| 334 | (make-thread #'(lambda () (thread-signal main-thread 'error nil))))) | 334 | (make-thread (lambda () (thread-signal main-thread 'error nil))))) |
| 335 | (while (thread-live-p thread) | 335 | (while (thread-live-p thread) |
| 336 | (thread-yield)) | 336 | (thread-yield)) |
| 337 | (read-event nil nil 0.1) | 337 | (read-event nil nil 0.1) |