Merge branch 'master' into cairo

This commit is contained in:
Jan D 2015-05-23 12:28:54 +02:00
commit 6aaa489dc1
214 changed files with 3356 additions and 2484 deletions

1
.gitignore vendored
View file

@ -40,7 +40,6 @@ Info.plist
InfoPlist.strings
Makefile
makefile
!admin/charsets/Makefile
!etc/refcards/Makefile
!test/automated/data/flymake/Makefile
!test/indent/Makefile

View file

@ -96,6 +96,9 @@ messages:
- Commit messages should not contain the "Signed-off-by:" lines that
are used in some other projects.
- Any lines of the commit message that start with "; " are omitted
from the generated ChangeLog.
- Explaining the rationale for a design choice is best done in comments
in the source code. However, sometimes it is useful to describe just
the rationale for a change; that can be done in the commit message

View file

@ -1,3 +1,604 @@
2015-05-17 Johan Bockgård <bojohan@gnu.org>
Fix integer-valued `mouse-highlight' (Bug#20590)
* src/xterm.c (handle_one_xevent) [USE_GTK]: Fix ifdef scope.
2015-05-17 Eli Zaretskii <eliz@gnu.org>
MS-Windows followup for ASCIIfication of curved quotes
* lisp/term/w32console.el (terminal-init-w32console): Repeat the
test for curved quotes being displayable, after switching the
terminal encoding. (Bug#20545)
2015-05-17 Paul Eggert <eggert@cs.ucla.edu>
Spelling fixes
2015-05-17 Jan D <jan.h.d@swipnet.se>
Add comment that x_shift_glyphs_for_insert is never called.
* xterm.c (x_shift_glyphs_for_insert, x_redisplay_interface): Add
comment that this function is never called.
2015-05-16 Glenn Morris <rgm@gnu.org>
* src/lisp.mk: Remove from repository and generate at build-time.
* src/Makefile.in (lisp.mk): New rule to generate from loadup.el.
(shortlisp_filter): New variable.
(emacs$(EXEEXT), $(etc)/DOC): Depend on lisp.mk.
(distclean): Remove lisp.mk.
* Makefile.in ($(MAKEFILE_NAME)): No longer depend on src/lisp.mk.
* lisp/loadup.el: Tweak layout to make it easier to parse.
* make-dist: Do not distribute src/lisp.mk.
2015-05-16 Dmitry Gutov <dgutov@yandex.ru>
Display shorter dates in Git annotate output
* lisp/vc/vc-git.el (vc-git-annotate-command): Use the short date
format (when not overridden with vc-git-annotate-switches).
(vc-git-annotate-time): Support the short format, as well as ISO
8601 that has been used until now (bug#5428).
2015-05-16 Paul Eggert <eggert@cs.ucla.edu>
ASCIIfy curved quotes on displays lacking them
* lisp/international/mule-cmds.el (set-locale-environment):
If curved quotes don't work, display straight ASCII approximations
(Bug#20545).
2015-05-16 Glenn Morris <rgm@gnu.org>
Small src/Makefile simplification.
* src/lisp.mk (shortlisp): Rename from lisp, remove $lispsource prefix.
* src/Makefile.in (lisp): Derive from shortlisp.
($(etc)/DOC): Use $shortlisp rather than parsing lisp.mk.
2015-05-16 Eli Zaretskii <eliz@gnu.org>
* lisp/help-mode.el (help-go-forward): Doc fix.
(Bug#20577)
* doc/lispref/debugging.texi (Profiling): Improve indexing.
(Bug#20576)
2015-05-16 Dmitry Gutov <dgutov@yandex.ru>
Use `unless' to have one fewer `not'
* lisp/vc/vc-git.el (vc-git-resolve-when-done): Use `unless' to
have one fewer `not'.
Remove redundant :group declarations from vc-git.el
* lisp/vc/vc-git.el (vc-git-diff-switches)
(vc-git-annotate-switches, vc-git-resolve-conflicts)
(vc-git-program, vc-git-root-log-format): Remove the redundant
:group declarations.
2015-05-16 Nicolas Petton <nicolas@petton.fr>
Removes the predicate from lisp-complete-symbol (Bug#20456)
* lisp/emacs-lisp/lisp.el (lisp-complete-symbol): Do not use predicate
and remove it from the docstring.
2015-05-16 Dmitry Gutov <dgutov@yandex.ru>
Add new option vc-git-resolve-conflicts
* lisp/vc/vc-git.el (vc-git-resolve-conflicts): New variable.
(vc-git-find-file-hook): Add to after-save-hook only when the
above is non-nil.
(vc-git-resolve-when-done): Update to honor the new variable.
(Bug#20292)
2015-05-16 Eli Zaretskii <eliz@gnu.org>
Merge branch 'master' of git.savannah.gnu.org:/srv/git/emacs
2015-05-16 Artur Malabarba <bruce.connor.am@gmail.com>
* lisp/emacs-lisp/tabulated-list.el: Don't error on nil header-string
(tabulated-list-init-header): Document new behavior.
(tabulated-list-print-fake-header): No nothing if
`tabulated-list--header-string' is nil.
(tabulated-list--header-string): Add a docstring.
* doc/lispref/modes.texi (Tabulated List Mode): Document it.
* etc/NEWS: Document it.
2015-05-15 Leo Liu <sdl.web@gmail.com>
Revert "Fix cps--gensym"
* lisp/emacs-lisp/generator.el (cps--gensym): Revert commit
fbda511ab8069d0115eafca411a43353b85431b1 on 2015-05-14.
2015-05-15 Glenn Morris <rgm@gnu.org>
Replace AC_SUBST_FILE in configure with include in Makefiles.
* configure.ac (DEPDIR, MKDEPDIR, deps_frag, lwlib_deps_frag)
(oldxmenu_deps_frag, lisp_frag): Remove output variables/files.
(AUTO_DEPEND): New output variable.
* lwlib/Makefile.in (AUTO_DEPEND): New, set by configure.
(DEPFLAGS, MKDEPDIR): Set directly via conditional.
(lwlib_deps_frag): Replace by conditional include.
* lwlib/autodeps.mk: Remove file.
* oldXMenu/Makefile.in (AUTO_DEPEND): New, set by configure.
(DEPFLAGS, MKDEPDIR): Set directly via conditional.
(oldxmenu_deps_frag): Replace by conditional include.
* oldXMenu/autodeps.mk: Remove file.
* src/Makefile.in (AUTO_DEPEND): New, set by configure.
(DEPFLAGS, MKDEPDIR): Set directly via conditional.
(lisp_frag): Replace by an include.
(deps_frag): Replace by conditional include.
* src/autodeps.mk: Remove file.
Tweak japanese.el's loading of dependencies.
* lisp/loadup.el: Explicitly load cp51932 and eucjp-ms.
* lisp/language/japanese.el: Use require rather than load.
* lisp/international/cp51932.el, lisp/international/eucjp-ms.el:
Provide a feature.
* admin/charsets/eucjp-ms.awk, admin/charsets/cp51932.awk:
Provide a feature in the generated file.
2015-05-15 Jan D <jan.h.d@swipnet.se>
Fix NS warnings.
* nsmenu.m (ns_popup_dialog)
* nsimage.m (initFromXBM:width:height:fg:bg:)
* nsfns.m (Fx_create_frame): Remove unused variables.
(Fns_read_file_name): Initialize fname, remove ret.
* nsterm.m (ns_draw_window_cursor): Handle DEFAULT_CURSOR in switch.
(ns_get_color, ns_set_horizontal_scroll_bar, keyDown): Remove unused
variable.
(init): Add parantesis in if.
(ns_create_terminal): Assign set_horizontal_scroll_bar_hook.
2015-05-15 Jan Djärv <jan.h.d@swipnet.se>
Fix a enum conversion warning in macfont.m
* src/macfont.h (CharacterCollection): Typedef to NSCharacterCollection.
(MAC_CHARACTER_COLLECTION_*): Use the NS variants.
2015-05-15 Eli Zaretskii <eliz@gnu.org>
Support de-alt dictionary with Aspell.
* lisp/textmodes/ispell.el (ispell-aspell-find-dictionary):
Support Aspell dictionaries with names like "de-alt". (Bug#20581)
2015-05-15 Jan Djärv <jan.h.d@swipnet.se>
cus-start.el: Add ns-confirm-quit.
* cus-start.el: Add ns-confirm-quit.
Fix warnings on OSX 10.10.
* nsfns.m (MODAL_OK_RESPONSE): New define for different OSX versions.
(Fns_read_file_name): Check against MODAL_OK_RESPONSE.
(compute_tip_xy): Use convertRectToScreen for OSX >= 10.7
* nsmenu.m (initWithContentRect:styleMask:backing:defer:)
* nsimage.m (allocInitFromFile, setPixmapData): Only call
setScalesWhenResized for OSX < 10.6.
* nsterm.h (EmacsScroller): Declare scrollerWidth.
* nsterm.m (ns_copy_bits): New function that does not use deprecated
NSCopyBits.
(ns_scroll_run, ns_shift_glyphs_for_insert): Call ns_copy_bits.
(runAlertPanel): New function.
(applicationShouldTerminate:): Call runAlertPanel.
(initFrameFromEmacs, toggleFullScreen:): Only call useOptimizedDrawing
for OSX < 10.10.
(initFrameFromEmacs:): Only call allocateGState for OSX < 10.10.
(windowWillUseStandardFrame:defaultFrame:): Cast arg to abs to int.
(draggingEntered:): Returns NSDragOperation.
(scrollerWidth): Use scrollerWidthForControlSize for OSX >= 10.7.
2015-05-15 Artur Malabarba <bruce.connor.am@gmail.com>
* lisp/emacs-lisp/package.el: Don't ensure-init during startup
(package--init-file-ensured): New variable.
(package-initialize, package--ensure-init-file): Use it.
2015-05-15 Jan Djärv <jan.h.d@swipnet.se>
Honor :fore/background for XBM on NS (Bug#14969).
* nsterm.h (EmacsImage): Add xbm_fg, remove initFromSkipXBM,
initFromXBM takes bg, fg args, remove flip arg.
(ns_image_from_XBM): Add bg, fg args.
* image.c (x_create_bitmap_from_data)
(Create_Pixmap_From_Bitmap_Data): ns_image_from_XBM takes bg, fg args.
* nsimage.m (ns_image_from_XBM): Add fg, bg args, pass to initFromXBM.
Remove flip arg.
(initFromSkipXBM): Move code to initFromXBM.
(initFromXBM): Actually set fg and bg, instead of playing alpha games.
Use fg, bg from args (Bug#14969). Remove if (length) section, was always
false.
Remove bit flipping (bitPat, swt), generated incorrect images when
width/height wasn't a multiple of 8.
(setXBMColor:): Modify planes by comparing to saved xbm_fg.
* nsterm.m (ns_draw_fringe_bitmap): initFromXBM takes fg, bg args, remove
flip arg.
2015-05-15 Artur Malabarba <bruce.connor.am@gmail.com>
* lisp/emacs-lisp/package.el: Be more careful with the init file
(package--ensure-init-file): Check that user-init-file is set,
exists, is readable, and is writable. (Bug#20584)
Also expand the docstring.
2015-05-14 Wilson Snyder <wsnyder@wsnyder.org>
Sync with upstream verilog-mode revision 6232468
* lisp/progmodes/verilog-mode.el (verilog-font-lock-grouping-keywords-face)
(verilog-highlight-grouping-keywords): Fix use of face when
`verilog-highlight-grouping-keywords' set. Reported by Jeff
Pompa.
(verilog-auto-reset): Fix AUTORESET to ignore member resets if
parent is reset, bug906. Reported by Ken Schmidt.
(verilog-auto-inout-module): Add fourth regexp argument to
AUTOINOUTMODULE and AUTOINOUTCOMP for signals to not match,
bug856. Reported by John Tillema.
(verilog-auto-inst-port): Fix AUTOINST interfaces to not show
modport if signal attachment is itself a modport. Reported by
Matthew Lovell.
(verilog-auto-reset, verilog-auto-sense-sigs): Fix AUTORESET with
always_comb and always_latch, bug844. Reported by Greg Hilton.
(verilog-at-constraint-p, verilog-beg-of-statement-1): Fix hanging
with many curly-bracket pairs, bug663.
(verilog-set-auto-endcomments): Fix end comments for functions of
type void, etc. Reported by Alex Reed.
(verilog-do-indent): Fix electric tab deleting form-feeds. Note
caused by indent-line-to deleting tabls pre 24.5.
(verilog-nameable-item-re): Fix nameable items that can have an
end-identifier to include endchecker, endgroup, endprogram,
endproperty, and endsequence. Reported by Alex Reed.
(verilog-label-be): When auto-commenting a buffer, consider
auto-comments on all known keywords (not just a subset thereof).
Reported by Alex Reed.
(verilog-auto-end-comment-lines-re)
(verilog-end-block-ordered-re, verilog-set-auto-endcomments):
Automatically comment property/endproperty blocks to match other
similar blocks like sequence/endsequence, function/endfunction,
etc. Reported by Alex Reed.
(verilog-set-auto-endcomments): Detect the function- or task-name
when auto-commenting blocks that lack an explicit
portlist. Reported by Alex Reed.
(verilog-auto, verilog-auto-insert-last): Add AUTOINSERTLAST to
allow post-AUTO user fixups, bug826. Reported by Dennis
Muhlestein.
(verilog-no-indent-begin-re): When `verilog-indent-begin-after-if'
is nil, fix indenting initial/final to match always statements,
bug825. Reported by Tim Clapp.
(verilog-extended-complete-re): Fix indentation of DPI-C imports
with c_identifiers, and DPI-C imports, bug557. Reported by ZeDong
Mao and Jason Forkey.
(verilog-read-decls): Fix parsing typed interfaces. Fix
AUTOINOUTMODPORT missing types. Reported by Stephan Bourduas.
Fix localparam not being ignored in AUTOINSTPARAM,
bug889. Reported by Shannon Hill.
(verilog-auto-output-every): Add regexp to AUTOOUTPUTEVERY,
bug793. Reported by Pierre-David Pfister.
(verilog-auto-arg-format, verilog-auto-arg-ports): Add
verilog-auto-arg-format to support newlines in AUTOARG. Reported
by Jie Xiao.
(verilog-batch-execute-func): Do not batch re-auto files loaded by
Local Variables. Fix printing "no changes to be saved" with
verilog-batch. Reported by Dan Dever.
(verilog-auto-inout-module): Fix AUTOINOUTMODULE not inserting
interface-only modules, bug721. Reported by Dean Hoyt.
Author: Alex Reed <acreed4@gmail.com>
* lisp/progmodes/verilog-mode.el (verilog-beg-of-statement): Don't
treat '<keyword>:<identifier>' as the start of a labeled
statement, bug905. Reported by Enzo Chi.
(verilog-directive-re, verilog-compiler-directives)
(verilog-keywords): Match full set of IEEE 2012-1800 compiler
directives (plus some extras) when determining indentation, bug
901. Reported by Bernd Beuster.
(verilog-at-constraint-p): Fix indentation of coverpoint bins if
iff expression doesn't start with word-character, bug900.
(verilog-optional-signed-range-re, verilog-optional-signed-re):
Fix incorrect indentation/alignment of unsigned declarations,
bug897.
(verilog-looking-back, verilog-in-attribute-p): Fix labling of
always constructs, bug895.
(verilog-calc-1): Fix verilog-mode constraint indentation,
bug324. Reported by Eric Mastromarchi.
(verilog-beg-of-statement): Fix indenting for some forms of
constraintsm bug433. Reported by Brad Parker. Fix indentation of
continued assignment incorrect if first line ends with ']',
bug437. Reported by Dan Dever. Fix indention of cover inside an
ifdef, bug 862. Reported by Bernd Beuster Fix labeling do-while
blocks, bug842.
(verilog-preprocessor-re): Fix fork/end UNMATCHED warning,
bug859. Reported by Kaushal Modi.
(verilog-set-auto-endcomments): Fix endlabel end comments, bug888.
(verilog-backward-token): Fix indenting sensitivity lists with
named events, bug840. Reed.
(verilog-no-indent-begin-re): Fix `verilog-indent-begin-after-if'
nil not honoring 'forever', 'foreach', and 'do' keywords.
2015-05-14 Paul Eggert <eggert@cs.ucla.edu>
Check for invalid GTK+ monitor scales
* src/gtkutil.c (xg_get_gdk_scale): Return 1 for invalid scales,
INT_MAX for too-large scales. All callers changed to assume the
result is valid (Bug#20432).
(xg_frame_set_char_size, xg_update_scrollbar_pos):
Calculate scale only if needed.
show ASCII approximations instead.
2015-05-14 Eli Zaretskii <eliz@gnu.org>
Fix daemon crashes when linum-mode is turned on early on
* src/window.c (Fwindow_end): Don't try calling display engine
functions on initial-frame frame. (Bug#20565)
Fix selective diff browsing in Ediff
* lisp/vc/ediff-util.el (ediff-focus-on-regexp-matches): Go to the
beginning of the region before searching for the
ediff-regexp-focus-* regexps. (Bug#20568)
2015-05-14 Jan D <jan.h.d@swipnet.se>
Fixes Bug#20142.
* gtkutil.c (delete_cb): Don't send delete event here, it does arrive
in the main loop, even for Gtk 3 (Bug#20142).
Don't access display after i/o error (Bug#19147).
* xterm.c (x_connection_closed): Add third arg ioerror.
If ioerror, set display to 0 (Bug#19147).
(x_error_quitter): Call x_connection_closed with third arg false.
(x_io_error_quitter): Call x_connection_closed with third arg true.
Handle GTK_SCALE, fixes Bug#20432.
* gtkutil.c (xg_get_gdk_scale): New function.
(xg_frame_set_char_size)
(x_wm_set_size_hint, xg_get_default_scrollbar_width)
(xg_get_default_scrollbar_height)
(xg_update_horizontal_scrollbar_pos): Take GTK_SCALE in to account
when setting sizes (Bug#20432).
2015-05-13 Leo Liu <sdl.web@gmail.com>
Fix cps--gensym
* lisp/emacs-lisp/generator.el (cps--gensym): Fix.
2015-05-13 Glenn Morris <rgm@gnu.org>
Fix bootstrap (void function cl-member).
* lisp/emacs-lisp/cl-lib.el: Load cl-seq if no cl-loaddefs file.
* lisp/emacs-lisp/cl-seq.el: Provide a feature.
2015-05-13 Stefan Monnier <monnier@iro.umontreal.ca>
* lisp/loadup.el ("emacs-lisp/cl-generic"): Preload
* src/lisp.mk (lisp): Add emacs-lisp/cl-generic.elc.
* lisp/emacs-lisp/cl-generic.el (cl-generic-define-method):
Avoid defalias for closures which are not immutable.
(cl--generic-prefill-dispatchers): New macro. Use it to prefill the
dispatchers table with various entries.
* lisp/emacs-lisp/ert.el (emacs-lisp-mode-hook):
* lisp/emacs-lisp/seq.el (emacs-lisp-mode-hook): Use add-hook.
2015-05-13 Eli Zaretskii <eliz@gnu.org>
Improve tagging of C bindings in DEFVAR_*
* src/Makefile.in (TAGS): Add --regex options to tag the C binding
from DEFVAR_*.
2015-05-13 Paul Eggert <eggert@cs.ucla.edu>
* src/editfns.c (Fformat): Fix use-after-free bug (Bug#20548).
2015-05-12 Glenn Morris <rgm@gnu.org>
* lisp/progmodes/tcl.el (tcl-filter):
Handle comint-prompt-read-only like gud.el does. (Bug#20549)
Add basic VC push support.
* lisp/vc/vc.el (vc-push): New autoloaded command.
* lisp/vc/vc-hooks.el (vc-prefix-map, vc-menu-map): Add vc-push.
* lisp/vc/vc-bzr.el (vc-bzr--pushpull): New, factored from vc-bzr-pull.
(vc-bzr-pull): Reimplement using vc-bzr--pushpull.
(vc-bzr-push): New.
* lisp/vc/vc-git.el (vc-git--pushpull): New, factored from vc-git-pull.
(vc-git-pull): Reimplement using vc-git--pushpull.
(vc-git-push): New.
* lisp/vc/vc-hg.el (vc-hg--pushpull): New, factored from vc-hg-pull.
(vc-hg-pull, vc-hg-push): Reimplement using vc-hg--pushpull.
* doc/emacs/maintaining.texi (Pulling / Pushing):
Rename from "VC Pull". Mention pushing.
(VC With A Merging VCS, VC Change Log): Update xrefs.
(Branches): Update menu.
* doc/emacs/emacs.texi: Update menu.
* etc/NEWS: Mention this.
2015-05-12 Nicolas Petton <nicolas@petton.fr>
Improve the seq pcase pattern and the `seq-let' macro
* lisp/emacs-lisp/seq.el: The pcase pattern now matches only if the
object is a sequence, and binds each element of ARGS to the
corresponding element of the sequence.
2015-05-12 Eli Zaretskii <eliz@gnu.org>
Fix tags created from DEFVAR_* declarations in C
* src/Makefile.in (TAGS): Improve the --regex argument to etags,
to make tags extracted from DEFVAR_* declarations more accurate.
Add a test suite for etags
* test/etags/: New test suite, adapted from
http://fly.isti.cnr.it/pub/software/unix/etags-regression-test.tar.bz2,
whose original author is Francesco Potortì <pot@gnu.org>.
Fix tagging of symbols in C enumerations
* lib-src/etags.c (consider_token): Don't tag symbols in
expressions that assign values to enum constants. See
http://lists.gnu.org/archive/html/emacs-devel/2015-05/msg00291.html
for details.
(C_entries): Reset fvdef to fvnone after processing a preprocessor
conditional and after a comma outside of parentheses.
2015-05-12 Glenn Morris <rgm@gnu.org>
* lisp/url/url-handlers.el (url-file-name-completion)
(url-file-name-all-completions): Silence compiler.
* lisp/emacs-lisp/chart.el (chart-axis-draw): Replace obsolete alias.
* lisp/play/dunnet.el (dun-dos-boot-msg): Fix time. (Bug#20554)
2015-05-12 Stefan Monnier <monnier@iro.umontreal.ca>
* lisp/emacs-lisp/cl-generic.el: Add dispatch on &context arguments
(cl--generic-mandatory-args): Remove.
(cl--generic-split-args): New function.
(cl-generic-define, cl--generic-lambda): Use it.
(cl-generic-define-method): Use it as well, and add support for
context args.
(cl--generic-get-dispatcher): Handle &context dispatch.
(cl--generic-cache-miss): `dispatch-arg' can now be a context expression.
(cl--generic-dispatchers): Pre-fill.
* test/automated/cl-generic-tests.el (sm-generic-test-12-context): New test.
2015-05-11 Glenn Morris <rgm@gnu.org>
* make-dist: Abort if "make ChangeLog" fails. Add "--no-changelog".
2015-05-11 Stefan Monnier <monnier@iro.umontreal.ca>
* lisp/term/xterm.el: Fix xterm-paste handling for rxvt
* lisp/term/rxvt.el: Require term/xterm.
(rxvt-function-map): Use xterm-rxvt-function-map.
(rxvt-standard-colors): Move before first use.
(terminal-init-rxvt): Use xterm--push-map and xterm-register-default-colors.
(rxvt-rgb-convert-to-16bit, rxvt-register-default-colors): Remove.
* lisp/term/xterm.el (xterm-rxvt-function-map): New var.
Move shared bindings between rxvt and xterm to it.
(xterm-function-map): Use it. Move the xterm-paste binding to
xterm-rxvt-function-map (bug#20444).
(xterm-standard-colors): Move before first use.
(xterm--push-map): New function.
(xterm-register-default-colors): Take standard colors as argument.
(terminal-init-xterm): Use it. Adjust call to
xterm-register-default-colors.
2015-05-11 Glenn Morris <rgm@gnu.org>
* lisp/term/x-win.el: Quieten --without-x compilation.
(x-own-selection-internal, x-disown-selection-internal)
(x-selection-owner-p, x-selection-exists-p, x-get-selection-internal):
Declare.
* Makefile.in (emacslog): Remove srcdir.
(ChangeLog): Update for the above.
2015-05-11 Paul Eggert <eggert@cs.ucla.edu>
Spelling fix
2015-05-10 Fabián Ezequiel Gallina <fgallina@gnu.org>
python.el: better limit for looking-back calls
* lisp/progmodes/python.el (python-shell-accept-process-output):
Use last comint prompt start as limit for looking-back.
2015-05-10 Stefan Monnier <monnier@iro.umontreal.ca>
CEDET (srecode-insert-fcn): Fix use of oref on a class
* lisp/cedet/srecode/insert.el (srecode-insert-fcn): Fix use of oref on
a class. Reported by Pierre Lorenzon.
(srecode-template-inserter-point): Remove declaration.
CEDET (srecode-create-dictionary): Avoid obsolete object name
* lisp/cedet/srecode/dictionary.el (srecode-create-dictionary):
Don't use a symbol as an object name. Reported by Pierre Lorenzon.
2015-05-10 Paul Eggert <eggert@cs.ucla.edu>
C-x 8 shorthands for curved quotes, Euro, etc.
Although C-x 8 lets you insert arbitrary Unicode characters,
it's awkward to use this to insert commonly used symbols such as curved
quotes, the Euro symbol, etc. This patch adds simpler sequences for
characters commonly found in English text and in basic math.
For example, assuming the Alt key works on your keyboard and iso-transl
is loaded, one can now type "A-[" instead of "A-RET LEFT SIN TAB RET"
to get the character "" (U+2018 LEFT SINGLE QUOTATION MARK).
(Bug#20499)
* doc/emacs/mule.texi (Unibyte Mode):
A few other printing characters now work too.
* etc/NEWS: Document this.
* lisp/international/iso-transl.el (iso-transl-char-map):
Also support the following characters:
— ― “ ” † ‡ • ″ € № ← → ↔ ≈ ≠ ≤ ≥
2015-05-10 Dmitry Gutov <dgutov@yandex.ru>
Add xref-find-regexp
* lisp/progmodes/xref.el (xref-find-function): Describe the
`matches' action.
(xref-find-regexp): New command, using it.
(xref-collect-references): Rename to xref-collect-matches.
(xref--collect-reference): Rename to xref--collect-match.
(xref-collect-matches, xref--collect-match): Accept new argument,
KIND. Update accordingly.
(xref--regexp-to-extended): New function.
* lisp/progmodes/elisp-mode.el (elisp-xref-find): Support the
`matches' action.
(elisp--xref-find-matches): Accept new argument. Resolve a FIXME.
* lisp/progmodes/etags.el (etags-xref-find):
Support the `matches' action.
(etags--xref-find-matches): New function.
2015-05-10 Glenn Morris <rgm@gnu.org>
* Makefile.in: Fixes for recent change-history changes.
(change-history-nocommit): Update footer regexp.
Ensure output script stays executable.
2015-05-10 Nicolas Petton <nicolas@petton.fr>
New version of `seq-let' based on a pcase pattern
* lisp/emacs-lisp/seq.el (seq-let): Define the macro in terms of a
pcase pattern if `pcase-defmacro' is defined (Emacs>=25.1).
2015-05-10 Przemysław Wojnowski <esperanto@cumego.com>
Add basic HTML5 tags and a template
* lisp/textmodes/sgml-mode.el: Basic HTML5 support.
(html-tag-alist): Add HTML5 tags.
(html-tag-help): Add new tags descriptions.
(html-navigational-links): Template for nav links.
(html-html5-template): Template for a HTML5 page.
2015-05-10 Dmitry Gutov <dgutov@yandex.ru>
semantic/symref/grep: Don't use word boundaries
* lisp/cedet/semantic/symref/grep.el
(semantic-symref-perform-search): Instead of wrapping input in
word boundaries, check that the characters before and after are
not word constituents.
semantic/symref/grep: Support regexp search
* lisp/cedet/semantic/symref.el
(semantic-symref-hit-to-tag-via-buffer): Don't regexp-quote when
the search type is regexp.
* lisp/cedet/semantic/symref/grep.el
(semantic-symref-perform-search): Support the regexp search type.
Pass -E to Grep when it's used.
semantic-symref-regexp: Allow to input an arbitrary string
* lisp/cedet/semantic/symref/list.el (semantic-symref-regexp):
Allow to input an arbitrary string interactively.
Remove tag-symbol-match-p from etags-xref-find-definitions-tag-order
* lisp/progmodes/etags.el (etags-xref-find-definitions-tag-order):
Remove tag-symbol-match-p from the default value
(http://lists.gnu.org/archive/html/emacs-devel/2015-05/msg00292.html).
Declare find-tag obsolete
* lisp/progmodes/etags.el (find-tag): Declare obsolete in favor of
xref-find-definitions.
2015-05-10 Jan D <jan.h.d@swipnet.se>
Draw composite string correctly (Bug#20537).
* nsterm.m (ns_draw_composite_glyph_string_foreground): New function.
(ns_draw_glyph_string): Call it (Bug#20537).
2015-05-09 Eli Zaretskii <eliz@gnu.org>
Avoid infloop in ERC

View file

@ -831,7 +831,7 @@ clean_dirs = $(mostlyclean_dirs) nextstep
$(foreach dir,$(clean_dirs),$(eval $(call submake_template,$(dir),clean)))
clean: $(clean_dirs:=_clean)
for dir in test/automated; do \
for dir in test/automated admin/charsets; do \
[ ! -d $$dir ] || $(MAKE) -C $$dir clean; \
done
-rm -f *.tmp etc/*.tmp*
@ -856,8 +856,10 @@ distclean_dirs = $(clean_dirs) leim lisp
$(foreach dir,$(distclean_dirs),$(eval $(call submake_template,$(dir),distclean)))
maybeclean_dirs = test/automated admin/grammars admin/unidata admin/charsets
distclean: $(distclean_dirs:=_distclean)
for dir in test/automated admin/grammars admin/unidata; do \
for dir in ${maybeclean_dirs}; do \
[ ! -d $$dir ] || $(MAKE) -C $$dir distclean; \
done
${top_distclean}
@ -868,7 +870,7 @@ distclean: $(distclean_dirs:=_distclean)
$(foreach dir,$(distclean_dirs),$(eval $(call submake_template,$(dir),bootstrap-clean)))
bootstrap-clean: $(distclean_dirs:=_bootstrap-clean)
for dir in test/automated admin/grammars admin/unidata; do \
for dir in ${maybeclean_dirs}; do \
[ ! -d $$dir ] || $(MAKE) -C $$dir bootstrap-clean; \
done
[ ! -f config.log ] || mv -f config.log config.log~
@ -896,7 +898,7 @@ maintainer_clean_dirs = src leim lisp
$(foreach dir,$(maintainer_clean_dirs),$(eval $(call submake_template,$(dir),maintainer-clean)))
maintainer-clean: bootstrap-clean $(maintainer_clean_dirs:=_maintainer-clean)
for dir in test/automated admin/grammars admin/unidata; do \
for dir in ${maybeclean_dirs}; do \
[ ! -d $$dir ] || $(MAKE) -C $$dir maintainer-clean; \
done
${top_maintainer_clean}
@ -910,6 +912,7 @@ maintainer-clean: bootstrap-clean $(maintainer_clean_dirs:=_maintainer-clean)
$(foreach dir,$(SUBDIR),$(eval $(call submake_template,$(dir),extraclean)))
## FIXME this is busted because most of these do not have extraclean rules.
## Also it is missing things that do have such rules.
extraclean: $(SUBDIR:=_extraclean)
${top_maintainer_clean}
-rm -f config-tmp-*

View file

@ -1,324 +0,0 @@
# Makefile -- Makefile to generate charset maps in etc/charsets.
# Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
# National Institute of Advanced Industrial Science and Technology (AIST)
# Registration Number H13PRO009
#
# This file is part of GNU Emacs.
# GNU Emacs is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
# GNU Emacs is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
# Commentary:
# If your system doesn't have the directory /usr/share/i18n/charmaps,
# get the source of the latest glibc, gzip all the charmap files in
# the directory "localedate/charmaps", and set the variable
# GLIBC_CHARMAPS to that directory.
GLIBC_CHARMAPS=/usr/share/i18n/charmaps
CHARSETS = ${ISO8859} ${IBM} ${CODEPAGE} ${CJK} ${MISC} ${MULE}
# Note: We can not prepend "ISO-" to these map files because of file
# name limits on DOS.
ISO8859 = \
8859-2.map 8859-3.map 8859-4.map 8859-5.map 8859-6.map 8859-7.map \
8859-8.map 8859-9.map 8859-10.map 8859-11.map 8859-13.map 8859-14.map \
8859-15.map 8859-16.map
IBM = \
IBM037.map IBM038.map \
IBM256.map IBM273.map IBM274.map IBM275.map IBM277.map IBM278.map \
IBM280.map IBM281.map IBM284.map IBM285.map IBM290.map IBM297.map \
IBM420.map IBM423.map IBM424.map IBM437.map IBM500.map IBM850.map \
IBM851.map IBM852.map IBM855.map IBM856.map IBM857.map IBM860.map \
IBM861.map IBM862.map IBM863.map IBM864.map IBM865.map IBM866.map \
IBM868.map IBM869.map IBM870.map IBM871.map IBM874.map IBM875.map \
IBM880.map IBM891.map IBM903.map IBM904.map IBM905.map IBM918.map \
IBM1004.map IBM1026.map IBM1047.map
CODEPAGE = \
CP737.map CP775.map CP1125.map\
CP1250.map CP1251.map CP1252.map CP1253.map CP1254.map \
CP1255.map CP1256.map CP1257.map CP1258.map \
CP10007.map \
CP720.map CP858.map
CJK = GB2312.map GBK.map GB180302.map GB180304.map \
BIG5.map BIG5-HKSCS.map\
CNS-1.map CNS-2.map CNS-3.map CNS-4.map CNS-5.map CNS-6.map CNS-7.map \
CNS-F.map \
JISX0201.map JISX0208.map JISX0212.map JISX2131.map JISX2132.map \
JISC6226.map CP932-2BYTE.map JISX213A.map\
KSC5601.map KSC5636.map JOHAB.map
MISC = KOI-8.map KOI8-R.map KOI8-U.map KOI8-T.map ALTERNATIVNYJ.map \
MIK.map PTCP154.map \
TIS-620.map VISCII.map VSCII.map VSCII-2.map\
KA-PS.map KA-ACADEMY.map \
HP-ROMAN8.map NEXTSTEP.map MACINTOSH.map EBCDICUK.map EBCDICUS.map \
stdenc.map symbol.map \
CP949-2BYTE.map \
BIG5-1.map BIG5-2.map
# Emacs-mule charsets.
MULE = MULE-ethiopic.map MULE-ipa.map MULE-is13194.map \
MULE-sisheng.map MULE-tibetan.map \
MULE-lviscii.map MULE-uviscii.map
TRANS_TABLE = cp51932.el eucjp-ms.el
SED_SCRIPT = jisx2131-filter
all: ${CHARSETS} ${TRANS_TABLE}
AWK = gawk
# Rules for each charset
VSCII.map: ${GLIBC_CHARMAPS}/TCVN5712-1.gz mapconv compact.awk
# Generating $@...
@./mapconv $< '/^<.*[ ]\/x[0-9a-f].[ ]/' GLIBC-1 compact.awk > $@
VSCII-2.map: ${GLIBC_CHARMAPS}/TCVN5712-1.gz mapconv compact.awk
# Generating $@...
@./mapconv $< '/^<.*[ ]\/x[2-7a-f].[ ]/' GLIBC-1 compact.awk \
| sed 's/0x20-0x7F.*/0x00-0x7F 0x0000/' > $@
ALTERNATIVNYJ.map: IBM866.map
# Generating $@...
@echo "# Modified from IBM866.map according to the chart at" > $@
@echo "# http://www.cyrillic.com/ref/cyrillic/koi-8alt.html," >> $@
@echo "# with guesses for the Unicodes of the glyphs." >> $@
@sed -e '1 d' \
-e '/0xF2/ s/ .*/ 0x2019/' \
-e '/0xF3/ s/ .*/ 0x2018/' \
-e '/0xF4/ s/ .*/ 0x0301/' \
-e '/0xF5/ s/ .*/ 0x0300/' \
-e '/0xF6/ s/ .*/ 0x203A/' \
-e '/0xF7/ s/ .*/ 0x2039/' \
-e '/0xF8/ s/ .*/ 0x2191/' \
-e '/0xF9/ s/ .*/ 0x2193/' \
-e '/0xFA/ s/ .*/ 0x00B1/' \
-e '/0xFB/ s/ .*/ 0x00F7/' < $< >> $@
MIK.map: mapfiles/bulgarian-mik.txt mapconv compact.awk
# Generating $@...
@./mapconv $< '1,$$' CZYBORRA compact.awk > $@
PTCP154.map: mapfiles/PTCP154 mapconv compact.awk
# Generating $@...
@./mapconv $< '/^0x/' IANA compact.awk > $@
stdenc.map: mapfiles/stdenc.txt mapconv compact.awk
# Generating $@...
@./mapconv $< '/^[0-9A-Fa-f]/' UNICODE compact.awk > $@
symbol.map: mapfiles/symbol.txt mapconv compact.awk
# Generating $@...
@./mapconv $< '/^[0-9A-Fa-f]/' UNICODE compact.awk > $@
CP720.map: mapfiles/CP720.map
# Generating $@...
@cp $< $@
CP858.map: mapfiles/CP858.map
# Generating $@...
@cp $< $@
CP949-2BYTE.map: ${GLIBC_CHARMAPS}/CP949.gz mapconv compact.awk
# Generating $@...
@./mapconv $< '/^<.*[ ]\/x[89a-f]/' GLIBC-2 compact.awk > $@
GB2312.map: ${GLIBC_CHARMAPS}/GB2312.gz mapconv compact.awk
# Generating $@...
@./mapconv $< '/^<.*[ ]\/x[a-f]/' GLIBC-2-7 compact.awk > $@
GBK.map: ${GLIBC_CHARMAPS}/GBK.gz mapconv compact.awk
# Generating $@...
@./mapconv $< '/^<.*[ ]\/x[89a-f]/' GLIBC-2 compact.awk > $@
GB180302.map: ${GLIBC_CHARMAPS}/GB18030.gz mapconv gb180302.awk
# Generating $@...
@./mapconv $< '/^<.*[ ]\/x..\/x..[ ]/' GLIBC-2 gb180302.awk > $@
GB180304.map: GB180302.map gb180304.awk
# Generating $@...
@$(AWK) -f gb180304.awk < $< > $@
JISX0201.map: ${GLIBC_CHARMAPS}/JIS_X0201.gz mapconv compact.awk
# Generating $@...
@./mapconv $< '/^<.*[ ]\/x[0-9]/' GLIBC-1 compact.awk > $@
@echo "# Generated by hand" >> $@
@echo "0xA1-0xDF 0xFF61" >> $@
JISX0208.map: ${GLIBC_CHARMAPS}/EUC-JP.gz mapconv
# Generating $@...
@./mapconv $< '/^<.*[ ]\/x[a-f]/' GLIBC-2-7 \
| sed 's/0x2015/0x2014/' > $@
JISX0212.map: ${GLIBC_CHARMAPS}/EUC-JP.gz mapconv compact.awk
# Generating $@...
@./mapconv $< '/^<.*[ ]\/x8f/ s,/x8f,,' GLIBC-2-7 compact.awk > $@
jisx2131-filter: mapfiles/JISX213A.map
@sed -n -e '/^#/d' -e 's,.*0x\([0-9A-Z]*\)$$,/0x0*\1$$/d,p' < $< > $@
JISX2131.map: ${GLIBC_CHARMAPS}/EUC-JISX0213.gz mapconv jisx2131-filter
# Generating $@...
@./mapconv $< '/^<.*[ ]\/x[a-f]/' GLIBC-2-7 \
| sed -f jisx2131-filter \
| sed -e 's/0x2015/0x2014/' -e 's/0x2299/0x29BF/' > $@
JISX2132.map: ${GLIBC_CHARMAPS}/EUC-JISX0213.gz mapconv
# Generating $@...
@./mapconv $< '/^<.*[ ]\/x8f/ s,/x8f,,' GLIBC-2-7 > $@
JISX213A.map: mapfiles/JISX213A.map
# Generating $@
@cp $< $@
CP932-2BYTE.map: mapfiles/CP932.TXT mapconv cp932.awk
# Generating $@...
@./mapconv $< '/^0x[89A-F][0-9A-F][0-9A-F]/' UNICODE2 cp932.awk > $@
cp51932.el: CP932-2BYTE.map cp51932.awk
@$(AWK) -f cp51932.awk < CP932-2BYTE.map > $@
eucjp-ms.el: ${GLIBC_CHARMAPS}/EUC-JP-MS.gz eucjp-ms.awk
@zcat $< | $(AWK) -f eucjp-ms.awk > $@
JISC6226.map: mapfiles/Uni2JIS mapconv kuten.awk
# Generating $@...
# As Uni2JIS doesn't contain mappings of characters added to Unicode
# recently, we add them manually here (including one correction for
# U+005C vs U+FF3C). These changes are based on bogytech's blog at
# http://bogytech.blogspot.jp/search/label/emacs.
@./mapconv $< '/^[^#].*0-/' YASUOKA kuten.awk \
| sed -e '/0x2140/s/005C/FF3C/' \
-e '$$ a 0x3442 0x3D4E' \
-e '$$ a 0x374E 0x25874' \
-e '$$ a 0x3764 0x28EF6' \
-e '$$ a 0x513D 0x2F80F' \
-e '$$ a 0x7045 0x9724' > $@
KSC5601.map: ${GLIBC_CHARMAPS}/EUC-KR.gz mapconv compact.awk
# Generating $@...
@./mapconv $< '/^<.*[ ]\/x[a-f]/' GLIBC-2-7 compact.awk > $@
BIG5.map: ${GLIBC_CHARMAPS}/BIG5.gz mapconv compact.awk
# Generating $@...
@./mapconv $< '/^<.*[ ]\/x[a-f]/' GLIBC-2 > $@
BIG5-1.map: BIG5.map mapconv big5.awk
# Generating $@...
@echo "# Generated from $<" > $@
@sed -n -e '/0xa140/,/0xc8fe/p' < $< | gawk -f big5.awk >> $@
BIG5-2.map: BIG5.map mapconv big5.awk
# Generating $@...
@echo "# Generated from $<" > $@
@sed -n -e '/0xc940/,$$ p' < $< | gawk -f big5.awk >> $@
BIG5-HKSCS.map: ${GLIBC_CHARMAPS}/BIG5-HKSCS.gz mapconv compact.awk
# Generating $@...
@./mapconv $< '/^<.*[ ]\/x[89a-f].\//' GLIBC-2 compact.awk > $@
JOHAB.map: ${GLIBC_CHARMAPS}/JOHAB.gz mapconv compact.awk
# Generating $@...
@./mapconv $< '/^<.*[ ]\/x[89a-f]/' GLIBC-2 compact.awk > $@
CNS-1.map: ${GLIBC_CHARMAPS}/EUC-TW.gz mapconv compact.awk
# Generating $@...
@./mapconv $< '/^<.*[ ]\/x[a-f]/' GLIBC-2-7 compact.awk > $@
# CNS-1.map: mapfiles/cns2ucsdkw.txt mapconv compact.awk
# # Generating $@...
# @./mapconv $< '/^C1/' KANJI-DATABASE compact.awk > $@
CNS-2.map: mapfiles/cns2ucsdkw.txt mapconv compact.awk
# Generating $@...
@./mapconv $< '/^C2/' KANJI-DATABASE compact.awk > $@
CNS-3.map: mapfiles/cns2ucsdkw.txt mapconv compact.awk
# Generating $@...
@./mapconv $< '/^C3/' KANJI-DATABASE compact.awk > $@
CNS-4.map: mapfiles/cns2ucsdkw.txt mapconv compact.awk
# Generating $@...
@./mapconv $< '/^C4/' KANJI-DATABASE compact.awk > $@
CNS-5.map: mapfiles/cns2ucsdkw.txt mapconv compact.awk
# Generating $@...
@./mapconv $< '/^C5/' KANJI-DATABASE compact.awk > $@
CNS-6.map: mapfiles/cns2ucsdkw.txt mapconv compact.awk
# Generating $@...
@./mapconv $< '/^C6/' KANJI-DATABASE compact.awk > $@
CNS-7.map: mapfiles/cns2ucsdkw.txt mapconv compact.awk
# Generating $@...
@./mapconv $< '/^C7/' KANJI-DATABASE compact.awk > $@
CNS-F.map: ${GLIBC_CHARMAPS}/EUC-TW.gz mapconv compact.awk
# Generating $@...
@./mapconv $< '/^<.*\/x8e\/xaf/ s,/x8e/xaf,,' GLIBC-2-7 compact.awk > $@
# General target to produce map files for mule charsets.
MULE-%.map: mapfiles/MULE-%.map
# Generating $@...
@cp $< $@
# General target to produce map files for ISO-8859, GEORGIAN, and
# EBCDIC charsets. We can not use the original file name because of
# file name limit on DOS. "KA" is ISO 639 language code for Georgian.
8859-%.map: ${GLIBC_CHARMAPS}/ISO-8859-%.gz mapconv compact.awk
# Generating $@...
@./mapconv $< '/^<.*[ ]\/x/' GLIBC-1 compact.awk > $@
KA-%.map: ${GLIBC_CHARMAPS}/GEORGIAN-%.gz mapconv compact.awk
# Generating $@...
@./mapconv $< '/^<.*[ ]\/x/' GLIBC-1 compact.awk > $@
EBCDIC%.map: ${GLIBC_CHARMAPS}/EBCDIC-%.gz mapconv compact.awk
# Generating $@...
@./mapconv $< '/^<.*[ ]\/x/' GLIBC-1 compact.awk > $@
# General target to produce map files for single-byte charsets.
%.map: ${GLIBC_CHARMAPS}/%.gz mapconv compact.awk
# Generating $@...
@./mapconv $< '/^<.*[ ]\/x/' GLIBC-1 compact.awk > $@
install:
@for f in ${CHARSETS}; do \
if test -r $$f; then \
if ! cmp -s $$f ../../etc/charsets/$$f; then \
echo updating $$f; \
cp $$f ../../etc/charsets; \
fi; \
fi; \
done
@for f in ${TRANS_TABLE}; do \
if test -r $$f; then \
if ! cmp -s $$f ../../lisp/international/$$f; then \
echo updating $$f; \
cp $$f ../../lisp/international; \
fi; \
fi; \
done
# Clear files that are automatically generated.
clean:
rm -f ${CHARSETS} ${TRANS_TABLE} ${SED_SCRIPT}

335
admin/charsets/Makefile.in Normal file
View file

@ -0,0 +1,335 @@
### @configure_input@
# Copyright (C) 2015 Free Software Foundation, Inc.
# Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
# National Institute of Advanced Industrial Science and Technology (AIST)
# Registration Number H13PRO009
#
# This file is part of GNU Emacs.
# GNU Emacs is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
# GNU Emacs is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
### Commentary:
# Generate charset maps in etc/charsets.
# If your system doesn't have the directory /usr/share/i18n/charmaps,
# get the source of the latest glibc, gzip all the charmap files in
# the directory "localedate/charmaps", and set the variable
# GLIBC_CHARMAPS to that directory.
SHELL = @SHELL@
AWK = @AWK@
srcdir = @srcdir@
top_srcdir = @top_srcdir@
charsetdir = ${top_srcdir}/etc/charsets
lispintdir = ${top_srcdir}/lisp/international
mapfiledir = ${srcdir}/mapfiles
GLIBC_CHARMAPS=/usr/share/i18n/charmaps
AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
AM_V_GEN = $(am__v_GEN_@AM_V@)
am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
am__v_GEN_0 = @echo " GEN " $@;
am__v_GEN_1 =
AM_V_at = $(am__v_at_@AM_V@)
am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
am__v_at_0 = @
am__v_at_1 =
# Note: We can not prepend "ISO-" to these map files because of file
# name limits on DOS.
ISO8859 = \
8859-2.map 8859-3.map 8859-4.map 8859-5.map 8859-6.map 8859-7.map \
8859-8.map 8859-9.map 8859-10.map 8859-11.map 8859-13.map 8859-14.map \
8859-15.map 8859-16.map
IBM = \
IBM037.map IBM038.map \
IBM256.map IBM273.map IBM274.map IBM275.map IBM277.map IBM278.map \
IBM280.map IBM281.map IBM284.map IBM285.map IBM290.map IBM297.map \
IBM420.map IBM423.map IBM424.map IBM437.map IBM500.map IBM850.map \
IBM851.map IBM852.map IBM855.map IBM856.map IBM857.map IBM860.map \
IBM861.map IBM862.map IBM863.map IBM864.map IBM865.map IBM866.map \
IBM868.map IBM869.map IBM870.map IBM871.map IBM874.map IBM875.map \
IBM880.map IBM891.map IBM903.map IBM904.map IBM905.map IBM918.map \
IBM1004.map IBM1026.map IBM1047.map
CODEPAGE = \
CP737.map CP775.map CP1125.map\
CP1250.map CP1251.map CP1252.map CP1253.map CP1254.map \
CP1255.map CP1256.map CP1257.map CP1258.map \
CP10007.map \
CP720.map CP858.map
CJK = GB2312.map GBK.map GB180302.map GB180304.map \
BIG5.map BIG5-HKSCS.map\
CNS-1.map CNS-2.map CNS-3.map CNS-4.map CNS-5.map CNS-6.map CNS-7.map \
CNS-F.map \
JISX0201.map JISX0208.map JISX0212.map JISX2131.map JISX2132.map \
JISC6226.map CP932-2BYTE.map JISX213A.map\
KSC5601.map KSC5636.map JOHAB.map
MISC = KOI-8.map KOI8-R.map KOI8-U.map KOI8-T.map ALTERNATIVNYJ.map \
MIK.map PTCP154.map \
TIS-620.map VISCII.map VSCII.map VSCII-2.map\
KA-PS.map KA-ACADEMY.map \
HP-ROMAN8.map NEXTSTEP.map MACINTOSH.map EBCDICUK.map EBCDICUS.map \
stdenc.map symbol.map \
CP949-2BYTE.map \
BIG5-1.map BIG5-2.map
# Emacs-mule charsets.
MULE = MULE-ethiopic.map MULE-ipa.map MULE-is13194.map \
MULE-sisheng.map MULE-tibetan.map \
MULE-lviscii.map MULE-uviscii.map
SED_SCRIPT = jisx2131-filter
TRANS_TABLE = cp51932.el eucjp-ms.el
TRANS_TABLE := $(addprefix ${lispintdir}/,${TRANS_TABLE})
CHARSETS = ${ISO8859} ${IBM} ${CODEPAGE} ${CJK} ${MISC} ${MULE}
CHARSETS := $(addprefix ${charsetdir}/,${CHARSETS})
## Those charsets whose source is not in GLIBC_CHARMAPS.
LOCAL = MIK.map PTCP154.map stdenc.map symbol.map CP720.map CP858.map \
JISX213A.map CP932-2BYTE.map JISC6226.map \
CNS-2.map CNS-3.map CNS-4.map CNS-5.map CNS-6.map CNS-7.map \
${MULE}
LOCAL := $(addprefix ${charsetdir}/,${LOCAL})
.PHONY: all local
all: ${CHARSETS} ${TRANS_TABLE}
local: ${LOCAL} ${lispintdir}/cp51932.el
## Rules for each charset.
mapconv = ${srcdir}/mapconv
run_mapconv = AWK=${AWK} ${srcdir}/mapconv
big5 = ${srcdir}/big5.awk
compact = ${srcdir}/compact.awk
cp51932 = ${srcdir}/cp51932.awk
cp932 = ${srcdir}/cp932.awk
eucjp_ms = ${srcdir}/eucjp-ms.awk
gb180302 = ${srcdir}/gb180302.awk
gb180304 = ${srcdir}/gb180304.awk
kuten = ${srcdir}/kuten.awk
## Short aliases, eg VSCII.map = ${charsetdir}/VSCII.map
define map_template
.PHONY: $(notdir ${1})
$(notdir ${1}): ${1}
endef
$(foreach mfile,${CHARSETS} ${TRANS_TABLE},$(eval $(call map_template,$(mfile))))
${charsetdir}/VSCII.map: ${GLIBC_CHARMAPS}/TCVN5712-1.gz ${mapconv} ${compact}
${AM_V_GEN}${run_mapconv} $< '/^<.*[ ]\/x[0-9a-f].[ ]/' GLIBC-1 ${compact} > $@
${charsetdir}/VSCII-2.map: ${GLIBC_CHARMAPS}/TCVN5712-1.gz ${mapconv} ${compact}
${AM_V_GEN}${run_mapconv} $< '/^<.*[ ]\/x[2-7a-f].[ ]/' GLIBC-1 ${compact} \
| sed 's/0x20-0x7F.*/0x00-0x7F 0x0000/' > $@
${charsetdir}/ALTERNATIVNYJ.map: ${charsetdir}/IBM866.map
${AM_V_GEN}(echo "# Modified from $(notdir $<) according to the chart at" && \
echo "# http://www.cyrillic.com/ref/cyrillic/koi-8alt.html," && \
echo "# with guesses for the Unicodes of the glyphs." && \
sed -e '1 d' \
-e '/0xF2/ s/ .*/ 0x2019/' \
-e '/0xF3/ s/ .*/ 0x2018/' \
-e '/0xF4/ s/ .*/ 0x0301/' \
-e '/0xF5/ s/ .*/ 0x0300/' \
-e '/0xF6/ s/ .*/ 0x203A/' \
-e '/0xF7/ s/ .*/ 0x2039/' \
-e '/0xF8/ s/ .*/ 0x2191/' \
-e '/0xF9/ s/ .*/ 0x2193/' \
-e '/0xFA/ s/ .*/ 0x00B1/' \
-e '/0xFB/ s/ .*/ 0x00F7/' < $< ) > $@
${charsetdir}/MIK.map: ${mapfiledir}/bulgarian-mik.txt ${mapconv} ${compact}
${AM_V_GEN}${run_mapconv} $< '1,$$' CZYBORRA ${compact} > $@
${charsetdir}/PTCP154.map: ${mapfiledir}/PTCP154 ${mapconv} ${compact}
${AM_V_GEN}${run_mapconv} $< '/^0x/' IANA ${compact} > $@
${charsetdir}/stdenc.map: ${mapfiledir}/stdenc.txt ${mapconv} ${compact}
${AM_V_GEN}${run_mapconv} $< '/^[0-9A-Fa-f]/' UNICODE ${compact} > $@
${charsetdir}/symbol.map: ${mapfiledir}/symbol.txt ${mapconv} ${compact}
${AM_V_GEN}${run_mapconv} $< '/^[0-9A-Fa-f]/' UNICODE ${compact} > $@
${charsetdir}/CP720.map: ${mapfiledir}/CP720.map
${AM_V_GEN}cp $< $@
${charsetdir}/CP858.map: ${mapfiledir}/CP858.map
${AM_V_GEN}cp $< $@
${charsetdir}/CP949-2BYTE.map: ${GLIBC_CHARMAPS}/CP949.gz ${mapconv} ${compact}
${AM_V_GEN}${run_mapconv} $< '/^<.*[ ]\/x[89a-f]/' GLIBC-2 ${compact} > $@
${charsetdir}/GB2312.map: ${GLIBC_CHARMAPS}/GB2312.gz ${mapconv} ${compact}
${AM_V_GEN}${run_mapconv} $< '/^<.*[ ]\/x[a-f]/' GLIBC-2-7 ${compact} > $@
${charsetdir}/GBK.map: ${GLIBC_CHARMAPS}/GBK.gz ${mapconv} ${compact}
${AM_V_GEN}${run_mapconv} $< '/^<.*[ ]\/x[89a-f]/' GLIBC-2 ${compact} > $@
${charsetdir}/GB180302.map: ${GLIBC_CHARMAPS}/GB18030.gz ${mapconv} ${gb180302}
${AM_V_GEN}${run_mapconv} $< '/^<.*[ ]\/x..\/x..[ ]/' GLIBC-2 ${gb180302} > $@
${charsetdir}/GB180304.map: ${charsetdir}/GB180302.map ${gb180304}
${AM_V_GEN}$(AWK) -f ${gb180304} < $< > $@
${charsetdir}/JISX0201.map: ${GLIBC_CHARMAPS}/JIS_X0201.gz ${mapconv} ${compact}
${AM_V_GEN}(${mapconv} $< '/^<.*[ ]\/x[0-9]/' GLIBC-1 ${compact} && \
echo "# Generated by hand" && \
echo "0xA1-0xDF 0xFF61" ) > $@
${charsetdir}/JISX0208.map: ${GLIBC_CHARMAPS}/EUC-JP.gz ${mapconv}
${AM_V_GEN}${run_mapconv} $< '/^<.*[ ]\/x[a-f]/' GLIBC-2-7 \
| sed 's/0x2015/0x2014/' > $@
${charsetdir}/JISX0212.map: ${GLIBC_CHARMAPS}/EUC-JP.gz ${mapconv} ${compact}
${AM_V_GEN}${run_mapconv} $< '/^<.*[ ]\/x8f/ s,/x8f,,' GLIBC-2-7 ${compact} > $@
jisx2131-filter: ${mapfiledir}/JISX213A.map
${AM_V_at}sed -n -e '/^#/d' -e 's,.*0x\([0-9A-Z]*\)$$,/0x0*\1$$/d,p' < $< > $@
${charsetdir}/JISX2131.map: ${GLIBC_CHARMAPS}/EUC-JISX0213.gz ${mapconv} jisx2131-filter
${AM_V_GEN}${run_mapconv} $< '/^<.*[ ]\/x[a-f]/' GLIBC-2-7 \
| sed -f jisx2131-filter \
| sed -e 's/0x2015/0x2014/' -e 's/0x2299/0x29BF/' > $@
${charsetdir}/JISX2132.map: ${GLIBC_CHARMAPS}/EUC-JISX0213.gz ${mapconv}
${AM_V_GEN}${run_mapconv} $< '/^<.*[ ]\/x8f/ s,/x8f,,' GLIBC-2-7 > $@
${charsetdir}/JISX213A.map: ${mapfiledir}/JISX213A.map
${AM_V_GEN}cp $< $@
${charsetdir}/CP932-2BYTE.map: ${mapfiledir}/CP932.TXT ${mapconv} ${cp932}
${AM_V_GEN}${run_mapconv} $< '/^0x[89A-F][0-9A-F][0-9A-F]/' UNICODE2 ${cp932} > $@
${lispintdir}/cp51932.el: ${charsetdir}/CP932-2BYTE.map ${cp51932}
${AM_V_GEN}$(AWK) -f ${cp51932} < $< > $@
${lispintdir}/eucjp-ms.el: ${GLIBC_CHARMAPS}/EUC-JP-MS.gz ${eucjp_ms}
${AM_V_GEN}gunzip -c $< | $(AWK) -f ${eucjp_ms} > $@
# As Uni2JIS doesn't contain mappings of characters added to Unicode
# recently, we add them manually here (including one correction for
# U+005C vs U+FF3C). These changes are based on bogytech's blog at
# http://bogytech.blogspot.jp/search/label/emacs.
${charsetdir}/JISC6226.map: ${mapfiledir}/Uni2JIS ${mapconv} ${kuten}
${AM_V_GEN}(${run_mapconv} $< '/^[^#].*0-/' YASUOKA ${kuten} \
| sed -e '/0x2140/s/005C/FF3C/' && \
echo '0x3442 0x3D4E' && echo '0x374E 0x25874' && \
echo '0x3764 0x28EF6' && echo '0x513D 0x2F80F' && \
echo '0x7045 0x9724' ) > $@
${charsetdir}/KSC5601.map: ${GLIBC_CHARMAPS}/EUC-KR.gz ${mapconv} ${compact}
${AM_V_GEN}${run_mapconv} $< '/^<.*[ ]\/x[a-f]/' GLIBC-2-7 ${compact} > $@
${charsetdir}/BIG5.map: ${GLIBC_CHARMAPS}/BIG5.gz ${mapconv} ${compact}
${AM_V_GEN}${run_mapconv} $< '/^<.*[ ]\/x[a-f]/' GLIBC-2 > $@
${charsetdir}/BIG5-1.map: ${charsetdir}/BIG5.map ${mapconv} ${big5}
${AM_V_GEN}(echo "# Generated from $(notdir $<)" && \
sed -n -e '/0xa140/,/0xc8fe/p' < $< | $(AWK) -f ${big5} ) > $@
${charsetdir}/BIG5-2.map: ${charsetdir}/BIG5.map ${mapconv} ${big5}
${AM_V_GEN}(echo "# Generated from $(notdir $<)" && \
sed -n -e '/0xc940/,$$ p' < $< | $(AWK) -f ${big5} ) > $@
${charsetdir}/BIG5-HKSCS.map: ${GLIBC_CHARMAPS}/BIG5-HKSCS.gz ${mapconv} ${compact}
${AM_V_GEN}${run_mapconv} $< '/^<.*[ ]\/x[89a-f].\//' GLIBC-2 ${compact} > $@
${charsetdir}/JOHAB.map: ${GLIBC_CHARMAPS}/JOHAB.gz ${mapconv} ${compact}
${AM_V_GEN}${run_mapconv} $< '/^<.*[ ]\/x[89a-f]/' GLIBC-2 ${compact} > $@
${charsetdir}/CNS-1.map: ${GLIBC_CHARMAPS}/EUC-TW.gz ${mapconv} ${compact}
${AM_V_GEN}${run_mapconv} $< '/^<.*[ ]\/x[a-f]/' GLIBC-2-7 ${compact} > $@
# ${charsetdir}/CNS-1.map: ${mapfiledir}/cns2ucsdkw.txt ${mapconv} ${compact}
# ${AM_V_GEN}${run_mapconv} $< '/^C1/' KANJI-DATABASE ${compact} > $@
${charsetdir}/CNS-2.map: ${mapfiledir}/cns2ucsdkw.txt ${mapconv} ${compact}
${AM_V_GEN}${run_mapconv} $< '/^C2/' KANJI-DATABASE ${compact} > $@
${charsetdir}/CNS-3.map: ${mapfiledir}/cns2ucsdkw.txt ${mapconv} ${compact}
${AM_V_GEN}${run_mapconv} $< '/^C3/' KANJI-DATABASE ${compact} > $@
${charsetdir}/CNS-4.map: ${mapfiledir}/cns2ucsdkw.txt ${mapconv} ${compact}
${AM_V_GEN}${run_mapconv} $< '/^C4/' KANJI-DATABASE ${compact} > $@
${charsetdir}/CNS-5.map: ${mapfiledir}/cns2ucsdkw.txt ${mapconv} ${compact}
${AM_V_GEN}${run_mapconv} $< '/^C5/' KANJI-DATABASE ${compact} > $@
${charsetdir}/CNS-6.map: ${mapfiledir}/cns2ucsdkw.txt ${mapconv} ${compact}
${AM_V_GEN}${run_mapconv} $< '/^C6/' KANJI-DATABASE ${compact} > $@
${charsetdir}/CNS-7.map: ${mapfiledir}/cns2ucsdkw.txt ${mapconv} ${compact}
${AM_V_GEN}${run_mapconv} $< '/^C7/' KANJI-DATABASE ${compact} > $@
${charsetdir}/CNS-F.map: ${GLIBC_CHARMAPS}/EUC-TW.gz ${mapconv} ${compact}
${AM_V_GEN}${run_mapconv} $< '/^<.*\/x8e\/xaf/ s,/x8e/xaf,,' GLIBC-2-7 ${compact} > $@
# General target to produce map files for mule charsets.
${charsetdir}/MULE-%.map: ${mapfiledir}/MULE-%.map
${AM_V_GEN}cp $< $@
# General target to produce map files for ISO-8859, GEORGIAN, and
# EBCDIC charsets. We can not use the original file name because of
# file name limit on DOS. "KA" is ISO 639 language code for Georgian.
${charsetdir}/8859-%.map: ${GLIBC_CHARMAPS}/ISO-8859-%.gz ${mapconv} ${compact}
${AM_V_GEN}${run_mapconv} $< '/^<.*[ ]\/x/' GLIBC-1 ${compact} > $@
${charsetdir}/KA-%.map: ${GLIBC_CHARMAPS}/GEORGIAN-%.gz ${mapconv} ${compact}
${AM_V_GEN}${run_mapconv} $< '/^<.*[ ]\/x/' GLIBC-1 ${compact} > $@
${charsetdir}/EBCDIC%.map: ${GLIBC_CHARMAPS}/EBCDIC-%.gz ${mapconv} ${compact}
${AM_V_GEN}${run_mapconv} $< '/^<.*[ ]\/x/' GLIBC-1 ${compact} > $@
# General target to produce map files for single-byte charsets.
${charsetdir}/%.map: ${GLIBC_CHARMAPS}/%.gz ${mapconv} ${compact}
${AM_V_GEN}${run_mapconv} $< '/^<.*[ ]\/x/' GLIBC-1 ${compact} > $@
.PHONY: clean bootstrap-clean distclean maintainer-clean extraclean totalclean
clean:
rm -f ${SED_SCRIPT}
bootstrap-clean: clean
distclean: clean
rm -f Makefile
maintainer-clean: distclean
## Do not remove these files, even in a bootstrap. They rarely change.
extraclean:
rm -f ${LOCAL} ${TRANS_TABLE}
totalclean: extraclean
rm -f ${CHARSETS}

View file

@ -1,5 +1,7 @@
#!/bin/sh
# Copyright (C) 2015 Free Software Foundation, Inc.
# Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
# National Institute of Advanced Industrial Science and Technology (AIST)
# Registration Number H13PRO009
@ -33,8 +35,15 @@
# GLIBC-1 GLIBC-2 GLIBC-2-7 CZYBORRA IANA UNICODE UNICODE2 YASUOKA
# $4: awk script
FILE="admin/charsets/$1"
BASE=`basename $1 .gz`
## So that eg [A-F] as used by KANJI-DATABASE branch below works as expected.
## Otherwise with LANG=en_US.utf8, CNS-6.map was generated with a
## bogus entry. By experiment, LC_COLLATE=C was not enough.
export LC_ALL=C
BASE=`expr "$1" : '.*/\(.*\)' '|' "$1"` # basename
FILE="admin/charsets/mapfiles/$BASE"
BASE=`expr "$BASE" : '\(.*\)\.gz$' '|' "$BASE"` # remove any .gz suffix
AWK=${AWK:-awk}
case "$3" in
GLIBC*)
@ -69,7 +78,7 @@ fi
if [ -n "$4" ] ; then
if [ -f "$4" ] ; then
AWKPROG="gawk -f $4"
AWKPROG="$AWK -f $4"
else
echo "Awk program does not exist: $4"
exit 1
@ -81,20 +90,20 @@ fi
if [ "$3" = "GLIBC-1" ] ; then
# Source format is:
# <UYYYY> /xXX
zcat $1 | sed -n -e "$2 p" \
gunzip -c $1 | sed -n -e "${2}p" \
| sed -e 's,<U\([^>]*\)>[ ]*/x\(..\).*,0x\2 0x\1,' \
| sort | ${AWKPROG}
elif [ "$3" = "GLIBC-2" ] ; then
# Source format is:
# <UYYYY> /xXX/xZZ
zcat $1 | sed -n -e "$2 p" \
gunzip -c $1 | sed -n -e "${2}p" \
| sed -e 's,<U\([^>]*\)>[ ]*/x\(..\)/x\(..\).*,0x\2\3 0x\1,' \
| sort | ${AWKPROG}
elif [ "$3" = "GLIBC-2-7" ] ; then
# Source format is:
# <UYYYY> /xXX/xZZ
# We must drop MSBs of XX and ZZ
zcat $1 | sed -n -e "$2 p" \
gunzip -c $1 | sed -n -e "${2}p" \
| sed -e 's/xa/x2/g' -e 's/xb/x3/g' -e 's/xc/x4/g' \
-e 's/xd/x5/g' -e 's/xe/x6/g' -e 's/xf/x7/g' \
-e 's,<U\([^>]*\)>[ ]*/x\(..\)/x\(..\).*,0x\2\3 0x\1,' \
@ -102,13 +111,13 @@ elif [ "$3" = "GLIBC-2-7" ] ; then
elif [ "$3" = "CZYBORRA" ] ; then
# Source format is:
# =XX U+YYYY
sed -n -e "$2 p" < $1 \
sed -n -e "${2}p" < $1 \
| sed -e 's/=\(..\)[^U]*U+\([0-9A-F]*\).*/0x\1 0x\2/' \
| sort | ${AWKPROG}
elif [ "$3" = "IANA" ] ; then
# Source format is:
# 0xXX 0xYYYY
sed -n -e "$2 p" < $1 \
sed -n -e "${2}p" < $1 \
| sed -e 's/\(0x[0-9A-Fa-f]*\)[^0]*\(0x[0-9A-Fa-f]*\).*/\1 \2/' \
| sort | ${AWKPROG}
elif [ "$3" = "UNICODE" ] ; then
@ -116,25 +125,25 @@ elif [ "$3" = "UNICODE" ] ; then
# YYYY XX
# We perform reverse sort to prefer the first one in the
# duplicated mappings (e.g. 0x20->U+0020, 0x20->U+00A0).
sed -n -e "$2 p" < $1 \
sed -n -e "${2}p" < $1 \
| sed -e 's/\([0-9A-F]*\)[^0-9A-F]*\([0-9A-F]*\).*/0x\2 0x\1/' \
| sort -r
elif [ "$3" = "UNICODE2" ] ; then
# Source format is:
# 0xXXXX 0xYYYY # ...
sed -n -e "$2 p" < $1 \
sed -n -e "${2}p" < $1 \
| sed -e 's/\([0-9A-Fx]*\)[^0]*\([0-9A-Fx]*\).*/\1 \2/' \
| ${AWKPROG} | sort -n -k 4,4
elif [ "$3" = "YASUOKA" ] ; then
# Source format is:
# YYYY 0-XXXX (XXXX is a Kuten code)
sed -n -e "$2 p" < $1 \
sed -n -e "${2}p" < $1 \
| sed -e 's/\([0-9A-F]*\)[^0]*0-\([0-9]*\).*/0x\2 0x\1/' \
| sort | ${AWKPROG}
elif [ "$3" = "KANJI-DATABASE" ] ; then
# Source format is:
# C?-XXXX U+YYYYY .....
sed -n -e "$2 p" < $1 \
sed -n -e "${2}p" < $1 \
| sed -e 's/...\(....\) U+\([0-9A-F]*\).*/0x\1 0x\2/' \
| sort | ${AWKPROG}
else

View file

@ -288,4 +288,4 @@ e-mail: auskov&idc.kz
Intended usage:
COMMON
(record created 2002-09-27)
(record created 2002-09-27)

View file

@ -245,6 +245,25 @@ nontrivial changes to the build process.
lisp/leim/quail/ethiopic.el
lisp/leim/quail/tibetan.el
* binary files
These files contain binary data, and are not text files.
Some of the entries in this list are patterns, and stand for any
files with the listed extension.
*.gz
*.icns
*.ico
*.pbm
*.pdf
*.png
*.sig
etc/e/eterm-color
etc/package-keyring.gpg
msdos/emacs.pif
nextstep/GNUstep/Emacs.base/Resources/emacs.tiff
nt/icons/hand.cur
This file is part of GNU Emacs.

View file

@ -3,7 +3,7 @@ eval '(exit $?0)' && eval 'exec perl -wS "$0" ${1+"$@"}'
if 0;
# Convert git log output to ChangeLog format.
my $VERSION = '2015-05-08 06:05'; # UTC
my $VERSION = '2015-05-19 01:37'; # UTC
# The definition above must lie within the first 8 lines in order
# for the Emacs time-stamp write hook (at end) to update it.
# If you change this file with Emacs, please let the write hook
@ -74,6 +74,7 @@ OPTIONS:
the default is to convert all log entries.
--until=DATE convert only the logs older than DATE.
--ignore-matching=PAT ignore commit messages whose first lines match PAT.
--ignore-line=PAT ignore lines of commit messages that match PAT.
--format=FMT set format string for commit subject and body;
see 'man git-log' for the list of format metacharacters;
the default is '%s%n%b%n'
@ -228,6 +229,7 @@ sub git_dir_option($)
my $append_dot = 0;
my $cluster = 1;
my $ignore_matching;
my $ignore_line;
my $strip_tab = 0;
my $strip_cherry_pick = 0;
my $srcdir;
@ -242,6 +244,7 @@ sub git_dir_option($)
'append-dot' => \$append_dot,
'cluster!' => \$cluster,
'ignore-matching=s' => \$ignore_matching,
'ignore-line=s' => \$ignore_line,
'strip-tab' => \$strip_tab,
'strip-cherry-pick' => \$strip_cherry_pick,
'srcdir=s' => \$srcdir,
@ -349,6 +352,12 @@ sub git_dir_option($)
if (! (defined $ignore_matching
&& @line && $line[0] =~ /$ignore_matching/))
{
if (defined $ignore_line && @line)
{
@line = grep ! /$ignore_line/, @line;
while ($line[$#line] =~ /^\s*$/) { pop @line; }
}
# Record whether there are two or more paragraphs.
my $multi_paragraph = grep /^\s*$/, @line;

View file

@ -23,7 +23,7 @@ LC_ALL=C
export LC_ALL
# The newest revision that should not appear in the generated ChangeLog.
gen_origin=d2c7e14ac3bd2b517d35a86255c28d5b6d779451
gen_origin=f89080d18dd64e0c92c5f3d206182d65f23eafeb
force=
output=ChangeLog
nmax=2
@ -58,7 +58,7 @@ test -d .git || {
# Use Gnulib's packaged ChangeLog generator.
./build-aux/gitlog-to-changelog --ignore-matching='^; ' \
--format='%B' \
--ignore-line='^; ' --format='%B' \
"$gen_origin.." >"ChangeLog.tmp" || exit
if test -s "ChangeLog.tmp"; then

View file

@ -5271,7 +5271,8 @@ fi
dnl The admin/ directory used to be excluded from tarfiles.
if test -d $srcdir/admin; then
SUBDIR_MAKEFILES="$SUBDIR_MAKEFILES admin/unidata/Makefile admin/grammars/Makefile"
SUBDIR_MAKEFILES="$SUBDIR_MAKEFILES admin/charsets/Makefile admin/unidata/Makefile admin/grammars/Makefile"
AC_CONFIG_FILES([admin/charsets/Makefile])
AC_CONFIG_FILES([admin/unidata/Makefile])
AC_CONFIG_FILES([admin/grammars/Makefile])
fi dnl -d admin

View file

@ -3304,6 +3304,9 @@ fontset, whose short name is @samp{fontset-default}.
@var{character} may be a script name. In that case, use
@var{font-spec} for all character in the charsets.
@var{font-spec} may be a font-spec object created by the function
@code{font-spec} (@pxref{Low-Level Font}).
@var{font-spec} may be a cons; @code{(@var{family} . @var{registry})},
where @var{family} is a family name of a font (possibly including a
foundry name at the head), @var{registry} is a registry name of a font
@ -3311,6 +3314,12 @@ foundry name at the head), @var{registry} is a registry name of a font
@var{font-spec} may be a font name string.
@var{font-spec} may be @code{nil}, which explicitly specifies that
there's no font for the specified @var{character}. This is useful,
for example, to avoid expensive system-wide search for fonts for
characters that have no glyphs, like those from the Unicode Private
Use Area (PUA).
The optional argument @var{add}, if non-@code{nil}, specifies how to
add @var{font-spec} to the font specifications previously set. If it
is @code{prepend}, @var{font-spec} is prepended. If it is
@ -6614,7 +6623,8 @@ Display a box containing the Unicode codepoint of the character, in
hexadecimal notation.
@item an @acronym{ASCII} string
Display a box containing that string.
Display a box containing that string. The string should contain at
most 6 @acronym{ASCII} characters.
@item a cons cell @code{(@var{graphical} . @var{text})}
Display with @var{graphical} on graphical displays, and with
@ -6625,7 +6635,8 @@ must be one of the display methods described above.
@noindent
The @code{thin-space}, @code{empty-box}, @code{hex-code}, and
@acronym{ASCII} string display methods are drawn with the
@code{glyphless-char} face.
@code{glyphless-char} face. On text terminals, a box is emulated by
square brackets, @samp{[]}.
The char-table has one extra slot, which determines how to display any
character that cannot be displayed with any available font, or cannot

View file

@ -659,6 +659,16 @@ Some window managers ignore program-specified positions. If you want to
be sure the position you specify is not ignored, specify a
non-@code{nil} value for the @code{user-position} parameter as well.
If the window manager refuses to align a frame at the left or top screen
edge, combining position notation and @code{user-position} as in
@example
(modify-frame-parameters
nil '((user-position . t) (left . (+ -4))))
@end example
may help to override that.
@vindex top, a frame parameter
@item top
The screen position of the top (or bottom) edge, in pixels, with respect
@ -1624,7 +1634,8 @@ tooltip, it first runs the hook @code{delete-frame-functions} (each
function gets one argument, @var{frame}). By default, @var{frame} is
the selected frame.
A frame cannot be deleted if its minibuffer is used by other frames.
A frame cannot be deleted as long as its minibuffer serves as surrogate
minibuffer for another frame (@pxref{Minibuffers and Frames}).
Normally, you cannot delete a frame if all other frames are invisible,
but if @var{force} is non-@code{nil}, then you are allowed to do so.
@end deffn
@ -1700,12 +1711,18 @@ you can get it with @code{minibuffer-window} (@pxref{Definition of
minibuffer-window}).
@cindex frame without a minibuffer
However, you can also create a frame with no minibuffer. Such a frame
must use the minibuffer window of some other frame. When you create the
frame, you can explicitly specify the minibuffer window to use (in some
other frame). If you don't, then the minibuffer is found in the frame
which is the value of the variable @code{default-minibuffer-frame}. Its
value should be a frame that does have a minibuffer.
@cindex surrogate minibuffer frame
However, you can also create a frame without a minibuffer. Such a frame
must use the minibuffer window of some other frame. That other frame
will serve as @dfn{surrogate minibuffer frame} for this frame and cannot
be deleted via @code{delete-frame} (@pxref{Deleting Frames}) as long as
this frame is live.
When you create the frame, you can explicitly specify the minibuffer
window to use (in some other frame). If you don't, then the minibuffer
is found in the frame which is the value of the variable
@code{default-minibuffer-frame}. Its value should be a frame that does
have a minibuffer.
If you use a minibuffer-only frame, you might want that frame to raise
when you enter the minibuffer. If so, set the variable

View file

@ -540,8 +540,8 @@ property is used for bidirectional display.
@item old-name
Corresponds to the Unicode @code{Unicode_1_Name} property. The value
is a string. Unassigned codepoints, and characters that have no value
for this property, the value is @code{nil}.
is a string. For unassigned codepoints, and characters that have no
value for this property, the value is @code{nil}.
@item iso-10646-comment
Corresponds to the Unicode @code{ISO_Comment} property. The value is

View file

@ -350,10 +350,11 @@ would move to.
@deffn Command forward-line &optional count
@cindex beginning of line
This function moves point forward @var{count} lines, to the beginning of
the line. If @var{count} is negative, it moves point
@minus{}@var{count} lines backward, to the beginning of a line. If
@var{count} is zero, it moves point to the beginning of the current
line. If @var{count} is @code{nil}, that means 1.
the line following that. If @var{count} is negative, it moves point
@minus{}@var{count} lines backward, to the beginning of a line
preceding that. If @var{count} is zero, it moves point to the
beginning of the current line. If @var{count} is @code{nil}, that
means 1.
If @code{forward-line} encounters the beginning or end of the buffer (or
of the accessible portion) before finding that many lines, it sets point
@ -362,7 +363,11 @@ there. No error is signaled.
@code{forward-line} returns the difference between @var{count} and the
number of lines actually moved. If you attempt to move down five lines
from the beginning of a buffer that has only three lines, point stops at
the end of the last line, and the value will be 2.
the end of the last line, and the value will be 2. As an explicit
exception, if the last accessible line is non-empty, but has no
newline (e.g., if the buffer ends without a newline), the function
sets point to the end of that line, and the value returned by the
function counts that line as one line successfully moved.
In an interactive call, @var{count} is the numeric prefix argument.
@end deffn

View file

@ -2005,16 +2005,49 @@ list---both the global buffer list and the selected frame's buffer
list (@pxref{Buffer List}). However, this is not done if the
optional argument @var{norecord} is non-@code{nil}.
Sometimes, @code{switch-to-buffer} may be unable to display the buffer
in the selected window. This happens if the selected window is a
minibuffer window, or if the selected window is strongly dedicated to
its buffer (@pxref{Dedicated Windows}). In that case, the command
normally tries to display the buffer in some other window, by invoking
@code{pop-to-buffer} (see below). However, if the optional argument
@var{force-same-window} is non-@code{nil}, it signals an error
instead.
Sometimes, the selected window may not be suitable for displaying the
buffer. This happens if the selected window is a minibuffer window, or
if the selected window is strongly dedicated to its buffer
(@pxref{Dedicated Windows}). In such cases, the command normally tries
to display the buffer in some other window, by invoking
@code{pop-to-buffer} (see below).
If the optional argument @var{force-same-window} is non-@code{nil} and
the selected window is not suitable for displaying the buffer, this
function always signals an error when called non-interactively. In
interactive use, if the selected window is a minibuffer window, this
function will try to use some other window instead. If the selected
window is strongly dedicated to its buffer, the option
@code{switch-to-buffer-in-dedicated-window} described next can be used
to proceed.
@end deffn
@defopt switch-to-buffer-in-dedicated-window
This option, if non-@code{nil}, allows @code{switch-to-buffer} to
proceed when called interactively and the selected window is strongly
dedicated to its buffer.
The following values are respected:
@table @code
@item nil
Disallows switching and signals an error as in non-interactive use.
@item prompt
Prompts the user whether to allow switching.
@item pop
Invokes @code{pop-to-buffer} to proceed.
@item t
Marks the selected window as non-dedicated and proceeds.
@end table
When called non-interactively, @code{switch-to-buffer} always signals an
error when the selected window is dedicated to its buffer and
@var{force-same-window} is non-@code{nil}.
@end defopt
By default, @code{switch-to-buffer} shows the buffer at its position of
@code{point}. This behavior can be tuned using the following option.

View file

@ -753,6 +753,26 @@ If non, @code{nil}, this is a list of IRC message types to hide, e.g.:
@end example
@end defopt
@defopt erc-network-hide-list
If non, @code{nil}, this is a list of IRC networks and message types
to hide, e.g.:
@example
(setq erc-network-hide-list (("freenode" "JOIN" "PART" "QUIT")
("OFTC" "JOIN" "PART""))
@end example
@end defopt
@defopt erc-channel-hide-list
If non, @code{nil}, this is a list of IRC channels and message types
to hide, e.g.:
@example
(setq erc-channel-hide-list (("#erc" "JOIN" "PART" "QUIT")
("#emacs" "NICK"))
@end example
@end defopt
@defopt erc-lurker-hide-list
Like @code{erc-hide-list}, but only applies to messages sent by
lurkers. The function @code{erc-lurker-p} determines whether a given

View file

@ -165,7 +165,7 @@ buffers to allow certain parts of the text to be writable.
** A new function `directory-files-recursively' returns all matching
files (recursively) under a directory.
** The new `directory-name-p' can be used to check whether a file
** The new function `directory-name-p' can be used to check whether a file
name (as returned from, for instance, `file-name-all-completions' is
a directory file name. It returns non-nil if the last character in
the name is a forward slash.
@ -249,6 +249,13 @@ Unicode standards.
** The `save-place' variable is replaced by a `save-place-mode'.
** ERC
*** Hide message types by network or channel. `erc-hide-list' will
hide all messages of the specified type, where `erc-network-hide-list'
and `erc-channel-hide-list' will only hide the specified message types
for the respective specified targets.
** Midnight-mode
*** `midnight-mode' is a proper minor mode.
*** clean-buffer-*-regexps can now specify buffers via predicate functions.
@ -585,8 +592,8 @@ nil to disable this.
fitting for use in money calculations; factorial works with
non-integer inputs.
** HideIfDef mode now support full C/C++ expressions, argumented macro expansions
, interactive macro evaluation and automatic scanning of #defined symbols.
** HideIfDef mode now support full C/C++ expressions, argumented macro expansions,
interactive macro evaluation and automatic scanning of #defined symbols.
*** New custom variable `hide-ifdef-header-regexp' to define C/C++ header file
name patterns. Default case-insensitive .h, .hh, .hpp and .hxx.
@ -675,6 +682,20 @@ command line's password prompt.
*** The new built-in command `clear' can scroll window contents out of sight.
If provided with an optional non-nil argument, the scrollback contents will be cleared.
*** New buffer syntax '#<buffer-name>', which is equivalent to
'#<buffer buffer-name>'. This shorthand makes interacting with
buffers from eshell more convenient. Custom variable
`eshell-buffer-shorthand', which has been broken for a while, has been
removed.
*** By default, eshell "visual" program buffers (created by
`eshell-visual-commands' and similar custom vars) are no longer killed
when their processes die. This fixes issues with short-lived commands
and makes visual programs more useful in general. For example, if
"git log" is a visual command, it will always show the visual command
buffer, even if the "git log" process dies. For the old behavior,
make the new option `eshell-destroy-buffer-when-process-dies' non-nil.
** Browse-url
*** Support for the Conkeror web browser.
@ -720,6 +741,10 @@ a typographically-correct documents.
* Incompatible Lisp Changes in Emacs 25.1
** The optional `predicate' argument of `lisp-complete-symbol' no longer
has any effect. (This change was made in Emacs 24.4 but was not
advertised at the time.)
** `indirect-function' does not signal `void-function' any more.
This is mostly a bug-fix, since this change was missed back in 24.4 when
symbol-function was changed not to signal `void-function' any more.
@ -737,7 +762,7 @@ If you want the old behavior of calling the function in the buffer
from which the minibuffer was entered, call it with the new argument
`switch-buffer'.
** window-configurations no longer record the buffers's marks.
** window-configurations no longer record the buffers' marks.
** inhibit-modification-hooks now also inhibits lock-file checks, as well as
active region handling.
@ -942,6 +967,11 @@ fullwidth frames, the behavior may depend on the toolkit used.
windows without "fixing" it. It's supported by `fit-window-to-buffer',
`temp-buffer-resize-mode' and `display-buffer'.
+++
** New option `switch-to-buffer-in-dedicated-window' allows to customize
how `switch-to-buffer' proceeds interactively when the selected window
is strongly dedicated to its buffer.
** Tearoff menus and detachable toolbars for Gtk+ has been removed.
Those features have been deprecated in Gtk+ for a long time.

View file

@ -107,13 +107,13 @@ char *w32_getenv (char *);
/* Name used to invoke this program. */
const char *progname;
/* The second argument to main. */
/* The second argument to main. */
char **main_argv;
/* Nonzero means don't wait for a response from Emacs. --no-wait. */
int nowait = 0;
/* Nonzero means don't print messages for successful operations. --quiet. */
/* Nonzero means don't print messages for successful operations. --quiet. */
int quiet = 0;
/* Nonzero means args are expressions to be evaluated. --eval. */
@ -131,7 +131,7 @@ const char *alt_display = NULL;
/* The parent window ID, if we are opening a frame via XEmbed. */
char *parent_id = NULL;
/* Nonzero means open a new Emacs frame on the current terminal. */
/* Nonzero means open a new Emacs frame on the current terminal. */
int tty = 0;
/* If non-NULL, the name of an editor to fallback to if the server
@ -148,7 +148,7 @@ const char *server_file = NULL;
int emacs_pid = 0;
/* If non-NULL, a string that should form a frame parameter alist to
be used for the new frame */
be used for the new frame. */
const char *frame_parameters = NULL;
static _Noreturn void print_help_and_exit (void);

View file

@ -116,6 +116,7 @@ char pot_etags_version[] = "@(#) pot revision number is 17.38.1.4";
# undef HAVE_NTGUI
# undef DOS_NT
# define DOS_NT
# define O_CLOEXEC O_NOINHERIT
#endif /* WINDOWSNT */
#include <unistd.h>
@ -125,6 +126,7 @@ char pot_etags_version[] = "@(#) pot revision number is 17.38.1.4";
#include <sysstdio.h>
#include <ctype.h>
#include <errno.h>
#include <fcntl.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <binary-io.h>
@ -336,6 +338,7 @@ static char *absolute_filename (char *, char *);
static char *absolute_dirname (char *, char *);
static bool filename_is_absolute (char *f);
static void canonicalize_filename (char *);
static char *etags_mktmp (void);
static void linebuffer_init (linebuffer *);
static void linebuffer_setlen (linebuffer *, int);
static void *xmalloc (size_t);
@ -1437,7 +1440,7 @@ process_file_name (char *file, language *lang)
fdesc *fdp;
compressor *compr;
char *compressed_name, *uncompressed_name;
char *ext, *real_name;
char *ext, *real_name, *tmp_name;
int retval;
canonicalize_filename (file);
@ -1522,9 +1525,20 @@ process_file_name (char *file, language *lang)
}
if (real_name == compressed_name)
{
char *cmd = concat (compr->command, " ", real_name);
inf = popen (cmd, "r" FOPEN_BINARY);
free (cmd);
tmp_name = etags_mktmp ();
if (!tmp_name)
inf = NULL;
else
{
char *cmd1 = concat (compr->command, " ", real_name);
char *cmd = concat (cmd1, " > ", tmp_name);
free (cmd1);
if (system (cmd) == -1)
inf = NULL;
else
inf = fopen (tmp_name, "r" FOPEN_BINARY);
free (cmd);
}
}
else
inf = fopen (real_name, "r" FOPEN_BINARY);
@ -1536,10 +1550,12 @@ process_file_name (char *file, language *lang)
process_file (inf, uncompressed_name, lang);
retval = fclose (inf);
if (real_name == compressed_name)
retval = pclose (inf);
else
retval = fclose (inf);
{
remove (tmp_name);
free (tmp_name);
}
if (retval < 0)
pfatal (file);
@ -1707,9 +1723,6 @@ find_entries (FILE *inf)
}
}
/* We rewind here, even if inf may be a pipe. We fail if the
length of the first line is longer than the pipe block size,
which is unlikely. */
rewind (inf);
/* Else try to guess the language given the case insensitive file name. */
@ -1734,8 +1747,6 @@ find_entries (FILE *inf)
if (old_last_node == last_node)
/* No Fortran entries found. Try C. */
{
/* We do not tag if rewind fails.
Only the file name will be recorded in the tags file. */
rewind (inf);
curfdp->lang = get_language_from_langname (cplusplus ? "c++" : "c");
find_entries (inf);
@ -5015,8 +5026,6 @@ TEX_mode (FILE *inf)
TEX_opgrp = '<';
TEX_clgrp = '>';
}
/* If the input file is compressed, inf is a pipe, and rewind may fail.
No attempt is made to correct the situation. */
rewind (inf);
}
@ -6344,6 +6353,51 @@ etags_getcwd (void)
return path;
}
/* Return a newly allocated string containing a name of a temporary file. */
static char *
etags_mktmp (void)
{
const char *tmpdir = getenv ("TMPDIR");
const char *slash = "/";
#if MSDOS || defined (DOS_NT)
if (!tmpdir)
tmpdir = getenv ("TEMP");
if (!tmpdir)
tmpdir = getenv ("TMP");
if (!tmpdir)
tmpdir = ".";
if (tmpdir[strlen (tmpdir) - 1] == '/'
|| tmpdir[strlen (tmpdir) - 1] == '\\')
slash = "";
#else
if (!tmpdir)
tmpdir = "/tmp";
if (tmpdir[strlen (tmpdir) - 1] == '/')
slash = "";
#endif
char *templt = concat (tmpdir, slash, "etXXXXXX");
int fd = mkostemp (templt, O_CLOEXEC);
if (fd < 0)
{
free (templt);
templt = NULL;
}
else
close (fd);
#if defined (DOS_NT)
/* The file name will be used in shell redirection, so it needs to have
DOS-style backslashes, or else the Windows shell will barf. */
char *p;
for (p = templt; *p; p++)
if (*p == '/')
*p = '\\';
#endif
return templt;
}
/* Return a newly allocated string containing the file name of FILE
relative to the absolute directory DIR (which should end with a slash). */
static char *
@ -6484,7 +6538,6 @@ static void
canonicalize_filename (register char *fn)
{
register char* cp;
char sep = '/';
#ifdef DOS_NT
/* Canonicalize drive letter case. */
@ -6492,19 +6545,33 @@ canonicalize_filename (register char *fn)
if (fn[0] != '\0' && fn[1] == ':' && ISUPPER (fn[0]))
fn[0] = lowcase (fn[0]);
sep = '\\';
#endif
/* Collapse multiple separators into a single slash. */
/* Collapse multiple forward- and back-slashes into a single forward
slash. */
for (cp = fn; *cp != '\0'; cp++, fn++)
if (*cp == sep)
if (*cp == '/' || *cp == '\\')
{
*fn = '/';
while (cp[1] == sep)
while (cp[1] == '/' || cp[1] == '\\')
cp++;
}
else
*fn = *cp;
#else /* !DOS_NT */
/* Collapse multiple slashes into a single slash. */
for (cp = fn; *cp != '\0'; cp++, fn++)
if (*cp == '/')
{
*fn = '/';
while (cp[1] == '/')
cp++;
}
else
*fn = *cp;
#endif /* !DOS_NT */
*fn = '\0';
}

View file

@ -5030,8 +5030,7 @@
* mouse.el (mouse-yank-primarY): Look for frame-type w32, not
system-type windows-nt.
* server.el (server-create-window-system-frame): Look for window
type.
* server.el (server-create-window-system-frame): Look for window type.
(server-proces-filter): Only force a window system when windows-nt
_and_ w32. Explain why.

View file

@ -348,7 +348,7 @@ to `allout-body-modification-handler', and is always reset by
images with lists containing the name of the icon directory (as
found on the `load-path') and the icon name.
Set this variable to `nil' to empty the cache, and have it replenish from the
Set this variable to nil to empty the cache, and have it replenish from the
filesystem.")
;;;_ = allout-widgets-unset-inhibit-read-only
(defvar allout-widgets-unset-inhibit-read-only nil

View file

@ -322,7 +322,7 @@ With value nil, inhibit any automatic allout-mode activation."
"Default allout outline layout specification.
This setting specifies the outline exposure to use when
`allout-layout' has the local value `t'. This docstring describes the
`allout-layout' has the local value t. This docstring describes the
layout specifications.
A list value specifies a default layout for the current buffer,
@ -933,7 +933,7 @@ followed by the equivalent of `(allout-expose-topic 0 : -1 -1 0)'.
\(This is the layout used for the allout.el source file.)
`allout-default-layout' describes the specification format.
`allout-layout' can additionally have the value `t', in which
`allout-layout' can additionally have the value t, in which
case the value of `allout-default-layout' is used.")
(make-variable-buffer-local 'allout-layout)
;;;###autoload

View file

@ -1,4 +1,4 @@
;;; autorevert.el --- revert buffers when files on disk change
;;; autorevert.el --- revert buffers when files on disk change -*- lexical-binding:t -*-
;; Copyright (C) 1997-1999, 2001-2015 Free Software Foundation, Inc.
@ -95,7 +95,7 @@
;; mode. For example, the following line will activate Auto-Revert
;; Mode in all C mode buffers:
;;
;; (add-hook 'c-mode-hook 'turn-on-auto-revert-mode)
;; (add-hook 'c-mode-hook #'turn-on-auto-revert-mode)
;;; Code:
@ -260,10 +260,9 @@ buffers. CPU usage depends on the version control system."
:type 'boolean
:version "22.1")
(defvar global-auto-revert-ignore-buffer nil
(defvar-local global-auto-revert-ignore-buffer nil
"When non-nil, Global Auto-Revert Mode will not revert this buffer.
This variable becomes buffer local when set in any fashion.")
(make-variable-buffer-local 'global-auto-revert-ignore-buffer)
(defcustom auto-revert-remote-files nil
"If non-nil remote files are also reverted."
@ -315,9 +314,9 @@ the list of old buffers.")
"Position of last known end of file.")
(add-hook 'find-file-hook
(lambda ()
(set (make-local-variable 'auto-revert-tail-pos)
(nth 7 (file-attributes buffer-file-name)))))
(lambda ()
(setq-local auto-revert-tail-pos
(nth 7 (file-attributes buffer-file-name)))))
(defvar auto-revert-notify-watch-descriptor-hash-list
(make-hash-table :test 'equal)
@ -326,15 +325,13 @@ Hash key is a watch descriptor, hash value is a list of buffers
which are related to files being watched and carrying the same
default directory.")
(defvar auto-revert-notify-watch-descriptor nil
(defvar-local auto-revert-notify-watch-descriptor nil
"The file watch descriptor active for the current buffer.")
(make-variable-buffer-local 'auto-revert-notify-watch-descriptor)
(put 'auto-revert-notify-watch-descriptor 'permanent-local t)
(defvar auto-revert-notify-modified-p nil
(defvar-local auto-revert-notify-modified-p nil
"Non-nil when file has been modified on the file system.
This has been reported by a file notification event.")
(make-variable-buffer-local 'auto-revert-notify-modified-p)
;; Functions:
@ -370,7 +367,7 @@ without being changed in the part that is already in the buffer."
"Turn on Auto-Revert Mode.
This function is designed to be added to hooks, for example:
(add-hook 'c-mode-hook 'turn-on-auto-revert-mode)"
(add-hook 'c-mode-hook #'turn-on-auto-revert-mode)"
(auto-revert-mode 1))
@ -420,8 +417,8 @@ Perform a full revert? ")
;; else we might reappend our own end when we save
(add-hook 'before-save-hook (lambda () (auto-revert-tail-mode 0)) nil t)
(or (local-variable-p 'auto-revert-tail-pos) ; don't lose prior position
(set (make-local-variable 'auto-revert-tail-pos)
(nth 7 (file-attributes buffer-file-name))))
(setq-local auto-revert-tail-pos
(nth 7 (file-attributes buffer-file-name))))
;; let auto-revert-mode set up the mechanism for us if it isn't already
(or auto-revert-mode
(let ((auto-revert-tail-mode t))
@ -434,7 +431,7 @@ Perform a full revert? ")
"Turn on Auto-Revert Tail mode.
This function is designed to be added to hooks, for example:
(add-hook 'my-logfile-mode-hook 'turn-on-auto-revert-tail-mode)"
(add-hook 'my-logfile-mode-hook #'turn-on-auto-revert-tail-mode)"
(auto-revert-tail-mode 1))
@ -495,7 +492,7 @@ will use an up-to-date value of `auto-revert-interval'"
(ignore-errors
(file-notify-rm-watch auto-revert-notify-watch-descriptor)))))
auto-revert-notify-watch-descriptor-hash-list)
(remove-hook 'kill-buffer-hook 'auto-revert-notify-rm-watch))
(remove-hook 'kill-buffer-hook #'auto-revert-notify-rm-watch))
(setq auto-revert-notify-watch-descriptor nil
auto-revert-notify-modified-p nil))
@ -508,7 +505,7 @@ will use an up-to-date value of `auto-revert-interval'"
(file-symlink-p (or buffer-file-name default-directory)))
;; Fallback to file checks.
(set (make-local-variable 'auto-revert-use-notify) nil)
(setq-local auto-revert-use-notify nil)
(when (not auto-revert-notify-watch-descriptor)
(setq auto-revert-notify-watch-descriptor
@ -530,10 +527,10 @@ will use an up-to-date value of `auto-revert-interval'"
(gethash auto-revert-notify-watch-descriptor
auto-revert-notify-watch-descriptor-hash-list))
auto-revert-notify-watch-descriptor-hash-list)
(add-hook (make-local-variable 'kill-buffer-hook)
'auto-revert-notify-rm-watch))
(add-hook 'kill-buffer-hook
#'auto-revert-notify-rm-watch nil t))
;; Fallback to file checks.
(set (make-local-variable 'auto-revert-use-notify) nil)))))
(setq-local auto-revert-use-notify nil)))))
;; If we have file notifications, we want to update the auto-revert buffers
;; immediately when a notification occurs. Since file updates can happen very

View file

@ -1034,7 +1034,7 @@ in Calc algebraic input.")
(defun math-restore-placeholders (x)
"Replace placeholders by the proper characters in the symbol x.
This includes `#' for `_' and `'' for `%'.
This includes # for _ and ' for %.
If the current Calc language does not use placeholders, return nil."
(if (or (memq calc-language calc-lang-allow-underscores)
(memq calc-language calc-lang-allow-percentsigns))

View file

@ -149,7 +149,7 @@ as well as set the contents of the Emacs register REGISTER to TEXT."
"Return the CALCVAL portion of the contents of the Calc register REG,
unless the TEXT portion doesn't match the contents of the Emacs register REG,
in which case either return the contents of the Emacs register (if it is
text) or `nil'."
text) or nil."
(let ((cval (cdr (assq reg calc-register-alist)))
(val (cdr (assq reg register-alist))))
(if (stringp val)

View file

@ -2034,7 +2034,7 @@ See calc-keypad for details."
;; (YEAR MONTH DAY math-date-from-gregorian-dt(YEAR MONTH DAY)) for speed.
(defcustom calc-gregorian-switch nil
"The first day the Gregorian calendar is used by Calc's date forms.
This is `nil' (the default) if the Gregorian calendar is the only one used.
This is nil (the default) if the Gregorian calendar is the only one used.
Otherwise, it should be a list `(YEAR MONTH DAY)' when Calc begins to use
the Gregorian calendar; Calc will use the Julian calendar for earlier dates.
The dates in which different regions of the world began to use the

View file

@ -1203,10 +1203,10 @@ arguments."
;; f is an expression
(let ((TX (and X (calculator-truncate X)))
(TY (and Y (calculator-truncate Y)))
(DX (if (and X calculator-deg) (/ (* X pi) 180) X))
(DX (if (and X calculator-deg) (degrees-to-radians X) X))
(L calculator-saved-list)
(fF `(calculator-funcall ',f x y))
(fD `(if calculator-deg (/ (* x 180) float-pi) x)))
(fD `(if calculator-deg (* radians-to-degrees x) x)))
(eval `(cl-flet ((F (&optional x y) ,fF) (D (x) ,fD))
(let ((X ,X) (Y ,Y) (DX ,DX) (TX ,TX) (TY ,TY) (L ',L))
,f))

View file

@ -2182,7 +2182,7 @@ in `calendar-month-name-array'. These abbreviations are used in
the calendar menu entries, and can also be used in the diary
file. Do not include a trailing `.' in the strings specified in
this variable, though you may use such in the diary file. By
default, each string is the first ``calendar-abbrev-length'
default, each string is the first `calendar-abbrev-length'
characters of the corresponding full name."
:group 'calendar
:set-after '(calendar-abbrev-length calendar-month-name-array)

View file

@ -104,9 +104,9 @@ are: `string', `symbol', `int', `tnil', `stringtnil.'"
(choice (const string :tag "A string")
(const symbol :tag "A symbol")
(const int :tag "An integer")
(const tnil :tag "`t' or `nil'")
(const tnil :tag "t or nil")
(const stringtnil
:tag "A string, `t', or `nil'"))))
:tag "A string, t, or nil"))))
:group 'diary)
(defcustom diary-glob-file-regexp-prefix "^\\#"
@ -1671,7 +1671,7 @@ DAY MONTH YEAR in the European style).
%%(diary-date MONTH DAY YEAR &optional MARK) text
Entry applies if date is MONTH, DAY, YEAR. DAY, MONTH, and YEAR can
be a list of integers, `t' (meaning all values), or an integer.
be a list of integers, t (meaning all values), or an integer.
%%(diary-float MONTH DAYNAME N &optional DAY MARK) text
Entry will appear on the Nth DAYNAME after/before MONTH DAY.
@ -1679,7 +1679,7 @@ DAY MONTH YEAR in the European style).
If N>0, use the Nth DAYNAME after MONTH DAY.
If N<0, use the Nth DAYNAME before MONTH DAY.
DAY defaults to 1 if N>0, and MONTH's last day otherwise.
MONTH can be a list of months, a single month, or `t' to
MONTH can be a list of months, a single month, or t to
specify all months.
%%(diary-block M1 D1 Y1 M2 D2 Y2 &optional MARK) text
@ -1814,7 +1814,7 @@ form used internally by the calendar and diary."
(defun diary-date (month day year &optional mark)
"Specific date(s) diary entry.
Entry applies if date is MONTH, DAY, YEAR. Each parameter can be a
list of integers, `t' (meaning all values), or an integer. The order
list of integers, t (meaning all values), or an integer. The order
of the input parameters changes according to `calendar-date-style'
\(e.g. to DAY MONTH YEAR in the European style).
@ -1863,7 +1863,7 @@ DAYNAME=0 means Sunday, DAYNAME=1 means Monday, and so on.
If N>0, use the Nth DAYNAME after MONTH DAY.
If N<0, use the Nth DAYNAME before MONTH DAY.
DAY defaults to 1 if N>0, and MONTH's last day otherwise.
MONTH can be a list of months, an integer, or `t' (meaning all months).
MONTH can be a list of months, an integer, or t (meaning all months).
Optional MARK specifies a face or single-character string to use when
highlighting the day in the calendar."
;; This is messy because the diary entry may apply, but the date on which it

View file

@ -346,7 +346,7 @@ If SUNRISE-FLAG is non-nil, only calculate longitude and inclination."
(solar-cosine-degrees (* 2 l)))
(* -0.5 y y (solar-sin-degrees (* 4 l)))
(* -1.25 ecc ecc (solar-sin-degrees (* 2 m)))))
3.1415926535))))
float-pi))))
(list app i time-eq nut)))
(defun solar-ephemeris-correction (year)

View file

@ -5443,7 +5443,7 @@ dynamically create item insertion commands.")
The list consists of item insertion parameters that can be passed
as insertion command arguments in fixed positions. If a position
in the list is not occupied by the corresponding parameter, it is
occupied by `nil'."
occupied by nil."
(let* ((arg (list (car todo-insert-item--args)))
(args (nconc (cdr todo-insert-item--args)
(list (car (todo-insert-item--argsleft

View file

@ -86,7 +86,7 @@ into memory.")
;; If the thing to match is stored in a config file.
((stringp fc)
(when (file-exists-p fc)
(let ((matchstring
(let ((matchstring
(if (slot-boundp dirmatch 'configdatastash)
(oref dirmatch configdatastash)
nil)))
@ -123,7 +123,7 @@ into memory.")
(not (= (match-end 0) (length file))))
)
)))
;; Add new matches here
;; ((stringp somenewslot ...)
;; )
@ -155,9 +155,9 @@ into memory.")
Specifying this matcher object will allow EDE to perform a complex
check without loading the project.
NOTE: If you use dirmatch, you may need to set :root-only to `nil'.
NOTE: If you use dirmatch, you may need to set :root-only to nil.
While it may be a root based project, all subdirs will happen to return
true for the dirmatch, so for scanning purposes, set it to `nil'.")
true for the dirmatch, so for scanning purposes, set it to nil.")
(proj-root :initarg :proj-root
:type function
:documentation "A function symbol to call for the project root.
@ -280,7 +280,7 @@ added. Possible values are:
(if f
(and f (file-exists-p f))
(let ((dirmatch (oref this proj-root-dirmatch)))
(cond
(cond
((stringp dirmatch)
nil) ; <- do something here - maybe obsolete the option?
((ede-project-autoload-dirmatch-p dirmatch)
@ -312,7 +312,7 @@ NOTE: Do not call this - it should only be called from `ede-load-project-file'."
;;; -------- Old Methods
;;; -------- Old Methods
;; See if we can do without them.
;; @FIXME - delete from loaddefs to remove this.

View file

@ -41,7 +41,7 @@
(declare-function ede-locate-flush-hash "ede/locate")
(defvar ede--disable-inode nil
"Set to 't' to simulate systems w/out inode support.")
"Set to t to simulate systems w/out inode support.")
;;; Code:
;;;###autoload

View file

@ -207,7 +207,7 @@ The resulting bookmark is then sorted within the ring."
)))
(defun semantic-mrub-cache-flush-fcn ()
"Function called in the `semantic-before-toplevel-cache-flush-hook`.
"Function called in the `semantic-before-toplevel-cache-flush-hook'.
Cause tags in the ring to become unlinked."
(let* ((ring (oref semantic-mru-bookmark-ring ring))
(len (ring-length ring))

View file

@ -351,7 +351,7 @@ until the next command is executed."
(setq semantic-symref-recently-opened-buffers nil)
(remove-hook 'post-command-hook 'semantic-symref-cleanup-recent-buffers-fcn)
)
(cl-defmethod semantic-symref-result-get-tags ((result semantic-symref-result)
&optional open-buffers)
"Get the list of tags from the symref result RESULT.
@ -512,7 +512,7 @@ buffers that were opened."
(searchtype :initarg :searchtype
:type symbol
:documentation "The type of search to do.
Values could be `symbol, `regexp, 'tagname, or 'completion.")
Values could be 'symbol, 'regexp, 'tagname, or 'completion.")
(searchscope :initarg :searchscope
:type symbol
:documentation

View file

@ -621,7 +621,7 @@ buffer, the originating buffer file name is kept in the `:filename'
property of the copied tag.
If KEEP-FILE is a string, and the originating buffer is NOT available,
then KEEP-FILE is stored on the `:filename' property.
This runs the tag hook `unlink-copy-hook`."
This runs the tag hook `unlink-copy-hook'."
;; Right now, TAG is a list.
(let ((copy (semantic-tag-clone tag name)))
@ -958,7 +958,7 @@ Return nil if TAG is not of class 'alias."
"Return a list of components for TAG.
A Component is a part of TAG which itself may be a TAG.
Examples include the elements of a structure in a
tag of class `type, or the list of arguments to a
tag of class 'type, or the list of arguments to a
tag of class 'function."
)

View file

@ -84,7 +84,7 @@ HEADER - Shown section if in a header file."
;;;###autoload
(defun srecode-semantic-handle-:cpp (dict)
"Add macros into the dictionary DICT based on the current c file.
Calls `srecode-semantic-handle-:c.
Calls `srecode-semantic-handle-:c'.
Also adds the following:
- nothing -"
(srecode-semantic-handle-:c dict)

View file

@ -241,11 +241,11 @@ This is to take advantage of TeXinfo's markup symbols."
For instances where CLASS is the class being referenced, do not Xref
that class.
`function' => @dfn{function}
`variable' => @code{variable}
`class' => @code{class} @xref{class}
`unknown' => @code{unknown}
\"text\" => ``text''
function => @dfn{function}
variable => @code{variable}
class => @code{class} @xref{class}
unknown => @code{unknown}
\" text \" => `` text ''
'quoteme => @code{quoteme}
non-nil => non-@code{nil}
t => @code{t}

View file

@ -1965,7 +1965,7 @@ Each entry is of the form (STATE MAGIC FACE ITEM-DESC [ GROUP-DESC ]), where
STATE is one of the following symbols:
`nil'
nil
For internal use, should never occur.
`unknown'
For internal use, should never occur.

View file

@ -2257,7 +2257,7 @@ of marked files. If KILL-ROOT is non-nil, kill DIRNAME as well."
;; components are string-lessp.
;; Thus ("/usr/" "/usr/bin") and ("/usr/a/" "/usr/b/") are tree-lessp.
;; string-lessp could arguably be replaced by file-newer-than-file-p
;; if dired-actual-switches contained `t'.
;; if dired-actual-switches contained t.
(setq dir1 (file-name-as-directory dir1)
dir2 (file-name-as-directory dir2))
(let ((components-1 (dired-split "/" dir1))

View file

@ -3889,7 +3889,7 @@ Ask means pop up a menu for the user to select one of copy, move or link."
;;; Start of automatically extracted autoloads.
;;;### (autoloads nil "dired-aux" "dired-aux.el" "8820677763cb69eef827e38b86d35f47")
;;;### (autoloads nil "dired-aux" "dired-aux.el" "45867cb96abef86d29a9850ee2113cf2")
;;; Generated autoloads from dired-aux.el
(autoload 'dired-diff "dired-aux" "\

View file

@ -51,7 +51,7 @@
;; which matches your prompt up to and including the pathname part.
;; The second is a number which tells which regular expression group to
;; match to extract only the pathname. If you use a multi-line prompt,
;; add 't' as a third element. Note that some of the functions in
;; add t as a third element. Note that some of the functions in
;; 'comint.el' assume a single-line prompt (eg, comint-bol).
;;
;; Determining this information may take some experimentation. Using

View file

@ -2149,7 +2149,6 @@ the cache-id will clear the cache."
(defun ad-arglist (definition)
"Return the argument list of DEFINITION."
(require 'help-fns)
(help-function-arglist
(if (or (macrop definition) (ad-advice-p definition))
(cdr definition)
@ -2474,8 +2473,6 @@ Example: `(ad-map-arglists '(a &rest args) '(w x y z))' will return
(capitalize (symbol-name class))
(ad-advice-name advice)))))))
(require 'help-fns) ;For help-split-fundoc and help-add-fundoc-usage.
(defun ad--make-advised-docstring (function &optional style)
"Construct a documentation string for the advised FUNCTION.
Concatenate the original documentation with the documentation

View file

@ -32,7 +32,6 @@
(require 'lisp-mode) ;for `doc-string-elt' properties.
(require 'lisp-mnt)
(require 'help-fns) ;for help-add-fundoc-usage.
(eval-when-compile (require 'cl-lib))
(defvar generated-autoload-file nil

View file

@ -566,7 +566,7 @@
(cons fn args)))))))
(defun byte-optimize-all-constp (list)
"Non-nil if all elements of LIST satisfy `macroexp-const-p"
"Non-nil if all elements of LIST satisfy `macroexp-const-p'."
(let ((constant t))
(while (and list constant)
(unless (macroexp-const-p (car list))
@ -1225,7 +1225,7 @@
window-left-child window-left-column window-margins window-minibuffer-p
window-next-buffers window-next-sibling window-new-normal
window-new-total window-normal-size window-parameter window-parameters
window-parent window-pixel-edges window-point window-prev-buffers
window-parent window-pixel-edges window-point window-prev-buffers
window-prev-sibling window-redisplay-end-trigger window-scroll-bars
window-start window-text-height window-top-child window-top-line
window-total-height window-total-width window-use-time window-vscroll

View file

@ -348,7 +348,7 @@ else the global value will be modified."
;;;###autoload
(defun byte-compile-enable-warning (warning)
"Change `byte-compile-warnings' to enable WARNING.
If `byte-compile-warnings' is `t', do nothing. Otherwise, if the
If `byte-compile-warnings' is t, do nothing. Otherwise, if the
first element is `not', remove WARNING, else add it.
Normally you should let-bind `byte-compile-warnings' before calling this,
else the global value will be modified."

View file

@ -98,7 +98,7 @@ don't know how to recognize (e.g. some macros)."
(stringp (setq fnfile (nth 2 form)))
(setq fnfile (check-declare-locate fnfile
(expand-file-name file)))
;; Use `t' to distinguish unspecified arglist from empty one.
;; Use t to distinguish unspecified arglist from empty one.
(or (eq t (setq arglist (if (> len 3)
(nth 3 form)
t)))

View file

@ -1615,8 +1615,8 @@ function,command,variable,option or symbol." ms1))))))
(or
;; * The documentation string for a variable that is a
;; yes-or-no flag should start with words such as Non-nil
;; means..., to make it clear that all non-`nil' values are
;; equivalent and indicate explicitly what `nil' and non-`nil'
;; means..., to make it clear that all non-nil values are
;; equivalent and indicate explicitly what nil and non-nil
;; mean.
;; * If a user option variable records a true-or-false
;; condition, give it a name that ends in `-flag'.
@ -2405,7 +2405,7 @@ Argument END is the maximum bounds to search in."
According to the documentation for the function `error', the error list
should not end with a period, and should start with a capital letter.
The function `y-or-n-p' has similar constraints.
Argument TYPE specifies the type of question, such as `error or `y-or-n-p."
Argument TYPE specifies the type of question, such as `error' or `y-or-n-p'."
;; If type is nil, then attempt to derive it.
(if (not type)
(save-excursion
@ -2613,9 +2613,12 @@ function called to create the messages."
(count-lines (point-min) (or point (point-min))))
": " msg)))
(with-current-buffer (get-buffer checkdoc-diagnostic-buffer)
(goto-char (point-max))
(let ((inhibit-read-only t))
(apply #'insert text)))))
(let ((inhibit-read-only t)
(pt (point-max)))
(goto-char pt)
(apply #'insert text)
(when noninteractive
(warn (buffer-substring pt (point-max))))))))
(defun checkdoc-show-diagnostics ()
"Display the checkdoc diagnostic buffer in a temporary window."

View file

@ -237,14 +237,19 @@ BODY, if present, is used as the body of a default method.
(`(,spec-args . ,_) (cl--generic-split-args args))
(mandatory (mapcar #'car spec-args))
(apo (assq :argument-precedence-order options)))
(setf (cl--generic-dispatches generic) nil)
(unless (fboundp name)
;; If the generic function was fmakunbound, throw away previous methods.
(setf (cl--generic-dispatches generic) nil)
(setf (cl--generic-method-table generic) nil))
(when apo
(dolist (arg (cdr apo))
(let ((pos (memq arg mandatory)))
(unless pos (error "%S is not a mandatory argument" arg))
(push (list (- (length mandatory) (length pos)))
(cl--generic-dispatches generic)))))
(setf (cl--generic-method-table generic) nil)
(let* ((argno (- (length mandatory) (length pos)))
(dispatches (cl--generic-dispatches generic))
(dispatch (or (assq argno dispatches) (list argno))))
(setf (cl--generic-dispatches generic)
(cons dispatch (delq dispatch dispatches)))))))
(setf (cl--generic-options generic) options)
(cl--generic-make-function generic)))
@ -438,16 +443,14 @@ which case this method will be invoked when the argument is `eql' to VAL.
;; the generic function.
current-load-list)
;; For aliases, cl--generic-name gives us the actual name.
(funcall
(if purify-flag
;; BEWARE! Don't purify this function definition, since that leads
;; to memory corruption if the hash-tables it holds are modified
;; (the GC doesn't trace those pointers).
#'fset
;; But do use `defalias' in the normal case, so that it interacts
;; properly with nadvice, e.g. for tracing/debug-on-entry.
#'defalias)
(cl--generic-name generic) gfun))))
(let ((purify-flag
;; BEWARE! Don't purify this function definition, since that leads
;; to memory corruption if the hash-tables it holds are modified
;; (the GC doesn't trace those pointers).
nil))
;; But do use `defalias', so that it interacts properly with nadvice,
;; e.g. for tracing/debug-on-entry.
(defalias (cl--generic-name generic) gfun)))))
(defmacro cl--generic-with-memoization (place &rest code)
(declare (indent 1) (debug t))
@ -525,7 +528,7 @@ which case this method will be invoked when the argument is `eql' to VAL.
(progn
(while (and dispatches
(let ((x (nth 1 (car dispatches))))
;; No need to dispatch for `t' specializers.
;; No need to dispatch for t specializers.
(or (null x) (equal x cl--generic-t-generalizer))))
(setq dispatches (cdr dispatches)))
(pop dispatches))))
@ -701,10 +704,15 @@ methods.")
#'cl--generic-standard-method-combination)
(cl-defmethod cl-generic-generalizers (specializer)
"Support for the catch-all `t' specializer."
"Support for the catch-all t specializer."
(if (eq specializer t) (list cl--generic-t-generalizer)
(error "Unknown specializer %S" specializer)))
(eval-when-compile
;; This macro is brittle and only really important in order to be
;; able to preload cl-generic without also preloading the byte-compiler,
;; So we use `eval-when-compile' so as not keep it available longer than
;; strictly needed.
(defmacro cl--generic-prefill-dispatchers (arg-or-context specializer)
(unless (integerp arg-or-context)
(setq arg-or-context `(&context . ,arg-or-context)))
@ -722,7 +730,7 @@ methods.")
,@(cl-generic-generalizers ',specializer)
,cl--generic-t-generalizer)))
;; (message "Prefilling for %S with \n%S" dispatch ',fun)
(puthash dispatch ',fun cl--generic-dispatchers))))
(puthash dispatch ',fun cl--generic-dispatchers)))))
(cl-defmethod cl-generic-combine-methods (generic methods)
"Standard support for :after, :before, :around, and `:extra NAME' qualifiers."
@ -796,8 +804,6 @@ Can only be used from within the lexical body of a primary or around method."
specializers qualifiers
(cl--generic-method-table (cl--generic generic)))))
(defalias 'cl-method-qualifiers 'cl--generic-method-qualifiers)
;;; Add support for describe-function
(defun cl--generic-search-method (met-name)
@ -850,6 +856,9 @@ Can only be used from within the lexical body of a primary or around method."
(add-hook 'help-fns-describe-function-functions #'cl--generic-describe)
(defun cl--generic-describe (function)
;; Supposedly this is called from help-fns, so help-fns should be loaded at
;; this point.
(declare-function help-fns-short-filename "help-fns" (filename))
(let ((generic (if (symbolp function) (cl--generic function))))
(when generic
(require 'help-mode) ;Needed for `help-function-def' button!

View file

@ -140,13 +140,13 @@ If non-nil, alignment is done with the first parameter
(defcustom lisp-indent-backquote-substitution-mode t
"How to indent substitutions in backquotes.
If `t', the default, indent substituted forms normally.
If `nil', do not apply special indentation rule to substituted
If t, the default, indent substituted forms normally.
If nil, do not apply special indentation rule to substituted
forms. If `corrected', subtract the `,' or `,@' from the form
column, indenting as if this character sequence were not present.
In any case, do not backtrack beyond a backquote substitution.
Until Emacs 25.1, the `nil' behavior was hard-wired."
Until Emacs 25.1, the nil behavior was hard-wired."
:version "25.1"
:type '(choice (const corrected) (const nil) (const t))
:group 'lisp-indent)

View file

@ -294,7 +294,6 @@ FORM is of the form (ARGS . BODY)."
;; apparently harmless computation, so it should not
;; touch the match-data.
(save-match-data
(require 'help-fns)
(cons (help-add-fundoc-usage
(if (stringp (car header)) (pop header))
;; Be careful with make-symbol and (back)quote,

View file

@ -54,7 +54,7 @@ the middle is discarded, and just the beginning and end are displayed."
The value affects the behavior of operations on any window
previously showing the debugger buffer.
`nil' means that if its window is not deleted when exiting the
nil means that if its window is not deleted when exiting the
debugger, invoking `switch-to-prev-buffer' will usually show
the debugger buffer again.

View file

@ -600,7 +600,7 @@ list of a symbol.")
(defun edebug-get-form-data-entry (pnt &optional end-point)
;; Find the edebug form data entry which is closest to PNT.
;; If END-POINT is supplied, match must be exact.
;; Return `nil' if none found.
;; Return nil if none found.
(let ((rest edebug-form-data)
closest-entry
(closest-dist 999999)) ;; Need maxint here.

View file

@ -46,8 +46,6 @@
;;; Code:
(require 'help-fns)
(defgroup elint nil
"Linting for Emacs Lisp."
:prefix "elint-"

View file

@ -90,7 +90,7 @@
;; Change this function to use `cl-gensym' if you want the generated
;; code to be easier to read and debug.
;; (cl-gensym (apply #'format fmt args))
`(make-symbol ,fmt))
`(progn (ignore ,@args) (make-symbol ,fmt)))
(defvar cps--dynamic-wrappers '(identity)
"List of transformer functions to apply to atomic forms we
@ -308,14 +308,14 @@ don't yield.")
collect (if (symbolp binding)
(list binding nil)
binding)))
(temps (cl-loop for (var value-form) in bindings
(temps (cl-loop for (var _value-form) in bindings
collect (cps--add-binding var))))
(cps--transform-1
`(let* ,(append
(cl-loop for (var value-form) in bindings
(cl-loop for (_var value-form) in bindings
for temp in temps
collect (list temp value-form))
(cl-loop for (var binding) in bindings
(cl-loop for (var _binding) in bindings
for temp in temps
collect (list var temp)))
,@body)
@ -704,7 +704,7 @@ of values. Callers can retrieve each value using `iter-next'."
(defun iter-next (iterator &optional yield-result)
"Extract a value from an iterator.
YIELD-RESULT becomes the return value of `iter-yield` in the
YIELD-RESULT becomes the return value of `iter-yield' in the
context of the generator.
This routine raises the `iter-end-of-sequence' condition if the

View file

@ -229,248 +229,246 @@
(match-beginning 0)))))
(throw 'found t))))))
(pcase-let
((`(,vdefs ,tdefs
,el-defs-re ,cl-defs-re
,el-kws-re ,cl-kws-re
,el-errs-re ,cl-errs-re)
(eval-when-compile
(let ((lisp-fdefs '("defmacro" "defsubst" "defun"))
(lisp-vdefs '("defvar"))
(lisp-kw '("cond" "if" "while" "let" "let*" "progn" "prog1"
"prog2" "lambda" "unwind-protect" "condition-case"
"when" "unless" "with-output-to-string"
"ignore-errors" "dotimes" "dolist" "declare"))
(lisp-errs '("warn" "error" "signal"))
;; Elisp constructs. Now they are update dynamically
;; from obarray but they are also used for setting up
;; the keywords for Common Lisp.
(el-fdefs '("define-advice" "defadvice" "defalias"
"define-derived-mode" "define-minor-mode"
"define-generic-mode" "define-global-minor-mode"
"define-globalized-minor-mode" "define-skeleton"
"define-widget"))
(el-vdefs '("defconst" "defcustom" "defvaralias" "defvar-local"
"defface"))
(el-tdefs '("defgroup" "deftheme"))
(el-kw '("while-no-input" "letrec" "pcase" "pcase-exhaustive"
"pcase-lambda" "pcase-let" "pcase-let*" "save-restriction"
"save-excursion" "save-selected-window"
;; "eval-after-load" "eval-next-after-load"
"save-window-excursion" "save-current-buffer"
"save-match-data" "combine-after-change-calls"
"condition-case-unless-debug" "track-mouse"
"eval-and-compile" "eval-when-compile" "with-case-table"
"with-category-table" "with-coding-priority"
"with-current-buffer" "with-demoted-errors"
"with-electric-help" "with-eval-after-load"
"with-file-modes"
"with-local-quit" "with-no-warnings"
"with-output-to-temp-buffer" "with-selected-window"
"with-selected-frame" "with-silent-modifications"
"with-syntax-table" "with-temp-buffer" "with-temp-file"
"with-temp-message" "with-timeout"
"with-timeout-handler"))
(el-errs '("user-error"))
;; Common-Lisp constructs supported by EIEIO. FIXME: namespace.
(eieio-fdefs '("defgeneric" "defmethod"))
(eieio-tdefs '("defclass"))
(eieio-kw '("with-slots"))
;; Common-Lisp constructs supported by cl-lib.
(cl-lib-fdefs '("defmacro" "defsubst" "defun" "defmethod"))
(cl-lib-tdefs '("defstruct" "deftype"))
(cl-lib-kw '("progv" "eval-when" "case" "ecase" "typecase"
"etypecase" "ccase" "ctypecase" "loop" "do" "do*"
"the" "locally" "proclaim" "declaim" "letf" "go"
;; "lexical-let" "lexical-let*"
"symbol-macrolet" "flet" "flet*" "destructuring-bind"
"labels" "macrolet" "tagbody" "multiple-value-bind"
"block" "return" "return-from"))
(cl-lib-errs '("assert" "check-type"))
;; Common-Lisp constructs not supported by cl-lib.
(cl-fdefs '("defsetf" "define-method-combination"
"define-condition" "define-setf-expander"
;; "define-function"??
"define-compiler-macro" "define-modify-macro"))
(cl-vdefs '("define-symbol-macro" "defconstant" "defparameter"))
(cl-tdefs '("defpackage" "defstruct" "deftype"))
(cl-kw '("prog" "prog*" "handler-case" "handler-bind"
"in-package" "restart-case" ;; "inline"
"restart-bind" "break" "multiple-value-prog1"
"compiler-let" "with-accessors" "with-compilation-unit"
"with-condition-restarts" "with-hash-table-iterator"
"with-input-from-string" "with-open-file"
"with-open-stream" "with-package-iterator"
"with-simple-restart" "with-standard-io-syntax"))
(cl-errs '("abort" "cerror")))
(let-when-compile
((lisp-fdefs '("defmacro" "defsubst" "defun"))
(lisp-vdefs '("defvar"))
(lisp-kw '("cond" "if" "while" "let" "let*" "progn" "prog1"
"prog2" "lambda" "unwind-protect" "condition-case"
"when" "unless" "with-output-to-string"
"ignore-errors" "dotimes" "dolist" "declare"))
(lisp-errs '("warn" "error" "signal"))
;; Elisp constructs. Now they are update dynamically
;; from obarray but they are also used for setting up
;; the keywords for Common Lisp.
(el-fdefs '("define-advice" "defadvice" "defalias"
"define-derived-mode" "define-minor-mode"
"define-generic-mode" "define-global-minor-mode"
"define-globalized-minor-mode" "define-skeleton"
"define-widget"))
(el-vdefs '("defconst" "defcustom" "defvaralias" "defvar-local"
"defface"))
(el-tdefs '("defgroup" "deftheme"))
(el-kw '("while-no-input" "letrec" "pcase" "pcase-exhaustive"
"pcase-lambda" "pcase-let" "pcase-let*" "save-restriction"
"save-excursion" "save-selected-window"
;; "eval-after-load" "eval-next-after-load"
"save-window-excursion" "save-current-buffer"
"save-match-data" "combine-after-change-calls"
"condition-case-unless-debug" "track-mouse"
"eval-and-compile" "eval-when-compile" "with-case-table"
"with-category-table" "with-coding-priority"
"with-current-buffer" "with-demoted-errors"
"with-electric-help" "with-eval-after-load"
"with-file-modes"
"with-local-quit" "with-no-warnings"
"with-output-to-temp-buffer" "with-selected-window"
"with-selected-frame" "with-silent-modifications"
"with-syntax-table" "with-temp-buffer" "with-temp-file"
"with-temp-message" "with-timeout"
"with-timeout-handler"))
(el-errs '("user-error"))
;; Common-Lisp constructs supported by EIEIO. FIXME: namespace.
(eieio-fdefs '("defgeneric" "defmethod"))
(eieio-tdefs '("defclass"))
(eieio-kw '("with-slots"))
;; Common-Lisp constructs supported by cl-lib.
(cl-lib-fdefs '("defmacro" "defsubst" "defun" "defmethod"))
(cl-lib-tdefs '("defstruct" "deftype"))
(cl-lib-kw '("progv" "eval-when" "case" "ecase" "typecase"
"etypecase" "ccase" "ctypecase" "loop" "do" "do*"
"the" "locally" "proclaim" "declaim" "letf" "go"
;; "lexical-let" "lexical-let*"
"symbol-macrolet" "flet" "flet*" "destructuring-bind"
"labels" "macrolet" "tagbody" "multiple-value-bind"
"block" "return" "return-from"))
(cl-lib-errs '("assert" "check-type"))
;; Common-Lisp constructs not supported by cl-lib.
(cl-fdefs '("defsetf" "define-method-combination"
"define-condition" "define-setf-expander"
;; "define-function"??
"define-compiler-macro" "define-modify-macro"))
(cl-vdefs '("define-symbol-macro" "defconstant" "defparameter"))
(cl-tdefs '("defpackage" "defstruct" "deftype"))
(cl-kw '("prog" "prog*" "handler-case" "handler-bind"
"in-package" "restart-case" ;; "inline"
"restart-bind" "break" "multiple-value-prog1"
"compiler-let" "with-accessors" "with-compilation-unit"
"with-condition-restarts" "with-hash-table-iterator"
"with-input-from-string" "with-open-file"
"with-open-stream" "with-package-iterator"
"with-simple-restart" "with-standard-io-syntax"))
(cl-errs '("abort" "cerror")))
(let ((vdefs (eval-when-compile
(append lisp-vdefs el-vdefs cl-vdefs)))
(tdefs (eval-when-compile
(append el-tdefs eieio-tdefs cl-tdefs cl-lib-tdefs
(mapcar (lambda (s) (concat "cl-" s)) cl-lib-tdefs))))
;; Elisp and Common Lisp definers.
(el-defs-re (eval-when-compile
(regexp-opt (append lisp-fdefs lisp-vdefs
el-fdefs el-vdefs el-tdefs
(mapcar (lambda (s) (concat "cl-" s))
(append cl-lib-fdefs cl-lib-tdefs))
eieio-fdefs eieio-tdefs)
t)))
(cl-defs-re (eval-when-compile
(regexp-opt (append lisp-fdefs lisp-vdefs
cl-lib-fdefs cl-lib-tdefs
eieio-fdefs eieio-tdefs
cl-fdefs cl-vdefs cl-tdefs)
t)))
;; Elisp and Common Lisp keywords.
;; (el-kws-re (eval-when-compile
;; (regexp-opt (append
;; lisp-kw el-kw eieio-kw
;; (cons "go" (mapcar (lambda (s) (concat "cl-" s))
;; (remove "go" cl-lib-kw))))
;; t)))
(cl-kws-re (eval-when-compile
(regexp-opt (append lisp-kw cl-kw eieio-kw cl-lib-kw)
t)))
;; Elisp and Common Lisp "errors".
(el-errs-re (eval-when-compile
(regexp-opt (append (mapcar (lambda (s) (concat "cl-" s))
cl-lib-errs)
lisp-errs el-errs)
t)))
(cl-errs-re (eval-when-compile
(regexp-opt (append lisp-errs cl-lib-errs cl-errs) t))))
(dolist (v vdefs)
(put (intern v) 'lisp-define-type 'var))
(dolist (v tdefs)
(put (intern v) 'lisp-define-type 'type))
(list (append lisp-vdefs el-vdefs cl-vdefs)
(append el-tdefs eieio-tdefs cl-tdefs cl-lib-tdefs
(mapcar (lambda (s) (concat "cl-" s)) cl-lib-tdefs))
(define-obsolete-variable-alias 'lisp-font-lock-keywords-1
'lisp-el-font-lock-keywords-1 "24.4")
(defconst lisp-el-font-lock-keywords-1
`( ;; Definitions.
(,(concat "(" el-defs-re "\\_>"
;; Any whitespace and defined object.
"[ \t']*"
"\\(([ \t']*\\)?" ;; An opening paren.
"\\(\\(setf\\)[ \t]+\\(?:\\sw\\|\\s_\\)+\\|\\(?:\\sw\\|\\s_\\)+\\)?")
(1 font-lock-keyword-face)
(3 (let ((type (get (intern-soft (match-string 1)) 'lisp-define-type)))
(cond ((eq type 'var) font-lock-variable-name-face)
((eq type 'type) font-lock-type-face)
;; If match-string 2 is non-nil, we encountered a
;; form like (defalias (intern (concat s "-p"))),
;; unless match-string 4 is also there. Then its a
;; defmethod with (setf foo) as name.
((or (not (match-string 2)) ;; Normal defun.
(and (match-string 2) ;; Setf method.
(match-string 4))) font-lock-function-name-face)))
nil t))
;; Emacs Lisp autoload cookies. Supports the slightly different
;; forms used by mh-e, calendar, etc.
("^;;;###\\([-a-z]*autoload\\)" 1 font-lock-warning-face prepend))
"Subdued level highlighting for Emacs Lisp mode.")
;; Elisp and Common Lisp definers.
(regexp-opt (append lisp-fdefs lisp-vdefs
el-fdefs el-vdefs el-tdefs
(mapcar (lambda (s) (concat "cl-" s))
(append cl-lib-fdefs cl-lib-tdefs))
eieio-fdefs eieio-tdefs)
t)
(regexp-opt (append lisp-fdefs lisp-vdefs
cl-lib-fdefs cl-lib-tdefs
eieio-fdefs eieio-tdefs
cl-fdefs cl-vdefs cl-tdefs)
t)
(defconst lisp-cl-font-lock-keywords-1
`( ;; Definitions.
(,(concat "(" cl-defs-re "\\_>"
;; Any whitespace and defined object.
"[ \t']*"
"\\(([ \t']*\\)?" ;; An opening paren.
"\\(\\(setf\\)[ \t]+\\(?:\\sw\\|\\s_\\)+\\|\\(?:\\sw\\|\\s_\\)+\\)?")
(1 font-lock-keyword-face)
(3 (let ((type (get (intern-soft (match-string 1)) 'lisp-define-type)))
(cond ((eq type 'var) font-lock-variable-name-face)
((eq type 'type) font-lock-type-face)
((or (not (match-string 2)) ;; Normal defun.
(and (match-string 2) ;; Setf function.
(match-string 4))) font-lock-function-name-face)))
nil t)))
"Subdued level highlighting for Lisp modes.")
;; Elisp and Common Lisp keywords.
(regexp-opt (append
lisp-kw el-kw eieio-kw
(cons "go" (mapcar (lambda (s) (concat "cl-" s))
(remove "go" cl-lib-kw))))
t)
(regexp-opt (append lisp-kw cl-kw eieio-kw cl-lib-kw)
t)
(define-obsolete-variable-alias 'lisp-font-lock-keywords-2
'lisp-el-font-lock-keywords-2 "24.4")
(defconst lisp-el-font-lock-keywords-2
(append
lisp-el-font-lock-keywords-1
`( ;; Regexp negated char group.
("\\[\\(\\^\\)" 1 font-lock-negation-char-face prepend)
;; Control structures. Common Lisp forms.
(lisp--el-match-keyword . 1)
;; Exit/Feature symbols as constants.
(,(concat "(\\(catch\\|throw\\|featurep\\|provide\\|require\\)\\_>"
"[ \t']*\\(\\(?:\\sw\\|\\s_\\)+\\)?")
(1 font-lock-keyword-face)
(2 font-lock-constant-face nil t))
;; Erroneous structures.
(,(concat "(" el-errs-re "\\_>")
(1 font-lock-warning-face))
;; Words inside \\[] tend to be for `substitute-command-keys'.
("\\\\\\\\\\[\\(\\(?:\\sw\\|\\s_\\)+\\)\\]"
(1 font-lock-constant-face prepend))
;; Words inside `' tend to be symbol names.
("`\\(\\(?:\\sw\\|\\s_\\)\\(?:\\sw\\|\\s_\\)+\\)'"
(1 font-lock-constant-face prepend))
;; Constant values.
("\\_<:\\(?:\\sw\\|\\s_\\)+\\_>" 0 font-lock-builtin-face)
;; ELisp and CLisp `&' keywords as types.
("\\_<\\&\\(?:\\sw\\|\\s_\\)+\\_>" . font-lock-type-face)
;; ELisp regexp grouping constructs
(,(lambda (bound)
(catch 'found
;; The following loop is needed to continue searching after matches
;; that do not occur in strings. The associated regexp matches one
;; of `\\\\' `\\(' `\\(?:' `\\|' `\\)'. `\\\\' has been included to
;; avoid highlighting, for example, `\\(' in `\\\\('.
(while (re-search-forward "\\(\\\\\\\\\\)\\(?:\\(\\\\\\\\\\)\\|\\((\\(?:\\?[0-9]*:\\)?\\|[|)]\\)\\)" bound t)
(unless (match-beginning 2)
(let ((face (get-text-property (1- (point)) 'face)))
(when (or (and (listp face)
(memq 'font-lock-string-face face))
(eq 'font-lock-string-face face))
(throw 'found t)))))))
(1 'font-lock-regexp-grouping-backslash prepend)
(3 'font-lock-regexp-grouping-construct prepend))
;; This is too general -- rms.
;; A user complained that he has functions whose names start with `do'
;; and that they get the wrong color.
;; ;; CL `with-' and `do-' constructs
;;("(\\(\\(do-\\|with-\\)\\(\\s_\\|\\w\\)*\\)" 1 font-lock-keyword-face)
(lisp--match-hidden-arg
(0 '(face font-lock-warning-face
help-echo "Hidden behind deeper element; move to another line?")))
))
"Gaudy level highlighting for Emacs Lisp mode.")
;; Elisp and Common Lisp "errors".
(regexp-opt (append (mapcar (lambda (s) (concat "cl-" s))
cl-lib-errs)
lisp-errs el-errs)
t)
(regexp-opt (append lisp-errs cl-lib-errs cl-errs) t))))))
(dolist (v vdefs)
(put (intern v) 'lisp-define-type 'var))
(dolist (v tdefs)
(put (intern v) 'lisp-define-type 'type))
(define-obsolete-variable-alias 'lisp-font-lock-keywords-1
'lisp-el-font-lock-keywords-1 "24.4")
(defconst lisp-el-font-lock-keywords-1
`( ;; Definitions.
(,(concat "(" el-defs-re "\\_>"
;; Any whitespace and defined object.
"[ \t']*"
"\\(([ \t']*\\)?" ;; An opening paren.
"\\(\\(setf\\)[ \t]+\\(?:\\sw\\|\\s_\\)+\\|\\(?:\\sw\\|\\s_\\)+\\)?")
(1 font-lock-keyword-face)
(3 (let ((type (get (intern-soft (match-string 1)) 'lisp-define-type)))
(cond ((eq type 'var) font-lock-variable-name-face)
((eq type 'type) font-lock-type-face)
;; If match-string 2 is non-nil, we encountered a
;; form like (defalias (intern (concat s "-p"))),
;; unless match-string 4 is also there. Then its a
;; defmethod with (setf foo) as name.
((or (not (match-string 2)) ;; Normal defun.
(and (match-string 2) ;; Setf method.
(match-string 4))) font-lock-function-name-face)))
nil t))
;; Emacs Lisp autoload cookies. Supports the slightly different
;; forms used by mh-e, calendar, etc.
("^;;;###\\([-a-z]*autoload\\)" 1 font-lock-warning-face prepend))
"Subdued level highlighting for Emacs Lisp mode.")
(defconst lisp-cl-font-lock-keywords-1
`( ;; Definitions.
(,(concat "(" cl-defs-re "\\_>"
;; Any whitespace and defined object.
"[ \t']*"
"\\(([ \t']*\\)?" ;; An opening paren.
"\\(\\(setf\\)[ \t]+\\(?:\\sw\\|\\s_\\)+\\|\\(?:\\sw\\|\\s_\\)+\\)?")
(1 font-lock-keyword-face)
(3 (let ((type (get (intern-soft (match-string 1)) 'lisp-define-type)))
(cond ((eq type 'var) font-lock-variable-name-face)
((eq type 'type) font-lock-type-face)
((or (not (match-string 2)) ;; Normal defun.
(and (match-string 2) ;; Setf function.
(match-string 4))) font-lock-function-name-face)))
nil t)))
"Subdued level highlighting for Lisp modes.")
(define-obsolete-variable-alias 'lisp-font-lock-keywords-2
'lisp-el-font-lock-keywords-2 "24.4")
(defconst lisp-el-font-lock-keywords-2
(append
lisp-el-font-lock-keywords-1
`( ;; Regexp negated char group.
("\\[\\(\\^\\)" 1 font-lock-negation-char-face prepend)
;; Control structures. Common Lisp forms.
(lisp--el-match-keyword . 1)
;; Exit/Feature symbols as constants.
(,(concat "(\\(catch\\|throw\\|featurep\\|provide\\|require\\)\\_>"
"[ \t']*\\(\\(?:\\sw\\|\\s_\\)+\\)?")
(1 font-lock-keyword-face)
(2 font-lock-constant-face nil t))
;; Erroneous structures.
(,(concat "(" el-errs-re "\\_>")
(1 font-lock-warning-face))
;; Words inside \\[] tend to be for `substitute-command-keys'.
("\\\\\\\\\\[\\(\\(?:\\sw\\|\\s_\\)+\\)\\]"
(1 font-lock-constant-face prepend))
;; Words inside `' tend to be symbol names.
("`\\(\\(?:\\sw\\|\\s_\\)\\(?:\\sw\\|\\s_\\)+\\)'"
(1 font-lock-constant-face prepend))
;; Constant values.
("\\_<:\\(?:\\sw\\|\\s_\\)+\\_>" 0 font-lock-builtin-face)
;; ELisp and CLisp `&' keywords as types.
("\\_<\\&\\(?:\\sw\\|\\s_\\)+\\_>" . font-lock-type-face)
;; ELisp regexp grouping constructs
(,(lambda (bound)
(catch 'found
;; The following loop is needed to continue searching after matches
;; that do not occur in strings. The associated regexp matches one
;; of `\\\\' `\\(' `\\(?:' `\\|' `\\)'. `\\\\' has been included to
;; avoid highlighting, for example, `\\(' in `\\\\('.
(while (re-search-forward "\\(\\\\\\\\\\)\\(?:\\(\\\\\\\\\\)\\|\\((\\(?:\\?[0-9]*:\\)?\\|[|)]\\)\\)" bound t)
(unless (match-beginning 2)
(let ((face (get-text-property (1- (point)) 'face)))
(when (or (and (listp face)
(memq 'font-lock-string-face face))
(eq 'font-lock-string-face face))
(throw 'found t)))))))
(1 'font-lock-regexp-grouping-backslash prepend)
(3 'font-lock-regexp-grouping-construct prepend))
;; This is too general -- rms.
;; A user complained that he has functions whose names start with `do'
;; and that they get the wrong color.
;; ;; CL `with-' and `do-' constructs
;;("(\\(\\(do-\\|with-\\)\\(\\s_\\|\\w\\)*\\)" 1 font-lock-keyword-face)
(lisp--match-hidden-arg
(0 '(face font-lock-warning-face
help-echo "Hidden behind deeper element; move to another line?")))
))
"Gaudy level highlighting for Emacs Lisp mode.")
(defconst lisp-cl-font-lock-keywords-2
(append
lisp-cl-font-lock-keywords-1
`( ;; Regexp negated char group.
("\\[\\(\\^\\)" 1 font-lock-negation-char-face prepend)
;; Control structures. Common Lisp forms.
(,(concat "(" cl-kws-re "\\_>") . 1)
;; Exit/Feature symbols as constants.
(,(concat "(\\(catch\\|throw\\|provide\\|require\\)\\_>"
"[ \t']*\\(\\(?:\\sw\\|\\s_\\)+\\)?")
(1 font-lock-keyword-face)
(2 font-lock-constant-face nil t))
;; Erroneous structures.
(,(concat "(" cl-errs-re "\\_>")
(1 font-lock-warning-face))
;; Words inside `' tend to be symbol names.
("`\\(\\(?:\\sw\\|\\s_\\)\\(?:\\sw\\|\\s_\\)+\\)'"
(1 font-lock-constant-face prepend))
;; Constant values.
("\\_<:\\(?:\\sw\\|\\s_\\)+\\_>" 0 font-lock-builtin-face)
;; ELisp and CLisp `&' keywords as types.
("\\_<\\&\\(?:\\sw\\|\\s_\\)+\\_>" . font-lock-type-face)
;; This is too general -- rms.
;; A user complained that he has functions whose names start with `do'
;; and that they get the wrong color.
;; ;; CL `with-' and `do-' constructs
;;("(\\(\\(do-\\|with-\\)\\(\\s_\\|\\w\\)*\\)" 1 font-lock-keyword-face)
(lisp--match-hidden-arg
(0 '(face font-lock-warning-face
help-echo "Hidden behind deeper element; move to another line?")))
))
"Gaudy level highlighting for Lisp modes."))
(defconst lisp-cl-font-lock-keywords-2
(append
lisp-cl-font-lock-keywords-1
`( ;; Regexp negated char group.
("\\[\\(\\^\\)" 1 font-lock-negation-char-face prepend)
;; Control structures. Common Lisp forms.
(,(concat "(" cl-kws-re "\\_>") . 1)
;; Exit/Feature symbols as constants.
(,(concat "(\\(catch\\|throw\\|provide\\|require\\)\\_>"
"[ \t']*\\(\\(?:\\sw\\|\\s_\\)+\\)?")
(1 font-lock-keyword-face)
(2 font-lock-constant-face nil t))
;; Erroneous structures.
(,(concat "(" cl-errs-re "\\_>")
(1 font-lock-warning-face))
;; Words inside `' tend to be symbol names.
("`\\(\\(?:\\sw\\|\\s_\\)\\(?:\\sw\\|\\s_\\)+\\)'"
(1 font-lock-constant-face prepend))
;; Constant values.
("\\_<:\\(?:\\sw\\|\\s_\\)+\\_>" 0 font-lock-builtin-face)
;; ELisp and CLisp `&' keywords as types.
("\\_<\\&\\(?:\\sw\\|\\s_\\)+\\_>" . font-lock-type-face)
;; This is too general -- rms.
;; A user complained that he has functions whose names start with `do'
;; and that they get the wrong color.
;; ;; CL `with-' and `do-' constructs
;;("(\\(\\(do-\\|with-\\)\\(\\s_\\|\\w\\)*\\)" 1 font-lock-keyword-face)
(lisp--match-hidden-arg
(0 '(face font-lock-warning-face
help-echo "Hidden behind deeper element; move to another line?")))
))
"Gaudy level highlighting for Lisp modes.")))
(define-obsolete-variable-alias 'lisp-font-lock-keywords
'lisp-el-font-lock-keywords "24.4")

View file

@ -746,9 +746,10 @@ The context determines which symbols are considered. If the
symbol starts just after an open-parenthesis, only symbols with
function definitions are considered. Otherwise, all symbols with
function definitions, values or properties are considered."
(declare (obsolete completion-at-point "24.4"))
(declare (obsolete completion-at-point "24.4")
(advertised-calling-convention () "25.1"))
(interactive)
(let* ((data (lisp-completion-at-point))
(let* ((data (elisp-completion-at-point))
(plist (nthcdr 3 data)))
(if (null data)
(minibuffer-message "Nothing to complete")

View file

@ -341,7 +341,7 @@ This variable is fed automatically by Emacs when installing a new package.
This variable is used by `package-autoremove' to decide
which packages are no longer needed.
You can use it to (re)install packages on other machines
by running `package-user-selected-packages-install'.
by running `package-install-selected-packages'.
To check if a package is contained in this list here, use
`package--user-selected-p', as it may populate the variable with
@ -350,8 +350,9 @@ a sane initial value."
(defcustom package-menu-async t
"If non-nil, package-menu will use async operations when possible.
This includes refreshing archive contents as well as installing
packages."
Currently, only the refreshing of archive contents supports
asynchronous operations. Package transactions are still done
synchronously."
:type 'boolean
:version "25.1")
@ -1646,21 +1647,25 @@ These are packages which are neither contained in
unless (memq p needed)
collect p)))
(defun package--used-elsewhere-p (pkg-desc &optional pkg-list)
(defun package--used-elsewhere-p (pkg-desc &optional pkg-list all)
"Non-nil if PKG-DESC is a dependency of a package in PKG-LIST.
Return the first package found in PKG-LIST of which PKG is a
dependency.
dependency. If ALL is non-nil, return all such packages instead.
When not specified, PKG-LIST defaults to `package-alist'
with PKG-DESC entry removed."
(unless (string= (package-desc-status pkg-desc) "obsolete")
(let ((pkg (package-desc-name pkg-desc)))
(cl-loop with alist = (or pkg-list
(remove (assq pkg package-alist)
package-alist))
for p in alist thereis
(and (memq pkg (mapcar #'car (package-desc-reqs (cadr p))))
(car p))))))
(let* ((pkg (package-desc-name pkg-desc))
(alist (or pkg-list
(remove (assq pkg package-alist)
package-alist))))
(if all
(cl-loop for p in alist
if (assq pkg (package-desc-reqs (cadr p)))
collect (cadr p))
(cl-loop for p in alist thereis
(and (assq pkg (package-desc-reqs (cadr p)))
(cadr p)))))))
(defun package--sort-deps-in-alist (package only)
"Return a list of dependencies for PACKAGE sorted by dependency.
@ -1708,31 +1713,26 @@ if all the in-between dependencies are also in PACKAGE-LIST."
"Return the archive containing the package NAME."
(cdr (assoc (package-desc-archive desc) package-archives)))
(defun package-install-from-archive (pkg-desc &optional async callback)
"Download and install a tar package.
If ASYNC is non-nil, perform the download asynchronously.
If CALLBACK is non-nil, call it with no arguments once the
operation is done."
(defun package-install-from-archive (pkg-desc)
"Download and install a tar package."
;; This won't happen, unless the archive is doing something wrong.
(when (eq (package-desc-kind pkg-desc) 'dir)
(error "Can't install directory package from archive"))
(let* ((location (package-archive-base pkg-desc))
(file (concat (package-desc-full-name pkg-desc)
(package-desc-suffix pkg-desc))))
(package--with-work-buffer-async location file async
(package--with-work-buffer location file
(if (or (not package-check-signature)
(member (package-desc-archive pkg-desc)
package-unsigned-archives))
;; If we don't care about the signature, unpack and we're
;; done.
(progn (let ((save-silently async)
(inhibit-message async))
(package-unpack pkg-desc))
(funcall callback))
(let ((save-silently t))
(package-unpack pkg-desc))
;; If we care, check it and *then* write the file.
(let ((content (buffer-string)))
(package--check-signature
location file content async
location file content nil
;; This function will be called after signature checking.
(lambda (&optional good-sigs)
(unless (or good-sigs (eq package-check-signature 'allow-unsigned))
@ -1742,8 +1742,7 @@ operation is done."
(package-desc-name pkg-desc)))
;; Signature checked, unpack now.
(with-temp-buffer (insert content)
(let ((save-silently async)
(inhibit-message async))
(let ((save-silently t))
(package-unpack pkg-desc)))
;; Here the package has been installed successfully, mark it as
;; signed if appropriate.
@ -1759,9 +1758,7 @@ operation is done."
(setf (package-desc-signed pkg-desc) t)
;; Update the new (activated) pkg-desc as well.
(when-let ((pkg-descs (cdr (assq (package-desc-name pkg-desc) package-alist))))
(setf (package-desc-signed (car pkg-descs)) t)))
(when (functionp callback)
(funcall callback)))))))))
(setf (package-desc-signed (car pkg-descs)) t))))))))))
(defun package-installed-p (package &optional min-version)
"Return true if PACKAGE, of MIN-VERSION or newer, is installed.
@ -1782,25 +1779,13 @@ If PACKAGE is a package-desc object, MIN-VERSION is ignored."
;; Also check built-in packages.
(package-built-in-p package min-version))))
(defun package-download-transaction (packages &optional async callback)
(defun package-download-transaction (packages)
"Download and install all the packages in PACKAGES.
PACKAGES should be a list of package-desc.
If ASYNC is non-nil, perform the downloads asynchronously.
If CALLBACK is non-nil, call it with no arguments once the
entire operation is done.
This function assumes that all package requirements in
PACKAGES are satisfied, i.e. that PACKAGES is computed
using `package-compute-transaction'."
(cond
(packages (package-install-from-archive
(car packages)
async
(lambda ()
(package-download-transaction (cdr packages))
(when (functionp callback)
(funcall callback)))))
(callback (funcall callback))))
(mapc #'package-install-from-archive packages))
(defun package--ensure-init-file ()
"Ensure that the user's init file has `package-initialize'.
@ -1853,16 +1838,13 @@ add a call to it along with some explanatory comments."
(setq package--init-file-ensured t))
;;;###autoload
(defun package-install (pkg &optional dont-select async callback)
(defun package-install (pkg &optional dont-select)
"Install the package PKG.
PKG can be a package-desc or the package name of one the available packages
in an archive in `package-archives'. Interactively, prompt for its name.
If called interactively or if DONT-SELECT nil, add PKG to
`package-selected-packages'.
If ASYNC is non-nil, perform the downloads asynchronously.
If CALLBACK is non-nil, call it with no arguments once the
entire operation is done.
If PKG is a package-desc and it is already installed, don't try
to install it but still mark it as selected."
@ -1895,9 +1877,8 @@ to install it but still mark it as selected."
(package-compute-transaction (list pkg)
(package-desc-reqs pkg)))
(package-compute-transaction () (list (list pkg))))))
(package-download-transaction transaction async callback)
(message "`%s' is already installed" (package-desc-full-name pkg))
(funcall callback)))
(package-download-transaction transaction)
(message "`%s' is already installed" (package-desc-full-name pkg))))
(defun package-strip-rcs-id (str)
"Strip RCS version ID from the version string STR.
@ -2027,7 +2008,7 @@ If NOSAVE is non-nil, the package is not removed from
;; Don't delete packages used as dependency elsewhere.
(error "Package `%s' is used by `%s' as dependency, not deleting"
(package-desc-full-name pkg-desc)
pkg-used-elsewhere-by))
(package-desc-name pkg-used-elsewhere-by)))
(t
(delete-directory dir t t)
;; Remove NAME-VERSION.signed file.
@ -2127,6 +2108,7 @@ will be deleted."
(name (if desc (package-desc-name desc) pkg))
(pkg-dir (if desc (package-desc-dir desc)))
(reqs (if desc (package-desc-reqs desc)))
(required-by (if desc (package--used-elsewhere-p desc nil 'all)))
(version (if desc (package-desc-version desc)))
(archive (if desc (package-desc-archive desc)))
(extras (and desc (package-desc-extras desc)))
@ -2168,7 +2150,14 @@ will be deleted."
(insert "'"))
(if signed
(insert ".")
(insert " (unsigned).")))
(insert " (unsigned)."))
(when (and (package-desc-p desc)
(not required-by)
(package-installed-p desc))
(insert " ")
(package-make-button "Delete"
'action #'package-delete-button-action
'package-desc desc)))
(incompatible-reason
(insert (propertize "Incompatible" 'face font-lock-warning-face)
" because it depends on ")
@ -2212,6 +2201,19 @@ will be deleted."
(help-insert-xref-button text 'help-package name)
(insert reason)))
(insert "\n")))
(when required-by
(insert (propertize "Required by" 'font-lock-face 'bold) ": ")
(let ((first t))
(dolist (pkg required-by)
(let ((text (package-desc-full-name pkg)))
(cond (first (setq first nil))
((>= (+ 2 (current-column) (length text))
(window-width))
(insert ",\n "))
(t (insert ", ")))
(help-insert-xref-button text 'help-package
(package-desc-name pkg))))
(insert "\n")))
(insert " " (propertize "Summary" 'font-lock-face 'bold)
": " (if desc (package-desc-summary desc)) "\n")
(when homepage
@ -2299,6 +2301,14 @@ will be deleted."
(revert-buffer nil t)
(goto-char (point-min)))))
(defun package-delete-button-action (button)
(let ((pkg-desc (button-get button 'package-desc)))
(when (y-or-n-p (format "Delete package `%s'? "
(package-desc-full-name pkg-desc)))
(package-delete pkg-desc)
(revert-buffer nil t)
(goto-char (point-min)))))
(defun package-keyword-button-action (button)
(let ((pkg-keyword (button-get button 'package-keyword)))
(package-show-package-list t (list pkg-keyword))))
@ -2390,12 +2400,17 @@ will be deleted."
(defvar package-menu--new-package-list nil
"List of newly-available packages since `list-packages' was last called.")
(defvar package-menu--transaction-status nil
"Mode-line status of ongoing package transaction.")
(define-derived-mode package-menu-mode tabulated-list-mode "Package Menu"
"Major mode for browsing a list of packages.
Letters do not insert themselves; instead, they are commands.
\\<package-menu-mode-map>
\\{package-menu-mode-map}"
(setq mode-line-process '(package--downloads-in-progress ":Loading"))
(setq mode-line-process '((package--downloads-in-progress ":Loading")
(package-menu--transaction-status
package-menu--transaction-status)))
(setq tabulated-list-format
`[("Package" 18 package-menu--name-predicate)
("Version" 13 nil)
@ -2885,57 +2900,77 @@ prompt (see `package-menu--prompt-transaction-p')."
(t (format "package `%s'"
(package-desc-full-name (car packages))))))
(defun package-menu--prompt-transaction-p (install delete)
"Prompt the user about installing INSTALL and deleting DELETE.
INSTALL and DELETE are lists of `package-desc'. Either may be
nil, but not both."
(defun package-menu--prompt-transaction-p (delete install upgrade)
"Prompt the user about DELETE, INSTALL, and UPGRADE.
DELETE, INSTALL, and UPGRADE are lists of `package-desc' objects.
Either may be nil, but not all."
(y-or-n-p
(concat
(when delete "Delete ")
(package-menu--list-to-prompt delete)
(when (and delete install)
(if upgrade "; " "; and "))
(when install "Install ")
(package-menu--list-to-prompt install)
(when (and upgrade (or install delete)) "; and ")
(when upgrade "Upgrade ")
(package-menu--list-to-prompt upgrade)
"? ")))
(defun package-menu--partition-transaction (install delete)
"Return an alist describing an INSTALL DELETE transaction.
Alist contains three entries, upgrade, delete, and install, each
with a list of package names.
The upgrade entry contains any `package-desc' objects in INSTALL
whose name coincides with an object in DELETE. The delete and
the install entries are the same as DELETE and INSTALL with such
objects removed."
(let* ((upg (cl-intersection install delete :key #'package-desc-name))
(ins (cl-set-difference install upg :key #'package-desc-name))
(del (cl-set-difference delete upg :key #'package-desc-name)))
(y-or-n-p
(concat
(when del "Delete ")
(package-menu--list-to-prompt del)
(when (and del ins)
(if upg "; " "; and "))
(when ins "Install ")
(package-menu--list-to-prompt ins)
(when (and upg (or ins del)) "; and ")
(when upg "Upgrade ")
(package-menu--list-to-prompt upg)
"? "))))
`((delete . ,del) (install . ,ins) (upgrade . ,upg))))
(defun package-menu--perform-transaction (install-list delete-list &optional async)
"Install packages in INSTALL-LIST and delete DELETE-LIST.
If ASYNC is non-nil, perform the installation downloads
asynchronously."
;; While there are packages to install, call `package-install' on
;; the next one and defer deletion to the callback function.
(defun package-menu--perform-transaction (install-list delete-list)
"Install packages in INSTALL-LIST and delete DELETE-LIST."
(if install-list
(let* ((pkg (car install-list))
(rest (cdr install-list))
;; Don't mark as selected if it's a new version of an
;; installed package.
(dont-mark (and (not (package-installed-p pkg))
(package-installed-p
(package-desc-name pkg)))))
(package-install
pkg dont-mark async
(lambda () (package-menu--perform-transaction rest delete-list async))))
(let ((inhibit-message async))
;; Once there are no more packages to install, proceed to
;; deletion.
(let ((status-format (format ":Installing %%d/%d"
(length install-list)))
(i 0)
(package-menu--transaction-status))
(dolist (pkg install-list)
(setq package-menu--transaction-status
(format status-format (cl-incf i)))
(force-mode-line-update)
(redisplay 'force)
;; Don't mark as selected, `package-menu-execute' already
;; does that.
(package-install pkg 'dont-select)))
;; Once there are no more packages to install, proceed to
;; deletion.
(let ((package-menu--transaction-status ":Deleting"))
(force-mode-line-update)
(redisplay 'force)
(dolist (elt (package--sort-by-dependence delete-list))
(condition-case-unless-debug err
(package-delete elt)
(error (message (cadr err))))))
(message "Transaction done")
(when package-selected-packages
(when-let ((removable (package--removable-packages)))
(message "These %d packages are no longer needed, type `M-x package-autoremove' to remove them (%s)"
(length removable)
(mapconcat #'symbol-name removable ", "))))
(package-menu--post-refresh)))
(let ((inhibit-message t))
(package-delete elt nil 'nosave))
(error (message (cadr err))))))))
(defun package--update-selected-packages (add remove)
"Update the `package-selected-packages' list according to ADD and REMOVE.
ADD and REMOVE must be disjoint lists of package names (or
`package-desc' objects) to be added and removed to the selected
packages list, respectively."
(dolist (p add)
(cl-pushnew (if (package-desc-p p) (package-desc-name p) p)
package-selected-packages))
(dolist (p remove)
(setq package-selected-packages
(remove (if (package-desc-p p) (package-desc-name p) p)
package-selected-packages)))
(when (or add remove)
(package--save-selected-packages package-selected-packages)))
(defun package-menu-execute (&optional noquery)
"Perform marked Package Menu actions.
@ -2960,12 +2995,30 @@ Optional argument NOQUERY non-nil means do not ask the user to confirm."
(forward-line)))
(unless (or delete-list install-list)
(user-error "No operations specified"))
(when (or noquery
(package-menu--prompt-transaction-p install-list delete-list))
(message "Transaction started")
;; This calls `package-menu--generate' after everything's done.
(package-menu--perform-transaction
install-list delete-list package-menu-async))))
(let-alist (package-menu--partition-transaction install-list delete-list)
(when (or noquery
(package-menu--prompt-transaction-p .delete .install .upgrade))
(let ((message-template
(concat "Package menu: Operation %s ["
(when .delete (format "Delet__ %s" (length .delete)))
(when (and .delete .install) "; ")
(when .install (format "Install__ %s" (length .install)))
(when (and .upgrade (or .install .delete)) "; ")
(when .upgrade (format "Upgrad__ %s" (length .upgrade)))
"]")))
(message (replace-regexp-in-string "__" "ing" message-template) "started")
;; Packages being upgraded are not marked as selected.
(package--update-selected-packages .install .delete)
(package-menu--perform-transaction install-list delete-list)
(when package-selected-packages
(if-let ((removable (package--removable-packages)))
(message "Package menu: Operation finished. %d packages %s"
(length removable)
"are no longer needed, type `M-x package-autoremove' to remove them")
(message (replace-regexp-in-string "__" "ed" message-template)
"finished"))))
;; This calls `package-menu--generate'.
(package-menu--post-refresh)))))
(defun package-menu--version-predicate (A B)
(let ((vA (or (aref (cadr A) 1) '(0)))

View file

@ -140,6 +140,10 @@ to bind a single value, BINDINGS can just be a plain tuple."
(declare (indent 1) (debug if-let))
(list 'if-let bindings (macroexp-progn body)))
(defsubst hash-table-empty-p (hash-table)
"Check whether HASH-TABLE is empty (has 0 elements)."
(zerop (hash-table-count hash-table)))
(defsubst hash-table-keys (hash-table)
"Return a list of keys in HASH-TABLE."
(let ((keys '()))

View file

@ -574,7 +574,7 @@ running the hook."
;; (defun buffer-syntactic-context (&optional buffer)
;; "Syntactic context at point in BUFFER.
;; Either of `string', `comment' or `nil'.
;; Either of `string', `comment' or nil.
;; This is an XEmacs compatibility function."
;; (with-current-buffer (or buffer (current-buffer))
;; (syntax-ppss-context (syntax-ppss))))

View file

@ -1301,7 +1301,7 @@ Usually contains ` ', linefeed, TAB or formfeed.")
))
;; SYMBOL is used because customize requires it, but it is ignored, unless it
;; is `nil'. If nil, use setq.
;; is nil. If nil, use setq.
(defun viper-set-syntax-preference (&optional symbol value)
"Set Viper syntax preference.
If called interactively or if SYMBOL is nil, sets syntax preference in current

View file

@ -652,7 +652,7 @@ EVENT is the message received from the closed connection process."
(run-at-time erc-server-reconnect-timeout nil
#'erc-process-sentinel-2
event buffer)
(error (concat "`erc-server-reconnect-timeout`"
(error (concat "`erc-server-reconnect-timeout'"
" must be a number")))))))))))
(defun erc-process-sentinel-1 (event buffer)

View file

@ -78,7 +78,7 @@ The alist's format is as follows:
(defun erc-ezb-get-login (server port)
"Return an appropriate EZBounce login for SERVER and PORT.
Look up entries in `erc-ezb-login-alist'. If the username or password
in the alist is `nil', prompt for the appropriate values."
in the alist is nil, prompt for the appropriate values."
(let ((login (cdr (assoc (cons server port) erc-ezb-login-alist))))
(when login
(let ((username (car login))

View file

@ -33,7 +33,7 @@
;;
;; If you want nickname completions ordered such that the most recent
;; speakers are listed first, set
;; `erc-pcomplete-order-nickname-completions' to `t'.
;; `erc-pcomplete-order-nickname-completions' to t.
;;
;; See CREDITS for other contributors.
;;

View file

@ -1,3 +1,4 @@
;; erc.el --- An Emacs Internet Relay Chat client -*- lexical-binding:t -*-
;; Copyright (C) 1997-2015 Free Software Foundation, Inc.
@ -12,6 +13,7 @@
;; Kelvin White (kwhite@gnu.org)
;; Maintainer: emacs-devel@gnu.org
;; Keywords: IRC, chat, client, Internet
;; Version: 5.3
;; This file is part of GNU Emacs.
@ -37,15 +39,13 @@
;; * http://sv.gnu.org/projects/erc/
;; * http://www.emacswiki.org/cgi-bin/wiki/ERC
;; As of 2006-06-13, ERC development is now hosted on Savannah
;; (http://sv.gnu.org/projects/erc). I invite everyone who wants to
;; hack on it to contact me <mwolson@gnu.org> in order to get write
;; access to the shared Arch archive.
;; Installation:
;; Put erc.el in your load-path, and put (require 'erc) in your .emacs.
;; Configuration:
;; Use M-x customize-group RET erc RET to get an overview
@ -258,11 +258,25 @@ If nil, only \"> \" will be shown."
(repeat :inline t :tag "Others" (string :tag "IRC Message Type"))))
(defcustom erc-hide-list nil
"List of IRC type messages to hide.
"A global list of IRC message types to hide.
A typical value would be '(\"JOIN\" \"PART\" \"QUIT\")."
:group 'erc-ignore
:type 'erc-message-type)
(defcustom erc-network-hide-list nil
"A list of IRC networks to hide message types from.
A typical value would be '((\"freenode\" \"MODE\")
(\"OFTC\" \"JOIN\" \"QUIT\"))."
:group 'erc-ignore
:type 'erc-message-type)
(defcustom erc-channel-hide-list nil
"A list of IRC channels to hide message types from.
A typical value would be '((\"#emacs\" \"QUIT\" \JOIN\")
(\"#erc\" \"NICK\")."
:group 'erc-ignore
:type 'erc-message-type)
(defvar erc-session-password nil
"The password used for the current session.")
(make-variable-buffer-local 'erc-session-password)
@ -2616,15 +2630,36 @@ otherwise `erc-server-announced-name'. SERVER is matched against
erc-common-server-suffixes))
erc-server-announced-name)))
(defun erc-add-targets (scope target-list)
(let ((targets
(mapcar (lambda (targets) (member scope targets)) target-list)))
(cdr (apply 'append (delete nil targets)))))
(defun erc-hide-current-message-p (parsed)
"Predicate indicating whether the parsed ERC response PARSED should be hidden.
Messages are always hidden if the message type of PARSED appears in
`erc-hide-list'. In addition, messages whose type is a member of
`erc-lurker-hide-list' are hidden if `erc-lurker-p' returns true."
`erc-hide-list'. Message types that appear in `erc-network-hide-list'
or `erc-channel-hide-list' are are only hidden if the target matches
the network or channel in the list. In addition, messages whose type
is a member of `erc-lurker-hide-list' are hidden if `erc-lurker-p'
returns non-nil."
(let* ((command (erc-response.command parsed))
(sender (car (erc-parse-user (erc-response.sender parsed)))))
(sender (car (erc-parse-user (erc-response.sender parsed))))
(channel (nth 1 (erc-response.command-args parsed)))
(network (or (and (fboundp 'erc-network-name) (erc-network-name))
(erc-shorten-server-name
(or erc-server-announced-name
erc-session-server))))
(current-hide-list
(when erc-network-hide-list
(erc-add-targets network erc-network-hide-list)))
(current-hide-list
(apply 'append current-hide-list
(when erc-channel-hide-list
(erc-add-targets channel erc-channel-hide-list)))))
(or (member command erc-hide-list)
(member command current-hide-list)
(and (member command erc-lurker-hide-list) (erc-lurker-p sender)))))
(defun erc-display-message (parsed type buffer msg &rest args)
@ -4150,7 +4185,7 @@ See also `erc-display-error-notice'."
;; server's setting if we haven't
;; established a connection yet
(- 9 (length erc-nick-uniquifier))))
erc-nick-uniquifier)))
erc-nick-uniqifier)))
(erc-cmd-NICK newnick)
(erc-display-error-notice
nil

View file

@ -132,6 +132,13 @@ character to the invoked process."
:type 'boolean
:group 'eshell-term)
(defcustom eshell-destroy-buffer-when-process-dies nil
"If non-nil, term buffers are destroyed after their processes die.
WARNING: Setting this to non-nil may result in unexpected
behavior for short-lived processes, see bug#18108."
:type 'boolean
:group 'eshell-term)
;;; Internal Variables:
(defvar eshell-parent-buffer)
@ -190,20 +197,24 @@ allowed."
nil)
;; Process sentinels receive two arguments.
(defun eshell-term-sentinel (proc _string)
"Destroy the buffer visiting PROC."
(let ((proc-buf (process-buffer proc)))
(when (and proc-buf (buffer-live-p proc-buf)
(not (eq 'run (process-status proc)))
(= (process-exit-status proc) 0))
(if (eq (current-buffer) proc-buf)
(let ((buf (and (boundp 'eshell-parent-buffer)
eshell-parent-buffer
(buffer-live-p eshell-parent-buffer)
eshell-parent-buffer)))
(if buf
(switch-to-buffer buf))))
(kill-buffer proc-buf))))
(defun eshell-term-sentinel (proc msg)
"Clean up the buffer visiting PROC.
If `eshell-destroy-buffer-when-process-dies' is non-nil, destroy
the buffer."
(term-sentinel proc msg) ;; First call the normal term sentinel.
(when eshell-destroy-buffer-when-process-dies
(let ((proc-buf (process-buffer proc)))
(when (and proc-buf (buffer-live-p proc-buf)
(not (eq 'run (process-status proc)))
(= (process-exit-status proc) 0))
(if (eq (current-buffer) proc-buf)
(let ((buf (and (boundp 'eshell-parent-buffer)
eshell-parent-buffer
(buffer-live-p eshell-parent-buffer)
eshell-parent-buffer)))
(if buf
(switch-to-buffer buf))))
(kill-buffer proc-buf)))))
;; jww (1999-09-17): The code below will allow Eshell to send input
;; characters directly to the currently running interactive process.

View file

@ -357,22 +357,31 @@ after are both returned."
(goto-char (1+ end)))))))
(defun eshell-parse-special-reference ()
"Parse a special syntax reference, of the form '#<type arg>'."
(if (and (not eshell-current-argument)
(not eshell-current-quoted)
(looking-at "#<\\(buffer\\|process\\)\\s-"))
(let ((here (point)))
(goto-char (match-end 0))
(let* ((buffer-p (string= (match-string 1) "buffer"))
(end (eshell-find-delimiter ?\< ?\>)))
(if (not end)
(throw 'eshell-incomplete ?\<)
(if (eshell-arg-delimiter (1+ end))
(prog1
(list (if buffer-p 'get-buffer-create 'get-process)
(buffer-substring-no-properties (point) end))
(goto-char (1+ end)))
(ignore (goto-char here))))))))
"Parse a special syntax reference, of the form '#<args>'.
args := `type' `whitespace' `arbitrary-args' | `arbitrary-args'
type := \"buffer\" or \"process\"
arbitrary-args := any string of characters.
If the form has no 'type', the syntax is parsed as if 'type' were
\"buffer\"."
(when (and (not eshell-current-argument)
(not eshell-current-quoted)
(looking-at "#<\\(\\(buffer\\|process\\)\\s-\\)?"))
(let ((here (point)))
(goto-char (match-end 0)) ;; Go to the end of the match.
(let ((buffer-p (if (match-string 1)
(string= (match-string 2) "buffer")
t)) ;; buffer-p is non-nil by default.
(end (eshell-find-delimiter ?\< ?\>)))
(when (not end)
(throw 'eshell-incomplete ?\<))
(if (eshell-arg-delimiter (1+ end))
(prog1
(list (if buffer-p 'get-buffer-create 'get-process)
(buffer-substring-no-properties (point) end))
(goto-char (1+ end)))
(ignore (goto-char here)))))))
(defun eshell-parse-delimiter ()
"Parse an argument delimiter, which is essentially a command operator."

View file

@ -31,6 +31,18 @@
;; consistent with most shells. Therefore, only unique features are
;; mentioned here.
;;
;;;_* Redirect to a Buffer or Process
;;
;; Buffers and processes can be named with '#<buffer buffer-name>' and
;; '#<process process-name>', respectively. As a shorthand,
;; '#<buffer-name>' without the explicit "buffer" arg is equivalent to
;; '#<buffer buffer-name>'.
;;
;; echo hello > #<buffer *scratch*> # Overwrite '*scratch*' with 'hello'.
;; echo hello > #<*scratch*> # Same as the command above.
;;
;; echo hello > #<process shell> # Pipe "hello" into the shell process.
;;
;;;_* Insertion
;;
;; To insert at the location of point in a buffer, use '>>>':
@ -98,19 +110,6 @@ other buffers) ."
:type 'integer
:group 'eshell-io)
(defcustom eshell-buffer-shorthand nil
"If non-nil, a symbol name can be used for a buffer in redirection.
If nil, redirecting to a buffer requires buffer name syntax. If this
variable is set, redirection directly to Lisp symbols will be
impossible.
Example:
echo hello > '*scratch* ; works if `eshell-buffer-shorthand' is t
echo hello > #<buffer *scratch*> ; always works"
:type 'boolean
:group 'eshell-io)
(defcustom eshell-print-queue-size 5
"The size of the print queue, for doing buffered printing.
This is basically a speed enhancement, to avoid blocking the Lisp code
@ -355,21 +354,14 @@ it defaults to `insert'."
(goto-char (point-max))))
(point-marker))))))
((or (bufferp target)
(and (boundp 'eshell-buffer-shorthand)
(symbol-value 'eshell-buffer-shorthand)
(symbolp target)
(not (memq target '(t nil)))))
(let ((buf (if (bufferp target)
target
(get-buffer-create
(symbol-name target)))))
(with-current-buffer buf
(cond ((eq mode 'overwrite)
(erase-buffer))
((eq mode 'append)
(goto-char (point-max))))
(point-marker))))
((bufferp target)
(with-current-buffer target
(cond ((eq mode 'overwrite)
(erase-buffer))
((eq mode 'append)
(goto-char (point-max))))
(point-marker)))
((functionp target) nil)

View file

@ -206,7 +206,7 @@ This is used by `eshell-watch-for-password-prompt'."
;; Internal Variables:
;; these are only set to `nil' initially for the sake of the
;; these are only set to nil initially for the sake of the
;; byte-compiler, when compiling other files which `require' this one
(defvar eshell-mode nil)
(defvar eshell-mode-map nil)

View file

@ -33,7 +33,7 @@
;;; User Variables:
(defcustom eshell-stringify-t t
"If non-nil, the string representation of t is 't'.
"If non-nil, the string representation of t is \"t\".
If nil, t will be represented only in the exit code of the function,
and not printed as a string. This causes Lisp functions to behave
similarly to external commands, as far as successful result output."

View file

@ -187,7 +187,7 @@ of face attribute/value pairs, like in a `face' text property.
If SPECS is empty, call `face-remap-reset-base' to use the normal
definition of FACE as the base remapping; note that this is
different from SPECS containing a single value `nil', which means
different from SPECS containing a single value nil, which means
not to inherit from the global definition of FACE at all."
(while (and (consp specs) (not (null (car specs))) (null (cdr specs)))
(setq specs (car specs)))

View file

@ -458,7 +458,7 @@ These special properties include `invisible', `intangible' and `read-only'."
(defcustom list-colors-sort nil
"Color sort order for `list-colors-display'.
`nil' means default implementation-dependent order (defined in `x-colors').
nil means default implementation-dependent order (defined in `x-colors').
`name' sorts by color name.
`rgb' sorts by red, green, blue components.
`(rgb-dist . COLOR)' sorts by the RGB distance to the specified color.

View file

@ -619,7 +619,7 @@ VALUE must be a string specifying the font family
`:foundry'
VALUE must be a string specifying the font foundry,
e.g. ``adobe''. If a font foundry is specified, wild-cards `*'
e.g., \"adobe\". If a font foundry is specified, wild-cards `*'
and `?' are allowed.
`:width'
@ -892,7 +892,7 @@ where COLOR is a string or `foreground-color', and STYLE is either
foreground color. :style may be omitted, which means to use a line.
FRAME nil or not specified means change face on all frames.
Use `set-face-attribute' to ``unspecify'' underlining."
Use `set-face-attribute' to \"unspecify\" underlining."
(interactive (read-face-and-attribute :underline))
(set-face-attribute face frame :underline underline))
@ -905,7 +905,7 @@ Use `set-face-attribute' to ``unspecify'' underlining."
INVERSE-VIDEO-P non-nil means FACE displays explicitly in inverse video.
INVERSE-VIDEO-P nil means FACE explicitly is not in inverse video.
FRAME nil or not specified means change face on all frames.
Use `set-face-attribute' to ``unspecify'' the inverse video attribute."
Use `set-face-attribute' to \"unspecify\" the inverse video attribute."
(interactive
(let ((list (read-face-and-attribute :inverse-video)))
(list (car list) (if (cadr list) t))))
@ -2042,7 +2042,7 @@ Value is the new parameter list."
"Create and return a frame with frame parameters PARAMETERS.
If PARAMETERS specify a frame name, handle X geometry resources
for that name. If PARAMETERS includes a `reverse' parameter, or
the X resource ``reverseVideo'' is present, handle that."
the X resource \"reverseVideo\" is present, handle that."
(setq parameters (x-handle-named-frame-geometry parameters))
(let* ((params (copy-tree parameters))
(visibility-spec (assq 'visibility parameters))

View file

@ -1092,14 +1092,14 @@ Tip: You can use this expansion of remote identifier components
(defcustom remote-file-name-inhibit-cache 10
"Whether to use the remote file-name cache for read access.
When `nil', never expire cached values (caution)
When `t', never use the cache (safe, but may be slow)
When nil, never expire cached values (caution)
When t, never use the cache (safe, but may be slow)
A number means use cached values for that amount of seconds since caching.
The attributes of remote files are cached for better performance.
If they are changed outside of Emacs's control, the cached values
become invalid, and must be reread. If you are sure that nothing
other than Emacs changes the files, you can set this variable to `nil'.
other than Emacs changes the files, you can set this variable to nil.
If a remote file is checked regularly, it might be a good idea to
let-bind this variable to a value less than the interval between

View file

@ -1755,7 +1755,7 @@ Otherwise enables edit mode if the visited file is writable."
With ARG: store the record after the current one.
If `forms-new-record-filter' contains the name of a function,
it is called to fill (some of) the fields with default values.
If `forms-insert-after is non-nil, the default behavior is to insert
If `forms-insert-after' is non-nil, the default behavior is to insert
after the current record."
(interactive "P")

View file

@ -35,8 +35,9 @@
;; Verifying Cancel-Lock is mainly a function of news servers, however,
;; you can verify your own article using the command `canlock-verify' in
;; the (raw) article buffer. You will be prompted for the password for
;; each time if the option `canlock-password' or `canlock-password-for-
;; verify' is nil. Note that setting these options is a bit unsafe.
;; each time if the option `canlock-password' or
;; `canlock-password-for-verify' is nil. Note that setting these
;; options is a bit unsafe.
;;; Code:

View file

@ -78,7 +78,7 @@
;; `gnus-outlook-deuglify-unwrap-stop-chars'. Setting this to ".?!"
;; inhibits unwrapping if the cited line ends with a full stop,
;; question mark or exclamation mark. Note that this variable
;; defaults to `nil', triggering a few false positives but generally
;; defaults to nil, triggering a few false positives but generally
;; giving you better results.
;;
;; Unwrapping works on every level of citation. Thus you will be able
@ -110,7 +110,7 @@
;; > Bye, John
;;
;; Repairing the attribution line will be done by function
;; `gnus-article-outlook-repair-attribution which calls other function that
;; `gnus-article-outlook-repair-attribution' which calls other function that
;; try to recognize and repair broken attribution lines. See variable
;; `gnus-outlook-deuglify-attrib-cut-regexp' for stuff that should be
;; cut off from the beginning of an attribution line and variable
@ -121,7 +121,7 @@
;; Rearranging the article so that the cited text appears above the
;; new text will be done by function
;; `gnus-article-outlook-rearrange-citation'. This function calls
;; `gnus-article-outlook-repair-attribution to find and repair an attribution
;; `gnus-article-outlook-repair-attribution' to find and repair an attribution
;; line.
;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@ -177,14 +177,14 @@
;; As I said before there may (or will) be a few false positives on
;; unwrapping cited lines with `gnus-article-outlook-unwrap-lines'.
;;
;; `gnus-article-outlook-repair-attribution will only fix the first
;; `gnus-article-outlook-repair-attribution' will only fix the first
;; attribution line found in the article. Furthermore it fixed to
;; certain kinds of attributions. And there may be horribly many
;; false positives, vanishing lines and so on -- so don't trust your
;; eyes. Again I recommend manual invocation.
;;
;; `gnus-article-outlook-rearrange-citation' carries all the limitations of
;; `gnus-article-outlook-repair-attribution.
;; `gnus-article-outlook-repair-attribution'.
;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;

View file

@ -1256,7 +1256,7 @@ how to control what it hides."
:type gnus-article-treat-custom)
(defcustom gnus-treat-strip-list-identifiers 'head
"Strip list identifiers from `gnus-list-identifiers`.
"Strip list identifiers from `gnus-list-identifiers'.
Valid values are nil, t, `head', `first', `last', an integer or a
predicate. See Info node `(gnus)Customizing Articles'."
:version "21.1"
@ -1735,7 +1735,7 @@ regexp."
(modify-syntax-entry ?` " " table)
table)
"Syntax table used in article mode buffers.
Initialized from `text-mode-syntax-table.")
Initialized from `text-mode-syntax-table'.")
(defvar gnus-save-article-buffer nil)

View file

@ -272,7 +272,7 @@ DOC is a documentation string for the parameter.")
(repeat (list (string :format "%v" :tag "File name"))))
"Which score files to use when using score to select articles to fetch.
`nil'
nil
All articles will be scored to zero (0).
`file'

View file

@ -3285,7 +3285,7 @@ mail messages or news articles in files that have numeric names."
Rights is a string listing a (possibly empty) set of alphanumeric
characters, each character listing a set of operations which is being
controlled. Letters are reserved for ``standard'' rights, listed
controlled. Letters are reserved for \"standard\" rights, listed
below. Digits are reserved for implementation or site defined rights.
l - lookup (mailbox is visible to LIST/LSUB commands)

View file

@ -4376,7 +4376,7 @@ Returns HEADER if it was entered in the DEPENDENCIES. Returns nil otherwise."
;; The last case ignores an existing entry, except it adds any
;; additional Xrefs (in case the two articles came from different
;; servers.
;; Also sets `header' to `nil' meaning that the `dependencies'
;; Also sets `header' to nil meaning that the `dependencies'
;; table was *not* modified.
(t
(mail-header-set-xref

View file

@ -1123,7 +1123,7 @@ e.g. using `gnus-posting-styles':
(defcustom message-cite-style nil
"*The overall style to be used when yanking cited text.
Value is either `nil' (no variable overrides) or a let-style list
Value is either nil (no variable overrides) or a let-style list
of pairs (VARIABLE VALUE) that will be bound in
`message-yank-original' to do the quoting.

View file

@ -199,7 +199,7 @@ from the document.")
;; lines in the body. For MIME dissections only, ARTICLE-INSERT [5] and
;; SUMMARY-INSERT [6] give headers to insert for full article or summary line
;; generation, respectively. Other headers usually follow directly from the
;; buffer. Value `nil' means no insert.
;; buffer. Value nil means no insert.
(defvoo nndoc-dissection-alist nil)
(defvoo nndoc-prepare-body-function nil)
(defvoo nndoc-generate-head-function nil)

View file

@ -84,13 +84,13 @@ Some of the FLAGS correspond to Gnus marks.")
(defsubst nnmaildir--mark-to-flag (mark)
"Find the Maildir flag that corresponds to MARK (an atom).
Return a character, or `nil' if not found.
Return a character, or nil if not found.
See `nnmaildir-flag-mark-mapping'."
(car (rassq mark nnmaildir-flag-mark-mapping)))
(defsubst nnmaildir--flag-to-mark (flag)
"Find the Gnus mark that corresponds to FLAG (a character).
Return an atom, or `nil' if not found.
Return an atom, or nil if not found.
See `nnmaildir-flag-mark-mapping'."
(cdr (assq flag nnmaildir-flag-mark-mapping)))

View file

@ -1136,7 +1136,7 @@ other than `\"' and `\\' in quoted strings."
;; `decode-coding-string' in Emacs offers a third optional
;; arg NOCOPY to avoid consing a new string if the decoding
;; is "trivial". Unfortunately it currently doesn't
;; consider anything else than a `nil' coding system
;; consider anything else than a nil coding system
;; trivial.
;; `rfc2047-decode-string' is called multiple times for each
;; article during summary buffer generation, and we really

View file

@ -99,10 +99,10 @@
;; from the kill ring. May be good if you don't know how far up in
;; the kill-ring the required entry is, and don't want to mess with
;; "Choose Next Paste".
;; `try-complete-lisp-symbol' : like `lisp-complete-symbol', but goes
;; `try-complete-lisp-symbol' : like `elisp-completion-at-point', but goes
;; through all possibilities instead of completing what is unique.
;; Might be tedious (usually a lot of possible completions) and
;; since its function is much like `lisp-complete-symbol', which
;; since its function is much like `completion-at-point', which
;; already has a key of its own, you might want to remove this.
;; `try-complete-lisp-symbol-partially' : To insert in the list just
;; before `try-complete-lisp-symbol' for those who first want to get

View file

@ -1908,9 +1908,9 @@ the buffer object itself and the current mark symbol."
;; Kill the line if the buffer is dead
'kill)))
;; A given mapping function should return:
;; `nil' if it chose not to affect the buffer
;; nil if it chose not to affect the buffer
;; `kill' means the remove line from the buffer list
;; `t' otherwise
;; t otherwise
(cl-incf ibuffer-map-lines-total)
(cond ((null result)
(forward-line 1))

View file

@ -149,16 +149,26 @@ icompletion is occurring."
(defvar icomplete-minibuffer-map
(let ((map (make-sparse-keymap)))
(define-key map [?\M-\t] 'minibuffer-force-complete)
(define-key map [?\C-j] 'minibuffer-force-complete-and-exit)
(define-key map [?\C-j] 'icomplete-force-complete-and-exit)
(define-key map [?\C-.] 'icomplete-forward-completions)
(define-key map [?\C-,] 'icomplete-backward-completions)
map)
"Keymap used by `icomplete-mode' in the minibuffer.")
(defun icomplete-force-complete-and-exit ()
"Complete the minibuffer and exit.
Use the first of the matches if there are any displayed, and use
the default otherwise."
(interactive)
(if (or icomplete-show-matches-on-no-input
(> (icomplete--field-end) (icomplete--field-beg)))
(minibuffer-force-complete-and-exit)
(minibuffer-complete-and-exit)))
(defun icomplete-forward-completions ()
"Step forward completions by one entry.
Second entry becomes the first and can be selected with
`minibuffer-force-complete-and-exit'."
`icomplete-force-complete-and-exit'."
(interactive)
(let* ((beg (icomplete--field-beg))
(end (icomplete--field-end))
@ -171,7 +181,7 @@ Second entry becomes the first and can be selected with
(defun icomplete-backward-completions ()
"Step backward completions by one entry.
Last entry becomes the first and can be selected with
`minibuffer-force-complete-and-exit'."
`icomplete-force-complete-and-exit'."
(interactive)
(let* ((beg (icomplete--field-beg))
(end (icomplete--field-end))

View file

@ -377,7 +377,7 @@ use either \\[customize] or the function `ido-mode'."
'("\\` ")
"List of regexps or functions matching buffer names to ignore.
For example, traditional behavior is not to list buffers whose names begin
with a space, for which the regexp is `\\` '. See the source file for
with a space, for which the regexp is \\` . See the source file for
example functions that filter buffer names."
:type '(repeat (choice regexp function))
:group 'ido)
@ -386,7 +386,7 @@ example functions that filter buffer names."
'("\\`CVS/" "\\`#" "\\`.#" "\\`\\.\\./" "\\`\\./")
"List of regexps or functions matching file names to ignore.
For example, traditional behavior is not to list files whose names begin
with a #, for which the regexp is `\\`#'. See the source file for
with a #, for which the regexp is \\`#. See the source file for
example functions that filter filenames."
:type '(repeat (choice regexp function))
:group 'ido)

View file

@ -511,7 +511,7 @@ evaluations respectively. If the working buffer is another IELM
buffer, then the values in the working buffer are used. The variables
`*1', `*2' and `*3', yield the process buffer values.
If, at the start of evaluation, `standard-output' is `t' (the
If, at the start of evaluation, `standard-output' is t (the
default), `standard-output' is set to a special function that
causes output to be directed to the ielm buffer.
`standard-output' is restored after evaluation unless explicitly

View file

@ -303,7 +303,7 @@ when you hit the end of the current node."
"If non-nil, hide the tag and section reference in *note and * menu items.
If value is non-nil but not `hide', also replaces the \"*note\" with \"see\".
If value is non-nil but not t or `hide', the reference section is still shown.
`nil' completely disables this feature. If this is non-nil, you might
nil completely disables this feature. If this is non-nil, you might
want to set `Info-refill-paragraphs'."
:version "22.1"
:type '(choice (const :tag "No hiding" nil)

View file

@ -34,7 +34,7 @@
(combining-vowel . "ꪴꪰꪲꪳꪷꪸꪾ")
(combining-tone . "꪿꫁")
(misc . "-"))))
;; Set all TaiViet characters to `t'.
;; Set all TaiViet characters to t.
(set-char-table-range table (cons #xaa80 #xaac2) t)
(set-char-table-range table (cons #xaadb #xaadf) t)
;; Overwrite it for special characters.

View file

@ -27708,7 +27708,7 @@ Convert space before point into a hard space if the context is right.
If
* character before point is a space character,
* character before that has w character syntax (i.e. it's a word
* character before that has \"w\" character syntax (i.e. it's a word
constituent),
* `tildify-space-pattern' matches when `looking-back' (no more than 10
characters) from before the space character, and

View file

@ -1244,8 +1244,8 @@ Unicode based."
This phonetic layout replaces all the Latin letters with Bulgarian
\(Cyrillic) letters based on similarities in their pronunciation or look.
Note that, since the letters ', ', ' and ' are attached to the
']', '\', '`' and '[' keys respectively, Caps Lock does not affect them."
Note that, since the letters щ, ь, ю and я are attached to the
], \, ` and [ keys respectively, Caps Lock does not affect them."
nil t t t t nil nil nil nil nil t)
;; Ю 1! 2@ 3№ 4$ 5% 6€ 7§ 8* 9( 0) - =+ ьѝ

View file

@ -49,8 +49,8 @@ C-F9 or `M-x ethio-toggle-space'
Toggles space characters for keyboard input. The current mode is
indicated in mode-line, whether by `_' (ASCII space) or `'
(Ethiopic colon-like word separator). Even in the `' mode, an
ASCII space is inserted if the point is preceded by `an Ethiopic
punctuation followed by zero or more ASCII spaces'.
ASCII space is inserted if the point is preceded by an Ethiopic
punctuation char that is followed by zero or more ASCII spaces.
S-F5 or `M-x ethio-toggle-punctuation'
Toggles ASCII punctuation and Ethiopic punctuation for keyboard input.

View file

@ -113,8 +113,8 @@ Only Hebrew-related characters are considered.
Based on latest draft of SI-1452 keyboard layout.
Only Hebrew-related characters are considered.
'`' is used to switch levels instead of Alt-Gr.
Geresh is mapped to '`k'.
` is used to switch levels instead of Alt-Gr.
Geresh is mapped to `k.
" nil t t t t nil nil nil nil nil t)
(quail-define-rules
@ -603,8 +603,8 @@ Not suitable for modern Hebrew input.
Based on Society of Biblical Literature's SIL keyboard layout.
Phonetic and not suitable for modern Hebrew input.
'`' is used to switch levels instead of Alt-Gr.
Euro Sign () is mapped to 'Z'.
` is used to switch levels instead of Alt-Gr.
Euro Sign () is mapped to Z.
" nil t t t t nil nil nil nil nil t)
(quail-define-rules

View file

@ -46,9 +46,9 @@
"Thai Kesmanee input method with TIS620 keyboard layout
The difference from the ordinal Thai keyboard:
'฿' and '' are assigned to '\\' and '|' respectively,
'ฃ' and 'ฅ' are assigned to '`' and '~' respectively,
Don't know where to assign characters '' and ''."
฿ and are assigned to \\ and | respectively,
and are assigned to ` and ~ respectively,
Don't know where to assign characters and ."
nil t t t t nil nil nil nil nil t)
(thai-generate-quail-map

View file

@ -62,7 +62,7 @@ See also `linum-before-numbering-hook'."
(defcustom linum-eager t
"Whether line numbers should be updated after each command.
The conservative setting `nil' might miss some buffer changes,
The conservative setting nil might miss some buffer changes,
and you have to scroll or press \\[recenter-top-bottom] to update the numbers."
:group 'linum
:type 'boolean)

Some files were not shown because too many files have changed in this diff Show more