]> code.delx.au - gnu-emacs/commitdiff
Merge branch 'master' of git.sv.gnu.org:/srv/git/emacs
authorK. Handa <handa@gnu.org>
Sun, 27 Sep 2015 08:06:12 +0000 (17:06 +0900)
committerK. Handa <handa@gnu.org>
Sun, 27 Sep 2015 08:06:12 +0000 (17:06 +0900)
625 files changed:
.gitattributes
CONTRIBUTE
ChangeLog.2
INSTALL.REPO
Makefile.in
admin/FOR-RELEASE
admin/MAINTAINERS
admin/README
admin/authors.el
admin/charsets/compact.awk
admin/charsets/eucjp-ms.awk
admin/charsets/gb180302.awk
admin/charsets/gb180304.awk
admin/coccinelle/vector_contents.cocci
admin/make-emacs
admin/make-tarball.txt
admin/notes/bugtracker
admin/notes/copyright
admin/notes/elpa
admin/notes/git-workflow
admin/notes/hydra
admin/notes/multi-tty
admin/notes/newfile
admin/notes/repo
admin/notes/unicode
admin/quick-install-emacs
autogen.sh
build-aux/gitlog-to-changelog
configure.ac
doc/emacs/abbrevs.texi
doc/emacs/ack.texi
doc/emacs/anti.texi
doc/emacs/arevert-xtra.texi
doc/emacs/basic.texi
doc/emacs/buffers.texi
doc/emacs/building.texi
doc/emacs/cal-xtra.texi
doc/emacs/calendar.texi
doc/emacs/cmdargs.texi
doc/emacs/commands.texi
doc/emacs/custom.texi
doc/emacs/dired.texi
doc/emacs/display.texi
doc/emacs/emacs.texi
doc/emacs/emerge-xtra.texi
doc/emacs/entering.texi
doc/emacs/files.texi
doc/emacs/fixit.texi
doc/emacs/fortran-xtra.texi
doc/emacs/frames.texi
doc/emacs/glossary.texi
doc/emacs/help.texi
doc/emacs/indent.texi
doc/emacs/killing.texi
doc/emacs/kmacro.texi
doc/emacs/macos.texi
doc/emacs/maintaining.texi
doc/emacs/mark.texi
doc/emacs/mini.texi
doc/emacs/misc.texi
doc/emacs/modes.texi
doc/emacs/msdos-xtra.texi
doc/emacs/mule.texi
doc/emacs/package.texi
doc/emacs/picture-xtra.texi
doc/emacs/programs.texi
doc/emacs/regs.texi
doc/emacs/rmail.texi
doc/emacs/screen.texi
doc/emacs/search.texi
doc/emacs/sending.texi
doc/emacs/text.texi
doc/emacs/trouble.texi
doc/emacs/vc1-xtra.texi
doc/emacs/windows.texi
doc/emacs/xresources.texi
doc/lispintro/emacs-lisp-intro.texi
doc/lispref/abbrevs.texi
doc/lispref/anti.texi
doc/lispref/back.texi
doc/lispref/backups.texi
doc/lispref/buffers.texi
doc/lispref/commands.texi
doc/lispref/compile.texi
doc/lispref/control.texi
doc/lispref/customize.texi
doc/lispref/debugging.texi
doc/lispref/display.texi
doc/lispref/edebug.texi
doc/lispref/elisp.texi
doc/lispref/eval.texi
doc/lispref/files.texi
doc/lispref/frames.texi
doc/lispref/functions.texi
doc/lispref/hash.texi
doc/lispref/help.texi
doc/lispref/hooks.texi
doc/lispref/internals.texi
doc/lispref/intro.texi
doc/lispref/keymaps.texi
doc/lispref/lay-flat.texi
doc/lispref/lists.texi
doc/lispref/loading.texi
doc/lispref/macros.texi
doc/lispref/markers.texi
doc/lispref/minibuf.texi
doc/lispref/modes.texi
doc/lispref/nonascii.texi
doc/lispref/numbers.texi
doc/lispref/objects.texi
doc/lispref/os.texi
doc/lispref/package.texi
doc/lispref/positions.texi
doc/lispref/processes.texi
doc/lispref/searching.texi
doc/lispref/sequences.texi
doc/lispref/streams.texi
doc/lispref/strings.texi
doc/lispref/symbols.texi
doc/lispref/syntax.texi
doc/lispref/text.texi
doc/lispref/tips.texi
doc/lispref/variables.texi
doc/lispref/windows.texi
doc/misc/calc.texi
doc/misc/cc-mode.texi
doc/misc/ediff.texi
doc/misc/efaq.texi
doc/misc/gnus-faq.texi
doc/misc/reftex.texi
doc/misc/texinfo.tex
doc/misc/tramp.texi
doc/misc/url.texi
etc/AUTHORS
etc/NEWS
etc/PROBLEMS
etc/emacs-buffer.gdb
etc/images/README
etc/images/connect.pbm [new file with mode: 0644]
etc/images/custom/down-pushed.pbm [new file with mode: 0644]
etc/images/custom/down.pbm [new file with mode: 0644]
etc/images/custom/right-pushed.pbm [new file with mode: 0644]
etc/images/custom/right.pbm [new file with mode: 0644]
etc/images/describe.pbm [new file with mode: 0644]
etc/images/disconnect.pbm [new file with mode: 0644]
etc/images/ezimage/bits.pbm [new file with mode: 0644]
etc/images/ezimage/bitsbang.pbm [new file with mode: 0644]
etc/images/ezimage/box-minus.pbm [new file with mode: 0644]
etc/images/ezimage/box-plus.pbm [new file with mode: 0644]
etc/images/ezimage/box.pbm [new file with mode: 0644]
etc/images/ezimage/checkmark.pbm [new file with mode: 0644]
etc/images/ezimage/dir-minus.pbm [new file with mode: 0644]
etc/images/ezimage/dir-plus.pbm [new file with mode: 0644]
etc/images/ezimage/dir.pbm [new file with mode: 0644]
etc/images/ezimage/doc-minus.pbm [new file with mode: 0644]
etc/images/ezimage/doc-plus.pbm [new file with mode: 0644]
etc/images/ezimage/doc.pbm [new file with mode: 0644]
etc/images/ezimage/info.pbm [new file with mode: 0644]
etc/images/ezimage/key.pbm [new file with mode: 0644]
etc/images/ezimage/label.pbm [new file with mode: 0644]
etc/images/ezimage/lock.pbm [new file with mode: 0644]
etc/images/ezimage/mail.pbm [new file with mode: 0644]
etc/images/ezimage/page-minus.pbm [new file with mode: 0644]
etc/images/ezimage/page-plus.pbm [new file with mode: 0644]
etc/images/ezimage/page.pbm [new file with mode: 0644]
etc/images/ezimage/tag-gt.pbm [new file with mode: 0644]
etc/images/ezimage/tag-minus.pbm [new file with mode: 0644]
etc/images/ezimage/tag-plus.pbm [new file with mode: 0644]
etc/images/ezimage/tag-type.pbm [new file with mode: 0644]
etc/images/ezimage/tag-v.pbm [new file with mode: 0644]
etc/images/ezimage/tag.pbm [new file with mode: 0644]
etc/images/ezimage/unlock.pbm [new file with mode: 0644]
etc/images/gnus/important.pbm [new file with mode: 0644]
etc/images/gnus/mail-send.pbm [new file with mode: 0644]
etc/images/gnus/receipt.pbm [new file with mode: 0644]
etc/images/gnus/toggle-subscription.pbm [new file with mode: 0644]
etc/images/gnus/unimportant.pbm [new file with mode: 0644]
etc/images/gud/all.pbm [new file with mode: 0644]
etc/images/gud/rcont.pbm [new file with mode: 0644]
etc/images/gud/recstart.pbm [new file with mode: 0644]
etc/images/gud/recstop.pbm [new file with mode: 0644]
etc/images/gud/rfinish.pbm [new file with mode: 0644]
etc/images/gud/rnext.pbm [new file with mode: 0644]
etc/images/gud/rnexti.pbm [new file with mode: 0644]
etc/images/gud/rstep.pbm [new file with mode: 0644]
etc/images/gud/rstepi.pbm [new file with mode: 0644]
etc/images/gud/thread.pbm [new file with mode: 0644]
etc/images/lock-broken.pbm [new file with mode: 0644]
etc/images/lock-ok.pbm [new file with mode: 0644]
etc/images/lock.pbm [new file with mode: 0644]
etc/images/mail/copy.pbm [new file with mode: 0644]
etc/images/mail/forward.pbm [new file with mode: 0644]
etc/images/mail/not-spam.pbm [new file with mode: 0644]
etc/images/mail/outbox.pbm [new file with mode: 0644]
etc/images/mail/preview.pbm [new file with mode: 0644]
etc/images/mail/save-draft.pbm [new file with mode: 0644]
etc/images/mh-logo.pbm [new file with mode: 0644]
etc/images/mpc/add.pbm [new file with mode: 0644]
etc/images/mpc/ffwd.pbm [new file with mode: 0644]
etc/images/mpc/next.pbm [new file with mode: 0644]
etc/images/mpc/pause.pbm [new file with mode: 0644]
etc/images/mpc/play.pbm [new file with mode: 0644]
etc/images/mpc/prev.pbm [new file with mode: 0644]
etc/images/mpc/rewind.pbm [new file with mode: 0644]
etc/images/mpc/stop.pbm [new file with mode: 0644]
etc/images/redo.pbm [new file with mode: 0644]
etc/images/separator.pbm [new file with mode: 0644]
etc/images/smilies/braindamaged.pbm [new file with mode: 0644]
etc/images/smilies/cry.pbm [new file with mode: 0644]
etc/images/smilies/dead.pbm [new file with mode: 0644]
etc/images/smilies/evil.pbm [new file with mode: 0644]
etc/images/smilies/forced.pbm [new file with mode: 0644]
etc/images/smilies/grin.pbm [new file with mode: 0644]
etc/images/smilies/indifferent.pbm [new file with mode: 0644]
etc/images/sort-ascending.pbm [new file with mode: 0644]
etc/images/sort-column-ascending.pbm [new file with mode: 0644]
etc/images/sort-criteria.pbm [new file with mode: 0644]
etc/images/sort-descending.pbm [new file with mode: 0644]
etc/images/sort-row-ascending.pbm [new file with mode: 0644]
etc/images/unchecked.pbm [new file with mode: 0644]
etc/images/zoom-in.pbm [new file with mode: 0644]
etc/publicsuffix.txt
leim/README
lib-src/Makefile.in
lib-src/etags.c
lib-src/movemail.c
lib-src/rcs2log
lib/acl-internal.c
lib/acl-internal.h
lib/c-ctype.c
lib/c-ctype.h
lib/get-permissions.c
lib/qcopy-acl.c
lib/set-permissions.c
lib/stdalign.in.h
lisp/ChangeLog.17
lisp/Makefile.in
lisp/README
lisp/allout.el
lisp/bindings.el
lisp/bookmark.el
lisp/calc/calc-ext.el
lisp/calc/calc-help.el
lisp/calc/calc-map.el
lisp/calc/calc-menu.el
lisp/calc/calc-stat.el
lisp/calc/calc-store.el
lisp/calendar/time-date.el
lisp/calendar/todo-mode.el
lisp/cedet/ede/auto.el
lisp/cedet/ede/generic.el
lisp/cedet/ede/proj-obj.el
lisp/cedet/ede/proj-shared.el
lisp/cedet/mode-local.el
lisp/cedet/semantic/complete.el
lisp/cedet/semantic/tag.el
lisp/cedet/semantic/wisent/comp.el
lisp/cedet/semantic/wisent/wisent.el
lisp/cmuscheme.el
lisp/comint.el
lisp/custom.el
lisp/dabbrev.el
lisp/emacs-lisp/advice.el
lisp/emacs-lisp/avl-tree.el
lisp/emacs-lisp/bytecomp.el
lisp/emacs-lisp/cconv.el
lisp/emacs-lisp/check-declare.el
lisp/emacs-lisp/checkdoc.el
lisp/emacs-lisp/cl-generic.el
lisp/emacs-lisp/easy-mmode.el
lisp/emacs-lisp/edebug.el
lisp/emacs-lisp/eieio-core.el
lisp/emacs-lisp/ert-x.el
lisp/emacs-lisp/ert.el
lisp/emacs-lisp/find-func.el
lisp/emacs-lisp/gv.el
lisp/emacs-lisp/lisp-mode.el
lisp/emacs-lisp/lisp.el
lisp/emacs-lisp/map-ynp.el
lisp/emacs-lisp/package.el
lisp/emacs-lisp/regexp-opt.el
lisp/emacs-lisp/rx.el
lisp/emacs-lisp/seq.el
lisp/emacs-lisp/shadow.el
lisp/emacs-lisp/smie.el
lisp/emacs-lisp/syntax.el
lisp/emacs-lisp/timer.el
lisp/emulation/edt-mapper.el
lisp/emulation/edt.el
lisp/emulation/viper-cmd.el
lisp/emulation/viper-ex.el
lisp/emulation/viper-init.el
lisp/emulation/viper-macs.el
lisp/emulation/viper-mous.el
lisp/emulation/viper-util.el
lisp/emulation/viper.el
lisp/epg.el
lisp/erc/erc-backend.el
lisp/erc/erc-match.el
lisp/erc/erc-networks.el
lisp/erc/erc-services.el
lisp/erc/erc.el
lisp/eshell/em-glob.el
lisp/eshell/em-hist.el
lisp/eshell/em-ls.el
lisp/eshell/em-unix.el
lisp/eshell/esh-mode.el
lisp/eshell/esh-util.el
lisp/expand.el
lisp/faces.el
lisp/filenotify.el
lisp/files.el
lisp/filesets.el
lisp/find-cmd.el
lisp/find-dired.el
lisp/find-file.el
lisp/foldout.el
lisp/follow.el
lisp/font-core.el
lisp/font-lock.el
lisp/format.el
lisp/gnus/ChangeLog.2
lisp/gnus/auth-source.el
lisp/gnus/gnus-art.el
lisp/gnus/gnus-bookmark.el
lisp/gnus/gnus-cus.el
lisp/gnus/gnus-group.el
lisp/gnus/gnus-mlspl.el
lisp/gnus/gnus-registry.el
lisp/gnus/gnus-salt.el
lisp/gnus/gnus-sieve.el
lisp/gnus/gnus-util.el
lisp/gnus/gnus.el
lisp/gnus/message.el
lisp/gnus/mm-decode.el
lisp/gnus/mm-uu.el
lisp/gnus/nndoc.el
lisp/gnus/nnheader.el
lisp/gnus/nnmaildir.el
lisp/gnus/nntp.el
lisp/gnus/registry.el
lisp/gnus/rfc1843.el
lisp/gnus/rfc2047.el
lisp/gnus/spam-report.el
lisp/help-fns.el
lisp/help.el
lisp/hfy-cmap.el
lisp/htmlfontify.el
lisp/ibuffer.el
lisp/ido.el
lisp/image-dired.el
lisp/image.el
lisp/info-look.el
lisp/info.el
lisp/international/isearch-x.el
lisp/international/iso-cvt.el
lisp/international/latin1-disp.el
lisp/international/mule-cmds.el
lisp/international/mule-util.el
lisp/international/mule.el
lisp/international/ogonek.el
lisp/international/titdic-cnv.el
lisp/jit-lock.el
lisp/language/japan-util.el
lisp/leim/quail/cyrillic.el
lisp/leim/quail/japanese.el
lisp/leim/quail/latin-alt.el
lisp/leim/quail/latin-ltx.el
lisp/leim/quail/thai.el
lisp/loadhist.el
lisp/lpr.el
lisp/mail/feedmail.el
lisp/mail/mail-extr.el
lisp/mail/mailclient.el
lisp/mail/mspools.el
lisp/mail/rmail.el
lisp/mail/rmailmm.el
lisp/mail/undigest.el
lisp/man.el
lisp/mh-e/mh-alias.el
lisp/mh-e/mh-comp.el
lisp/mh-e/mh-e.el
lisp/mh-e/mh-folder.el
lisp/mh-e/mh-letter.el
lisp/mh-e/mh-mime.el
lisp/mh-e/mh-search.el
lisp/mh-e/mh-utils.el
lisp/mh-e/mh-xface.el
lisp/mouse.el
lisp/mpc.el
lisp/msb.el
lisp/net/ange-ftp.el
lisp/net/dbus.el
lisp/net/eww.el
lisp/net/gnutls.el
lisp/net/net-utils.el
lisp/net/newst-backend.el
lisp/net/newst-reader.el
lisp/net/rcirc.el
lisp/net/rlogin.el
lisp/net/secrets.el
lisp/net/shr-color.el
lisp/net/soap-client.el
lisp/net/tramp-adb.el
lisp/net/tramp-gvfs.el
lisp/net/tramp-sh.el
lisp/net/tramp-smb.el
lisp/net/tramp.el
lisp/net/zeroconf.el
lisp/newcomment.el
lisp/nxml/nxml-mode.el
lisp/obsolete/fast-lock.el
lisp/obsolete/lazy-lock.el
lisp/obsolete/longlines.el
lisp/org/ob-core.el
lisp/org/ob-dot.el
lisp/org/ob-latex.el
lisp/org/ob-lilypond.el
lisp/org/ob-lob.el
lisp/org/ob-octave.el
lisp/org/ob-ref.el
lisp/org/ob-sql.el
lisp/org/ob-sqlite.el
lisp/org/ob-tangle.el
lisp/org/org-agenda.el
lisp/org/org-bibtex.el
lisp/org/org-clock.el
lisp/org/org-colview.el
lisp/org/org-crypt.el
lisp/org/org-docview.el
lisp/org/org-element.el
lisp/org/org-entities.el
lisp/org/org-footnote.el
lisp/org/org-list.el
lisp/org/org-table.el
lisp/org/org.el
lisp/org/ox-html.el
lisp/org/ox-icalendar.el
lisp/org/ox-latex.el
lisp/org/ox-man.el
lisp/org/ox-odt.el
lisp/org/ox-publish.el
lisp/org/ox-texinfo.el
lisp/org/ox.el
lisp/play/doctor.el
lisp/play/gametree.el
lisp/play/tetris.el
lisp/progmodes/ada-mode.el
lisp/progmodes/ada-xref.el
lisp/progmodes/antlr-mode.el
lisp/progmodes/cc-align.el
lisp/progmodes/cc-awk.el
lisp/progmodes/cc-cmds.el
lisp/progmodes/cc-defs.el
lisp/progmodes/cc-engine.el
lisp/progmodes/cc-fonts.el
lisp/progmodes/cc-langs.el
lisp/progmodes/cc-mode.el
lisp/progmodes/cc-vars.el
lisp/progmodes/cfengine.el
lisp/progmodes/cmacexp.el
lisp/progmodes/compile.el
lisp/progmodes/cperl-mode.el
lisp/progmodes/dcl-mode.el
lisp/progmodes/ebnf2ps.el
lisp/progmodes/elisp-mode.el
lisp/progmodes/f90.el
lisp/progmodes/flymake.el
lisp/progmodes/fortran.el
lisp/progmodes/gdb-mi.el
lisp/progmodes/glasses.el
lisp/progmodes/gud.el
lisp/progmodes/idlw-help.el
lisp/progmodes/idlw-shell.el
lisp/progmodes/idlwave.el
lisp/progmodes/inf-lisp.el
lisp/progmodes/js.el
lisp/progmodes/m4-mode.el
lisp/progmodes/make-mode.el
lisp/progmodes/mantemp.el
lisp/progmodes/perl-mode.el
lisp/progmodes/prog-mode.el
lisp/progmodes/prolog.el
lisp/progmodes/python.el
lisp/progmodes/ruby-mode.el
lisp/progmodes/scheme.el
lisp/progmodes/sh-script.el
lisp/progmodes/sql.el
lisp/progmodes/vera-mode.el
lisp/progmodes/verilog-mode.el
lisp/progmodes/vhdl-mode.el
lisp/progmodes/xscheme.el
lisp/ps-print.el
lisp/replace.el
lisp/simple.el
lisp/sort.el
lisp/speedbar.el
lisp/startup.el
lisp/subr.el
lisp/term.el
lisp/term/README
lisp/term/ns-win.el
lisp/term/tty-colors.el
lisp/textmodes/bibtex.el
lisp/textmodes/conf-mode.el
lisp/textmodes/css-mode.el
lisp/textmodes/ispell.el
lisp/textmodes/makeinfo.el
lisp/textmodes/page-ext.el
lisp/textmodes/refer.el
lisp/textmodes/reftex-cite.el
lisp/textmodes/reftex-parse.el
lisp/textmodes/reftex-vars.el
lisp/textmodes/reftex.el
lisp/textmodes/rst.el
lisp/textmodes/sgml-mode.el
lisp/textmodes/tex-mode.el
lisp/textmodes/texinfmt.el
lisp/textmodes/texinfo.el
lisp/textmodes/texnfo-upd.el
lisp/thingatpt.el
lisp/tutorial.el
lisp/type-break.el
lisp/url/url-cookie.el
lisp/url/url-dav.el
lisp/url/url-gw.el
lisp/url/url-handlers.el
lisp/url/url-http.el
lisp/vc/add-log.el
lisp/vc/diff-mode.el
lisp/vc/ediff-diff.el
lisp/vc/ediff-init.el
lisp/vc/ediff-ptch.el
lisp/vc/ediff-util.el
lisp/vc/ediff-wind.el
lisp/vc/ediff.el
lisp/vc/log-edit.el
lisp/vc/vc-annotate.el
lisp/vc/vc-bzr.el
lisp/vc/vc-cvs.el
lisp/vc/vc-dav.el
lisp/vc/vc-git.el
lisp/vc/vc-hg.el
lisp/vc/vc-mtn.el
lisp/vc/vc-rcs.el
lisp/vc/vc-sccs.el
lisp/vc/vc-src.el
lisp/vc/vc-svn.el
lisp/vc/vc.el
lisp/vcursor.el
lisp/whitespace.el
lisp/wid-edit.el
lisp/winner.el
lisp/woman.el
nt/emacs-x64.manifest
nt/emacs-x86.manifest
nt/subdirs.el [deleted file]
src/README
src/buffer.c
src/bytecode.c
src/callproc.c
src/category.c
src/chartab.c
src/cmds.c
src/coding.c
src/data.c
src/dbusbind.c
src/dispextern.h
src/dispnew.c
src/doc.c
src/doprnt.c
src/editfns.c
src/eval.c
src/fileio.c
src/floatfns.c
src/fns.c
src/font.c
src/fontset.c
src/frame.c
src/frame.h
src/gfilenotify.c
src/image.c
src/indent.c
src/inotify.c
src/keyboard.c
src/keymap.c
src/lisp.h
src/lread.c
src/macfont.m
src/menu.c
src/minibuf.c
src/nsfns.m
src/nsselect.m
src/nsterm.m
src/print.c
src/process.c
src/process.h
src/search.c
src/syntax.c
src/syntax.h
src/term.c
src/termhooks.h
src/terminal.c
src/textprop.c
src/vm-limit.c
src/w16select.c
src/w32fns.c
src/w32notify.c
src/window.c
src/xdisp.c
src/xfaces.c
src/xfns.c
src/xselect.c
src/xterm.c
test/automated/Makefile.in
test/automated/auto-revert-tests.el
test/automated/compile-tests.el
test/automated/elisp-mode-tests.el
test/automated/ert-x-tests.el
test/automated/file-notify-tests.el
test/automated/icalendar-tests.el
test/automated/info-xref.el
test/automated/seq-tests.el
test/etags/el-src/emacs/lisp/progmodes/etags.el
test/indent/prolog.prolog

index 21af4e68770c8a595933eed068cc93ded8eee8ff..ac26a2bbcd2ecdfbc92826a41c62cbf54d2d73ea 100644 (file)
@@ -44,3 +44,7 @@ doc/misc/texinfo.tex -whitespace=blank-at-eol
 *.sig binary
 *.tiff binary
 etc/e/eterm-color binary
+
+# Hooks for non-default diff hunk headers; see autogen.sh.
+*.el diff=elisp
+*.texi diff=texinfo
index 7e697ddd89a51f9452a3279d75212092657956cb..609ab7acb6b0fb76c4e6ba601ad24eeefe13aa7b 100644 (file)
@@ -204,6 +204,14 @@ then exclude that commit from the merge to trunk.
 See all the files in admin/notes/* .  In particular, see
 admin/notes/newfile, see admin/notes/repo.
 
+The file admin/MAINTAINERS records the areas of interest of frequent
+Emacs contributors.  If you are making changes in one of the files
+mentioned there, it is a good idea to consult the person who expressed
+an interest in that file, and/or get his/her feedback for the changes.
+If you are a frequent contributor and have interest in maintaining
+specific files, please record those interests in that file, so that
+others could be aware of that.
+
 *** git vs rename
 
 Git does not explicitly represent a file renaming; it uses a percent
@@ -234,7 +242,9 @@ by following links from http://savannah.gnu.org/mail/?group=emacs .
 
 To email a patch you can use a shell command like 'git format-patch -1'
 to create a file, and then attach the file to your email.  This nicely
-packages the patch's commit message and changes.
+packages the patch's commit message and changes.  To send just one
+such patch without additional remarks, you can use a command like
+'git send-email --to=bug-gnu-emacs@gnu.org 0001-DESCRIPTION.patch'.
 
 ** Document your changes.
 
index c4912f7d8e1e9bdff95d3798121669739b391a5c..0fb3df621c8c611a51ff520628f0d7d540949285 100644 (file)
+2015-09-20  Eli Zaretskii  <eliz@gnu.org>
+
+       Improve documentation of 'run-at-time'
+       * lisp/emacs-lisp/timer.el (run-at-time): Improve the doc string.
+       In particular, don't refer to 'diary-entry-time', because it is
+       unavailable until diary-lib is loaded.  Also, refer to
+       'timer-duration-words', not 'timer-duration', as the latter's doc
+       string says nothing about the accepted strings.
+
+2015-09-19  Jay Belanger  <jay.p.belanger@gmail.com>
+
+       * lisp/calc/calc-ext.el (calc-do-prefix-help): Tidy up error message.
+
+2015-09-19  Ken Manheimer  <ken.manheimer@gmail.com>
+
+       Repair pdbtrack remote file tracking
+       * lisp/progmodes/python.el (python-pdbtrack-set-tracked-buffer):
+       Rectify pdbtrack so it follows transitions from one remote source
+       file to the next.
+
+2015-09-19  Artur Malabarba  <bruce.connor.am@gmail.com>
+
+       * lisp/emacs-lisp/timer.el (run-at-time): Docstring formatting
+
+2015-09-19  Eli Zaretskii  <eliz@gnu.org>
+
+       Adapt vc-src to the old-new vc-checkin API
+       * lisp/vc/vc-src.el (vc-src-checkin): Accept and ignore an
+       additional optional parameter.
+
+2015-09-19  Simen Heggestøyl  <simenheg@gmail.com>
+
+       Add overflow module to CSS property list
+       * lisp/textmodes/css-mode.el (css-property-ids): Add properties from CSS
+       Overflow Module Level 3.
+
+2015-09-19  Eli Zaretskii  <eliz@gnu.org>
+
+       Fix documentation of "C-u C-x v v"
+       * doc/emacs/maintaining.texi (Advanced C-x v v): Make the
+       documentation of "C-u C-x v v" match what the code does.
+
+       Resurrect the ability to specify a revision in vc-next-action
+       * lisp/vc/vc-bzr.el (vc-bzr-checkin):
+       * lisp/vc/vc-dav.el (vc-dav-checkin):
+       * lisp/vc/vc-git.el (vc-git-checkin):
+       * lisp/vc/vc-hg.el (vc-hg-checkin):
+       * lisp/vc/vc-mtn.el (vc-mtn-checkin): Accept and silently ignore
+       an additional optional argument, the revision to checkin.
+       * lisp/vc/vc-sccs.el (vc-sccs-checkin):
+       * lisp/vc/vc-cvs.el (vc-cvs-checkin):
+       * lisp/vc/vc-rcs.el (vc-rcs-checkin): Allow to optionally specify
+       a revision to checkin.
+       * lisp/vc/vc.el (vc-next-action): Allow to optionally specify the
+       revision when checking in files.
+       See http://lists.gnu.org/archive/html/emacs-devel/2015-09/msg00688.html
+       for the details.
+
+2015-09-18  Wilson Snyder  <wsnyder@wsnyder.org>
+
+       Fix checkdoc warnings.
+       * lisp/progmodes/verilog-mode.el (verilog-forward-sexp-function)
+       (verilog-decls-princ, verilog-modport-princ)
+       (verilog-modi-modport-lookup-one): Fix checkdoc warnings.
+
+2015-09-17  Jay Belanger  <jay.p.belanger@gmail.com>
+
+       Fix the routine for help on Calc's prefixes.
+       * lisp/calc/calc-ext.el (calc-prefix-help-retry): New variable.
+       (calc-do-prefix-help): Use `read-char' to determine the next Calc
+       command.
+
+2015-09-17  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * lisp/font-lock.el (font-lock-beginning-of-syntax-function): Remove
+       (font-lock-fontify-block): Don't let-bind it.
+       (font-lock-compile-keywords): Don't use it.
+       (font-lock-set-defaults): Don't set it.  Allow the variable alist to
+       start one slot earlier, instead.
+       * lisp/emacs-lisp/syntax.el (font-lock-beginning-of-syntax-function):
+       Don't declare.
+       (syntax-ppss): Don't use it either.
+       * lisp/font-core.el (font-lock-defaults): Remove SYNTAX-BEGIN
+       from docstring.
+       * doc/emacs/display.texi (Font Lock): Don't mention
+       font-lock-beginning-of-syntax-function.
+       * doc/lispref/modes.texi (Font Lock Basics): Update description of
+       font-lock-defaults.
+       (Syntactic Font Lock): Remove font-lock-beginning-of-syntax-function.
+       * lisp/loadhist.el (unload-feature-special-hooks):
+       Remove font-lock-beginning-of-syntax-function.
+       * lisp/obsolete/lazy-lock.el (lazy-lock-fontify-region):
+       * lisp/emacs-lisp/lisp.el (beginning-of-defun-raw): Don't let-bind
+       font-lock-beginning-of-syntax-function.
+
+2015-09-17  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Backslash cleanup in Elisp source files
+       This patch should not change behavior.  It typically omits backslashes
+       where they are redundant (e.g., in the string literal "^\$").
+       In a few places, insert backslashes where they make regular
+       expressions clearer: e.g., replace "^\*" (equivalent to "^*") with
+       "^\\*", which has the same effect as a regular expression.
+       Also, use ‘\ %’ instead of ‘\%’ when avoiding confusion with SCCS IDs,
+       and similarly use ‘\ $’ instead of ‘\$’ when avoiding confusion with
+       RCS IDs, as that makes it clearer that the backslash is intended.
+
+       Some more minor backslash fixes
+       * test/automated/compile-tests.el (compile-tests--test-regexps-data):
+       * test/automated/info-xref.el (info-xref-test-write-file):
+       Double backslashes in strings.
+
+       Fix several backslash typos in Elisp strings
+       * lisp/calendar/todo-mode.el (todo-files, todo-rename-file)
+       (todo-find-filtered-items-file, todo-reset-nondiary-marker)
+       (todo-reset-done-string, todo-reset-comment-string)
+       (todo-reset-highlight-item):
+       * lisp/erc/erc-networks.el (erc-networks-alist):
+       * lisp/gnus/gnus-art.el (gnus-button-handle-library):
+       * lisp/gnus/gnus-group.el (gnus-read-ephemeral-gmane-group-url):
+       * lisp/gnus/nntp.el (nntp-via-shell-prompt)
+       (nntp-telnet-shell-prompt):
+       * lisp/gnus/spam-report.el (spam-report-gmane-regex):
+       * lisp/image-dired.el (image-dired-rotate-original):
+       (image-dired-get-exif-file-name):
+       * lisp/international/latin1-disp.el (latin1-display-ucs-per-lynx):
+       * lisp/mail/undigest.el (rmail-digest-parse-rfc1153strict):
+       * lisp/mh-e/mh-letter.el (mh-file-is-vcard-p):
+       * lisp/mh-e/mh-mime.el (mh-file-mime-type-substitutions):
+       * lisp/net/shr-color.el (shr-color->hexadecimal):
+       * lisp/org/org-bibtex.el (org-bibtex-fields):
+       * lisp/org/org-docview.el (org-docview-export):
+       * lisp/org/org-entities.el (org-entities):
+       * lisp/org/ox-icalendar.el (org-icalendar-cleanup-string):
+       * lisp/progmodes/cperl-mode.el (cperl-indent-exp):
+       * lisp/progmodes/ebnf2ps.el (ebnf-file-suffix-regexp)
+       (ebnf-style-database):
+       * lisp/progmodes/idlw-help.el (idlwave-do-context-help1):
+       * lisp/progmodes/ruby-mode.el (ruby-imenu-create-index-in-block):
+       * lisp/progmodes/sql.el (sql-product-alist):
+       * lisp/progmodes/verilog-mode.el (verilog-error-regexp-emacs-alist)
+       (verilog-error-font-lock-keywords)
+       (verilog-assignment-operator-re):
+       * lisp/progmodes/vhdl-mode.el (vhdl-compiler-alist):
+       * lisp/textmodes/reftex-parse.el (reftex-parse-from-file):
+       * lisp/vc/add-log.el (change-log-version-number-regexp-list):
+       Fix typo by replacing ‘\’ with ‘\\’ in a string literal.
+       For example, to get the regular expression ‘\.’ use the string
+       literal "\\.", not "\." (which is equivalent to ".").
+       * lisp/emulation/viper-util.el (viper-glob-unix-files):
+       Remove stray ‘\j’ from string.
+       * lisp/gnus/nntp.el (nntp-via-shell-prompt)
+       (nntp-telnet-shell-prompt):
+       Treat > like $ when matching a shell prompt.
+       * lisp/progmodes/make-mode.el (makefile-browse):
+       Properly quote a diagnostic.
+
+       Fix minor quoting problems in diagnostics
+       * lisp/tutorial.el (tutorial--describe-nonstandard-key):
+       * lisp/vc/ediff-ptch.el (ediff-fixup-patch-map):
+       Follow text-quoting-style in diagnostic, and quote a file name.
+
+2015-09-17  Eli Zaretskii  <eliz@gnu.org>
+
+       * doc/lispref/frames.texi (Cursor Parameters): Document 'x-stretch-cursor'.
+
+2015-09-16  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Omit unnecessary \ before paren in C docstrings
+       Although \( is needed in docstrings in Elisp code, it is not needed in
+       docstrings in C code, since C function definitiions do not start with
+       a parenthesis.  The backslashes made the docstrings a bit harder to
+       read and to format in columns.  Also, some C docstrings had ( in
+       column 1 and this did not appear to be causing any problems.  So,
+       simplify C docstrings by replacing \( with ( and \) with ).
+
+       A few more minor quoting fixes in a script and a text file
+
+       Minor quoting fixes in scripts and doc
+       Prefer straight quotes in random script files, as they are not converted.
+       Prefer grave quotes in a couple of places in the manual that were missed
+       earlier, as these quotes are converted.
+
+       Minor backslash fixes in manuals and scripts
+       * Makefile.in (install-arch-indep):
+       * admin/charsets/compact.awk:
+       * admin/charsets/gb180302.awk (gb_to_index):
+       * admin/charsets/gb180304.awk (gb_to_index):
+       Avoid undefined behavior in Awk regular expression backslashes.
+       * doc/misc/efaq.texi (Matching parentheses):
+       Omit unnecessary backslashes.
+       * doc/misc/gnus-faq.texi (FAQ 5-8):
+       Avoid undefined behavior in suggested sed backslash usage.
+
+       Add -Wswitch to --enable-gcc-warnings
+       Make --enable-gcc-warnings a bit pickier, by also using -Wswitch.
+       * configure.ac (WERROR_CFLAGS): Don’t add -Wno-switch.
+       * lib-src/etags.c (main, consider_token, C_entries):
+       * src/coding.c (encode_invocation_designation):
+       * src/data.c (Ftype_of):
+       * src/eval.c (Fdefvaralias, default_toplevel_binding)
+       (Fbacktrace__locals, mark_specpdl):
+       * src/lisp.h (record_xmalloc):
+       * src/syntax.c (scan_lists, scan_sexps_forward):
+       * src/window.c (window_relative_x_coord):
+       * src/xdisp.c (push_it, pop_it):
+       * src/xterm.c (xg_scroll_callback, x_check_fullscreen):
+       Error out or do nothing (as appropriate) if a switch statement
+       with an enum value does not cover all of the enum.
+       * src/dispextern.h (struct iterator_stack_entry.u.comp):
+       Remove unused member discovered by using -Wswitch.
+       * src/lisp.h (record_xmalloc): Add a ‘+ 0’ to pacify -Wswitch.
+       * src/vm-limit.c (check_memory_limits):
+       Simplify warning-diagnostic computation by using a table.
+
+       etags ‘fatal’ function is now printf-like
+       * lib-src/etags.c (fatal): Now printf-like.  All callers changed.
+       Also, now static; not clear why it needed to be extern.
+       (verror): New function, with most of the old contents of ‘error’.
+       (fatal, error): Use it.
+
+2015-09-16  Eli Zaretskii  <eliz@gnu.org>
+
+       More adaptations in file-notify-tests.el
+       * test/automated/file-notify-tests.el
+       (file-notify-test05-dir-validity): Skip for w32notify in
+       batch-mode.  (Bug#21432)
+
+2015-09-16  Michael Albinus  <michael.albinus@gmx.de>
+
+       Adapt test in file-notify-tests.el
+       * test/automated/file-notify-tests.el
+       (file-notify-test04-file-validity): Skip for w32notify in
+       batch-mode.  Add test lost last commit.
+
+2015-09-16  Dima Kogan  <dima@secretsauce.net>
+
+       winner no longer holds on to dead frames
+       * lisp/winner.el (winner-change-fun): Cull dead frames.
+       This prevents a potentially massive memory leak.  See:
+       http://lists.gnu.org/archive/html/emacs-devel/2015-09/msg00619.html
+
+2015-09-16  Michael Albinus  <michael.albinus@gmx.de>
+
+       Use common report_file_notify_error function
+       * src/fileio.c (report_file_notify_error): New function.
+       * src/inotify.c (report_inotify_error): Remove function.
+       (inotify_callback, symbol_to_inotifymask, Finotify_add_watch)
+       (Finotify_rm_watch): Use report_file_notify_error.
+       * src/lisp.h (report_file_notify_error): Declare external function.
+       * src/w32notify.c (report_w32notify_error): Remove function.
+       (Fw32notify_add_watch, Fw32notify_rm_watch):
+       Use report_file_notify_error.
+
+2015-09-16  Jay Belanger  <jay.p.belanger@gmail.com>
+
+       Fix documentation.
+       * doc/misc/calc.texi (Single-Variable Statistics): Fix the wording of
+       the documentation of the root mean square.
+
+2015-09-16  Martin Rudalics  <rudalics@gmx.at>
+
+       Remove tool_bar_redisplayed_once and associated code.
+       * src/frame.h (tool_bar_redisplayed_once): Remove slot.
+       * src/frame.c (make_frame, x_set_font): Remove initialization of
+       f->tool_bar_redisplayed_once.
+       * src/w32fns.c (x_change_tool_bar_height):
+       * src/xfns.c (x_change_tool_bar_height): Don't check for
+       f->tool_bar_redisplayed_once.
+       * src/xdisp.c (redisplay_internal): Remove handling of
+       f->tool_bar_redisplayed_once.
+
+2015-09-16  Eli Zaretskii  <eliz@gnu.org>
+
+       Restore some of the quoting in the manuals
+       * doc/lispref/windows.texi (Coordinates and Windows)
+       (Coordinates and Windows):
+       * doc/lispref/variables.texi (Lexical Binding)
+       (File Local Variables):
+       * doc/lispref/text.texi (Format Properties):
+       * doc/lispref/symbols.texi (Symbol Components):
+       * doc/lispref/strings.texi (Creating Strings):
+       * doc/lispref/sequences.texi (Sequence Functions):
+       * doc/lispref/searching.texi (Regexp Special, Regexp Search)
+       (Search and Replace):
+       * doc/lispref/processes.texi (Bindat Spec):
+       * doc/lispref/os.texi (Idle Timers):
+       * doc/lispref/objects.texi (Basic Char Syntax):
+       * doc/lispref/numbers.texi (Float Basics, Random Numbers):
+       * doc/lispref/nonascii.texi (Character Properties):
+       * doc/lispref/modes.texi (Major Mode Conventions, Mode Hooks)
+       (Mode Line Variables):
+       * doc/lispref/minibuf.texi (Text from Minibuffer):
+       * doc/lispref/loading.texi (Autoload):
+       * doc/lispref/keymaps.texi (Controlling Active Maps):
+       * doc/lispref/frames.texi (Frame Layout, Size and Position)
+       (Size Parameters, Implied Frame Resizing):
+       * doc/lispref/files.texi (Changing Files, Magic File Names):
+       * doc/lispref/eval.texi (Self-Evaluating Forms):
+       * doc/lispref/display.texi (Progress, Abstract Display)
+       (Abstract Display Example, Bidirectional Display):
+       * doc/lispref/commands.texi (Event Mod):
+       * doc/emacs/windows.texi (Displaying Buffers):
+       * doc/emacs/trouble.texi (Bug Criteria, Checklist):
+       * doc/emacs/text.texi (Enriched Text):
+       * doc/emacs/programs.texi (MixedCase Words):
+       * doc/emacs/picture-xtra.texi (Insert in Picture)
+       (Tabs in Picture):
+       * doc/emacs/misc.texi (Emacs Server, Printing):
+       * doc/emacs/mini.texi (Minibuffer History):
+       * doc/emacs/maintaining.texi (Old Revisions, VC Change Log)
+       (Pulling / Pushing):
+       * doc/emacs/killing.texi (Yanking, Cut and Paste, Clipboard):
+       * doc/emacs/help.texi (Help, Help Echo):
+       * doc/emacs/glossary.texi (Glossary):
+       * doc/emacs/frames.texi (Mouse Commands, Creating Frames)
+       (Frame Commands):
+       * doc/emacs/files.texi (Reverting, Saving, Directories):
+       * doc/emacs/entering.texi (Exiting):
+       * doc/emacs/emacs.texi (Top):
+       * doc/emacs/cmdargs.texi (Window Size X, Icons X):
+       * doc/emacs/anti.texi (Antinews): Restore quoting of text where
+       appropriate or replace quoting with @dfn.
+       * doc/misc/ediff.texi (Window and Frame Configuration):
+       * doc/lispref/processes.texi (Network Feature Testing):
+       * doc/lispref/display.texi (Display Margins): Quote the phrase
+       after "a.k.a." where appropriate.
+
+2015-09-16  Tassilo Horn  <tsdh@gnu.org>
+
+       Clarify reftex-extra-bindings docs.
+       * lisp/textmodes/reftex-vars.el (reftex-extra-bindings):
+       * doc/misc/reftex.texi (Key Bindings): Document that the variable
+       only has an effect at load-time.
+
+2015-09-16  Daniel McClanahan  <danieldmcclanahan@gmail.com>  (tiny change)
+
+       Fix search argument in ‘lisp--el-match-keyword’ (Bug#21492) (Bug#21493)
+       * lisp/emacs-lisp/lisp-mode.el (lisp--el-match-keyword): Fix
+       search argument.  (Bug#21492) (Bug#21493)
+
+2015-09-16  Tassilo Horn  <tsdh@gnu.org>
+
+       Add pretty symbols for \qquad and \varrho.
+       * lisp/textmodes/tex-mode.el (tex--prettify-symbols-alist): Add pretty
+       symbols for \qquad and \varrho.
+
+2015-09-15  Jay Belanger  <jay.p.belanger@gmail.com>
+
+       Add new functions for the root mean square of a (Calc) vector
+       * lisp/calc/calc-stats.el (calcFunc-rms, calc-vector-rms):
+       New functions.
+       * lisp/calc/calc-ext.el (calc-init-extensions): Add keybinding for
+       `calc-vector-rms', add autoloads for `calc-vector-rms' and
+       `calcFunc-rms'.
+       * lisp/calc/calc-map.el (calc-u-oper-keys):  Add entry for
+       `calcFunc-rms'.
+       * lisp/calc/calc-menu.el (calc-vectors-menu): Add entry for
+       `calc-vector-rms'.
+       * doc/misc/calc.texi (Single-Variable Statistics): Document the rms
+       command.
+
+2015-09-15  Stephen Leake  <stephen_leake@stephe-leake.org>
+
+       Add monotone EDE generic project
+       * lisp/cedet/ede/generic.el (ede-enable-generic-projects): Add monotone
+       generic project.
+
+       Revert premature commit
+       * doc/lispref/files.texi: Revert premature commit of change to
+       file-name-all-completions.
+
+       Fix a bug in elisp--xref-find-definitions related to cl-generic defaults
+       * lisp/progmodes/elisp-mode.el (elisp--xref-find-definitions): Fix bug
+       with cl-generic defaults.
+       (elisp--xref-find-references): Add doc string.
+       * test/automated/elisp-mode-tests.el (xref-elisp-generic-*): Improve
+       tests to find bug.
+
+       Fix bugs in eieio-oref-default related to class symbols
+       * lisp/emacs-lisp/eieio-core.el (class-p): Handle symbol properly.
+       (eieio-oref-default): Handle class properly.
+
+2015-09-15  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Quote “fullboth” when defining it
+       * doc/lispref/frames.texi (Size Parameters): Use @dfn for “fullboth”
+       and rewrite the containing paragraph, which was awkward.  (Bug#21472).
+
+2015-09-15  Eli Zaretskii  <eliz@gnu.org>
+
+       Minor doc fix in emacs/ack.texi
+       * doc/emacs/ack.texi (Acknowledgments): Fix an xref missing the
+       first argument.
+
+2015-09-15  Michael Albinus  <michael.albinus@gmx.de>
+
+       Adapt tests in auto-revert-tests.el
+       * test/automated/auto-revert-tests.el (auto-revert--timeout):
+       Make it a defconst.
+       (auto-revert--wait-for-revert): New defun.
+       (auto-revert-test00-auto-revert-mode)
+       (auto-revert-test01-auto-revert-tail-mode)
+       (auto-revert-test02-auto-revert-mode-dired): Use it.
+
+2015-09-15  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * lisp/emacs-lisp/lisp-mode.el (lisp-mode-symbol-regexp): New const
+       Use it everywhere "\\(\\sw\\|\\s_\\|\\\\.\\)+" was used.
+       (cl-lib-fdefs): Add defgeneric.
+       (cl-kw): Add all elements of eieio-kw and cl-lib-kw.
+       (eieio-kw, cl-lib-kw, el-kw): Remove.
+
+2015-09-15  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Quote less in manuals
+       The manuals often used quotes ``...'' when it is better to use @dfn or
+       @code or capitalized words or no quoting at all.  For example, there is
+       no need for the `` and '' in “if a variable has one effect for
+       @code{nil} values and another effect for ``non-@code{nil}'' values”.
+       Reword the Emacs, Lisp intro, and Lisp reference manuals to eliminate
+       unnecessary quoting like this, and to use @dfn etc. instead when called
+       for (Bug#21472).
+
+2015-09-15  Mark Oteiza  <mvoteiza@udel.edu>
+
+       lisp/custom.el (load-theme): Only compute hash when needed.
+
+2015-09-15  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Pacify --enable-gcc-warnings
+       * src/inotify.c (report_inotify_error): Declare it _Noreturn.
+
+2015-09-15  Michael Albinus  <michael.albinus@gmx.de>
+
+       Improve error reports in inotify.c
+       * src/inotify.c (report_inotify_error): New function.  Clone of
+       report_w32notify_error.
+       (inotify_callback, symbol_to_inotifymask, Finotify_add_watch)
+       (Finotify_rm_watch): Use it.
+
+2015-09-15  Eli Zaretskii  <eliz@gnu.org>
+
+       Fix the file-notify tests for watch validation on w32
+       * test/automated/file-notify-tests.el
+       (file-notify-test04-file-validity): Move the directory deletion
+       out of the file-notify--test-with-events macro.
+       (file-notify-test04-file-validity)
+       (file-notify-test05-dir-validity): Enlarge the timeout of
+       read-event to 0.5, as 0.1 is borderline on w32.  (Bug#21432)
+
+2015-09-15  Tassilo Horn  <tsdh@gnu.org>
+
+       Use OPEN BOX instead of space for \quad.
+       * lisp/textmodes/tex-mode.el (tex--prettify-symbols-alist): Use OPEN BOX
+       character for \quad instead of a space.
+
+2015-09-15  Eli Zaretskii  <eliz@gnu.org>
+
+       Add missing *.pbm images
+       * etc/images/connect.pbm: New file.
+       * etc/images/custom/down-pushed.pbm: New file.
+       * etc/images/custom/down.pbm: New file.
+       * etc/images/custom/right-pushed.pbm: New file.
+       * etc/images/custom/right.pbm: New file.
+       * etc/images/describe.pbm: New file.
+       * etc/images/disconnect.pbm: New file.
+       * etc/images/ezimage/bits.pbm: New file.
+       * etc/images/ezimage/bitsbang.pbm: New file.
+       * etc/images/ezimage/box-minus.pbm: New file.
+       * etc/images/ezimage/box-plus.pbm: New file.
+       * etc/images/ezimage/box.pbm: New file.
+       * etc/images/ezimage/checkmark.pbm: New file.
+       * etc/images/ezimage/dir-minus.pbm: New file.
+       * etc/images/ezimage/dir-plus.pbm: New file.
+       * etc/images/ezimage/dir.pbm: New file.
+       * etc/images/ezimage/doc-minus.pbm: New file.
+       * etc/images/ezimage/doc-plus.pbm: New file.
+       * etc/images/ezimage/doc.pbm: New file.
+       * etc/images/ezimage/info.pbm: New file.
+       * etc/images/ezimage/key.pbm: New file.
+       * etc/images/ezimage/label.pbm: New file.
+       * etc/images/ezimage/lock.pbm: New file.
+       * etc/images/ezimage/mail.pbm: New file.
+       * etc/images/ezimage/page-minus.pbm: New file.
+       * etc/images/ezimage/page-plus.pbm: New file.
+       * etc/images/ezimage/page.pbm: New file.
+       * etc/images/ezimage/tag-gt.pbm: New file.
+       * etc/images/ezimage/tag-minus.pbm: New file.
+       * etc/images/ezimage/tag-plus.pbm: New file.
+       * etc/images/ezimage/tag-type.pbm: New file.
+       * etc/images/ezimage/tag-v.pbm: New file.
+       * etc/images/ezimage/tag.pbm: New file.
+       * etc/images/ezimage/unlock.pbm: New file.
+       * etc/images/gnus/important.pbm: New file.
+       * etc/images/gnus/mail-send.pbm: New file.
+       * etc/images/gnus/receipt.pbm: New file.
+       * etc/images/gnus/toggle-subscription.pbm: New file.
+       * etc/images/gnus/unimportant.pbm: New file.
+       * etc/images/gud/all.pbm: New file.
+       * etc/images/gud/rcont.pbm: New file.
+       * etc/images/gud/recstart.pbm: New file.
+       * etc/images/gud/recstop.pbm: New file.
+       * etc/images/gud/rfinish.pbm: New file.
+       * etc/images/gud/rnext.pbm: New file.
+       * etc/images/gud/rnexti.pbm: New file.
+       * etc/images/gud/rstep.pbm: New file.
+       * etc/images/gud/rstepi.pbm: New file.
+       * etc/images/gud/thread.pbm: New file.
+       * etc/images/lock-broken.pbm: New file.
+       * etc/images/lock-ok.pbm: New file.
+       * etc/images/lock.pbm: New file.
+       * etc/images/mail/copy.pbm: New file.
+       * etc/images/mail/forward.pbm: New file.
+       * etc/images/mail/not-spam.pbm: New file.
+       * etc/images/mail/outbox.pbm: New file.
+       * etc/images/mail/preview.pbm: New file.
+       * etc/images/mail/save-draft.pbm: New file.
+       * etc/images/mh-logo.pbm: New file.
+       * etc/images/mpc/add.pbm: New file.
+       * etc/images/mpc/ffwd.pbm: New file.
+       * etc/images/mpc/next.pbm: New file.
+       * etc/images/mpc/pause.pbm: New file.
+       * etc/images/mpc/play.pbm: New file.
+       * etc/images/mpc/prev.pbm: New file.
+       * etc/images/mpc/rewind.pbm: New file.
+       * etc/images/mpc/stop.pbm: New file.
+       * etc/images/redo.pbm: New file.
+       * etc/images/smilies/braindamaged.pbm: New file.
+       * etc/images/smilies/cry.pbm: New file.
+       * etc/images/smilies/dead.pbm: New file.
+       * etc/images/smilies/evil.pbm: New file.
+       * etc/images/smilies/forced.pbm: New file.
+       * etc/images/smilies/grin.pbm: New file.
+       * etc/images/smilies/indifferent.pbm: New file.
+       * etc/images/sort-ascending.pbm: New file.
+       * etc/images/sort-column-ascending.pbm: New file.
+       * etc/images/sort-criteria.pbm: New file.
+       * etc/images/sort-descending.pbm: New file.
+       * etc/images/sort-row-ascending.pbm: New file.
+       * etc/images/unchecked.pbm: New file.
+       * etc/images/zoom-in.pbm: New file.
+       * etc/images/README: Update instructions for PBM files.
+
+       Add separator.pbm tool-bar image
+       * etc/images/separator.pbm: New file.  Having it avoids the side
+       effect of changing the tool-bar height when the default font's size
+       changes and XPM image support is not available, due to the SPC
+       characters that are left in the Lisp string used to display the tool
+       bar, because there are no images to display instead of those SPC
+       characters.
+
+       Make show-paren-match face visible on mono-color displays
+       * lisp/faces.el (show-paren-match): Use the underline face for
+       mono-color displays.  (Bug#21481)
+
+2015-09-14  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Don’t double-encode non-ASCII mail clipboard
+       * lisp/mail/mailclient.el (mailclient-send-it):
+       Also fix the case when mailclient-place-body-on-clipboard-flag
+       is non-nil.  Problem reported by Eli Zaretskii (Bug#21471#37).
+
+2015-09-14  Michael Albinus  <michael.albinus@gmx.de>
+
+       Adapt file-notify-tests.el test cases
+       * lisp/filenotify.el (file-notify-rm-watch): Ignore `file-notify-error'.
+       * src/inotify.c (Finotify_valid_p): Adapt docstring.
+       * test/automated/file-notify-tests.el ()
+       (file-notify-test03-autorevert)
+       (file-notify-test04-file-validity)
+       (file-notify-test04-file-validity-remote)
+       (file-notify-test05-dir-validity)
+       (file-notify-test05-dir-validity-remote): Adapt docstring.
+       (file-notify-test04-file-validity): Let events arrive before
+       calling final `file-notify-valid-p'.  Do not ignore errors.
+       (file-notify-test05-dir-validity): Do not manipulate
+       `temporary-file-directory', it isn't necessary.  Let events arrive
+       before calling final `file-notify-valid-p'.  Do not ignore errors.
+
+2015-09-14  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Don’t double-encode non-ASCII for mail client
+       * lisp/mail/mailclient.el (mailclient-encode-string-as-url):
+       Use RFC 6068’s list of unreserved characters.
+       (mailclient-send-it): When encoding the body as a URL,
+       first decode it as per Content-Type: and Content-Transfer-Encoding:,
+       as URLs must use percent-encoded UTF-8 (Bug#21471).
+       * doc/misc/url.texi (mailto): Update RFC number.
+
+2015-09-14  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * lisp/progmodes/cc-langs.el (c-make-init-lang-vars-fun): Use dolist.
+
+2015-09-14  Alan Mackenzie  <acm@muc.de>
+
+       Replace `cadar' with `cadr/car', since `cadar' is problematic on Emacs.
+       (c-make-init-lang-vars-fun): Replace two occurrences of `cadar' with
+       `cadr/car'.
+
+2015-09-14  Eli Zaretskii  <eliz@gnu.org>
+
+       Clarify documentation of char-table extra slots
+       * doc/lispref/sequences.texi (Char-Tables): Clarify that extra
+       slot numbers are zero-based.  (Bug#21467)
+
+2015-09-14  Alan Mackenzie  <acm@muc.de>
+
+       Elisp mode: Make font-lock and imenu handle escaped characters in symbols
+       Fixes debbugs#21449.
+       lisp/emacs-lisp/lisp-mode.el (lisp-imenu-generic-expression)
+       (lisp--el-match-keyword, lisp-el-font-lock-keywords-1)
+       (lisp-cl-font-lock-keywords-1, lisp-el-font-lock-keywords-2)
+       (lisp-cl-font-lock-keywords-2, lisp-string-in-doc-position-p):
+       Insert "\\|\\\\." into regexps which match symbols.
+
+2015-09-14  Eli Zaretskii  <eliz@gnu.org>
+
+       Improve the doc string of w32notify-valid-p
+       * src/w32notify.c (Fw32notify_valid_p): Mention in the doc string
+       that removing a watch makes its object invalid.
+
+2015-09-14  Tassilo Horn  <tsdh@gnu.org>
+
+       Fix tests for file-notify-valid-p.
+       * test/automated/file-notify-tests.el (file-notify--test-cleanup):
+       Use delete-directory to delete file-notify--test-tmpfile if it is
+       a directory.  Likewise for file-notify--test-tmpfile1.
+       (file-notify-test04-file-validity)
+       (file-notify-test05-dir-validity): Delete the parent directory of
+       the test.  Ignore errors when cleaning up after the test.
+
+2015-09-14  Eli Zaretskii  <eliz@gnu.org>
+
+       Report file-notify-error in w32notify.c
+       * src/w32notify.c (report_w32notify_error): New function.
+       (Fw32notify_add_watch, Fw32notify_rm_watch): Use it to report
+       errors, instead of calling report_file_error.  (Bug#21432)
+
+       Implement w32notify-valid-p
+       * src/w32notify.c (Fw32notify_valid_p): New function.  (Bug#21432)
+       * lisp/filenotify.el (w32notify-valid-p): No longer an alias for
+       'identity'.
+
+2015-09-14  Tassilo Horn  <tsdh@gnu.org>
+
+       Test file-notify-valid-p.
+       * test/automated/file-notify-tests.el
+       (file-notify-test04-file-validity, file-notify-test05-dir-validity): New
+       tests.
+
+2015-09-13  Eli Zaretskii  <eliz@gnu.org>
+
+       Fix markup in ELisp manual
+       * doc/lispref/frames.texi (Font and Color Parameters): Fix markup
+       of the 'alpha' parameter value.  (Bug#21470)
+
+2015-09-13  Michael Albinus  <michael.albinus@gmx.de>
+
+       Introduce `file-notify-valid-p'
+       * lisp/filenotify.el (file-notify-valid-p): New defun.
+       (gfile-valid-p, w32notify-valid-p): Make them an alias to `identity'.
+       * lisp/net/tramp-adb.el (tramp-adb-file-name-handler-alist)
+       * lisp/net/tramp-gvfs.el (tramp-gvfs-file-name-handler-alist)
+       * lisp/net/tramp-sh.el (tramp-sh-file-name-handler-alist)
+       * lisp/net/tramp-smb.el (tramp-smb-file-name-handler-alist)
+       <file-notify-valid-p>: Add handler.
+       * lisp/net/tramp.el (tramp-file-name-for-operation):
+       Add `file-notify-valid-p'.
+       (tramp-handle-file-notify-valid-p): New defun.
+       * src/inotify.c (Finotify_valid_p): New defun.
+       (syms_of_inotify): Declare Sinotify_valid_p.
+
+2015-09-13  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Port Unicode char detection to FreeBSD+svgalib
+       Problem reported by Ashish SHUKLA in:
+       http://lists.gnu.org/archive/html/emacs-devel/2015-09/msg00531.html
+       * configure.ac: Check for struct unipair.unicode instead of for
+       <linux/kd.h>, since that’s more specific to what the code actually needs.
+       * src/terminal.c: Use HAVE_STRUCT_UNIPAIR_UNICODE, not HAVE_LINUX_KD_H.
+
+       * src/indent.c (Fvertical_motion): Simplify bugfix (Bug#21468).
+
+2015-09-13  Eli Zaretskii  <eliz@gnu.org>
+
+       Fix vertical cursor motion across overlay strings with newlines
+       * src/indent.c (Fvertical_motion): Don't leave point in the middle
+       of an overlay string with newlines, as that will position the
+       cursor after the string at whatever column is there.  (Bug#21468)
+
+2015-09-12  Michael Albinus  <michael.albinus@gmx.de>
+
+       Fix tests in file-notify-tests.el
+       * test/automated/file-notify-tests.el: Remove Tramp declarations.
+       (file-notify-test00-availability): Print remote command w/o Tramp
+       internal functions.
+       (file-notify-test02-events, file-notify-test02-events-remote):
+       Adapt docstring.
+       (file-notify-test03-autorevert): Use `format-message' when
+       inspecting *Messages* buffer.
+
+2015-09-12  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       Bind inhibit-modification-hooks rather than a/b-c-f
+       * lisp/wid-edit.el (widget-editable-list-insert-before)
+       (widget-editable-list-delete-at):
+       * lisp/progmodes/cperl-mode.el (cperl-find-pods-heres)
+       (cperl-font-lock-unfontify-region-function):
+       * lisp/progmodes/antlr-mode.el (save-buffer-state-x):
+       * lisp/obsolete/longlines.el (longlines-mode):
+       * lisp/obsolete/fast-lock.el (save-buffer-state):
+       * lisp/mouse.el (mouse-save-then-kill-delete-region):
+       * lisp/gnus/message.el (message-hide-headers):
+       * lisp/eshell/esh-mode.el (eshell-send-input, eshell-output-filter):
+       * lisp/ibuffer.el (ibuffer-update-title-and-summary)
+       (ibuffer-redisplay-engine): Bind inhibit-modification-hooks to t rather
+       than after/before-change-functions to nil.
+
+2015-09-11  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       (jit-lock-deferred-fontify): Pay attention to skipped redisplays
+       * lisp/jit-lock.el (jit-lock-deferred-fontify): Make sure we refresh
+       the buffers, even if the forced redisplay is interrupted.
+
+       * lisp/emacs-lisp/eieio-core.el (class-p): Accept class objects
+
+       Merge syntax-propertize--done and parse-sexp-propertize-done
+       * lisp/emacs-lisp/syntax.el (syntax-propertize--done): Remove.
+       (syntax-propertize): Set syntax-propertize--done even if
+       syntax-propertize-function is nil.  Avoid recursive invocations.
+       (syntax-propertize-chunks): New var.
+       (internal--syntax-propertize): Use it.  Rename from syntax--jit-propertize.
+       Simplify.
+       (parse-sexp-propertize-function): Don't set any more.
+       * src/syntax.c (SETUP_SYNTAX_TABLE): Call parse_sexp_propertize as needed.
+       (parse_sexp_propertize): Don't assume charpos is not yet propertized.
+       Call Qinternal__syntax_propertize instead of
+       Vparse_sexp_propertize_function.  Truncate e_property if needed.
+       (update_syntax_table_forward): Streamline.
+       (syms_of_syntax): Define Qinternal__syntax_propertize.
+       (syntax_propertize__done): Rename from parse_sexp_propertize_done.
+
+2015-09-11  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Prefer straight quoting in some text files
+       Mostly this just changes ` to ' in static text.  Some exceptions:
+       * INSTALL.REPO: Use curved quotes, as the diagnostic in question
+       typically does that now.
+       * admin/quick-install-emacs (TRY, top level):
+       Use straight quoting in diagnostics.
+       * src/README: Fix working-directory confusion.
+
+       * CONTRIBUTE: Move send-email here from git-workflow.
+
+2015-09-11  Michael Albinus  <michael.albinus@gmx.de>
+
+       Improve file notifications in Tramp
+       * lisp/net/tramp-sh.el (tramp-sh-handle-file-notify-add-watch):
+       Set proper events to watch for.
+       (tramp-sh-file-gvfs-monitor-dir-process-filter): Report only
+       watched events.
+
+2015-09-11  Eli Zaretskii  <eliz@gnu.org>
+
+       Fix NS build with --enable-checking='glyphs'
+       * src/nsfns.m (unwind_create_frame): Make the preprocessor
+       conditionals for referencing 'dpyinfo' consistent throughout the
+       function.  (Bug#21426)
+
+2015-09-10  Nicolas Petton  <nicolas@petton.fr>
+
+       Add seq-find
+       This function is similar to `seq-some' but returns the found element.
+       In the cases where nil can be the found element, a sentinel optional
+       argument can be provided to avoid ambiguities.
+       * lisp/emacs-lisp/seq.el (seq-find): New function.
+       * test/automated/seq-tests.el (test-seq-find): Add tests for `seq-find'.
+       * doc/lispref/sequences.texi (Sequence Functions): Add documentation for
+       seq-find.
+
+2015-09-10  Tassilo Horn  <tsdh@gnu.org>
+
+       Document file-notify--test-with-events.
+       * test/automated/file-notify-tests.el (file-notify--test-with-events):
+       Add docstring.
+
+2015-09-10  Michael Albinus  <michael.albinus@gmx.de>
+
+       Report used native library in file-notify-tests.el
+       * test/automated/file-notify-tests.el
+       (tramp-get-remote-gvfs-monitor-dir)
+       (tramp-get-remote-inotifywait): Declare them.
+       (file-notify-test00-availability): Print used native library.
+
+2015-09-10  Mark Oteiza  <mvoteiza@udel.edu>
+
+       * lisp/mpc.el (mpc--proc-connect): Use file-name-absolute-p.
+       (mpc-file-local-copy): Check for absolute path.  Check more config
+       locations.
+
+2015-09-10  Eli Zaretskii  <eliz@gnu.org>
+
+       Improve documentation of categories
+       * doc/lispref/syntax.texi (Categories): Clarify the example of
+       using define-category and modify-category-entry.  (Bug#21448)
+
+2015-09-10  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Revert some stray curved quotes I missed earlier
+       Problem reported by David Kastrup in:
+       http://lists.gnu.org/archive/html/emacs-devel/2015-09/msg00440.html
+       * lisp/international/mule-cmds.el (leim-list-header):
+       Use format-message with an ASCII-only format.
+
+       Prefer NUMBERP to spelling it out
+       * src/editfns.c (styled_format):
+       * src/frame.h (NUMVAL):
+       * src/image.c (parse_image_spec):
+       * src/lisp.h (CHECK_NUMBER_OR_FLOAT)
+       (CHECK_NUMBER_OR_FLOAT_COERCE_MARKER):
+       * src/process.c (Fsignal_process):
+       * src/xdisp.c (calc_pixel_width_or_height, on_hot_spot_p):
+       * src/xfaces.c (check_lface_attrs):
+       * src/xselect.c (x_fill_property_data, x_send_client_event):
+       Use NUMBERP rather than INTEGERP || FLOATP.
+
+2015-09-10  Tassilo Horn  <tsdh@gnu.org>
+
+       Improve file-notify-tests
+       * test/automated/file-notify-tests.el: Use lexical-binding
+       (file-notify--test-cleanup): New function.
+       (file-notify-test00-availability, file-notify-test01-add-watch)
+       (file-notify-test02-events, file-notify-test03-autorevert): Use it.
+       (file-notify--test-with-events): New macro.
+       (file-notify-test02-events): Use it.
+
+2015-09-10  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Add patch-sending instructions to git-workflow
+       From a suggestion by Mitchel Humpherys in:
+       http://lists.gnu.org/archive/html/emacs-devel/2015-09/msg00421.html
+       * admin/notes/git-workflow (Sending patches): New section.
+
+       Port to GIFLIB 5.0.6 and later
+       Problem reported by Mitchel Humpherys in:
+       http://lists.gnu.org/archive/html/emacs-devel/2015-09/msg00420.html
+       * src/image.c (HAVE_GIFERRORSTRING) [HAVE_GIF]: New macro.
+       (GifErrorString, init_gif_functions) [HAVE_GIF && WINDOWSNT]:
+       (gif_load) [HAVE_GIF]: Use it.
+
+2015-09-10  Glenn Morris  <rgm@gnu.org>
+
+       * lisp/cedet/ede/auto.el (ede-project-autoload): Doc fix.
+
+2015-09-09  Glenn Morris  <rgm@gnu.org>
+
+       * test/automated/file-notify-tests.el (file-notify-test02-events):
+       Fix recent change.
+
+2015-09-09  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Refix movemail GCC pacification
+       Problem reported by Ken Brown in:
+       http://lists.gnu.org/archive/html/emacs-devel/2015-09/msg00406.html
+       * lib-src/movemail.c (main): Fix previous change.
+
+2015-09-09  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       (time-to-seconds, time-less-p): Mark unused vars with underscore
+       * lisp/calendar/time-date.el (time-to-seconds, time-less-p):
+       Mark unused vars with underscore.
+
+       * src/syntax.c (SETUP_SYNTAX_TABLE): Move truncation...
+       (parse_sexp_propertize): ...from here.
+
+       * lisp/filenotify.el: Use lexical-binding
+       (file-notify-add-watch): Avoid add-to-list.
+
+2015-09-09  Tassilo Horn  <tsdh@gnu.org>
+
+       Start checking event types in file-notify tests
+       * test/automated/file-notify-tests.el (file-notify--test-events): New
+       variable.
+       (file-notify--test-event-handler): Append received event to
+       file-notify--test-events for later analysis.
+       (file-notify-test02-events): Assert that the expected notifications have
+       arrived in the expected order.
+
+2015-09-09  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Merge from gnulib and texinfo
+       This incorporates:
+       2015-08-03 Improve port of stdalign to C++11
+       * lib/stdalign.in.h: Copy from gnulib.
+       * doc/misc/texinfo.tex: Copy from texinfo.
+
+2015-09-09  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       Make syntax.c call syntax-propertize on demand
+       * lisp/emacs-lisp/syntax.el (syntax--jit-propertize): New function.
+       (parse-sexp-propertize-function): Use it.
+       (syntax-propertize): Disable parse-sexp-propertize-function.
+       * src/syntax.c (parse_sexp_propertize, update_syntax_table_forward):
+       New functions.
+       (syms_of_syntax): New vars `parse-sexp-propertize-done' and
+       `parse-sexp-propertize-function'.
+       * src/syntax.h (struct gl_state_s): Add `e_property_truncated' field.
+       (UPDATE_SYNTAX_TABLE_FORWARD): Use update_syntax_table_forward.
+       (SETUP_BUFFER_SYNTAX_TABLE): Set e_property_truncated.
+       * lisp/progmodes/elisp-mode.el (elisp-byte-code-syntax-propertize):
+       Don't assume `point' is set.
+
+2015-09-09  Eli Zaretskii  <eliz@gnu.org>
+
+       Fix indentation of an @example in ELisp manual
+       * doc/lispref/syntax.texi (Categories): Untabify the example.
+       (Bug#21448)
+
+2015-09-09  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Define internal-char-font even if --without-x
+       The function is used now even in non-graphical environments.
+       Problem reported by Glenn Morris in:
+       http://lists.gnu.org/archive/html/emacs-devel/2015-09/msg00401.html
+       * src/font.c (Finternal_char_font): Move here ...
+       * src/fontset.c (Finternal_char_font): ... from here.
+
+2015-09-09  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * lisp/emacs-lisp/cl-generic.el (cl-generic-generalizers): Remove
+       warning.
+
+2015-09-09  Eli Zaretskii  <eliz@gnu.org>
+
+       Fix display of complex local data types in GDB-MI
+       * lisp/progmodes/gdb-mi.el (gdb-locals-handler-custom): If a
+       variable has no value, display "<complex data type>" as a
+       placeholder, instead of a confusing "nil".  (Bug#21438)
+
+2015-09-09  Oleh Krehel  <ohwoeowho@gmail.com>
+
+       Remove redundant redefinition of seq-drop-while from seq.el
+       * lisp/emacs-lisp/seq.el (seq-drop-while): Define only once.
+
+2015-09-09  Phil Sainty  <psainty@orcon.net.nz>
+
+       * lisp/emacs-lisp/package.el (package--ensure-init-file)
+       More robust check for `package-initialize' calls in init file.
+       This function accepts an optional argument, but calls passing
+       an argument would not have been detected.
+
+2015-09-09  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Port movemail to RHEL 6 with --enable-gcc-warnings
+       * lib-src/movemail.c (main): Declare local only if needed.
+
+       Port recent Linux console changes to RHEL 6
+       * src/terminal.c [HAVE_LINUX_KD_H]: Include <sys/ioctl.h>.
+
+       Improvements for curved quotes on Linux consule
+       This should help Emacs work better out-of-the-box on Linux consoles,
+       which have only limited support for displaying Unicode characters.
+       Also, undo the recent change that caused text-quoting-style to
+       affect quote display on terminals, so that the two features are
+       independent.  See Alan Mackenzie in:
+       http://lists.gnu.org/archive/html/emacs-devel/2015-09/msg00244.html
+       Finally, add a style parameter to startup--setup-quote-display,
+       so that this function can also be invoked after startup, with
+       different styles depending on user preference at the time.
+       * configure.ac: Check for linux/kd.h header.
+       * doc/emacs/display.texi (Text Display): Document quote display.
+       * doc/lispref/display.texi (Active Display Table):
+       * etc/NEWS:
+       * lisp/startup.el (startup--setup-quote-display, command-line):
+       text-quoting-style no longer affects quote display.
+       * doc/lispref/frames.texi (Terminal Parameters): Fix typo.
+       * lisp/international/mule-util.el (char-displayable-p):
+       * lisp/startup.el (startup--setup-quote-display):
+       On a text terminal supporting glyph codes, use the reported
+       glyph codes instead of the terminal coding system, as this
+       is more accurate on the Linux console.
+       * lisp/startup.el (startup--setup-quote-display):
+       New optional arg STYLE.
+       * src/fontset.c (Finternal_char_font):
+       Report glyph codes for a text terminal, if they are available.
+       Currently this is supported only for the Linux console.
+       * src/termhooks.h (struct terminal): New member glyph-code-table.
+       * src/terminal.c [HAVE_LINUX_KD_H]: Include <errno.h>, <linux/kd.h>.
+       (calculate_glyph_code_table) [HAVE_LINUX_KD_H]: New function.
+       (terminal_glyph_code): New function.
+
+2015-09-08  Juri Linkov  <juri@linkov.net>
+
+       * lisp/info.el (Info-fontify-node): Don't stop at the non-title
+       underline.  (Bug#21433)
+
+2015-09-08  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * lisp/calendar/time-date.el (with-decoded-time-value): Fix debug spec.
+
+2015-09-08  Tassilo Horn  <tsdh@gnu.org>
+
+       Fix double-reporting of rename events with inotify
+       * lisp/filenotify.el (file-notify-callback): Fix double-reporting
+       of rename events with inotify (bug#21435).
+
+2015-09-08  Vasilij Schneidermann  <v.schneidermann@gmail.com>  (tiny change)
+
+       * lisp/play/tetris.el (tetris-move-down): New command (bug#21360).
+       (tetris-mode-map): Use it.
+
+2015-09-08  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       Remove a few simple cases of global redisplay
+       * src/dispnew.c (redraw_frame): Don't redisplay all frames.
+       * src/xdisp.c (echo_area_display): Set the frame's `redisplay' bit
+       rather than returning a "resized_p" boolean.
+       (redisplay_internal): Adjust call accordingly.
+       * src/xfaces.c (free_realized_faces): Don't redisplay all frames.
+       (free_all_realized_faces): Set windows_or_buffers_changed so as to ease
+       tracking of this undesirable situation.
+
+       * src/process.c (status_notify): Avoid global redisplay (bug#11822)
+       * src/process.c (status_notify): Only set the update_mode_line on the
+       relevant buffers rather than setting it globally.
+
+2015-09-07  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * lisp/electric.el (electric-quote-post-self-insert-function):
+       Don't use syntax-ppss if comment-use-syntax is nil (e.g. message-mode).
+       (electric-quote-mode): Activate everywhere in message-mode.
+
+2015-09-07  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Go back to grave quoting in source-code docstrings etc.
+       This reverts almost all my recent changes to use curved quotes
+       in docstrings and/or strings used for error diagnostics.
+       There are a few exceptions, e.g., Bahá’í proper names.
+       * admin/unidata/unidata-gen.el (unidata-gen-table):
+       * lisp/abbrev.el (expand-region-abbrevs):
+       * lisp/align.el (align-region):
+       * lisp/allout.el (allout-mode, allout-solicit-alternate-bullet)
+       (outlineify-sticky):
+       * lisp/apropos.el (apropos-library):
+       * lisp/bookmark.el (bookmark-default-annotation-text):
+       * lisp/button.el (button-category-symbol, button-put)
+       (make-text-button):
+       * lisp/calc/calc-aent.el (math-read-if, math-read-factor):
+       * lisp/calc/calc-embed.el (calc-do-embedded):
+       * lisp/calc/calc-ext.el (calc-user-function-list):
+       * lisp/calc/calc-graph.el (calc-graph-show-dumb):
+       * lisp/calc/calc-help.el (calc-describe-key)
+       (calc-describe-thing, calc-full-help):
+       * lisp/calc/calc-lang.el (calc-c-language)
+       (math-parse-fortran-vector-end, math-parse-tex-sum)
+       (math-parse-eqn-matrix, math-parse-eqn-prime)
+       (calc-yacas-language, calc-maxima-language, calc-giac-language)
+       (math-read-giac-subscr, math-read-math-subscr)
+       (math-read-big-rec, math-read-big-balance):
+       * lisp/calc/calc-misc.el (calc-help, report-calc-bug):
+       * lisp/calc/calc-mode.el (calc-auto-why, calc-save-modes)
+       (calc-auto-recompute):
+       * lisp/calc/calc-prog.el (calc-fix-token-name)
+       (calc-read-parse-table-part, calc-user-define-invocation)
+       (math-do-arg-check):
+       * lisp/calc/calc-store.el (calc-edit-variable):
+       * lisp/calc/calc-units.el (math-build-units-table-buffer):
+       * lisp/calc/calc-vec.el (math-read-brackets):
+       * lisp/calc/calc-yank.el (calc-edit-mode):
+       * lisp/calc/calc.el (calc, calc-do, calc-user-invocation):
+       * lisp/calendar/appt.el (appt-display-message):
+       * lisp/calendar/diary-lib.el (diary-check-diary-file)
+       (diary-mail-entries, diary-from-outlook):
+       * lisp/calendar/icalendar.el (icalendar-export-region)
+       (icalendar--convert-float-to-ical)
+       (icalendar--convert-date-to-ical)
+       (icalendar--convert-ical-to-diary)
+       (icalendar--convert-recurring-to-diary)
+       (icalendar--add-diary-entry):
+       * lisp/calendar/time-date.el (format-seconds):
+       * lisp/calendar/timeclock.el (timeclock-mode-line-display)
+       (timeclock-make-hours-explicit, timeclock-log-data):
+       * lisp/calendar/todo-mode.el (todo-prefix, todo-delete-category)
+       (todo-item-mark, todo-check-format)
+       (todo-insert-item--next-param, todo-edit-item--next-key)
+       (todo-mode):
+       * lisp/cedet/ede/pmake.el (ede-proj-makefile-insert-dist-rules):
+       * lisp/cedet/mode-local.el (describe-mode-local-overload)
+       (mode-local-print-binding, mode-local-describe-bindings-2):
+       * lisp/cedet/semantic/complete.el (semantic-displayor-show-request):
+       * lisp/cedet/srecode/srt-mode.el (srecode-macro-help):
+       * lisp/cus-start.el (standard):
+       * lisp/cus-theme.el (describe-theme-1):
+       * lisp/custom.el (custom-add-dependencies, custom-check-theme)
+       (custom--sort-vars-1, load-theme):
+       * lisp/descr-text.el (describe-text-properties-1, describe-char):
+       * lisp/dired-x.el (dired-do-run-mail):
+       * lisp/dired.el (dired-log):
+       * lisp/emacs-lisp/advice.el (ad-read-advised-function)
+       (ad-read-advice-class, ad-read-advice-name, ad-enable-advice)
+       (ad-disable-advice, ad-remove-advice, ad-set-argument)
+       (ad-set-arguments, ad--defalias-fset, ad-activate)
+       (ad-deactivate):
+       * lisp/emacs-lisp/byte-opt.el (byte-compile-inline-expand)
+       (byte-compile-unfold-lambda, byte-optimize-form-code-walker)
+       (byte-optimize-while, byte-optimize-apply):
+       * lisp/emacs-lisp/byte-run.el (defun, defsubst):
+       * lisp/emacs-lisp/bytecomp.el (byte-compile-lapcode)
+       (byte-compile-log-file, byte-compile-format-warn)
+       (byte-compile-nogroup-warn, byte-compile-arglist-warn)
+       (byte-compile-cl-warn)
+       (byte-compile-warn-about-unresolved-functions)
+       (byte-compile-file, byte-compile--declare-var)
+       (byte-compile-file-form-defmumble, byte-compile-form)
+       (byte-compile-normal-call, byte-compile-check-variable)
+       (byte-compile-variable-ref, byte-compile-variable-set)
+       (byte-compile-subr-wrong-args, byte-compile-setq-default)
+       (byte-compile-negation-optimizer)
+       (byte-compile-condition-case--old)
+       (byte-compile-condition-case--new, byte-compile-save-excursion)
+       (byte-compile-defvar, byte-compile-autoload)
+       (byte-compile-lambda-form)
+       (byte-compile-make-variable-buffer-local, display-call-tree)
+       (batch-byte-compile):
+       * lisp/emacs-lisp/cconv.el (cconv-convert, cconv--analyze-use):
+       * lisp/emacs-lisp/chart.el (chart-space-usage):
+       * lisp/emacs-lisp/check-declare.el (check-declare-scan)
+       (check-declare-warn, check-declare-file)
+       (check-declare-directory):
+       * lisp/emacs-lisp/checkdoc.el (checkdoc-this-string-valid-engine)
+       (checkdoc-message-text-engine):
+       * lisp/emacs-lisp/cl-extra.el (cl-parse-integer)
+       (cl--describe-class):
+       * lisp/emacs-lisp/cl-generic.el (cl-defgeneric)
+       (cl--generic-describe, cl-generic-generalizers):
+       * lisp/emacs-lisp/cl-macs.el (cl--parse-loop-clause, cl-tagbody)
+       (cl-symbol-macrolet):
+       * lisp/emacs-lisp/cl.el (cl-unload-function, flet):
+       * lisp/emacs-lisp/copyright.el (copyright)
+       (copyright-update-directory):
+       * lisp/emacs-lisp/edebug.el (edebug-read-list):
+       * lisp/emacs-lisp/eieio-base.el (eieio-persistent-read):
+       * lisp/emacs-lisp/eieio-core.el (eieio--slot-override)
+       (eieio-oref):
+       * lisp/emacs-lisp/eieio-opt.el (eieio-help-constructor):
+       * lisp/emacs-lisp/eieio-speedbar.el:
+       (eieio-speedbar-child-make-tag-lines)
+       (eieio-speedbar-child-description):
+       * lisp/emacs-lisp/eieio.el (defclass, change-class):
+       * lisp/emacs-lisp/elint.el (elint-file, elint-get-top-forms)
+       (elint-init-form, elint-check-defalias-form)
+       (elint-check-let-form):
+       * lisp/emacs-lisp/ert.el (ert-get-test, ert-results-mode-menu)
+       (ert-results-pop-to-backtrace-for-test-at-point)
+       (ert-results-pop-to-messages-for-test-at-point)
+       (ert-results-pop-to-should-forms-for-test-at-point)
+       (ert-describe-test):
+       * lisp/emacs-lisp/find-func.el (find-function-search-for-symbol)
+       (find-function-library):
+       * lisp/emacs-lisp/generator.el (iter-yield):
+       * lisp/emacs-lisp/gv.el (gv-define-simple-setter):
+       * lisp/emacs-lisp/lisp-mnt.el (lm-verify):
+       * lisp/emacs-lisp/macroexp.el (macroexp--obsolete-warning):
+       * lisp/emacs-lisp/map-ynp.el (map-y-or-n-p):
+       * lisp/emacs-lisp/nadvice.el (advice--make-docstring)
+       (advice--make, define-advice):
+       * lisp/emacs-lisp/package-x.el (package-upload-file):
+       * lisp/emacs-lisp/package.el (package-version-join)
+       (package-disabled-p, package-activate-1, package-activate)
+       (package--download-one-archive)
+       (package--download-and-read-archives)
+       (package-compute-transaction, package-install-from-archive)
+       (package-install, package-install-selected-packages)
+       (package-delete, package-autoremove, describe-package-1)
+       (package-install-button-action, package-delete-button-action)
+       (package-menu-hide-package, package-menu--list-to-prompt)
+       (package-menu--perform-transaction)
+       (package-menu--find-and-notify-upgrades):
+       * lisp/emacs-lisp/pcase.el (pcase-exhaustive, pcase--u1):
+       * lisp/emacs-lisp/re-builder.el (reb-enter-subexp-mode):
+       * lisp/emacs-lisp/ring.el (ring-previous, ring-next):
+       * lisp/emacs-lisp/rx.el (rx-check, rx-anything)
+       (rx-check-any-string, rx-check-any, rx-check-not, rx-=)
+       (rx-repeat, rx-check-backref, rx-syntax, rx-check-category)
+       (rx-form):
+       * lisp/emacs-lisp/smie.el (smie-config-save):
+       * lisp/emacs-lisp/subr-x.el (internal--check-binding):
+       * lisp/emacs-lisp/tabulated-list.el (tabulated-list-put-tag):
+       * lisp/emacs-lisp/testcover.el (testcover-1value):
+       * lisp/emacs-lisp/timer.el (timer-event-handler):
+       * lisp/emulation/viper-cmd.el (viper-toggle-parse-sexp-ignore-comments)
+       (viper-toggle-search-style, viper-kill-buffer)
+       (viper-brac-function):
+       * lisp/emulation/viper-macs.el (viper-record-kbd-macro):
+       * lisp/env.el (setenv):
+       * lisp/erc/erc-button.el (erc-nick-popup):
+       * lisp/erc/erc.el (erc-cmd-LOAD, erc-handle-login, english):
+       * lisp/eshell/em-dirs.el (eshell/cd):
+       * lisp/eshell/em-glob.el (eshell-glob-regexp)
+       (eshell-glob-entries):
+       * lisp/eshell/em-pred.el (eshell-parse-modifiers):
+       * lisp/eshell/esh-opt.el (eshell-show-usage):
+       * lisp/facemenu.el (facemenu-add-new-face)
+       (facemenu-add-new-color):
+       * lisp/faces.el (read-face-name, read-face-font, describe-face)
+       (x-resolve-font-name):
+       * lisp/files-x.el (modify-file-local-variable):
+       * lisp/files.el (locate-user-emacs-file, find-alternate-file)
+       (set-auto-mode, hack-one-local-variable--obsolete)
+       (dir-locals-set-directory-class, write-file, basic-save-buffer)
+       (delete-directory, copy-directory, recover-session)
+       (recover-session-finish, insert-directory)
+       (file-modes-char-to-who, file-modes-symbolic-to-number)
+       (move-file-to-trash):
+       * lisp/filesets.el (filesets-add-buffer, filesets-remove-buffer):
+       * lisp/find-cmd.el (find-generic, find-to-string):
+       * lisp/finder.el (finder-commentary):
+       * lisp/font-lock.el (font-lock-fontify-buffer):
+       * lisp/format.el (format-write-file, format-find-file)
+       (format-insert-file):
+       * lisp/frame.el (get-device-terminal, select-frame-by-name):
+       * lisp/fringe.el (fringe--check-style):
+       * lisp/gnus/nnmairix.el (nnmairix-widget-create-query):
+       * lisp/help-fns.el (help-fns--key-bindings)
+       (help-fns--compiler-macro, help-fns--parent-mode)
+       (help-fns--obsolete, help-fns--interactive-only)
+       (describe-function-1, describe-variable):
+       * lisp/help.el (describe-mode)
+       (describe-minor-mode-from-indicator):
+       * lisp/image.el (image-type):
+       * lisp/international/ccl.el (ccl-dump):
+       * lisp/international/fontset.el (x-must-resolve-font-name):
+       * lisp/international/mule-cmds.el (prefer-coding-system)
+       (select-safe-coding-system-interactively)
+       (select-safe-coding-system, activate-input-method)
+       (toggle-input-method, describe-current-input-method)
+       (describe-language-environment):
+       * lisp/international/mule-conf.el (code-offset):
+       * lisp/international/mule-diag.el (describe-character-set)
+       (list-input-methods-1):
+       * lisp/mail/feedmail.el (feedmail-run-the-queue):
+       * lisp/mouse.el (minor-mode-menu-from-indicator):
+       * lisp/mpc.el (mpc-playlist-rename):
+       * lisp/msb.el (msb--choose-menu):
+       * lisp/net/ange-ftp.el (ange-ftp-shell-command):
+       * lisp/net/imap.el (imap-interactive-login):
+       * lisp/net/mairix.el (mairix-widget-create-query):
+       * lisp/net/newst-backend.el (newsticker--sentinel-work):
+       * lisp/net/newst-treeview.el (newsticker--treeview-load):
+       * lisp/net/rlogin.el (rlogin):
+       * lisp/obsolete/iswitchb.el (iswitchb-possible-new-buffer):
+       * lisp/obsolete/otodo-mode.el (todo-more-important-p):
+       * lisp/obsolete/pgg-gpg.el (pgg-gpg-process-region):
+       * lisp/obsolete/pgg-pgp.el (pgg-pgp-process-region):
+       * lisp/obsolete/pgg-pgp5.el (pgg-pgp5-process-region):
+       * lisp/org/ob-core.el (org-babel-goto-named-src-block)
+       (org-babel-goto-named-result):
+       * lisp/org/ob-fortran.el (org-babel-fortran-ensure-main-wrap):
+       * lisp/org/ob-ref.el (org-babel-ref-resolve):
+       * lisp/org/org-agenda.el (org-agenda-prepare):
+       * lisp/org/org-clock.el (org-clock-notify-once-if-expired)
+       (org-clock-resolve):
+       * lisp/org/org-ctags.el (org-ctags-ask-rebuild-tags-file-then-find-tag):
+       * lisp/org/org-feed.el (org-feed-parse-atom-entry):
+       * lisp/org/org-habit.el (org-habit-parse-todo):
+       * lisp/org/org-mouse.el (org-mouse-popup-global-menu)
+       (org-mouse-context-menu):
+       * lisp/org/org-table.el (org-table-edit-formulas):
+       * lisp/org/ox.el (org-export-async-start):
+       * lisp/proced.el (proced-log):
+       * lisp/progmodes/ada-mode.el (ada-get-indent-case)
+       (ada-check-matching-start, ada-goto-matching-start):
+       * lisp/progmodes/ada-prj.el (ada-prj-display-page):
+       * lisp/progmodes/ada-xref.el (ada-find-executable):
+       * lisp/progmodes/ebrowse.el (ebrowse-tags-apropos):
+       * lisp/progmodes/etags.el (etags-tags-apropos-additional):
+       * lisp/progmodes/flymake.el (flymake-parse-err-lines)
+       (flymake-start-syntax-check-process):
+       * lisp/progmodes/python.el (python-shell-get-process-or-error)
+       (python-define-auxiliary-skeleton):
+       * lisp/progmodes/sql.el (sql-comint):
+       * lisp/progmodes/verilog-mode.el (verilog-load-file-at-point):
+       * lisp/progmodes/vhdl-mode.el (vhdl-widget-directory-validate):
+       * lisp/recentf.el (recentf-open-files):
+       * lisp/replace.el (query-replace-read-from)
+       (occur-after-change-function, occur-1):
+       * lisp/scroll-bar.el (scroll-bar-columns):
+       * lisp/server.el (server-get-auth-key):
+       * lisp/simple.el (execute-extended-command)
+       (undo-outer-limit-truncate, list-processes--refresh)
+       (compose-mail, set-variable, choose-completion-string)
+       (define-alternatives):
+       * lisp/startup.el (site-run-file, tty-handle-args, command-line)
+       (command-line-1):
+       * lisp/subr.el (noreturn, define-error, add-to-list)
+       (read-char-choice, version-to-list):
+       * lisp/term/common-win.el (x-handle-xrm-switch)
+       (x-handle-name-switch, x-handle-args):
+       * lisp/term/x-win.el (x-handle-parent-id, x-handle-smid):
+       * lisp/textmodes/reftex-ref.el (reftex-label):
+       * lisp/textmodes/reftex-toc.el (reftex-toc-rename-label):
+       * lisp/textmodes/two-column.el (2C-split):
+       * lisp/tutorial.el (tutorial--describe-nonstandard-key)
+       (tutorial--find-changed-keys):
+       * lisp/type-break.el (type-break-noninteractive-query):
+       * lisp/wdired.el (wdired-do-renames, wdired-do-symlink-changes)
+       (wdired-do-perm-changes):
+       * lisp/whitespace.el (whitespace-report-region):
+       Prefer grave quoting in source-code strings used to generate help
+       and diagnostics.
+       * lisp/faces.el (face-documentation):
+       No need to convert quotes, since the result is a docstring.
+       * lisp/info.el (Info-virtual-index-find-node)
+       (Info-virtual-index, info-apropos):
+       Simplify by generating only curved quotes, since info files are
+       typically that ways nowadays anyway.
+       * lisp/international/mule-diag.el (list-input-methods):
+       Don’t assume text quoting style is curved.
+       * lisp/org/org-bibtex.el (org-bibtex-fields):
+       Revert my recent changes, going back to the old quoting style.
+
+2015-09-07  Artur Malabarba  <bruce.connor.am@gmail.com>
+
+       * lisp/emacs-lisp/package.el: Reduce autoloading before compiling
+       (package--autoloads-file-name)
+       (package--activate-autoloads-and-load-path): New function.
+       (package-activate-1): Delegate autoloading and load-path
+       configuration to `package--activate-autoloads-and-load-path'.
+       (package--compile): Before compilation, call
+       `package--activate-autoloads-and-load-path' instead of
+       `package-activate-1'.
+
+2015-09-07  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * src/keyboard.c (read_key_sequence): Complete last fix (bug#21403).
+
+2015-09-07  Eli Zaretskii  <eliz@gnu.org>
+
+       Fix deletion of symlinks to directories on MS-Windows
+       * src/w32.c (sys_unlink): If 'unlink' fails, and the argument is a
+       symlink to a directory, try again with 'rmdir'.
+       (is_symlink): If the argument is a symlink to a directory, set a
+       bit in the return value to indicate that fact.
+
+2015-09-07  Artur Malabarba  <bruce.connor.am@gmail.com>
+
+       * lisp/emacs-lisp/package.el (package-initialize): Set enable-at-startup
+       When `package-initialize' is called as part of loading the init file,
+       the user probably doesn't want it to be called again afterwards. In this
+       situation, `package-initialize' now sets `package-enable-at-startup' to
+       nil to prevent that. The user can have the old behaviour by setting this
+       variable to t after the call to `package-initialize'.  (Bug#21423)
+       * doc/emacs/package.texi (Package Installation): Document it.
+       * doc/lispref/package.texi (Packaging Basics): Document it.
+       * etc/NEWS: Document it.
+
+2015-09-06  Thomas Fitzsimmons  <fitzsim@fitzsim.org>
+
+       Bump version of ntlm.el to 2.00
+       * lisp/net/ntlm.el: Bump version to 2.00.  New maintainer.  Add comm
+       keyword.
+
+2015-09-06  Adam Sjøgren  <asjo@koldfront.dk>
+
+       * doc/misc/gnus.texi (Mail Source Specifiers):
+       Allow :mailbox to be a list.
+
+2015-09-06  Dmitry Gutov  <dgutov@yandex.ru>
+
+       Allow even one non-regular character before the implicit tag name
+       * lisp/progmodes/etags.el (etags-tags-completion-table):
+       Allow even one non-regular character before the implicit tag name.
+       Reported at http://emacs.stackexchange.com/questions/15269/.
+
+2015-09-06  Thomas Fitzsimmons  <fitzsim@fitzsim.org>
+
+       Add support for NTLMv2 authentication
+       * net/ntlm.el (ntlm): New customization group.
+       (ntlm-compatibility-level): New defcustom.
+       (ntlm-compute-timestamp): New function.
+       (ntlm-generate-nonce): Likewise.
+       (ntlm-build-auth-response): Add support for NTLMv2 authentication.
+
+2015-09-06  Artur Malabarba  <bruce.connor.am@gmail.com>
+
+       * lisp/emacs-lisp/package.el: Rename custom faces
+       All of the recently introduced faces, like `package-name-face', have
+       been renamed to no end in `-face' to comply with the convention
+       described in (info "(elisp) Defining Faces").
+       (package-name, package-description)
+       (package-status-built-in, package-status-external)
+       (package-status-available, package-status-new)
+       (package-status-held, package-status-disabled)
+       (package-status-installed, package-status-dependency)
+       (package-status-unsigned, package-status-incompat)
+       (package-status-avail-obso): New faces.
+       (package-menu--print-info-simple): Use them.
+
+2015-09-06  Adam Sjøgren  <asjo@koldfront.dk>
+
+       mail-source.el: Make the imap mail-source's :mailbox handle a list
+       * lisp/gnus/mail-source.el (mail-source-fetch-imap):
+       Allow :mailbox to be  a list.
+
+2015-09-06  Eric Abrahamsen  <eric@ericabrahamsen.net>
+
+       nnimap.el:  Handle nil arg to nnimap-request-group
+       * lisp/gnus/nnimap.el (nnimap-request-group):  Handle nil "info" arg.
+       This arg isn't always passed in, check it's not nil before making it
+       into a list.  The active arg will also be nil if the group is new,
+       check for that.
+
+2015-09-06  Michael Albinus  <michael.albinus@gmx.de>
+
+       File notifications: Support renaming over directory boundaries
+       * lisp/filenotify.el (file-notify-handle-event):
+       (file-notify--pending-event): Adapt docstring.
+       (file-notify--descriptor, file-notify-callback): Reimplement in
+       order to support renaming over directory boundaries.
+       (file-notify-add-watch): Adapt `file-notify--descriptor' call.
+       * doc/lispref/os.texi (File Notifications): Remove limitation of
+       file renaming to the same directory.
+
 2015-09-05  Paul Eggert  <eggert@cs.ucla.edu>
 
        Spelling fix (Bug#21420)
        reusing stale face IDs for 'escape-glyph' and 'glyphless-char'
        faces, which could case a segfault if the frame's face cache was
        freed since the last redisplay.  (Bug#21394)
-       * src/xfaces.c (free_realized_faces): Call forget_escape_and_glyphless_faces.
+       * src/xfaces.c (free_realized_faces): Call
+       forget_escape_and_glyphless_faces.
        * src/dispextern.h (forget_escape_and_glyphless_faces): Add prototype.
 
 2015-09-04  Paul Eggert  <eggert@cs.ucla.edu>
        Fix typo
        * ftfont.c (ftfont_drive_otf): otf_positioning_type_components_mask -> OTF_positioning_type_components_mask.
 
-       fix previous change
+       Fix previous change
        * ftfont.c (ftfont_drive_otf): Remember some bits of
        OTF_Glyph->positioning_type in MFLTGlyphFT->libotf_positioning_type.
 
 
 2015-09-01  Paul Eggert  <eggert@cs.ucla.edu>
 
-       Rework quoting in tutorial
+       Rework quoting in Emacs Lisp Introduction
        * doc/lispintro/emacs-lisp-intro.texi (Sample let Expression)
        (if in more detail, type-of-animal in detail, else): Rework the
        early example to use " rather than ' so that we don’t burden
 
        isearch: Document character folding mode.
        * isearch.el (isearch-forward): Mention `isearch-toggle-character-fold'
-       in docstring.
+       in doc string.
 
 2015-08-31  Paul Eggert  <eggert@cs.ucla.edu>
 
        Minor documentation and NEWS tweak
        * doc/lispintro/emacs-lisp-intro.texi (fwd-para let): Add an index
        entry.
+       * NEWS: Fix a typo in character-fold-to-regexp.
 
 2015-08-30  Michael Albinus  <michael.albinus@gmx.de>
 
        * lisp/progmodes/which-func.el (which-func-ff-hook): Look for new
        imenu-unavailable error symbol instead of trying to match message
        exactly.
-       * lisp/imenu.el (imenu-unavailable): New error
+       * lisp/imenu.el (imenu-unavailable): New error.
        (imenu-unavailable-error): New function.
 
 2015-08-29  Eli Zaretskii  <eliz@gnu.org>
 
 2015-08-26  Michael Albinus  <michael.albinus@gmx.de>
 
-       * lisp/net/tramp-cache.el (top): Use `message' but `format-message'.
+       * lisp/net/tramp-cache.el (top): Use `message', not `format-message'.
 
 2015-08-26  Paul Eggert  <eggert@cs.ucla.edu>
 
 
 2015-08-24  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
 
-       * src/macfont.m (macfont_create_family_with_symbol): Accept localized names.
+       * src/macfont.m (macfont_create_family_with_symbol): Accept
+       localized names.
 
 2015-08-24  Paul Eggert  <eggert@cs.ucla.edu>
 
        * lisp/progmodes/python.el
        (python-shell-tramp-refresh-process-environment): New function.
        (python-shell-with-environment): Use it.
-       * test/automated/python-tests.el (python-shell-with-environment-2): Update.
+       * test/automated/python-tests.el (python-shell-with-environment-2):
+       Update.
 
        python.el: Enhancements to process environment setup.
        * lisp/progmodes/python.el (python-shell-process-environment)
 2015-08-21  Martin Rudalics  <rudalics@gmx.at>
 
        Document `window-use-time' in Elisp manual
-       * doc/lispref/windows.texi (Selecting Windows): Document `window-use-time'.
+       * doc/lispref/windows.texi (Selecting Windows): Document
+       `window-use-time'.
 
 2015-08-21  Eli Zaretskii  <eliz@gnu.org>
 
        (top-level) Set the `delete-selection' property of `self-insert-command'
        to `delete-selection-uses-region-p'.
        progmodes/cc-cmds.el (top-level): Give the `delete-selection' property
-       for c-electric-\(brace\|paren\) the value `delete-selection-uses-region-p'
-       when the latter function exists.
+       for c-electric-\(brace\|paren\) the value
+       `delete-selection-uses-region-p' when the latter function exists.
 
 2015-08-19  Paul Eggert  <eggert@cs.ucla.edu>
 
        clause of `isearch-search-fun-default'. That lax variable does not
        refer to lax-whitespacing.  Related to (bug#21777).
        This reverts commit a5bdb872edb9f031fe041faf9a8c0be432e5f64c.
-       * character-fold.el (character-fold-search): Set to nil
+       * character-fold.el (character-fold-search): Set to nil.
        Default to nil for now, until someone implements proper
        lax-whitespacing with char-fold searching.
 
        * lisp/gnus/message.el (message-delete-overlay, message-make-overlay)
        (message-overlay-get, message-overlay-put, message-overlays-in):
        * lisp/gnus/sieve.el (sieve-make-overlay, sieve-overlay-put)
-       (sieve-overlays-at):
-       Remove.
+       (sieve-overlays-at): Remove.
 
 2015-08-19  Martin Rudalics  <rudalics@gmx.at>
 
 
 2015-08-17  Ronnie Schnell  <ronnie@driver-aces.com>
 
-       Update version number in header (now matches help)
+       * lisp/play/dunnet.el: Update version number in header (now
+       matches help).
 
 2015-08-17  Paul Eggert  <eggert@cs.ucla.edu>
 
 2015-08-16  Wilson Snyder  <wsnyder@wsnyder.org>
 
        Update verilog-mode.el to 2015-05-14-6232468-vpo-GNU.
-           * losp/progmodes/verilog-mode.el: Fix some non-automated indent
-           issues and comments, bug943.  (verilog-type-font-keywords): Cycle
-           delay operators like ##1 and ##[0:$] are now highlighted in their
-           entirety similarly to the # delay-control operator.  Likewise, the
-           followed-by operators #-# and #=# are no longer partially
-           highlighed.  (verilog-backward-syntactic-ws-quick,
-           verilog-skip-backward-comments): Minor performance improvements to
-           buffer traversal functions for reduced latency.  (verilog-calc-1,
-           verilog-in-deferred-immediate-final-p): When the keyword 'final'
-           follows 'assert/assume/cover', then it is part of a deferred
-           immediate assertion item and should not be treated as a final
-           construct for indentation.  Reported by Yuri Sugihara.
-           (verilog-do-indent): Virtual task/function/class definition lines
-           should not be considered as declarations.  Reported by Enzo Chi.
-           (verilog-do-indent): Do not falsely indent to '=' of
-           property/sequence operators on subsequent lines of a multi-line
-           statement.  (verilog-assignment-operator-re): Fix '!==' operator
-           and add support for '<->', ':/', '#-#', and '#=#' operators.
-           (verilog-calculate-indent, verilog-label-be): Enable
-           case-sensitive regular expression parsing when looking for
-           keywords.  (verilog-calc-1): Detect 'pure virtual method'
-           declarations which exist in abstract classes.  Reported by Enzo
-           Chi and Kaushal Modi.  (verilog-backward-ws&directives): When
-           moving back to the start of a line and the preceeding line ended
-           with an escaped-newline, then jump up one line.  This properly
-           consumes a multi-line pre-processor directive.  Reported by
-           Kaushal Modi.  (verilog-dpi-import-export-re,
-           verilog-extended-complete-re, verilog-calc-1): Teach verilog-mode
-           to properly indent after a DPI import/export statement that
-           resides outside of a module.  Reported by Kaushal Modi.
-           (verilog-extended-complete-re): Update regexp to match both
-           "DPI-C" and "DPI".  Reported by Kaushal Modi.
+       * lisp/progmodes/verilog-mode.el: Fix some non-automated indent
+       issues and comments, bug#943.
+       (verilog-type-font-keywords): Cycle delay operators like ##1 and
+       ##[0:$] are now highlighted in their entirety similarly to the #
+       delay-control operator.  Likewise, the followed-by operators #-#
+       and #=# are no longer partially highlighed.
+       (verilog-backward-syntactic-ws-quick)
+       (verilog-skip-backward-comments): Minor performance improvements
+       to buffer traversal functions for reduced latency.
+       (verilog-calc-1, verilog-in-deferred-immediate-final-p): When the
+       keyword 'final' follows 'assert/assume/cover', then it is part of
+       a deferred immediate assertion item and should not be treated as a
+       final construct for indentation.  Reported by Yuri Sugihara.
+       (verilog-do-indent): Virtual task/function/class definition lines
+       should not be considered as declarations.  Reported by Enzo Chi.
+       (verilog-do-indent): Do not falsely indent to '=' of
+       property/sequence operators on subsequent lines of a multi-line
+       statement.
+       (verilog-assignment-operator-re): Fix '!==' operator and add
+       support for '<->', ':/', '#-#', and '#=#' operators.
+       (verilog-calculate-indent, verilog-label-be): Enable
+       case-sensitive regular expression parsing when looking for
+       keywords.
+       (verilog-calc-1): Detect 'pure virtual method' declarations which
+       exist in abstract classes.  Reported by Enzo Chi and Kaushal Modi.
+       (verilog-backward-ws&directives): When moving back to the start of
+       a line and the preceeding line ended with an escaped-newline, then
+       jump up one line.  This properly consumes a multi-line
+       pre-processor directive.  Reported by Kaushal Modi.
+       (verilog-dpi-import-export-re, verilog-extended-complete-re)
+       (verilog-calc-1): Teach verilog-mode to properly indent after a
+       DPI import/export statement that resides outside of a module.
+       Reported by Kaushal Modi.
+       (verilog-extended-complete-re): Update regexp to match both
+       "DPI-C" and "DPI".  Reported by Kaushal Modi.
 
 2015-08-15  Paul Eggert  <eggert@cs.ucla.edu>
 
 2015-08-15  Dani Moncayo  <dmoncayo@gmail.com>
 
        Remove 'nt/zipdist.bat' (no longer used)
-       * nt/zipdist.bat: Remove - no longer used.
+       * nt/zipdist.bat: Remove -- no longer used.
 
 2015-08-15  Jürgen Hötzel  <juergen@archlinux.org>
 
 
 2015-08-14  Stefan Monnier  <monnier@iro.umontreal.ca>
 
-       * src/keyboard.c: Use false/true instead of 0/1 for booleans
+       * src/keyboard.c: Use false/true instead of 0/1 for booleans.
        * src/keyboard.h (struct kboard): Mark kbd_queue_has_data as boolean.
 
 2015-08-14  Michael Albinus  <michael.albinus@gmx.de>
        (c-not-decl-init-keywords, c-not-primitive-type-keywords)
        (c-paren-any-kwds, c-<>-sexp-kwds, c-block-stmt-kwds, c-expr-kwds)
        (c-decl-block-key, c-keywords, c-keywords-obarray)
-       (c-regular-keywords-regexp, c-primary-expr-regexp,
-       c-primary-expr-regexp)
-       (c-block-prefix-disallowed-chars, c-known-type-key,
-       c-nonlabel-token-key)
+       (c-regular-keywords-regexp, c-primary-expr-regexp)
+       (c-primary-expr-regexp, c-block-prefix-disallowed-chars)
+       (c-known-type-key, c-nonlabel-token-key)
        (c-make-init-lang-vars-fun): Use the new macros rather than the old
        names.
 
 
        loadhist.el (read-feature): Conform to completing-read
        * lisp/loadhist.el (read-feature): According to `completing-read'
-         documentation, if collection is a list, then it must be a list of
-         strings. And not a list of symbols like before.
+       documentation, if collection is a list, then it must be a list of
+       strings, not a list of symbols like before.
 
 2015-08-12  David Kastrup  <dak@gnu.org>
 
 
 2015-08-12  Artur Malabarba  <bruce.connor.am@gmail.com>
 
-       * emacs-lisp/lisp-mnt.el (lm-header): save-excursion
+       * emacs-lisp/lisp-mnt.el (lm-header): Add save-excursion.
 
 2015-08-11  Fabián Ezequiel Gallina  <fgallina@gnu.org>
 
 2015-08-11  Stefan Monnier  <monnier@iro.umontreal.ca>
 
        * lisp/replace.el (perform-replace): Document `replacements'.
-       (perform-replace): Move the description of the format of `replacements' from
-       the body's comment to the docstring.
+       (perform-replace): Move the description of the format of `replacements'
+       from the body's comment to the doc string.
 
 2015-08-11  Jürgen Hötzel  <juergen@archlinux.org>
 
 2015-08-10  Stephen Leake  <stephen_leake@stephe-leake.org>
 
        Rewrite elisp--xref-find-definitions to handle many more cases; add tests.
-       * lisp/progmodes/elisp-mode.el (elisp--xref-identifier-location): deleted
-       (elisp--xref-format-cl-defmethod): new
-       (find-feature-regexp): new
-       (find-alias-regexp): new
-       (elisp--xref-make-xref): new
-       (elisp--xref-find-definitions): Rewrite using the above, handle many more
-       cases. Always output all available definitions.
+       * lisp/progmodes/elisp-mode.el (elisp--xref-identifier-location):
+       Function deleted.
+       (elisp--xref-format-cl-defmethod): New defconst.
+       (find-feature-regexp, find-alias-regexp): New defcustoms.
+       (elisp--xref-make-xref): New function.
+       (elisp--xref-find-definitions): Rewrite using the above, handle many
+       more cases.  Always output all available definitions.
        (xref-location-marker): No need for special cases.
        * test/automated/elisp-mode-tests.el: Add more tests of
        elisp--xref-find-definitions, improve current tests.
 
        Set file buffer as current for "--file"
        * lisp/startup.el (command-line-1): Set file buffer as current before
-       it is displayed so it can be used with options like
-       "--eval".  (Bug#21095)
+       it is displayed so it can be used with options like "--eval".
+       (Bug#21095)
 
 2015-08-10  Eli Zaretskii  <eliz@gnu.org>
 
 
 2015-08-10  Alan Mackenzie  <acm@muc.de>
 
-       Fix "Invalid search bound (wrong side of point)" in fontification.
-       progmodes/cc-fonts.el (c-font-lock-declarators): After skipping an
-       initialization expression, check point is not beyond the fontification
-       limit.
+       Fix "Invalid search bound (wrong side of point)" in fontification
+       * lisp/progmodes/cc-fonts.el (c-font-lock-declarators): After skipping
+       an initialization expression, check point is not beyond the
+       fontification limit.
 
 2015-08-09  Paul Eggert  <eggert@cs.ucla.edu>
 
 
 2015-08-09  Ivan Kanis  <ivan@kanis.fr>
 
-       fix link to source code in help window
-       * lisp/help-fns.el (find-lisp-object-file-name): remove code that
+       Fix link to source code in help window
+       * lisp/help-fns.el (find-lisp-object-file-name): Remove code that
        will never work due to Glenn Morris change a6d63d9 on Apr 20 2013
-       'No longer include timestamp in header of .elc files'. Add code
+       'No longer include timestamp in header of .elc files'.  Add code
        that will return .el source file in load-path.
 
 2015-08-09  Artur Malabarba  <bruce.connor.am@gmail.com>
        (org-reftex-citation): Add `org--' prefix to dynamically scoped
        `rds' var.
 
-2015-08-08  Nicolas Petton  <nicolas@petton.fr>
-
-       Merge remote-tracking branch 'origin/fix/subsequence-error-with-negative-sequences'
-
 2015-08-08  Paul Eggert  <eggert@cs.ucla.edu>
 
        Electric quote if coding is undecided or no conv
 
 2015-08-07  Phillip Lord  <phillip.lord@newcastle.ac.uk>
 
-       Improve error signalling for seq-subseq.
-
+       Improve error signalling for seq-subseq
        * lisp/seq.el (seq-subseq): The existing behaviour is to error
        when indexes are too large, but to silently ignore numbers which
        are too negative for lists.  String and vector handling errors in
-       both cases. This has been regularlised. Error signalling behaviour
-       has been explicitly added to the docstring.
+       both cases.  This has been regularized.  Error signaling behavior
+       has been explicitly added to the doc string.
 
        * lisp/cl-extra.el (cl-subseq): Defers to (seq-subseq) and is
-       therefore also impacted by this change. The docstring has been
-       updated to reflect this.
+       therefore also impacted by this change.  Update the doc string
+       to reflect this.
 
        * test/automated/seq-tests.el (test-seq-subseq): Tests have been
        added for these exceptional cases, as well as one non exceptional
 
 2015-08-07  Stephen Leake  <stephen_leake@stephe-leake.org>
 
-       lisp/window.el: fix typo, more `display-buffer-use-some-frame'
-       * lisp/window.el: fix typo that broke build
-       (display-buffer--action-function-custom-type): add
-       `display-buffer-use-some-frame'
-       (display-buffer): add `display-buffer-use-some-frame' to doc string
+       Fix typo in lisp/window.el, more `display-buffer-use-some-frame'
+       * lisp/window.el: Fix typo that broke build.
+       (display-buffer--action-function-custom-type): Add
+       `display-buffer-use-some-frame'.
+       (display-buffer): Add `display-buffer-use-some-frame' to doc string.
 
        Add support for 'inhibit-same-window in 'display-buffer-use-some-frame'
        * lisp/window.el (display-buffer-use-some-frame): Add support for
 
 2015-08-05  Artur Malabarba  <bruce.connor.am@gmail.com>
 
-       * lisp/replace.el (replace-character-fold): Default to nil
+       * lisp/replace.el (replace-character-fold): Default to nil.
 
-       * lisp/character-fold.el: Fix lax whitespace
+       * lisp/character-fold.el: Fix lax whitespace.
        (character-fold-table): Don't make space match other whitespace chars.
-       (character-fold-to-regexp): Simplify lax behaviour.
+       (character-fold-to-regexp): Simplify lax behavior.
 
 2015-08-05  Dmitry Gutov  <dgutov@yandex.ru>
 
        Improve ansi-color filtering of unrecognized escape sequences
        * lisp/ansi-color.el (ansi-color-drop-regexp): Recognize mode-setting
        escape sequences.
-       (ansi-color-filter-apply): Filter out unrecognized escape sequences
-       (ansi-color-apply): Filter out unrecognized escape sequences
+       (ansi-color-filter-apply, ansi-color-apply): Filter out
+       unrecognized escape sequences.
 
 2015-08-04  Artur Malabarba  <bruce.connor.am@gmail.com>
 
        Consistently use "all:" to describe the all: target,
        replacing three different and confusingly-quoted usages.
 
-2015-08-02  Eli Zaretskii  <eliz@gnu.org>
-
-       Whitespace fixes
-
 2015-08-02  Evgeny Fraimovitch  <johnlen7@gmail.com>  (tiny change)
 
        Don't abort emacsclientw when -a was specified
 
 This file records repository revisions from
 commit 9d56a21e6a696ad19ac65c4b405aeca44785884a (exclusive) to
-commit 88b9a8000da6cf2d4aede86e9eae4f00016d0d6b (inclusive).
+commit 00a65e3238a888fc92b0c2aab8cb5bda8bd99c29 (inclusive).
 See ChangeLog.1 for earlier changes.
 
 ;; Local Variables:
index 3431ee480bf212f9a1de18f3eb5e90f4db84f114..7c956f05d2b9f34f7e74bbb7de5dbc27eeace28b 100644 (file)
@@ -42,7 +42,7 @@ subdirectories of 'lisp/', e.g., 'mh-e/' and 'calendar/') will need to be
 updated to reflect new autoloaded functions.  If you see errors (rather
 than warnings) about undefined lisp functions during compilation, that
 may be the reason.  Finally, sometimes there can be build failures
-related to '*loaddefs.el' (e.g., "required feature `esh-groups' was not
+related to '*loaddefs.el' (e.g., "required feature ‘esh-groups’ was not
 provided").  In that case, follow the instructions below.
 
 To update loaddefs.el (and similar files), do:
index 3cfbe5704ff8eb9a2fd98bcca3fa4c921270e98e..4ee84f96ad6cbb13801d258235d9b24e63432c19 100644 (file)
@@ -593,8 +593,8 @@ install-arch-indep: lisp install-info install-man ${INSTALL_ARCH_INDEP_EXTRA}
              rm -f $${subdir}/.gitignore ; \
              rm -f $${subdir}/.arch-inventory ; \
              rm -f $${subdir}/.DS_Store ; \
-             rm -f $${subdir}/\#* ; \
-             rm -f $${subdir}/.\#* ; \
+             rm -f $${subdir}/#* ; \
+             rm -f $${subdir}/.#* ; \
              rm -f $${subdir}/*~ ; \
              rm -f $${subdir}/*.orig ; \
              rm -f $${subdir}/ChangeLog* ; \
index bdd26947e4be71c998d61aa03f17dfe6b74cca21..327723fce49c71d47ddcbe20d8e6eb22e263ec21 100644 (file)
@@ -72,7 +72,7 @@ pages of the manuals, and even if they do, the resulting page breaks
 depend on what paper and font size they use.  This also means that if
 you _are_ going to do this, it should be done with the paper and font
 size that the GNU Press are going to use when they print the manuals.
-I think this is different to what you get if you just use eg `make
+I think this is different to what you get if you just use eg 'make
 emacs.pdf' (e.g., enable "smallbook").
 
 ** Check the keybindings in the refcards are correct, and add any new ones.
@@ -112,21 +112,21 @@ sk        Miroslav Vaško
 ** Check for modes which bind M-s that conflicts with a new global binding M-s
 and change key bindings where necessary.  The current list of modes:
 
-1. Gnus binds `M-s' to `gnus-summary-search-article-forward'.
+1. Gnus binds 'M-s' to 'gnus-summary-search-article-forward'.
 
-2. Minibuffer binds `M-s' to `next-matching-history-element'
+2. Minibuffer binds 'M-s' to 'next-matching-history-element'
    (not useful any more since C-s can now search in the history).
 
-3. `center-line' in Text mode was already moved to the text formatting
-   keymap as `M-o M-s' (thus this binding is not necessary any more
-   in `nroff-mode-map' too and can be removed now from the nroff mode
-   because it can now use the global key binding `M-o M-s' `center-line').
+3. 'center-line' in Text mode was already moved to the text formatting
+   keymap as 'M-o M-s' (thus this binding is not necessary any more
+   in 'nroff-mode-map' too and can be removed now from the nroff mode
+   because it can now use the global key binding 'M-o M-s' 'center-line').
 
-4. PCL-CVS binds `M-s' to `cvs-status', and log-edit-mode binds it to
-   `log-edit-comment-search-forward'.  Perhaps search commands
-   on the global key binding `M-s' are useless in these modes.
+4. PCL-CVS binds 'M-s' to 'cvs-status', and log-edit-mode binds it to
+   'log-edit-comment-search-forward'.  Perhaps search commands
+   on the global key binding 'M-s' are useless in these modes.
 
-5. Rmail binds `\es' to `rmail-search'/`rmail-summary-search'.
+5. Rmail binds '\es' to 'rmail-search'/'rmail-summary-search'.
 
 
 * DOCUMENTATION
index 61c70c1e82c0de4fea2623785b2c63420f3380ac..da5646696b887a7542bd07781b63cbfa111303b5 100644 (file)
@@ -24,6 +24,8 @@ Eli Zaretskii
        src/bidi.c
        bidirectional editing support in xdisp.c and elsewhere
        lisp/term/tty-colors.el
+       test/biditest.el
+       test/redisplay-testsuite.el
 
        The MS-DOS (a.k.a. DJGPP) port:
            config.bat
@@ -50,7 +52,7 @@ Stefan Monnier
        minor-mode/major-mode infrastructure
        text filling
        minibuffer completion
-       lisp/textmodes/outline.el
+       lisp/outline.el
 
 Miles Bader
        src/xfaces.c
@@ -74,6 +76,38 @@ Bastien Guerry
             lisp/org/*
            doc/misc/org.texi
 
+Artur Malabarba
+       lisp/emacs-lisp/package.el
+       lisp/emacs-lisp/let-alist.el
+       lisp/character-fold.el
+
+Michael Albinus
+        Tramp
+            lisp/net/tramp*.el
+            lisp/url/url-tramp.el
+            doc/misc/tramp*.texi
+            test/automated/tramp-tests.el
+
+        D-Bus
+           src/dbusbind.c
+           lisp/net/dbus.el
+           lisp/net/secrets.el
+            lisp/net/zeroconf.el
+           doc/misc/dbus.texi
+            test/automated/dbus-tests.el
+
+        File Notifications
+           src/gfilenotify.c
+           lisp/filenotify.el
+           test/automated/file-notify-tests.el
+
+Simen Heggestøyl
+       lisp/textmodes/css-mode.el
+
+Nicolas Petton
+       lisp/emacs-lisp/map.el
+       lisp/emacs-lisp/seq.el
+
 ==============================================================================
 2.
 ==============================================================================
@@ -85,7 +119,6 @@ Kelvin White
 
 Eli Zaretskii
        doc/*
-       lispref/*
 
        src/xfaces.c
        src/xdisp.c
@@ -94,20 +127,37 @@ Eli Zaretskii
        src/dispextern.h
        src/frame.c
        src/dired.c
+       src/fileio.c
        src/unexw32.c
        src/w32*.[ch]
        src/window.c
+       src/indent.c
+       src/region-cache.[ch]
        nt/*
 
+       lib-src/ntlib.[ch]
+       lib-src/etags.c
+
        lisp/arc-mode.el
        lisp/menu-bar.el
        lisp/hexl.el
        lisp/info.el
        lisp/ls-lisp.el
        lisp/startup.el
+       lisp/filenotify.el
        lisp/w32*.el
+       lisp/term/w32*.el
+       lisp/progmodes/gdb-mi.el
+       lisp/textmodes/ispell.el
+       lisp/textmodes/flyspell.el
+       lisp/mail/rmail*.el
+
+       Mule
 
        admin/unidata/*
+       admin/nt/dump.bat
+
+       test/etags/*
 
 Stefan Monnier
        src/intervals.c
@@ -123,82 +173,566 @@ Miles Bader
        src/editfns.c
        lisp/textmodes/refill.el
 
+Artur Malabarba
+        lisp/isearch.el
+
+Paul Eggert
+       .dir-locals.el
+       .gitattributes
+       .gitignore
+       GNUmakefile
+       Makefile.in
+       admin/merge-gnulib
+       admin/merge-pkg-config
+       admin/update-copyright
+       autogen.sh
+       build-aux/*
+       configure.ac
+       lib/*
+       lib-src/* (except for files others want to maintain)
+       m4/*
+       make-dist
+       src/* (except for *.m, *w32*, bitmaps, files others want to maintain)
+
+Michael Albinus
+       src/inotify.c
+        lisp/autorevert.el
+       lisp/notifications.el
+        test/automated/auto-revert-tests.el
+       test/automated/inotify-test.el
+       test/automated/vc-tests.el
+
+Nicolas Petton
+       lisp/emacs-lisp/subr-x.el
+       lisp/arc-mode.el
+
+Xue Fuqiao
+       doc/lispref/*
+
 ==============================================================================
 3.
 ==============================================================================
 
-src/Makefile.in
-src/abbrev.c
-src/alloc.c
-src/alloca.c
-src/alloca.s
-src/atimer.c
+admin/admin.el
+admin/authors.el
+admin/build-configs
+admin/bzrmerge.el
+admin/charsets/*
+admin/check-doc-strings
+admin/cus-test.el
+admin/diff-tar-files
+admin/find-gc.el
+admin/gitmerge.el
+admin/make-emacs
+admin/quick-install-emacs
+admin/unidata/blocks.awk
+etc/edt-user.el
+etc/forms/forms-d2.el
+etc/forms/forms-pass.el
+etc/nxml/*
+etc/themes/*
+leim/*
+lisp/abbrev.el
+lisp/align.el
+lisp/allout-widgets.el
+lisp/allout.el
+lisp/ansi-color.el
+lisp/apropos.el
+lisp/array.el
+lisp/autoarg.el
+lisp/autoinsert.el
+lisp/autorevert.el
+lisp/avoid.el
+lisp/battery.el
+lisp/bindings.el
+lisp/bookmark.el
+lisp/bs.el
+lisp/buff-menu.el
+lisp/calculator.el
+lisp/calendar/*
+lisp/case-table.el
+lisp/cdl.el
+lisp/cedet/*
+lisp/chistory.el
+lisp/cmuscheme.el
+lisp/color.el
+lisp/completion.el
+lisp/composite.el
+lisp/cus-dep.el
+lisp/cus-edit.el
+lisp/cus-face.el
+lisp/cus-start.el
+lisp/cus-theme.el
+lisp/custom.el
+lisp/dabbrev.el
+lisp/delim-col.el
+lisp/delsel.el
+lisp/descr-text.el
+lisp/desktop.el
+lisp/dframe.el
+lisp/dired-aux.el
+lisp/dired-x.el
+lisp/dired.el
+lisp/dirtrack.el
+lisp/disp-table.el
+lisp/dnd.el
+lisp/doc-view.el
+lisp/dom.el
+lisp/double.el
+lisp/dynamic-setting.el
+lisp/ebuff-menu.el
+lisp/echistory.el
+lisp/edmacro.el
+lisp/ehelp.el
+lisp/elec-pair.el
+lisp/electric.el
+lisp/elide-head.el
+lisp/emacs-lisp/advice.el
+lisp/emacs-lisp/autoload.el
+lisp/emacs-lisp/avl-tree.el
+lisp/emacs-lisp/backquote.el
+lisp/emacs-lisp/benchmark.el
+lisp/emacs-lisp/bindat.el
+lisp/emacs-lisp/byte-opt.el
+lisp/emacs-lisp/byte-run.el
+lisp/emacs-lisp/bytecomp.el
+lisp/emacs-lisp/cconv.el
+lisp/emacs-lisp/chart.el
+lisp/emacs-lisp/check-declare.el
+lisp/emacs-lisp/checkdoc.el
+lisp/emacs-lisp/cl-extra.el
+lisp/emacs-lisp/cl-generic.el
+lisp/emacs-lisp/cl-indent.el
+lisp/emacs-lisp/cl-lib.el
+lisp/emacs-lisp/cl-macs.el
+lisp/emacs-lisp/cl-preloaded.el
+lisp/emacs-lisp/cl-seq.el
+lisp/emacs-lisp/cl.el
+lisp/emacs-lisp/copyright.el
+lisp/emacs-lisp/crm.el
+lisp/emacs-lisp/cursor-sensor.el
+lisp/emacs-lisp/debug.el
+lisp/emacs-lisp/derived.el
+lisp/emacs-lisp/disass.el
+lisp/emacs-lisp/easy-mmode.el
+lisp/emacs-lisp/edebug.el
+lisp/emacs-lisp/eieio-base.el
+lisp/emacs-lisp/eieio-compat.el
+lisp/emacs-lisp/eieio-core.el
+lisp/emacs-lisp/eieio-custom.el
+lisp/emacs-lisp/eieio-datadebug.el
+lisp/emacs-lisp/eieio-opt.el
+lisp/emacs-lisp/eieio-speedbar.el
+lisp/emacs-lisp/eieio.el
+lisp/emacs-lisp/eldoc.el
+lisp/emacs-lisp/elint.el
+lisp/emacs-lisp/elp.el
+lisp/emacs-lisp/ert-x.el
+lisp/emacs-lisp/ert.el
+lisp/emacs-lisp/ewoc.el
+lisp/emacs-lisp/find-func.el
+lisp/emacs-lisp/float-sup.el
+lisp/emacs-lisp/generator.el
+lisp/emacs-lisp/generic.el
+lisp/emacs-lisp/gv.el
+lisp/emacs-lisp/helper.el
+lisp/emacs-lisp/inline.el
+lisp/emacs-lisp/lisp-mnt.el
+lisp/emacs-lisp/lisp-mode.el
+lisp/emacs-lisp/lisp.el
+lisp/emacs-lisp/macroexp.el
+lisp/emacs-lisp/map-ynp.el
+lisp/emacs-lisp/nadvice.el
+lisp/emacs-lisp/package-x.el
+lisp/emacs-lisp/pcase.el
+lisp/emacs-lisp/pp.el
+lisp/emacs-lisp/re-builder.el
+lisp/emacs-lisp/regexp-opt.el
+lisp/emacs-lisp/regi.el
+lisp/emacs-lisp/ring.el
+lisp/emacs-lisp/rx.el
+lisp/emacs-lisp/shadow.el
+lisp/emacs-lisp/smie.el
+lisp/emacs-lisp/syntax.el
+lisp/emacs-lisp/tabulated-list.el
+lisp/emacs-lisp/tcover-ses.el
+lisp/emacs-lisp/tcover-unsafep.el
+lisp/emacs-lisp/testcover.el
+lisp/emacs-lisp/timer.el
+lisp/emacs-lisp/tq.el
+lisp/emacs-lisp/trace.el
+lisp/emacs-lisp/unsafep.el
+lisp/emacs-lisp/warnings.el
+lisp/emacs-lock.el
+lisp/emulation/*
+lisp/env.el
+lisp/epa-dired.el
+lisp/epa-file.el
+lisp/epa-hook.el
+lisp/epa-mail.el
+lisp/epa.el
+lisp/epg-config.el
+lisp/epg.el
+lisp/eshell/*
+lisp/expand.el
+lisp/ezimage.el
+lisp/face-remap.el
+lisp/facemenu.el
+lisp/faces.el
+lisp/ffap.el
+lisp/filecache.el
+lisp/files-x.el
+lisp/files.el
+lisp/filesets.el
+lisp/find-cmd.el
+lisp/find-dired.el
+lisp/find-file.el
+lisp/find-lisp.el
+lisp/finder.el
+lisp/flow-ctrl.el
+lisp/foldout.el
+lisp/follow.el
+lisp/font-core.el
+lisp/font-lock.el
+lisp/format-spec.el
+lisp/format.el
+lisp/forms.el
+lisp/frame.el
+lisp/frameset.el
+lisp/fringe.el
+lisp/generic-x.el
+lisp/gnus/*
+lisp/gs.el
+lisp/help-at-pt.el
+lisp/help-fns.el
+lisp/help-macro.el
+lisp/help-mode.el
+lisp/help.el
+lisp/hex-util.el
+lisp/hfy-cmap.el
+lisp/hi-lock.el
+lisp/hilit-chg.el
+lisp/hippie-exp.el
+lisp/hl-line.el
+lisp/htmlfontify.el
+lisp/ibuf-ext.el
+lisp/ibuf-macs.el
+lisp/ibuffer.el
+lisp/icomplete.el
+lisp/ido.el
+lisp/ielm.el
+lisp/iimage.el
+lisp/image-dired.el
+lisp/image-mode.el
+lisp/image.el
+lisp/imenu.el
+lisp/indent.el
+lisp/info-look.el
+lisp/info-xref.el
+lisp/informat.el
+lisp/international/*
+lisp/isearch.el
+lisp/isearchb.el
+lisp/jit-lock.el
+lisp/jka-cmpr-hook.el
+lisp/jka-compr.el
+lisp/json.el
+lisp/kermit.el
+lisp/kmacro.el
+lisp/language/*
+lisp/leim/*
+lisp/linum.el
+lisp/loadhist.el
+lisp/loadup.el
+lisp/locate.el
+lisp/lpr.el
+lisp/macros.el
+lisp/mail/binhex.el
+lisp/mail/blessmail.el
+lisp/mail/emacsbug.el
+lisp/mail/feedmail.el
+lisp/mail/footnote.el
+lisp/mail/hashcash.el
+lisp/mail/mail-extr.el
+lisp/mail/mail-hist.el
+lisp/mail/mail-utils.el
+lisp/mail/mailabbrev.el
+lisp/mail/mailalias.el
+lisp/mail/mailclient.el
+lisp/mail/mailheader.el
+lisp/mail/metamail.el
+lisp/mail/mspools.el
+lisp/mail/reporter.el
+lisp/mail/rfc2368.el
+lisp/mail/rfc822.el
+lisp/mail/sendmail.el
+lisp/mail/smtpmail.el
+lisp/mail/supercite.el
+lisp/mail/uce.el
+lisp/mail/undigest.el
+lisp/mail/unrmail.el
+lisp/mail/uudecode.el
+lisp/makesum.el
+lisp/man.el
+lisp/master.el
+lisp/mb-depth.el
+lisp/md4.el
+lisp/mh-e/*
+lisp/midnight.el
+lisp/minibuffer.el
+lisp/misc.el
+lisp/misearch.el
+lisp/mouse-copy.el
+lisp/mouse-drag.el
+lisp/mouse.el
+lisp/mpc.el
+lisp/msb.el
+lisp/mwheel.el
+lisp/net/*
+lisp/newcomment.el
+lisp/novice.el
+lisp/nxml/*
+lisp/obsolete/*
+lisp/paren.el
+lisp/password-cache.el
+lisp/pcmpl-cvs.el
+lisp/pcmpl-gnu.el
+lisp/pcmpl-linux.el
+lisp/pcmpl-rpm.el
+lisp/pcmpl-unix.el
+lisp/pcmpl-x.el
+lisp/pcomplete.el
+lisp/play/*
+lisp/printing.el
+lisp/proced.el
+lisp/profiler.el
+lisp/progmodes/ada-mode.el
+lisp/progmodes/ada-prj.el
+lisp/progmodes/ada-stmt.el
+lisp/progmodes/ada-xref.el
+lisp/progmodes/antlr-mode.el
+lisp/progmodes/asm-mode.el
+lisp/progmodes/autoconf.el
+lisp/progmodes/bat-mode.el
+lisp/progmodes/bug-reference.el
+lisp/progmodes/cc-align.el
+lisp/progmodes/cc-awk.el
+lisp/progmodes/cc-bytecomp.el
+lisp/progmodes/cc-cmds.el
+lisp/progmodes/cc-defs.el
+lisp/progmodes/cc-engine.el
+lisp/progmodes/cc-fonts.el
+lisp/progmodes/cc-guess.el
+lisp/progmodes/cc-langs.el
+lisp/progmodes/cc-menus.el
+lisp/progmodes/cc-mode.el
+lisp/progmodes/cc-styles.el
+lisp/progmodes/cc-vars.el
+lisp/progmodes/cfengine.el
+lisp/progmodes/cmacexp.el
+lisp/progmodes/compile.el
+lisp/progmodes/cperl-mode.el
+lisp/progmodes/cpp.el
+lisp/progmodes/cwarn.el
+lisp/progmodes/dcl-mode.el
+lisp/progmodes/ebnf-abn.el
+lisp/progmodes/ebnf-bnf.el
+lisp/progmodes/ebnf-dtd.el
+lisp/progmodes/ebnf-ebx.el
+lisp/progmodes/ebnf-iso.el
+lisp/progmodes/ebnf-otz.el
+lisp/progmodes/ebnf-yac.el
+lisp/progmodes/ebnf2ps.el
+lisp/progmodes/ebrowse.el
+lisp/progmodes/elisp-mode.el
+lisp/progmodes/etags.el
+lisp/progmodes/executable.el
+lisp/progmodes/f90.el
+lisp/progmodes/flymake.el
+lisp/progmodes/fortran.el
+lisp/progmodes/glasses.el
+lisp/progmodes/grep.el
+lisp/progmodes/gud.el
+lisp/progmodes/hideif.el
+lisp/progmodes/hideshow.el
+lisp/progmodes/icon.el
+lisp/progmodes/idlw-complete-structtag.el
+lisp/progmodes/idlw-help.el
+lisp/progmodes/idlw-shell.el
+lisp/progmodes/idlw-toolbar.el
+lisp/progmodes/idlwave.el
+lisp/progmodes/inf-lisp.el
+lisp/progmodes/js.el
+lisp/progmodes/ld-script.el
+lisp/progmodes/m4-mode.el
+lisp/progmodes/make-mode.el
+lisp/progmodes/mantemp.el
+lisp/progmodes/meta-mode.el
+lisp/progmodes/mixal-mode.el
+lisp/progmodes/modula2.el
+lisp/progmodes/octave.el
+lisp/progmodes/opascal.el
+lisp/progmodes/pascal.el
+lisp/progmodes/prog-mode.el
+lisp/progmodes/project.el
+lisp/progmodes/prolog.el
+lisp/progmodes/ps-mode.el
+lisp/progmodes/python.el
+lisp/progmodes/ruby-mode.el
+lisp/progmodes/scheme.el
+lisp/progmodes/sh-script.el
+lisp/progmodes/simula.el
+lisp/progmodes/sql.el
+lisp/progmodes/subword.el
+lisp/progmodes/vera-mode.el
+lisp/progmodes/verilog-mode.el
+lisp/progmodes/vhdl-mode.el
+lisp/progmodes/which-func.el
+lisp/progmodes/xref.el
+lisp/progmodes/xscheme.el
+lisp/ps-bdf.el
+lisp/ps-def.el
+lisp/ps-mule.el
+lisp/ps-print.el
+lisp/ps-samp.el
+lisp/recentf.el
+lisp/rect.el
+lisp/register.el
+lisp/repeat.el
+lisp/replace.el
+lisp/reposition.el
+lisp/reveal.el
+lisp/rot13.el
+lisp/ruler-mode.el
+lisp/savehist.el
+lisp/saveplace.el
+lisp/sb-image.el
+lisp/scroll-all.el
+lisp/scroll-bar.el
+lisp/scroll-lock.el
+lisp/select.el
+lisp/server.el
+lisp/ses.el
+lisp/shadowfile.el
+lisp/simple.el
+lisp/skeleton.el
+lisp/sort.el
+lisp/soundex.el
+lisp/speedbar.el
+lisp/strokes.el
+lisp/subr.el
+lisp/t-mouse.el
+lisp/tabify.el
+lisp/talk.el
+lisp/tar-mode.el
+lisp/tempo.el
+lisp/term.el
+lisp/term/AT386.el
+lisp/term/bobcat.el
+lisp/term/common-win.el
+lisp/term/cygwin.el
+lisp/term/iris-ansi.el
+lisp/term/linux.el
+lisp/term/lk201.el
+lisp/term/news.el
+lisp/term/ns-win.el
+lisp/term/rxvt.el
+lisp/term/screen.el
+lisp/term/sun.el
+lisp/term/tvi970.el
+lisp/term/vt100.el
+lisp/term/vt200.el
+lisp/term/wyse50.el
+lisp/term/x-win.el
+lisp/term/xterm.el
+lisp/textmodes/artist.el
+lisp/textmodes/bib-mode.el
+lisp/textmodes/bibtex-style.el
+lisp/textmodes/bibtex.el
+lisp/textmodes/conf-mode.el
+lisp/textmodes/dns-mode.el
+lisp/textmodes/enriched.el
+lisp/textmodes/fill.el
+lisp/textmodes/makeinfo.el
+lisp/textmodes/nroff-mode.el
+lisp/textmodes/page-ext.el
+lisp/textmodes/page.el
+lisp/textmodes/paragraphs.el
+lisp/textmodes/picture.el
+lisp/textmodes/po.el
+lisp/textmodes/refbib.el
+lisp/textmodes/refer.el
+lisp/textmodes/reftex-auc.el
+lisp/textmodes/reftex-cite.el
+lisp/textmodes/reftex-dcr.el
+lisp/textmodes/reftex-global.el
+lisp/textmodes/reftex-index.el
+lisp/textmodes/reftex-parse.el
+lisp/textmodes/reftex-ref.el
+lisp/textmodes/reftex-sel.el
+lisp/textmodes/reftex-toc.el
+lisp/textmodes/reftex-vars.el
+lisp/textmodes/reftex.el
+lisp/textmodes/remember.el
+lisp/textmodes/rst.el
+lisp/textmodes/sgml-mode.el
+lisp/textmodes/table.el
+lisp/textmodes/texinfmt.el
+lisp/textmodes/texinfo.el
+lisp/textmodes/texnfo-upd.el
+lisp/textmodes/text-mode.el
+lisp/textmodes/tildify.el
+lisp/textmodes/two-column.el
+lisp/textmodes/underline.el
+lisp/thingatpt.el
+lisp/thumbs.el
+lisp/time-stamp.el
+lisp/time.el
+lisp/timezone.el
+lisp/tmm.el
+lisp/tool-bar.el
+lisp/tooltip.el
+lisp/tree-widget.el
+lisp/tutorial.el
+lisp/type-break.el
+lisp/uniquify.el
+lisp/url/*
+lisp/userlock.el
+lisp/vc/*
+lisp/vcursor.el
+lisp/version.el
+lisp/view.el
+lisp/vt-control.el
+lisp/vt100-led.el
+lisp/wdired.el
+lisp/whitespace.el
+lisp/wid-browse.el
+lisp/wid-edit.el
+lisp/widget.el
+lisp/windmove.el
+lisp/window.el
+lisp/winner.el
+lisp/woman.el
+lisp/x-dnd.el
+lisp/xml.el
+lisp/xt-mouse.el
+lwlib/*
+oldXMenu/*
 src/bitmaps/
-src/buffer.c
-src/callint.c
-src/callproc.c
-src/casefiddle.c
-src/casetab.c
-src/category.c
-src/ccl.c
-src/charset.c
-src/cm.c
-src/cmds.c
-src/coding.c
-src/composite.c
-src/config.in
-src/data.c
-src/doc.c
-src/doprnt.c
-src/ecrt0.c
-src/emacs.c
-src/epaths.in
-src/fileio.c
-src/filelock.c
-src/filemode.c
-src/firstfile.c
-src/floatfns.c
-src/fringe.c
-src/fns.c
-src/fontset.c
-src/getloadavg.c
-src/gmalloc.c
-src/gtkutil.c
-src/indent.c
-src/insdel.c
-src/image.c
-src/lastfile.c
-src/lread.c
-src/macros.c
-src/makefile.w32-in
-src/marker.c
-src/md5.c
-src/minibuf.c
-src/mktime.c
-src/pre-crt0.c
-src/prefix-args.c
-src/print.c
-src/process.c
-src/ralloc.c
-src/region-cache.c
-src/scroll.c
-src/search.c
-src/sound.c
-src/strftime.c
-src/sysdep.c
-src/termcap.c
-src/terminfo.c
-src/textprop.c
-src/tparam.c
-src/undo.c
-src/unexaix.c
-src/unexalpha.c
-src/unexelf.c
-src/unexhp9k800.c
-src/vm-limit.c
-src/widget.c
-src/xfns.c
-src/xmenu.c
-src/xrdb.c
-src/xselect.c
-src/xterm.c
+src/cygw32.c
+src/cygw32.h
+src/macfont.m
+src/nsfns.m
+src/nsfont.m
+src/nsimage.m
+src/nsmenu.m
+src/nsselect.m
+src/nsterm.m
+test/automated/*
+test/cedet/*
+test/rmailmm.el
+
+\f
+;;; Local Variables:
+;;;   coding: utf-8
+;;; End:
index 786c50293fa5098b85469c3fd693ecfa3f8660e8..2286e354ac6a452226fc2d28a920747cd710a500 100644 (file)
@@ -37,7 +37,7 @@ Build Emacs in various ways.
 
 ** quick-install-emacs
 
-Install emacs quickly (`incrementally').
+Install emacs quickly ("incrementally").
 
 ** alloc-colors.c
 
index 0afb3a8d835c5319bd7fd02fe7150fa587369c05..092da68dbceebf47735f1e1e80b949362f114bf7 100644 (file)
@@ -212,7 +212,7 @@ If REALNAME is nil, ignore that author.")
     "Michael McNamara"
     "Mike McEwan"
     "Nelson Jose dos Santos Ferreira"
-    "Peter von der Ahe"
+    "Peter von der Ahé"
     "Peter O'Gorman"
     "Piet van Oostrum"
     "Roland McGrath"
index b7d1fd19d8ee1f0bd52ed7f93ac911d53b1d5918..21e03ee41576fed0d8734ed94eb56f941c6ff918 100644 (file)
@@ -69,7 +69,7 @@ function decode_hex(str, idx) {
   return n;
 }
 
-/^\#/ {
+/^#/ {
   print;
   next;
 }
@@ -119,4 +119,3 @@ END {
        printf "0x%04X-0x%04X 0x%04X\n", from_code, to_code, from_unicode;
     }
 }
-
index 59c6388b25c57f2746901d3c68e3c11a81b427e6..24152b44eff18f1d3dc2db88870b2cec953d2b24 100644 (file)
@@ -24,7 +24,7 @@
 #  http://home.m05.itscom.net/numa/cde/ucs-conv/appendix.html
 # This program reads the mapping file EUC-JP-MS (of glibc) and
 # generates the Elisp file eucjp-ms.el that defines two translation
-# tables `eucjp-ms-decode' and `eucjp-ms-encode'.
+# tables 'eucjp-ms-decode' and 'eucjp-ms-encode'.
 
 BEGIN {
   FS = "[ \t][ \t]*"
@@ -109,4 +109,3 @@ END {
   print "";
   print "(provide 'eucjp-ms)";
 }
-
index 40d92bf9be45adc675541621209f0816665494d8..4947f966371ee6024d3f249689f8d6c4c7ba1555 100644 (file)
@@ -53,7 +53,7 @@ function decode_hex(str) {
 function gb_to_index(gb) {
   b0 = int(gb / 256);
   b1 = gb % 256;
-  idx = (((b0 - 129)) * 191 + b1 - 64); 
+  idx = (((b0 - 129)) * 191 + b1 - 64);
 #  if (b1 >= 128)
 #    idx--;
   return idx
@@ -67,7 +67,7 @@ function index_to_gb(idx) {
   return (b0 * 256 + b1);
 }
 
-/^\#/ {
+/^#/ {
   print;
   next;
 }
@@ -108,4 +108,3 @@ END {
     printf "0x%04X-0x%04X 0x%04X\n",
       index_to_gb(from_gb), index_to_gb(to_gb), from_unicode;
 }
-
index 3c16cb556ea0fb2ef0afe2d13c942e4614447a31..81d7e7301bf51fc639839d8d70bc1e73f9be9049 100644 (file)
@@ -49,7 +49,7 @@ function decode_hex(str) {
 function gb_to_index(gb) {
   b0 = int(gb / 256);
   b1 = gb % 256;
-  idx = (((b0 - 129)) * 191 + b1 - 64); 
+  idx = (((b0 - 129)) * 191 + b1 - 64);
 #  if (b1 >= 127)
 #    idx--;
   return idx
@@ -65,7 +65,7 @@ function index_to_gb(idx) {
   return sprintf("%02X%02X%02X%02X", b0, b1, b2, b3);
 }
 
-/^\#/ {
+/^#/ {
   print;
   next;
 }
@@ -119,4 +119,3 @@ END {
        }
     }
 }
-
index 3c696ffd2374c12c41b3fa472c584ab1f785f1e2..10b01f2bbd458f8ac9c9997b90d06d9c4ac43744 100644 (file)
@@ -1,4 +1,4 @@
-// Avoid direct access to `contents' member of
+// Avoid direct access to 'contents' member of
 // Lisp_Vector, use AREF and ASET where possible.
 @expression@
 identifier I1, I2;
index f0c5370496e21f0a8e548bdc91c7018e924e8924..24e9844b72cee24edac6e525f397fbde02b882b9 100755 (executable)
@@ -100,7 +100,7 @@ chdir $root if cwd () eq "/";
 chdir "./src";
 print "Build in ", cwd (), "\n";
 
-# If first arg is `all' or if `--all' specified, ensure a clean
+# If first arg is 'all' or if '--all' specified, ensure a clean
 # build.
 
 if (@ARGV && $ARGV[0] eq "all")
index d326282b9506f3b3c8082c18fa9a6ce7a8f540a1..0730b947a0314aa9e08dd25ec875d16110680397 100644 (file)
@@ -13,13 +13,13 @@ Steps to take before starting on the first pretest in any release sequence:
     have them available for the duration of the release process.
 
 2.  Consider increasing the value of the variable
-    `customize-changed-options-previous-release' in cus-edit.el to
+    'customize-changed-options-previous-release' in cus-edit.el to
     refer to a newer version of Emacs.  (This is probably needed only
     when preparing the first pretest for a major Emacs release.)
     Commit cus-edit.el if changed.
 
 3.  Remove any old pretests from ftp://alpha.gnu.org/gnu/emacs/pretest.
-    You can use `gnupload --delete' (see below for more gnupload details).
+    You can use 'gnupload --delete' (see below for more gnupload details).
 
 General steps (for each step, check for possible errors):
 
@@ -96,12 +96,12 @@ General steps (for each step, check for possible errors):
 
     If this is the first pretest of a major release, just comparing
     with the previous release may overlook many new files.  You can try
-    something like `find . | sort' in a clean repository, and compare the
+    something like 'find . | sort' in a clean repository, and compare the
     results against the new tar contents.
 
 7.   tar -xf emacs-NEW.tar; cd emacs-NEW
      ./configure --prefix=/tmp/emacs && make && make install
-    Use `script' or M-x compile to save the compilation log in
+    Use 'script' or M-x compile to save the compilation log in
     compile-NEW.log and compare it against an old one.  The easiest way
     to do that is to visit the old log in Emacs, change the version
     number of the old Emacs to __, do the same with the new log and do
index fd7bd08091a3c5a1b340f0b9b54641dcb8d145ba..fb65bbe4330383eafc4f66862a671c49a79d1377 100644 (file)
@@ -334,7 +334,7 @@ http://debbugs.gnu.org/cgi/pkgreport.cgi?users=emacs;tag=calendar
 *** To merge bugs:
 Eg when bad replies create a bunch of new bugs for the same report.
 Bugs must all be in the same state (e.g. same package(s) and severity
--- see `reassign' and `severity' below), but need not have the same
+-- see 'reassign' and 'severity' below), but need not have the same
 tags (tags are merged). E.g.:
 
 merge 123 124 125 ...
@@ -343,8 +343,8 @@ Note that merging does not affect titles.  In particular, a "retitle"
 of merged bugs only affects individual bugs, not all of them.
 
 *** Forcing a merge:
-Like `merge', but bugs need not be in the same state.  The packages
-must still match though (see `reassign' below).  The first one listed
+Like 'merge', but bugs need not be in the same state.  The packages
+must still match though (see 'reassign' below).  The first one listed
 is the master.  E.g.:
 
 forcemerge 123 124 125 ...
@@ -383,7 +383,7 @@ See http://debbugs.gnu.org/Developer#severities for the meanings.
 *** To set the owner of a bug:
 owner 123 A Hacker <none@example.com>
 
-The shorthand `!' means your own address.
+The shorthand '!' means your own address.
 
 *** To remove the owner of a bug:
 noowner 123
@@ -408,7 +408,7 @@ reassign 1234 emacs
 Note that reassigning clears the list of found versions, even if the
 new packages includes the original one.
 
-** To remove spam from the tracker, move it to the `spam' pseudo-package:
+** To remove spam from the tracker, move it to the 'spam' pseudo-package:
 reassign 123 spam
 
 (Should not be necessary any more, now that the input is moderated.)
@@ -468,10 +468,10 @@ time, rather than by increasing bug number
 *** When you fix a bug, it can be helpful to put the bug number in the
 change log entry, for example:
 
-   * foo.el (foofunc): Fix the `foo' case.  (Bug#123)
+   * lisp/menu-bar.el (menu-set-font): Doc fix.  (Bug#21303)
 
 Then the relevant bug can be found for easy reference.  If it's an
-obvious fix (e.g. a typo), there's no need to clutter the log with the
+obvious fix (e.g., a typo), there's no need to clutter the log with the
 bug number.
 
 Similarly, when you close a bug, it can be helpful to include the
@@ -480,7 +480,7 @@ can see exactly what the fix was.
 
 *** bug-reference-mode
 
-Activate `bug-reference-mode' in ChangeLogs to get clickable links to
+Activate 'bug-reference-mode' in ChangeLogs to get clickable links to
 the bug web-pages.
 
 *** Debian stuff
index 45b7c617182a9b77a72d5f076317a73cc7535662..3ba9c55d2469f73a2e300be58400bed179269697 100644 (file)
@@ -132,7 +132,7 @@ lib-src/rcs2log           # Copyright
 Cocoa/Emacs.base/Contents/Info.plist
 Cocoa/Emacs.base/Contents/Resources/English.lproj/InfoPlist.strings
 GNUstep/Emacs.base/Resources/Info-gnustep.plist
-   `set-copyright' in admin.el will do all the above.
+   'set-copyright' in admin.el will do all the above.
 
 aclocal.m4
 configure
index 39226044a918c702aec8fe01ac872c4fdfe6b99b..4c0f1980deffeb4df3be6dc86ae53143db16b6b4 100644 (file)
@@ -13,7 +13,7 @@ daily.  This script (which is kept in elpa/admin/update-archive.sh) generates
 the content visible at http://elpa.gnu.org/packages.
 
 A new package is released as soon as the "version number" of that package is
-changed.  So you can use `elpa' to work on a package without fear of releasing
+changed.  So you can use 'elpa' to work on a package without fear of releasing
 those changes prematurely.  And once the code is ready, just bump the
 version number to make a new release of the package.
 
index d1d105a8a7ac59d36a6cfec2cfad65ad19e485cc..3c2c76c8909c3668345db35604648afa7ade7371 100644 (file)
@@ -33,7 +33,7 @@ You now have both branches conveniently accessible, and you can do
 Fixing bugs
 ===========
 
-You edit the files in either branch, `M-x vc-dir', and check in your
+You edit the files in either branch, 'M-x vc-dir', and check in your
 changes.  Then you need to push the data to the main repository.  This
 will usually fail, since somebody else has pushed other changes in the
 meantime.  To fix this, say
@@ -46,6 +46,14 @@ top of that.  Then say
 git push
 
 
+Sending patches
+===============
+
+If you lack push access or would like feedback before pushing a patch,
+you commit your change locally and then send a patch file as a bug report
+as described in ../../CONTRIBUTE.
+
+
 Backporting to emacs-24
 =======================
 
index 80ce787b6b083c5079744dfcfdebcc19109790c7..ce4a683f6fe944ec92c3864bf3c36bc1b9fd825b 100644 (file)
@@ -16,8 +16,8 @@ http://lists.gnu.org/archive/html/hydra-users/2013-08/msg00000.html
 
 * Mail notifications
 In addition to the web interface, Hydra can send notifications by
-email when the build status of a project changese.g., from
-`SUCCEEDED' to `FAILED'.  It sends notifications about build status in
+email when the build status of a project changese.g., from
+SUCCEEDED to FAILED.  It sends notifications about build status in
 Emacs trunk to emacs-buildstatus@gnu.org.
 
 If you want to receive these notifications, please subscribe at
@@ -25,16 +25,16 @@ http://lists.gnu.org/mailman/listinfo/emacs-buildstatus
 
 * The Emacs jobset consists of the following jobs:
 
-** The `tarball' job
+** The 'tarball' job
 which gets a checkout from the repository, and does a bootstrap followed
 by running make-dist to create a tarball.  If this job fails, all the
 others will too (because they use the tarball as input).
 
-** The `build' job
+** The 'build' job
 which starts from the tarball and does a normal build
 
 ** The 'coverage' job
-does a gcov build and then runs `make check'.  Fails if any test fails.
+does a gcov build and then runs 'make check'.  Fails if any test fails.
 
 * Nix expressions
 The recipe for GNU Emacs are available via Git:
index c547e14251ca1fdd6bc0cc064627796133f36025..868d45138d8ebb3764066815e64c114312f09695 100644 (file)
@@ -82,7 +82,7 @@ Known problems:
          minibuffer prompt (which is a kind of recursive editing) on
          another display.  To unfreeze your session, switch to that
          display and complete the recursive edit, for example by
-         pressing C-] (`abort-recursive-edit').
+         pressing C-] ('abort-recursive-edit').
 
          I am sorry to say that currently there is no way to break
          out of this "single-kboard mode" from a frozen display.  If
@@ -209,11 +209,11 @@ following:
 THINGS TO DO
 ------------
 
-** See if `tty-defined-color-alist' needs to be terminal-local.
+** See if 'tty-defined-color-alist' needs to be terminal-local.
    Update: Dan says it should be, so convert it.
 
 ** Mikhail Gusarov suggest to add a hook akin to
-   `after-make-frame-functions' that is called whenever Emacs connects
+   'after-make-frame-functions' that is called whenever Emacs connects
    to a new terminal.  Good idea!
 
 ** emacsclient -t on the console does not work after su.  You have to
@@ -237,16 +237,16 @@ THINGS TO DO
    proxy idea.
 
 ** lisp/vc.el depends on the terminal type during load time.
-   `vc-annotate-color-map' is one example that needs to be fixed.
+   'vc-annotate-color-map' is one example that needs to be fixed.
 
-** Understand how `quit_throw_to_read_char' works, and fix any bugs
+** Understand how 'quit_throw_to_read_char' works, and fix any bugs
    that come to light.
 
 ** See if getcjmp can be eliminated somehow.  Why does Emacs allow
    asynchronous input processing while it's reading input anyway?
 
-** `delete-frame' events are handled by `special-event-map'
-   immediately when read by `read_char'.  This is fine but it prevents
+** 'delete-frame' events are handled by 'special-event-map'
+   immediately when read by 'read_char'.  This is fine but it prevents
    higher-level keymaps from binding that event to get notified of the
    deleted frame.
 
@@ -254,26 +254,26 @@ THINGS TO DO
    deletions after they have happened, usually because they want to
    clean up after the deleted frame.  Not all frame-local states can
    be stored as a frame parameter.  For example,
-   `display-splash-screen' uses `recursive-edit' with a special keymap
+   'display-splash-screen' uses 'recursive-edit' with a special keymap
    override to create its buffer---and it leads to all kinds of
    nastiness if Emacs stays in this recursive edit mode after the
    frame containing the splash screen is deleted.  Basically, the
    splash-screen implementation wants to throw out of the recursive
    edit when the frame is deleted; however, it is not legal to throw
-   from `delete-frame-functions' because `delete-frame' must not fail.
-   (Introducing `delete-frame-after-functions' would not help either
-   because `delete-frame' may not fail at that time either.)
+   from 'delete-frame-functions' because 'delete-frame' must not fail.
+   (Introducing 'delete-frame-after-functions' would not help either
+   because 'delete-frame' may not fail at that time either.)
 
-   Currently `fancy-splash-screens' installs a
-   `delete-frame-functions' hook that sets up a timer to exit the
+   Currently 'fancy-splash-screens' installs a
+   'delete-frame-functions' hook that sets up a timer to exit the
    recursive edit.  This is an adequate solution, but it would perhaps
-   be better to have something like a `frame-deleted' event that could
+   be better to have something like a 'frame-deleted' event that could
    be bound in the normal way.
 
-** Trouble: `setenv' doesn't actually set environment variables in the
+** Trouble: 'setenv' doesn't actually set environment variables in the
    Emacs process.  This defeats the purpose of the elaborate
-   `server-with-environment' magic around the `tgetent' call in
-   `init_tty'.  D'oh.
+   'server-with-environment' magic around the 'tgetent' call in
+   'init_tty'.  D'oh.
 
 ** (Possibly) create hooks in struct device for creating frames on a
    specific terminal, and eliminate the hackish terminal-related frame
@@ -290,9 +290,9 @@ THINGS TO DO
    as static, removing it from dispextern.h.
    Move fatal to emacs.c and declare it somewhere.
 
-** Search for `suspend-emacs' references and replace them with
-   `suspend-frame', if necessary.  Ditto for `save-buffers-kill-emacs'
-   vs. `save-buffers-kill-display'.
+** Search for 'suspend-emacs' references and replace them with
+   'suspend-frame', if necessary.  Ditto for 'save-buffers-kill-emacs'
+   vs. 'save-buffers-kill-display'.
 
 ** Emacs crashes when a tty frame is resized so that there is no space
    for all its windows.  (Tom Schutzer-Weissmann)
@@ -315,7 +315,7 @@ THINGS TO DO
    impression that the various multidisplay fixes will only get
    released in GTK+ 2.10.
 
-** Audit `face-valid-attribute-values' usage in customize and
+** Audit 'face-valid-attribute-values' usage in customize and
    elsewhere.  Its return value depends on the current window system.
    Replace static initializers using it with runtime functions.  For
    example, custom's buttons are broken on non-initial device types.
@@ -325,9 +325,9 @@ THINGS TO DO
 
 ** frames-on-display-list should also accept frames.
 
-** Consider the `tty-type' frame parameter and the `display-tty-type'
+** Consider the 'tty-type' frame parameter and the 'display-tty-type'
    function.  They serve the exact same purpose.  I think it may be
-   a good idea to eliminate one of them, preferably `tty-type'.
+   a good idea to eliminate one of them, preferably 'tty-type'.
 
 ** The handling of lisp/term/*.el, and frame creation in general, is a
    big, big mess.  How come the terminal-specific file is loaded by
@@ -340,27 +340,23 @@ THINGS TO DO
    changed in CVS, and frame.el in multi-tty has not yet been adapted
    for the changes.  (It needs to look at
    default-frame-background-mode.)  (Update: maybe it is fixed now;
-   needs testing.) (Note that the byte compiler has this to say about
-   term/rxvt.el:)
+   needs testing.)
 
-       term/rxvt.el:309:17:Warning: assignment to free variable
-           `default-frame-background-mode'
-
-** I think `(set-)terminal-local-value' and the terminal parameter
+** I think '(set-)terminal-local-value' and the terminal parameter
    mechanism should be integrated into a single framework.
 
-   (Update: `(set-)terminal-local-value' is now eliminated, but the
+   (Update: '(set-)terminal-local-value' is now eliminated, but the
    terminal-local variables should still be accessible as terminal
-   parameters.  This also applies to `display-name' and similar
+   parameters.  This also applies to 'display-name' and similar
    functions.)
 
 ** Add the following hooks: after-delete-frame-hook (for server.el,
    instead of delete-frame-functions),
    after-delete-terminal-functions, after-create-terminal-functions.
 
-** BULK RENAME: The `display-' prefix of new Lisp-level functions
-   conflicts with stuff like `display-time-mode'.  Use `device-'
-   or `terminal-' instead.  I think I prefer `terminal-'.
+** BULK RENAME: The 'display-' prefix of new Lisp-level functions
+   conflicts with stuff like 'display-time-mode'.  Use 'device-'
+   or 'terminal-' instead.  I think I prefer 'terminal-'.
 
    It turns out that most of the offending Lisp functions were defined
    in the trunk.  Therefore, compatibility aliases should be defined
@@ -466,7 +462,7 @@ THINGS TO DO
 
 ** With iswitchb-default-method set to 'always-frame, only frames on
    the current display should be considered.  This might involve
-   extending `get-buffer-window'.
+   extending 'get-buffer-window'.
 
 ** Have a look at Vlocale_coding_system.  Seems like it would be a
    tedious job to localize it, although most references use it for
@@ -537,7 +533,7 @@ DIARY OF CHANGES
 
 -- Change make-terminal-frame to support specifying another tty.
 
-   (Done, new frame parameters: `tty' and `tty-type'.)
+   (Done, new frame parameters: 'tty' and 'tty-type'.)
 
 -- Implement support for reading from multiple terminals.
 
@@ -549,7 +545,7 @@ DIARY OF CHANGES
 
    (Update2: After enabling X, they don't.)
 
--- other-frame should cycle through the frames on the `current'
+-- other-frame should cycle through the frames on the 'current'
    terminal only.
 
    (Done, by trivially modifying next_frame and prev_frame.)
@@ -606,7 +602,7 @@ DIARY OF CHANGES
 
    (Update^3: Not any more.)
 
--- Make make-terminal-frame look up the `tty' and `tty-type' frame
+-- Make make-terminal-frame look up the 'tty' and 'tty-type' frame
    parameters from the currently selected terminal before the global
    default.
 
@@ -824,7 +820,7 @@ DIARY OF CHANGES
 
    (Done, breaking interactive temacs.)
 
--- The command `emacsclient -t -e '(delete-frame)'' fails to exit.
+-- The command "emacsclient -t -e '(delete-frame)'" fails to exit.
 
    (Fixed.)
 
@@ -934,7 +930,7 @@ DIARY OF CHANGES
    frame sets single_kboard).  Update: the face problems are caused by
    bugs in term.el, not in multi-tty.  The lockup is caused by
    single_kboard mode, and is not easily resolvable.  The best thing to
-   do is to simply refuse to create a tty frame of type `eterm'.
+   do is to simply refuse to create a tty frame of type 'eterm'.
 
    (Fixed, changed emacsclient to check for TERM=eterm.  The face
    complaints seem to be caused by bugs in term.el; they are not
@@ -943,14 +939,14 @@ DIARY OF CHANGES
 -- Find out the best way to support suspending Emacs with multiple
    ttys.  My guess: disable it on the controlling tty, but from other
    ttys pass it on to emacsclient somehow.  (It is (I hope) trivial to
-   extend emacsclient to handle suspend/resume.  A `kill -STOP' almost
+   extend emacsclient to handle suspend/resume.  A 'kill -STOP' almost
    works right now.)
 
    (Done.  I needed to play with signal handling and the server
    protocol a bit to make emacsclient behave as a normal UNIX program
    wrt foreground/background process groups.)
 
--- There is a flicker during the startup of `emacs -nw'; it's as if
+-- There is a flicker during the startup of 'emacs -nw'; it's as if
    the terminal is initialized, reset and then initialized again.
    Debug this.  (Hint: narrow_foreground_group is called twice during
    startup.)
@@ -973,7 +969,7 @@ DIARY OF CHANGES
 
    (It was an internal interface that may be changed when necessary.)
 
--- Change Lisp code not to (getenv "TERM"); use the `tty-type' frame
+-- Change Lisp code not to (getenv "TERM"); use the 'tty-type' frame
    parameter or the frame-tty-type function instead.  (M-x tags-search
    "TERM" helps with this.)  Update: Actually, all getenv invocations
    should be checked for multi-tty compatibility, and an interface
@@ -983,7 +979,7 @@ DIARY OF CHANGES
    calls should be mostly left as they are.)
 
 -- Add an elaborate mechanism for display-local variables.  (There are
-   already a few of these; search for `terminal-local' in the Elisp
+   already a few of these; search for 'terminal-local' in the Elisp
    manual.)
 
    (Not needed.  Display-local variables could be emulated by
@@ -1002,7 +998,7 @@ DIARY OF CHANGES
    emacsclient process for server tty frames.)
    (Update: Not really; Vlocale_coding_system is still global.)
 
--- Make `struct display' accessible to Lisp programs.  Accessor functions:
+-- Make 'struct display' accessible to Lisp programs.  Accessor functions:
 
        (displayp OBJECT):  Returns t if OBJECT is a display.
                => Implemented as display-live-p.
@@ -1020,7 +1016,7 @@ DIARY OF CHANGES
                => Already implemented, see frames-on-display-list.
 
        (display-type DISPLAY):  Returns the type of DISPLAY, as a
-               symbol.  (See `framep'.)
+               symbol.  (See 'framep'.)
                => Implemented as display-live-p.
 
        (display-device DISPLAY): Returns the name of the device that
@@ -1053,7 +1049,7 @@ DIARY OF CHANGES
    (Done.)
 
 -- Support multiple character locales.  A version of
-   `set-locale-environment' needs to be written for setting up
+   'set-locale-environment' needs to be written for setting up
    display-local settings on ttys.  I think calling
    set-display-table-and-terminal-coding-system and
    set-keyboard-coding-system would be enough.  The language
@@ -1066,7 +1062,7 @@ DIARY OF CHANGES
    them to tweak only frame-local settings, if possible.  (They tend
    to call define-key to set function key sequences a lot.)
 
-   (Done, by making `function-key-map' terminal-local (i.e., part of
+   (Done, by making 'function-key-map' terminal-local (i.e., part of
    struct kboard).  This has probably covered all the remaining problems.)
 
 -- xt-mouse.el needs to be adapted for multi-tty.  It currently
@@ -1083,8 +1079,8 @@ DIARY OF CHANGES
 
    This only seems to affect displays that are of the same terminfo
    type as the selected one. Interestingly, in screen Emacs normally
-   reports the up arrow key as `M-o A', but after the above SNAFU, it
-   complains about `M-[ a'.  UNIX ttys are a complete mystery to me,
+   reports the up arrow key as 'M-o A', but after the above SNAFU, it
+   complains about 'M-[ a'.  UNIX ttys are a complete mystery to me,
    but it seems the reset-reinitialize cycle somehow leaves the
    non-selected terminals in a different state than usual.  I have no
    idea how this could happen.
@@ -1132,15 +1128,15 @@ DIARY OF CHANGES
    clear what binding is in effect in any given time.  See if
    current_kboard (or at least the terminal-local bindings exported to
    Lisp) might be changed to be tied to the selected frame instead.
-   Currently, `function-key-map' and `key-translation-map' may be
+   Currently, 'function-key-map' and 'key-translation-map' may be
    accessed reliably only using the hackish
-   `(set-)terminal-local-value' functions.
+   '(set-)terminal-local-value' functions.
 
-   Perhaps there should be a difference between `last-command' &co.
+   Perhaps there should be a difference between 'last-command' &co.
    and these more conventional configuration variables.
-   (E.g. `symbol-value' would use current_kboard to access
-   `last-command', but SELECTED_FRAME()->display->kboard to get the
-   value of `function-key-map'.
+   (E.g. 'symbol-value' would use current_kboard to access
+   'last-command', but SELECTED_FRAME()->display->kboard to get the
+   value of 'function-key-map'.
 
    (Fixed in patch-434.)
 
@@ -1151,7 +1147,7 @@ DIARY OF CHANGES
    below" was the set-input-mode madness.)
 
    (Update: this bug was fixed for good in patch-449.  It was tracked
-   down to a bug in `read_key_sequence': it failed to reinitialize its
+   down to a bug in 'read_key_sequence': it failed to reinitialize its
    local function-key-map/key-translation-map references when it
    switched keyboards.  I don't understand why did this bug only
    appear on brand new frames, though!)
@@ -1163,35 +1159,35 @@ DIARY OF CHANGES
 -- Implement automatic forwarding of client environment variables to
    forked processes, as discussed on the multi-tty list.  Terminal
    parameters are now accessible in C code, so the biggest obstacle is
-   gone.  The `getenv_internal' and `child_setup' functions in
+   gone.  The 'getenv_internal' and 'child_setup' functions in
    callproc.c must be changed to support the following variable:
 
        terminal-local-environment-variables is a variable defined in ...
 
        Enable or disable terminal-local environment variables.
 
-       If set to t, `getenv', `setenv' and subprocess creation
+       If set to t, 'getenv', 'setenv' and subprocess creation
        functions use the environment variables of the emacsclient
        process that created the selected frame, ignoring
-       `process-environment'.
+       'process-environment'.
 
-       If set to nil, Emacs uses `process-environment' and ignores
+       If set to nil, Emacs uses 'process-environment' and ignores
        the client environment.
 
-       Otherwise, `terminal-local-environment-variables' should be a
+       Otherwise, 'terminal-local-environment-variables' should be a
        list of variable names (represented by Lisp strings) to look
        up in the client environment.  The rest will come from
-       `process-environment'.
+       'process-environment'.
 
-   (Implemented in patch-461; `terminal-getenv', `terminal-setenv' and
-   `with-terminal-environment' are now replaced by extensions to
-   `getenv' and `setenv', and the new `local-environment-variables'
+   (Implemented in patch-461; 'terminal-getenv', 'terminal-setenv' and
+   'with-terminal-environment' are now replaced by extensions to
+   'getenv' and 'setenv', and the new 'local-environment-variables'
    facility.  Yay!)
 
    (Updated in patch-465 to fix the semantics of let-binding
-   `process-environment'.  `process-environment' was changed to
+   'process-environment'.  'process-environment' was changed to
    override all local/global environment variables, and a new variable
-   `global-environment' was introduced to have `process-environment's
+   'global-environment' was introduced to have 'process-environment's
    old meaning.)
 
    (Updated in patch-466 to fix the case when two emacsclient sessions
@@ -1199,27 +1195,27 @@ DIARY OF CHANGES
    environment lists are now stored as frame parameters, so the
    C-level terminal parameters are not strictly necessary any more.)
 
--- `Fdelete_frame' is called from various critical places where it is
+-- 'Fdelete_frame' is called from various critical places where it is
    not acceptable for the frame deletion to fail, e.g. from
-   x_connection_closed after an X error.  `Fdelete_frame' now protects
-   against `delete-frame-functions' throwing an error and preventing a
+   x_connection_closed after an X error.  'Fdelete_frame' now protects
+   against 'delete-frame-functions' throwing an error and preventing a
    frame delete. (patch-475)
 
 -- Fix set-input-mode for multi-tty.  It's a truly horrible interface;
    what if we'd blow it up into several separate functions (with a
    compatibility definition)?
 
-   (Done.  See `set-input-interrupt-mode', `set-output-flow-control',
-   `set-input-meta-mode' and `set-quit-char'.) (patch-457)
+   (Done.  See 'set-input-interrupt-mode', 'set-output-flow-control',
+   'set-input-meta-mode' and 'set-quit-char'.) (patch-457)
 
--- Let-binding `overriding-terminal-local-map' on a brand new frame
-   does not seem to work correctly.  (See `fancy-splash-screens'.)
+-- Let-binding 'overriding-terminal-local-map' on a brand new frame
+   does not seem to work correctly.  (See 'fancy-splash-screens'.)
    The keymap seems to be set up right, but events go to another
-   terminal.  Or is it `unread-command-events' that gets Emacs
+   terminal.  Or is it 'unread-command-events' that gets Emacs
    confused?  Investigate.
 
    (Emacs was confused because a process filter entered
-   `recursive-edit' while Emacs was reading input.  I added support
+   'recursive-edit' while Emacs was reading input.  I added support
    for this in the input system.) (patch-489)
 
 -- I smell something funny around pop_kboard's "deleted kboard" case.
@@ -1244,7 +1240,7 @@ DIARY OF CHANGES
    synchronously (with wait_reading_process_input), or asynchronously
    by SIGIO or polling (SIGALRM).  C-g either sets the Vquit_flag,
    signals a 'quit condition (when immediate_quit), or throws to
-   `getcjmp' when Emacs was waiting for input when the C-g event
+   'getcjmp' when Emacs was waiting for input when the C-g event
    arrived.)
 
 -- Replace wrong_kboard_jmpbuf with a special return value of
@@ -1253,7 +1249,7 @@ DIARY OF CHANGES
 
    (Done in patch-500.)
 
--- `tool-bar-mode', `scroll-bar-mode', `menu-bar-mode' and
+-- 'tool-bar-mode', 'scroll-bar-mode', 'menu-bar-mode' and
    'fringe-mode' are modes global to the entire Emacs session, not
    just a single frame or a single terminal.  This means that their
    status sometimes differs from what's actually displayed on the
@@ -1266,7 +1262,7 @@ DIARY OF CHANGES
 
    (Done in patch-537.)
 
--- The `default-directory' variable should somehow be set to the
+-- The 'default-directory' variable should somehow be set to the
    cwd of the emacsclient process when the user runs emacsclient
    without file arguments.  Perhaps it is OK to just override the
    directory of the *scratch* buffer.
@@ -1278,9 +1274,9 @@ DIARY OF CHANGES
    frame parameter) is not filled with the correct background color.
 
    It seems the border contents are drawn onto by the
-   update_single_window call in `x-show-tip'.  After some debugging, I
+   update_single_window call in 'x-show-tip'.  After some debugging, I
    think the window's background color is not set up
-   correctly---calling `x_clear_area' fills the specified area with
+   correctly---calling 'x_clear_area' fills the specified area with
    black, not light yellow.
 
    (Done in patch-544.  A background_pixel field was defined both in
index a682fec72d50490a9d81fe2fef51b5d9b9d9893c..072e966d60c644f16bc721e8f20fe6f49e891133 100644 (file)
@@ -6,7 +6,7 @@ CHECKLIST FOR ADDING A NEW FILE TO EMACS -*- outline -*-
 format, copyright and license notice, etc).
 
 ** Make sure the filename does not cause the DOS port any problems (8+3).
-Run the `doschk' program like this:
+Run the 'doschk' program like this:
 
     find /path/to/emacs -print | doschk
 
index f38fd2cc3a8d22019fef8c72ef7d6f911bfa7934..b27a3f42891d10dce2f1bf6dee8c3a3d2abca220 100644 (file)
@@ -73,7 +73,7 @@ removes a file, then remove the corresponding files by hand.
 You may see conflicts in autoload md5sums in comments.  Strictly
 speaking, the right thing to do is merge everything else, resolve the
 conflict by choosing either the master or branch version, then run
-`make -C lisp autoloads' to update the md5sums to the correct master
+'make -C lisp autoloads' to update the md5sums to the correct master
 value before committing.
 
 * Re-adding a file that has been removed from the repository
@@ -96,12 +96,12 @@ which is often more appropriate.
 
 * Undoing a commit (uncommitting)
 
-If you have not pushed the commit, you may be able to use `git reset
+If you have not pushed the commit, you may be able to use 'git reset
 --hard' with a hash argument to revert the your local repo copy to the
 pre-commit state.
 
 If you have pushed  commit, resetting will be ineffective because it
-will only vanish the commit in your local copy.  Instead, use `git
+will only vanish the commit in your local copy.  Instead, use 'git
 revert', giving it the commit ID as argument. This will create a
 new commit that backs out the change. Then push that.
 
@@ -115,7 +115,7 @@ again.
 * Bisecting
 
 This is a semi-automated way to find the revision that introduced a bug.
-Browse `git help bisect' for technical instructions.
+Browse 'git help bisect' for technical instructions.
 
 * Maintaining ChangeLog history
 
index 079173f6b523d9c489390e68851759d7cd00930a..bdef4cb3eda13fef42cd3daab8dd34ee004521d2 100644 (file)
@@ -97,11 +97,11 @@ regard to completeness.
 
  * iso-2022 charsets get unified on i/o.
 
-       With the change on 2003-01-06, decoding routines put `charset'
-       property to decoded text, and iso-2022 encoder pay attention
+       With the change on 2003-01-06, decoding routines put the 'charset'
+       property onto decoded text, and iso-2022 encoder pay attention
        to it.  Thus, for instance, reading and writing by
        iso-2022-7bit preserve the original designation sequences.
-       The property name `preferred-charset' may be better?
+       The property name 'preferred-charset' may be better?
 
        We may have to utilize this property to decide a font.
 
index 911b39b4f60a30f99bef2529088d9f15797c8ef4..55510fb0252f817c8cba100eef064e9c8be6b78c 100755 (executable)
@@ -40,7 +40,7 @@ VERBOSE=''
 
 me="`basename $0`"
 
-# Install commands (if the user specifies the `--verbose' option, it is
+# Install commands (if the user specifies the '--verbose' option, it is
 # passed to these commands, so that feature only works if these commands
 # implement it too)
 LINK='cp -lf'
@@ -58,7 +58,7 @@ unset LANG LC_ALL LC_MESSAGES
 
 # Some messages
 USAGE="Usage: $me [OPTION...] BUILD_TREE [PREFIX]"
-TRY="Try "\`"$me --help' for more information."
+TRY="Try '$me --help' for more information."
 
 # Parse command-line options
 while :; do
@@ -93,7 +93,7 @@ Install emacs quickly
       --help                 display this help and exit
       --version              output version information and exit
 
-$me install emacs \`incrementally,' that is, it will
+$me install emacs "incrementally", that is, it will
 install only those files that have changed since the last time it was
 invoked, and remove any obsolete files from the installation
 directories.  It also uses hard-links into the source and build trees to
@@ -104,9 +104,9 @@ and build directories reside.
 
 Optionally, $me can also remove old versions of
 automatically generated files that are version-specific (such as the
-versioned emacs executables in the \`src' directory).
-The latter action is called \`pruning,' and
-can be enabled using the \`-p' or \`--prune' options.
+versioned emacs executables in the 'src' directory).
+The latter action is called "pruning", and
+can be enabled using the '-p' or '--prune' options.
 EOF
       exit 0
       ;;
@@ -124,7 +124,7 @@ EOF
       set -- `echo $FIRST | sed 's/-\(.\)\(.*\)/-\1 -\2/'` "$@"
       ;;
     -*)
-      echo 1>&2 "$me: unrecognized option "\`"$1'"
+      echo 1>&2 "$me: unrecognized option '$1'"
       echo 1>&2 "$TRY"
       exit 1
       ;;
index bc9c5a008e034479aa1c146332de6f0b318399c4..926915c1af1e985834a98b91c7eaf234994a56f8 100755 (executable)
@@ -216,8 +216,20 @@ autoreconf -fi -I m4 || exit $?
 ## cause 'make' to needlessly run 'autoheader'.
 echo timestamp > src/stamp-h.in || exit
 
-## Install Git hooks, if using Git.
-if test -d .git/hooks; then
+
+## Configure Git, if using Git.
+if test -d .git; then
+
+    # Configure 'git diff' hunk header format.
+
+    git config 'diff.elisp.xfuncname' \
+       '^\(def[^[:space:]]+[[:space:]]+([^()[:space:]]+)' || exit
+    git config 'diff.texinfo.xfuncname' \
+       '^@node[[:space:]]+([^,[:space:]][^,]+)' || exit
+
+
+    # Install Git hooks.
+
     tailored_hooks=
     sample_hooks=
 
index 0cab1bf17cdb93f4351a5a41219ff24af157047b..a0e0a05df8f1194dcc47012e58b26ab11cae3c57 100755 (executable)
@@ -333,7 +333,7 @@ sub git_dir_option($)
           $rest =~ s/^\s*\(cherry picked from commit [\da-f]+\)\n//m;
         }
 
-      my @line = split /\s*\n/, $rest;
+      my @line = split /[ \t]*\n/, $rest;
       my $author_line = shift @line;
       defined $author_line
         or die "$ME:$.: unexpected EOF\n";
index 9f8089f8809f93e51c9e317c6113d0fe8eecbaa5..d537f73c9397dd9f1e412b603a14bd57b4965b86 100644 (file)
@@ -928,10 +928,13 @@ else
   # option problematic.
   nw="$nw -Wsuggest-attribute=pure"
 
+  # This part is merely for shortening the command line,
+  # since -Wall implies -Wswitch.
+  nw="$nw -Wswitch"
+
   # This part is merely for shortening the command line,
   # since -Wno-FOO needs to be added below regardless.
   nw="$nw -Wmissing-field-initializers"
-  nw="$nw -Wswitch"
   nw="$nw -Wtype-limits"
   nw="$nw -Wunused-parameter"
 
@@ -948,7 +951,6 @@ else
   gl_WARN_ADD([-Wno-missing-field-initializers]) # We need this one
   gl_WARN_ADD([-Wno-sign-compare])     # Too many warnings for now
   gl_WARN_ADD([-Wno-type-limits])      # Too many warnings for now
-  gl_WARN_ADD([-Wno-switch])           # Too many warnings for now
   gl_WARN_ADD([-Wno-unused-parameter]) # Too many warnings for now
   gl_WARN_ADD([-Wno-format-nonliteral])
 
@@ -3998,6 +4000,8 @@ AC_SUBST(KRB4LIB)
 
 AC_CHECK_HEADERS(valgrind/valgrind.h)
 
+AC_CHECK_MEMBERS([struct unipair.unicode], [], [], [[#include <linux/kd.h>]])
+
 AC_CHECK_FUNCS_ONCE(tzset)
 
 ok_so_far=yes
index a3cb989320ae242ab50529c20718a1106fef7171..23d7e28f4e39ab9778b9bd3392a1c427c51289a9 100644 (file)
@@ -20,7 +20,7 @@ to expand the letters in the buffer before point by looking for other
 words in the buffer that start with those letters.  @xref{Dynamic
 Abbrevs}.
 
-  ``Hippie'' expansion generalizes abbreviation expansion.
+  A third kind, @dfn{hippie expansion}, generalizes abbreviation expansion.
 @xref{Hippie Expand, , Hippie Expansion, autotype, Features for
 Automatic Typing}.
 
@@ -250,10 +250,10 @@ keeps track of this to help you see which abbrevs you actually use, so
 that you can eliminate those that you don't use often.  The string at
 the end of the line is the expansion.
 
-  Some abbrevs are marked with @samp{(sys)}.  These ``system'' abbrevs
+  Some abbrevs are marked with @samp{(sys)}.  These @dfn{system abbrevs}
 (@pxref{Abbrevs,,, elisp, The Emacs Lisp Reference Manual}) are
 pre-defined by various modes, and are not saved to your abbrev file.
-To disable a ``system'' abbrev, define an abbrev of the same name that
+To disable a system abbrev, define an abbrev of the same name that
 expands to itself, and save it to your abbrev file.
 
 @findex edit-abbrevs
index f612a7b04d89ae3919fbe1b9bd5723a38abf1ab7..3eac9b31e358e960ccb4304432629db5a6a8c6e4 100644 (file)
@@ -155,7 +155,7 @@ directory changes in shell buffers; @file{filecache.el}, which records
 which directories your files are in; @file{locate.el}, which
 interfaces to the @code{locate} command; @file{find-lisp.el}, an Emacs
 Lisp emulation of the @command{find} program; @file{net-utils.el}; and
-the ``generic mode'' feature.
+the generic mode feature.
 
 @item
 Emmanuel Briot wrote @file{xml.el}, an XML parser for Emacs; and
@@ -196,7 +196,8 @@ for editing IDL and WAVE CL.
 Bob Chassell wrote @file{texnfo-upd.el}, @file{texinfo.el}, and
 @file{makeinfo.el}, modes and utilities for working with Texinfo files;
 and @file{page-ext.el}, commands for extended page handling.  He also
-wrote the ``Introduction to programming in Emacs Lisp'' manual.
+wrote the Emacs Lisp introduction.  @xref{Top,,,eintr, Introduction to
+Programming in Emacs Lisp}.
 
 @item
 Jihyun Cho wrote @file{hanja-util.el} and @file{hangul.el}, utilities
@@ -247,10 +248,10 @@ for compiled Emacs Lisp code.
 
 @item
 Mathias Dahl wrote @file{image-dired.el}, a package for viewing image
-files as ``thumbnails''.
+files as thumbnails.
 
 @item
-Julien Danjou wrote an implementation of ``Desktop Notifications''
+Julien Danjou wrote an implementation of desktop notifications
 (@file{notifications.el}, and related packages for ERC and Gnus);
 and @file{color.el}, a library for general color manipulation.
 He also made various contributions to Gnus.
@@ -544,11 +545,11 @@ diary entries to and from the iCalendar format;
 @file{bubbles.el}, a puzzle game.
 
 @item
-Kyle Jones wrote @file{life.el}, a package to play Conway's ``life'' game.
+Kyle Jones wrote @file{life.el}, a package to play Conway's Game of Life.
 
 @item
 Terry Jones wrote @file{shadow.el}, a package for finding potential
-load-path problems when some Lisp file ``shadows'' another.
+load-path problems when some Lisp file shadows another.
 
 @item
 Simon Josefsson wrote @file{dns-mode.el}, an editing mode for Domain
@@ -708,7 +709,7 @@ Leo Liu wrote @file{pcmpl-x.el}, providing completion for
 miscellaneous external tools; and revamped support for Octave in Emacs 24.4.
 
 @item
-Károly Lőrentey wrote the ``multi-terminal'' code, which allows
+Károly Lőrentey wrote the multi-terminal code, which allows
 Emacs to run on graphical and text terminals simultaneously.
 
 @item
@@ -726,7 +727,7 @@ Autoconf files; @file{cfengine.el}, a mode for editing Cfengine files;
 @file{elide-head.el}, a package for eliding boilerplate text from file
 headers; @file{hl-line.el}, a minor mode for highlighting the line in
 the current window on which point is; @file{cap-words.el}, a minor mode
-for motion in ``CapitalizedWordIdentifiers''; @file{latin1-disp.el}, a
+for motion in @code{CapitalizedWordIdentifiers}; @file{latin1-disp.el}, a
 package that lets you display ISO 8859 characters on Latin-1 terminals
 by setting up appropriate display tables; the version of
 @file{python.el} used prior to Emacs 24.3; @file{smiley.el}, a
@@ -822,7 +823,7 @@ command with its arguments.
 
 @item
 Richard Mlynarik wrote @file{cl-indent.el}, a package for indenting
-Common Lisp code; @file{ebuff-menu.el}, an ``electric'' browser for
+Common Lisp code; @file{ebuff-menu.el}, an electric browser for
 buffer listings; @file{ehelp.el}, bindings for browsing help screens;
 and @file{rfc822.el}, a parser for E-mail addresses in the RFC-822 format,
 used in mail messages and news articles.
@@ -848,7 +849,7 @@ text; @file{smerge-mode.el}, a minor mode for resolving @code{diff3}
 conflicts; @file{diff-mode.el}, a mode for viewing and editing context
 diffs; @file{css-mode.el} for Cascading Style Sheets;
 @file{bibtex-style.el} for Bib@TeX{} Style files; @file{mpc.el}, a
-client for the ``Music Player Daemon''; @file{smie.el}, a generic
+client for the Music Player Daemon (MPD); @file{smie.el}, a generic
 indentation engine; and @file{pcase.el}, implementing ML-style pattern
 matching.  In Emacs 24, he integrated the lexical binding code,
 cleaned up the CL namespace (making it acceptable to use CL
@@ -930,7 +931,7 @@ Jeff Peck wrote @file{sun.el}, key bindings for sunterm keys.
 
 @item
 Damon Anton Permezel wrote @file{hanoi.el}, an animated demonstration of
-the ``Towers of Hanoi'' puzzle.
+the Towers of Hanoi puzzle.
 
 @item
 William M. Perry wrote @file{mailcap.el} (with Lars Magne
@@ -1003,7 +1004,7 @@ source code version control systems, with Paul Eggert; @file{gud.el},
 a package for running source-level debuggers like GDB and SDB in
 Emacs; @file{asm-mode.el}, a mode for editing assembly language code;
 @file{AT386.el}, terminal support package for IBM's AT keyboards;
-@file{cookie1.el}, support for ``fortune-cookie'' programs like
+@file{cookie1.el}, support for fortune-cookie programs like
 @file{yow.el} and @file{spook.el}; @file{finder.el}, a package for
 finding Emacs Lisp packages by keyword and topic; @file{keyswap.el},
 code to swap the @key{BS} and @key{DEL} keys; @file{loadhist.el},
@@ -1055,7 +1056,7 @@ DSSSL code.
 
 @item
 Martin Rudalics implemented improved display-buffer handling in Emacs 24;
-and implemented ``pixel-wise'' resizing of windows and frames.
+and implemented pixel-wise resizing of windows and frames.
 
 @item
 Ivar Rummelhoff wrote @file{winner.el}, which records recent window
@@ -1177,7 +1178,7 @@ selecting regions to follow many other systems.
 @item
 Richard Stallman invented Emacs.  He is the original author of GNU
 Emacs, and has been Emacs maintainer over several non-contiguous
-periods.  In addition to much of the ``core'' Emacs code, he has
+periods.  In addition to much of the core Emacs code, he has
 written @file{easymenu.el}, a facility for defining Emacs menus;
 @file{image-mode.el}, support for visiting image files;
 @file{menu-bar.el}, the Emacs menu bar support code;
@@ -1193,8 +1194,8 @@ Ake Stenhoff and Lars Lindberg wrote @file{imenu.el}, a framework for
 browsing indices made from buffer contents.
 
 @item
-Peter Stephenson wrote @file{vcursor.el}, which implements a ``virtual
-cursor'' that you can move with the keyboard and use for copying text.
+Peter Stephenson wrote @file{vcursor.el}, which implements a virtual
+cursor that you can move with the keyboard and use for copying text.
 
 @item
 Ken Stevens wrote @file{ispell.el}, a spell-checker interface.
@@ -1230,7 +1231,7 @@ the keyboard.
 
 @item
 Jean-Philippe Theberge wrote @file{thumbs.el}, a package for viewing
-image files as ``thumbnails''.
+image files as thumbnails.
 
 @item
 Spencer Thomas wrote the original @file{dabbrev.el}, providing a command
@@ -1274,7 +1275,7 @@ for Gnus; and @file{timezone.el}, providing functions for dealing with
 time zones.
 
 @item
-Neil W. Van Dyke wrote @file{webjump.el}, a ``hot links'' package.
+Neil W. Van Dyke wrote @file{webjump.el}, a Web hotlist package.
 
 @item
 Didier Verna wrote @file{rect.el}, a package of functions for
@@ -1373,7 +1374,7 @@ manual pages without the @code{man} command.
 @item
 Masatake Yamato wrote @file{ld-script.el}, an editing mode for GNU
 linker scripts, and contributed subword handling and style
-``guessing'' in CC mode.
+guessing in CC mode.
 
 @item
 Jonathan Yavner wrote @file{testcover.el}, a package for keeping track
index def5411064c1d43b05acee28db73adfc1a78e89e..d702ff78b7c2752f76dc87e2d2e9e364ef36354e 100644 (file)
@@ -22,12 +22,12 @@ cursor to the right and left respectively.  Also, @key{RIGHT} and
 expect, rather than moving forward or backward based on the underlying
 ``paragraph direction''.
 
-Users of ``right-to-left'' languages, like Arabic and Hebrew, may
+Users of right-to-left languages, like Arabic and Hebrew, may
 adapt by reading and/or editing text in left-to-right order.
 
 @item
 The Emacs Lisp package manager has been removed.  Instead of using a
-``user interface'' (@kbd{M-x list-packages}), additional Lisp packages
+user interface (@kbd{M-x list-packages}), additional Lisp packages
 must now be installed by hand, which is the most flexible and
 ``Lispy'' method anyway.  Typically, this just involves editing your
 init file to add the package installation directory to the load path
index 9d356108677d555df44d9e0e1b2a875a7f0aafa3..69431c65983805d337fb21396e5353468843a32f 100644 (file)
@@ -17,13 +17,13 @@ of buffers for which it is implemented (listed in the menu below).
 Like file buffers, non-file buffers should normally not revert while
 you are working on them, or while they contain information that might
 get lost after reverting.  Therefore, they do not revert if they are
-``modified''.  This can get tricky, because deciding when a non-file
+modified.  This can get tricky, because deciding when a non-file
 buffer should be marked modified is usually more difficult than for
 file buffers.
 
 Another tricky detail is that, for efficiency reasons, Auto Revert
 often does not try to detect all possible changes in the buffer, only
-changes that are ``major'' or easy to detect.  Hence, enabling
+changes that are major or easy to detect.  Hence, enabling
 auto-reverting for a non-file buffer does not always guarantee that
 all information in the buffer is up-to-date, and does not necessarily
 make manual reverts useless.
index 0a4391094b3c07e35fea25314e63d4d3de54247e..e5d34c62a571f6e9ce04e133ff5a9dd61ec813b9 100644 (file)
@@ -1,3 +1,4 @@
+@c -*- coding: utf-8 -*-
 @c This is part of the Emacs manual.
 @c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2015 Free Software
 @c Foundation, Inc.
@@ -424,7 +425,7 @@ On some text terminals, Emacs may not recognize the @key{DEL} key
 properly.  @xref{DEL Does Not Delete}, if you encounter this problem.
 
   The @key{Delete} (@code{delete-forward-char}) command deletes in the
-``opposite direction'': it deletes the character after point, i.e., the
+opposite direction: it deletes the character after point, i.e., the
 character under the cursor.  If point was at the end of a line, this
 joins the following line onto this one.  Like @kbd{@key{DEL}}, it
 deletes the text in the region if the region is active (@pxref{Mark}).
@@ -762,7 +763,7 @@ down one line, as you might expect---the @samp{0} is treated as part
 of the prefix argument.
 
 (What if you do want to insert five copies of @samp{0}?  Type @kbd{M-5
-C-u 0}.  Here, @kbd{C-u} ``terminates'' the prefix argument, so that
+C-u 0}.  Here, @kbd{C-u} terminates the prefix argument, so that
 the next keystroke begins the command that you want to execute.  Note
 that this meaning of @kbd{C-u} applies only to this case.  For the
 usual role of @kbd{C-u}, see below.)
@@ -780,7 +781,7 @@ multiplies the argument for the next command by four.  @kbd{C-u C-u}
 multiplies it by sixteen.  Thus, @kbd{C-u C-u C-f} moves forward
 sixteen characters.  Other useful combinations are @kbd{C-u C-n},
 @kbd{C-u C-u C-n} (move down a good fraction of a screen), @kbd{C-u
-C-u C-o} (make ``a lot'' of blank lines), and @kbd{C-u C-k} (kill four
+C-u C-o} (make sixteen blank lines), and @kbd{C-u C-k} (kill four
 lines).
 
   You can use a numeric argument before a self-inserting character to
index c217c09aa421cb30c90955c93bf0df2b8af9146a..5a4d1abfc391f7dd616277e853cc6740a5480b16 100644 (file)
@@ -94,7 +94,7 @@ now displayed in any window.
 
   While entering the buffer name, you can use the usual completion and
 history commands (@pxref{Minibuffer}).  Note that @kbd{C-x b}, and
-related commands, use ``permissive completion with confirmation'' for
+related commands, use @dfn{permissive completion with confirmation} for
 minibuffer completion: if you type @key{RET} immediately after
 completing up to a nonexistent buffer name, Emacs prints
 @samp{[Confirm]} and you must type a second @key{RET} to submit that
@@ -180,7 +180,7 @@ buffers that were current most recently come first.
 
   @samp{.} in the first field of a line indicates that the buffer is
 current.  @samp{%} indicates a read-only buffer.  @samp{*} indicates
-that the buffer is ``modified''.  If several buffers are modified, it
+that the buffer is modified.  If several buffers are modified, it
 may be time to save some with @kbd{C-x s} (@pxref{Save Commands}).
 Here is an example of a buffer list:
 
index 1d40a2dd12d0c47dc7dd1afc0458738ecd19835a..fbef9feb5a61f8a1faf6794d865c808289cc8542 100644 (file)
@@ -322,7 +322,7 @@ nohup @var{command}; sleep 1
 @end example
 
 @ifnottex
-  On the MS-DOS ``operating system'', asynchronous subprocesses are
+  On MS-DOS, asynchronous subprocesses are
 not supported, so @kbd{M-x compile} runs the compilation command
 synchronously (i.e., you must wait until the command finishes before
 you can do anything else in Emacs).  @xref{MS-DOS}.
@@ -334,7 +334,7 @@ you can do anything else in Emacs).  @xref{MS-DOS}.
   Just as you can run a compiler from Emacs and then visit the lines
 with compilation errors, you can also run @command{grep} and then
 visit the lines on which matches were found.  This works by treating
-the matches reported by @command{grep} as if they were ``errors''.
+the matches reported by @command{grep} as if they were errors.
 The output buffer uses Grep mode, which is a variant of Compilation
 mode (@pxref{Compilation Mode}).
 
@@ -800,12 +800,12 @@ the command to @kbd{C-c @var{binding}} in the GUD buffer's mode and to
 @table @samp
 @item %f
 The name of the current source file.  If the current buffer is the GUD
-buffer, then the ``current source file'' is the file that the program
+buffer, then the current source file is the file that the program
 stopped in.
 
 @item %l
 The number of the current source line.  If the current buffer is the GUD
-buffer, then the ``current source line'' is the line that the program
+buffer, then the current source line is the line that the program
 stopped in.
 
 @item %e
@@ -848,7 +848,7 @@ GUD}).  You must use this if you want to debug multiple programs
 within one Emacs session, as that is currently unsupported by @kbd{M-x
 gdb}.
 
-  Internally, @kbd{M-x gdb} informs GDB that its ``screen size'' is
+  Internally, @kbd{M-x gdb} informs GDB that its screen size is
 unlimited; for correct operation, you must not change GDB's screen
 height and width values during the debugging session.
 
@@ -893,8 +893,8 @@ displays the following frame layout:
 
 @findex gdb-restore-windows
 @findex gdb-many-windows
-  If you ever change the window layout, you can restore the ``many
-windows'' layout by typing @kbd{M-x gdb-restore-windows}.  To toggle
+  If you ever change the window layout, you can restore the many-windows
+layout by typing @kbd{M-x gdb-restore-windows}.  To toggle
 between the many windows layout and a simple layout with just the GUD
 interaction buffer and a source file, type @kbd{M-x gdb-many-windows}.
 
index ed850456c8b506bd8014f1e385a8cfe2ea509c41..3b5b3c58a65a0a15967cd892b2b287d3c3ede190 100644 (file)
@@ -143,7 +143,7 @@ all) of the variables @code{calendar-bahai-all-holidays-flag},
   Each of the holiday variables is a list of @dfn{holiday forms}, each
 form describing a holiday (or sometimes a list of holidays).  Here is
 a table of the possible kinds of holiday form.  Day numbers and month
-numbers count starting from 1, but ``dayname'' numbers count Sunday as
+numbers count starting from 1, but @dfn{dayname} numbers count Sunday as
 0.  The argument @var{string} is always the description of the
 holiday, as a string.
 
@@ -840,7 +840,7 @@ Renew medication (5th time)
 @noindent
 in the fancy diary display on September 7, 2012.
 
-  There is an ``early reminder'' diary sexp that includes its entry in the
+  There is an early-reminder diary sexp that includes its entry in the
 diary not only on the date of occurrence, but also on earlier dates.
 For example, if you want a reminder a week before your anniversary, you
 can use
index e9c8b7356aa62388df8db4cbf9cff627c0ff622d..bc13d4ba29602c263853965d2146d0f0c05e3251 100644 (file)
@@ -57,7 +57,7 @@ For more advanced topics,
   Calendar mode provides commands to move through the calendar in
 logical units of time such as days, weeks, months, and years.  If you
 move outside the three months originally displayed, the calendar
-display ``scrolls'' automatically through time to make the selected
+display scrolls automatically through time to make the selected
 date visible.  Moving to a date lets you view its holidays or diary
 entries, or convert it to other calendars; moving by long time periods
 is also useful simply to scroll the calendar.
@@ -269,7 +269,7 @@ contents one month backwards in time.
 @kindex M-v @r{(Calendar mode)}
 @findex calendar-scroll-right-three-months
   The commands @kbd{C-v} and @kbd{M-v} scroll the calendar by an entire
-``screenful''---three months---in analogy with the usual meaning of
+screenful---three months---in analogy with the usual meaning of
 these commands.  @kbd{C-v} makes later dates visible and @kbd{M-v} makes
 earlier dates visible.  These commands take a numeric argument as a
 repeat count; in particular, since @kbd{C-u} multiplies the next command
@@ -432,8 +432,8 @@ Generate a Filofax-style calendar for one year
 (@code{cal-tex-cursor-filofax-year}).
 @end table
 
-  Some of these commands print the calendar sideways (in ``landscape
-mode''), so it can be wider than it is long.  Some of them use Filofax
+  Some of these commands print the calendar sideways (in landscape
+mode), so it can be wider than it is long.  Some of them use Filofax
 paper size (3.75in x 6.75in).  All of these commands accept a prefix
 argument, which specifies how many days, weeks, months or years to print
 (starting always with the selected one).
@@ -631,8 +631,8 @@ for all users in a @file{default.el} file.  @xref{Init File}.
 
   These calendar commands display the dates and times of the phases of
 the moon (new moon, first quarter, full moon, last quarter).  This
-feature is useful for debugging problems that ``depend on the phase of
-the moon''.
+feature is useful for debugging problems that depend on the phase of
+the moon.
 
 @table @kbd
 @item M
@@ -665,7 +665,7 @@ See the discussion in the previous section.  @xref{Sunrise/Sunset}.
 
 @cindex Gregorian calendar
   The Emacs calendar displayed is @emph{always} the Gregorian calendar,
-sometimes called the ``new style'' calendar, which is used in most of
+sometimes called the New Style calendar, which is used in most of
 the world today.  However, this calendar did not exist before the
 sixteenth century and was not widely used before the eighteenth century;
 it did not fully displace the Julian calendar and gain universal
@@ -759,13 +759,13 @@ official calendar of Iran will be at that time.
 into solar years.  The years go in cycles of sixty, each year containing
 either twelve months in an ordinary year or thirteen months in a leap
 year; each month has either 29 or 30 days.  Years, ordinary months, and
-days are named by combining one of ten ``celestial stems'' with one of
-twelve ``terrestrial branches'' for a total of sixty names that are
+days are named by combining one of ten @dfn{celestial stems} with one of
+twelve @dfn{terrestrial branches} for a total of sixty names that are
 repeated in a cycle of sixty.
 
 @cindex Bahá'í calendar
   The Bahá'í calendar system is based on a solar cycle of 19 months with
-19 days each.  The four remaining ``intercalary'' days are placed
+19 days each.  The four remaining intercalary days are placed
 between the 18th and 19th months.
 
 @node To Other Calendar
@@ -908,7 +908,7 @@ Islamic, or French names.
 @findex calendar-hebrew-list-yahrzeits
 @cindex yahrzeits
   One common issue concerning the Hebrew calendar is the computation
-of the anniversary of a date of death, called a ``yahrzeit''.  The Emacs
+of the anniversary of a date of death, called a @dfn{yahrzeit}.  The Emacs
 calendar includes a facility for such calculations.  If you are in the
 calendar, the command @kbd{M-x calendar-hebrew-list-yahrzeits} asks you for
 a range of years and then displays a list of the yahrzeit dates for those
@@ -1463,11 +1463,11 @@ variable @code{diary-outlook-formats}.  Other mail clients can set
 @c FIXME the name of the RFC is hardly very relevant.
 @cindex iCalendar support
   The icalendar package allows you to transfer data between your Emacs
-diary file and iCalendar files, which are defined in ``RFC
+diary file and iCalendar files, which are defined in @cite{RFC
 2445---Internet Calendaring and Scheduling Core Object Specification
-(iCalendar)'' (as well as the earlier vCalendar format).
+(iCalendar)} (as well as the earlier vCalendar format).
 
-@c  Importing works for ``ordinary'' (i.e., non-recurring) events, but
+@c  Importing works for ordinary (i.e., non-recurring) events, but
 @c (at present) may not work correctly (if at all) for recurring events.
 @c Exporting of diary files into iCalendar files should work correctly
 @c for most diary entries.  This feature is a work in progress, so the
@@ -1601,11 +1601,11 @@ timeclock-change}.
   Once you've collected data from a number of time intervals, you can use
 @kbd{M-x timeclock-workday-remaining} to see how much time is left to
 work today (assuming a typical average of 8 hours a day), and @kbd{M-x
-timeclock-when-to-leave} which will calculate when you're ``done''.
+timeclock-when-to-leave} which will calculate when you're done.
 
 @vindex timeclock-modeline-display
 @findex timeclock-modeline-display
-  If you want Emacs to display the amount of time ``left'' of your
+  If you want Emacs to display the amount of time left of your
 workday in the mode line, either customize the
 @code{timeclock-modeline-display} variable and set its value to
 @code{t}, or invoke the @kbd{M-x timeclock-modeline-display} command.
index 60fe97720c399be578a336ffc254c6d18d73a5a7..fcaf87f17092582739b366d8996844c4854214ba 100644 (file)
@@ -443,8 +443,8 @@ some other programs.  Emacs does not require any of these environment
 variables to be set, but it uses their values if they are set.
 
 @c This used to be @vtable, but that enters the variables alone into
-@c the Variable Index, which in some cases, like ``HOME'', might be
-@c confused with keys by that name, and other cases, like ``NAME'',
+@c the Variable Index, which in some cases, like HOME, might be
+@c confused with keys by that name, and other cases, like NAME,
 @c might be confused with general-purpose phrases.
 @table @env
 @item CDPATH
@@ -582,7 +582,7 @@ The name of the news server.  Used by the mh and Gnus packages.
 @item ORGANIZATION
 @vindex ORGANIZATION, environment variable
 The name of the organization to which you belong.  Used for setting the
-``Organization:'' header in your posts from the Gnus package.
+@samp{Organization:} header in your posts from the Gnus package.
 @item PATH
 @vindex PATH, environment variable
 A colon-separated list of directories containing executable files.
@@ -808,7 +808,7 @@ Use @var{font} as the default font.
 @end table
 
 When passing a font name to Emacs on the command line, you may need to
-``quote'' it, by enclosing it in quotation marks, if it contains
+quote it, by enclosing it in quotation marks, if it contains
 characters that the shell treats specially (e.g., spaces).  For
 example:
 
@@ -1036,7 +1036,7 @@ tool bar when it processes the specified geometry.
   When using one of @samp{--fullscreen}, @samp{--maximized},
 @samp{--fullwidth} or @samp{--fullheight}, some window managers require
 you to set the variable @code{frame-resize-pixelwise} to a non-@code{nil}
-value to make a frame appear truly ``maximized'' or ``fullscreen''.
+value to make a frame appear truly maximized or full-screen.
 
  Some window managers have options that can make them ignore both
 program-specified and user-specified positions.  If these are set,
@@ -1115,7 +1115,7 @@ for the initial Emacs frame.
 @opindex --iconic
 @itemx --iconic
 @cindex start iconified, command-line argument
-Start Emacs in an iconified (``minimized'') state.
+Start Emacs in an iconified state.
 
 @item -nbi
 @opindex -nbi
@@ -1125,9 +1125,9 @@ Start Emacs in an iconified (``minimized'') state.
 Disable the use of the Emacs icon.
 @end table
 
-  Most window managers allow you to ``iconify'' (or ``minimize'') an
+  Most window managers allow you to iconify (or ``minimize'') an
 Emacs frame, hiding it from sight.  Some window managers replace
-iconified windows with tiny ``icons'', while others remove them
+iconified windows with tiny icons, while others remove them
 entirely from sight.  The @samp{-iconic} option tells Emacs to begin
 running in an iconified state, rather than showing a frame right away.
 The text frame doesn't appear until you deiconify (or ``un-minimize'')
index fb77c77358f55b3a45ff66795ed0c4f09ed41c43..98e12531253c9b81ad45f9be6158d41f14731539 100644 (file)
@@ -70,7 +70,7 @@ where the @key{META} key does not function reliably.
   On graphical displays, the window manager might block some keyboard
 inputs, including @kbd{M-@key{TAB}}, @kbd{M-@key{SPC}}, @kbd{C-M-d}
 and @kbd{C-M-l}.  If you have this problem, you can either customize
-your window manager to not block those keys, or ``rebind'' the
+your window manager to not block those keys, or rebind the
 affected Emacs commands (@pxref{Customization}).
 
 @cindex input event
index 43c61d769c740b9a849dfcb05be139222e1ee3af..76c7261767a64915e920385685abaaf82d2d883d 100644 (file)
@@ -1,3 +1,4 @@
+@c -*- coding: utf-8 -*-
 @c This is part of the Emacs manual.
 @c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2015 Free Software
 @c Foundation, Inc.
@@ -28,7 +29,7 @@ Reference Manual}.
                           to decide what to do; by setting variables,
                           you can control their functioning.
 * Key Bindings::        The keymaps say what command each key runs.
-                          By changing them, you can ``redefine keys''.
+                          By changing them, you can redefine keys.
 * Init File::           How to write common customizations in the
                           initialization file.
 @end menu
@@ -728,7 +729,7 @@ maximum length of the kill ring (@pxref{Earlier Kills}); if you give
 @code{kill-ring-max} a string value, commands such as @kbd{C-y}
 (@code{yank}) will signal an error.  On the other hand, some variables
 don't care about type; for instance, if a variable has one effect for
-@code{nil} values and another effect for ``non-@code{nil}'' values,
+@code{nil} values and another effect for non-@code{nil} values,
 then any value that is not the symbol @code{nil} induces the second
 effect, regardless of its type (by convention, we usually use the
 value @code{t}---a symbol which stands for ``true''---to specify a
@@ -773,22 +774,22 @@ C-h v fill-column @key{RET}
 displays something like this:
 
 @example
-fill-column is a variable defined in `C source code'.
-fill-column's value is 70
+fill-column is a variable defined in ‘C source code’.
+Its value is 70
 
-Automatically becomes buffer-local when set.
-This variable is safe as a file local variable if its value
-satisfies the predicate @code{integerp}.
+  Automatically becomes buffer-local when set.
+  This variable is safe as a file local variable if its value
+  satisfies the predicate ‘integerp’.
 
 Documentation:
 Column beyond which automatic line-wrapping should happen.
-Interactively, you can set the local value with C-x f.
+Interactively, you can set the buffer local value using C-x f.
 
 You can customize this variable.
 @end example
 
 @noindent
-The line that says ``You can customize the variable'' indicates that
+The line that says @samp{You can customize the variable} indicates that
 this variable is a user option.  @kbd{C-h v} is not restricted to user
 options; it allows non-customizable variables too.
 
@@ -1156,7 +1157,7 @@ the list.  Here is an example:
 # End:
 @end example
 
-  Some ``variable names'' have special meanings in a local variables
+  Some names have special meanings in a local variables
 list:
 
 @itemize
@@ -1761,7 +1762,7 @@ and @kbd{C-c p} in Texinfo mode:
 alphabetical characters are case-insensitive.  In other words,
 @kbd{C-A} does the same thing as @kbd{C-a}, and @kbd{M-A} does the
 same thing as @kbd{M-a}.  This concerns only alphabetical characters,
-and does not apply to ``shifted'' versions of other keys; for
+and does not apply to shifted versions of other keys; for
 instance, @kbd{C-@@} is not the same as @kbd{C-2}.
 
   A @key{Control}-modified alphabetical character is always considered
@@ -1784,9 +1785,9 @@ to them.  The modifier bits are labeled as @samp{s-}, @samp{H-} and
 @samp{A-} respectively.
 
   Even if your keyboard lacks these additional modifier keys, you can
-enter it using @kbd{C-x @@}: @kbd{C-x @@ h} adds the ``hyper'' flag to
-the next character, @kbd{C-x @@ s} adds the ``super'' flag, and
-@kbd{C-x @@ a} adds the ``alt'' flag.  For instance, @kbd{C-x @@ h
+enter it using @kbd{C-x @@}: @kbd{C-x @@ h} adds the Hyper flag to
+the next character, @kbd{C-x @@ s} adds the Super flag, and
+@kbd{C-x @@ a} adds the Alt flag.  For instance, @kbd{C-x @@ h
 C-a} is a way to enter @kbd{Hyper-Control-a}.  (Unfortunately, there
 is no way to add two modifiers by using @kbd{C-x @@} twice for the
 same character, because the first one goes to work on the @kbd{C-x}.)
@@ -1836,7 +1837,7 @@ key.
   @xref{Init Rebinding}, for examples of binding function keys.
 
 @cindex keypad
-  Many keyboards have a ``numeric keypad'' on the right hand side.
+  Many keyboards have a numeric keypad on the right hand side.
 The numeric keys in the keypad double up as cursor motion keys,
 toggled by a key labeled @samp{Num Lock}.  By default, Emacs
 translates these keys to the corresponding keys in the main keyboard.
@@ -1866,13 +1867,13 @@ prefix arguments.
 started out as names for certain @acronym{ASCII} control characters,
 used so often that they have special keys of their own.  For instance,
 @key{TAB} was another name for @kbd{C-i}.  Later, users found it
-convenient to distinguish in Emacs between these keys and the ``same''
+convenient to distinguish in Emacs between these keys and the corresponding
 control characters typed with the @key{Ctrl} key.  Therefore, on most
 modern terminals, they are no longer the same: @key{TAB} is different
 from @kbd{C-i}.
 
   Emacs can distinguish these two kinds of input if the keyboard does.
-It treats the ``special'' keys as function keys named @code{tab},
+It treats the special keys as function keys named @code{tab},
 @code{return}, @code{backspace}, @code{linefeed}, @code{escape}, and
 @code{delete}.  These function keys translate automatically into the
 corresponding @acronym{ASCII} characters @emph{if} they have no
@@ -1882,7 +1883,7 @@ need to pay attention to the distinction unless they care to.
   If you do not want to distinguish between (for example) @key{TAB} and
 @kbd{C-i}, make just one binding, for the @acronym{ASCII} character @key{TAB}
 (octal code 011).  If you do want to distinguish, make one binding for
-this @acronym{ASCII} character, and another for the ``function key'' @code{tab}.
+this @acronym{ASCII} character, and another for the function key @code{tab}.
 
   With an ordinary @acronym{ASCII} terminal, there is no way to distinguish
 between @key{TAB} and @kbd{C-i} (and likewise for other such pairs),
@@ -1937,7 +1938,7 @@ single click definition has run when the first click was received.
   This constrains what you can do with double clicks, but user interface
 designers say that this constraint ought to be followed in any case.  A
 double click should do something similar to the single click, only
-``more so''.  The command for the double-click event should perform the
+more so.  The command for the double-click event should perform the
 extra work for the double click.
 
   If a double-click event has no binding, it changes to the
@@ -1984,8 +1985,8 @@ or @samp{triple-}, which always precede @samp{drag-} or @samp{down-}.
 
   A frame includes areas that don't show text from the buffer, such as
 the mode line and the scroll bar.  You can tell whether a mouse button
-comes from a special area of the screen by means of dummy ``prefix
-keys''.  For example, if you click the mouse in the mode line, you get
+comes from a special area of the screen by means of dummy prefix
+keys.  For example, if you click the mouse in the mode line, you get
 the prefix key @code{mode-line} before the ordinary mouse-button symbol.
 Thus, here is how to define the command for clicking the first button in
 a mode line to run @code{scroll-up-command}:
index 4adb698450ba02947a96e126b812a26725f03551..b00c974ef2ceb94577cef16c278377edf68acab1 100644 (file)
@@ -14,7 +14,7 @@ optionally some of its subdirectories as well.  You can use the normal
 Emacs commands to move around in this buffer, and special Dired
 commands to operate on the listed files.
 
-    The Dired buffer is ``read-only'', and inserting text in it is not
+    The Dired buffer is read-only, and inserting text in it is not
 allowed.  Ordinary printing characters such as @kbd{d} and @kbd{x} are
 redefined for special Dired commands.  Some Dired commands @dfn{mark}
 or @dfn{flag} the @dfn{current file} (that is, the file on the current
@@ -924,7 +924,7 @@ from the name of the old file.
   The four regular-expression substitution commands effectively
 perform a search-and-replace on the selected file names.  They read
 two arguments: a regular expression @var{from}, and a substitution
-pattern @var{to}; they match each ``old'' file name against
+pattern @var{to}; they match each old file name against
 @var{from}, and then replace the matching part with @var{to}.  You can
 use @samp{\&} and @samp{\@var{digit}} in @var{to} to refer to all or
 part of what the pattern matched in the old file name, as in
@@ -1262,7 +1262,7 @@ and erases all flags and marks.
 @findex wdired-change-to-wdired-mode
   Wdired is a special mode that allows you to perform file operations
 by editing the Dired buffer directly (the ``W'' in ``Wdired'' stands
-for ``writable''.)  To enter Wdired mode, type @kbd{C-x C-q}
+for ``writable'').  To enter Wdired mode, type @kbd{C-x C-q}
 (@code{dired-toggle-read-only}) while in a Dired buffer.
 Alternatively, use the @samp{Immediate / Edit File Names} menu item.
 
@@ -1307,7 +1307,7 @@ buffer containing image-dired, corresponding to the marked files.
   You can also enter Image-Dired directly by typing @kbd{M-x
 image-dired}.  This prompts for a directory; specify one that has
 image files.  This creates thumbnails for all the images in that
-directory, and displays them all in the ``thumbnail buffer''.  This
+directory, and displays them all in the thumbnail buffer.  This
 takes a long time if the directory contains many image files, and it
 asks for confirmation if the number of image files exceeds
 @code{image-dired-show-all-from-dir-max-files}.
@@ -1348,9 +1348,9 @@ with a certain tag, you can use @kbd{C-t d} to view them.
 
   You can also tag a file directly from the thumbnail buffer by typing
 @kbd{t t} and you can remove a tag by typing @kbd{t r}.  There is also
-a special ``tag'' called ``comment'' for each file (it is not a tag in
+a special tag called ``comment'' for each file (it is not a tag in
 the exact same sense as the other tags, it is handled slightly
-different).  That is used to enter a comment or description about the
+differently).  That is used to enter a comment or description about the
 image.  You comment a file from the thumbnail buffer by typing
 @kbd{c}.  You will be prompted for a comment.  Type @kbd{C-t c} to add
 a comment from Dired (@code{image-dired-dired-comment-files}).
@@ -1375,7 +1375,7 @@ the directory already exists.
 @findex dired-do-isearch
 @findex dired-do-isearch-regexp
   The command @kbd{M-s a C-s} (@code{dired-do-isearch}) begins a
-``multi-file'' incremental search on the marked files.  If a search
+multi-file incremental search on the marked files.  If a search
 fails at the end of a file, typing @kbd{C-s} advances to the next
 marked file and repeats the search; at the end of the last marked
 file, the search wraps around to the first marked file.  The command
@@ -1425,21 +1425,21 @@ will operate on the selected files.
 @findex dired-compare-directories
   The command @kbd{M-x dired-compare-directories} is used to compare
 the current Dired buffer with another directory.  It marks all the files
-that are ``different'' between the two directories.  It puts these marks
+that differ between the two directories.  It puts these marks
 in all Dired buffers where these files are listed, which of course includes
 the current buffer.
 
   The default comparison method (used if you type @key{RET} at the
-prompt) is to compare just the file names---each file name that does
-not appear in the other directory is ``different''.  You can specify
+prompt) is to compare just the file names---file names differ if
+they do not appear in the other directory.  You can specify
 more stringent comparisons by entering a Lisp expression, which can
 refer to the variables @code{size1} and @code{size2}, the respective
 file sizes; @code{mtime1} and @code{mtime2}, the last modification
 times in seconds, as floating point numbers; and @code{fa1} and
 @code{fa2}, the respective file attribute lists (as returned by the
 function @code{file-attributes}).  This expression is evaluated for
-each pair of like-named files, and if the expression's value is
-non-@code{nil}, those files are considered ``different''.
+each pair of like-named files, and files differ if the expression's
+value is non-@code{nil}.
 
   For instance, the sequence @code{M-x dired-compare-directories
 @key{RET} (> mtime1 mtime2) @key{RET}} marks files newer in this
@@ -1448,7 +1448,7 @@ directory than in this one.  It also marks files with no counterpart,
 in both directories, as always.
 
 @cindex drag and drop, Dired
-  On the X Window System, Emacs supports the ``drag and drop''
+  On the X Window System, Emacs supports the drag and drop
 protocol.  You can drag a file object from another program, and drop
 it onto a Dired buffer; this either moves, copies, or creates a link
 to the file in that directory.  Precisely which action is taken is
index 601a40bd176d505e88d7e021126b787d3903cb6a..a722ec4841b06259e74792e2cc22232d57fca7bf 100644 (file)
@@ -1,3 +1,4 @@
+@c -*- coding: utf-8 -*-
 @c This is part of the Emacs manual.
 @c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2015 Free Software
 @c Foundation, Inc.
@@ -47,18 +48,18 @@ the text is displayed.
 displays only a portion of it.  @dfn{Scrolling} commands change which
 portion of the buffer is displayed.
 
-  Scrolling ``forward'' or ``up'' advances the portion of the buffer
+  Scrolling forward or up advances the portion of the buffer
 displayed in the window; equivalently, it moves the buffer text
-upwards relative to the window.  Scrolling ``backward'' or ``down''
+upwards relative to the window.  Scrolling backward or down
 displays an earlier portion of the buffer, and moves the text
 downwards relative to the window.
 
-  In Emacs, scrolling ``up'' or ``down'' refers to the direction that
+  In Emacs, scrolling up or down refers to the direction that
 the text moves in the window, @emph{not} the direction that the window
 moves relative to the text.  This terminology was adopted by Emacs
 before the modern meaning of ``scrolling up'' and ``scrolling down''
 became widespread.  Hence, the strange result that @key{PageDown}
-scrolls ``up'' in the Emacs sense.
+scrolls up in the Emacs sense.
 
   The portion of a buffer displayed in a window always contains point.
 If you move point past the bottom or top of the window, scrolling
@@ -468,7 +469,7 @@ and visits it with View mode enabled.
 @cindex synchronizing windows
 
   @dfn{Follow mode} is a minor mode that makes two windows, both
-showing the same buffer, scroll as a single tall ``virtual window''.
+showing the same buffer, scroll as a single tall virtual window.
 To use Follow mode, go to a frame with just one window, split it into
 two side-by-side windows using @kbd{C-x 3}, and then type @kbd{M-x
 follow-mode}.  From then on, you can edit the buffer in either of the
@@ -637,7 +638,7 @@ This face is used to highlight the current Isearch match
 This face is used to highlight the current Query Replace match
 (@pxref{Replace}).
 @item lazy-highlight
-This face is used to highlight ``lazy matches'' for Isearch and Query
+This face is used to highlight lazy matches for Isearch and Query
 Replace (matches other than the current one).
 @item region
 This face is used for displaying an active region (@pxref{Mark}).
@@ -654,7 +655,7 @@ Whitespace}).
 The face for displaying control characters and escape sequences
 (@pxref{Text Display}).
 @item nobreak-space
-The face for displaying ``no-break'' space characters (@pxref{Text
+The face for displaying no-break space characters (@pxref{Text
 Display}).
 @end table
 
@@ -667,7 +668,7 @@ frame:
 @cindex faces for mode lines
 This face is used for the mode line of the currently selected window,
 and for menu bars when toolkit menus are not used.  By default, it's
-drawn with shadows for a ``raised'' effect on graphical displays, and
+drawn with shadows for a raised effect on graphical displays, and
 drawn as the inverse of the default face on non-windowed terminals.
 @item mode-line-inactive
 @cindex mode-line-inactive face
@@ -854,7 +855,6 @@ and the default level otherwise, use the value
 '((c-mode . 1) (c++-mode . 1)))
 @end example
 
-@vindex font-lock-beginning-of-syntax-function
 @cindex incorrect fontification
 @cindex parenthesis in column zero and fontification
 @cindex brace in column zero and fontification
@@ -867,19 +867,6 @@ any string or comment.  Therefore, you should avoid placing an
 open-parenthesis or open-brace in the leftmost column, if it is inside
 a string or comment.  @xref{Left Margin Paren}, for details.
 
-@cindex slow display during scrolling
-  The variable @code{font-lock-beginning-of-syntax-function}, which is
-always buffer-local, specifies how Font Lock mode can find a position
-guaranteed to be outside any comment or string.  In modes which use
-the leftmost column parenthesis convention, the default value of the
-variable is @code{beginning-of-defun}---that tells Font Lock mode to
-use the convention.  If you set this variable to @code{nil}, Font Lock
-no longer relies on the convention.  This avoids incorrect results,
-but the price is that, in some cases, fontification for a changed text
-must rescan buffer text from the beginning of the buffer.  This can
-considerably slow down redisplay while scrolling, particularly if you
-are close to the end of a large buffer.
-
 @findex font-lock-add-keywords
   Font Lock highlighting patterns already exist for most modes, but
 you may want to fontify additional patterns.  You can use the function
@@ -1073,16 +1060,16 @@ variable @code{fringe-mode}.
   The most common use of the fringes is to indicate a continuation
 line (@pxref{Continuation Lines}).  When one line of text is split
 into multiple screen lines, the left fringe shows a curving arrow for
-each screen line except the first, indicating that ``this is not the
-real beginning''.  The right fringe shows a curving arrow for each
-screen line except the last, indicating that ``this is not the real
-end''.  If the line's direction is right-to-left (@pxref{Bidirectional
+each screen line except the first, indicating that this is not the
+real beginning.  The right fringe shows a curving arrow for each
+screen line except the last, indicating that this is not the real
+end.  If the line's direction is right-to-left (@pxref{Bidirectional
 Editing}), the meanings of the curving arrows in the fringes are
 swapped.
 
   The fringes indicate line truncation (@pxref{Line Truncation}) with
-short horizontal arrows meaning ``there's more text on this line which
-is scrolled horizontally out of view''.  Clicking the mouse on one of
+short horizontal arrows meaning there's more text on this line which
+is scrolled horizontally out of view.  Clicking the mouse on one of
 the arrows scrolls the display horizontally in the direction of the
 arrow.
 
@@ -1145,8 +1132,8 @@ setting the buffer-local variable @code{show-trailing-whitespace} to
 @code{trailing-whitespace}.
 
   This feature does not apply when point is at the end of the line
-containing the whitespace.  Strictly speaking, that is ``trailing
-whitespace'' nonetheless, but displaying it specially in that case
+containing the whitespace.  Strictly speaking, that is trailing
+whitespace nonetheless, but displaying it specially in that case
 looks ugly while you are typing in new text.  In this special case,
 the location of point is enough to show you that the spaces are
 present.
@@ -1178,7 +1165,7 @@ indicate-empty-lines t)}.
 @findex whitespace-mode
 @vindex whitespace-style
   Whitespace mode is a buffer-local minor mode that lets you
-``visualize'' many kinds of whitespace in the buffer, by either
+visualize many kinds of whitespace in the buffer, by either
 drawing the whitespace characters with a special face or displaying
 them as special glyphs.  To toggle this mode, type @kbd{M-x
 whitespace-mode}.  The kinds of whitespace visualized are determined
@@ -1358,7 +1345,7 @@ the mail indicator prominent.  Use @code{display-time-mail-file} to
 specify the mail file to check, or set
 @code{display-time-mail-directory} to specify the directory to check
 for incoming mail (any nonempty regular file in the directory is
-considered as ``newly arrived mail'').
+considered to be newly arrived mail).
 
 @cindex battery status (on mode line)
 @findex display-battery-mode
@@ -1480,6 +1467,15 @@ customizing the variable @code{glyphless-char-display-control}.
 @xref{Glyphless Chars,, Glyphless Character Display, elisp, The Emacs
 Lisp Reference Manual}, for details.
 
+@cindex curly quotes
+@cindex curved quotes
+@cindex escape-glyph face
+  If the curved quotes @samp{‘}, @samp{’}, @samp{“}, and @samp{”} are
+known to look just like @acronym{ASCII} characters, they are shown
+with the @code{escape-glyph} face.  Curved quotes that cannot be
+displayed are shown as their @acronym{ASCII} approximations @samp{`},
+@samp{'}, and @samp{"} with the @code{escape-glyph} face.
+
 @node Cursor Display
 @section Displaying the Cursor
 @cindex text cursor
@@ -1487,8 +1483,8 @@ Lisp Reference Manual}, for details.
 @vindex visible-cursor
   On a text terminal, the cursor's appearance is controlled by the
 terminal, largely out of the control of Emacs.  Some terminals offer
-two different cursors: a ``visible'' static cursor, and a ``very
-visible'' blinking cursor.  By default, Emacs uses the very visible
+two different cursors: a visible static cursor, and a very
+visible blinking cursor.  By default, Emacs uses the very visible
 cursor, and switches to it when you start or resume Emacs.  If the
 variable @code{visible-cursor} is @code{nil} when Emacs starts or
 resumes, it uses the normal cursor.
@@ -1528,7 +1524,7 @@ altogether, change the variable @code{blink-cursor-mode} to @code{nil}
 
 @noindent
 to your init file.  Alternatively, you can change how the cursor
-looks when it ``blinks off'' by customizing the list variable
+looks when it blinks off by customizing the list variable
 @code{blink-cursor-alist}.  Each element in the list should have the
 form @code{(@var{on-type} . @var{off-type})}; this means that if the
 cursor is displayed as @var{on-type} when it blinks on (where
@@ -1537,7 +1533,7 @@ displayed as @var{off-type} when it blinks off.
 
 @vindex x-stretch-cursor
 @cindex wide block cursor
-  Some characters, such as tab characters, are ``extra wide''.  When
+  Some characters, such as tab characters, are extra wide.  When
 the cursor is positioned over such a character, it is normally drawn
 with the default character width.  You can make the cursor stretch to
 cover wide characters, by changing the variable
@@ -1662,14 +1658,14 @@ there is something to echo.  @xref{Echo Area}.
   On graphical displays, Emacs displays the mouse pointer as an
 hourglass if Emacs is busy.  To disable this feature, set the variable
 @code{display-hourglass} to @code{nil}.  The variable
-@code{hourglass-delay} determines the number of seconds of ``busy
-time'' before the hourglass is shown; the default is 1.
+@code{hourglass-delay} determines the number of seconds of busy
+time before the hourglass is shown; the default is 1.
 
 @vindex make-pointer-invisible
   If the mouse pointer lies inside an Emacs frame, Emacs makes it
 invisible each time you type a character to insert text, to prevent it
 from obscuring the text.  (To be precise, the hiding occurs when you
-type a ``self-inserting'' character.  @xref{Inserting Text}.)  Moving
+type a self-inserting character.  @xref{Inserting Text}.)  Moving
 the mouse pointer makes it visible again.  To disable this feature,
 set the variable @code{make-pointer-invisible} to @code{nil}.
 
index ec82a0710014a88fc1b0d85576e67b26111c55a8..27bb77d5cacc2358c66b8527b08cca2e3642e11c 100644 (file)
@@ -160,7 +160,7 @@ Fundamental Editing Commands
 * Help::                Commands for asking Emacs about its commands.
 
 Important Text-Changing Commands
-* Mark::                The mark: how to delimit a ``region'' of text.
+* Mark::                The mark: how to delimit a region of text.
 * Killing::             Killing (cutting) and yanking (copying) text.
 * Registers::           Saving a text string or a location in the buffer.
 * Display::             Controlling what text is displayed.
@@ -172,7 +172,7 @@ Major Structures of Emacs
 * Files::               All about handling files.
 * Buffers::             Multiple buffers; editing several files at once.
 * Windows::             Viewing multiple pieces of text in one frame.
-* Frames::              Using multiple ``windows'' on your display.
+* Frames::              Using multiple windows on your display.
 * International::       Using non-@acronym{ASCII} character sets.
 
 Advanced Features
@@ -200,7 +200,7 @@ Advanced Features
 @end ifnottex
 * Editing Binary Files::  Editing binary files with Hexl mode.
 * Saving Emacs Sessions:: Saving Emacs state from one session to the next.
-* Recursive Edit::      Performing edits while ``within another command''.
+* Recursive Edit::      Performing edits while within another command.
 * Hyperlinking::        Following links in buffers.
 * Amusements::          Various games and hacks.
 * Packages::            Installing additional features.
@@ -301,7 +301,7 @@ Help
 * Language Help::       Help relating to international language support.
 * Misc Help::           Other help commands.
 * Help Files::          Commands to display auxiliary help files.
-* Help Echo::           Help on active text and tooltips (``balloon help'').
+* Help Echo::           Help on active text and tooltips.
 
 The Mark and the Region
 
@@ -337,7 +337,7 @@ Yanking
 * Earlier Kills::       Yanking something killed some time ago.
 * Appending Kills::     Several kills in a row all yank together.
 
-``Cut and Paste'' Operations on Graphical Displays
+Cut and Paste Operations on Graphical Displays
 
 * Clipboard::           How Emacs uses the system clipboard.
 * Primary Selection::   The temporarily selected text selection.
@@ -390,7 +390,7 @@ Searching and Replacement
 * Symbol Search::          Search for a source code symbol.
 * Regexp Search::          Search for match for a regexp.
 * Regexps::                Syntax of regular expressions.
-* Regexp Backslash::       Regular expression constructs starting with '\'.
+* Regexp Backslash::       Regular expression constructs starting with `\'.
 * Regexp Example::         A complex regular expression explained.
 * Search Case::            To ignore case while searching, or not.
 * Replace::                Search, and replace some or all matches.
@@ -464,7 +464,7 @@ Saving Files
 * Customize Save::      Customizing the saving of files.
 * Interlocking::        How Emacs protects against simultaneous editing
                           of one file by two users.
-* File Shadowing::      Copying files to ``shadows'' automatically.
+* File Shadowing::      Copying files to shadows automatically.
 * Time Stamps::         Emacs can update time stamps on saved files.
 
 Backup Files
@@ -597,7 +597,7 @@ Commands for Human Languages
 * TeX Mode::            Editing TeX and LaTeX files.
 * HTML Mode::           Editing HTML and SGML files.
 * Nroff Mode::          Editing input to the nroff formatter.
-* Enriched Text::       Editing text ``enriched'' with fonts, colors, etc.
+* Enriched Text::       Editing text enriched with fonts, colors, etc.
 * Text Based Tables::   Commands for editing text-based tables.
 * Two-Column::          Splitting text columns into separate windows.
 
@@ -638,7 +638,7 @@ Enriched Text
 * Enriched Indentation::    Changing the left and right margins.
 * Enriched Justification::  Centering, setting text flush with the
                               left or right margin, etc.
-* Enriched Properties::     The ``special'' text properties submenu.
+* Enriched Properties::     The ``Special text properties'' submenu.
 
 @c The automatic texinfo menu update inserts some duplicate items here
 @c (faces, colors, indentation, justification, properties), because
@@ -895,7 +895,7 @@ Editing Pictures
 
 * Basic Picture::         Basic concepts and simple commands of Picture Mode.
 * Insert in Picture::     Controlling direction of cursor motion
-                            after ``self-inserting'' characters.
+                            after self-inserting characters.
 * Tabs in Picture::       Various features for tab stops and indentation.
 * Rectangles in Picture:: Clearing and superimposing rectangles.
 @end ifnottex
@@ -1092,7 +1092,7 @@ Customization
                           to decide what to do; by setting variables,
                           you can control their functioning.
 * Key Bindings::        The keymaps say what command each key runs.
-                          By changing them, you can ``redefine'' keys.
+                          By changing them, you can redefine keys.
 * Init File::           How to write common customizations in the
                           initialization file.
 
index 25bbcaae396f95ea376d867c5a0dc6aa00b74f79..836b27c50024942c55ff98957dc9d696c138ee05 100644 (file)
@@ -151,7 +151,7 @@ input.  The mode line indicates Auto Advance mode with @samp{A}.
   If Skip Prefers mode is in effect, the @kbd{n} and @kbd{p} commands
 skip over differences in states ``prefer-A'' and ``prefer-B''
 (@pxref{State of Difference}).  Thus you see only differences for
-which neither version is presumed ``correct''.  The mode line
+which neither version is presumed correct.  The mode line
 indicates Skip Prefers mode with @samp{S}.  This mode is only relevant
 when there is an ancestor.
 
@@ -183,7 +183,7 @@ produces this state; the mode line indicates it with @samp{B}.
 The difference is showing the A or the B state by default, because you
 haven't made a choice.  All differences start in the default-A state
 (and thus the merge buffer is a copy of the A buffer), except those for
-which one alternative is ``preferred'' (see below).
+which one alternative is preferred (see below).
 
 When you select a difference, its state changes from default-A or
 default-B to plain A or B@.  Thus, the selected difference never has
index fc9ea38fdcd89edc319ccee9cd1a5014bb4d9289..8b8a91896266945399bcecd6d2ed9080cbc69403 100644 (file)
@@ -100,7 +100,7 @@ display them initially.
 Kill Emacs (@code{save-buffers-kill-terminal}).
 @item C-z
 On a text terminal, suspend Emacs; on a graphical display,
-``minimize'' the selected frame (@code{suspend-emacs}).
+iconify (or ``minimize'') the selected frame (@code{suspend-emacs}).
 @end table
 
 @kindex C-x C-c
@@ -116,7 +116,7 @@ subprocesses are still running, since killing Emacs will also kill the
 subprocesses (@pxref{Shell}).
 
   @kbd{C-x C-c} behaves specially if you are using Emacs as a server.
-If you type it from a ``client frame'', it closes the client
+If you type it from a client frame, it closes the client
 connection.  @xref{Emacs Server}.
 
   Emacs can, optionally, record certain session information when you
index 5985d8b840e36517fb544888ee2af91f7e0690f5..5752d02fe85c7dec54bc5833d5b605a77a9bca11 100644 (file)
@@ -55,8 +55,8 @@ the file name, using the minibuffer (@pxref{Minibuffer File}).
 history commands (@pxref{Minibuffer}).  Note that file name completion
 ignores file names whose extensions appear in the variable
 @code{completion-ignored-extensions} (@pxref{Completion Options}).
-Note also that most commands use ``permissive completion with
-confirmation'' for reading file names: you are allowed to submit a
+Note also that most commands use permissive completion with
+confirmation for reading file names: you are allowed to submit a
 nonexistent file name, but if you type @key{RET} immediately after
 completing up to a nonexistent file name, Emacs prints
 @samp{[Confirm]} and you must type a second @key{RET} to confirm.
@@ -96,9 +96,9 @@ minibuffer, with a directory omitted, specifies the file
 @file{/u/rms/gnu/new/foo}.
 
   When typing a file name into the minibuffer, you can make use of a
-couple of shortcuts: a double slash is interpreted as ``ignore
-everything before the second slash in the pair'', and @samp{~/} is
-interpreted as your home directory.  @xref{Minibuffer File}.
+couple of shortcuts: a double slash ignores everything before the
+second slash in the pair, and @samp{~/} is your home directory.
+@xref{Minibuffer File}.
 
 @cindex environment variables in file names
 @cindex expansion of environment variables
@@ -232,7 +232,7 @@ after the directory part; this is convenient if you made a slight
 error in typing the name.
 
 @vindex find-file-run-dired
-  If you ``visit'' a file that is actually a directory, Emacs invokes
+  If you visit a file that is actually a directory, Emacs invokes
 Dired, the Emacs directory browser.  @xref{Dired}.  You can disable
 this behavior by setting the variable @code{find-file-run-dired} to
 @code{nil}; in that case, it is an error to try to visit a directory.
@@ -274,13 +274,13 @@ new frame, or selects any existing frame showing the specified file.
   On graphical displays, there are two additional methods for visiting
 files.  Firstly, when Emacs is built with a suitable GUI toolkit,
 commands invoked with the mouse (by clicking on the menu bar or tool
-bar) use the toolkit's standard ``File Selection'' dialog instead of
+bar) use the toolkit's standard file selection dialog instead of
 prompting for the file name in the minibuffer.  On GNU/Linux and Unix
 platforms, Emacs does this when built with GTK, LessTif, and Motif
 toolkits; on MS-Windows and Mac, the GUI version does that by default.
 For information on how to customize this, see @ref{Dialog Boxes}.
 
-  Secondly, Emacs supports ``drag and drop'': dropping a file into an
+  Secondly, Emacs supports drag and drop: dropping a file into an
 ordinary Emacs window visits the file using that window.  As an
 exception, dropping a file into a window displaying a Dired buffer
 moves or copies the file into the displayed directory.  For details,
@@ -288,7 +288,7 @@ see @ref{Drag and Drop}, and @ref{Misc Dired Features}.
 
   On text-mode terminals and on graphical displays when Emacs was
 built without a GUI toolkit, you can visit files via the menu-bar
-``File'' menu, which has a ``Visit New File'' item.
+@samp{File} menu, which has a @samp{Visit New File} item.
 
   Each time you visit a file, Emacs automatically scans its contents
 to detect what character encoding and end-of-line convention it uses,
@@ -443,7 +443,7 @@ minibuffer.  Then it marks the buffer as visiting that file name, and
 changes the buffer name correspondingly.  @code{set-visited-file-name}
 does not save the buffer in the newly visited file; it just alters the
 records inside Emacs in case you do save later.  It also marks the
-buffer as ``modified'' so that @kbd{C-x C-s} in that buffer
+buffer as modified so that @kbd{C-x C-s} in that buffer
 @emph{will} save.
 
 @kindex C-x C-w
@@ -902,7 +902,7 @@ way that, if the file was edited only slightly, you will be at
 approximately the same part of the text as before.  But if you have
 made major changes, point may end up in a totally different location.
 
-  Reverting marks the buffer as ``not modified''.  It also clears the
+  Reverting marks the buffer as not modified.  It also clears the
 buffer's undo history (@pxref{Undo}).  Thus, the reversion cannot be
 undone---if you change your mind yet again, you can't use the undo
 commands to bring the reverted changes back.
@@ -1167,7 +1167,7 @@ implies the effect of @code{find-file-existing-other-name}.
 @cindex directory name abbreviation
 @vindex directory-abbrev-alist
   Sometimes, a directory is ordinarily accessed through a symbolic
-link, and you may want Emacs to preferentially show its ``linked''
+link, and you may want Emacs to preferentially show its linked
 name.  To do this, customize @code{directory-abbrev-alist}.  Each
 element in this list should have the form @code{(@var{from}
 . @var{to})}, which means to replace @var{from} with @var{to} whenever
@@ -1325,7 +1325,7 @@ prefix argument turns that off.
   You can use @kbd{M-x smerge-mode} to turn on Smerge mode, a minor
 mode for editing output from the @command{diff3} program.  This is
 typically the result of a failed merge from a version control system
-``update'' outside VC, due to conflicting changes to a file.  Smerge
+update outside VC, due to conflicting changes to a file.  Smerge
 mode provides commands to resolve conflicts by selecting specific
 changes.
 
@@ -1364,10 +1364,10 @@ contents of the hunk.
 read-only, you need to make it writable first.  @xref{Misc Buffer}.)
 Whenever you change a hunk, Diff mode attempts to automatically
 correct the line numbers in the hunk headers, to ensure that the patch
-remains ``correct''.  To disable automatic line number correction,
+remains correct.  To disable automatic line number correction,
 change the variable @code{diff-update-on-the-fly} to @code{nil}.
 
-  Diff mode treats each hunk as an ``error message'', similar to
+  Diff mode treats each hunk as an error message, similar to
 Compilation mode.  Thus, you can use commands such as @kbd{C-x `} to
 visit the corresponding source locations.  @xref{Compilation Mode}.
 
@@ -1585,7 +1585,7 @@ rename-file}.  @xref{VC Delete/Rename}.
 @cindex hard links (creation)
   @kbd{M-x add-name-to-file} adds an additional name to an existing
 file without removing its old name.  The new name is created as a
-``hard link'' to the existing file.  The new name must belong on the
+hard link to the existing file.  The new name must belong on the
 same file system that the file is on.  On MS-Windows, this command
 works only if the file resides in an NTFS file system.  On MS-DOS, it
 works by copying the file.
@@ -1612,7 +1612,7 @@ mark (@pxref{Mark Ring}).
 
 @findex insert-file-literally
   @kbd{M-x insert-file-literally} is like @kbd{M-x insert-file},
-except the file is inserted ``literally'': it is treated as a sequence
+except the file is inserted literally: it is treated as a sequence
 of @acronym{ASCII} characters with no special encoding or conversion,
 similar to the @kbd{M-x find-file-literally} command
 (@pxref{Visiting}).
@@ -2008,7 +2008,7 @@ enable ImageMagick for all possible image types, change
 @code{imagemagick-types-inhibit} lists the image types which should
 never be rendered using ImageMagick, regardless of the value of
 @code{imagemagick-enabled-types} (the default list includes types like
-@code{C} and @code{HTML}, which ImageMagick can render as an ``image''
+@code{C} and @code{HTML}, which ImageMagick can render as an image
 but Emacs should not).  To disable ImageMagick entirely, change
 @code{imagemagick-types-inhibit} to @code{t}.
 
@@ -2055,7 +2055,7 @@ files in a fileset, and @kbd{M-x filesets-close} to close them.  Use
 a fileset.  These commands are also available from the @samp{Filesets}
 menu, where each existing fileset is represented by a submenu.
 
-   @xref{Version Control}, for a different concept of ``filesets'':
+   @xref{Version Control}, for a different concept of filesets:
 groups of files bundled together for version control operations.
 Filesets of that type are unnamed, and do not persist across Emacs
 sessions.
index 953b22f7d544c41a5dff13dd3625c87ece96ca6e..993f0dce1cca635f6ad218ae2df8c8e92f0bdf28 100644 (file)
@@ -286,7 +286,7 @@ messages.  @xref{Sending Mail}.
 
   When one of these commands encounters what appears to be an
 incorrect word, it asks you what to do.  It usually displays a list of
-numbered ``near-misses''---words that are close to the incorrect word.
+numbered @dfn{near-misses}---words that are close to the incorrect word.
 Then you must type a single-character response.  Here are the valid
 responses:
 
@@ -331,7 +331,7 @@ file.
 
 @item l @var{word} @key{RET}
 Look in the dictionary for words that match @var{word}.  These words
-become the new list of ``near-misses''; you can select one of them as
+become the new list of near-misses; you can select one of them as
 the replacement by typing a digit.  You can use @samp{*} in @var{word} as a
 wildcard.
 
index 155e998180c56c67c11c17b00249716491abd3ca..870bfcd2169d9d0fc8ad47e88096a675895bb42f 100644 (file)
@@ -13,9 +13,9 @@
 @cindex Fortran 77 and Fortran 90, 95, 2003, 2008
 @findex f90-mode
 @findex fortran-mode
-  Fortran mode is meant for editing ``fixed form'' (and also ``tab
-format'') source code (normally Fortran 77).  For editing more modern
-``free form'' source code (Fortran 90, 95, 2003, 2008), use F90 mode
+  Fortran mode is meant for editing fixed form (and also tab
+format) source code (normally Fortran 77).  For editing more modern
+free-form source code (Fortran 90, 95, 2003, 2008), use F90 mode
 (@code{f90-mode}).  Emacs normally uses Fortran mode for files with
 extension @samp{.f}, @samp{.F} or @samp{.for}, and F90 mode for the
 extensions @samp{.f90}, @samp{.f95}, @samp{.f03} and @samp{.f08}.
@@ -70,7 +70,7 @@ command runs the hook @code{fortran-mode-hook}.
 @subsection Motion Commands
 
   In addition to the normal commands for moving by and operating on
-``defuns'' (Fortran subprograms---functions and subroutines, as well
+defuns (Fortran subprograms---functions and subroutines, as well
 as modules for F90 mode, using the commands @code{fortran-end-of-subprogram}
 and @code{fortran-beginning-of-subprogram}), Fortran mode provides
 special commands to move by statements and other program units.
@@ -207,8 +207,8 @@ the Fortran standard counts from 1.)  The variable
 @code{fortran-continuation-string} specifies what character to put in
 column 5.  A line that starts with a tab character followed by any digit
 except @samp{0} is also a continuation line.  We call this style of
-continuation @dfn{tab format}.  (Fortran 90 introduced ``free form'',
-with another style of continuation lines).
+continuation @dfn{tab format}.  (Fortran 90 introduced free-form
+continuation lines.)
 
 @vindex indent-tabs-mode @r{(Fortran mode)}
 @vindex fortran-analyze-depth
@@ -499,7 +499,7 @@ will confuse font-lock.)
 
 @table @kbd
 @item C-c C-r
-Display a ``column ruler'' momentarily above the current line
+Display a column ruler momentarily above the current line
 (@code{fortran-column-ruler}).
 @item C-c C-w
 Split the current window horizontally temporarily so that it is
index 2ae7300e897e6e1e0ee6a3af2742d77ee5245283..a171db7bb033ba350c6fd349f4608cf01ee06cbb 100644 (file)
@@ -7,7 +7,7 @@
 @cindex frames
 
   When Emacs is started on a graphical display, e.g., on the X Window
-System, it occupies a graphical system-level ``window''.  In this
+System, it occupies a graphical system-level display region.  In this
 manual, we call this a @dfn{frame}, reserving the word ``window'' for
 the part of the frame used for displaying a buffer.  A frame initially
 contains one window, but it can be subdivided into multiple windows
@@ -28,7 +28,7 @@ displays (@pxref{Exiting}).  To close just the selected frame, type
   This chapter describes Emacs features specific to graphical displays
 (particularly mouse commands), and features for managing multiple
 frames.  On text terminals, many of these features are unavailable.
-However, it is still possible to create multiple ``frames'' on text
+However, it is still possible to create multiple frames on text
 terminals; such frames are displayed one at a time, filling the entire
 terminal screen (@pxref{Non-Window Terminals}).  It is also possible
 to use the mouse on some text terminals (@pxref{Text-Only Mouse}, for
@@ -110,7 +110,7 @@ the window and sets the cursor position.
 
 @cindex mouse, dragging
 @findex mouse-set-region
-  Holding down @kbd{Mouse-1} and ``dragging'' the mouse over a stretch
+  Holding down @kbd{Mouse-1} and dragging the mouse over a stretch
 of text activates the region around that text
 (@code{mouse-set-region}), placing the mark where you started holding
 down the mouse button, and point where you release it (@pxref{Mark}).
@@ -217,7 +217,7 @@ also copied to the kill ring.
 @item Double-Mouse-1
 Select the text around the word which you click on.
 
-Double-clicking on a character with ``symbol'' syntax (such as
+Double-clicking on a character with symbol syntax (such as
 underscore, in C mode) selects the symbol surrounding that character.
 Double-clicking on a character with open- or close-parenthesis syntax
 selects the parenthetical grouping which that character starts or
@@ -388,7 +388,7 @@ boundary to the left or right.
   The prefix key @kbd{C-x 5} is analogous to @kbd{C-x 4}.  Whereas
 each @kbd{C-x 4} command pops up a buffer in a different window in the
 selected frame (@pxref{Pop Up Window}), the @kbd{C-x 5} commands use a
-different frame.  If an existing visible or iconified (``minimized'')
+different frame.  If an existing visible or iconified (a.k.a.@: ``minimized'')
 frame already displays the requested buffer, that frame is raised and
 deiconified (``un-minimized''); otherwise, a new frame is created on
 the current display terminal.
@@ -444,7 +444,7 @@ error if there is only one frame.
 @item C-z
 @kindex C-z @r{(X windows)}
 @findex suspend-frame
-Minimize (or ``iconify'') the selected Emacs frame
+Minimize (or iconify) the selected Emacs frame
 (@code{suspend-frame}).  @xref{Exiting}.
 
 @item C-x 5 o
@@ -467,8 +467,8 @@ maximized, it fills the screen.
 @item <F11>
 @kindex <F11>
 @findex toggle-frame-fullscreen
-Toggle fullscreen mode for the current frame.  (The difference
-between ``fullscreen'' and ``maximized'' is normally that the former
+Toggle full-screen mode for the current frame.  (The difference
+between full-screen and maximized is normally that the former
 hides window manager decorations, giving slightly more screen space to
 Emacs itself.)
 @end table
@@ -476,7 +476,7 @@ Emacs itself.)
 @vindex frame-resize-pixelwise
   Note that with some window managers you may have to customize the
 variable @code{frame-resize-pixelwise} to a non-@code{nil} value in
-order to make a frame truly ``maximized'' or ``fullscreen''.  This
+order to make a frame truly maximized or full-screen.  This
 variable, when set to a non-@code{nil} value, in general allows
 resizing frames at pixel resolution, rather than in integral multiples
 of lines and columns.
@@ -485,7 +485,7 @@ of lines and columns.
 frame.  However, it will refuse to delete the last frame in an Emacs
 session, to prevent you from losing the ability to interact with the
 Emacs session.  Note that when Emacs is run as a daemon (@pxref{Emacs
-Server}), there is always a ``virtual frame'' that remains after all
+Server}), there is always a virtual frame that remains after all
 the ordinary, interactive frames are deleted.  In this case, @kbd{C-x
 5 0} can delete the last interactive frame; you can use
 @command{emacsclient} to reconnect to the Emacs session.
@@ -565,7 +565,7 @@ command can be helpful.  It describes the character at point, and
 names the font that it's rendered in.
 
 @cindex fontconfig
-  On X, there are four different ways to express a ``font name''.  The
+  On X, there are four different ways to express a font name.  The
 first is to use a @dfn{Fontconfig pattern}.  Fontconfig patterns have
 the following form:
 
@@ -738,8 +738,8 @@ have.  Normally you should use @samp{iso8859} for @var{registry} and
 @samp{1} for @var{encoding}.
 @end table
 
-  The fourth and final method of specifying a font is to use a ``font
-nickname''.  Certain fonts have shorter nicknames, which you can use
+  The fourth and final method of specifying a font is to use a font
+nickname.  Certain fonts have shorter nicknames, which you can use
 instead of a normal font specification.  For instance, @samp{6x13} is
 equivalent to
 
@@ -1138,8 +1138,8 @@ suppressed all dialog boxes with the variable @code{use-dialog-box}.
 @vindex x-gtk-file-dialog-help-text
 @cindex hidden files, in GTK+ file chooser
 @cindex help text, in GTK+ file chooser
-  When Emacs is compiled with GTK+ support, it uses the GTK+ ``file
-chooser'' dialog.  Emacs adds an additional toggle button to this
+  When Emacs is compiled with GTK+ support, it uses the GTK+ file
+chooser dialog.  Emacs adds an additional toggle button to this
 dialog, which you can use to enable or disable the display of hidden
 files (files starting with a dot) in that dialog.  If you want this
 toggle to be activated by default, change the variable
index 9101f1c13313b00247c9830489e985b2509430db..e66cd79e74090b936d84e10cf3474aba5b2d9fec 100644 (file)
@@ -135,7 +135,7 @@ X}).  Borders are not the same as fringes (q.v.).
 @item Buffer
 The buffer is the basic editing unit; one buffer corresponds to one text
 being edited.  You normally have several buffers, but at any time you are
-editing only one, the ``current buffer'', though several can be visible
+editing only one, the current buffer, though several can be visible
 when you are using multiple windows or frames (q.v.).  Most buffers
 are visiting (q.v.@:) some file.  @xref{Buffers}.
 
@@ -265,7 +265,7 @@ normally (but see @ref{Glossary---Truncation}) takes up more than one
 screen line when displayed.  We say that the text line is continued, and all
 screen lines used for it after the first are called continuation
 lines.  @xref{Continuation Lines}.  A related Emacs feature is
-``filling'' (q.v.).
+filling (q.v.).
 
 @item Control Character
 A control character is a character that you type by holding down the
@@ -285,7 +285,7 @@ The particular form of copyleft used by the GNU project is called the
 GNU General Public License.  @xref{Copying}.
 
 @item @key{Ctrl}
-The @key{Ctrl} or ``control'' key is what you hold down
+The @key{Ctrl} or control key is what you hold down
 in order to enter a control character (q.v.).  @xref{Glossary---C-}.
 
 @item Current Buffer
@@ -367,8 +367,8 @@ Deletion means erasing text without copying it into the kill ring
 @anchor{Glossary---Deletion of Files}
 @item Deletion of Files
 Deleting a file means erasing it from the file system.
-(Note that some systems use the concept of a ``trash can'', or ``recycle
-bin'', to allow you to ``undelete'' files.)
+(Note that some systems use the concept of a trash can, or recycle
+bin, to allow you to undelete files.)
 @xref{Misc File Ops,Misc File Ops,Miscellaneous File Operations}.
 
 @item Deletion of Messages
@@ -1076,7 +1076,7 @@ command, using @kbd{C-g} (or @kbd{C-@key{BREAK}} on MS-DOS).  @xref{Quitting}.
 Quoting means depriving a character of its usual special significance.
 The most common kind of quoting in Emacs is with @kbd{C-q}.  What
 constitutes special significance depends on the context and on
-convention.  For example, an ``ordinary'' character as an Emacs command
+convention.  For example, an ordinary character as an Emacs command
 inserts itself; so in this context, a special character is any character
 that does not normally insert itself (such as @key{DEL}, for example),
 and quoting it makes it insert itself as if it were not special.  Not
@@ -1121,7 +1121,7 @@ Many commands operate on the text of the region.  @xref{Mark,Region}.
 @item Register
 Registers are named slots in which text, buffer positions, or
 rectangles can be saved for later use.  @xref{Registers}.  A related
-Emacs feature is ``bookmarks'' (q.v.).
+Emacs feature is bookmarks (q.v.).
 
 @anchor{Glossary---Regular Expression}
 @item Regular Expression
index 69842500e92596be76f762e6ead071ec1201c0bf..a9c63b9178592eae5039e8055aa23e72e8879fc5 100644 (file)
@@ -614,7 +614,7 @@ Project (@code{describe-gnu-project}).
 Display information about ordering printed copies of Emacs manuals
 (@code{view-order-manuals}).
 @item C-h C-n
-Display the ``news'' file, which lists the new features in this
+Display the news, which lists the new features in this
 version of Emacs (@code{view-emacs-news}).
 @item C-h C-o
 Display how to order or download the latest version of
@@ -634,7 +634,8 @@ Emacs (@code{describe-no-warranty}).
 
 @cindex tooltips
 @cindex balloon help
-  In Emacs, stretches of ``active text'' (text that does something
+@cindex active text
+  In Emacs, stretches of @dfn{active text} (text that does something
 special in response to mouse clicks or @key{RET}) often have
 associated help text.  This includes hyperlinks in Emacs buffers, as
 well as parts of the mode line.  On graphical displays, as well as
index b45839e664f691685f8bfaa325e64c28c18317c0..76dfa55211ddc37fd661448f00fbfb1afc26aa65 100644 (file)
@@ -35,7 +35,7 @@ mode and related major modes, @key{TAB} normally inserts some
 combination of space and tab characters to advance point to the next
 tab stop (@pxref{Tab Stops}).  For this purpose, the position of the
 first non-whitespace character on the preceding line is treated as an
-additional tab stop, so you can use @key{TAB} to ``align'' point with
+additional tab stop, so you can use @key{TAB} to align point with
 the preceding line.  If the region is active (@pxref{Using Region}),
 @key{TAB} acts specially: it indents each line in the region so that
 its first non-whitespace character is aligned with the preceding line.
@@ -98,7 +98,7 @@ argument, in which case do nothing.
 @kindex M-^
 @findex delete-indentation
 Merge the previous and the current line (@code{delete-indentation}).
-This ``joins'' the two lines cleanly, by replacing any indentation at
+This joins the two lines cleanly, by replacing any indentation at
 the front of the current line, together with the line boundary, with a
 single space.
 
@@ -123,7 +123,7 @@ that column number.
 @findex indent-rigidly
 @cindex remove indentation
 This command is used to change the indentation of all lines that begin
-in the region, moving the affected lines as a ``rigid'' unit.
+in the region, moving the affected lines as a rigid unit.
 
 If called with no argument, the command activates a transient mode for
 adjusting the indentation of the affected lines interactively.  While
index 7581f34ead0582ca5769454b4e1eaeb5e4d4ebf7..d453647b0c54ec149fa90a2b2ac9e7a2ed333741 100644 (file)
@@ -358,34 +358,34 @@ So, to recover the text of the next-to-the-last kill, first use
 with the previous kill.  @kbd{M-y} is allowed only after a @kbd{C-y}
 or another @kbd{M-y}.
 
-  You can understand @kbd{M-y} in terms of a ``last yank'' pointer which
-points at an entry in the kill ring.  Each time you kill, the ``last
-yank'' pointer moves to the newly made entry at the front of the ring.
-@kbd{C-y} yanks the entry which the ``last yank'' pointer points to.
-@kbd{M-y} moves the ``last yank'' pointer to a different entry, and the
+  You can understand @kbd{M-y} in terms of a last-yank pointer which
+points at an entry in the kill ring.  Each time you kill, the last-yank
+pointer moves to the newly made entry at the front of the ring.
+@kbd{C-y} yanks the entry which the last-yank pointer points to.
+@kbd{M-y} moves the last-yank pointer to a different entry, and the
 text in the buffer changes to match.  Enough @kbd{M-y} commands can move
 the pointer to any entry in the ring, so you can get any entry into the
 buffer.  Eventually the pointer reaches the end of the ring; the next
 @kbd{M-y} loops back around to the first entry again.
 
-  @kbd{M-y} moves the ``last yank'' pointer around the ring, but it does
+  @kbd{M-y} moves the last-yank pointer around the ring, but it does
 not change the order of the entries in the ring, which always runs from
 the most recent kill at the front to the oldest one still remembered.
 
   @kbd{M-y} can take a numeric argument, which tells it how many entries
-to advance the ``last yank'' pointer by.  A negative argument moves the
+to advance the last-yank pointer by.  A negative argument moves the
 pointer toward the front of the ring; from the front of the ring, it
-moves ``around'' to the last entry and continues forward from there.
+moves around to the last entry and continues forward from there.
 
   Once the text you are looking for is brought into the buffer, you can
 stop doing @kbd{M-y} commands and it will stay there.  It's just a copy
 of the kill ring entry, so editing it in the buffer does not change
-what's in the ring.  As long as no new killing is done, the ``last
-yank'' pointer remains at the same place in the kill ring, so repeating
+what's in the ring.  As long as no new killing is done, the last-yank
+pointer remains at the same place in the kill ring, so repeating
 @kbd{C-y} will yank another copy of the same previous kill.
 
   When you call @kbd{C-y} with a numeric argument, that also sets the
-``last yank'' pointer to the entry that it yanks.
+last-yank pointer to the entry that it yanks.
 
 @node Appending Kills
 @subsection Appending Kills
@@ -546,9 +546,9 @@ containing the last stretch of text selected in an X application
 (usually by dragging the mouse).  Typically, this text can be inserted
 into other X applications by @kbd{mouse-2} clicks.  The primary
 selection is separate from the clipboard.  Its contents are more
-``fragile''; they are overwritten each time you select text with the
-mouse, whereas the clipboard is only overwritten by explicit ``cut''
-or ``copy'' commands.
+fragile; they are overwritten each time you select text with the
+mouse, whereas the clipboard is only overwritten by explicit cut
+or copy commands.
 
   Under X, whenever the region is active (@pxref{Mark}), the text in
 the region is saved in the primary selection.  This applies regardless
@@ -727,9 +727,9 @@ rectangle, depending on the command that uses them.
 @table @kbd
 @item C-x r k
 Kill the text of the region-rectangle, saving its contents as the
-``last killed rectangle'' (@code{kill-rectangle}).
+last killed rectangle (@code{kill-rectangle}).
 @item C-x r M-w
-Save the text of the region-rectangle as the ``last killed rectangle''
+Save the text of the region-rectangle as the last killed rectangle
 (@code{copy-rectangle-as-kill}).
 @item C-x r d
 Delete the text of the region-rectangle (@code{delete-rectangle}).
@@ -776,7 +776,7 @@ region-rectangle is like erasing the specified text on each line of
 the rectangle; if there is any following text on the line, it moves
 backwards to fill the gap.
 
-  ``Killing'' a rectangle is not killing in the usual sense; the
+  Killing a rectangle is not killing in the usual sense; the
 rectangle is not stored in the kill ring, but in a special place that
 only records the most recent rectangle killed.  This is because
 yanking a rectangle is so different from yanking linear text that
@@ -786,8 +786,8 @@ for rectangles.
 @kindex C-x r M-w
 @findex copy-rectangle-as-kill
   @kbd{C-x r M-w} (@code{copy-rectangle-as-kill}) is the equivalent of
-@kbd{M-w} for rectangles: it records the rectangle as the ``last
-killed rectangle'', without deleting the text from the buffer.
+@kbd{M-w} for rectangles: it records the rectangle as the last
+killed rectangle, without deleting the text from the buffer.
 
 @kindex C-x r y
 @findex yank-rectangle
index 039358b6a97be0bb0cbe3475669c9ed3aa66ac76..2cbcc8b3d548b8b366a30aef37feb9ea33a631dc 100644 (file)
@@ -194,9 +194,9 @@ C-x C-k C-p C-p C-k C-k C-k C-n C-n C-k C-p C-k C-d
 @end example
 
 @noindent
-will rotate the keyboard macro ring to the ``second previous'' macro,
+will rotate the keyboard macro ring to the second-previous macro,
 execute the resulting head macro three times, rotate back to the
-original head macro, execute that once, rotate to the ``previous''
+original head macro, execute that once, rotate to the previous
 macro, execute that, and finally delete it from the macro ring.
 
 @findex kmacro-end-or-call-macro-repeat
@@ -224,8 +224,8 @@ immediately by repeating just @kbd{C-n} and @kbd{C-p} until the
 desired macro is at the head of the ring.  To execute the new macro
 ring head immediately, just type @kbd{C-k}.
 
-  Note that Emacs treats the head of the macro ring as the ``last
-defined keyboard macro''.  For instance, @key{F4} will execute that
+  Note that Emacs treats the head of the macro ring as the last
+defined keyboard macro.  For instance, @key{F4} will execute that
 macro, and @kbd{C-x C-k n} will give it a name.
 
 @vindex kmacro-ring-max
index 97d423e1e4baa4d9406e73bd98f6f8747f6cf7bf..c04682586cecbb9771f3c65f23f6b6007bcfcc71 100644 (file)
@@ -66,7 +66,7 @@ file names.
   On GNUstep, in an X-windows environment you need to use @kbd{Cmd-c}
 instead of one of the @kbd{C-w} or @kbd{M-w} commands to transfer text
 to the X primary selection; otherwise, Emacs will use the
-``clipboard'' selection.  Likewise, @kbd{Cmd-y} (instead of @kbd{C-y})
+clipboard selection.  Likewise, @kbd{Cmd-y} (instead of @kbd{C-y})
 yanks from the X primary selection instead of the kill-ring or
 clipboard.
 
@@ -131,9 +131,9 @@ at the command-line before starting Emacs:
 @section Windowing System Events under Mac OS / GNUstep
 
   Nextstep applications receive a number of special events which have
-no X equivalent.  These are sent as specially defined ``keys'', which
+no X equivalent.  These are sent as specially defined key events, which
 do not correspond to any sequence of keystrokes.  Under Emacs, these
-``key'' events can be bound to functions just like ordinary
+key events can be bound to functions just like ordinary
 keystrokes.  Here is a list of these events.
 
 @table @key
index 8ec1cd223c37f6926b6b9c56c900769858d4edee..a571ea7ed67a73c6ddc73b8a923481140286753c 100644 (file)
@@ -8,7 +8,7 @@
   This chapter describes Emacs features for maintaining large
 programs.  If you are maintaining a large Lisp program, then in
 addition to the features described here, you may find
-the @file{ERT} (``Emacs Lisp Regression Testing'') library useful
+the Emacs Lisp Regression Testing (ERT) library useful
 (@pxref{Top,,ERT,ert, Emacs Lisp Regression Testing}).
 
 @menu
@@ -395,7 +395,7 @@ instance, @samp{jim}), that is displayed as @samp{RCS:jim:1.3}.
 to the master repository.
 
   On a graphical display, you can move the mouse over this mode line
-indicator to pop up a ``tool-tip'', which displays a more verbose
+indicator to pop up a tool-tip, which displays a more verbose
 description of the version control status.  Pressing @kbd{Mouse-1}
 over the indicator pops up a menu of VC commands, identical to
 @samp{Tools / Version Control} on the menu bar.
@@ -441,14 +441,14 @@ VC fileset.
 @findex vc-next-action
 @kindex C-x v v
   The principal VC command is a multi-purpose command, @kbd{C-x v v}
-(@code{vc-next-action}), which performs the ``most appropriate''
+(@code{vc-next-action}), which performs the most appropriate
 action on the current VC fileset: either registering it with a version
 control system, or committing it, or unlocking it, or merging changes
 into it.  The precise actions are described in detail in the following
 subsections.  You can use @kbd{C-x v v} either in a file-visiting
 buffer or in a VC Directory buffer.
 
-  Note that VC filesets are distinct from the ``named filesets'' used
+  Note that VC filesets are distinct from the named filesets used
 for viewing and visiting files in functional groups
 (@pxref{Filesets}).  Unlike named filesets, VC filesets are not named
 and don't persist across sessions.
@@ -469,8 +469,8 @@ and don't persist across sessions.
 @item
 If there is more than one file in the VC fileset and the files have
 inconsistent version control statuses, signal an error.  (Note,
-however, that a fileset is allowed to include both ``newly-added''
-files and ``modified'' files; @pxref{Registering}.)
+however, that a fileset is allowed to include both newly-added
+files and modified files; @pxref{Registering}.)
 
 @item
 If none of the files in the VC fileset are registered with a version
@@ -502,7 +502,7 @@ if each work file in the VC fileset is up-to-date.  If any file has
 been changed in the repository, offer to update it.
 @end itemize
 
-  These rules also apply when you use RCS in its ``non-locking'' mode,
+  These rules also apply when you use RCS in its non-locking mode,
 except that changes are not automatically merged from the repository.
 Nothing informs you if another user has committed changes in the same
 file since you began editing it; when you commit your revision, his
@@ -547,7 +547,7 @@ the lock and make the file read-only again.
 
 @item
 If each file is locked by another user, ask whether you want to
-``steal the lock''.  If you say yes, the file becomes locked by you,
+steal the lock.  If you say yes, the file becomes locked by you,
 and a warning message is sent to the user who had formerly locked the
 file.
 @end itemize
@@ -582,11 +582,11 @@ If the fileset is unmodified (and unlocked), this checks the specified
 revision into the working tree.  You can also specify a revision on
 another branch by giving its revision or branch ID (@pxref{Switching
 Branches}).  An empty argument (i.e., @kbd{C-u C-x v v @key{RET}})
-checks out the latest (``head'') revision on the current branch.
+checks out the latest (head) revision on the current branch.
 
-This signals an error on a decentralized version control system.
+This is silently ignored on a decentralized version control system.
 Those systems do not let you specify your own revision IDs, nor do
-they use the concept of ``checking out'' individual files.
+they use the concept of checking out individual files.
 @end itemize
 
 @node Log Buffer
@@ -634,7 +634,7 @@ support it, the header is treated as part of the log entry.
 @findex log-edit-show-files
 @kindex C-c C-d @r{(Log Edit mode)}
 @findex log-edit-show-diff
-  While in the @file{*vc-log*} buffer, the ``current VC fileset'' is
+  While in the @file{*vc-log*} buffer, the current VC fileset is
 considered to be the fileset that will be committed if you type
 @w{@kbd{C-c C-c}}.  To view a list of the files in the VC fileset,
 type @w{@kbd{C-c C-f}} (@code{log-edit-show-files}).  To view a diff
@@ -710,7 +710,7 @@ under, it prompts for a repository type, creates a new repository, and
 registers the file into that repository.
 
   On most version control systems, registering a file with @kbd{C-x v
-i} or @kbd{C-x v v} adds it to the ``working tree'' but not to the
+i} or @kbd{C-x v v} adds it to the working tree but not to the
 repository.  Such files are labeled as @samp{added} in the VC
 Directory buffer, and show a revision ID of @samp{@@@@} in the mode
 line.  To make the registration take effect in the repository, you
@@ -824,8 +824,8 @@ window.
 @kindex C-x v g
   Many version control systems allow you to view files @dfn{annotated}
 with per-line revision information, by typing @kbd{C-x v g}
-(@code{vc-annotate}).  This creates a new buffer (the ``annotate
-buffer'') displaying the file's text, with each line colored to show
+(@code{vc-annotate}).  This creates a new ``annotate'' buffer
+displaying the file's text, with each line colored to show
 how old it is.  Red text is new, blue is old, and intermediate colors
 indicate intermediate ages.  By default, the color is scaled over the
 full range of ages, such that the oldest changes are blue, and the
@@ -836,7 +836,7 @@ arguments using the minibuffer: the revision to display and annotate
 (instead of the current file contents), and the time span in days the
 color range should cover.
 
-  From the annotate buffer, these and other color scaling options are
+  From the ``annotate'' buffer, these and other color scaling options are
 available from the @samp{VC-Annotate} menu.  In this buffer, you can
 also use the following keys to browse the annotations of past revisions,
 view diffs, or view log entries:
@@ -901,11 +901,11 @@ Display the change history for the current repository
 (@code{vc-print-root-log}).
 
 @item C-x v I
-Display the changes that a pull operation will retrieve
+Display the changes that a ``pull'' operation will retrieve
 (@code{vc-log-incoming}).
 
 @item C-x v O
-Display the changes that will be sent by the next push operation
+Display the changes that will be sent by the next ``push'' operation
 (@code{vc-log-outgoing}).
 @end table
 
@@ -941,13 +941,13 @@ revision at point.  A second @key{RET} hides it again.
   On a decentralized version control system, the @kbd{C-x v I}
 (@code{vc-log-incoming}) command displays a log buffer showing the
 changes that will be applied, the next time you run the version
-control system's ``pull'' command to get new revisions from another
+control system's pull command to get new revisions from another
 repository (@pxref{Pulling / Pushing}).  This other repository is the default
 one from which changes are pulled, as defined by the version control
 system; with a prefix argument, @code{vc-log-incoming} prompts for a
 specific repository.  Similarly, @kbd{C-x v O}
 (@code{vc-log-outgoing}) shows the changes that will be sent to
-another repository, the next time you run the ``push'' command; with a
+another repository, the next time you run the push command; with a
 prefix argument, it prompts for a specific destination repository.
 
   In the @file{*vc-change-log*} buffer, you can use the following keys
@@ -1104,7 +1104,7 @@ PCL-CVS, pcl-cvs, PCL-CVS---The Emacs Front-End to CVS}.
   The VC Directory buffer contains a list of version-controlled files
 and their version control statuses.  It lists files in the current
 directory (the one specified when you called @kbd{C-x v d}) and its
-subdirectories, but only those with a ``noteworthy'' status.  Files
+subdirectories, but only those with a noteworthy status.  Files
 that are up-to-date (i.e., the same as in the repository) are
 omitted.  If all the files in a subdirectory are up-to-date, the
 subdirectory is not listed either.  As an exception, if a file has
@@ -1169,7 +1169,7 @@ directories that are used internally by version control systems.
 @subsubsection VC Directory Commands
 
   Emacs provides several commands for navigating the VC Directory
-buffer, and for ``marking'' files as belonging to the current VC
+buffer, and for marking files as belonging to the current VC
 fileset.
 
 @table @kbd
@@ -1291,8 +1291,8 @@ bring them back at a later time).
 
   One use of version control is to support multiple independent lines
 of development, which are called @dfn{branches}.  Amongst other
-things, branches can be used for maintaining separate ``stable'' and
-``development'' versions of a program, and for developing unrelated
+things, branches can be used for maintaining separate stable and
+development versions of a program, and for developing unrelated
 features in isolation from one another.
 
   VC's support for branch operations is currently fairly limited.  For
@@ -2407,11 +2407,11 @@ information about the project.
 
   A project may contain one or more @dfn{targets}.  A target can be an
 object file, executable program, or some other type of file, which is
-``built'' from one or more of the files in the project.
+built from one or more of the files in the project.
 
   To add a new @dfn{target} to a project, type @kbd{C-c . t}
 (@code{M-x ede-new-target}).  This command also asks if you wish to
-``add'' the current file to that target, which means that the target
+add the current file to that target, which means that the target
 is to be built from that file.  After you have defined a target, you
 can add more files to it by typing @kbd{C-c . a}
 (@code{ede-add-file}).
index c975f6ebe6b96633ef84bfa283fd3909b09e0762..09c766be50404f4393232e5f9e3a16188917d191 100644 (file)
@@ -43,7 +43,7 @@ Ordinarily, only the selected window highlights its region; however,
 if the variable @code{highlight-nonselected-windows} is
 non-@code{nil}, each window highlights its own region.
 
-  There is another kind of region: the ``rectangular region''.
+  There is another kind of region: the rectangular region.
 @xref{Rectangles}.
 
 @menu
@@ -105,7 +105,7 @@ region also automatically deactivate the mark, like @kbd{C-x C-u} in
 the above example.
 
   Instead of setting the mark in order to operate on a region, you can
-also use it to ``remember'' a position in the buffer (by typing
+also use it to remember a position in the buffer (by typing
 @kbd{C-@key{SPC} C-@key{SPC}}), and later jump back there (by typing
 @kbd{C-u C-@key{SPC}}).  @xref{Mark Ring}, for details.
 
@@ -275,7 +275,7 @@ active.  If you change the value to @code{kill}, these commands
 behavior.  Such commands usually have the word @code{region} in their
 names, like @kbd{C-w} (@code{kill-region}) and @code{C-x C-u}
 (@code{upcase-region}).  If the mark is inactive, they operate on the
-``inactive region''---that is, on the text between point and the
+@dfn{inactive region}---that is, on the text between point and the
 position at which the mark was last set (@pxref{Mark Ring}).  To
 disable this behavior, change the variable
 @code{mark-even-if-inactive} to @code{nil}.  Then these commands will
index f0bedf8854d8c60bab29ed53884cd9038144695a..2493fdadf37c9b7f6f0fad8db6c99cebd3b02001 100644 (file)
@@ -1,3 +1,4 @@
+@c -*- coding: utf-8 -*-
 @c This is part of the Emacs manual.
 @c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2015 Free Software
 @c Foundation, Inc.
@@ -108,8 +109,8 @@ Find file: /u2/emacs/src//etc/termcap
 @cindex double slash in file name
 @cindex slashes repeated in file name
 @findex file-name-shadow-mode
-Emacs interprets a double slash as ``ignore everything before the
-second slash in the pair''.  In the example above,
+A double slash causes Emacs to ignore everything before the
+second slash in the pair.  In the example above,
 @file{/u2/emacs/src/} is ignored, so the argument you supplied is
 @file{/etc/termcap}.  The ignored part of the file name is dimmed if
 the terminal allows it.  (To disable this dimming, turn off File Name
@@ -435,10 +436,10 @@ This behavior is used by most commands that read file names, like
 @cindex completion style
 
   Completion commands work by narrowing a large list of possible
-completion alternatives to a smaller subset that ``matches'' what you
+completion alternatives to a smaller subset that matches what you
 have typed in the minibuffer.  In @ref{Completion Example}, we gave a
 simple example of such matching.  The procedure of determining what
-constitutes a ``match'' is quite intricate.  Emacs attempts to offer
+constitutes a match is quite intricate.  Emacs attempts to offer
 plausible completions under most circumstances.
 
   Emacs performs completion using one or more @dfn{completion
@@ -545,7 +546,7 @@ ignored as a completion alternative.  Any element ending in a slash
 @code{".o"}, @code{".elc"}, and @code{"~"}.  For example, if a
 directory contains @samp{foo.c} and @samp{foo.elc}, @samp{foo}
 completes to @samp{foo.c}.  However, if @emph{all} possible
-completions end in ``ignored'' strings, they are not ignored: in the
+completions end in otherwise-ignored strings, they are not ignored: in the
 previous example, @samp{foo.e} completes to @samp{foo.elc}.  Emacs
 disregards @code{completion-ignored-extensions} when showing
 completion alternatives in the completion list.
@@ -564,7 +565,7 @@ completion list buffer.
 
 @vindex completion-cycle-threshold
   If @code{completion-cycle-threshold} is non-@code{nil}, completion
-commands can ``cycle'' through completion alternatives.  Normally, if
+commands can cycle through completion alternatives.  Normally, if
 there is more than one completion alternative for the text in the
 minibuffer, a completion command completes up to the longest common
 substring.  If you change @code{completion-cycle-threshold} to
@@ -620,7 +621,7 @@ fetching later entries into the minibuffer.
 entries in the minibuffer history (e.g., if you haven't previously
 typed @kbd{M-p}), Emacs tries fetching from a list of default
 arguments: values that you are likely to enter.  You can think of this
-as moving through the ``future history'' list.
+as moving through the ``future history''.
 
   If you edit the text inserted by the @kbd{M-p} or @kbd{M-n}
 minibuffer history commands, this does not change its entry in the
@@ -754,12 +755,12 @@ input is ignored.
 @node Yes or No Prompts
 @section Yes or No Prompts
 
-  An Emacs command may require you to answer a ``yes or no'' question
+  An Emacs command may require you to answer a yes-or-no question
 during the course of its execution.  Such queries come in two main
 varieties.
 
 @cindex y or n prompt
-  For the first type of ``yes or no'' query, the prompt ends with
+  For the first type of yes-or-no query, the prompt ends with
 @samp{(y or n)}.  Such a query does not actually use the minibuffer;
 the prompt appears in the echo area, and you answer by typing either
 @samp{y} or @samp{n}, which immediately delivers the response.  For
@@ -768,7 +769,7 @@ buffer, and enter the name of an existing file, Emacs issues a prompt
 like this:
 
 @smallexample
-File `foo.el' exists; overwrite? (y or n)
+File ‘foo.el’ exists; overwrite? (y or n)
 @end smallexample
 
 @noindent
@@ -783,7 +784,7 @@ window; and @kbd{C-M-S-v} scrolls backward in the next window.  Typing
 (@pxref{Quitting}).
 
 @cindex yes or no prompt
-  The second type of ``yes or no'' query is typically employed if
+  The second type of yes-or-no query is typically employed if
 giving the wrong answer would have serious consequences; it uses the
 minibuffer, and features a prompt ending with @samp{(yes or no)}.  For
 example, if you invoke @kbd{C-x k} (@code{kill-buffer}) on a
index db096c7ebf7a4816c7927e1e2e87b69d34ea54be..7fad8268d06d0ad36dd79729b0f18f4da894e975 100644 (file)
@@ -331,7 +331,7 @@ Certificate Authorities which issue new certificates for third-party
 services, you may want to keep track of these changes.
 
 @item Diffie-Hellman low prime bits
-When doing the public key exchange, the number of ``prime bits''
+When doing the public key exchange, the number of prime bits
 should be high to ensure that the channel can't be eavesdropped on by
 third parties.  If this number is too low, you will be warned.
 
@@ -1486,8 +1486,8 @@ this buffer just like it does with a terminal in ordinary Term mode.
 most common speed is 9600 bits per second.  You can change the speed
 interactively by clicking on the mode line.
 
-  A serial port can be configured even more by clicking on ``8N1'' in
-the mode line.  By default, a serial port is configured as ``8N1'',
+  A serial port can be configured even more by clicking on @samp{8N1} in
+the mode line.  By default, a serial port is configured as @samp{8N1},
 which means that each byte consists of 8 data bits, No parity check
 bit, and 1 stopbit.
 
@@ -1548,7 +1548,7 @@ variable to @samp{emacsclient +%d %s}.}
 
 @vindex server-name
   You can run multiple Emacs servers on the same machine by giving
-each one a unique ``server name'', using the variable
+each one a unique @dfn{server name}, using the variable
 @code{server-name}.  For example, @kbd{M-x set-variable @key{RET}
 server-name @key{RET} foo @key{RET}} sets the server name to
 @samp{foo}.  The @code{emacsclient} program can specify a server by
@@ -1605,7 +1605,7 @@ still use Emacs to edit the file.
 @kbd{C-x #} (@code{server-edit}) in its buffer.  This saves the file
 and sends a message back to the @command{emacsclient} program, telling
 it to exit.  Programs that use @env{EDITOR} usually wait for the
-``editor''---in this case @command{emacsclient}---to exit before doing
+editor---in this case @command{emacsclient}---to exit before doing
 something else.
 
   You can also call @command{emacsclient} with multiple file name
@@ -1625,7 +1625,7 @@ create it.  However, if you set @code{server-kill-new-buffers} to
 @code{nil}, then a different criterion is used: finishing with a
 server buffer kills it if the file name matches the regular expression
 @code{server-temp-file-regexp}.  This is set up to distinguish certain
-``temporary'' files.
+temporary files.
 
   Each @kbd{C-x #} checks for other pending external requests to edit
 various files, and selects the next such file.  You can switch to a
@@ -1716,8 +1716,8 @@ evaluate, @emph{not} as a list of files to visit.
 @cindex @env{EMACS_SERVER_FILE} environment variable
 Specify a @dfn{server file} for connecting to an Emacs server via TCP.
 
-An Emacs server usually uses an operating system feature called a
-``local socket'' to listen for connections.  Some operating systems,
+An Emacs server usually uses a
+local socket to listen for connections.  Some operating systems,
 such as Microsoft Windows, do not support local sockets; in that case,
 the server communicates with @command{emacsclient} via TCP.
 
@@ -1811,7 +1811,7 @@ print hardcopies from Dired (@pxref{Operating on Files}) and the diary
 (@pxref{Displaying the Diary}).  You can also ``print'' an Emacs
 buffer to HTML with the command @kbd{M-x htmlfontify-buffer}, which
 converts the current buffer to a HTML file, replacing Emacs faces with
-CSS-based markup.  Furthermore, Org mode allows you to ``print'' Org
+CSS-based markup.  Furthermore, Org mode allows you to print Org
 files to a variety of formats, such as PDF (@pxref{Org Mode}).
 
 @table @kbd
@@ -1984,7 +1984,7 @@ additional paper sizes by changing the variable
 @vindex ps-landscape-mode
   The variable @code{ps-landscape-mode} specifies the orientation of
 printing on the page.  The default is @code{nil}, which stands for
-``portrait'' mode.  Any non-@code{nil} value specifies ``landscape''
+portrait mode.  Any non-@code{nil} value specifies landscape
 mode.
 
 @vindex ps-number-of-columns
@@ -2232,10 +2232,10 @@ Insert a byte with a code typed in octal.
 Insert a byte with a code typed in hex.
 
 @item C-x [
-Move to the beginning of a 1k-byte ``page''.
+Move to the beginning of a 1k-byte page.
 
 @item C-x ]
-Move to the end of a 1k-byte ``page''.
+Move to the end of a 1k-byte page.
 
 @item M-g
 Move to an address specified in hex.
@@ -2316,7 +2316,7 @@ usually turned on.
 However, this may be slow if there are a lot of buffers in the
 desktop.  You can specify the maximum number of buffers to restore
 immediately with the variable @code{desktop-restore-eager}; the
-remaining buffers are restored ``lazily'', when Emacs is idle.
+remaining buffers are restored lazily, when Emacs is idle.
 
 @findex desktop-clear
 @vindex desktop-globals-to-clear
@@ -2391,7 +2391,7 @@ stack overflow) from time to time.  So remember to exit or abort the
 recursive edit when you no longer need it.
 
   In general, we try to minimize the use of recursive editing levels in
-GNU Emacs.  This is because they constrain you to ``go back'' in a
+GNU Emacs.  This is because they constrain you to go back in a
 particular order---from the innermost level toward the top level.  When
 possible, we present different activities in separate buffers so that
 you can switch between them as you please.  Some commands switch to a
@@ -2401,7 +2401,7 @@ the order you choose.
 
 @ignore
 @c Apart from edt and viper, this is all obsolete.
-@c (Can't believe we were saying ``most other editors'' into 2014!)
+@c (Can't believe we were saying "most other editors" into 2014!)
 @c There seems no point having a node just for those, which both have
 @c their own manuals.
 @node Emulation
@@ -2460,8 +2460,8 @@ Viper, viper}.
 @findex vi-mode
 @kbd{M-x vi-mode} enters a major mode that replaces the previously
 established major mode.  All of the vi commands that, in real vi, enter
-``input'' mode are programmed instead to return to the previous major
-mode.  Thus, ordinary Emacs serves as vi's ``input'' mode.
+input mode are programmed instead to return to the previous major
+mode.  Thus, ordinary Emacs serves as vi's input mode.
 
 Because vi emulation works through major modes, it does not work
 to switch buffers during emulation.  Return to normal Emacs first.
@@ -2472,7 +2472,7 @@ to the @code{vi-mode} command.
 @item vi (alternate emulator)
 @findex vip-mode
 @kbd{M-x vip-mode} invokes another vi emulator, said to resemble real vi
-more thoroughly than @kbd{M-x vi-mode}.  ``Input'' mode in this emulator
+more thoroughly than @kbd{M-x vi-mode}.  Input mode in this emulator
 is changed from ordinary Emacs so you can use @key{ESC} to go back to
 emulated vi command mode.  To get from emulated vi command mode back to
 ordinary Emacs, type @kbd{C-z}.
@@ -2704,7 +2704,7 @@ bored, try an argument of 9.  Sit back and watch.
 
 @findex life
 @cindex Life
-  @kbd{M-x life} runs Conway's ``Life'' cellular automaton.
+  @kbd{M-x life} runs Conway's Game of Life cellular automaton.
 
 @findex landmark
 @cindex landmark game
index d442f8546fc15fe8fc06ee9ca05d16b0af55bfa2..4abbb59e89deca5d85984cd862de14147c524074 100644 (file)
@@ -1,3 +1,4 @@
+@c -*- coding: utf-8 -*-
 @c This is part of the Emacs manual.
 @c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2015 Free Software
 @c Foundation, Inc.
@@ -251,7 +252,7 @@ In Binary Overwrite mode, digits after @kbd{C-q} specify an octal
 character code, as usual.
 
 @item
-Visual Line mode performs ``word wrapping'', causing long lines to be
+Visual Line mode performs word wrapping, causing long lines to be
 wrapped at word boundaries.  @xref{Visual Line Mode}.
 @end itemize
 
@@ -451,6 +452,6 @@ the file's @samp{-*-} line or local variables list (if any).
 a new major mode if the new file name implies a mode (@pxref{Saving}).
 (@kbd{C-x C-s} does this too, if the buffer wasn't visiting a file.)
 However, this does not happen if the buffer contents specify a major
-mode, and certain ``special'' major modes do not allow the mode to
+mode, and certain special major modes do not allow the mode to
 change.  You can turn off this mode-changing feature by setting
 @code{change-major-mode-with-file-name} to @code{nil}.
index 9996158f16186a93532b6dd2dc8e38b6df41d55b..c8e266915f0ea57f7e1ed04cc64660f0589d71cc 100644 (file)
@@ -9,7 +9,7 @@
 @cindex MS-DOS peculiarities
 
   This section briefly describes the peculiarities of using Emacs on
-the MS-DOS ``operating system''.
+MS-DOS.
 @iftex
 Information about Emacs and Microsoft's current operating system
 Windows is in the main Emacs manual
index 477f24e56c075ec4b7d2d35ee393d29919e57df2..88bbccd5b1107cddd925746980838a3a98d70729 100644 (file)
@@ -172,9 +172,9 @@ system encodes the character safely and with a single byte
 one byte, Emacs shows @samp{file ...}.
 
   As a special case, if the character lies in the range 128 (0200
-octal) through 159 (0237 octal), it stands for a ``raw'' byte that
+octal) through 159 (0237 octal), it stands for a raw byte that
 does not correspond to any specific displayable character.  Such a
-``character'' lies within the @code{eight-bit-control} character set,
+character lies within the @code{eight-bit-control} character set,
 and is displayed as an escaped octal character code.  In this case,
 @kbd{C-x =} shows @samp{part of display ...} instead of @samp{file}.
 
@@ -642,7 +642,7 @@ automatically.  For example:
 @end lisp
 
 @noindent
-This automatically activates the input method ``german-prefix'' in
+This automatically activates the input method @code{german-prefix} in
 Text mode.
 
 @findex quail-set-keyboard-layout
@@ -696,8 +696,8 @@ system; for example, to visit a file encoded in codepage 850, type
   In addition to converting various representations of non-@acronym{ASCII}
 characters, a coding system can perform end-of-line conversion.  Emacs
 handles three different conventions for how to separate lines in a file:
-newline (``unix''), carriage-return linefeed (``dos''), and just
-carriage-return (``mac'').
+newline (Unix), carriage-return linefeed (DOS), and just
+carriage-return (Mac).
 
 @table @kbd
 @item C-h C @var{coding} @key{RET}
@@ -1647,7 +1647,7 @@ so far.
 @cindex 8-bit display
   Normally non-ISO-8859 characters (decimal codes between 128 and 159
 inclusive) are displayed as octal escapes.  You can change this for
-non-standard ``extended'' versions of ISO-8859 character sets by using the
+non-standard extended versions of ISO-8859 character sets by using the
 function @code{standard-display-8bit} in the @code{disp-table} library.
 
   There are two ways to input single-byte non-@acronym{ASCII}
@@ -1681,7 +1681,7 @@ characters present directly on the keyboard or using @key{Compose} or
 @cindex compose character
 @cindex dead character
 @item
-You can use the key @kbd{C-x 8} as a ``compose character'' prefix for
+You can use the key @kbd{C-x 8} as a compose-character prefix for
 entry of non-@acronym{ASCII} Latin-1 and a few other printing
 characters.  @kbd{C-x 8} is good for insertion (in the minibuffer as
 well as other buffers), for searching, and in any other context where
@@ -1691,7 +1691,7 @@ a key sequence is allowed.
 library is loaded, the @key{Alt} modifier key, if the keyboard has
 one, serves the same purpose as @kbd{C-x 8}: use @key{Alt} together
 with an accent character to modify the following letter.  In addition,
-if the keyboard has keys for the Latin-1 ``dead accent characters'',
+if the keyboard has keys for the Latin-1 dead accent characters,
 they too are defined to compose with the following character, once
 @code{iso-transl} is loaded.
 
@@ -1709,13 +1709,13 @@ addition to some charsets of its own (such as @code{emacs},
 @code{unicode-bmp}, and @code{eight-bit}).  All supported characters
 belong to one or more charsets.
 
-  Emacs normally ``does the right thing'' with respect to charsets, so
+  Emacs normally does the right thing with respect to charsets, so
 that you don't have to worry about them.  However, it is sometimes
 helpful to know some of the underlying details about charsets.
 
   One example is font selection (@pxref{Fonts}).  Each language
-environment (@pxref{Language Environments}) defines a ``priority
-list'' for the various charsets.  When searching for a font, Emacs
+environment (@pxref{Language Environments}) defines a priority
+list for the various charsets.  When searching for a font, Emacs
 initially attempts to find one that can display the highest-priority
 charsets.  For instance, in the Japanese language environment, the
 charset @code{japanese-jisx0208} has the highest priority, so Emacs
index 19d861a83955ae2149ad3c761732511db12bf3d1..1a6a735d3ae4ee41eb274c18afe5746b192215cb 100644 (file)
@@ -111,7 +111,7 @@ Remove any installation or deletion mark previously added to the
 current line by an @kbd{i} or @kbd{d} command.
 
 @item U
-Mark all package with a newer available version for ``upgrading''
+Mark all package with a newer available version for upgrading
 (@code{package-menu-mark-upgrades}).  This places an installation mark
 on the new available versions, and a deletion mark on the old
 installed versions.
@@ -246,7 +246,7 @@ version @var{version} of the package named @var{name}.  Here,
 @var{version} should be a version string (corresponding to a specific
 version of the package), or @code{t} (which means to load any
 installed version), or @code{nil} (which means no version; this
-``disables'' the package, preventing it from being loaded).  A list
+disables the package, preventing it from being loaded).  A list
 element can also be the symbol @code{all}, which means to load the
 latest installed version of any package not named by the other list
 elements.  The default value is just @code{'(all)}.
index a9ad2d5d2e32f46519b23d632b54f6f68a8e641b..8a087acd306dcae7163e2c415ec20e0e7f6838ec 100644 (file)
@@ -53,7 +53,7 @@ Additional extensions to Picture mode can be found in
 @menu
 * Basic Picture::         Basic concepts and simple commands of Picture Mode.
 * Insert in Picture::     Controlling direction of cursor motion
-                            after ``self-inserting'' characters.
+                            after self-inserting characters.
 * Tabs in Picture::       Various features for tab stops and indentation.
 * Rectangles in Picture:: Clearing and superimposing rectangles.
 @end menu
@@ -143,10 +143,10 @@ Picture}).
 @kindex C-c ' @r{(Picture mode)}
 @kindex C-c / @r{(Picture mode)}
 @kindex C-c \ @r{(Picture mode)}
-  Since ``self-inserting'' characters in Picture mode overwrite and move
+  Since self-inserting characters in Picture mode overwrite and move
 point, there is no essential restriction on how point should be moved.
 Normally point moves right, but you can specify any of the eight
-orthogonal or diagonal directions for motion after a ``self-inserting''
+orthogonal or diagonal directions for motion after a self-inserting
 character.  This is useful for drawing lines in the buffer.
 
 @table @kbd
@@ -185,7 +185,7 @@ Move down and right (``southeast'') after insertion
 @findex picture-motion-reverse
   Two motion commands move based on the current Picture insertion
 direction.  The command @kbd{C-c C-f} (@code{picture-motion}) moves in the
-same direction as motion after ``insertion'' currently does, while @kbd{C-c
+same direction as motion after insertion currently does, while @kbd{C-c
 C-b} (@code{picture-motion-reverse}) moves in the opposite direction.
 
 @node Tabs in Picture
index ea8f82fa2ea41a61208dce82d56197234f466545..1f2c8b1e1c2d7cbfedae8dbc0d6bf9cad0f6a89a 100644 (file)
@@ -741,10 +741,10 @@ because of the parentheses.
   The following commands move over groupings delimited by parentheses
 (or whatever else serves as delimiters in the language you are working
 with).  They ignore strings and comments, including any parentheses
-within them, and also ignore parentheses that are ``quoted'' with an
+within them, and also ignore parentheses that are quoted with an
 escape character.  These commands are mainly intended for editing
 programs, but can be useful for editing any text containing
-parentheses.  They are referred to internally as ``list'' commands
+parentheses.  They are referred to internally as ``list commands''
 because in Lisp these groupings are lists.
 
   These commands assume that the starting point is not inside a string
@@ -766,7 +766,7 @@ Move down in parenthesis structure (@code{down-list}).
 @kindex C-M-p
 @findex forward-list
 @findex backward-list
-  The ``list'' commands @kbd{C-M-n} (@code{forward-list}) and
+  The list commands @kbd{C-M-n} (@code{forward-list}) and
 @kbd{C-M-p} (@code{backward-list}) move forward or backward over one
 (or @var{n}) parenthetical groupings.
 
@@ -940,7 +940,7 @@ you use it.
 
   When a region is active (@pxref{Mark}), @kbd{M-;} either adds
 comment delimiters to the region, or removes them.  If every line in
-the region is already a comment, it ``uncomments'' each of those lines
+the region is already a comment, it uncomments each of those lines
 by removing their comment delimiters.  Otherwise, it adds comment
 delimiters to enclose the text in the region.
 
@@ -1134,7 +1134,7 @@ You can also use @kbd{M-x info-lookup-file} to look for documentation
 for a file name.
 
   If you use @kbd{C-h S} in a major mode that does not support it,
-it asks you to specify the ``symbol help mode''.  You should enter
+it asks you to specify the symbol help mode.  You should enter
 a command such as @code{c-mode} that would select a major
 mode which @kbd{C-h S} does support.
 
@@ -1381,8 +1381,8 @@ see @ref{Top, Semantic,, semantic, Semantic}.
 see the Semantic Info manual, which is distributed with Emacs.
 @end iftex
 
-  Most of the ``language aware'' features in Emacs, such as Font Lock
-mode (@pxref{Font Lock}), rely on ``rules of thumb''@footnote{Regular
+  Most of the language-aware features in Emacs, such as Font Lock
+mode (@pxref{Font Lock}), rely on rules of thumb@footnote{Regular
 expressions and syntax tables.} that usually give good results but are
 never completely exact.  In contrast, the parsers used by Semantic
 have an exact understanding of programming language syntax.  This
@@ -1478,15 +1478,16 @@ support Outline minor mode (@pxref{Outline Mode}), which can be used
 with the Foldout package (@pxref{Foldout}).
 
 @ifinfo
-  The ``automatic typing'' features may be useful for writing programs.
+  The automatic typing features may be useful for writing programs.
 @xref{Top,,Autotyping, autotype, Autotyping}.
 @end ifinfo
 
 @findex prettify-symbols-mode
   Prettify Symbols mode is a buffer-local minor mode that replaces
-certain strings with more ``attractive'' versions for display
+certain strings with more attractive versions for display
 purposes.  For example, in Emacs Lisp mode, it replaces the string
-``lambda'' with the Greek lambda character.  You may wish to use this
+@samp{lambda} with the Greek lambda character @samp{λ}.  You may wish
+to use this
 in non-programming modes as well.  You can customize the mode by
 adding more entries to @code{prettify-symbols-alist}.  There is also a
 global version, @code{global-prettify-symbols-mode}, which enables the
@@ -1600,7 +1601,7 @@ Move point to the end of the innermost C statement or sentence; like
   In C mode and related modes, certain printing characters are
 @dfn{electric}---in addition to inserting themselves, they also
 reindent the current line, and optionally also insert newlines.  The
-``electric'' characters are @kbd{@{}, @kbd{@}}, @kbd{:}, @kbd{#},
+electric characters are @kbd{@{}, @kbd{@}}, @kbd{:}, @kbd{#},
 @kbd{;}, @kbd{,}, @kbd{<}, @kbd{>}, @kbd{/}, @kbd{*}, @kbd{(}, and
 @kbd{)}.
 
@@ -1797,7 +1798,7 @@ it work.
 Hide-ifdef minor mode hides selected code within @samp{#if} and
 @samp{#ifdef} preprocessor blocks.  If you change the variable
 @code{hide-ifdef-shadow} to @code{t}, Hide-ifdef minor mode
-``shadows'' preprocessor blocks by displaying them with a less
+shadows preprocessor blocks by displaying them with a less
 prominent face, instead of hiding them entirely.  See the
 documentation string of @code{hide-ifdef-mode} for more information.
 
@@ -1805,7 +1806,7 @@ documentation string of @code{hide-ifdef-mode} for more information.
 @cindex related files
 @findex ff-find-related-file
 @vindex ff-related-file-alist
-Find a file ``related'' in a special way to the file visited by the
+Find a file related in a special way to the file visited by the
 current buffer.  Typically this will be the header file corresponding
 to a C/C++ source file, or vice versa.  The variable
 @code{ff-related-file-alist} specifies how to compute related file
index fd48f3412bf8da1cf30a0638067f5f57116c0343..d8841caa311e0e6f2ad0287a332a61144db93499 100644 (file)
@@ -32,7 +32,7 @@ Display a description of what register @var{r} contains.
 @vindex register-preview-delay
 @cindex preview of registers
   All of the commands that prompt for a register will display a
-``preview'' window that lists the existing registers (if there are
+preview window that lists the existing registers (if there are
 any) after a short delay.  To change the length of the delay,
 customize @code{register-preview-delay}.  To prevent this display, set
 that option to @code{nil}.  You can explicitly request a preview
@@ -121,7 +121,7 @@ reactivates the mark where it was last set.  The mark is deactivated
 at the end of this command.  @xref{Mark}.  @kbd{C-u C-x r s @var{r}},
 the same command with a prefix argument, copies the text into register
 @var{r} and deletes the text from the buffer as well; you can think of
-this as ``moving'' the region text into the register.
+this as moving the region text into the register.
 
 @findex append-to-register
 @findex prepend-to-register
@@ -285,7 +285,7 @@ restore a frameset.)
   @dfn{Bookmarks} are somewhat like registers in that they record
 positions you can jump to.  Unlike registers, they have long names, and
 they persist automatically from one Emacs session to the next.  The
-prototypical use of bookmarks is to record ``where you were reading'' in
+prototypical use of bookmarks is to record where you were reading in
 various files.
 
 @table @kbd
index 6cad28099a61589e0229e56f69f57ddd174416be..6e2a60b63789d1a0e525b5119a534858c01d2234 100644 (file)
@@ -82,7 +82,7 @@ file after merging new mail from an inbox file (@pxref{Rmail Inbox}).
   You can exit Rmail with @kbd{q} (@code{rmail-quit}); this expunges
 and saves the Rmail file, then buries the Rmail buffer as well as its
 summary buffer, if present (@pxref{Rmail Summary}).  But there is no
-need to ``exit'' formally.  If you switch from Rmail to editing in
+need to exit formally.  If you switch from Rmail to editing in
 other buffers, and never switch back, you have exited.  Just make sure
 to save the Rmail file eventually (like any other file you have
 changed).  @kbd{C-x s} is a suitable way to do this (@pxref{Save
@@ -794,7 +794,7 @@ message as the text, and a subject of the form @code{[@var{from}:
 @var{subject}]}, where @var{from} and @var{subject} are the sender and
 subject of the original message.  All you have to do is fill in the
 recipients and send.  When you forward a message, recipients get a
-message which is ``from'' you, and which has the original message in
+message which is from you, and which has the original message in
 its contents.
 
 @vindex rmail-enable-mime-composing
@@ -817,7 +817,7 @@ following the current one.
 
 @findex rmail-resend
   @dfn{Resending} is an alternative similar to forwarding; the
-difference is that resending sends a message that is ``from'' the
+difference is that resending sends a message that is from the
 original sender, just as it reached you---with a few added header fields
 (@samp{Resent-From} and @samp{Resent-To}) to indicate that it came via
 you.  To resend a message in Rmail, use @kbd{C-u f}.  (@kbd{f} runs
@@ -1213,14 +1213,14 @@ Toggle between @acronym{MIME} display and raw message
 immediately after its tagline, as part of the Rmail buffer, while
 @acronym{MIME} parts of other types are represented only by their
 taglines, with their actual contents hidden.  In either case, you can
-toggle a @acronym{MIME} part between its ``displayed'' and ``hidden''
+toggle a @acronym{MIME} part between its displayed and hidden
 states by typing @key{RET} anywhere in the part---or anywhere in its
 tagline (except for buttons for other actions, if there are any).  Type
 @key{RET} (or click with the mouse) to activate a tagline button, and
 @key{TAB} to cycle point between tagline buttons.
 
   The @kbd{v} (@code{rmail-mime}) command toggles between the default
-@acronym{MIME} display described above, and a ``raw'' display showing
+@acronym{MIME} display described above, and a raw display showing
 the undecoded @acronym{MIME} data.  With a prefix argument, this
 command toggles the display of only an entity at point.
 
@@ -1372,8 +1372,8 @@ which applies the code when displaying the text.
 your Rmail file (@pxref{Rmail Inbox}).  When loaded for the first time,
 Rmail attempts to locate the @code{movemail} program and determine its
 version.  There are two versions of the @code{movemail} program: the
-native one, shipped with GNU Emacs (the ``emacs version'') and the one
-included in GNU mailutils (the ``mailutils version'',
+native one, shipped with GNU Emacs (the Emacs version) and the one
+included in GNU mailutils (the mailutils version,
 @pxref{movemail,,,mailutils,GNU mailutils}).  They support the same
 command line syntax and the same basic subset of options.  However, the
 Mailutils version offers additional features.
@@ -1489,7 +1489,7 @@ versions of POP.
 @cindex POP mailboxes
   No matter which flavor of @code{movemail} you use, you can specify
 a POP inbox by using a POP @dfn{URL} (@pxref{Movemail}).  A POP
-@acronym{URL} is a ``file name'' of the form
+@acronym{URL} is of the form
 @samp{pop://@var{username}@@@var{hostname}}, where
 @var{hostname} is the host name or IP address of the remote mail
 server and @var{username} is the user name on that server.
index 920aa089758b5cc3db6799b316c23db8c1b0e1c3..37e0e7e067b7ea04075baab4a32e519e4701590f 100644 (file)
@@ -8,7 +8,7 @@
 @cindex frame
 
   On a graphical display, such as on GNU/Linux using the X Window
-System, Emacs occupies a ``graphical window''.  On a text terminal,
+System, Emacs occupies a graphical window.  On a text terminal,
 Emacs occupies the entire terminal screen.  We will use the term
 @dfn{frame} to mean a graphical window or terminal screen occupied by
 Emacs.  Emacs behaves very similarly on both kinds of frames.  It
@@ -27,7 +27,7 @@ information when Emacs asks for it.
 above the echo area, is called @dfn{the window}.  Henceforth in this
 manual, we will use the word ``window'' in this sense.  Graphical
 display systems commonly use the word ``window'' with a different
-meaning; but, as stated above, we refer to those ``graphical windows''
+meaning; but, as stated above, we refer to those graphical windows
 as ``frames''.
 
   An Emacs window is where the @dfn{buffer}---the text you are
@@ -206,11 +206,11 @@ terminal output.  Furthermore, if you are using an input method,
 string is displayed, that indicates a nontrivial end-of-line
 convention for encoding a file.  Usually, lines of text are separated
 by @dfn{newline characters} in a file, but two other conventions are
-sometimes used.  The MS-DOS convention uses a ``carriage-return''
-character followed by a ``linefeed'' character; when editing such
+sometimes used.  The MS-DOS convention uses a carriage-return
+character followed by a linefeed character; when editing such
 files, the colon changes to either a backslash (@samp{\}) or
 @samp{(DOS)}, depending on the operating system.  Another convention,
-employed by older Macintosh systems, uses a ``carriage-return''
+employed by older Macintosh systems, uses a carriage-return
 character instead of a newline; when editing such files, the colon
 changes to either a forward slash (@samp{/}) or @samp{(Mac)}.  On some
 systems, Emacs displays @samp{(Unix)} instead of the colon for files
@@ -219,7 +219,7 @@ that use newline as the line separator.
   The next element on the mode line is the string indicated by
 @var{ch}.  This shows two dashes (@samp{--}) if the buffer displayed
 in the window has the same contents as the corresponding file on the
-disk; i.e., if the buffer is ``unmodified''.  If the buffer is
+disk; i.e., if the buffer is unmodified.  If the buffer is
 modified, it shows two stars (@samp{**}).  For a read-only buffer, it
 shows @samp{%*} if the buffer is modified, and @samp{%%} otherwise.
 
index a0dfe2263248c0a850a09a3c4c4fca31750a2d87..ae275d1ca67a605dc136c3b6255f4baa0248b36e 100644 (file)
@@ -24,7 +24,7 @@ thing, but search for patterns instead of fixed strings.
 * Symbol Search::             Search for a source code symbol.
 * Regexp Search::             Search for match for a regexp.
 * Regexps::                   Syntax of regular expressions.
-* Regexp Backslash::          Regular expression constructs starting with '\'.
+* Regexp Backslash::          Regular expression constructs starting with `\'.
 * Regexp Example::            A complex regular expression explained.
 * Search Case::               To ignore case while searching, or not.
 * Replace::                   Search, and replace some or all matches.
@@ -146,8 +146,8 @@ you don't like this feature, you can disable it by setting
 
   After exiting a search, you can search for the same string again by
 typing just @kbd{C-s C-s}.  The first @kbd{C-s} is the key that
-invokes incremental search, and the second @kbd{C-s} means ``search
-again''.  Similarly, @kbd{C-r C-r} searches backward for the last
+invokes incremental search, and the second @kbd{C-s} means to search
+again.  Similarly, @kbd{C-r C-r} searches backward for the last
 search string.  In determining the last search string, it doesn't
 matter whether the string was searched for with @kbd{C-s} or
 @kbd{C-r}.
@@ -423,7 +423,7 @@ because that is used to display the minibuffer.
 
 If an incremental search fails in the minibuffer, it tries searching
 the minibuffer history.  @xref{Minibuffer History}.  You can visualize
-the minibuffer and its history as a series of ``pages'', with the
+the minibuffer and its history as a series of pages, with the
 earliest history element on the first page and the current minibuffer
 on the last page.  A forward search, @kbd{C-s}, searches forward to
 later pages; a reverse search, @kbd{C-r}, searches backwards to
@@ -893,11 +893,11 @@ This last application is not a consequence of the idea of a
 parenthetical grouping; it is a separate feature that is assigned as a
 second meaning to the same @samp{\( @dots{} \)} construct.  In practice
 there is usually no conflict between the two meanings; when there is
-a conflict, you can use a ``shy'' group.
+a conflict, you can use a shy group.
 
 @item \(?: @dots{} \)
 @cindex shy group, in regexp
-specifies a ``shy'' group that does not record the matched substring;
+specifies a shy group that does not record the matched substring;
 you can't refer back to it with @samp{\@var{d}} (see below).  This is
 useful in mechanically combining regular expressions, so that you can
 add groups for syntactic purposes without interfering with the
index 49a4aa7c7f3531f8c0544c2ee763c506836eb7b7..c5ca73b40a80b7d34221ce074290e01f0b578d14 100644 (file)
@@ -136,7 +136,7 @@ Use both address and full name, as in:@*
 Use both address and full name, as in:@*
 @samp{Elvis Parsley <king@@grassland.com>}.
 @item any other value
-Use @code{angles} normally.  But if the address must be ``quoted'' to
+Use @code{angles} normally.  But if the address must be quoted to
 remain syntactically valid under the @code{angles} format but not
 under the @code{parens} format, use @code{parens} instead.  This is
 the default.
@@ -159,7 +159,7 @@ directed at them.
 
 @item BCC
 Additional mailing address(es) to send the message to, which should
-not appear in the header of the message actually sent.  ``BCC'' stands
+not appear in the header of the message actually sent.  @samp{BCC} stands
 for @dfn{blind carbon copies}.
 
 @item FCC
@@ -276,7 +276,7 @@ of the address, such as the person's full name.  Emacs puts them in if
 they are needed.  For instance, it inserts the above address as
 @samp{"John Q. Smith" <none@@example.com>}.
 
-  Emacs also recognizes ``include'' commands in @file{.mailrc}.  They
+  Emacs also recognizes include commands in @file{.mailrc}.  They
 look like this:
 
 @example
@@ -341,7 +341,7 @@ Send the message, and leave the mail buffer selected (@code{message-send}).
 @vindex message-kill-buffer-on-exit
   The usual command to send a message is @kbd{C-c C-c}
 (@code{mail-send-and-exit}).  This sends the message and then
-``buries'' the mail buffer, putting it at the lowest priority for
+buries the mail buffer, putting it at the lowest priority for
 reselection.  If you want it to kill the mail buffer instead, change
 the variable @code{message-kill-buffer-on-exit} to @code{t}.
 
@@ -648,7 +648,7 @@ it all.  Whether or not this is true, it at least amuses some people.
 
 @findex fortune-to-signature
 @cindex fortune cookies
-  You can use the @code{fortune} program to put a ``fortune cookie''
+  You can use the @code{fortune} program to put a fortune cookie
 message into outgoing mail.  To do this, add
 @code{fortune-to-signature} to @code{mail-setup-hook}:
 
index 389ef5ec8d66f5e08cd36d034305d8175b937fb9..7f3afd71d5b470fc92fed49187ddd23c87cb2e46 100644 (file)
@@ -1,3 +1,4 @@
+@c -*- coding: utf-8 -*-
 @c This is part of the Emacs manual.
 @c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2015 Free Software
 @c Foundation, Inc.
@@ -33,7 +34,7 @@ publish them in many formats.
 @cindex mode, XML
 @cindex mode, nXML
 @findex nxml-mode
-  Emacs has other major modes for text which contains ``embedded''
+  Emacs has other major modes for text which contains embedded
 commands, such as @TeX{} and @LaTeX{} (@pxref{TeX Mode}); HTML and
 SGML (@pxref{HTML Mode}); XML
 @ifinfo
@@ -45,9 +46,8 @@ SGML (@pxref{HTML Mode}); XML
 and Groff and Nroff (@pxref{Nroff Mode}).
 
 @cindex ASCII art
-  If you need to edit pictures made out of text characters (commonly
-referred to as ``ASCII art''), use Picture mode, a special major mode
-for editing such pictures.
+  If you need to edit ASCII art pictures made out of text characters,
+use Picture mode, a special major mode for editing such pictures.
 @iftex
 @xref{Picture Mode,,, emacs-xtra, Specialized Emacs Features}.
 @end iftex
@@ -60,7 +60,7 @@ for editing such pictures.
 @cindex templates
 @cindex autotyping
 @cindex automatic typing
-  The ``automatic typing'' features may be useful when writing text.
+  The automatic typing features may be useful when writing text.
 @inforef{Top,The Autotype Manual,autotype}.
 @end ifinfo
 
@@ -78,7 +78,7 @@ for editing such pictures.
 * TeX Mode::            Editing TeX and LaTeX files.
 * HTML Mode::           Editing HTML and SGML files.
 * Nroff Mode::          Editing input to the nroff formatter.
-* Enriched Text::       Editing text ``enriched'' with fonts, colors, etc.
+* Enriched Text::       Editing text enriched with fonts, colors, etc.
 * Text Based Tables::   Commands for editing text-based tables.
 * Two-Column::          Splitting text columns into separate windows.
 @end menu
@@ -683,7 +683,7 @@ delimiter on each line.
 prefix for each paragraph automatically.  This command divides the
 region into paragraphs, treating every change in the amount of
 indentation as the start of a new paragraph, and fills each of these
-paragraphs.  Thus, all the lines in one ``paragraph'' have the same
+paragraphs.  Thus, all the lines in one paragraph have the same
 amount of indentation.  That indentation serves as the fill prefix for
 that paragraph.
 
@@ -1073,7 +1073,7 @@ revealing parts of the buffer, based on the outline structure.  These
 commands are not undoable; their effects are simply not recorded by
 the undo mechanism, so you can undo right past them (@pxref{Undo}).
 
-  Many of these commands act on the ``current'' heading line.  If
+  Many of these commands act on the current heading line.  If
 point is on a heading line, that is the current heading line; if point
 is on a body line, the current heading line is the nearest preceding
 header line.
@@ -1205,7 +1205,7 @@ buffers.
 
 @cindex folding editing
   The Foldout package extends Outline mode and Outline minor mode with
-``folding'' commands.  The idea of folding is that you zoom in on a
+folding commands.  The idea of folding is that you zoom in on a
 nested portion of the outline, while hiding its relatives at higher
 levels.
 
@@ -1235,7 +1235,7 @@ show-subtree}), by specifying a zero argument: @kbd{M-0 C-c C-z}.
 
   While you're zoomed in, you can still use Outline mode's exposure and
 hiding functions without disturbing Foldout.  Also, since the buffer is
-narrowed, ``global'' editing actions will only affect text under the
+narrowed, global editing actions will only affect text under the
 zoomed-in heading.  This is useful for restricting changes to a
 particular chapter or section of your document.
 
@@ -1967,7 +1967,7 @@ used as a cheap preview (@code{sgml-tags-invisible}).
   The major mode for editing XML documents is called nXML mode.  This
 is a powerful major mode that can recognize many existing XML schema
 and use them to provide completion of XML elements via
-@kbd{M-@key{TAB}}, as well as ``on-the-fly'' XML
+@kbd{M-@key{TAB}}, as well as on-the-fly XML
 validation with error highlighting.  To enable nXML mode in an
 existing buffer, type @kbd{M-x nxml-mode}, or, equivalently, @kbd{M-x
 xml-mode}.  Emacs uses nXML mode for files which have the extension
@@ -2048,7 +2048,7 @@ number (the header level).
 @cindex text/enriched MIME format
 
   Enriched mode is a minor mode for editing formatted text files in a
-WYSIWYG (``what you see is what you get'') fashion.  When Enriched
+WYSIWYG (What You See Is What You Get) fashion.  When Enriched
 mode is enabled, you can apply various formatting properties to the
 text in the buffer, such as fonts and colors; upon saving the buffer,
 those properties are saved together with the text, using the MIME
@@ -2072,7 +2072,7 @@ serves as an example of the features of Enriched mode.
 * Enriched Indentation::    Changing the left and right margins.
 * Enriched Justification::  Centering, setting text flush with the
                               left or right margin, etc.
-* Enriched Properties::     The ``special'' text properties submenu.
+* Enriched Properties::     The ``special text properties'' submenu.
 @end menu
 
 @node Enriched Mode
@@ -2832,8 +2832,8 @@ puts the text after the separator into the right-hand buffer, and
 deletes the separator.  Lines that don't have the column separator at
 the proper place remain unsplit; they stay in the left-hand buffer, and
 the right-hand buffer gets an empty line to correspond.  (This is the
-way to write a line that ``spans both columns while in two-column
-mode'': write it in the left-hand buffer, and put an empty line in the
+way to write a line that spans both columns while in two-column
+mode: write it in the left-hand buffer, and put an empty line in the
 right-hand buffer.)
 
 @kindex F2 RET
index 2233376755a3750f233f9def2875ad69da546bc7..087681b56183c8f5f1054041467b529de8238b96 100644 (file)
@@ -78,8 +78,8 @@ actually executed as a command if you type it while Emacs is waiting for
 input.  In that case, the command it runs is @code{keyboard-quit}.
 
   On a text terminal, if you quit with @kbd{C-g} a second time before
-the first @kbd{C-g} is recognized, you activate the ``emergency
-escape'' feature and return to the shell.  @xref{Emergency Escape}.
+the first @kbd{C-g} is recognized, you activate the emergency-escape
+feature and return to the shell.  @xref{Emergency Escape}.
 
 @cindex NFS and quitting
   There are some situations where you cannot quit.  When Emacs is
@@ -118,7 +118,7 @@ it executes as an ordinary command, and Emacs doesn't notice it until
 it is ready for the next command.
 
 @findex top-level
-  The command @kbd{M-x top-level} is equivalent to ``enough''
+  The command @kbd{M-x top-level} is equivalent to enough
 @kbd{C-]} commands to get you out of all the levels of recursive edits
 that you are in; it also exits the minibuffer if it is active.
 @kbd{C-]} gets you out one level at a time, but @kbd{M-x top-level}
@@ -507,7 +507,7 @@ by the Emacs maintainers, are shown by @kbd{M-x debbugs-gnu-usertags}.
 The @samp{bug-gnu-emacs} mailing list (also available as the newsgroup
 @samp{gnu.emacs.bug}).  You can read the list archives at
 @url{http://lists.gnu.org/mailman/listinfo/bug-gnu-emacs}.  This list
-works as a ``mirror'' of the Emacs bug reports and follow-up messages
+works as a mirror of the Emacs bug reports and follow-up messages
 which are sent to the bug tracker.  It also contains old bug reports
 from before the bug tracker was introduced (in early 2008).
 
@@ -538,10 +538,10 @@ not feel obliged to read this list before reporting a bug.
 @cindex bug criteria
 @cindex what constitutes an Emacs bug
 
-  If Emacs accesses an invalid memory location (``segmentation
-fault''), or exits with an operating system error message that
-indicates a problem in the program (as opposed to something like
-``disk full''), then it is certainly a bug.
+  If Emacs accesses an invalid memory location (a.k.a.@:
+``segmentation fault'') or exits with an operating system error
+message that indicates a problem in the program (as opposed to
+something like ``disk full''), then it is certainly a bug.
 
   If the Emacs display does not correspond properly to the contents of
 the buffer, then it is a bug.  But you should check that features like
@@ -618,7 +618,7 @@ large file, and Emacs displayed @samp{I feel pretty today}.''  This is
 what we mean by ``guessing explanations''.  The problem might be due
 to the fact that there is a @samp{z} in the file name.  If this is so,
 then when we got your report, we would try out the problem with some
-``large file'', probably with no @samp{z} in its name, and not see any
+large file, probably with no @samp{z} in its name, and not see any
 problem.  There is no way we could guess that we should try visiting a
 file with a @samp{z} in its name.
 
@@ -1345,16 +1345,16 @@ Emacs has additional style and coding conventions:
 @item
 @ifset WWW_GNU_ORG
 @ifhtml
-the ``Tips'' Appendix in the Emacs Lisp Reference
+the ``Tips and Conventions'' Appendix in the Emacs Lisp Reference
 @url{http://www.gnu.org/software/emacs/manual/html_node/elisp/Tips.html}.
 @end ifhtml
 @ifnothtml
-@xref{Tips, ``Tips'' Appendix in the Emacs Lisp Reference, Tips
+@xref{Tips, ``Tips and Conventions'' Appendix in the Emacs Lisp Reference, Tips
 Appendix, elisp, Emacs Lisp Reference}.
 @end ifnothtml
 @end ifset
 @ifclear WWW_GNU_ORG
-@xref{Tips, ``Tips'' Appendix in the Emacs Lisp Reference, Tips
+@xref{Tips, ``Tips and Conventions'' Appendix in the Emacs Lisp Reference, Tips
 Appendix, elisp, Emacs Lisp Reference}.
 @end ifclear
 
index 8dccbf9f81c693a899ef61b479fc69bda4c77413..3eb9b035823c8797dc6cb2039176d70a39fa722e 100644 (file)
@@ -430,7 +430,7 @@ that @kbd{C-x v ~} saves old versions to
 @end ifnottex
 except for the additional dot (@samp{.}) after the version.  The
 relevant VC commands can use both kinds of version backups.  The main
-difference is that the ``manual'' version backups made by @kbd{C-x v
+difference is that the manual version backups made by @kbd{C-x v
 ~} are not deleted automatically when you commit.
 
 @cindex locking (CVS)
index 24cc946ac12b4454b3dcc04cb6a4469a1c19ea66..d844f3e4988f18ce94eb158703bae7b11951cb47 100644 (file)
@@ -334,7 +334,7 @@ heights of all the windows in the selected frame.
 @node Displaying Buffers
 @section Displaying a Buffer in a Window
 
-  It is a common Emacs operation to display or ``pop up'' some buffer
+  It is a common Emacs operation to display or pop up some buffer
 in response to a user command.  There are several different ways in
 which commands do this.
 
@@ -345,7 +345,7 @@ usually work by calling @code{switch-to-buffer} internally
 (@pxref{Select Buffer}).
 
 @findex display-buffer
-  Some commands try to display ``intelligently'', trying not to take
+  Some commands try to display intelligently, trying not to take
 over the selected window, e.g., by splitting off a new window and
 displaying the desired buffer there.  Such commands, which include the
 various help commands (@pxref{Help}), work by calling
@@ -398,7 +398,7 @@ variables are @code{nil}, so this step is skipped.
 
 @item
 Otherwise, if the buffer is already displayed in an existing window,
-``reuse'' that window.  Normally, only windows on the selected frame
+reuse that window.  Normally, only windows on the selected frame
 are considered, but windows on other frames are also reusable if you
 change @code{pop-up-frames} (see below) to @code{t}.
 
@@ -444,7 +444,7 @@ and display the buffer there.
 @cindex window configuration changes, undoing
   Winner mode is a global minor mode that records the changes in the
 window configuration (i.e., how the frames are partitioned into
-windows), so that you can ``undo'' them.  You can toggle Winner mode
+windows), so that you can undo them.  You can toggle Winner mode
 with @kbd{M-x winner-mode}, or by customizing the variable
 @code{winner-mode}.  When the mode is enabled, @kbd{C-c left}
 (@code{winner-undo}) undoes the last window configuration change.  If
@@ -462,7 +462,7 @@ buffer.  @xref{Follow Mode}.
   The Windmove package defines commands for moving directionally
 between neighboring windows in a frame.  @kbd{M-x windmove-right}
 selects the window immediately to the right of the currently selected
-one, and similarly for the ``left'', ``up'', and ``down''
+one, and similarly for the left, up, and down
 counterparts.  @kbd{M-x windmove-default-keybindings} binds these
 commands to @kbd{S-right} etc.; doing so disables shift selection for
 those keys (@pxref{Shift Selection}).
index 25552d1e89591259a2cac607a77cda61382b12e7..afd276699673aa0bb0a315cd487363a752f2caee 100644 (file)
@@ -12,10 +12,10 @@ resources, as is usual for programs that use X.
 graphical widgets, such as the menu-bar, scroll-bar, and dialog boxes,
 is determined by
 @ifnottex
-``GTK resources'', which we will also describe.
+GTK resources, which we will also describe.
 @end ifnottex
 @iftex
-``GTK resources''.
+GTK resources.
 @end iftex
 When Emacs is built without GTK+ support, the appearance of these
 widgets is determined by additional X resources.
@@ -238,8 +238,8 @@ this way.
 
 @ifnottex
 @item @code{privateColormap} (class @code{PrivateColormap})
-If @samp{on}, use a private color map, in the case where the ``default
-visual'' of class PseudoColor and Emacs is using it.
+If @samp{on}, use a private color map, in the case where the default
+visual of class PseudoColor and Emacs is using it.
 
 @item @code{reverseVideo} (class @code{ReverseVideo})
 Switch foreground and background default colors if @samp{on}, use colors as
@@ -677,7 +677,7 @@ class @code{GtkDialog}.  For file selection, Emacs uses a widget named
 @code{emacs-filedialog}, of class @code{GtkFileSelection}.
 
   Because the widgets for pop-up menus and dialogs are free-standing
-windows and not ``contained'' in the @code{Emacs} widget, their GTK+
+windows and not contained in the @code{Emacs} widget, their GTK+
 absolute names do not start with @samp{Emacs}.  To customize these
 widgets, use wildcards like this:
 
@@ -747,8 +747,8 @@ This is the default state for widgets.
 @item ACTIVE
 This is the state for a widget that is ready to do something.  It is
 also for the trough of a scroll bar, i.e., @code{bg[ACTIVE] = "red"}
-sets the scroll bar trough to red.  Buttons that have been pressed but
-not released yet (``armed'') are in this state.
+sets the scroll bar trough to red.  Buttons that have been armed
+(pressed but not released yet) are in this state.
 @item PRELIGHT
 This is the state for a widget that can be manipulated, when the mouse
 pointer is over it---for example when the mouse is over the thumb in
index d353241c34addc759b8a1964e2c082ba37754e4f..22e50e94f487c69a30185b24e549387fbc2c500c 100644 (file)
@@ -1,4 +1,4 @@
-\input texinfo                                      @c -*-texinfo-*-
+\input texinfo                       @c -*- mode: texinfo; coding: utf-8 -*-
 @comment %**start of header
 @setfilename ../../info/eintr.info
 @c setfilename emacs-lisp-intro.info
@@ -808,7 +808,7 @@ In addition, I have written several programs as extended examples.
 Although these are examples, the programs are real.  I use them.
 Other people use them.  You may use them.  Beyond the fragments of
 programs used for illustrations, there is very little in here that is
-``just for teaching purposes''; what you see is used.  This is a great
+just for teaching purposes; what you see is used.  This is a great
 advantage of Emacs Lisp: it is easy to learn to use it for work.
 @end ignore
 
@@ -854,12 +854,12 @@ information so you won't be surprised later when the additional
 information is formally introduced.)
 
 When you read this text, you are not expected to learn everything the
-first time.  Frequently, you need only make, as it were, a ``nodding
-acquaintance'' with some of the items mentioned.  My hope is that I have
+first time.  Frequently, you need make only a nodding
+acquaintance with some of the items mentioned.  My hope is that I have
 structured the text and given you enough hints that you will be alert to
 what is important, and concentrate on it.
 
-You will need to ``dive into'' some paragraphs; there is no other way
+You will need to dive into some paragraphs; there is no other way
 to read them.  But I have tried to keep down the number of such
 paragraphs.  This book is intended as an approachable hill, rather than
 as a daunting mountain.
@@ -928,7 +928,7 @@ along with the key that is labeled @key{ALT} and, at the same time,
 press the @key{\} key.
 
 In addition to typing a lone keychord, you can prefix what you type
-with @kbd{C-u}, which is called the ``universal argument''.  The
+with @kbd{C-u}, which is called the @dfn{universal argument}.  The
 @kbd{C-u} keychord passes an argument to the subsequent command.
 Thus, to indent a region of plain text by 6 spaces, mark the region,
 and then type @w{@kbd{C-u 6 M-C-\}}.  (If you do not specify a number,
@@ -1265,9 +1265,9 @@ hand parenthesis of the following list and then type @kbd{C-x C-e}:
 
 @c use code for the number four, not samp.
 @noindent
-You will see the number @code{4} appear in the echo area.  (In the
-jargon, what you have just done is ``evaluate the list.''  The echo area
-is the line at the bottom of the screen that displays or ``echoes''
+You will see the number @code{4} appear in the echo area.  (What
+you have just done is evaluate the list.  The echo area
+is the line at the bottom of the screen that displays or echoes
 text.)  Now try the same thing with a quoted list:  place the cursor
 right after the following list and type @kbd{C-x C-e}:
 
@@ -1284,7 +1284,7 @@ In both cases, what you are doing is giving a command to the program
 inside of GNU Emacs called the @dfn{Lisp interpreter}---giving the
 interpreter a command to evaluate the expression.  The name of the Lisp
 interpreter comes from the word for the task done by a human who comes
-up with the meaning of an expression---who ``interprets'' it.
+up with the meaning of an expression---who interprets it.
 
 You can also evaluate an atom that is not part of a list---one that is
 not surrounded by parentheses; again, the Lisp interpreter translates
@@ -1307,7 +1307,7 @@ signposts to a traveler in a strange country; deciphering them can be
 hard, but once understood, they can point the way.
 
 The error message is generated by a built-in GNU Emacs debugger.  We
-will ``enter the debugger''.  You get out of the debugger by typing @code{q}.
+will enter the debugger.  You get out of the debugger by typing @code{q}.
 
 What we will do is evaluate a list that is not quoted and does not
 have a meaningful command as its first element.  Here is a list almost
@@ -1405,7 +1405,7 @@ definition of any set of instructions for the computer to carry out.
 The slightly odd word, @samp{void-function}, is designed to cover the
 way Emacs Lisp is implemented, which is that when a symbol does not
 have a function definition attached to it, the place that should
-contain the instructions is ``void''.
+contain the instructions is void.
 
 On the other hand, since we were able to add 2 plus 2 successfully, by
 evaluating @code{(+ 2 2)}, we can infer that the symbol @code{+} must
@@ -1596,16 +1596,15 @@ instructions it found in the function definition, or perhaps it will
 give up on that function and produce an error message.  (The interpreter
 may also find itself tossed, so to speak, to a different function or it
 may attempt to repeat continually what it is doing for ever and ever in
-what is called an ``infinite loop''.  These actions are less common; and
+an infinite loop.  These actions are less common; and
 we can ignore them.)  Most frequently, the interpreter returns a value.
 
 @cindex @samp{side effect} defined
 At the same time the interpreter returns a value, it may do something
 else as well, such as move a cursor or copy a file; this other kind of
 action is called a @dfn{side effect}.  Actions that we humans think are
-important, such as printing results, are often ``side effects'' to the
-Lisp interpreter.  The jargon can sound peculiar, but it turns out that
-it is fairly easy to learn to use side effects.
+important, such as printing results, are often side effects to the
+Lisp interpreter.  It is fairly easy to learn to use side effects.
 
 In summary, evaluating a symbolic expression most commonly causes the
 Lisp interpreter to return a value and perhaps carry out a side effect;
@@ -1642,8 +1641,8 @@ evaluate, the interpreter prints that value in the echo area.
 Now it is easy to understand the name of the command invoked by the
 keystrokes @kbd{C-x C-e}: the name is @code{eval-last-sexp}.  The
 letters @code{sexp} are an abbreviation for ``symbolic expression'', and
-@code{eval} is an abbreviation for ``evaluate''.  The command means
-``evaluate last symbolic expression''.
+@code{eval} is an abbreviation for ``evaluate''.  The command
+evaluates the last symbolic expression.
 
 As an experiment, you can try evaluating the expression by putting the
 cursor at the beginning of the next line immediately following the
@@ -1948,8 +1947,9 @@ following:
 @noindent
 The value produced by evaluating this expression is @code{"abcdef"}.
 
+@cindex substring
 A function such as @code{substring} uses both a string and numbers as
-arguments.  The function returns a part of the string, a substring of
+arguments.  The function returns a part of the string, a @dfn{substring} of
 the first argument.  This function takes three arguments.  Its first
 argument is the string of characters, the second and third arguments
 are numbers that indicate the beginning (inclusive) and end
@@ -1973,7 +1973,7 @@ Note that the string passed to @code{substring} is a single atom even
 though it is made up of several words separated by spaces.  Lisp counts
 everything between the two quotation marks as part of the string,
 including the spaces.  You can think of the @code{substring} function as
-a kind of ``atom smasher'' since it takes an otherwise indivisible atom
+a kind of atom smasher since it takes an otherwise indivisible atom
 and extracts a part.  However, @code{substring} is only able to extract
 a substring from an argument that is a string, not from another type of
 atom such as a number or symbol.
@@ -2403,7 +2403,7 @@ list.  This latter way of thinking is very common and in forthcoming
 chapters we shall come upon at least one symbol that has ``pointer'' as
 part of its name.  The name is chosen because the symbol has a value,
 specifically a list, attached to it; or, expressed another way,
-the symbol is set to ``point'' to the list.
+the symbol is set to point to the list.
 
 @node Counting
 @subsection Counting
@@ -2508,8 +2508,8 @@ of which the function is the first element.
 
 @item
 A function always returns a value when it is evaluated (unless it gets
-an error); in addition, it may also carry out some action called a
-``side effect''.  In many cases, a function's primary purpose is to
+an error); in addition, it may also carry out some action that is a
+side effect.  In many cases, a function's primary purpose is to
 create a side effect.
 @end itemize
 
@@ -2870,7 +2870,7 @@ there until the command finishes running).
 Also, we have just introduced another jargon term, the word @dfn{call}.
 When you evaluate a list in which the first symbol is a function, you
 are calling that function.  The use of the term comes from the notion of
-the function as an entity that can do something for you if you ``call''
+the function as an entity that can do something for you if you call
 it---just as a plumber is an entity who can fix a leak if you call him
 or her.
 
@@ -3156,7 +3156,7 @@ to evaluate this yet!
 
 @noindent
 The symbol @code{number}, specified in the function definition in the
-next section, is given or ``bound to'' the value 3 in the actual use of
+next section, is bound to the value 3 in the actual use of
 the function.  Note that although @code{number} was inside parentheses
 in the function definition, the argument passed to the
 @code{multiply-by-seven} function is not in parentheses.  The
@@ -3167,7 +3167,7 @@ definition begins.
 If you evaluate this example, you are likely to get an error message.
 (Go ahead, try it!)  This is because we have written the function
 definition, but not yet told the computer about the definition---we have
-not yet installed (or ``loaded'') the function definition in Emacs.
+not yet loaded the function definition in Emacs.
 Installing a function is the process that tells the Lisp interpreter the
 definition of the function.  Installation is described in the next
 section.
@@ -3257,8 +3257,8 @@ add the number to itself seven times instead of multiplying the number
 by seven.  It produces the same answer, but by a different path.  At
 the same time, we will add a comment to the code; a comment is text
 that the Lisp interpreter ignores, but that a human reader may find
-useful or enlightening.  The comment is that this is the ``second
-version''.
+useful or enlightening.  The comment is that this is the second
+version.
 
 @smallexample
 @group
@@ -3361,7 +3361,7 @@ it could not be used as an example of key binding.)
 (@xref{Keybindings, , Some Keybindings}, to learn how to bind a command
 to a key.)
 
-A prefix argument is passed to an interactive function by typing the
+A @dfn{prefix argument} is passed to an interactive function by typing the
 @key{META} key followed by a number, for example, @kbd{M-3 M-e}, or by
 typing @kbd{C-u} and then a number, for example, @kbd{C-u 3 M-e} (if you
 type @kbd{C-u} without a number, it defaults to 4).
@@ -3460,7 +3460,7 @@ is
 
 The first part of the argument to @code{interactive} is @samp{p}, with
 which you are already familiar.  This argument tells Emacs to
-interpret a ``prefix'', as a number to be passed to the function.  You
+interpret a prefix, as a number to be passed to the function.  You
 can specify a prefix either by typing @kbd{C-u} followed by a number
 or by typing @key{META} followed by a number.  The prefix is the
 number of specified characters.  Thus, if your prefix is three and the
@@ -3616,14 +3616,14 @@ Another way to think about @code{let} is that it is like a @code{setq}
 that is temporary and local.  The values set by @code{let} are
 automatically undone when the @code{let} is finished.  The setting
 only affects expressions that are inside the bounds of the @code{let}
-expression.  In computer science jargon, we would say ``the binding of
+expression.  In computer science jargon, we would say the binding of
 a symbol is visible only in functions called in the @code{let} form;
-in Emacs Lisp, scoping is dynamic, not lexical.''
+in Emacs Lisp, scoping is dynamic, not lexical.
 
 @code{let} can create more than one variable at once.  Also,
 @code{let} gives each variable it creates an initial value, either a
-value specified by you, or @code{nil}.  (In the jargon, this is called
-``binding the variable to the value''.)  After @code{let} has created
+value specified by you, or @code{nil}.  (In the jargon, this is
+binding the variable to the value.)  After @code{let} has created
 and bound the variables, it executes the code in the body of the
 @code{let}, and returns the value of the last expression in the body,
 as the value of the whole @code{let} expression.  (``Execute'' is a jargon
@@ -3790,8 +3790,8 @@ make decisions.  You can write function definitions without using
 included here.  It is used, for example, in the code for the
 function @code{beginning-of-buffer}.
 
-The basic idea behind an @code{if}, is that ``@emph{if} a test is true,
-@emph{then} an expression is evaluated.''  If the test is not true, the
+The basic idea behind an @code{if}, is that @emph{if} a test is true,
+@emph{then} an expression is evaluated.  If the test is not true, the
 expression is not evaluated.  For example, you might make a decision
 such as, ``if it is warm and sunny, then go to the beach!''
 
@@ -3815,7 +3815,7 @@ argument is often called the @dfn{then-part}.
 
 Also, when an @code{if} expression is written, the true-or-false-test
 is usually written on the same line as the symbol @code{if}, but the
-action to carry out if the test is true, the ``then-part'', is written
+action to carry out if the test is true, the then-part, is written
 on the second and subsequent lines.  This makes the @code{if}
 expression easier to read.
 
@@ -4612,7 +4612,7 @@ file, you can use the @code{find-tag} function to jump to it.
 Lisp, and C, and it works with non-programming text as well.  For
 example, @code{find-tag} will jump to the various nodes in the
 Texinfo source file of this document.
-The @code{find-tag} function depends on ``tags tables'' that record
+The @code{find-tag} function depends on @dfn{tags tables} that record
 the locations of the functions, variables, and other items to which
 @code{find-tag} jumps.
 
@@ -4630,7 +4630,7 @@ screen.  To switch back to your current buffer, type @kbd{C-x b
 @cindex TAGS table, specifying
 @findex find-tag
 Depending on how the initial default values of your copy of Emacs are
-set, you may also need to specify the location of your ``tags table'',
+set, you may also need to specify the location of your tags table,
 which is a file called @file{TAGS}.  For example, if you are
 interested in Emacs sources, the tags table you will most likely want,
 if it has already been created for you, will be in a subdirectory of
@@ -4964,8 +4964,7 @@ current buffer to a specified buffer.
 The @code{append-to-buffer} command uses the
 @code{insert-buffer-substring} function to copy the region.
 @code{insert-buffer-substring} is described by its name: it takes a
-string of characters from part of a buffer, a ``substring'', and
-inserts them into another buffer.
+substring from a buffer, and inserts it into another buffer.
 
 Most of @code{append-to-buffer} is
 concerned with setting up the conditions for
@@ -5712,8 +5711,8 @@ then the buffer itself must be got.
 
 You can imagine yourself at a conference where an usher is wandering
 around holding a list with your name on it and looking for you: the
-usher is ``bound'' to your name, not to you; but when the usher finds
-you and takes your arm, the usher becomes ``bound'' to you.
+usher is bound to your name, not to you; but when the usher finds
+you and takes your arm, the usher becomes bound to you.
 
 @need 800
 In Lisp, you might describe this situation like this:
@@ -5764,8 +5763,7 @@ so the true-or-false-test looks like this:
 @noindent
 @code{not} is a function that returns true if its argument is false
 and false if its argument is true.  So if @code{(bufferp buffer)}
-returns true, the @code{not} expression returns false and vice versa:
-what is ``not true'' is false and what is ``not false'' is true.
+returns true, the @code{not} expression returns false and vice versa.
 
 Using this test, the @code{if} expression works as follows: when the
 value of the variable @code{buffer} is actually a buffer rather than
@@ -6163,7 +6161,7 @@ was that function called several times, it gave the size of the whole
 buffer, not the accessible part.  The computation makes much more
 sense when it handles just the accessible part.  (@xref{Narrowing &
 Widening, , Narrowing and Widening}, for more information on focusing
-attention to an ``accessible'' part.)
+attention to an accessible part.)
 
 @need 800
 The line looks like this:
@@ -6191,8 +6189,8 @@ This expression is a multiplication, with two arguments to the function
 
 The first argument is @code{(prefix-numeric-value arg)}.  When
 @code{"P"} is used as the argument for @code{interactive}, the value
-passed to the function as its argument is passed a ``raw prefix
-argument'', and not a number.  (It is a number in a list.)  To perform
+passed to the function as its argument is passed a @dfn{raw prefix
+argument}, and not a number.  (It is a number in a list.)  To perform
 the arithmetic, a conversion is necessary, and
 @code{prefix-numeric-value} does the job.
 
@@ -6411,7 +6409,7 @@ tenths of the way through the buffer, which is a nicety that is,
 perhaps, not necessary, but which, if it did not occur, would be sure
 to draw complaints.  (The @code{(not (consp arg))} portion is so that
 if you specify the command with a @kbd{C-u}, but without a number,
-that is to say, if the ``raw prefix argument'' is simply a cons cell,
+that is to say, if the raw prefix argument is simply a cons cell,
 the command does not put you at the beginning of the second line.)
 
 @node Second Buffer Related Review
@@ -6440,7 +6438,7 @@ is optional; this means that the function can be evaluated without the
 argument, if desired.
 
 @item prefix-numeric-value
-Convert the ``raw prefix argument'' produced by @code{(interactive
+Convert the raw prefix argument produced by @code{(interactive
 "P")} to a numeric value.
 
 @item forward-line
@@ -6946,10 +6944,10 @@ non-destructive---that is, they do not modify or change lists to which
 they are applied.  This is very important for how they are used.
 
 Also, in the first chapter, in the discussion about atoms, I said that
-in Lisp, ``certain kinds of atom, such as an array, can be separated
+in Lisp, certain kinds of atom, such as an array, can be separated
 into parts; but the mechanism for doing this is different from the
 mechanism for splitting a list.  As far as Lisp is concerned, the
-atoms of a list are unsplittable.''  (@xref{Lisp Atoms}.)  The
+atoms of a list are unsplittable.  (@xref{Lisp Atoms}.)  The
 @code{car} and @code{cdr} functions are used for splitting lists and
 are considered fundamental to Lisp.  Since they cannot split or gain
 access to the parts of an array, an array is considered an atom.
@@ -6983,8 +6981,8 @@ appear in the echo area.  @code{cons} causes the creation of a new
 list in which the element is followed by the elements of the original
 list.
 
-We often say that ``@code{cons} puts a new element at the beginning of
-a list; it attaches or pushes elements onto the list'', but this
+We often say that @code{cons} puts a new element at the beginning of
+a list, or that it attaches or pushes elements onto the list, but this
 phrasing can be misleading, since @code{cons} does not change an
 existing list, but creates a new one.
 
@@ -7281,9 +7279,9 @@ This can be very convenient.
 
 Note that the elements are numbered from zero, not one.  That is to
 say, the first element of a list, its @sc{car} is the zeroth element.
-This is called ``zero-based'' counting and often bothers people who
+This zero-based counting often bothers people who
 are accustomed to the first element in a list being number one, which
-is ``one-based''.
+is one-based.
 
 @need 1250
 For example:
@@ -7422,7 +7420,7 @@ variable which has a list as its value, and the list to which the
 @noindent
 If you evaluate this expression, the list @code{(cat dog)} will appear
 in the echo area.  This is the value returned by the function.  The
-result we are interested in is the ``side effect'', which we can see by
+result we are interested in is the side effect, which we can see by
 evaluating the variable @code{domesticated-animals}:
 
 @smallexample
@@ -7454,9 +7452,9 @@ fish.  Replace the rest of that list with a list of other fish.
 @cindex Erasing text
 @cindex Deleting text
 
-Whenever you cut or clip text out of a buffer with a ``kill'' command in
+Whenever you cut or clip text out of a buffer with a @dfn{kill} command in
 GNU Emacs, it is stored in a list and you can bring it back with a
-``yank'' command.
+@dfn{yank} command.
 
 (The use of the word ``kill'' in Emacs for processes which specifically
 @emph{do not} destroy the values of the entities is an unfortunate
@@ -7537,7 +7535,7 @@ than nothing at all.
 The list that holds the pieces of text is called the @dfn{kill ring}.
 This chapter leads up to a description of the kill ring and how it is
 used by first tracing how the @code{zap-to-char} function works.  This
-function uses (or ``calls'') a function that invokes a function that
+function calls a function that invokes a function that
 manipulates the kill ring.  Thus, before reaching the mountains, we
 climb the foothills.
 
@@ -7648,7 +7646,7 @@ The part within quotation marks, @code{"p\ncZap to char:@: "}, specifies
 two different things.  First, and most simply, is the @samp{p}.
 This part is separated from the next part by a newline, @samp{\n}.
 The @samp{p} means that the first argument to the function will be
-passed the value of a ``processed prefix''.  The prefix argument is
+passed the value of a @dfn{processed prefix}.  The prefix argument is
 passed by typing @kbd{C-u} and a number, or @kbd{M-} and a number.  If
 the function is called interactively without a prefix, 1 is passed to
 this argument.
@@ -7719,7 +7717,7 @@ function @code{char-to-string} to ensure that the computer treats that
 character as a string.)  If the search is backwards,
 @code{search-forward} leaves point just before the first character in
 the target.  Also, @code{search-forward} returns @code{t} for true.
-(Moving point is therefore a ``side effect''.)
+(Moving point is therefore a side effect.)
 
 @need 1250
 In @code{zap-to-char}, the @code{search-forward} function looks like this:
@@ -8219,7 +8217,7 @@ Technically speaking, @code{when} is a Lisp macro.  A Lisp macro
 enables you to define new control constructs and other language
 features.  It tells the interpreter how to compute another Lisp
 expression which will in turn compute the value.  In this case, the
-``other expression'' is an @code{if} expression.
+other expression is an @code{if} expression.
 
 The @code{kill-region} function definition also has an @code{unless}
 macro; it is the converse of @code{when}.  The @code{unless} macro is
@@ -8253,7 +8251,7 @@ The then-part is evaluated if the previous command was another call to
 
 @code{yank-handler} is an optional argument to @code{kill-region} that
 tells the @code{kill-append} and @code{kill-new} functions how deal
-with properties added to the text, such as ``bold'' or ``italics''.
+with properties added to the text, such as bold or italics.
 
 @code{last-command} is a variable that comes with Emacs that we have
 not seen before.  Normally, whenever a function is executed, Emacs
@@ -8341,7 +8339,7 @@ document from the beginning, understanding these parts of a function is
 almost becoming routine.
 
 The documentation is somewhat confusing unless you remember that the
-word ``kill'' has a meaning different from usual.  The ``Transient Mark''
+word ``kill'' has a meaning different from usual.  The Transient Mark
 and @code{interprogram-cut-function} comments explain certain
 side-effects.
 
@@ -8493,8 +8491,8 @@ a moment.
 
 (Also, the function provides an optional argument called
 @code{yank-handler}; when invoked, this argument tells the function
-how to deal with properties added to the text, such as ``bold'' or
-``italics''.)
+how to deal with properties added to the text, such as bold or
+italics.)
 
 @c !!! bug in GNU Emacs 22 version of  kill-append ?
 It has a @code{let*} function to set the value of the first element of
@@ -8652,7 +8650,7 @@ As usual, we can look at this function in parts.
 
 The function definition has an optional @code{yank-handler} argument,
 which when invoked tells the function how to deal with properties
-added to the text, such as ``bold'' or ``italics''.  We will skip that.
+added to the text, such as bold or italics.  We will skip that.
 
 @need 1200
 The first line of the documentation makes sense:
@@ -8896,7 +8894,7 @@ It starts with an @code{if} expression
 In this case, the expression tests first to see whether
 @code{menu-bar-update-yank-menu} exists as a function, and if so,
 calls it.  The @code{fboundp} function returns true if the symbol it
-is testing has a function definition that ``is not void''.  If the
+is testing has a function definition that is not void.  If the
 symbol's function definition were void, we would receive an error
 message, as we did when we created errors intentionally (@pxref{Making
 Errors, , Generate an Error Message}).
@@ -8970,7 +8968,7 @@ expression is true, @code{kill-append} prepends the string to the just
 previously clipped text.  For a detailed discussion, see
 @ref{kill-append function, , The @code{kill-append} function}.)
 
-If you then yank back the text, i.e., ``paste'' it, you get both
+If you then yank back the text, i.e., paste it, you get both
 pieces of text at once.  That way, if you delete two words in a row,
 and then yank them back, you get both words, in their proper order,
 with one yank.  (The @w{@code{(< end beg))}} expression makes sure the
@@ -9076,7 +9074,7 @@ The sixth part is nearly like the argument that follows the
 @code{interactive} declaration in a function written in Lisp: a letter
 followed, perhaps, by a prompt.  The only difference from the Lisp is
 when the macro is called with no arguments.  Then you write a @code{0}
-(which is a ``null string''), as in this macro.
+(which is a null string), as in this macro.
 
 If you were to specify arguments, you would place them between
 quotation marks.  The C macro for @code{goto-char} includes
@@ -9088,13 +9086,13 @@ and provides a prompt.
 The seventh part is a documentation string, just like the one for a
 function written in Emacs Lisp.  This is written as a C comment.  (When
 you build Emacs, the program @command{lib-src/make-docfile} extracts
-these comments and uses them to make the ``real'' documentation.)
+these comments and uses them to make the documentation.)
 @end itemize
 
 @need 1200
 In a C macro, the formal parameters come next, with a statement of
-what kind of object they are, followed by what might be called the ``body''
-of the macro.  For @code{delete-and-extract-region} the ``body''
+what kind of object they are, followed by the body
+of the macro.  For @code{delete-and-extract-region} the body
 consists of the following four lines:
 
 @smallexample
@@ -9126,7 +9124,7 @@ also be a C union instead of an integer type.}.
 In early versions of Emacs, these two numbers were thirty-two bits
 long, but the code is slowly being generalized to handle other
 lengths.  Three of the available bits are used to specify the type of
-information; the remaining bits are used as ``content''.
+information; the remaining bits are used as content.
 
 @samp{XINT} is a C macro that extracts the relevant number from the
 longer collection of bits; the three other bits are discarded.
@@ -9822,7 +9820,7 @@ and in one of its drawers you found a map giving you directions to
 where the buried treasure lies.
 
 (In addition to its name, symbol definition, and variable value, a
-symbol has a ``drawer'' for a @dfn{property list} which can be used to
+symbol has a drawer for a @dfn{property list} which can be used to
 record other information.  Property lists are not discussed here; see
 @ref{Property Lists, , Property Lists, elisp, The GNU Emacs Lisp
 Reference Manual}.)
@@ -9916,8 +9914,8 @@ What does the @code{more-flowers} list now contain?
 @cindex Retrieving text
 @cindex Pasting text
 
-Whenever you cut text out of a buffer with a ``kill'' command in GNU Emacs,
-you can bring it back with a ``yank'' command.  The text that is cut out of
+Whenever you cut text out of a buffer with a kill command in GNU Emacs,
+you can bring it back with a yank command.  The text that is cut out of
 the buffer is put in the kill ring and the yank commands insert the
 appropriate contents of the kill ring back into a buffer (not necessarily
 the original buffer).
@@ -10073,7 +10071,7 @@ These two ways of talking about the same thing sound confusing at first but
 make sense on reflection.  The kill ring is generally thought of as the
 complete structure of data that holds the information of what has recently
 been cut out of the Emacs buffers.  The @code{kill-ring-yank-pointer}
-on the other hand, serves to indicate---that is, to ``point to''---that part
+on the other hand, serves to indicate---that is, to point to---that part
 of the kill ring of which the first element (the @sc{car}) will be
 inserted.
 
@@ -10157,7 +10155,7 @@ their kin; but you can use recursion, which provides a very powerful
 way to think about and then to solve problems@footnote{You can write
 recursive functions to be frugal or wasteful of mental or computer
 resources; as it happens, methods that people find easy---that are
-frugal of ``mental resources''---sometimes use considerable computer
+frugal of mental resources---sometimes use considerable computer
 resources.  Emacs was designed to run on machines that we now consider
 limited and its default settings are conservative.  You may want to
 increase the values of @code{max-specpdl-size} and
@@ -10220,7 +10218,7 @@ evaluated.  This process is called a loop since the Lisp interpreter
 repeats the same thing again and again, like an airplane doing a loop.
 When the result of evaluating the true-or-false-test is false, the
 Lisp interpreter does not evaluate the rest of the @code{while}
-expression and ``exits the loop''.
+expression and exits the loop.
 
 Clearly, if the value returned by evaluating the first argument to
 @code{while} is always true, the body following will be evaluated
@@ -10381,7 +10379,7 @@ expression, @code{(print-elements-of-list animals)}, by typing
 to be printed in the @file{*scratch*} buffer instead of being printed
 in the echo area.  (Otherwise you will see something like this in your
 echo area: @code{^Jgazelle^J^Jgiraffe^J^Jlion^J^Jtiger^Jnil}, in which
-each @samp{^J} stands for a ``newline''.)
+each @samp{^J} stands for a newline.)
 
 @need 1500
 In a recent instance of GNU Emacs, you can evaluate these expressions
@@ -10950,8 +10948,8 @@ provide for looping.  Sometimes these are quicker to write than the
 equivalent @code{while} loop.  Both are Lisp macros.  (@xref{Macros, ,
 Macros, elisp, The GNU Emacs Lisp Reference Manual}. )
 
-@code{dolist} works like a @code{while} loop that ``@sc{cdr}s down a
-list'':  @code{dolist} automatically shortens the list each time it
+@code{dolist} works like a @code{while} loop that @sc{cdr}s down a
+list:  @code{dolist} automatically shortens the list each time it
 loops---takes the @sc{cdr} of the list---and binds the @sc{car} of
 each shorter version of the list to the first of its arguments.
 
@@ -11052,7 +11050,7 @@ of the work you have to do when writing a @code{while} expression.
 
 Like a @code{while} loop, a @code{dolist} loops.  What is different is
 that it automatically shortens the list each time it loops---it
-``@sc{cdr}s down the list'' on its own---and it automatically binds
+@sc{cdr}s down the list on its own---and it automatically binds
 the @sc{car} of each shorter version of the list to the first of its
 arguments.
 
@@ -11127,8 +11125,8 @@ the same name.  However, even though the program has the same name, it
 is not the same entity.  It is different.  In the jargon, it is a
 different ``instance''.
 
-Eventually, if the program is written correctly, the ``slightly
-different arguments'' will become sufficiently different from the first
+Eventually, if the program is written correctly, the slightly
+different arguments will become sufficiently different from the first
 arguments that the final instance will stop.
 
 @menu
@@ -11168,8 +11166,8 @@ install a function definition, that is, when you evaluate a
 @code{defun} macro, you install the necessary equipment to build
 robots.  It is as if you were in a factory, setting up an assembly
 line.  Robots with the same name are built according to the same
-blueprints.  So they have, as it were, the same ``model number'', but a
-different ``serial number''.
+blueprints.  So they have the same model number, but a
+different serial number.
 
 We often say that a recursive function ``calls itself''.  What we mean
 is that the instructions in a recursive function cause the Lisp
@@ -11282,7 +11280,7 @@ Uses recursion."
 The @code{print-elements-recursively} function first tests whether
 there is any content in the list; if there is, the function prints the
 first element of the list, the @sc{car} of the list.  Then the
-function ``invokes itself'', but gives itself as its argument, not the
+function invokes itself, but gives itself as its argument, not the
 whole list, but the second and subsequent elements of the list, the
 @sc{cdr} of the list.
 
@@ -11298,7 +11296,7 @@ a different individual from the first, but is the same model.
 When the second evaluation occurs, the @code{when} expression is
 evaluated and if true, prints the first element of the list it
 receives as its argument (which is the second element of the original
-list).  Then the function ``calls itself'' with the @sc{cdr} of the list
+list).  Then the function calls itself with the @sc{cdr} of the list
 it is invoked with, which (the second time around) is the @sc{cdr} of
 the @sc{cdr} of the original list.
 
@@ -11307,7 +11305,7 @@ mean is that the Lisp interpreter assembles and instructs a new
 instance of the program.  The new instance is a clone of the first,
 but is a separate individual.
 
-Each time the function ``invokes itself'', it invokes itself on a
+Each time the function invokes itself, it does so on a
 shorter version of the original list.  It creates a new instance that
 works on a shorter list.
 
@@ -11725,7 +11723,7 @@ the @code{accumulate} recursive pattern, an action is performed on
 every element of a list and the result of that action is accumulated
 with the results of performing the action on the other elements.
 
-This is very like the ``every'' pattern using @code{cons}, except that
+This is very like the @code{every} pattern using @code{cons}, except that
 @code{cons} is not used, but some other combiner.
 
 @need 1500
@@ -11776,7 +11774,7 @@ In the @code{keep} recursive pattern, each element of a list is tested;
 the element is acted on and the results are kept only if the element
 meets a criterion.
 
-Again, this is very like the ``every'' pattern, except the element is
+Again, this is very like the @code{every} pattern, except the element is
 skipped unless it meets a criterion.
 
 @need 1500
@@ -11926,12 +11924,12 @@ more steps.
 The solution to the problem of deferred operations is to write in a
 manner that does not defer operations@footnote{The phrase @dfn{tail
 recursive} is used to describe such a process, one that uses
-``constant space''.}.  This requires
+constant space.}.  This requires
 writing to a different pattern, often one that involves writing two
-function definitions, an ``initialization'' function and a ``helper''
+function definitions, an initialization function and a helper
 function.
 
-The ``initialization'' function sets up the job; the ``helper'' function
+The initialization function sets up the job; the helper function
 does the work.
 
 @need 1200
@@ -11942,7 +11940,7 @@ so simple, I find them hard to understand.
 @group
 (defun triangle-initialization (number)
   "Return the sum of the numbers 1 through NUMBER inclusive.
-This is the `initialization' component of a two function
+This is the initialization component of a two function
 duo that uses recursion."
   (triangle-recursive-helper 0 0 number))
 @end group
@@ -11952,7 +11950,7 @@ duo that uses recursion."
 @group
 (defun triangle-recursive-helper (sum counter number)
   "Return SUM, using COUNTER, through NUMBER inclusive.
-This is the “helper” component of a two function duo
+This is the helper component of a two function duo
 that uses recursion."
   (if (> counter number)
       sum
@@ -11973,18 +11971,18 @@ Install both function definitions by evaluating them, then call
 @end group
 @end smallexample
 
-The ``initialization'' function calls the first instance of the ``helper''
+The initialization function calls the first instance of the helper
 function with three arguments: zero, zero, and a number which is the
 number of rows in the triangle.
 
-The first two arguments passed to the ``helper'' function are
+The first two arguments passed to the helper function are
 initialization values.  These values are changed when
 @code{triangle-recursive-helper} invokes new instances.@footnote{The
 jargon is mildly confusing:  @code{triangle-recursive-helper} uses a
 process that is iterative in a procedure that is recursive.  The
 process is called iterative because the computer need only record the
 three values, @code{sum}, @code{counter}, and @code{number}; the
-procedure is recursive because the function ``calls itself''.  On the
+procedure is recursive because the function calls itself.  On the
 other hand, both the process and the procedure used by
 @code{triangle-recursively} are called recursive.  The word
 ``recursive'' has different meanings in the two contexts.}
@@ -12338,7 +12336,7 @@ search is successful, it leaves point immediately after the last
 character in the target.  If the search is backwards, it leaves point
 just before the first character in the target.  You may tell
 @code{re-search-forward} to return @code{t} for true.  (Moving point
-is therefore a ``side effect''.)
+is therefore a side effect.)
 
 Like @code{search-forward}, the @code{re-search-forward} function takes
 four arguments:
@@ -12640,7 +12638,7 @@ evaluates its then-part; otherwise, the Emacs Lisp interpreter
 evaluates the else-part.  The true-or-false-test of the @code{if}
 expression is the regular expression search.
 
-It may seem odd to have what looks like the ``real work'' of
+It may seem odd to have what looks like the real work of
 the @code{forward-sentence} function buried here, but this is a common
 way this kind of operation is carried out in Lisp.
 
@@ -13372,7 +13370,7 @@ of which I load 12---you can create a @file{TAGS} file for the Emacs
 Lisp files in that directory.
 
 @need 1250
-The @code{etags} program takes all the usual shell ``wildcards''.  For
+The @code{etags} program takes all the usual shell wildcards.  For
 example, if you have two directories for which you want a single
 @file{TAGS} file, type @w{@code{etags *.el ../elisp/*.el}}, where
 @file{../elisp/} is the second directory:
@@ -13411,7 +13409,7 @@ program to attempt to find it.
 Type @w{@kbd{M-x locate @key{RET} TAGS @key{RET}}} and Emacs will list
 for you the full path names of all your @file{TAGS} files.  On my
 system, this command lists 34 @file{TAGS} files.  On the other hand, a
-``plain vanilla'' system I recently installed did not contain any
+plain vanilla system I recently installed did not contain any
 @file{TAGS} files.
 
 If the tags table you want has been created, you can use the @code{M-x
@@ -13724,7 +13722,7 @@ single backslash has special meaning to the Emacs Lisp interpreter.
 It indicates that the following character is interpreted differently
 than usual.  For example, the two characters, @samp{\n}, stand for
 @samp{newline}, rather than for a backslash followed by @samp{n}.  Two
-backslashes in a row stand for an ordinary, ``unspecial'' backslash, so
+backslashes in a row stand for an ordinary, unspecial backslash, so
 Emacs Lisp interpreter ends of seeing a single backslash followed by a
 letter.  So it discovers the letter is special.)
 
@@ -14116,8 +14114,8 @@ the region, as returned by the recursive call; and then the
 user.
 
 Often, one thinks of the binding within a @code{let} expression as
-somehow secondary to the ``primary'' work of a function.  But in this
-case, what you might consider the ``primary'' job of the function,
+somehow secondary to the primary work of a function.  But in this
+case, what you might consider the primary job of the function,
 counting words, is done within the @code{let} expression.
 
 @need 1250
@@ -14158,8 +14156,8 @@ Using @code{let}, the function definition looks like this:
 
 Next, we need to write the recursive counting function.
 
-A recursive function has at least three parts: the ``do-again-test'', the
-``next-step-expression'', and the recursive call.
+A recursive function has at least three parts: the do-again-test, the
+next-step-expression, and the recursive call.
 
 The do-again-test determines whether the function will or will not be
 called again.  Since we are counting words in a region and can use a
@@ -14183,7 +14181,7 @@ the expression that moves point forward, word by word.
 
 The third part of a recursive function is the recursive call.
 
-Somewhere, also, we also need a part that does the ``work'' of the
+Somewhere, also, we also need a part that does the work of the
 function, a part that does the counting.  A vital part!
 
 @need 1250
@@ -14511,7 +14509,7 @@ When we first start thinking about how to count the words in a
 function definition, the first question is (or ought to be) what are
 we going to count?  When we speak of ``words'' with respect to a Lisp
 function definition, we are actually speaking, in large part, of
-``symbols''.  For example, the following @code{multiply-by-seven}
+symbols.  For example, the following @code{multiply-by-seven}
 function contains the five symbols @code{defun},
 @code{multiply-by-seven}, @code{number}, @code{*}, and @code{7}.  In
 addition, in the documentation string, it contains the four words
@@ -14572,9 +14570,9 @@ character.  (For more information, @pxref{Syntax Tables, , Syntax
 Tables, elisp, The GNU Emacs Lisp Reference Manual}.)
 
 Syntax tables specify which characters belong to which categories.
-Usually, a hyphen is not specified as a ``word constituent character''.
-Instead, it is specified as being in the ``class of characters that are
-part of symbol names but not words.''  This means that the
+Usually, a hyphen is not specified as a word constituent character.
+Instead, it is specified as being in the class of characters that are
+part of symbol names but not words.  This means that the
 @code{@value{COUNT-WORDS}} function treats it in the same way it treats
 an interword white space, which is why @code{@value{COUNT-WORDS}}
 counts @samp{multiply-by-seven} as three words.
@@ -14593,8 +14591,8 @@ Alternatively, we can redefine the regexp used in the
 procedure has the merit of clarity, but the task is a little tricky.
 
 @need 1200
-The first part is simple enough: the pattern must match ``at least one
-character that is a word or symbol constituent''.  Thus:
+The first part is simple enough: the pattern must match at least one
+character that is a word or symbol constituent.  Thus:
 
 @smallexample
 "\\(\\w\\|\\s_\\)+"
@@ -14610,8 +14608,8 @@ following the group indicates that the word or symbol constituent
 characters must be matched at least once.
 
 However, the second part of the regexp is more difficult to design.
-What we want is to follow the first part with ``optionally one or more
-characters that are not constituents of a word or symbol''.  At first,
+What we want is to follow the first part with optionally one or more
+characters that are not constituents of a word or symbol.  At first,
 I thought I could define this with the following:
 
 @smallexample
@@ -14977,7 +14975,7 @@ The task is easy: use @code{find-file-noselect} and @code{set-buffer}.
 @section @code{lengths-list-file} in Detail
 
 The core of the @code{lengths-list-file} function is a @code{while}
-loop containing a function to move point forward ``defun by defun'' and
+loop containing a function to move point forward defun by defun, and
 a function to count the number of words and symbols in each defun.
 This core must be surrounded by functions that do various other tasks,
 including finding the file, and ensuring that point starts out at the
@@ -15043,14 +15041,14 @@ Next comes a call to widen the buffer if it is narrowed.  This
 function is usually not needed---Emacs creates a fresh buffer if none
 already exists; but if a buffer visiting the file already exists Emacs
 returns that one.  In this case, the buffer may be narrowed and must
-be widened.  If we wanted to be fully ``user-friendly'', we would
+be widened.  If we wanted to be fully user-friendly, we would
 arrange to save the restriction and the location of point, but we
 won't.
 
 The @code{(goto-char (point-min))} expression moves point to the
 beginning of the buffer.
 
-Then comes a @code{while} loop in which the ``work'' of the function is
+Then comes a @code{while} loop in which the work of the function is
 carried out.  In the loop, Emacs determines the length of each
 definition and constructs a lengths' list containing the information.
 
@@ -15271,11 +15269,11 @@ Besides a @code{while} loop, you can work on each of a list of files
 with recursion.  A recursive version of @code{lengths-list-many-files}
 is short and simple.
 
-The recursive function has the usual parts: the ``do-again-test'', the
-``next-step-expression'', and the recursive call.  The ``do-again-test''
+The recursive function has the usual parts: the do-again-test, the
+next-step-expression, and the recursive call.  The do-again-test
 determines whether the function should call itself again, which it
 will do if the @code{list-of-files} contains any remaining elements;
-the ``next-step-expression'' resets the @code{list-of-files} to the
+the next-step-expression resets the @code{list-of-files} to the
 @sc{cdr} of itself, so eventually the list will be empty; and the
 recursive call calls itself on the shorter list.  The complete
 function is shorter than this description!
@@ -15376,7 +15374,7 @@ numbers.
 @end ifnottex
 
 Based on what we have done before, we can readily foresee that it
-should not be too hard to write a function that ``@sc{cdr}s'' down the
+should not be too hard to write a function that @sc{cdr}s down the
 lengths' list, looks at each element, determines which length range it
 is in, and increments a counter for that range.
 
@@ -15396,7 +15394,7 @@ that we will need.
 Emacs contains a function to sort lists, called (as you might guess)
 @code{sort}.  The @code{sort} function takes two arguments, the list
 to be sorted, and a predicate that determines whether the first of
-two list elements is ``less'' than the second.
+two list elements is less than the second.
 
 As we saw earlier (@pxref{Wrong Type of Argument, , Using the Wrong
 Type Object as an Argument}), a predicate is a function that
@@ -15515,7 +15513,7 @@ as a list that looks like this (but with more elements):
 The @code{directory-files-and-attributes} function returns a list of
 lists.  Each of the lists within the main list consists of 13
 elements.  The first element is a string that contains the name of the
-file---which, in GNU/Linux, may be a ``directory file'', that is to
+file---which, in GNU/Linux, may be a @dfn{directory file}, that is to
 say, a file with the special attributes of a directory.  The second
 element of the list is @code{t} for a directory, a string
 for symbolic link (the string is the name linked to), or @code{nil}.
@@ -15580,8 +15578,8 @@ the function comes upon a sub-directory, it should go into that
 sub-directory and repeat its actions.
 
 However, we should note that every directory contains a name that
-refers to itself, called @file{.}, (``dot'') and a name that refers to
-its parent directory, called @file{..} (``double dot'').  (In
+refers to itself, called @file{.} (``dot''), and a name that refers to
+its parent directory, called @file{..} (``dot dot'').  (In
 @file{/}, the root directory, @file{..} refers to itself, since
 @file{/} has no parent.)  Clearly, we do not want our
 @code{files-in-below-directory} function to enter those directories,
@@ -15614,7 +15612,7 @@ Let's write a function definition to do these tasks.  We will use a
 @code{while} loop to move from one filename to another within a
 directory, checking what needs to be done; and we will use a recursive
 call to repeat the actions on each sub-directory.  The recursive
-pattern is ``accumulate''
+pattern is Accumulate
 (@pxref{Accumulate}),
 using @code{append} as the combiner.
 
@@ -15866,7 +15864,7 @@ produces:
 (4 3 2 1)
 @end smallexample
 
-Note that the @code{nreverse} function is ``destructive''---that is,
+Note that the @code{nreverse} function is destructive---that is,
 it changes the list to which it is applied; this contrasts with the
 @code{car} and @code{cdr} functions, which are non-destructive.  In
 this case, we do not want the original @code{defuns-per-range-list},
@@ -16072,7 +16070,7 @@ the function to label the axes automatically.
 
 Since Emacs is designed to be flexible and work with all kinds of
 terminals, including character-only terminals, the graph will need to
-be made from one of the ``typewriter'' symbols.  An asterisk will do; as
+be made from one of the typewriter symbols.  An asterisk will do; as
 we enhance the graph-printing function, we can make the choice of
 symbol a user option.
 
@@ -16239,7 +16237,7 @@ Wrong type of argument:  number-or-marker-p, (3 4 6 5 7 3)
 
 @findex apply
 We need a function that passes a list of arguments to a function.
-This function is @code{apply}.  This function ``applies'' its first
+This function is @code{apply}.  This function applies its first
 argument (a function) to its remaining arguments, the last of which
 may be a list.
 
@@ -16257,7 +16255,7 @@ returns 8.
 without a book such as this.  It is possible to discover other
 functions, like @code{search-forward} or @code{insert-rectangle}, by
 guessing at a part of their names and then using @code{apropos}.  Even
-though its base in metaphor is clear---``apply'' its first argument to
+though its base in metaphor is clear---apply its first argument to
 the rest---I doubt a novice would come up with that particular word
 when using @code{apropos} or other aid.  Of course, I could be wrong;
 after all, the function was first named by someone who had to invent
@@ -16345,7 +16343,7 @@ returns
 
 As written, @code{column-of-graph} contains a major flaw: the symbols
 used for the blank and for the marked entries in the column are
-``hard-coded'' as a space and asterisk.  This is fine for a prototype,
+hard-coded as a space and asterisk.  This is fine for a prototype,
 but you, or another user, may wish to use other symbols.  For example,
 in testing the graph function, you many want to use a period in place
 of the space, to make sure the point is being repositioned properly
@@ -16424,7 +16422,7 @@ is no more than a bar graph in which the part of each bar that is
 below the top is blank.  To construct a column for a line graph, the
 function first constructs a list of blanks that is one shorter than
 the value, then it uses @code{cons} to attach a graph symbol to the
-list; then it uses @code{cons} again to attach the ``top blanks'' to
+list; then it uses @code{cons} again to attach the top blanks to
 the list.
 
 It is easy to see how to write such a function, but since we don't
@@ -16540,7 +16538,7 @@ The one unexpected expression in this function is the
 @w{@code{(sit-for 0)}} expression in the @code{while} loop.  This
 expression makes the graph printing operation more interesting to
 watch than it would be otherwise.  The expression causes Emacs to
-``sit'' or do nothing for a zero length of time and then redraw the
+@dfn{sit} or do nothing for a zero length of time and then redraw the
 screen.  Placed here, it causes Emacs to redraw the screen column by
 column.  Without it, Emacs would not redraw the screen until the
 function exits.
@@ -16602,14 +16600,14 @@ Emacs will print a graph like this:
 @findex recursive-graph-body-print
 
 The @code{graph-body-print} function may also be written recursively.
-The recursive solution is divided into two parts: an outside ``wrapper''
+The recursive solution is divided into two parts: an outside wrapper
 that uses a @code{let} expression to determine the values of several
 variables that need only be found once, such as the maximum height of
 the graph, and an inside function that is called recursively to print
 the graph.
 
 @need 1250
-The ``wrapper'' is uncomplicated:
+The wrapper is uncomplicated:
 
 @smallexample
 @group
@@ -16627,13 +16625,13 @@ The numbers-list consists of the Y-axis values."
 @end smallexample
 
 The recursive function is a little more difficult.  It has four parts:
-the ``do-again-test'', the printing code, the recursive call, and the
-``next-step-expression''.  The ``do-again-test'' is a @code{when}
+the do-again-test, the printing code, the recursive call, and the
+next-step-expression.  The do-again-test is a @code{when}
 expression that determines whether the @code{numbers-list} contains
 any remaining elements; if it does, the function prints one column of
 the graph using the printing code and calls itself again.  The
 function calls itself again according to the value produced by the
-``next-step-expression'' which causes the call to act on a shorter
+next-step-expression which causes the call to act on a shorter
 version of the @code{numbers-list}.
 
 @smallexample
@@ -16709,8 +16707,8 @@ Write a line graph version of the graph printing functions.
 @cindex Initialization file
 
 ``You don't have to like Emacs to like it''---this seemingly
-paradoxical statement is the secret of GNU Emacs.  The plain, ``out of
-the box'' Emacs is a generic tool.  Most people who use it, customize
+paradoxical statement is the secret of GNU Emacs.  The plain, out-of-the-box
+Emacs is a generic tool.  Most people who use it, customize
 it to suit themselves.
 
 GNU Emacs is mostly written in Emacs Lisp; this means that by writing
@@ -16748,7 +16746,7 @@ person hopes to do with an unadorned file?  Fundamental mode is the
 right default for such a file, just as C mode is the right default for
 editing C code.  (Enough programming languages have syntaxes
 that enable them to share or nearly share features, so C mode is
-now provided by CC mode, the ``C Collection''.)
+now provided by CC mode, the C Collection.)
 
 But when you do know who is going to use Emacs---you,
 yourself---then it makes sense to customize Emacs.
@@ -16793,8 +16791,8 @@ have the same form as your @file{.emacs} file, but are loaded by
 everyone.
 
 Two site-wide initialization files, @file{site-load.el} and
-@file{site-init.el}, are loaded into Emacs and then ``dumped'' if a
-``dumped'' version of Emacs is created, as is most common.  (Dumped
+@file{site-init.el}, are loaded into Emacs and then dumped if a
+dumped version of Emacs is created, as is most common.  (Dumped
 copies of Emacs load more quickly.  However, once a file is loaded and
 dumped, a change to it does not lead to a change in Emacs unless you
 load it yourself or re-dump Emacs.  @xref{Building Emacs, , Building
@@ -17077,7 +17075,7 @@ remember to look here to remind myself.
 @node Text and Auto-fill
 @section Text and Auto Fill Mode
 
-Now we come to the part that ``turns on'' Text mode and
+Now we come to the part that turns on Text mode and
 Auto Fill mode.
 
 @smallexample
@@ -17109,7 +17107,7 @@ on C mode.  Also, Emacs looks at first nonblank line of the file; if
 the line says @w{@samp{-*- C -*-}}, Emacs turns on C mode.  Emacs
 possesses a list of extensions and specifications that it uses
 automatically.  In addition, Emacs looks near the last page for a
-per-buffer, ``local variables list'', if any.
+per-buffer, local variables list, if any.
 
 @ifinfo
 @xref{Choosing Modes, , How Major Modes are Chosen, emacs, The GNU
@@ -17162,7 +17160,7 @@ In this line, the @code{add-hook} command adds
 @code{turn-on-auto-fill} is the name of a program, that, you guessed
 it!, turns on Auto Fill mode.
 
-Every time Emacs turns on Text mode, Emacs runs the commands ``hooked''
+Every time Emacs turns on Text mode, Emacs runs the commands hooked
 onto Text mode.  So every time Emacs turns on Text mode, Emacs also
 turns on Auto Fill mode.
 
@@ -17199,7 +17197,7 @@ fill commands to insert two spaces after a colon:
 @node Mail Aliases
 @section Mail Aliases
 
-Here is a @code{setq} that ``turns on'' mail aliases, along with more
+Here is a @code{setq} that turns on mail aliases, along with more
 reminders.
 
 @smallexample
@@ -17219,7 +17217,7 @@ This @code{setq} command sets the value of the variable
 says, in effect, ``Yes, use mail aliases.''
 
 Mail aliases are convenient short names for long email addresses or
-for lists of email addresses.  The file where you keep your ``aliases''
+for lists of email addresses.  The file where you keep your aliases
 is @file{~/.mailrc}.  You write an alias like this:
 
 @smallexample
@@ -17294,9 +17292,9 @@ This also shows how to set a key globally, for all modes.
 @findex global-set-key
 The command is @code{global-set-key}.  It is followed by the
 keybinding.  In a @file{.emacs} file, the keybinding is written as
-shown: @code{\C-c} stands for ``control-c'', which means ``press the
-control key and the @key{c} key at the same time''.  The @code{w} means
-``press the @key{w} key''.  The keybinding is surrounded by double
+shown: @code{\C-c} stands for Control-C, which means to press the
+control key and the @key{c} key at the same time.  The @code{w} means
+to press the @key{w} key.  The keybinding is surrounded by double
 quotation marks.  In documentation, you would write this as
 @w{@kbd{C-c w}}.  (If you were binding a @key{META} key, such as
 @kbd{M-c}, rather than a @key{CTRL} key, you would write
@@ -17317,12 +17315,12 @@ adapt what is there.
 As for the keybinding itself: @kbd{C-c w}.  This combines the prefix
 key, @kbd{C-c}, with a single character, in this case, @kbd{w}.  This
 set of keys, @kbd{C-c} followed by a single character, is strictly
-reserved for individuals' own use.  (I call these ``own'' keys, since
+reserved for individuals' own use.  (I call these @dfn{own} keys, since
 these are for my own use.)  You should always be able to create such a
 keybinding for your own use without stomping on someone else's
 keybinding.  If you ever write an extension to Emacs, please avoid
 taking any of these keys for public use.  Create a key like @kbd{C-c
-C-w} instead.  Otherwise, we will run out of ``own'' keys.
+C-w} instead.  Otherwise, we will run out of own keys.
 
 @need 1250
 Here is another keybinding, with a comment:
@@ -17565,13 +17563,13 @@ first use such a function, while its containing file is evaluated.
 Rarely used functions are frequently autoloaded.  The
 @file{loaddefs.el} library contains thousands of autoloaded functions,
 from @code{5x5} to @code{zone}.  Of course, you may
-come to use a ``rare'' function frequently.  When you do, you should
+come to use a rare function frequently.  When you do, you should
 load that function's file with a @code{load} expression in your
 @file{.emacs} file.
 
 In my @file{.emacs} file, I load 14 libraries that contain functions
 that would otherwise be autoloaded.  (Actually, it would have been
-better to include these files in my ``dumped'' Emacs, but I forgot.
+better to include these files in my dumped Emacs, but I forgot.
 @xref{Building Emacs, , Building Emacs, elisp, The GNU Emacs Lisp
 Reference Manual}, and the @file{INSTALL} file for more about
 dumping.)
@@ -17932,7 +17930,7 @@ This avoids problems with symbolic links.
 @end group
 @end smallexample
 
-If you want to write with Chinese ``GB'' characters, set this instead:
+If you want to write with Chinese GB characters, set this instead:
 
 @smallexample
 @group
@@ -18122,7 +18120,7 @@ window.)
 @code{:eval} says to evaluate the following form and use the result as
 a string to display.  In this case, the expression displays the first
 component of the full system name.  The end of the first component is
-a @samp{.} (``period''), so I use the @code{string-match} function to
+a @samp{.} (period), so I use the @code{string-match} function to
 tell me the length of the first component.  The substring from the
 zeroth character to that length is the name of the machine.
 
@@ -18144,11 +18142,11 @@ or ``All''.  (A lower case @samp{p} tell you the percentage above the
 @emph{top} of the window.)  @samp{%-} inserts enough dashes to fill
 out the line.
 
-Remember, ``You don't have to like Emacs to like it''---your own
+Remember, you don't have to like Emacs to like it---your own
 Emacs can have different colors, different commands, and different
 keys than a default Emacs.
 
-On the other hand, if you want to bring up a plain ``out of the box''
+On the other hand, if you want to bring up a plain out-of-the-box
 Emacs, with no customization, type:
 
 @smallexample
@@ -18249,9 +18247,9 @@ Debugger entered--Lisp error: (void-function 1=)
 long lines.  As usual, you can quit the debugger by typing @kbd{q} in
 the @file{*Backtrace*} buffer.)
 
-In practice, for a bug as simple as this, the ``Lisp error'' line will
+In practice, for a bug as simple as this, the Lisp error line will
 tell you what you need to know to correct the definition.  The
-function @code{1=} is ``void''.
+function @code{1=} is void.
 
 @ignore
 @need 800
@@ -18547,7 +18545,7 @@ beginning of the @code{if} line of the function.  Also, you will see
 an arrowhead at the left hand side of that line.  The arrowhead marks
 the line where the function is executing.  (In the following examples,
 we show the arrowhead with @samp{=>}; in a windowing system, you may
-see the arrowhead as a solid triangle in the window ``fringe''.)
+see the arrowhead as a solid triangle in the window fringe.)
 
 @smallexample
 =>@point{}(if (= number 1)
@@ -18582,7 +18580,7 @@ Result: 3 (#o3, #x3, ?\C-c)
 
 @noindent
 This means the value of @code{number} is 3, which is octal three,
-hexadecimal three, and @sc{ascii} ``control-c'' (the third letter of the
+hexadecimal three, and @sc{ascii} Control-C (the third letter of the
 alphabet, in case you need to know this information).
 
 You can continue moving through the code until you reach the line with
@@ -18629,7 +18627,7 @@ Lisp Reference Manual}.
 Install the @code{@value{COUNT-WORDS}} function and then cause it to
 enter the built-in debugger when you call it.  Run the command on a
 region containing two words.  You will need to press @kbd{d} a
-remarkable number of times.  On your system, is a ``hook'' called after
+remarkable number of times.  On your system, is a hook called after
 the command finishes?  (For information on hooks, see @ref{Command
 Overview, , Command Loop Overview, elisp, The GNU Emacs Lisp Reference
 Manual}.)
@@ -18750,7 +18748,7 @@ customize the @code{interactive} expression without using the standard
 character codes; and it shows how to create a temporary buffer.
 
 (The @code{indent-to} function is written in C rather than Emacs Lisp;
-it is a ``built-in'' function.  @code{help-follow} takes you to its
+it is a built-in function.  @code{help-follow} takes you to its
 source as does @code{find-tag}, when properly set up.)
 
 You can look at a function's source using @code{find-tag}, which is
@@ -19120,7 +19118,7 @@ The @code{if} expression has two parts, one if there exists
 @code{interprogram-paste} and one if not.
 
 @need 2000
-Let us consider the ``if not'' or else-part of the @code{current-kill}
+Let us consider the else-part of the @code{current-kill}
 function.  (The then-part uses the @code{kill-new} function, which
 we have already described.  @xref{kill-new function, , The
 @code{kill-new} function}.)
@@ -19201,7 +19199,7 @@ not necessarily an error, and therefore should not be labeled as one,
 even in the bowels of a computer.  As it is, the code in Emacs implies
 that a human who is acting virtuously, by exploring his or her
 environment, is making an error.  This is bad.  Even though the computer
-takes the same steps as it does when there is an ``error'', a term such as
+takes the same steps as it does when there is an error, a term such as
 ``cancel'' would have a clearer connotation.
 
 @ifnottex
@@ -19817,9 +19815,9 @@ For example, if you evaluate the following, the result is 15:
 (* (1+ (/ 12 5)) 5)
 @end smallexample
 
-All through this discussion, we have been using ``five'' as the value
+All through this discussion, we have been using 5 as the value
 for spacing labels on the Y axis; but we may want to use some other
-value.  For generality, we should replace ``five'' with a variable to
+value.  For generality, we should replace 5 with a variable to
 which we can assign a value.  The best name I can think of for this
 variable is @code{Y-axis-label-spacing}.
 
@@ -20326,7 +20324,7 @@ First, we create a numbered element with blank spaces before each number:
 @end smallexample
 
 Next, we create the function to print the numbered line, starting with
-the number ``1'' under the first column:
+the number 1 under the first column:
 
 @findex print-X-axis-numbered-line
 @smallexample
@@ -20844,8 +20842,8 @@ Thus,
 @end smallexample
 
 @noindent
-is a function definition that says ``return the value resulting from
-dividing whatever is passed to me as @code{arg} by 50''.
+is a function that returns the value resulting from
+dividing whatever is passed to it as @code{arg} by 50.
 
 @need 1200
 Earlier, for example, we had a function @code{multiply-by-seven}; it
index 998f63ef27998578bcd905e63d42efae3e61842e..bcbea87c04d1d6c8238972b1e85608d59bbb688a 100644 (file)
@@ -134,7 +134,7 @@ abbrev in an abbrev table.
 
   When a major mode defines a system abbrev, it should call
 @code{define-abbrev} and specify @code{t} for the @code{:system}
-property.  Be aware that any saved non-``system'' abbrevs are restored
+property.  Be aware that any saved non-system abbrevs are restored
 at startup, i.e., before some major modes are loaded.  Therefore, major
 modes should not assume that their abbrev tables are empty when they
 are first loaded.
@@ -145,13 +145,13 @@ This function defines an abbrev named @var{name}, in
 with properties @var{props} (@pxref{Abbrev Properties}).  The return
 value is @var{name}.  The @code{:system} property in @var{props} is
 treated specially here: if it has the value @code{force}, then it will
-overwrite an existing definition even for a non-``system'' abbrev of
+overwrite an existing definition even for a non-system abbrev of
 the same name.
 
 @var{name} should be a string.  The argument @var{expansion} is
 normally the desired expansion (a string), or @code{nil} to undefine
 the abbrev.  If it is anything but a string or @code{nil}, then the
-abbreviation ``expands'' solely by running @var{hook}.
+abbreviation expands solely by running @var{hook}.
 
 The argument @var{hook} is a function or @code{nil}.  If @var{hook} is
 non-@code{nil}, then it is called with no arguments after the abbrev is
index 2784fd9b3b1de5d8a4ad01576b67fcd2a7b96dce..2fc43da8e532619a43df6eb26d0a8df4b98c381e 100644 (file)
@@ -66,7 +66,7 @@ Internal windows are no longer visible to Lisp; functions such as
 and window-local buffer lists have all been removed.  Functions for
 resizing windows can delete windows if they become too small.
 
-The ``action function'' feature for controlling buffer display has
+The action-function feature for controlling buffer display has
 been removed, including @code{display-buffer-overriding-action} and
 related variables, as well as the @var{action} argument to
 @code{display-buffer} and other functions.  The way to
@@ -78,7 +78,7 @@ other variables.
 The standard completion interface has been simplified, eliminating the
 @code{completion-extra-properties} variable, the @code{metadata}
 action flag for completion functions, and the concept of
-``completion categories''.  Lisp programmers may now find the choice
+completion categories.  Lisp programmers may now find the choice
 of methods for tuning completion less bewildering, but if a package
 finds the streamlined interface insufficient for its needs, it must
 implement its own specialized completion feature.
index 3433277ca0fd29ac470f96a1bac1ef2fbbd4af45..c4f2b5eb8529adacdd2a173642af44caaa069320 100644 (file)
@@ -17,7 +17,7 @@
   Most of the GNU Emacs text editor is written in the programming
 language called Emacs Lisp.  You can write new code in Emacs Lisp and
 install it as an extension to the editor.  However, Emacs Lisp is more
-than a mere ``extension language''; it is a full computer programming
+than a mere extension language; it is a full computer programming
 language in its own right.  You can use it as you would any other
 programming language.
 
index 0a1b5a24e4f19a05f24f7faa989da2797c433908..d37df25d267e2690c7f41deb4d1b850942f7bd5a 100644 (file)
@@ -398,7 +398,7 @@ those versions by excluding them from the @sc{cdr} of the value.
 @xref{Numbered Backups}.
 
 In this example, the value says that @file{~rms/foo.~5~} is the name
-to use for the new backup file, and @file{~rms/foo.~3~} is an ``excess''
+to use for the new backup file, and @file{~rms/foo.~3~} is an excess
 version that the caller should consider deleting now.
 
 @smallexample
index 71261e08db726725e627ab34383c9317b1f58862..45a21c8e806b5075afccfa4566627e7450461aea 100644 (file)
@@ -23,7 +23,7 @@ not be displayed in any windows.
 * Buffer File Name::    The buffer file name indicates which file is visited.
 * Buffer Modification:: A buffer is @dfn{modified} if it needs to be saved.
 * Modification Time::   Determining whether the visited file was changed
-                         ``behind Emacs's back''.
+                         behind Emacs's back.
 * Read Only Buffers::   Modifying text is not allowed in a read-only buffer.
 * Buffer List::         How to look at all the existing buffers.
 * Creating Buffers::    Functions that create buffers.
@@ -893,7 +893,7 @@ another buffer is shown in it.  More precisely, if the selected window
 is dedicated (@pxref{Dedicated Windows}) and there are other windows on
 its frame, the window is deleted.  If it is the only window on its frame
 and that frame is not the only frame on its terminal, the frame is
-``dismissed'' by calling the function specified by
+dismissed by calling the function specified by
 @code{frame-auto-hide-function} (@pxref{Quitting Windows}).  Otherwise,
 it calls @code{switch-to-prev-buffer} (@pxref{Window History}) to show
 another buffer in that window.  If @var{buffer-or-name} is displayed in
@@ -1032,7 +1032,7 @@ memory for other uses or to be returned to the operating system.  If
 buffer.
 
 Any processes that have this buffer as the @code{process-buffer} are
-sent the @code{SIGHUP} (``hangup'') signal, which normally causes them
+sent the @code{SIGHUP} (hangup) signal, which normally causes them
 to terminate.  @xref{Signals to Processes}.
 
 If the buffer is visiting a file and contains unsaved changes,
@@ -1139,7 +1139,7 @@ be a live buffer or the name (a string) of an existing buffer.  If
 @var{name} is the name of an existing buffer, an error is signaled.
 
 If @var{clone} is non-@code{nil}, then the indirect buffer originally
-shares the ``state'' of @var{base-buffer} such as major mode, minor
+shares the state of @var{base-buffer} such as major mode, minor
 modes, buffer local variables and so on.  If @var{clone} is omitted
 or @code{nil} the indirect buffer's state is set to the default state
 for new buffers.
index 593054013e669c685a360029a12b28cfff47bc4c..7ddf5ee8f7469c9cb4148f199230aa4d21000ddb 100644 (file)
@@ -132,7 +132,7 @@ byte compiler to warn if the command is called from Lisp.  The output
 of @code{describe-function} will include similar information.
 The value of the property can be: a string, which the byte-compiler
 will use directly in its warning (it should end with a period, and not
-start with a capital, e.g., ``use @dots{} instead.''); @code{t}; any
+start with a capital, e.g., @code{"use (system-name) instead."}); @code{t}; any
 other symbol, which should be an alternative function to use in Lisp
 code.
 
@@ -1557,8 +1557,8 @@ the command binding of the double click event to assume that the
 single-click command has already run.  It must produce the desired
 results of a double click, starting from the results of a single click.
 
-This is convenient, if the meaning of a double click somehow ``builds
-on'' the meaning of a single click---which is recommended user interface
+This is convenient, if the meaning of a double click somehow builds
+on the meaning of a single click---which is recommended user interface
 design practice for double clicks.
 
 If you click a button, then press it down again and start moving the
@@ -2444,7 +2444,7 @@ same symbol that would normally represent that combination of mouse
 button and modifier keys.  The information about the window part is kept
 elsewhere in the event---in the coordinates.  But
 @code{read-key-sequence} translates this information into imaginary
-``prefix keys'', all of which are symbols: @code{header-line},
+prefix keys, all of which are symbols: @code{header-line},
 @code{horizontal-scroll-bar}, @code{menu-bar}, @code{mode-line},
 @code{vertical-line}, and @code{vertical-scroll-bar}.  You can define
 meanings for mouse clicks in special window parts by defining key
@@ -2587,7 +2587,7 @@ If you wish to read a single key taking these translations into
 account, use the function @code{read-key}:
 
 @defun read-key &optional prompt
-This function reads a single key.  It is ``intermediate'' between
+This function reads a single key.  It is intermediate between
 @code{read-key-sequence} and @code{read-event}.  Unlike the former, it
 reads a single key, not a key sequence.  Unlike the latter, it does
 not return a raw event, but decodes and translates the user input
@@ -2633,7 +2633,7 @@ character for this purpose, but as a character with no modifiers.
 Thus, setting @code{extra-keyboard-modifiers} to zero cancels any
 modification.
 
-When using a window system, the program can ``press'' any of the
+When using a window system, the program can press any of the
 modifier keys in this way.  Otherwise, only the @key{CTL} and @key{META}
 keys can be virtually pressed.
 
@@ -2783,7 +2783,7 @@ What character @kbd{1 7 7}-
 @node Event Input Misc
 @subsection Miscellaneous Event Input Features
 
-This section describes how to ``peek ahead'' at events without using
+This section describes how to peek ahead at events without using
 them up, how to check for pending input, and how to discard pending
 input.  See also the function @code{read-passwd} (@pxref{Reading a
 Password}).
@@ -3048,7 +3048,7 @@ usual result of this---a quit---is prevented.  Eventually,
 binding is unwound at the end of a @code{let} form.  At that time, if
 @code{quit-flag} is still non-@code{nil}, the requested quit happens
 immediately.  This behavior is ideal when you wish to make sure that
-quitting does not happen within a ``critical section'' of the program.
+quitting does not happen within a critical section of the program.
 
 @cindex @code{read-quoted-char} quitting
   In some functions (such as @code{read-quoted-char}), @kbd{C-g} is
@@ -3311,7 +3311,7 @@ using the minibuffer.  Usually it is more convenient for the user if you
 change the major mode of the current buffer temporarily to a special
 major mode, which should have a command to go back to the previous mode.
 (The @kbd{e} command in Rmail uses this technique.)  Or, if you wish to
-give the user different text to edit ``recursively'', create and select
+give the user different text to edit recursively, create and select
 a new buffer in a special mode.  In this mode, define a command to
 complete the processing and go back to the previous buffer.  (The
 @kbd{m} command in Rmail does this.)
index 4a246dd6b92dd847f9a55cd87ee806f28aadc538..8c23086e8d1abe9d06327096cef4b4967c655a68 100644 (file)
@@ -140,7 +140,7 @@ definition of @var{symbol} (@pxref{Byte-Code Objects}).
 
 If @var{symbol}'s definition is a byte-code function object,
 @code{byte-compile} does nothing and returns @code{nil}.  It does not
-``compile the symbol's definition again'', since the original
+compile the symbol's definition again, since the original
 (non-compiled) code has already been replaced in the symbol's function
 cell by the byte-compiled code.
 
@@ -242,7 +242,7 @@ $ emacs -batch -f batch-byte-compile *.el
 
   When Emacs loads functions and variables from a byte-compiled file,
 it normally does not load their documentation strings into memory.
-Each documentation string is ``dynamically'' loaded from the
+Each documentation string is dynamically loaded from the
 byte-compiled file only when needed.  This saves memory, and speeds up
 loading by skipping the processing of the documentation strings.
 
@@ -280,7 +280,7 @@ Internally, the dynamic loading of documentation strings is
 accomplished by writing compiled files with a special Lisp reader
 construct, @samp{#@@@var{count}}.  This construct skips the next
 @var{count} characters.  It also uses the @samp{#$} construct, which
-stands for ``the name of this file, as a string''.  Do not use these
+stands for the name of this file, as a string.  Do not use these
 constructs in Lisp source files; they are not designed to be clear to
 humans reading the file.
 
index 421f5cc530f690a7a27fa7d533b24d0c6aa5fcf9..fca16da5d3f81ccff3fb15fba10936ebf0275def 100644 (file)
@@ -73,7 +73,7 @@ The value of the last form in the body becomes the value of the entire
 two or more forms in succession and use the value of the last of them.
 But programmers found they often needed to use a @code{progn} in the
 body of a function, where (at that time) only one form was allowed.  So
-the body of a function was made into an ``implicit @code{progn}'':
+the body of a function was made into an implicit @code{progn}:
 several forms are allowed just as in the body of an actual @code{progn}.
 Many other control structures likewise contain an implicit @code{progn}.
 As a result, @code{progn} is not used as much as it was many years ago.
@@ -220,11 +220,11 @@ list is the @var{condition}; the remaining elements, if any, the
 
 @code{cond} tries the clauses in textual order, by evaluating the
 @var{condition} of each clause.  If the value of @var{condition} is
-non-@code{nil}, the clause ``succeeds''; then @code{cond} evaluates its
+non-@code{nil}, the clause succeeds; then @code{cond} evaluates its
 @var{body-forms}, and returns the value of the last of @var{body-forms}.
 Any remaining clauses are ignored.
 
-If the value of @var{condition} is @code{nil}, the clause ``fails'', so
+If the value of @var{condition} is @code{nil}, the clause fails, so
 the @code{cond} moves on to the following clause, trying its @var{condition}.
 
 A clause may also look like this:
@@ -571,7 +571,7 @@ The value of a @code{while} form is always @code{nil}.
 @end group
 @end example
 
-To write a ``repeat...until'' loop, which will execute something on each
+To write a repeat-until loop, which will execute something on each
 iteration and then do the end-test, put the body followed by the
 end-test in a @code{progn} as the first argument of @code{while}, as
 shown here:
@@ -673,7 +673,7 @@ the iterator's final value.
 
 It's important to note that generator function bodies only execute
 inside calls to @code{iter-next}.  A call to a function defined with
-@code{iter-defun} produces an iterator; you must ``drive'' this
+@code{iter-defun} produces an iterator; you must drive this
 iterator with @code{iter-next} for anything interesting to happen.
 Each call to a generator function produces a @emph{different}
 iterator, each with its own state.
@@ -858,7 +858,7 @@ error is signaled with data @code{(@var{tag} @var{value})}.
 @subsection Examples of @code{catch} and @code{throw}
 
   One way to use @code{catch} and @code{throw} is to exit from a doubly
-nested loop.  (In most languages, this would be done with a ``goto''.)
+nested loop.  (In most languages, this would be done with a @code{goto}.)
 Here we compute @code{(foo @var{i} @var{j})} for @var{i} and @var{j}
 varying from 0 to 9:
 
@@ -972,7 +972,7 @@ returns to a point that is set up to handle the error
 (@pxref{Processing of Errors}).  Here we describe how to signal an
 error.
 
-  Most errors are signaled ``automatically'' within Lisp primitives
+  Most errors are signaled automatically within Lisp primitives
 which you call for other purposes, such as if you try to take the
 @sc{car} of an integer or move forward a character at the end of the
 buffer.  You can also signal errors explicitly with the functions
index f984dbe5870f5207181a878908d8e5734a849419..51d729f665c89ecdeff8048dc04b875f47cf72e1 100644 (file)
@@ -365,7 +365,7 @@ should describe how to do the same job in hand-written Lisp code.
 Specify @var{getfunction} as the way to extract the value of this
 option.  The function @var{getfunction} should take one argument, a
 symbol, and should return whatever customize should use as the
-``current value'' for that symbol (which need not be the symbol's Lisp
+current value for that symbol (which need not be the symbol's Lisp
 value).  The default is @code{default-value}.
 
 You have to really understand the workings of Custom to use
@@ -441,7 +441,7 @@ those other variables already have their intended values.
 @end table
 
   It is useful to specify the @code{:require} keyword for an option
-that ``turns on'' a certain feature.  This causes Emacs to load the
+that turns on a certain feature.  This causes Emacs to load the
 feature, if it is not already loaded, whenever the option is set.
 @xref{Common Keywords}.  Here is an example, from the library
 @file{saveplace.el}:
@@ -723,7 +723,7 @@ simply atoms, which stand for themselves.  For example:
 @end example
 
 @noindent
-specifies that there are three ``known'' keys, namely @code{"foo"},
+specifies that there are three known keys, namely @code{"foo"},
 @code{"bar"} and @code{"baz"}, which will always be shown first.
 
 You may want to restrict the value type for specific keys, for
@@ -842,7 +842,7 @@ symbols, and symbols are not treated like other Lisp expressions.
 
 @item (radio @var{element-types}@dots{})
 This is similar to @code{choice}, except that the choices are displayed
-using ``radio buttons'' rather than a menu.  This has the advantage of
+using radio buttons rather than a menu.  This has the advantage of
 displaying documentation for the choices when applicable and so is often
 a good choice for a choice between constant functions
 (@code{function-item} customization types).
@@ -1378,8 +1378,8 @@ the theme; this is the description shown when the user invokes the
 Themes*} buffer.
 
 Two special theme names are disallowed (using them causes an error):
-@code{user} is a ``dummy'' theme that stores the user's direct
-customization settings, and @code{changed} is a ``dummy'' theme that
+@code{user} is a dummy theme that stores the user's direct
+customization settings, and @code{changed} is a dummy theme that
 stores changes made outside of the Customize system.
 @end defmac
 
@@ -1422,7 +1422,7 @@ where the list entries have the same meanings as in
 @end defun
 
   In theory, a theme file can also contain other Lisp forms, which
-would be evaluated when loading the theme, but that is ``bad form''.
+would be evaluated when loading the theme, but that is bad form.
 To protect against loading themes containing malicious code, Emacs
 displays the source file and asks for confirmation from the user
 before loading any non-built-in theme for the first time.
@@ -1440,7 +1440,7 @@ it returns @code{nil}.
 @defvar custom-known-themes
 The value of this variable is a list of themes loaded into Emacs.
 Each theme is represented by a Lisp symbol (the theme name).  The
-default value of this variable is a list containing two ``dummy''
+default value of this variable is a list containing two dummy
 themes: @code{(user changed)}.  The @code{changed} theme stores
 settings made before any Custom themes are applied (e.g., variables
 set outside of Customize).  The @code{user} theme stores settings the
index 47b24997551edbe5f0f055e13272693730c0cb1d..e82efbb0b7279c54bc027faf8a466c56456ae6b0 100644 (file)
@@ -684,11 +684,11 @@ If @var{frame-number} is out of range, @code{backtrace-frame} returns
 @cindex debugging invalid Lisp syntax
 
   The Lisp reader reports invalid syntax, but cannot say where the real
-problem is.  For example, the error ``End of file during parsing'' in
+problem is.  For example, the error @samp{End of file during parsing} in
 evaluating an expression indicates an excess of open parentheses (or
 square brackets).  The reader detects this imbalance at the end of the
 file, but it cannot figure out where the close parenthesis should have
-been.  Likewise, ``Invalid read syntax: ")"'' indicates an excess close
+been.  Likewise, @samp{Invalid read syntax: ")"} indicates an excess close
 parenthesis or missing open parenthesis, but does not say where the
 missing parenthesis belongs.  How, then, to find what to change?
 
index 14e2cd363a4eff1e2fbe6639327bf3017a7e4dd9..452462adcfc38e4e71abf8cc526ae27eb39587ee 100644 (file)
@@ -126,7 +126,7 @@ it waits for input, or when the function @code{redisplay} is called.
 @cindex @samp{\} in display
 
   When a line of text extends beyond the right edge of a window, Emacs
-can @dfn{continue} the line (make it ``wrap'' to the next screen
+can @dfn{continue} the line (make it wrap to the next screen
 line), or @dfn{truncate} the line (limit it to one screen line).  The
 additional screen lines used to display a long text line are called
 @dfn{continuation} lines.  Continuation is not the same as filling;
@@ -138,7 +138,7 @@ boundary.  @xref{Filling}.
 indicate truncated and continued lines (@pxref{Fringes}).  On a text
 terminal, a @samp{$} in the rightmost column of the window indicates
 truncation; a @samp{\} on the rightmost column indicates a line that
-``wraps''.  (The display table can specify alternate characters to use
+wraps.  (The display table can specify alternate characters to use
 for this; @pxref{Display Tables}).
 
 @defopt truncate-lines
@@ -380,7 +380,7 @@ function.
 
 The arguments @var{min-value} and @var{max-value} should be numbers
 standing for the starting and final states of the operation.  For
-instance, an operation that ``scans'' a buffer should set these to the
+instance, an operation that scans a buffer should set these to the
 results of @code{point-min} and @code{point-max} correspondingly.
 @var{max-value} should be greater than @var{min-value}.
 
@@ -439,13 +439,13 @@ presented to the user.
 
 @defun progress-reporter-done reporter
 This function should be called when the operation is finished.  It
-prints the message of @var{reporter} followed by word ``done'' in the
+prints the message of @var{reporter} followed by word @samp{done} in the
 echo area.
 
 You should always call this function and not hope for
-@code{progress-reporter-update} to print ``100%''.  Firstly, it may
+@code{progress-reporter-update} to print @samp{100%}.  Firstly, it may
 never print it, there are many good reasons for this not to happen.
-Secondly, ``done'' is more explicit.
+Secondly, @samp{done} is more explicit.
 @end defun
 
 @defmac dotimes-with-progress-reporter (var count [result]) message body@dots{}
@@ -500,13 +500,13 @@ facility combines successive identical messages.  It also combines
 successive related messages for the sake of two cases: question
 followed by answer, and a series of progress messages.
 
-  A ``question followed by an answer'' means two messages like the
+  A question followed by an answer has two messages like the
 ones produced by @code{y-or-n-p}: the first is @samp{@var{question}},
 and the second is @samp{@var{question}...@var{answer}}.  The first
 message conveys no additional information beyond what's in the second,
 so logging the second message discards the first from the log.
 
-  A ``series of progress messages'' means successive messages like
+  A series of progress messages has successive messages like
 those produced by @code{make-progress-reporter}.  They have the form
 @samp{@var{base}...@var{how-far}}, where @var{base} is the same each
 time, while @var{how-far} varies.  Logging each message in the series
@@ -1419,7 +1419,7 @@ The return value is @var{overlay}.
 This is the only valid way to change the endpoints of an overlay.  Do
 not try modifying the markers in the overlay by hand, as that fails to
 update other vital data structures and can cause some overlays to be
-``lost''.
+lost.
 @end defun
 
 @defun remove-overlays &optional start end name value
@@ -1496,7 +1496,7 @@ foo
 @end example
 
   Emacs stores the overlays of each buffer in two lists, divided
-around an arbitrary ``center position''.  One list extends backwards
+around an arbitrary center position.  One list extends backwards
 through the buffer from that center position, and the other extends
 forwards from that center position.  The center position can be anywhere
 in the buffer.
@@ -1796,10 +1796,9 @@ overlays that specify property @var{prop} for the character at point:
 
 @defun overlays-in beg end
 This function returns a list of the overlays that overlap the region
-@var{beg} through @var{end}.  ``Overlap'' means that at least one
-character is contained within the overlay and also contained within the
-specified region; however, empty overlays (@pxref{Managing Overlays,
-empty overlay}) are included in the result if they are located at
+@var{beg} through @var{end}.  An overlay overlaps with a region if it
+contains one or more characters in the region; empty overlays
+(@pxref{Managing Overlays, empty overlay}) overlap if they are at
 @var{beg}, strictly between @var{beg} and @var{end}, or at @var{end}
 when @var{end} denotes the position at the end of the buffer.
 @end defun
@@ -2729,8 +2728,8 @@ Manual}.
 @item
 If the text lies within an overlay with a non-@code{nil} @code{face}
 property, Emacs applies the face(s) specified by that property.  If
-the overlay has a @code{mouse-face} property and the mouse is ``near
-enough'' to the overlay, Emacs applies the face or face attributes
+the overlay has a @code{mouse-face} property and the mouse is near
+enough to the overlay, Emacs applies the face or face attributes
 specified by the @code{mouse-face} property instead.  @xref{Overlay
 Properties}.
 
@@ -2836,7 +2835,7 @@ remappings for face @var{face} in the current buffer.  The remaining
 arguments, @var{specs}, should form either a list of face names, or a
 property list of attribute/value pairs.
 
-The return value is a Lisp object that serves as a ``cookie''; you can
+The return value is a Lisp object that serves as a cookie; you can
 pass this object as an argument to @code{face-remap-remove-relative}
 if you need to remove the remapping later.
 
@@ -2967,7 +2966,7 @@ If your Emacs Lisp program needs to assign some faces to text, it is
 often a good idea to use certain existing faces or inherit from them,
 rather than defining entirely new faces.  This way, if other users
 have customized the basic faces to give Emacs a certain look, your
-program will ``fit in'' without additional customization.
+program will fit in without additional customization.
 
   Some of the basic faces defined in Emacs are listed below.  In
 addition to these, you might want to make use of the Font Lock faces
@@ -2992,14 +2991,14 @@ has a bold @code{:weight} attribute), with all other attributes
 unspecified (and so given by @code{default}).
 
 @item shadow
-For ``dimmed out'' text.  For example, it is used for the ignored
+For dimmed-out text.  For example, it is used for the ignored
 part of a filename in the minibuffer (@pxref{Minibuffer File,,
 Minibuffers for File Names, emacs, The GNU Emacs Manual}).
 
 @item link
 @itemx link-visited
 For clickable text buttons that send the user to a different
-buffer or ``location''.
+buffer or location.
 
 @item highlight
 For stretches of text that should temporarily stand out.  For example,
@@ -3193,7 +3192,7 @@ encoding of the font.
 character codes.  An individual font cannot display the whole range of
 characters that Emacs supports, but a fontset can.  Fontsets have names,
 just as fonts do, and you can use a fontset name in place of a font name
-when you specify the ``font'' for a frame or a face.  Here is
+when you specify the font for a frame or a face.  Here is
 information about defining a fontset under Lisp program control.
 
 @defun create-fontset-from-fontset-spec fontset-spec &optional style-variant-p noerror
@@ -3481,13 +3480,13 @@ frame on which the fonts are to be displayed.  The optional argument
 maximum length of the returned list.  The optional argument
 @var{prefer}, if non-@code{nil}, should be another font spec, which is
 used to control the order of the returned list; the returned font
-entities are sorted in order of decreasing ``closeness'' to that font
+entities are sorted in order of decreasing closeness to that font
 spec.
 @end defun
 
   If you call @code{set-face-attribute} and pass a font spec, font
 entity, or font name string as the value of the @code{:font}
-attribute, Emacs opens the best ``matching'' font that is available
+attribute, Emacs opens the best matching font that is available
 for display.  It then stores the corresponding font object as the
 actual value of the @code{:font} attribute for that face.
 
@@ -4230,21 +4229,21 @@ frames.
 @cindex right dividers
 @cindex bottom dividers
 
-Window dividers are bars drawn between a frame's windows.  A ``right''
+Window dividers are bars drawn between a frame's windows.  A right
 divider is drawn between a window and any adjacent windows on the right.
 Its width (thickness) is specified by the frame parameter
-@code{right-divider-width}.  A ``bottom'' divider is drawn between a
+@code{right-divider-width}.  A bottom divider is drawn between a
 window and adjacent windows on the bottom or the echo area.  Its width
 is specified by the frame parameter @code{bottom-divider-width}.  In
 either case, specifying a width of zero means to not draw such dividers.
 @xref{Layout Parameters}.
 
-   Technically, a right divider ``belongs'' to the window on its left,
+   Technically, a right divider belongs to the window on its left,
 which means that its width contributes to the total width of that
-window.  A bottom divider ``belongs'' to the window above it, which
+window.  A bottom divider belongs to the window above it, which
 means that its width contributes to the total height of that window.
 @xref{Window Sizes}.  When a window has both, a right and a bottom
-divider, the bottom divider ``prevails''.  This means that a bottom
+divider, the bottom divider prevails.  This means that a bottom
 divider is drawn over the full total width of its window while the right
 divider ends above the bottom divider.
 
@@ -4332,8 +4331,8 @@ display specification, the first overrides the rest.  Replacing
 display specifications make most other display specifications
 irrelevant, since those don't apply to the replacement.
 
-  For replacing display specifications, ``the text that has the
-property'' means all the consecutive characters that have the same
+  For replacing display specifications, @dfn{the text that has the
+property} means all the consecutive characters that have the same
 Lisp object as their @code{display} property; these characters are
 replaced as a single unit.  If two characters have different Lisp
 objects as their @code{display} properties (i.e., objects which are
@@ -4387,8 +4386,10 @@ width.  @var{width} can also be a @dfn{pixel width} specification
 @item :relative-width @var{factor}
 Specifies that the width of the stretch should be computed from the
 first character in the group of consecutive characters that have the
-same @code{display} property.  The space width is the width of that
-character, multiplied by @var{factor}.
+same @code{display} property.  The space width is the pixel width of
+that character, multiplied by @var{factor}.  (On text-mode terminals,
+the ``pixel width'' of a character is usually 1, but it could be more
+for TABs and double-width CJK characters.)
 
 @item :align-to @var{hpos}
 Specifies that the space should be wide enough to reach @var{hpos}.
@@ -4559,7 +4560,7 @@ Here are the possibilities for @var{height}:
 @table @asis
 @item @code{(+ @var{n})}
 @c FIXME: Add an index for "step"?  --xfq
-This means to use a font that is @var{n} steps larger.  A ``step'' is
+This means to use a font that is @var{n} steps larger.  A @dfn{step} is
 defined by the set of available fonts---specifically, those that match
 what was otherwise specified for this text, in all attributes except
 height.  Each size for which a suitable font is available counts as
@@ -4836,7 +4837,7 @@ which algorithm.
 Specifies the Laplace edge detection algorithm, which blurs out small
 differences in color while highlighting larger differences.  People
 sometimes consider this useful for displaying the image for a
-``disabled'' button.
+disabled button.
 
 @item (edge-detection :matrix @var{matrix} :color-adjust @var{adjust})
 @cindex edge detection, images
@@ -4901,7 +4902,7 @@ $$\pmatrix{ 2 & -1 &  0 \cr
 @end ifnottex
 
 @item disabled
-Specifies transforming the image so that it looks ``disabled''.
+Specifies transforming the image so that it looks disabled.
 @end table
 
 @item :mask @var{mask}
@@ -5365,8 +5366,8 @@ This function inserts @var{image} in the current buffer at point, like
 @code{insert-image}, but splits the image into @var{rows}x@var{cols}
 equally sized slices.
 
-If an image is inserted ``sliced'', Emacs displays each slice as a
-separate image, and allow more intuitive scrolling up/down, instead of
+Emacs displays each slice as a
+separate image, and allows more intuitive scrolling up/down, instead of
 jumping up/down the entire image when paging through a buffer that
 displays (large) images.
 @end defun
@@ -5443,7 +5444,7 @@ are multiple ``frames'' in the image.  At present, Emacs supports
 multiple frames for GIF, TIFF, and certain ImageMagick formats such as
 DJVM@.
 
-The frames can be used either to represent multiple ``pages'' (this is
+The frames can be used either to represent multiple pages (this is
 usually the case with multi-frame TIFF files, for example), or to
 create animation (usually the case with multi-frame GIF files).
 
@@ -5666,7 +5667,7 @@ so that it's easy to define special-purpose types of buttons for
 specific tasks.
 
 @defun define-button-type name &rest properties
-Define a ``button type'' called @var{name} (a symbol).
+Define a button type called @var{name} (a symbol).
 The remaining arguments
 form a sequence of @var{property value} pairs, specifying default
 property values for buttons with this type (a button's type may be set
@@ -5819,7 +5820,7 @@ Return @code{t} if button-type @var{type} is a subtype of @var{supertype}.
 These are commands and functions for locating and operating on
 buttons in an Emacs buffer.
 
-@code{push-button} is the command that a user uses to actually ``push''
+@code{push-button} is the command that a user uses to actually push
 a button, and is bound by default in the button itself to @key{RET}
 and to @key{mouse-2} using a local keymap in the button's overlay or
 text properties.  Commands that are useful outside the buttons itself,
@@ -5885,7 +5886,7 @@ in the search, instead of starting at the next button.
   The Ewoc package constructs buffer text that represents a structure
 of Lisp objects, and updates the text to follow changes in that
 structure.  This is like the ``view'' component in the
-``model/view/controller'' design paradigm.  Ewoc means ``Emacs's
+``model--view--controller'' design paradigm.  Ewoc means ``Emacs's
 Widget for Object Collections''.
 
   An @dfn{ewoc} is a structure that organizes information required to
@@ -5949,7 +5950,7 @@ new value in its place, like so:
 
 @noindent
 You can also use, as the data element value, a Lisp object (list or
-vector) that is a container for the ``real'' value, or an index into
+vector) that is a container for the real value, or an index into
 some other structure.  The example (@pxref{Abstract Display Example})
 uses the latter approach.
 
@@ -5985,7 +5986,7 @@ Normally, a newline is automatically inserted after the header,
 the footer and every node's textual description.  If @var{nosep}
 is non-@code{nil}, no newline is inserted.  This may be useful for
 displaying an entire ewoc on a single line, for example, or for
-making nodes ``invisible'' by arranging for @var{pretty-printer}
+making nodes invisible by arranging for @var{pretty-printer}
 to do nothing for those nodes.
 
 An ewoc maintains its text in the buffer that is current when
@@ -6105,7 +6106,7 @@ Any @var{args} are passed to @var{map-function}.
 @subsection Abstract Display Example
 
   Here is a simple example using functions of the ewoc package to
-implement a ``color components display'', an area in a buffer that
+implement a @dfn{color components} display, an area in a buffer that
 represents a vector of three integers (itself representing a 24-bit RGB
 value) in various ways.
 
@@ -6164,10 +6165,10 @@ The buffer is in Color Components mode."
 @end example
 
 @cindex controller part, model/view/controller
-  This example can be extended to be a ``color selection widget'' (in
-other words, the controller part of the ``model/view/controller''
+  This example can be extended to be a color selection widget (in
+other words, the ``controller'' part of the ``model--view--controller''
 design paradigm) by defining commands to modify @code{colorcomp-data}
-and to ``finish'' the selection process, and a keymap to tie it all
+and to finish the selection process, and a keymap to tie it all
 together conveniently.
 
 @smallexample
@@ -6417,9 +6418,9 @@ display the character @var{c} as those glyphs; @pxref{Glyphs}).
 
   @strong{Warning:} if you use the display table to change the display
 of newline characters, the whole buffer will be displayed as one long
-``line''.
+line.
 
-  The display table also has six ``extra slots'' which serve special
+  The display table also has six @dfn{extra slots} which serve special
 purposes.  Here is a table of their meanings; @code{nil} in any slot
 means to use the default for that slot, as stated below.
 
@@ -6533,10 +6534,8 @@ used when Emacs is displaying a buffer in a window with neither a
 window display table nor a buffer display table defined, or when Emacs
 is outputting text to the standard output or error streams.  Although its
 default is typically @code{nil}, in an interactive session if the
-locale cannot display curved quotes, or if the initial value of
-@code{text-quoting-style} specifies a preference for ASCII, its
-default maps curved quotes to ASCII approximations.  @xref{Keys in
-Documentation}.
+terminal cannot display curved quotes, its default maps curved quotes
+to ASCII approximations.  @xref{Keys in Documentation}.
 @end defvar
 
 The @file{disp-table} library defines several functions for changing
@@ -6688,7 +6687,7 @@ Non-@acronym{ASCII}, non-printing characters @code{U+0080} to
 @samp{\230}).
 
 @item format-control
-Characters of Unicode General Category ``Cf'', such as @samp{U+200E}
+Characters of Unicode General Category [Cf], such as @samp{U+200E}
 (Left-to-Right Mark), but excluding characters that have graphic
 images, such as @samp{U+00AD} (Soft Hyphen).
 
@@ -6735,8 +6734,8 @@ capability (@samp{vb}).
 @end defopt
 
 @defvar ring-bell-function
-If this is non-@code{nil}, it specifies how Emacs should ``ring the
-bell''.  Its value should be a function of no arguments.  If this is
+If this is non-@code{nil}, it specifies how Emacs should ring the
+bell.  Its value should be a function of no arguments.  If this is
 non-@code{nil}, it takes precedence over the @code{visible-bell}
 variable.
 @end defvar
@@ -6827,7 +6826,7 @@ follows the Unicode Bidirectional Algorithm (a.k.a.@: @acronym{UBA}),
 which is described in Annex #9 of the Unicode standard
 (@url{http://www.unicode.org/reports/tr9/}).  Emacs provides a ``Full
 Bidirectionality'' class implementation of the @acronym{UBA},
-consistent with the requirements of the Unicode Standard v7.0.
+consistent with the requirements of the Unicode Standard v8.0.
 
 @defvar bidi-display-reordering
 If the value of this buffer-local variable is non-@code{nil} (the
@@ -6952,7 +6951,7 @@ The function returns the new buffer position as its value.
 when two strings with bidirectional content are juxtaposed in a
 buffer, or otherwise programmatically concatenated into a string of
 text.  A typical problematic case is when a buffer consists of
-sequences of text ``fields'' separated by whitespace or punctuation
+sequences of text fields separated by whitespace or punctuation
 characters, like Buffer Menu mode or Rmail Summary Mode.  Because the
 punctuation characters used as separators have @dfn{weak
 directionality}, they take on the directionality of surrounding text.
index 97bcf0db2705d8cf406ff1ce130d18bf554b87f3..96bb03b34c09ea20d3322deb3164fa31fc816320 100644 (file)
@@ -281,6 +281,26 @@ can still stop the program by typing @kbd{S}, or any editing command.
 In general, the execution modes earlier in the above list run the
 program more slowly or stop sooner than the modes later in the list.
 
+When you enter a new Edebug level, Edebug will normally stop at the
+first instrumented function it encounters.  If you prefer to stop only
+at a break point, or not at all (for example, when gathering coverage
+data), change the value of @code{edebug-initial-mode} from its default
+@code{step} to @code{go}, or @code{Go-nonstop}, or one of its other
+values (@pxref{Edebug Options}).  You can do this readily with
+@kbd{C-x C-a C-m} (@code{edebug-set-initial-mode}):
+
+@deffn Command edebug-set-initial-mode
+@kindex C-x C-a C-m
+This command, bound to @kbd{C-x C-a C-m}, sets
+@code{edebug-initial-mode}.  It prompts you for a key to indicate the
+mode.  You should enter one of the eight keys listed above, which sets
+the corresponding mode.
+@end deffn
+
+Note that you may reenter the same Edebug level several times if, for
+example, an instrumented function is called several times from one
+command.
+
 While executing or tracing, you can interrupt the execution by typing
 any Edebug command.  Edebug stops the program at the next stop point and
 then executes the command you typed.  For example, typing @kbd{t} during
@@ -300,13 +320,6 @@ executing a keyboard macro outside of Edebug does not affect commands
 inside Edebug.  This is usually an advantage.  See also the
 @code{edebug-continue-kbd-macro} option in @ref{Edebug Options}.
 
-When you enter a new Edebug level, the initial execution mode comes
-from the value of the variable @code{edebug-initial-mode}
-(@pxref{Edebug Options}).  By default, this specifies step mode.  Note
-that you may reenter the same Edebug level several times if, for
-example, an instrumented function is called several times from one
-command.
-
 @defopt edebug-sit-for-seconds
 This option specifies how many seconds to wait between execution steps
 in trace mode or continue mode.  The default is 1 second.
@@ -363,7 +376,7 @@ at point, rather than at the stop point.  If you want to execute one
 expression @emph{from the current stop point}, first type @kbd{w}
 (@code{edebug-where}) to move point there, and then type @kbd{f}.
 
-The @kbd{o} command continues ``out of'' an expression.  It places a
+The @kbd{o} command continues out of an expression.  It places a
 temporary breakpoint at the end of the sexp containing point.  If the
 containing sexp is a function definition itself, @kbd{o} continues until
 just before the last sexp in the definition.  If that is where you are
@@ -875,7 +888,7 @@ lines inserted.
 frequency.
 
   Coverage testing works by comparing the result of each expression with
-the previous result; each form in the program is considered ``covered''
+the previous result; each form in the program is considered covered
 if it has returned two different values since you began testing coverage
 in the current Emacs session.  Thus, to do coverage testing on your
 program, execute it under various conditions and note whether it behaves
@@ -908,7 +921,7 @@ earlier expression on the same line.
 
 The character @samp{=} following the count for an expression says that
 the expression has returned the same value each time it was evaluated.
-In other words, it is not yet ``covered'' for coverage testing purposes.
+In other words, it is not yet covered for coverage testing purposes.
 
 To clear the frequency count and coverage data for a definition,
 simply reinstrument it with @code{eval-defun}.
@@ -978,14 +991,14 @@ unless @code{edebug-continue-kbd-macro} is non-@code{nil}.
 @c This paragraph is not filled, because LaLiberte's conversion script
 @c needs an xref to be on just one line.
 When Edebug needs to display something (e.g., in trace mode), it saves
-the current window configuration from ``outside'' Edebug
+the current window configuration from outside Edebug
 (@pxref{Window Configurations}).  When you exit Edebug, it restores
 the previous window configuration.
 
 Emacs redisplays only when it pauses.  Usually, when you continue
 execution, the program re-enters Edebug at a breakpoint or after
 stepping, without pausing or reading input in between.  In such cases,
-Emacs never gets a chance to redisplay the ``outside'' configuration.
+Emacs never gets a chance to redisplay the outside configuration.
 Consequently, what you see is the same window configuration as the last
 time Edebug was active, with no interruption.
 
@@ -1563,7 +1576,8 @@ mode for Edebug when it is first activated.  Possible values are
 @code{step}, @code{next}, @code{go}, @code{Go-nonstop}, @code{trace},
 @code{Trace-fast}, @code{continue}, and @code{Continue-fast}.
 
-The default value is @code{step}.
+The default value is @code{step}.  This variable can be set
+interactively with @kbd{C-x C-a C-m} (@code{edebug-set-initial-mode}).
 @xref{Edebug Execution Modes}.
 @end defopt
 
@@ -1605,7 +1619,7 @@ and consider a macro of the form:
 If you instrument the @code{test} macro and step through it, then by
 default the result of the @code{symbol-function} call has numerous
 @code{edebug-after} and @code{edebug-before} forms, which can make it
-difficult to see the ``actual'' result.  If
+difficult to see the actual result.  If
 @code{edebug-unwrap-results} is non-@code{nil}, Edebug tries to remove
 these forms from the result.
 @end defopt
index 7b2b68a4fa6397b33387f0a28f9a7a1a9520bf1e..5ca518ecd5f4d8fdd2afeee5444bbdb455a0cbd9 100644 (file)
@@ -453,7 +453,7 @@ Kinds of Forms
                               we find the real function via the symbol.
 * Function Forms::          Forms that call functions.
 * Macro Forms::             Forms that call macros.
-* Special Forms::           ``Special forms'' are idiosyncratic primitives,
+* Special Forms::           Special forms are idiosyncratic primitives,
                               most of them extremely important.
 * Autoloading::             Functions set up to load files
                               containing their real definitions.
@@ -485,7 +485,7 @@ Errors
 Variables
 
 * Global Variables::        Variable values that exist permanently, everywhere.
-* Constant Variables::      Certain ``variables'' have values that never change.
+* Constant Variables::      Variables that never change.
 * Local Variables::         Variable values that exist only temporarily.
 * Void Variables::          Symbols that lack values.
 * Defining Variables::      A definition says a symbol is used as a variable.
@@ -599,7 +599,7 @@ Loading
 * Repeated Loading::        Precautions about loading a file twice.
 * Named Features::          Loading a library if it isn't already loaded.
 * Where Defined::           Finding which file defined a certain symbol.
-* Unloading::               How to ``unload'' a library that was loaded.
+* Unloading::               How to unload a library that was loaded.
 * Hooks for Loading::       Providing code to be run when
                               particular libraries are loaded.
 
@@ -990,7 +990,7 @@ Buffers
                               is visited.
 * Buffer Modification::     A buffer is @dfn{modified} if it needs to be saved.
 * Modification Time::       Determining whether the visited file was changed
-                              ``behind Emacs's back''.
+                              behind Emacs's back.
 * Read Only Buffers::       Modifying text is not allowed in a
                               read-only buffer.
 * Buffer List::             How to look at all the existing buffers.
@@ -1117,8 +1117,8 @@ Markers
 * Marker Insertion Types::  Two ways a marker can relocate when you
                               insert where it points.
 * Moving Markers::          Moving the marker to a new buffer or position.
-* The Mark::                How ``the mark'' is implemented with a marker.
-* The Region::              How to access ``the region''.
+* The Mark::                How the mark is implemented with a marker.
+* The Region::              How to access the region.
 
 Text
 
@@ -1152,7 +1152,7 @@ Text
 * Base 64::                 Conversion to or from base 64 encoding.
 * Checksum/Hash::           Computing cryptographic hashes.
 * Parsing HTML/XML::        Parsing HTML and XML.
-* Atomic Changes::          Installing several buffer changes ``atomically''.
+* Atomic Changes::          Installing several buffer changes atomically.
 * Change Hooks::            Supplying functions to be run when text is changed.
 
 The Kill Ring
index f253e7007b41df72ed8f538cd296324ad3c48a74..067dbd2d99f0fb9b60bead2b2ecccee67a4b4629 100644 (file)
@@ -104,9 +104,9 @@ interpretation.  @xref{Command Loop}.
   A Lisp object that is intended to be evaluated is called a
 @dfn{form} (or an @dfn{expression}).  How Emacs evaluates a form
 depends on its data type.  Emacs has three different kinds of form
-that are evaluated differently: symbols, lists, and ``all other
-types''.  This section describes all three kinds, one by one, starting
-with the ``all other types'' which are self-evaluating forms.
+that are evaluated differently: symbols, lists, and all other
+types.  This section describes all three kinds, one by one, starting
+with the other types, which are self-evaluating forms.
 
 @menu
 * Self-Evaluating Forms::   Forms that evaluate to themselves.
@@ -116,7 +116,7 @@ with the ``all other types'' which are self-evaluating forms.
                               we find the real function via the symbol.
 * Function Forms::          Forms that call functions.
 * Macro Forms::             Forms that call macros.
-* Special Forms::           ``Special forms'' are idiosyncratic primitives,
+* Special Forms::           Special forms are idiosyncratic primitives,
                               most of them extremely important.
 * Autoloading::             Functions set up to load files
                               containing their real definitions.
@@ -146,7 +146,7 @@ contents unchanged.
      @result{} 123
 @end group
 @group
-(eval '123)        ; @r{Evaluated ``by hand''---result is the same.}
+(eval '123)        ; @r{Evaluated "by hand"---result is the same.}
      @result{} 123
 @end group
 @group
index 91b0c96071ecb4f790b5f71698522a814630835f..db2ecc08f95e4ddf7668fd38007d7d402be65ea2 100644 (file)
@@ -55,7 +55,7 @@ to locale @code{system-messages-locale}, and decoded using coding system
 
   Visiting a file means reading a file into a buffer.  Once this is
 done, we say that the buffer is @dfn{visiting} that file, and call the
-file ``the visited file'' of the buffer.
+file @dfn{the visited file} of the buffer.
 
   A file and a buffer are two different things.  A file is information
 recorded permanently in the computer (unless you delete it).  A
@@ -692,7 +692,7 @@ stored in the same directory as the file you are editing.  (On file
 systems that do not support symbolic links, a regular file is used.)
 
   When you access files using NFS, there may be a small probability that
-you and another user will both lock the same file ``simultaneously''.
+you and another user will both lock the same file simultaneously.
 If this happens, it is possible for the two users to make changes
 simultaneously, but Emacs will still warn the user who saves second.
 Also, the detection of modification of a buffer visiting a file changed
@@ -939,7 +939,7 @@ $ ls -l diffs
 @cindex MS-DOS and file modes
 @cindex file modes and MS-DOS
 @strong{MS-DOS note:} On MS-DOS, there is no such thing as an
-``executable'' file mode bit.  So @code{file-modes} considers a file
+executable file mode bit.  So @code{file-modes} considers a file
 executable if its name ends in one of the standard executable
 extensions, such as @file{.com}, @file{.bat}, @file{.exe}, and some
 others.  Files that begin with the Unix-standard @samp{#!} signature,
@@ -1089,7 +1089,7 @@ If you may need to follow symbolic links preceding @samp{..}@:
 appearing as a name component, call @code{file-truename} without prior
 direct or indirect calls to @code{expand-file-name}.  Otherwise, the
 file name component immediately preceding @samp{..} will be
-``simplified away'' before @code{file-truename} is called.  To
+simplified away before @code{file-truename} is called.  To
 eliminate the need for a call to @code{expand-file-name},
 @code{file-truename} handles @samp{~} in the same way that
 @code{expand-file-name} does.  @xref{File Name Expansion,, Functions
@@ -1358,7 +1358,7 @@ On some operating systems, each file can be associated with arbitrary
 and setting two specific sets of extended file attributes: Access
 Control Lists (ACLs) and SELinux contexts.  These extended file
 attributes are used, on some systems, to impose more sophisticated
-file access controls than the basic ``Unix-style'' permissions
+file access controls than the basic Unix-style permissions
 discussed in the previous sections.
 
 @cindex access control list
@@ -1509,8 +1509,8 @@ replaces it with its (recursive) target.
 @cindex file with multiple names
 @cindex file hard link
 This function gives the file named @var{oldname} the additional name
-@var{newname}.  This means that @var{newname} becomes a new ``hard
-link'' to @var{oldname}.
+@var{newname}.  This means that @var{newname} becomes a new hard
+link to @var{oldname}.
 
 In the first part of the following example, we list two files,
 @file{foo} and @file{foo3}.
@@ -1687,7 +1687,7 @@ Emacs and its subprocesses.  Every file created with Emacs initially
 has these permissions, or a subset of them (@code{write-region} will
 not grant execute permissions even if the default file permissions
 allow execution).  On Unix and GNU/Linux, the default permissions are
-given by the bitwise complement of the ``umask'' value.
+given by the bitwise complement of the @samp{umask} value.
 
 The argument @var{mode} should be an integer which specifies the
 permissions, similar to @code{set-file-modes} above.  Only the lowest
@@ -1908,7 +1908,7 @@ return value, but backup version numbers are kept.
 @end defun
 
 @defun file-name-extension filename &optional period
-This function returns @var{filename}'s final ``extension'', if any,
+This function returns @var{filename}'s final extension, if any,
 after applying @code{file-name-sans-versions} to remove any
 version/backup part.  The extension, in a file name, is the part that
 follows the last @samp{.} in the last name component (minus any
@@ -1918,7 +1918,7 @@ This function returns @code{nil} for extensionless file names such as
 @file{foo}.  It returns @code{""} for null extensions, as in
 @file{foo.}.  If the last component of a file name begins with a
 @samp{.}, that @samp{.}  doesn't count as the beginning of an
-extension.  Thus, @file{.emacs}'s ``extension'' is @code{nil}, not
+extension.  Thus, @file{.emacs}'s extension is @code{nil}, not
 @samp{.emacs}.
 
 If @var{period} is non-@code{nil}, then the returned value includes
@@ -2198,7 +2198,7 @@ In some cases, a leading @samp{..} component can remain in the output:
 
 @noindent
 This is for the sake of filesystems that have the concept of a
-``superroot'' above the root directory @file{/}.  On other filesystems,
+superroot above the root directory @file{/}.  On other filesystems,
 @file{/../} is interpreted exactly the same as @file{/}.
 
 Note that @code{expand-file-name} does @emph{not} expand environment
@@ -2257,7 +2257,7 @@ This function replaces environment variable references in
 @var{filename} with the environment variable values.  Following
 standard Unix shell syntax, @samp{$} is the prefix to substitute an
 environment variable value.  If the input contains @samp{$$}, that is
-converted to @samp{$}; this gives the user a way to ``quote'' a
+converted to @samp{$}; this gives the user a way to quote a
 @samp{$}.
 
 The environment variable name is the series of alphanumeric characters
@@ -2619,7 +2619,7 @@ that can be read.
 
 @defun directory-files-recursively directory match &optional include-directories
 Return all files under @var{directory} whose file names match
-@var{match} recursively.  The file names are returned ``depth first'',
+@var{match} recursively.  The file names are returned depth first,
 meaning that contents of sub-directories are returned before contents
 of the directories.  If @var{include-directories} is non-@code{nil},
 also return directory names that have matching names.
@@ -2854,6 +2854,7 @@ first, before handlers for jobs such as remote file access.
 @code{file-name-nondirectory},
 @code{file-name-sans-versions}, @code{file-newer-than-file-p},
 @code{file-notify-add-watch}, @code{file-notify-rm-watch},
+@code{file-notify-valid-p},
 @code{file-ownership-preserved-p},
 @code{file-readable-p}, @code{file-regular-p},
 @code{file-remote-p}, @code{file-selinux-context},
@@ -2907,6 +2908,7 @@ first, before handlers for jobs such as remote file access.
 @code{file-name-nondirec@discretionary{}{}{}tory},
 @code{file-name-sans-versions}, @code{file-newer-than-file-p},
 @code{file-notify-add-watch}, @code{file-notify-rm-watch},
+@code{file-notify-valid-p},
 @code{file-ownership-pre@discretionary{}{}{}served-p},
 @code{file-readable-p}, @code{file-regular-p},
 @code{file-remote-p}, @code{file-selinux-context},
@@ -2943,7 +2945,7 @@ unlocking the buffer if it is locked.
 possibly others to be added in the future.  It need not implement all
 these operations itself---when it has nothing special to do for a
 certain operation, it can reinvoke the primitive, to handle the
-operation ``in the usual way''.  It should always reinvoke the primitive
+operation in the usual way.  It should always reinvoke the primitive
 for an operation it does not recognize.  Here's one way to do this:
 
 @smallexample
@@ -2976,7 +2978,7 @@ each have handlers.
   Handlers that don't really do anything special for actual access to the
 file---such as the ones that implement completion of host names for
 remote file names---should have a non-@code{nil} @code{safe-magic}
-property.  For instance, Emacs normally ``protects'' directory names
+property.  For instance, Emacs normally protects directory names
 it finds in @code{PATH} from becoming magic, if they look like magic
 file names, by prefixing them with @samp{/:}.  But if the handler that
 would be used for them has a non-@code{nil} @code{safe-magic}
index 16fc4958d1f5c9facd84cb3f7816af1a43f2bda9..3ae33082fc48a14baefdea567a77d41d5e45d9f7 100644 (file)
@@ -262,7 +262,7 @@ variable, or by the @samp{--display} option (@pxref{Initial Options,,,
 emacs, The GNU Emacs Manual}).  Emacs can connect to other X displays
 via the command @code{make-frame-on-display}.  Each X display has its
 own selected frame and its own minibuffer windows; however, only one
-of those frames is ``@emph{the} selected frame'' at any given moment
+of those frames is @emph{the} selected frame at any given moment
 (@pxref{Input Focus}).  Emacs can even connect to other text
 terminals, by interacting with the @command{emacsclient} program.
 @xref{Emacs Server,,, emacs, The GNU Emacs Manual}.
@@ -294,8 +294,8 @@ This function creates and returns a new frame on @var{display}, taking
 the other frame parameters from the alist @var{parameters}.
 @var{display} should be the name of an X display (a string).
 
-Before creating the frame, this function ensures that Emacs is ``set
-up'' to display graphics.  For instance, if Emacs has not processed X
+Before creating the frame, this function ensures that Emacs is set
+up to display graphics.  For instance, if Emacs has not processed X
 resources (e.g., if it was started on a text terminal), it does so at
 this time.  In all other respects, this function behaves like
 @code{make-frame} (@pxref{Creating Frames}).
@@ -336,7 +336,7 @@ on that display (@pxref{Deleting Frames}).
 @end defun
 
 @cindex multi-monitor
-  On some ``multi-monitor'' setups, a single X display outputs to more
+  On some multi-monitor setups, a single X display outputs to more
 than one physical monitor.  You can use the functions
 @code{display-monitor-attributes-list} and @code{frame-monitor-attributes}
 to obtain information about such setups.
@@ -358,7 +358,7 @@ that, if the monitor is not the primary monitor, some of the
 coordinates might be negative.
 
 @item workarea
-Position of the top-left corner and size of the work area (``usable''
+Position of the top-left corner and size of the work area (usable
 space) in pixels as @samp{(@var{x} @var{y} @var{width} @var{height})}.
 This may be different from @samp{geometry} in that space occupied by
 various window manager features (docks, taskbars, etc.)@: may be
@@ -489,7 +489,7 @@ of the frame.  The @dfn{outer width} and @dfn{outer height} of the frame
 specify the size of that rectangle.
 
 @cindex outer position
-The upper left corner of the outer frame (indicated by ``(0)'' in the
+The upper left corner of the outer frame (indicated by @samp{(0)} in the
 drawing above) is the @dfn{outer position} or the frame.  It is
 specified by and settable via the @code{left} and @code{top} frame
 parameters (@pxref{Position Parameters}) as well as the functions
@@ -514,7 +514,7 @@ on most platforms it is not covered here.
 The @dfn{title bar} is also part of the window manager's decorations and
 typically displays the title of the frame (@pxref{Frame Titles}) as well
 as buttons for minimizing, maximizing and deleting the frame.  The title
-bar is usually not displayed on ``fullboth'' (@pxref{Size Parameters})
+bar is usually not displayed on fullboth (@pxref{Size Parameters})
 or tooltip frames.  Title bars don't exist for text terminal frames.
 
 @item Menu Bar
@@ -689,11 +689,11 @@ Optional argument @var{type} specifies the type of the edges to return:
 @var{frame}, @code{native-edges} (or @code{nil}) means to return its
 native edges and @code{inner-edges} means to return its inner edges.
 
-Notice that the ``pixels at the positions'' @var{bottom} and @var{right}
+Notice that the pixels at the positions @var{bottom} and @var{right}
 lie immediately outside the corresponding frame.  This means that if you
 have, for example, two side-by-side frames positioned such that the
 right outer edge of the frame on the left equals the left outer edge of
-the frame on the right, the pixels ``representing'' that edge are part
+the frame on the right, the pixels representing that edge are part
 of the frame on the right.
 @end defun
 
@@ -708,7 +708,7 @@ of the frame on the right.
 @cindex default height of character
 Each frame has a @dfn{default font} which specifies the default
 character size for that frame.  This size is meant when retrieving or
-changing the size of a frame in terms of ``columns'' or ``lines''
+changing the size of a frame in terms of columns or lines
 (@pxref{Size Parameters}).  It is also used when resizing (@pxref{Window
 Sizes}) or splitting (@pxref{Splitting Windows}) windows.
 
@@ -841,7 +841,7 @@ of its character size, however, may: be ignored, cause a rounding
 (GTK+), or be accepted (Lucid, Motif, MS-Windows).
 
 With some window managers you may have to set this to non-@code{nil} in
-order to make a frame appear truly ``maximized'' or ``fullscreen''.
+order to make a frame appear truly maximized or full-screen.
 @end defopt
 
 @defun set-frame-size frame width height pixelwise
@@ -867,7 +867,7 @@ actual height of the frame.  This is only useful on text terminals.
 Using a smaller height than the terminal actually implements may be
 useful to reproduce behavior observed on a smaller screen, or if the
 terminal malfunctions when using its whole screen.  Setting the frame
-height ``for real'' does not always work, because knowing the correct
+height directly does not always work, because knowing the correct
 actual size may be necessary for correct cursor positioning on
 text terminals.
 
@@ -914,7 +914,7 @@ resize the frame's outer size, hence this will alter the number of
 displayed lines.
 
    Occasionally, such @dfn{implied frame resizing} may be unwanted, for
-example, when the frame is maximized or made fullscreen (where it's
+example, when the frame is maximized or made full-screen (where it's
 turned off by default).  In other cases you can disable implied resizing
 with the following option:
 
@@ -1277,44 +1277,45 @@ the @code{user-position} parameter (@pxref{Position Parameters,
 user-position}) does for the position parameters @code{top} and
 @code{left}.
 
-@cindex full-screen frames
+@cindex fullboth frames
+@cindex fullheight frames
+@cindex fullwidth frames
+@cindex maximized frames
 @vindex fullscreen, a frame parameter
 @item fullscreen
-Specify that width, height or both shall be maximized.  The value
-@code{fullwidth} specifies that width shall be as wide as possible.  The
-value @code{fullheight} specifies that height shall be as tall as
-possible.  The value @code{fullboth} specifies that both the width and
-the height shall be set to the size of the screen.  The value
-@code{maximized} specifies that the frame shall be maximized.
-
-The difference between @code{maximized} and @code{fullboth} is that a
-maximized frame usually keeps its title bar and the buttons for resizing
+This parameter specifies whether to maximize the frame's width, height
+or both.  Its value can be @code{fullwidth}, @code{fullheight},
+@code{fullboth}, or @code{maximized}.  A @dfn{fullwidth} frame is as
+wide as possible, a @dfn{fullheight} frame is as tall as possible, and
+a @dfn{fullboth} frame is both as wide and as tall as possible.  A
+@dfn{maximized} frame is like a ``fullboth'' frame, except that it usually
+keeps its title bar and the buttons for resizing
 and closing the frame.  Also, maximized frames typically avoid hiding
-any task bar or panels displayed on the desktop.  ``Fullboth'' frames,
-on the other hand, usually omit the title bar and occupy the entire
+any task bar or panels displayed on the desktop.  A ``fullboth'' frame,
+on the other hand, usually omits the title bar and occupies the entire
 available screen space.
 
-``Fullheight'' and ``fullwidth'' frames are more similar to maximized
+Full-height and full-width frames are more similar to maximized
 frames in this regard.  However, these typically display an external
 border which might be absent with maximized frames.  Hence the heights
-of maximized and fullheight frames and the widths of maximized and
-fullwidth frames often differ by a few pixels.
+of maximized and full-height frames and the widths of maximized and
+full-width frames often differ by a few pixels.
 
 With some window managers you may have to customize the variable
 @code{frame-resize-pixelwise} (@pxref{Size and Position}) in order to
-make a frame truly appear ``maximized'' or ``fullscreen''.  Moreover,
+make a frame truly appear maximized or full-screen.  Moreover,
 some window managers might not support smooth transition between the
-various fullscreen or maximization states.  Customizing the variable
+various full-screen or maximization states.  Customizing the variable
 @code{x-frame-normalize-before-maximize} can help to overcome that.
 
 @vindex fullscreen-restore, a frame parameter
 @item fullscreen-restore
-This parameter specifies the desired ``fullscreen'' state of the frame
+This parameter specifies the desired fullscreen state of the frame
 after invoking the @code{toggle-frame-fullscreen} command (@pxref{Frame
 Commands,,, emacs, The GNU Emacs Manual}) in the ``fullboth'' state.
 Normally this parameter is installed automatically by that command when
 toggling the state to fullboth.  If, however, you start Emacs in the
-fullboth state, you have to specify the desired behavior in your initial
+``fullboth'' state, you have to specify the desired behavior in your initial
 file as, for example
 
 @example
@@ -1575,12 +1576,25 @@ means use a standard modification of the usual cursor type (solid box
 becomes hollow box, and bar becomes a narrower bar).
 @end defopt
 
+@defopt x-stretch-cursor
+This variable controls the width of the block cursor displayed on
+extra-wide glyphs such as a tab or a stretch of white space.  By
+default, the block cursor is only as wide as the font's default
+character, and will not cover all of the width of the glyph under it
+if that glyph is extra-wide.  A non-@code{nil} value of this variable
+means draw the block cursor as wide as the glyph under it.  The
+default value is @code{nil}.
+
+This variable has no effect on text-mode frames, since the text-mode
+cursor is drawn by the terminal out of Emacs's control.
+@end defopt
+
 @defopt blink-cursor-alist
 This variable specifies how to blink the cursor.  Each element has the
 form @code{(@var{on-state} . @var{off-state})}.  Whenever the cursor
 type equals @var{on-state} (comparing using @code{equal}), the
 corresponding @var{off-state} specifies what the cursor looks like
-when it blinks ``off''.  Both @var{on-state} and @var{off-state}
+when it blinks off.  Both @var{on-state} and @var{off-state}
 should be suitable values for the @code{cursor-type} frame parameter.
 
 There are various defaults for how to blink each type of cursor, if
@@ -1631,7 +1645,7 @@ used instead.
 @vindex screen-gamma, a frame parameter
 @item screen-gamma
 @cindex gamma correction
-If this is a number, Emacs performs ``gamma correction'' which adjusts
+If this is a number, Emacs performs gamma correction which adjusts
 the brightness of all colors.  The value should be the screen gamma of
 your display.
 
@@ -1666,8 +1680,8 @@ variable, Emacs uses the latter.  By default,
 @code{frame-alpha-lower-limit} is 20.
 
 The @code{alpha} frame parameter can also be a cons cell
-@code{(@samp{active} . @samp{inactive})}, where @samp{active} is the
-opacity of the frame when it is selected, and @samp{inactive} is the
+@code{(@var{active} . @var{inactive})}, where @var{active} is the
+opacity of the frame when it is selected, and @var{inactive} is the
 opacity when it is not selected.
 @end table
 
@@ -1781,7 +1795,7 @@ symbol) of @var{terminal}.  If @var{terminal} has no setting for
 @end defun
 
 @defun set-terminal-parameter terminal parameter value
-This function sets the parameter @var{parm} of @var{terminal} to the
+This function sets the parameter @var{parameter} of @var{terminal} to the
 specified @var{value}, and returns the previous value of that
 parameter.
 @end defun
@@ -1903,13 +1917,13 @@ internals of Emacs.
 @defun visible-frame-list
 This function returns a list of just the currently visible frames.
 @xref{Visibility of Frames}.  Frames on text terminals always count as
-``visible'', even though only the selected one is actually displayed.
+visible, even though only the selected one is actually displayed.
 @end defun
 
 @defun next-frame &optional frame minibuf
 This function lets you cycle conveniently through all the frames on
 the current display from an arbitrary starting point.  It returns the
-``next'' frame after @var{frame} in the cycle.  If @var{frame} is
+next frame after @var{frame} in the cycle.  If @var{frame} is
 omitted or @code{nil}, it defaults to the selected frame (@pxref{Input
 Focus}).
 
@@ -1981,7 +1995,7 @@ window always resides on the selected frame.
 
 When Emacs displays its frames on several terminals (@pxref{Multiple
 Terminals}), each terminal has its own selected frame.  But only one
-of these is ``@emph{the} selected frame'': it's the frame that belongs
+of these is @emph{the} selected frame: it's the frame that belongs
 to the terminal from which the most recent input came.  That is, when
 Emacs runs a command that came from a certain terminal, the selected
 frame is the one of that terminal.  Since Emacs runs only a single
@@ -2001,7 +2015,7 @@ way, Emacs automatically keeps track of which frame has the focus.  To
 explicitly switch to a different frame from a Lisp function, call
 @code{select-frame-set-input-focus}.
 
-Lisp programs can also switch frames ``temporarily'' by calling the
+Lisp programs can also switch frames temporarily by calling the
 function @code{select-frame}.  This does not alter the window system's
 concept of focus; rather, it escapes from the window manager's control
 until that control is somehow reasserted.
@@ -2130,7 +2144,7 @@ This function returns the visibility status of frame @var{frame}.  The
 value is @code{t} if @var{frame} is visible, @code{nil} if it is
 invisible, and @code{icon} if it is iconified.
 
-On a text terminal, all frames are considered ``visible'' for the
+On a text terminal, all frames are considered visible for the
 purposes of this function, even though only one frame is displayed.
 @xref{Raising and Lowering}.
 @end defun
@@ -2891,7 +2905,7 @@ If you specify them, the key is
 @defvar x-resource-class
 This variable specifies the application name that @code{x-get-resource}
 should look up.  The default value is @code{"Emacs"}.  You can examine X
-resources for application names other than ``Emacs'' by binding this
+resources for other application names by binding this
 variable to some other string, around a call to @code{x-get-resource}.
 @end defvar
 
@@ -2994,14 +3008,14 @@ way that's
 different in appearance than the default face, and
 
 @item
-``close in spirit'' to what the attributes specify, if not exact.
+close in spirit to what the attributes specify, if not exact.
 @end enumerate
 
 Point (2) implies that a @code{:weight black} attribute will be
 satisfied by any display that can display bold, as will
 @code{:foreground "yellow"} as long as some yellowish color can be
 displayed, but @code{:slant italic} will @emph{not} be satisfied by
-the tty display code's automatic substitution of a ``dim'' face for
+the tty display code's automatic substitution of a dim face for
 italic.
 @end defun
 
@@ -3026,7 +3040,7 @@ This function returns the number of screens associated with the display.
 This function returns the height of the screen in pixels.
 On a character terminal, it gives the height in characters.
 
-For graphical terminals, note that on ``multi-monitor'' setups this
+For graphical terminals, note that on multi-monitor setups this
 refers to the pixel height for all physical monitors associated with
 @var{display}.  @xref{Multiple Terminals}.
 @end defun
@@ -3035,7 +3049,7 @@ refers to the pixel height for all physical monitors associated with
 This function returns the width of the screen in pixels.
 On a character terminal, it gives the width in characters.
 
-For graphical terminals, note that on ``multi-monitor'' setups this
+For graphical terminals, note that on multi-monitor setups this
 refers to the pixel width for all physical monitors associated with
 @var{display}.  @xref{Multiple Terminals}.
 @end defun
@@ -3044,7 +3058,7 @@ refers to the pixel width for all physical monitors associated with
 This function returns the height of the screen in millimeters,
 or @code{nil} if Emacs cannot get that information.
 
-For graphical terminals, note that on ``multi-monitor'' setups this
+For graphical terminals, note that on multi-monitor setups this
 refers to the height for all physical monitors associated with
 @var{display}.  @xref{Multiple Terminals}.
 @end defun
@@ -3053,7 +3067,7 @@ refers to the height for all physical monitors associated with
 This function returns the width of the screen in millimeters,
 or @code{nil} if Emacs cannot get that information.
 
-For graphical terminals, note that on ``multi-monitor'' setups this
+For graphical terminals, note that on multi-monitor setups this
 refers to the width for all physical monitors associated with
 @var{display}.  @xref{Multiple Terminals}.
 @end defun
@@ -3120,7 +3134,7 @@ MS-Windows, this is the version of the Windows OS.
 @end defun
 
 @defun x-server-vendor &optional display
-This function returns the ``vendor'' that provided the window system
+This function returns the vendor that provided the window system
 software (as a string).  On GNU and Unix systems this really means
 whoever distributes the X server.  On MS-Windows this is the vendor ID
 string of the Windows OS (Microsoft).
index a853d2fbab56cd2f3ccf468145f3f9f9d73bf54c..8835667b82db73db0901bdaacf703aa5f43f90f1 100644 (file)
@@ -1,4 +1,4 @@
-@c -*-texinfo-*-
+@c -*- mode: texinfo; coding: utf-8 -*-
 @c This is part of the GNU Emacs Lisp Reference Manual.
 @c Copyright (C) 1990-1995, 1998-1999, 2001-2015 Free Software
 @c Foundation, Inc.
@@ -118,7 +118,7 @@ Components}); such a @dfn{named command} can be invoked with
 
 @item closure
 A function object that is much like a lambda expression, except that
-it also encloses an ``environment'' of lexical variable bindings.
+it also encloses an environment of lexical variable bindings.
 @xref{Closures}.
 
 @item byte-code function
@@ -368,7 +368,7 @@ This is what @code{substring} does; @code{nil} as the third argument to
 @quotation
 @b{Common Lisp note:} Common Lisp allows the function to specify what
 default value to use when an optional argument is omitted; Emacs Lisp
-always uses @code{nil}.  Emacs Lisp does not support ``supplied-p''
+always uses @code{nil}.  Emacs Lisp does not support @code{supplied-p}
 variables that tell you whether an argument was explicitly passed.
 @end quotation
 
@@ -660,7 +660,7 @@ already been evaluated.
 
 The argument @var{function} must be either a Lisp function or a
 primitive function.  Special forms and macros are not allowed, because
-they make sense only when given the ``unevaluated'' argument
+they make sense only when given the unevaluated argument
 expressions.  @code{funcall} cannot provide these because, as we saw
 above, it never knows them in the first place.
 
@@ -912,7 +912,7 @@ This macro returns an anonymous function with argument list
 @var{args}, documentation string @var{doc} (if any), interactive spec
 @var{interactive} (if any), and body forms given by @var{body}.
 
-In effect, this macro makes @code{lambda} forms ``self-quoting'':
+In effect, this macro makes @code{lambda} forms self-quoting:
 evaluating a form whose @sc{car} is @code{lambda} yields the form
 itself:
 
@@ -1133,7 +1133,7 @@ argument list and body forms as the remaining elements:
 
 @noindent
 However, the fact that the internal structure of a closure is
-``exposed'' to the rest of the Lisp world is considered an internal
+exposed to the rest of the Lisp world is considered an internal
 implementation detail.  For this reason, we recommend against directly
 examining or altering the structure of closure objects.
 
@@ -1720,7 +1720,7 @@ performed later on in the same file, just like macros.
 @section The @code{declare} Form
 @findex declare
 
-  @code{declare} is a special macro which can be used to add ``meta''
+  @code{declare} is a special macro which can be used to add meta
 properties to a function or macro: for example, marking it as
 obsolete, or giving its forms a special @key{TAB} indentation
 convention in Emacs Lisp mode.
@@ -1821,7 +1821,7 @@ example, byte-compiling @file{fortran.el} used to warn:
 
 @example
 In end of data:
-fortran.el:2152:1:Warning: the function `gud-find-c-expr' is not
+fortran.el:2152:1:Warning: the function ‘gud-find-c-expr’ is not
     known to be defined.
 @end example
 
@@ -1912,7 +1912,7 @@ list of buffer-local bindings.
 Being quick and simple, @code{unsafep} does a very light analysis and
 rejects many Lisp expressions that are actually safe.  There are no
 known cases where @code{unsafep} returns @code{nil} for an unsafe
-expression.  However, a ``safe'' Lisp expression can return a string
+expression.  However, a safe Lisp expression can return a string
 with a @code{display} property, containing an associated Lisp
 expression to be executed after the string is inserted into a buffer.
 This associated expression can be a virus.  In order to be safe, you
index 9d60cc38c25eb547d2e7ec921e09cf3220ac51d0..22b7217506f8c1b45f8ba268b5f64d9a27c7f63a 100644 (file)
@@ -31,10 +31,10 @@ the way two alists can share a common tail.
 with a series of functions for operating on them.  Hash tables have a
 special printed representation, which consists of @samp{#s} followed
 by a list specifying the hash table properties and contents.
-@xref{Creating Hash}.  (Note that the term ``hash notation'', which
-refers to the initial @samp{#} character used in the printed
+@xref{Creating Hash}.
+(Hash notation, the initial @samp{#} character used in the printed
 representations of objects with no read representation, has nothing to
-do with the term ``hash table''.  @xref{Printed Representation}.)
+do with hash tables.  @xref{Printed Representation}.)
 
   Obarrays are also a kind of hash table, but they are a different type
 of object and are used only for recording interned symbols
@@ -71,16 +71,16 @@ alternatives:
 
 @table @code
 @item eql
-Keys which are numbers are ``the same'' if they are @code{equal}, that
+Keys which are numbers are the same if they are @code{equal}, that
 is, if they are equal in value and either both are integers or both
 are floating point; otherwise, two distinct objects are never
-``the same''.
+the same.
 
 @item eq
-Any two distinct Lisp objects are ``different'' as keys.
+Any two distinct Lisp objects are different as keys.
 
 @item equal
-Two Lisp objects are ``the same'', as keys, if they are equal
+Two Lisp objects are the same, as keys, if they are equal
 according to @code{equal}.
 @end table
 
@@ -128,7 +128,7 @@ doing that takes some extra time.
 The default size is 65.
 
 @item :rehash-size @var{rehash-size}
-When you add an association to a hash table and the table is ``full'',
+When you add an association to a hash table and the table is full,
 it grows automatically.  This value specifies how to make the hash table
 larger, at that time.
 
@@ -141,10 +141,10 @@ number.
 The default value is 1.5.
 
 @item :rehash-threshold @var{threshold}
-This specifies the criterion for when the hash table is ``full'' (so
+This specifies the criterion for when the hash table is full (so
 it should be made larger).  The value, @var{threshold}, should be a
 positive floating-point number, no greater than 1.  The hash table is
-``full'' whenever the actual number of entries exceeds this fraction
+full whenever the actual number of entries exceeds this fraction
 of the nominal size.  The default for @var{threshold} is 0.8.
 @end table
 @end defun
@@ -253,13 +253,13 @@ This function defines a new hash table test, named @var{name}.
 After defining @var{name} in this way, you can use it as the @var{test}
 argument in @code{make-hash-table}.  When you do that, the hash table
 will use @var{test-fn} to compare key values, and @var{hash-fn} to compute
-a ``hash code'' from a key value.
+a hash code from a key value.
 
 The function @var{test-fn} should accept two arguments, two keys, and
-return non-@code{nil} if they are considered ``the same''.
+return non-@code{nil} if they are considered the same.
 
 The function @var{hash-fn} should accept one argument, a key, and return
-an integer that is the ``hash code'' of that key.  For good results, the
+an integer that is the hash code of that key.  For good results, the
 function should use the whole range of integers for hash codes,
 including negative integers.
 
index b3042d747b408a573af8d00754da83fb920e7c25..387587a42033748b8c1ba97a210db701d525ec5b 100644 (file)
@@ -1,4 +1,4 @@
-@c -*-texinfo-*-
+@c -*- mode: texinfo; coding: utf-8 -*-
 @c This is part of the GNU Emacs Lisp Reference Manual.
 @c Copyright (C) 1990-1995, 1998-1999, 2001-2015 Free Software
 @c Foundation, Inc.
@@ -241,6 +241,11 @@ Semipermanent goal column for vertical motion, as set by @dots{}
 @c Do not blithely break or fill these lines.
 @c That makes them incorrect.
 
+@group
+minibuffer-temporary-goal-position      Variable
+not documented
+@end group
+
 @group
 set-goal-column Keys: C-x C-n
 Set the current horizontal position as a goal for C-n and C-p.
@@ -249,17 +254,26 @@ Set the current horizontal position as a goal for C-n and C-p.
 @group
 Those commands will move to this position in the line moved to
 rather than trying to keep the same horizontal position.
-With a non-nil argument, clears out the goal column
+With a non-nil argument ARG, clears out the goal column
 so that C-n and C-p resume vertical motion.
-The goal column is stored in the variable `goal-column'.
+The goal column is stored in the variable ‘goal-column’.
+
+(fn ARG)
 @end group
 
 @group
 temporary-goal-column   Variable
 Current goal column for vertical motion.
-It is the column where point was
-at the start of current run of vertical motion commands.
-When the `track-eol' feature is doing its job, the value is 9999.
+It is the column where point was at the start of the current run
+of vertical motion commands.
+
+When moving by visual lines via the function ‘line-move-visual’, it is a cons
+cell (COL . HSCROLL), where COL is the x-position, in pixels,
+divided by the default column width, and HSCROLL is the number of
+columns by which window is scrolled from left margin.
+
+When the ‘track-eol’ feature is doing its job, the value is
+‘most-positive-fixnum’.
 ---------- Buffer: *Help* ----------
 @end group
 @end smallexample
@@ -539,11 +553,11 @@ about them, see @ref{Help, , Help, emacs, The GNU Emacs Manual}.  Here
 we describe some program-level interfaces to the same information.
 
 @deffn Command apropos pattern &optional do-all
-This function finds all ``meaningful'' symbols whose names contain a
+This function finds all meaningful symbols whose names contain a
 match for the apropos pattern @var{pattern}.  An apropos pattern is
 either a word to match, a space-separated list of words of which at
 least two must match, or a regular expression (if any special regular
-expression characters occur).  A symbol is ``meaningful'' if it has a
+expression characters occur).  A symbol is meaningful if it has a
 definition as a function, variable, or face, or has properties.
 
 The function returns a list of elements that look like this:
@@ -608,7 +622,7 @@ subcommands of the prefix key.
 
 @defopt help-event-list
 The value of this variable is a list of event types that serve as
-alternative ``help characters''.  These events are handled just like the
+alternative help characters.  These events are handled just like the
 event specified by @code{help-char}.
 @end defopt
 
@@ -643,7 +657,7 @@ sequence.  (The last event is, presumably, the help character.)
 @end deffn
 
   The following two functions are meant for modes that want to provide
-help without relinquishing control, such as the ``electric'' modes.
+help without relinquishing control, such as the electric modes.
 Their names begin with @samp{Helper} to distinguish them from the
 ordinary help functions.
 
index 279e78ebe7ba8e88d969d07a9b580c3b9f2a572a..eb2e34318fd113b1340dafb92b36b7d96acad2a8 100644 (file)
@@ -104,7 +104,7 @@ Hook run when the buffer list changes (@pxref{Buffer List}).
 
 @item buffer-quit-function
 @vindex buffer-quit-function
-Function to call to ``quit'' the current buffer.
+Function to call to quit the current buffer.
 
 @item change-major-mode-hook
 @xref{Creating Buffer-Local}.
index 2a314a596fb277c6f20662575e688a70fde35235..20681c07d9a7abd764612d511bc85302cf31d650 100644 (file)
@@ -258,7 +258,7 @@ accessible objects are also accessible.
 matter what the Lisp program or the user does, it is impossible to refer
 to them, since there is no longer a way to reach them.  Their space
 might as well be reused, since no one will miss them.  The second
-(``sweep'') phase of the garbage collector arranges to reuse them.
+(sweep) phase of the garbage collector arranges to reuse them.
 
 @c ??? Maybe add something describing weak hash tables here?
 
@@ -1368,7 +1368,7 @@ The buffer's value of point, as of the last time a redisplay completed
 in this window.
 
 @item last_had_star
-A non-@code{nil} value means the window's buffer was ``modified'' when the
+A non-@code{nil} value means the window's buffer was modified when the
 window was last updated.
 
 @item vertical_scroll_bar
@@ -1584,7 +1584,7 @@ fit in @code{int} range.
 Do not assume that signed integer arithmetic wraps around on overflow.
 This is no longer true of Emacs porting targets: signed integer
 overflow has undefined behavior in practice, and can dump core or
-even cause earlier or later code to behave ``illogically''.  Unsigned
+even cause earlier or later code to behave illogically.  Unsigned
 overflow does wrap around reliably, modulo a power of two.
 
 @item
index 6158bf5aa653e865e62d674df5ce86d699cd8694..865c69848647d0dd6c4b9dfa2376a30d935dca78 100644 (file)
@@ -9,7 +9,7 @@
   Most of the GNU Emacs text editor is written in the programming
 language called Emacs Lisp.  You can write new code in Emacs Lisp and
 install it as an extension to the editor.  However, Emacs Lisp is more
-than a mere ``extension language''; it is a full computer programming
+than a mere extension language; it is a full computer programming
 language in its own right.  You can use it as you would any other
 programming language.
 
@@ -148,8 +148,8 @@ manual.  You may want to skip this section and refer back to it later.
 printer'' refer to those routines in Lisp that convert textual
 representations of Lisp objects into actual Lisp objects, and vice
 versa.  @xref{Printed Representation}, for more details.  You, the
-person reading this manual, are thought of as ``the programmer'' and are
-addressed as ``you''.  ``The user'' is the person who uses Lisp
+person reading this manual, are thought of as the programmer and are
+addressed as ``you''.  The user is the person who uses Lisp
 programs, including those you write.
 
 @cindex typographic conventions
@@ -287,7 +287,7 @@ the echo area.
 @cindex buffer text notation
 
   Some examples describe modifications to the contents of a buffer, by
-showing the ``before'' and ``after'' versions of the text.  These
+showing the before and after versions of the text.  These
 examples show the contents of the buffer in question between two lines
 of dashes containing the buffer name.  In addition, @samp{@point{}}
 indicates the location of point.  (The symbol for point, of course, is
index 7752bf0617c74860067537ac75bb74815b02a3e6..9bea4b0af1cf3f72cb2b653b37e7b937c1144260 100644 (file)
@@ -634,7 +634,7 @@ the current buffer's local keymap, and (iv) the global keymap, in that
 order.  Emacs searches for each input key sequence in all these
 keymaps.
 
-  Of these ``usual'' keymaps, the highest-precedence one is specified
+  Of these usual keymaps, the highest-precedence one is specified
 by the @code{keymap} text or overlay property at point, if any.  (For
 a mouse input event, Emacs uses the event position instead of point;
 @iftex
@@ -669,7 +669,7 @@ keymaps in other buffers with the same major mode.
 defined regardless of the current buffer, such as @kbd{C-f}.  It is
 always active, and is bound to the variable @code{global-map}.
 
-  Apart from the above ``usual'' keymaps, Emacs provides special ways
+  Apart from the above usual keymaps, Emacs provides special ways
 for programs to make other keymaps active.  Firstly, the variable
 @code{overriding-local-map} specifies a keymap that replaces the usual
 active keymaps, except for the global keymap.  Secondly, the
@@ -944,7 +944,7 @@ This variable holds a list of keymap alists to use for emulation
 modes.  It is intended for modes or packages using multiple minor-mode
 keymaps.  Each element is a keymap alist which has the same format and
 meaning as @code{minor-mode-map-alist}, or a symbol with a variable
-binding which is such an alist.  The ``active'' keymaps in each alist
+binding which is such an alist.  The active keymaps in each alist
 are used before @code{minor-mode-map-alist} and
 @code{minor-mode-overriding-map-alist}.
 @end defvar
@@ -983,7 +983,7 @@ not part of key lookup.
 the rest of the event is ignored.  In fact, a key sequence used for key
 lookup may designate a mouse event with just its types (a symbol)
 instead of the entire event (a list).  @xref{Input Events}.  Such
-a ``key sequence'' is insufficient for @code{command-execute} to run,
+a key sequence is insufficient for @code{command-execute} to run,
 but it is sufficient for looking up or rebinding a key.
 
   When the key sequence consists of multiple events, key lookup
@@ -1069,7 +1069,7 @@ thing that is done automatically for an undefined key: it rings the bell
 
 @cindex preventing prefix key
 @code{undefined} is used in local keymaps to override a global key
-binding and make the key ``undefined'' locally.  A local binding of
+binding and make the key undefined locally.  A local binding of
 @code{nil} would fail to do this because it would not override the
 global binding.
 
@@ -1108,7 +1108,7 @@ the other functions described in this chapter that look up keys use
 @end example
 
 If the string or vector @var{key} is not a valid key sequence according
-to the prefix keys specified in @var{keymap}, it must be ``too long''
+to the prefix keys specified in @var{keymap}, it must be too long
 and have extra events at the end that do not fit into a single key
 sequence.  Then the value is a number, the number of events at the front
 of @var{key} that compose a complete key.
@@ -1546,7 +1546,7 @@ and @code{key-translation-map} (in order of priority).
 are used differently: they specify translations to make while reading
 key sequences, rather than bindings for complete key sequences.  As
 each key sequence is read, it is checked against each translation
-keymap.  If one of the translation keymaps ``binds'' @var{k} to a
+keymap.  If one of the translation keymaps binds @var{k} to a
 vector @var{v}, then whenever @var{k} appears as a sub-sequence
 @emph{anywhere} in a key sequence, that sub-sequence is replaced with
 the events in @var{v}.
@@ -1554,7 +1554,7 @@ the events in @var{v}.
   For example, VT100 terminals send @kbd{@key{ESC} O P} when the
 keypad key @key{PF1} is pressed.  On such terminals, Emacs must
 translate that sequence of events into a single event @code{pf1}.
-This is done by ``binding'' @kbd{@key{ESC} O P} to @code{[pf1]} in
+This is done by binding @kbd{@key{ESC} O P} to @code{[pf1]} in
 @code{input-decode-map}.  Thus, when you type @kbd{C-c @key{PF1}} on
 the terminal, the terminal emits the character sequence @kbd{C-c
 @key{ESC} O P}, and @code{read-key-sequence} translates this back into
@@ -1615,7 +1615,7 @@ to @code{self-insert-command}.
 @cindex key translation function
 You can use @code{input-decode-map}, @code{local-function-key-map},
 and @code{key-translation-map} for more than simple aliases, by using
-a function, instead of a key sequence, as the ``translation'' of a
+a function, instead of a key sequence, as the translation of a
 key.  Then this function is called to compute the translation of that
 key.
 
@@ -2071,7 +2071,7 @@ the GTK+ toolkit).
 @end example
 
 @noindent
-@var{help} specifies a ``help-echo'' string to display while the mouse
+@var{help} specifies a help-echo string to display while the mouse
 is on that item in the same way as @code{help-echo} text properties
 (@pxref{Help display}).
 
@@ -2088,7 +2088,7 @@ the menu but cannot be selected.
 controls whether the menu item is enabled.  Every time the keymap is
 used to display a menu, Emacs evaluates the expression, and it enables
 the menu item only if the expression's value is non-@code{nil}.  When a
-menu item is disabled, it is displayed in a ``fuzzy'' fashion, and
+menu item is disabled, it is displayed in a fuzzy fashion, and
 cannot be selected.
 
   The menu bar does not recalculate which items are enabled every time you
@@ -2144,7 +2144,7 @@ does not appear, then the menu is displayed as if this item were
 not defined at all.
 
 @item :help @var{help}
-The value of this property, @var{help}, specifies a ``help-echo'' string
+The value of this property, @var{help}, specifies a help-echo string
 to display while the mouse is on that item.  This is displayed in the
 same way as @code{help-echo} text properties (@pxref{Help display}).
 Note that this must be a constant string, unlike the @code{help-echo}
@@ -2156,7 +2156,7 @@ The @sc{car}, @var{type}, says which: it should be @code{:toggle} or
 @code{:radio}.  The @sc{cdr}, @var{selected}, should be a form; the
 result of evaluating it says whether this button is currently selected.
 
-A @dfn{toggle} is a menu item which is labeled as either ``on'' or ``off''
+A @dfn{toggle} is a menu item which is labeled as either on or off
 according to the value of @var{selected}.  The command itself should
 toggle @var{selected}, setting it to @code{t} if it is @code{nil},
 and to @code{nil} if it is @code{t}.  Here is how the menu item
@@ -2174,7 +2174,7 @@ This works because @code{toggle-debug-on-error} is defined as a command
 which toggles the variable @code{debug-on-error}.
 
 @dfn{Radio buttons} are a group of menu items, in which at any time one
-and only one is ``selected''.  There should be a variable whose value
+and only one is selected.  There should be a variable whose value
 says which one is selected at any time.  The @var{selected} form for
 each radio button in the group should check whether the variable has the
 right value for selecting that button.  Clicking on the button should
@@ -2303,7 +2303,7 @@ displays a similar kind of separator that is supported.
 @node Alias Menu Items
 @subsubsection Alias Menu Items
 
-  Sometimes it is useful to make menu items that use the ``same''
+  Sometimes it is useful to make menu items that use the same
 command but with different enable conditions.  The best way to do this
 in Emacs now is with extended menu items; before that feature existed,
 it could be done by defining alias commands and using them in menu
@@ -2318,7 +2318,7 @@ items.  Here's an example that makes two aliases for
 @end example
 
 When using aliases in menus, often it is useful to display the
-equivalent key bindings for the ``real'' command name, not the aliases
+equivalent key bindings for the real command name, not the aliases
 (which typically don't have any key bindings except for the menu
 itself).  To request this, give the alias symbol a non-@code{nil}
 @code{menu-alias} property.  Thus,
@@ -2427,19 +2427,19 @@ Next we define the menu items:
 @end smallexample
 
 @noindent
-Note the symbols which the bindings are ``made for''; these appear
+Note the symbols which the bindings are made for; these appear
 inside square brackets, in the key sequence being defined.  In some
 cases, this symbol is the same as the command name; sometimes it is
-different.  These symbols are treated as ``function keys'', but they are
+different.  These symbols are treated as function keys, but they are
 not real function keys on the keyboard.  They do not affect the
-functioning of the menu itself, but they are ``echoed'' in the echo area
+functioning of the menu itself, but they are echoed in the echo area
 when the user selects from the menu, and they appear in the output of
 @code{where-is} and @code{apropos}.
 
   The menu in this example is intended for use with the mouse.  If a
 menu is intended for use with the keyboard, that is, if it is bound to
 a key sequence ending with a keyboard event, then the menu items
-should be bound to characters or ``real'' function keys, that can be
+should be bound to characters or real function keys, that can be
 typed with the keyboard.
 
   The binding whose definition is @code{("--")} is a separator line.
@@ -2475,15 +2475,15 @@ can do it this way:
 
   Emacs usually shows a @dfn{menu bar} at the top of each frame.
 @xref{Menu Bars,,,emacs, The GNU Emacs Manual}.  Menu bar items are
-subcommands of the fake ``function key'' @code{menu-bar}, as defined
+subcommands of the fake function key @code{menu-bar}, as defined
 in the active keymaps.
 
-  To add an item to the menu bar, invent a fake ``function key'' of your
+  To add an item to the menu bar, invent a fake function key of your
 own (let's call it @var{key}), and make a binding for the key sequence
 @code{[menu-bar @var{key}]}.  Most often, the binding is a menu keymap,
 so that pressing a button on the menu bar item leads to another menu.
 
-  When more than one active keymap defines the same ``function key''
+  When more than one active keymap defines the same function key
 for the menu bar, the item appears just once.  If the user clicks on
 that menu bar item, it brings up a single, combined menu containing
 all the subcommands of that item---the global subcommands, the local
@@ -2574,7 +2574,7 @@ If the value is @code{grow-only}, the tool bar expands automatically,
 but does not contract automatically.
 
   The tool bar contents are controlled by a menu keymap attached to a
-fake ``function key'' called @code{tool-bar} (much like the way the menu
+fake function key called @code{tool-bar} (much like the way the menu
 bar is controlled).  So you define a tool bar item using
 @code{define-key}, like this:
 
@@ -2583,7 +2583,7 @@ bar is controlled).  So you define a tool bar item using
 @end example
 
 @noindent
-where @var{key} is a fake ``function key'' to distinguish this item from
+where @var{key} is a fake function key to distinguish this item from
 other items, and @var{item} is a menu item key binding (@pxref{Extended
 Menu Items}), which says how to display this item and how it behaves.
 
@@ -2593,7 +2593,7 @@ tool bar bindings and have their normal meanings.  The @var{real-binding}
 in the item must be a command, not a keymap; in other words, it does not
 work to define a tool bar icon as a prefix key.
 
-  The @code{:help} property specifies a ``help-echo'' string to display
+  The @code{:help} property specifies a help-echo string to display
 while the mouse is on that item.  This is displayed in the same way as
 @code{help-echo} text properties (@pxref{Help display}).
 
index 947beeca23c9255a5e6b0851e393ff9a7fae3e1a..04aabd814fc178a1e6636812c6e9825d78e97c21 100644 (file)
@@ -21,9 +21,9 @@
 
 We have bound this manual using a new @dfn{lay-flat} binding
 technology.  This type of binding allows you to open a soft cover book
-so that it ``lays flat'' on a table without creasing the binding.
+so that it lays flat on a table without creasing the binding.
 
-In order to make the book lay flat properly, you need to ``crack'' the
+In order to make the book lay flat properly, you need to crack the
 binding.  To do this, divide the book into two sections and bend it so
 that the front and back covers meet.  Do not worry; the pages are
 sewn and glued to the binding, and will not fall out easily.
index a2e70a680eaa6eb191f553be768b088c39ff2a62..48e1b57eede9dd6e9e9b9aea028456ab181892a7 100644 (file)
@@ -41,7 +41,7 @@ pronounced ``could-er''.
   We say that ``the @sc{car} of this cons cell is'' whatever object
 its @sc{car} slot currently holds, and likewise for the @sc{cdr}.
 
-  A list is a series of cons cells ``chained together'', so that each
+  A list is a series of cons cells chained together, so that each
 cell refers to the next one.  There is one cons cell for each element
 of the list.  By convention, the @sc{car}s of the cons cells hold the
 elements of the list, and the @sc{cdr}s are used to chain the list
@@ -799,7 +799,7 @@ foo                       ;; @r{@code{foo} was changed.}
 @cindex destructive list operations
 
   You can modify the @sc{car} and @sc{cdr} contents of a cons cell with the
-primitives @code{setcar} and @code{setcdr}.  We call these ``destructive''
+primitives @code{setcar} and @code{setcdr}.  These are destructive
 operations because they change existing list structure.
 
 @cindex CL note---@code{rplaca} vs @code{setcar}
@@ -1035,9 +1035,9 @@ x1
 @cindex reordering, of elements in lists
 @cindex modification of lists
 
-  Here are some functions that rearrange lists ``destructively'' by
-modifying the @sc{cdr}s of their component cons cells.  We call these
-functions ``destructive'' because they chew up the original lists passed
+  Here are some functions that rearrange lists destructively by
+modifying the @sc{cdr}s of their component cons cells.  These functions
+are destructive because they chew up the original lists passed
 to them as arguments, relinking their cons cells to form a new list that
 is the returned value.
 
@@ -1522,7 +1522,7 @@ a @sc{cdr} @code{equal} to @var{value}.
 
 @code{rassoc} is like @code{assoc} except that it compares the @sc{cdr} of
 each @var{alist} association instead of the @sc{car}.  You can think of
-this as ``reverse @code{assoc}'', finding the key for a given value.
+this as reverse @code{assoc}, finding the key for a given value.
 @end defun
 
 @defun assq key alist
@@ -1563,7 +1563,7 @@ a @sc{cdr} @code{eq} to @var{value}.
 
 @code{rassq} is like @code{assq} except that it compares the @sc{cdr} of
 each @var{alist} association instead of the @sc{car}.  You can think of
-this as ``reverse @code{assq}'', finding the key for a given value.
+this as reverse @code{assq}, finding the key for a given value.
 
 For example:
 
index 91dc9a95390c7b81e1d2eb1a5a3a0c1b94f092bb..82de765876e180dc9400fe7e5b3054346cfb3af7 100644 (file)
@@ -40,7 +40,7 @@ For on-demand loading of external libraries, @pxref{Dynamic Libraries}.
 * Repeated Loading::        Precautions about loading a file twice.
 * Named Features::          Loading a library if it isn't already loaded.
 * Where Defined::           Finding which file defined a certain symbol.
-* Unloading::               How to ``unload'' a library that was loaded.
+* Unloading::               How to unload a library that was loaded.
 * Hooks for Loading::       Providing code to be run when
                               particular libraries are loaded.
 @end menu
@@ -456,7 +456,7 @@ Autoloading can also be triggered by looking up the documentation of
 the function or macro (@pxref{Documentation Basics}).
 
   There are two ways to set up an autoloaded function: by calling
-@code{autoload}, and by writing a special ``magic'' comment in the
+@code{autoload}, and by writing a ``magic'' comment in the
 source before the real definition.  @code{autoload} is the low-level
 primitive for autoloading; any Lisp program can call @code{autoload} at
 any time.  Magic comments are the most convenient way to make a function
@@ -668,7 +668,7 @@ value of this variable is @code{";;;###autoload"}.
 @defvar generated-autoload-file
 The value of this variable names an Emacs Lisp file where the autoload
 calls should go.  The default value is @file{loaddefs.el}, but you can
-override that, e.g., in the ``Local Variables'' section of a
+override that, e.g., in the local variables section of a
 @file{.el} file (@pxref{File Local Variables}).  The autoload file is
 assumed to contain a trailer starting with a formfeed character.
 @end defvar
index 7bdfee0a4ad4e9fdefc1bf313fc37921c791a98b..a90c6f1da6fa411080c492519cd9d5f888aaeb0b 100644 (file)
@@ -307,7 +307,7 @@ program is actually run.
   When defining a macro you must pay attention to the number of times
 the arguments will be evaluated when the expansion is executed.  The
 following macro (used to facilitate iteration) illustrates the
-problem.  This macro allows us to write a ``for'' loop construct.
+problem.  This macro allows us to write a for-loop construct.
 
 @findex for
 @example
@@ -345,7 +345,7 @@ For example, (for i from 1 to 10 do (print i))."
 
 @noindent
 The arguments @code{from}, @code{to}, and @code{do} in this macro are
-``syntactic sugar''; they are entirely ignored.  The idea is that you
+syntactic sugar; they are entirely ignored.  The idea is that you
 will write noise words (such as @code{from}, @code{to}, and @code{do})
 in those positions in the macro call.
 
@@ -568,7 +568,7 @@ If @code{initialize} is interpreted, a new list @code{(nil)} is
 constructed each time @code{initialize} is called.  Thus, no side effect
 survives between calls.  If @code{initialize} is compiled, then the
 macro @code{empty-object} is expanded during compilation, producing a
-single ``constant'' @code{(nil)} that is reused and altered each time
+single constant @code{(nil)} that is reused and altered each time
 @code{initialize} is called.
 
 One way to avoid pathological cases like this is to think of
index 4f25b91506e86ce0edabc79ed91cf72b5b96a3f4..3eaba4190346059110cb84ded311599771b54285 100644 (file)
@@ -20,8 +20,8 @@ deleted, so that it stays with the two characters on either side of it.
 * Marker Insertion Types::   Two ways a marker can relocate when you
                                insert where it points.
 * Moving Markers::           Moving the marker to a new buffer or position.
-* The Mark::                 How ``the mark'' is implemented with a marker.
-* The Region::               How to access ``the region''.
+* The Mark::                 How the mark is implemented with a marker.
+* The Region::               How to access the region.
 @end menu
 
 @node Overview of Markers
@@ -404,7 +404,7 @@ This is another name for @code{set-marker}.
 
   Each buffer has a special marker, which is designated @dfn{the
 mark}.  When a buffer is newly created, this marker exists but does
-not point anywhere; this means that the mark ``doesn't exist'' in that
+not point anywhere; this means that the mark doesn't exist in that
 buffer yet.  Subsequent commands can set the mark.
 
   The mark specifies a position to bound a range of text for many
@@ -424,7 +424,7 @@ sets the mark to the value of point before doing any replacements,
 because this enables the user to move back there conveniently after
 the replace is finished.
 
-  Once the mark ``exists'' in a buffer, it normally never ceases to
+  Once the mark exists in a buffer, it normally never ceases to
 exist.  However, it may become @dfn{inactive}, if Transient Mark mode
 is enabled.  The buffer-local variable @code{mark-active}, if
 non-@code{nil}, means that the mark is active.  A command can call the
@@ -620,7 +620,7 @@ This piece of command_loop_1, run unless deactivating the mark:
 @end defvar
 
 @defun handle-shift-selection
-This function implements the ``shift-selection'' behavior of
+This function implements the shift-selection behavior of
 point-motion commands.  @xref{Shift Selection,,, emacs, The GNU Emacs
 Manual}.  It is called automatically by the Emacs command loop
 whenever a command with a @samp{^} character in its @code{interactive}
@@ -661,8 +661,8 @@ more marks than this are pushed onto the @code{mark-ring},
 
 @node The Region
 @section The Region
-@c The index entry must be just ``region'' to make it the first hit
-@c when the user types ``i region RET'', because otherwise the Info
+@c The index entry must be just "region" to make it the first hit
+@c when the user types "i region RET", because otherwise the Info
 @c reader will present substring matches in alphabetical order,
 @c putting this one near the end, with something utterly unrelated as
 @c the first hit.
index 2aec149524d5ac4fae3e463e940111a53553e44a..96c1020d748ecbef613e5ec2a37013d37e7500f8 100644 (file)
@@ -81,7 +81,7 @@ there is an active minibuffer; such a minibuffer is called a
 incrementing the number at the end of the name.  (The names begin with
 a space so that they won't show up in normal buffer lists.)  Of
 several recursive minibuffers, the innermost (or most recently
-entered) is the active minibuffer.  We usually call this ``the''
+entered) is the active minibuffer.  We usually call this @emph{the}
 minibuffer.  You can permit or forbid recursive minibuffers by setting
 the variable @code{enable-recursive-minibuffers}, or by putting
 properties of that name on command symbols (@xref{Recursive Mini}.)
@@ -263,7 +263,7 @@ The function now has a list of regular expressions that it passes to
 @code{read-from-minibuffer} to obtain the user's input.  The first
 element of the list is the default result in case of empty input.  All
 elements of the list are available to the user as the ``future
-minibuffer history list'' (@pxref{Minibuffer History, future list,,
+minibuffer history'' list (@pxref{Minibuffer History, future list,,
 emacs, The GNU Emacs Manual}).
 
 The optional argument @var{history}, if non-@code{nil}, is a symbol
@@ -895,7 +895,7 @@ pertains to the area after @code{"/usr/"} and before @code{"/doc"}.
 @end defun
 
 If you store a completion alist in a variable, you should mark the
-variable as ``risky'' by giving it a non-@code{nil}
+variable as risky by giving it a non-@code{nil}
 @code{risky-local-variable} property.  @xref{File Local Variables}.
 
 @defvar completion-ignore-case
@@ -1958,7 +1958,7 @@ the call.
 This function asks the user a question, expecting input in the echo
 area.  It returns @code{t} if the user types @kbd{y}, @code{nil} if the
 user types @kbd{n}.  This function also accepts @key{SPC} to mean yes
-and @key{DEL} to mean no.  It accepts @kbd{C-]} to mean ``quit'', like
+and @key{DEL} to mean no.  It accepts @kbd{C-]} to quit, like
 @kbd{C-g}, because the question might look like a minibuffer and for
 that reason the user might try to use @kbd{C-]} to get out.  The answer
 is a single character, with no @key{RET} needed to terminate it.  Upper
@@ -2049,7 +2049,7 @@ Do you really want to remove everything? (yes or no)
 @cindex multiple yes-or-no questions
 
   When you have a series of similar questions to ask, such as ``Do you
-want to save this buffer'' for each buffer in turn, you should use
+want to save this buffer?'' for each buffer in turn, you should use
 @code{map-y-or-n-p} to ask the collection of questions, rather than
 asking each question individually.  This gives the user certain
 convenient facilities such as the ability to answer the whole series at
@@ -2120,7 +2120,7 @@ answer); @var{function} is a function of one argument (an object from
 
 When the user responds with @var{char}, @code{map-y-or-n-p} calls
 @var{function}.  If it returns non-@code{nil}, the object is considered
-``acted upon'', and @code{map-y-or-n-p} advances to the next object in
+acted upon, and @code{map-y-or-n-p} advances to the next object in
 @var{list}.  If it returns @code{nil}, the prompt is repeated for the
 same object.
 
index a8b6bb19c5f1586a5764f5968fa509b457d59b18..a1747707d11b932d61903e1d97d37ed50167bd13 100644 (file)
@@ -116,7 +116,7 @@ This function runs an abnormal hook by calling all the hook functions in
 
 @defun run-hook-with-args-until-failure hook &rest args
 This function runs an abnormal hook by calling each hook function in
-turn, stopping if one of them ``fails'' by returning @code{nil}.  Each
+turn, stopping if one of them fails by returning @code{nil}.  Each
 hook function is passed the arguments @var{args}.  If this function
 stops because one of the hook functions fails, it returns @code{nil};
 otherwise it returns a non-@code{nil} value.
@@ -124,7 +124,7 @@ otherwise it returns a non-@code{nil} value.
 
 @defun run-hook-with-args-until-success hook &rest args
 This function runs an abnormal hook by calling each hook function,
-stopping if one of them ``succeeds'' by returning a non-@code{nil}
+stopping if one of them succeeds by returning a non-@code{nil}
 value.  Each hook function is passed the arguments @var{args}.  If this
 function stops because one of the hook functions returns a
 non-@code{nil} value, it returns that value; otherwise it returns
@@ -346,14 +346,14 @@ reserved for users.
 
 A major mode can also rebind the keys @kbd{M-n}, @kbd{M-p} and
 @kbd{M-s}.  The bindings for @kbd{M-n} and @kbd{M-p} should normally
-be some kind of ``moving forward and backward'', but this does not
+be some kind of moving forward and backward, but this does not
 necessarily mean cursor motion.
 
 It is legitimate for a major mode to rebind a standard key sequence if
-it provides a command that does ``the same job'' in a way better
+it provides a command that does the same job in a way better
 suited to the text this mode is used for.  For example, a major mode
 for editing a programming language might redefine @kbd{C-M-a} to
-``move to the beginning of a function'' in a way that works better for
+move to the beginning of a function in a way that works better for
 that language.
 
 It is also legitimate for a major mode to rebind a standard key
@@ -1003,7 +1003,7 @@ should have the form @w{@code{(@var{id} @var{contents})}}, where
 @itemize
 @item
 @var{id} is either @code{nil}, or a Lisp object that identifies the
-entry.  If the latter, the cursor stays on the ``same'' entry when
+entry.  If the latter, the cursor stays on the same entry when
 re-sorting entries.  Comparison is done with @code{equal}.
 
 @item
@@ -1092,8 +1092,8 @@ documentation for the mode command.  If you do not supply it,
 The argument @var{comment-list} is a list in which each element is
 either a character, a string of one or two characters, or a cons cell.
 A character or a string is set up in the mode's syntax table as a
-``comment starter''.  If the entry is a cons cell, the @sc{car} is set
-up as a ``comment starter'' and the @sc{cdr} as a ``comment ender''.
+comment starter.  If the entry is a cons cell, the @sc{car} is set
+up as a comment starter and the @sc{cdr} as a comment ender.
 (Use @code{nil} for the latter if you want comments to end at the end
 of the line.)  Note that the syntax table mechanism has limitations
 about what comment starters and enders are actually possible.
@@ -1782,7 +1782,7 @@ symbol whose value is void.
 There is one exception: if the value of @var{symbol} is a string, it is
 displayed verbatim: the @code{%}-constructs are not recognized.
 
-Unless @var{symbol} is marked as ``risky'' (i.e., it has a
+Unless @var{symbol} is marked as risky (i.e., it has a
 non-@code{nil} @code{risky-local-variable} property), all text
 properties specified in @var{symbol}'s value are ignored.  This includes
 the text properties of strings in @var{symbol}'s value, as well as all
@@ -2408,10 +2408,10 @@ variables @code{imenu-prev-index-position-function} and
 
 @defvar imenu-prev-index-position-function
 If this variable is non-@code{nil}, its value should be a function that
-finds the next ``definition'' to put in the buffer index, scanning
+finds the next definition to put in the buffer index, scanning
 backward in the buffer from point.  It should return @code{nil} if it
-doesn't find another ``definition'' before point.  Otherwise it should
-leave point at the place it finds a ``definition'' and return any
+doesn't find another definition before point.  Otherwise it should
+leave point at the place it finds a definition and return any
 non-@code{nil} value.
 
 Setting this variable makes it buffer-local in the current buffer.
@@ -2527,7 +2527,7 @@ If non-@code{nil}, the value should look like this:
 
 @example
 (@var{keywords} [@var{keywords-only} [@var{case-fold}
- [@var{syntax-alist} [@var{syntax-begin} @var{other-vars}@dots{}]]]])
+ [@var{syntax-alist} @var{other-vars}@dots{}]]])
 @end example
 
 The first element, @var{keywords}, indirectly specifies the value of
@@ -2559,11 +2559,6 @@ fontification; the resulting syntax table is stored in
 @code{nil}, syntactic fontification uses the syntax table returned by
 the @code{syntax-table} function.  @xref{Syntax Table Functions}.
 
-The fifth element, @var{syntax-begin}, specifies the value of
-@code{font-lock-beginning-of-syntax-function}.  We recommend setting
-this variable to @code{nil} and using @code{syntax-begin-function}
-instead.
-
 All the remaining elements (if any) are collectively called
 @var{other-vars}.  Each of these elements should have the form
 @code{(@var{variable} . @var{value})}---which means, make
@@ -3026,7 +3021,7 @@ default value is the symbol itself.  Thus, the default value of
 @code{font-lock-comment-face} is @code{font-lock-comment-face}.
 
   The faces are listed with descriptions of their typical usage, and in
-order of greater to lesser ``prominence''.  If a mode's syntactic
+order of greater to lesser prominence.  If a mode's syntactic
 categories do not fit well with the usage descriptions, the faces can be
 assigned using the ordering as a guide.
 
@@ -3124,26 +3119,6 @@ is @code{nil}, syntactic fontification uses the buffer's syntax table
 Table Functions}).
 @end defvar
 
-@defvar font-lock-beginning-of-syntax-function
-If this variable is non-@code{nil}, it should be a function to move
-point back to a position that is syntactically at ``top level'' and
-outside of strings or comments.  The value is normally set through an
-@var{other-vars} element in @code{font-lock-defaults}.  If it is
-@code{nil}, Font Lock uses @code{syntax-begin-function} to move back
-outside of any comment, string, or sexp (@pxref{Position Parse}).
-
-This variable is semi-obsolete; we usually recommend setting
-@code{syntax-begin-function} instead.  One of its uses is to tune the
-behavior of syntactic fontification, e.g., to ensure that different
-kinds of strings or comments are highlighted differently.
-
-The specified function is called with no arguments.  It should leave
-point at the beginning of any enclosing syntactic block.  Typical values
-are @code{beginning-of-line} (used when the start of the line is known
-to be outside a syntactic block), or @code{beginning-of-defun} for
-programming modes, or @code{backward-paragraph} for textual modes.
-@end defvar
-
 @defvar font-lock-syntactic-face-function
 If this variable is non-@code{nil}, it should be a function to determine
 which face to use for a given syntactic element (a string or a comment).
@@ -3338,13 +3313,13 @@ indentation code will want to be somewhat friendly to syntactically
 incorrect code.
 
 Good maintainable indentation functions usually fall into two categories:
-either parsing forward from some ``safe'' starting point until the
+either parsing forward from some safe starting point until the
 position of interest, or parsing backward from the position of interest.
 Neither of the two is a clearly better choice than the other: parsing
 backward is often more difficult than parsing forward because
 programming languages are designed to be parsed forward, but for the
 purpose of indentation it has the advantage of not needing to
-guess a ``safe'' starting point, and it generally enjoys the property
+guess a safe starting point, and it generally enjoys the property
 that only a minimum of text will be analyzed to decide the indentation
 of a line, so indentation will tend to be less affected by syntax errors in
 some earlier unrelated piece of code.  Parsing forward on the other hand
@@ -3370,8 +3345,8 @@ of Lisp sexps and adapts it to non-Lisp languages.
 @cindex SMIE
 
 SMIE is a package that provides a generic navigation and indentation
-engine.  Based on a very simple parser using an ``operator precedence
-grammar'', it lets major modes extend the sexp-based navigation of Lisp
+engine.  Based on a very simple parser using an operator precedence
+grammar, it lets major modes extend the sexp-based navigation of Lisp
 to non-Lisp languages as well as provide a simple to use but reliable
 auto-indentation.
 
index 8781cd6d6967f346da854c716851d9cc2190468f..3351b841f45914cb5893aeff3f3e0681b7143a36 100644 (file)
@@ -483,7 +483,7 @@ Corresponds to the Unicode @code{Numeric_Value} property for
 characters whose @code{Numeric_Type} is @samp{Decimal}.  The value is
 an integer, or @code{nil} if the character has no decimal digit value.
 For unassigned codepoints, the value is @code{nil}, which means
-@acronym{NaN}, or ``not-a-number''.
+@acronym{NaN}, or ``not a number''.
 
 @item digit-value
 Corresponds to the Unicode @code{Numeric_Value} property for
@@ -583,17 +583,17 @@ This function returns the value of @var{char}'s @var{propname} property.
      @result{} Nd
 @end group
 @group
-;; subscript 4
+;; U+2084 SUBSCRIPT FOUR
 (get-char-code-property ?\u2084 'digit-value)
      @result{} 4
 @end group
 @group
-;; one fifth
+;; U+2155 VULGAR FRACTION ONE FIFTH
 (get-char-code-property ?\u2155 'numeric-value)
      @result{} 0.2
 @end group
 @group
-;; Roman IV
+;; U+2163 ROMAN NUMERAL FOUR
 (get-char-code-property ?\u2163 'numeric-value)
      @result{} 4
 @end group
@@ -1956,7 +1956,7 @@ and @ref{Invoking the Input Method}.
 @section Locales
 @cindex locale
 
-  POSIX defines a concept of ``locales'' which control which language
+  In POSIX, locales control which language
 to use in language-related features.  These Emacs variables control
 how Emacs interacts with these features.
 
index 7b4a0a6d407cf80ee64e5873a0f4950ce1784ffd..3c70d2f0a06951bc149ef6c6e6db021ae08ae8a4 100644 (file)
@@ -224,7 +224,7 @@ distinguish them.
 @cindex NaN
   The @acronym{IEEE} floating-point standard supports positive
 infinity and negative infinity as floating-point values.  It also
-provides for a class of values called NaN or ``not-a-number'';
+provides for a class of values called NaN, or ``not a number'';
 numerical functions return such values in cases where there is no
 correct answer.  For example, @code{(/ 0.0 0.0)} returns a NaN@.
 Although NaN values carry a sign, for practical purposes there is no other
@@ -812,7 +812,7 @@ Rounding a value equidistant between two integers returns the even integer.
 sequence of @dfn{bits} (digits which are either zero or one).  A bitwise
 operation acts on the individual bits of such a sequence.  For example,
 @dfn{shifting} moves the whole sequence left or right one or more places,
-reproducing the same pattern ``moved over''.
+reproducing the same pattern moved over.
 
   The bitwise operations in Emacs Lisp apply only to integers.
 
@@ -989,17 +989,16 @@ Here are other examples:
 @end defun
 
 @defun logand &rest ints-or-markers
-This function returns the ``logical and'' of the arguments: the
-@var{n}th bit is set in the result if, and only if, the @var{n}th bit is
-set in all the arguments.  (``Set'' means that the value of the bit is 1
-rather than 0.)
+This function returns the bitwise AND of the arguments: the @var{n}th
+bit is 1 in the result if, and only if, the @var{n}th bit is 1 in all
+the arguments.
 
-For example, using 4-bit binary numbers, the ``logical and'' of 13 and
+For example, using 4-bit binary numbers, the bitwise AND of 13 and
 12 is 12: 1101 combined with 1100 produces 1100.
-In both the binary numbers, the leftmost two bits are set (i.e., they
-are 1's), so the leftmost two bits of the returned value are set.
-However, for the rightmost two bits, each is zero in at least one of
-the arguments, so the rightmost two bits of the returned value are 0's.
+In both the binary numbers, the leftmost two bits are both 1
+so the leftmost two bits of the returned value are both 1.
+However, for the rightmost two bits, each is 0 in at least one of
+the arguments, so the rightmost two bits of the returned value are both 0.
 
 @noindent
 Therefore,
@@ -1040,9 +1039,9 @@ because its binary representation consists entirely of ones.  If
 @end defun
 
 @defun logior &rest ints-or-markers
-This function returns the ``inclusive or'' of its arguments: the @var{n}th bit
-is set in the result if, and only if, the @var{n}th bit is set in at least
-one of the arguments.  If there are no arguments, the result is zero,
+This function returns the bitwise inclusive OR of its arguments: the @var{n}th
+bit is 1 in the result if, and only if, the @var{n}th bit is 1 in at
+least one of the arguments.  If there are no arguments, the result is 0,
 which is an identity element for this operation.  If @code{logior} is
 passed just one argument, it returns that argument.
 
@@ -1065,9 +1064,9 @@ passed just one argument, it returns that argument.
 @end defun
 
 @defun logxor &rest ints-or-markers
-This function returns the ``exclusive or'' of its arguments: the
-@var{n}th bit is set in the result if, and only if, the @var{n}th bit is
-set in an odd number of the arguments.  If there are no arguments, the
+This function returns the bitwise exclusive OR of its arguments: the
+@var{n}th bit is 1 in the result if, and only if, the @var{n}th bit is
+1 in an odd number of the arguments.  If there are no arguments, the
 result is 0, which is an identity element for this operation.  If
 @code{logxor} is passed just one argument, it returns that argument.
 
@@ -1090,7 +1089,7 @@ result is 0, which is an identity element for this operation.  If
 @end defun
 
 @defun lognot integer
-This function returns the logical complement of its argument: the @var{n}th
+This function returns the bitwise complement of its argument: the @var{n}th
 bit is one in the result if, and only if, the @var{n}th bit is zero in
 @var{integer}, and vice-versa.
 
@@ -1218,7 +1217,8 @@ fashion.  The numbers are not truly random, but they have certain
 properties that mimic a random series.  For example, all possible
 values occur equally often in a pseudo-random series.
 
-  Pseudo-random numbers are generated from a ``seed''.  Starting from
+@cindex seed, for random number generation
+  Pseudo-random numbers are generated from a @dfn{seed value}.  Starting from
 any given seed, the @code{random} function always generates the same
 sequence of numbers.  By default, Emacs initializes the random seed at
 startup, in such a way that the sequence of values of @code{random}
index c4c74ec755639f1f31cc3843d2461164ca7210ee..0a19274f6a1f34fef21d64bd6d5ed164186bde77 100644 (file)
@@ -18,7 +18,7 @@ possible objects.
 have similar structures and may usually be used in the same contexts.
 Types can overlap, and objects can belong to two or more types.
 Consequently, we can ask whether an object belongs to a particular type,
-but not for ``the'' type of an object.
+but not for @emph{the} type of an object.
 
 @cindex primitive type
   A few fundamental object types are built into Emacs.  These, from
@@ -310,7 +310,7 @@ vertical tab, formfeed, space, return, del, and escape as @samp{?\a},
 @samp{?\b}, @samp{?\t}, @samp{?\n}, @samp{?\v}, @samp{?\f},
 @samp{?\s}, @samp{?\r}, @samp{?\d}, and @samp{?\e}, respectively.
 (@samp{?\s} followed by a dash has a different meaning---it applies
-the ``super'' modifier to the following character.)  Thus,
+the Super modifier to the following character.)  Thus,
 
 @example
 ?\a @result{} 7                 ; @r{control-g, @kbd{C-g}}
@@ -329,7 +329,7 @@ the ``super'' modifier to the following character.)  Thus,
 @cindex escape sequence
   These sequences which start with backslash are also known as
 @dfn{escape sequences}, because backslash plays the role of an
-``escape character''; this terminology has nothing to do with the
+escape character; this has nothing to do with the
 character @key{ESC}.  @samp{\s} is meant for use in character
 constants; in string constants, just write the space.
 
@@ -556,7 +556,7 @@ do such a thing.
 @cindex CL note---case of letters
 @quotation
 @b{Common Lisp note:} In Common Lisp, lower case letters are always
-``folded'' to upper case, unless they are explicitly escaped.  In Emacs
+folded to upper case, unless they are explicitly escaped.  In Emacs
 Lisp, upper case and lower case letters are distinct.
 @end quotation
 
@@ -644,7 +644,7 @@ same object, @code{nil}.
 
   A @dfn{cons cell} is an object that consists of two slots, called
 the @sc{car} slot and the @sc{cdr} slot.  Each slot can @dfn{hold} any
-Lisp object.  We also say that ``the @sc{car} of this cons cell is''
+Lisp object.  We also say that the @sc{car} of this cons cell is
 whatever object its @sc{car} slot currently holds, and likewise for
 the @sc{cdr}.
 
@@ -660,13 +660,13 @@ of lists, we refer to any structure made out of cons cells as a
 @quotation
 A note to C programmers: a Lisp list thus works as a @dfn{linked list}
 built up of cons cells.  Because pointers in Lisp are implicit, we do
-not distinguish between a cons cell slot ``holding'' a value versus
-``pointing to'' the value.
+not distinguish between a cons cell slot holding a value versus
+pointing to the value.
 @end quotation
 
 @cindex atoms
   Because cons cells are so central to Lisp, we also have a word for
-``an object which is not a cons cell''.  These objects are called
+an object which is not a cons cell.  These objects are called
 @dfn{atoms}.
 
 @cindex parenthesis
@@ -695,10 +695,10 @@ hold @code{nil}.
 
   The names @sc{car} and @sc{cdr} derive from the history of Lisp.  The
 original Lisp implementation ran on an @w{IBM 704} computer which
-divided words into two parts, called the ``address'' part and the
-``decrement''; @sc{car} was an instruction to extract the contents of
+divided words into two parts, the address and the
+decrement; @sc{car} was an instruction to extract the contents of
 the address part of a register, and @sc{cdr} an instruction to extract
-the contents of the decrement.  By contrast, ``cons cells'' are named
+the contents of the decrement.  By contrast, cons cells are named
 for the function @code{cons} that creates them, which in turn was named
 for its purpose, the construction of cells.
 
@@ -737,7 +737,7 @@ represents a reference to a Lisp object, either an atom or another cons
 cell.
 
   In this example, the first box, which holds the @sc{car} of the first
-cons cell, refers to or ``holds'' @code{rose} (a symbol).  The second
+cons cell, refers to or holds @code{rose} (a symbol).  The second
 box, holding the @sc{cdr} of the first cons cell, refers to the next
 pair of boxes, the second cons cell.  The @sc{car} of the second cons
 cell is @code{violet}, and its @sc{cdr} is the third cons cell.  The
@@ -1176,7 +1176,7 @@ a whole character set.
 @cindex @samp{#^} read syntax
   The printed representation of a char-table is like a vector
 except that there is an extra @samp{#^} at the beginning.@footnote{You
-may also encounter @samp{#^^}, used for ``sub-char-tables''.}
+may also encounter @samp{#^^}, used for sub-char-tables.}
 
   @xref{Char-Tables}, for special functions to operate on char-tables.
 Uses of char-tables include:
@@ -1204,7 +1204,7 @@ be @code{t} or @code{nil}.
   The printed representation of a bool-vector is like a string, except
 that it begins with @samp{#&} followed by the length.  The string
 constant that follows actually specifies the contents of the bool-vector
-as a bitmap---each ``character'' in the string contains 8 bits, which
+as a bitmap---each character in the string contains 8 bits, which
 specify the next 8 elements of the bool-vector (1 stands for @code{t},
 and 0 for @code{nil}).  The least significant bits of the character
 correspond to the lowest indices in the bool-vector.
@@ -1423,7 +1423,7 @@ buffer}.
   The contents of a buffer are much like a string, but buffers are not
 used like strings in Emacs Lisp, and the available operations are
 different.  For example, you can insert text efficiently into an
-existing buffer, altering the buffer's contents, whereas ``inserting''
+existing buffer, altering the buffer's contents, whereas inserting
 text into a string requires concatenating substrings, and the result
 is an entirely new string object.
 
@@ -1715,7 +1715,7 @@ look alike but are not the same Lisp object.  This shows the difference:
 @end example
 
   You can also use the same syntax to make a circular structure, which
-appears as an ``element'' within itself.  Here is an example:
+appears as an element within itself.  Here is an example:
 
 @example
 #1=(a #1#)
index 6ef87dfbd53b634e926511864fa1c5e718455f9f..204055d9e78e4de46a680cfc1b58ac6d22f874b2 100644 (file)
@@ -725,7 +725,7 @@ another application without doing anything special to Emacs.
 @c have SIGTSTP?
 @cindex SIGTSTP
   Some operating systems (those without @code{SIGTSTP}, or MS-DOS) do
-not support suspension of jobs; on these systems, ``suspension''
+not support suspension of jobs; on these systems, suspension
 actually creates a new shell temporarily as a subprocess of Emacs.
 Then you would exit the shell to return to Emacs.
 
@@ -1013,9 +1013,9 @@ process-environment
 @end group
 @end smallexample
 
-If @code{process-environment} contains ``duplicate'' elements that
+If @code{process-environment} contains multiple elements that
 specify the same environment variable, the first of these elements
-specifies the variable, and the other ``duplicates'' are ignored.
+specifies the variable, and the others are ignored.
 @end defvar
 
 @defvar initial-environment
@@ -1167,7 +1167,7 @@ user-id or login name that isn't defined, it returns @code{nil}.
   The symbols @code{user-login-name}, @code{user-real-login-name} and
 @code{user-full-name} are variables as well as functions.  The functions
 return the same values that the variables hold.  These variables allow
-you to ``fake out'' Emacs by telling the functions what to return.  The
+you to fake out Emacs by telling the functions what to return.  The
 variables are also useful for constructing frame titles (@pxref{Frame
 Titles}).
 
@@ -1545,13 +1545,13 @@ because that is how @samp{%S} normally pads to two positions.
 
 The characters @samp{E} and @samp{O} act as modifiers when used between
 @samp{%} and one of the letters in the table above.  @samp{E} specifies
-using the current locale's ``alternative'' version of the date and time.
+using the current locale's alternative version of the date and time.
 In a Japanese locale, for example, @code{%Ex} might yield a date format
 based on the Japanese Emperors' reigns.  @samp{E} is allowed in
 @samp{%Ec}, @samp{%EC}, @samp{%Ex}, @samp{%EX}, @samp{%Ey}, and
 @samp{%EY}.
 
-@samp{O} means to use the current locale's ``alternative''
+@samp{O} means to use the current locale's alternative
 representation of numbers, instead of the ordinary decimal digits.  This
 is allowed with most letters, all the ones that output numbers.
 
@@ -2192,7 +2192,7 @@ To define system-specific X11 keysyms, set the variable
 This variable's value should be an alist with one element for each
 system-specific keysym.  Each element has the form @code{(@var{code}
 . @var{symbol})}, where @var{code} is the numeric keysym code (not
-including the ``vendor specific'' bit,
+including the vendor-specific bit,
 @ifnottex
 @minus{}2**28),
 @end ifnottex
@@ -2565,7 +2565,7 @@ specification prior to @samp{"1.0"}.
 
 Several operating systems support watching of filesystems for changes
 of files.  If configured properly, Emacs links a respective library
-like @file{gfilenotify}, @file{inotify}, or  @file{w32notify}
+like @file{gfilenotify}, @file{inotify}, or @file{w32notify}
 statically.  These libraries enable watching of filesystems on the
 local machine.
 
@@ -2625,13 +2625,19 @@ any one of the following symbols:
 @item deleted
 @var{file} was deleted
 @item changed
-@var{file} has changed
+@var{file}'s contents has changed; with @file{w32notify} library,
+reports attribute changes as well
 @item renamed
 @var{file} has been renamed to @var{file1}
 @item attribute-changed
 a @var{file} attribute was changed
 @end table
 
+Note that the @file{w32notify} library does not report
+@code{attribute-changed} events.  When some file's attribute, like
+permissions or modification time, has changed, this library reports a
+@code{changed} event.
+
 @var{file} and @var{file1} are the name of the file(s) whose event is
 being reported.  For example:
 
@@ -2692,6 +2698,17 @@ Removes an existing file watch specified by its @var{descriptor}.
 @code{file-notify-add-watch}.
 @end defun
 
+@defun file-notify-valid-p descriptor
+Checks a watch specified by its @var{descriptor} for validity.
+@var{descriptor} should be an object returned by
+@code{file-notify-add-watch}.
+
+A watch can become invalid if the file or directory it watches is
+deleted, or if the watcher thread exits abnormally for any other
+reason.  Removing the watch by calling @code{file-notify-rm-watch}
+also makes it invalid.
+@end defun
+
 @node Dynamic Libraries
 @section Dynamically Loaded Libraries
 @cindex dynamic libraries
index 7136286f0ba49bae9f7c73c4181e2dd65b8ecc62..21a8ddd5d03502a8d6aec9340af7555b9d8c33be 100644 (file)
@@ -292,7 +292,7 @@ case for the default GNU archive).
 
 Otherwise, the base location should be a directory name.  In this
 case, Emacs retrieves packages from this archive via ordinary file
-access.  Such ``local'' archives are mainly useful for testing.
+access.  Such local archives are mainly useful for testing.
 @end defopt
 
   A package archive is simply a directory in which the package files,
index 200935d5c6040e49aea2dd44ec898dce7baebcc8..72b76ce5c8fa22f8096547093641da84a2522c74 100644 (file)
@@ -1,4 +1,4 @@
-@c -*-texinfo-*-
+@c -*- mode: texinfo; coding: utf-8 -*-
 @c This is part of the GNU Emacs Lisp Reference Manual.
 @c Copyright (C) 1990-1995, 1998-2015 Free Software Foundation, Inc.
 @c See the file elisp.texi for copying conditions.
@@ -22,11 +22,11 @@ be a position (an integer), but accept a marker as a substitute,
 normally ignore which buffer the marker points into; they convert the
 marker to an integer, and use that integer, exactly as if you had
 passed the integer as the argument, even if the marker points to the
-``wrong'' buffer.  A marker that points nowhere cannot convert to an
+wrong buffer.  A marker that points nowhere cannot convert to an
 integer; using it instead of an integer causes an error.
 @xref{Markers}.
 
-  See also the ``field'' feature (@pxref{Fields}), which provides
+  See also the field feature (@pxref{Fields}), which provides
 functions that are used by many cursor-motion commands.
 
 @menu
@@ -227,7 +227,7 @@ backward until encountering the front of a word, rather than forward.
 @c Emacs 19 feature
 This variable affects the behavior of @code{forward-word} and everything
 that uses it.  If it is non-@code{nil}, then characters in the
-``escape'' and ``character quote'' syntax classes count as part of
+escape and character-quote syntax classes count as part of
 words.  Otherwise, they do not.
 @end defopt
 
@@ -409,7 +409,7 @@ mentioned here only for completeness.
 @deffn Command previous-line count
 @cindex goal column
 This function moves point up @var{count} lines (down if @var{count}
-is negative).  In moving, it attempts to keep point in the ``goal column''
+is negative).  In moving, it attempts to keep point in the @dfn{goal column}
 (normally the same column that it was at the beginning of the move).
 
 If there is no character in the target line exactly under the current
@@ -434,7 +434,7 @@ to use and more reliable (no dependence on goal column, etc.).
 
 @deffn Command next-line count
 This function moves point down @var{count} lines (up if @var{count}
-is negative).  In moving, it attempts to keep point in the ``goal column''
+is negative).  In moving, it attempts to keep point in the goal column
 (normally the same column that it was at the beginning of the move).
 
 If there is no character in the target line exactly under the current
@@ -827,7 +827,7 @@ is zero or less.
 @section Excursions
 @cindex excursion
 
-  It is often useful to move point ``temporarily'' within a localized
+  It is often useful to move point temporarily within a localized
 portion of the program.  This is called an @dfn{excursion}, and it is
 done with the @code{save-excursion} special form.  This construct
 remembers the initial identity of the current buffer, and its value
@@ -862,7 +862,7 @@ consequences, so the byte compiler warns if you call @code{set-buffer}
 during an excursion:
 
 @example
-Warning: Use `with-current-buffer' rather than
+Warning: Use ‘with-current-buffer’ rather than
          save-excursion+set-buffer
 @end example
 
index c9509b0f216d41aa83ee237be307e38d6709f7b1..845db0df1ac9a3b99fb9dbd04f5b5390d2dbc2a0 100644 (file)
@@ -734,7 +734,7 @@ Initialize the process query flag to @var{query-flag}.
 
 @item :stop @var{stopped}
 If @var{stopped} is non-@code{nil}, start the process in the
-``stopped'' state.
+stopped state.
 
 @item :filter @var{filter}
 Initialize the process filter to @var{filter}.
@@ -786,7 +786,7 @@ Initialize the process query flag to @var{query-flag}.
 
 @item :stop @var{stopped}
 If @var{stopped} is non-@code{nil}, start the process in the
-``stopped'' state.
+stopped state.
 
 @item :filter @var{filter}
 Initialize the process filter to @var{filter}.
@@ -1070,7 +1070,7 @@ This function sets the process plist of @var{process} to @var{plist}.
   Asynchronous subprocesses receive input when it is sent to them by
 Emacs, which is done with the functions in this section.  You must
 specify the process to send input to, and the input data to send.  The
-data appears on the ``standard input'' of the subprocess.
+data appears on the standard input of the subprocess.
 
 @c FIXME which?
   Some operating systems have limited space for buffered input in a
@@ -1189,10 +1189,10 @@ job-control shells won't work when a pipe is used.  See
 
 @defun interrupt-process &optional process current-group
 This function interrupts the process @var{process} by sending the
-signal @code{SIGINT}.  Outside of Emacs, typing the ``interrupt
-character'' (normally @kbd{C-c} on some systems, and @key{DEL} on
+signal @code{SIGINT}.  Outside of Emacs, typing the interrupt
+character (normally @kbd{C-c} on some systems, and @key{DEL} on
 others) sends this signal.  When the argument @var{current-group} is
-non-@code{nil}, you can think of this function as ``typing @kbd{C-c}''
+non-@code{nil}, you can think of this function as typing @kbd{C-c}
 on the terminal by which Emacs talks to the subprocess.
 @end defun
 
@@ -1204,10 +1204,8 @@ and cannot be handled by the subprocess.
 
 @defun quit-process &optional process current-group
 This function sends the signal @code{SIGQUIT} to the process
-@var{process}.  This signal is the one sent by the ``quit
-@c FIXME?  Never heard of C-b being used for this.  In readline, e.g.,
-@c bash, that is backward-word.
-character'' (usually @kbd{C-b} or @kbd{C-\}) when you are not inside
+@var{process}.  This signal is the one sent by the quit
+character (usually @kbd{C-\}) when you are not inside
 Emacs.
 @end defun
 
@@ -1216,10 +1214,10 @@ This function stops the process @var{process} by sending the
 signal @code{SIGTSTP}.  Use @code{continue-process} to resume its
 execution.
 
-Outside of Emacs, on systems with job control, the ``stop character''
+Outside of Emacs, on systems with job control, the stop character
 (usually @kbd{C-z}) normally sends this signal.  When
 @var{current-group} is non-@code{nil}, you can think of this function as
-``typing @kbd{C-z}'' on the terminal Emacs uses to communicate with the
+typing @kbd{C-z} on the terminal Emacs uses to communicate with the
 subprocess.
 @end defun
 
@@ -1849,7 +1847,7 @@ interruptible sleep (waiting for some event)
 @item "T"
 stopped, e.g., by a job control signal
 @item "Z"
-``zombie'': a process that terminated, but was not reaped by its parent
+zombie: a process that terminated, but was not reaped by its parent
 @end table
 
 @noindent
@@ -2074,7 +2072,7 @@ server is stopped; a non-@code{nil} value means yes.
 @cindex @acronym{STARTTLS} network connections
 Emacs can create encrypted network connections, using either built-in
 or external support.  The built-in support uses the GnuTLS
-(``Transport Layer Security'') library; see
+Transport Layer Security Library; see
 @uref{http://www.gnu.org/software/gnutls/, the GnuTLS project page}.
 If your Emacs was compiled with GnuTLS support, the function
 @code{gnutls-available-p} is defined and returns non-@code{nil}.  For
@@ -2118,7 +2116,7 @@ The type of connection.  Options are:
 An ordinary, unencrypted connection.
 @item tls
 @itemx ssl
-A @acronym{TLS} (``Transport Layer Security'') connection.
+A @acronym{TLS} (Transport Layer Security) connection.
 @item nil
 @itemx network
 Start with a plain connection, and if parameters @samp{:success}
@@ -2306,7 +2304,7 @@ necessary to make it unique.
 @item :type @var{type}
 Specify the communication type.  A value of @code{nil} specifies a
 stream connection (the default); @code{datagram} specifies a datagram
-connection; @code{seqpacket} specifies a ``sequenced packet stream''
+connection; @code{seqpacket} specifies a sequenced packet stream
 connection.  Both connections and servers can be of these types.
 
 @item :server @var{server-flag}
@@ -2373,7 +2371,7 @@ A local address is represented as a string, which specifies the address
 in the local address space.
 
 @item
-An ``unsupported family'' address is represented by a cons
+An unsupported-family address is represented by a cons
 @code{(@var{f} . @var{av})}, where @var{f} is the family number and
 @var{av} is a vector specifying the socket address using one element
 per address data byte.  Do not rely on this format in portable code,
@@ -2392,7 +2390,7 @@ has succeeded or failed.
 
 @item :stop @var{stopped}
 If @var{stopped} is non-@code{nil}, start the network connection or
-server in the ``stopped'' state.
+server in the stopped state.
 
 @item :buffer @var{buffer}
 Use @var{buffer} as the process buffer.
@@ -2700,7 +2698,7 @@ Initialize the process query flag to @var{query-flag}.  @xref{Query
 Before Exit}.  The flags defaults to @code{nil} if unspecified.
 
 @item :stop @var{bool}
-Start process in the ``stopped'' state if @var{bool} is
+Start process in the stopped state if @var{bool} is
 non-@code{nil}.  In the stopped state, a serial process does not
 accept incoming data, but you can send outgoing data.  The stopped
 state is cleared by @code{continue-process} and set by
@@ -2830,7 +2828,7 @@ specification}, a special nested list describing named and typed
 @dfn{fields}.  This specification controls the length of each field to be
 processed, and how to pack or unpack it.  We normally keep bindat specs
 in variables whose names end in @samp{-bindat-spec}; that kind of name
-is automatically recognized as ``risky''.
+is automatically recognized as risky.
 
 @cindex endianness
 @cindex big endian
@@ -2839,8 +2837,8 @@ is automatically recognized as ``risky''.
   A field's @dfn{type} describes the size (in bytes) of the object
 that the field represents and, in the case of multibyte fields, how
 the bytes are ordered within the field.  The two possible orderings
-are ``big endian'' (also known as ``network byte ordering'') and
-``little endian''.  For instance, the number @code{#x23cd} (decimal
+are @dfn{big endian} (also known as ``network byte ordering'') and
+@dfn{little endian}.  For instance, the number @code{#x23cd} (decimal
 9165) in big endian would be the two bytes @code{#x23} @code{#xcd};
 and in little endian, @code{#xcd} @code{#x23}.  Here are the possible
 type values:
index 60360cb98a9358a845afd842bbfb30afea129844..adaf43159afa0a8c751a7518cb5788f5306da1f2 100644 (file)
@@ -113,7 +113,7 @@ match.
 @end deffn
 
 @deffn Command word-search-forward string &optional limit noerror repeat
-This function searches forward from point for a ``word'' match for
+This function searches forward from point for a word match for
 @var{string}.  If it finds a match, it sets point to the end of the
 match found, and returns the new value of point.
 
@@ -359,7 +359,7 @@ preceding expression either once or not at all.  For example,
 
 @item @samp{*?}, @samp{+?}, @samp{??}
 @cindex non-greedy repetition characters in regexp
-These are ``non-greedy'' variants of the operators @samp{*}, @samp{+}
+These are @dfn{non-greedy} variants of the operators @samp{*}, @samp{+}
 and @samp{?}.  Where those operators match the largest possible
 substring (consistent with matching the entire containing expression),
 the non-greedy variants match the smallest possible substring
@@ -1759,7 +1759,7 @@ in two ways:
 
 @itemize @bullet
 @item
-The ``key bindings'' are not commands, just symbols that are meaningful
+The key bindings are not commands, just symbols that are meaningful
 to the functions that use this map.
 
 @item
@@ -1770,7 +1770,7 @@ event and look it up ``by hand''.
 @end itemize
 @end defvar
 
-Here are the meaningful ``bindings'' for @code{query-replace-map}.
+Here are the meaningful bindings for @code{query-replace-map}.
 Several of them are meaningful only for @code{query-replace} and
 friends.
 
@@ -1835,7 +1835,7 @@ Display some help, then ask again.
 @defvar multi-query-replace-map
 This variable holds a keymap that extends @code{query-replace-map} by
 providing additional keybindings that are useful in multi-buffer
-replacements.  The additional ``bindings'' are:
+replacements.  The additional bindings are:
 
 @table @code
 @item automatic-all
index f73779bd9ceac8a682540caebb22876e6064e60b..b85d5d4c1b11fd9673159b444adf43d63de0bd98 100644 (file)
@@ -342,7 +342,7 @@ order elements according to different criteria.
 The argument @var{predicate} must be a function that accepts two
 arguments.  It is called with two elements of @var{sequence}.  To get an
 increasing order sort, the @var{predicate} should return non-@code{nil} if the
-first element is ``less than'' the second, or @code{nil} if not.
+first element is ``less'' than the second, or @code{nil} if not.
 
 The comparison function @var{predicate} must give reliable results for
 any given pair of arguments, at least within a single call to
@@ -578,6 +578,27 @@ value is the value returned by @var{predicate}.
 @end example
 @end defun
 
+@defun seq-find predicate sequence &optional default
+  This function returns the first element for which @var{predicate}
+returns non-@code{nil} in @var{sequence}.  If no element matches
+@var{predicate}, @var{default} is returned.
+
+Note that this function has an ambiguity if the found element is
+identical to @var{default}, as it cannot be known if an element was
+found or not.
+
+@example
+@group
+(seq-find #'numberp ["abc" 1 nil])
+@result{} 1
+@end group
+@group
+(seq-find #'numberp ["abc" "def"])
+@result{} nil
+@end group
+@end example
+@end defun
+
 @defun seq-every-p predicate sequence
   This function returns non-@code{nil} if applying @var{predicate}
 to every element of @var{sequence} returns non-@code{nil}.
@@ -1254,13 +1275,13 @@ This function sets the parent of @var{char-table} to @var{new-parent}.
 @end defun
 
 @defun char-table-extra-slot char-table n
-This function returns the contents of extra slot @var{n} of
-@var{char-table}.  The number of extra slots in a char-table is
+This function returns the contents of extra slot @var{n} (zero based)
+of @var{char-table}.  The number of extra slots in a char-table is
 determined by its subtype.
 @end defun
 
 @defun set-char-table-extra-slot char-table n value
-This function stores @var{value} in extra slot @var{n} of
+This function stores @var{value} in extra slot @var{n} (zero based) of
 @var{char-table}.
 @end defun
 
@@ -1468,7 +1489,7 @@ deletion, rotation, and modulo-indexed reference and traversal.  An
 efficient ring data structure is implemented by the @code{ring}
 package.  It provides the functions listed in this section.
 
-  Note that several ``rings'' in Emacs, like the kill ring and the
+  Note that several rings in Emacs, like the kill ring and the
 mark ring, are actually implemented as simple lists, @emph{not} using
 the @code{ring} package; thus the following functions won't work on
 them.
index dfad2d83d54d13e168a7f22019ebbb8897a7d9a0..025b0e95c4efb246b17d48f90f65b70505739afe 100644 (file)
@@ -113,8 +113,8 @@ When it is called with no arguments, it should return the next character.
 When it is called with one argument (always a character), @var{function}
 should save the argument and arrange to return it on the next call.
 This is called @dfn{unreading} the character; it happens when the Lisp
-reader reads one character too many and wants to ``put it back where it
-came from''.  In this case, it makes no difference what value
+reader reads one character too many and wants to put it back where it
+came from.  In this case, it makes no difference what value
 @var{function} returns.
 @end itemize
 
@@ -701,7 +701,7 @@ returns @code{"The buffer is foo"}.
 
 @defun pp object &optional stream
 This function outputs @var{object} to @var{stream}, just like
-@code{prin1}, but does it in a more ``pretty'' way.  That is, it'll
+@code{prin1}, but does it in a prettier way.  That is, it'll
 indent and fill the object to make it more readable for humans.
 @end defun
 
index f42250719e5b7615e9b73ab67c0195ae30f70d4e..143de82d9ad0ab1d986413e3c03b75d7c41e94d3 100644 (file)
@@ -1,4 +1,4 @@
-@c -*-texinfo-*-
+@c -*- mode: texinfo; coding: utf-8 -*-
 @c This is part of the GNU Emacs Lisp Reference Manual.
 @c Copyright (C) 1990-1995, 1998-1999, 2001-2015 Free Software
 @c Foundation, Inc.
@@ -644,7 +644,7 @@ string.  Likewise, the specified part of @var{string2} runs from index
 @var{start2} up to index @var{end2}.
 
 The strings are compared by the numeric values of their characters.
-For instance, @var{str1} is considered ``smaller than'' @var{str2} if
+For instance, @var{str1} is considered less than @var{str2} if
 its first differing character has a smaller numeric value.  If
 @var{ignore-case} is non-@code{nil}, characters are converted to
 lower-case before comparing them.  Unibyte strings are converted to
@@ -685,7 +685,7 @@ against a string, can be used for a kind of string comparison; see
 strings and integers.  @code{format} (@pxref{Formatting Strings}) and
 @code{prin1-to-string} (@pxref{Output Functions}) can also convert
 Lisp objects into strings.  @code{read-from-string} (@pxref{Input
-Functions}) can ``convert'' a string representation of a Lisp object
+Functions}) can convert a string representation of a Lisp object
 into an object.  The functions @code{string-to-multibyte} and
 @code{string-to-unibyte} convert the text representation of a string
 (@pxref{Converting Representations}).
@@ -990,7 +990,7 @@ numbers and negative numbers use the same number of columns.  They are
 ignored except for @samp{%d}, @samp{%e}, @samp{%f}, @samp{%g}, and if
 both flags are used, @samp{+} takes precedence.
 
-  The flag @samp{#} specifies an ``alternate form'' which depends on
+  The flag @samp{#} specifies an alternate form which depends on
 the format in use.  For @samp{%o}, it ensures that the result begins
 with a @samp{0}.  For @samp{%x} and @samp{%X}, it prefixes the result
 with @samp{0x} or @samp{0X}.  For @samp{%e}, @samp{%f}, and @samp{%g},
@@ -1245,8 +1245,8 @@ Exits}).
 
   Some language environments modify the case conversions of
 @acronym{ASCII} characters; for example, in the Turkish language
-environment, the @acronym{ASCII} character @samp{I} is downcased into
-a Turkish ``dotless i''.  This can interfere with code that requires
+environment, the @acronym{ASCII} capital I is downcased into
+a Turkish dotless i (@samp{ı}).  This can interfere with code that requires
 ordinary @acronym{ASCII} case conversion, such as implementations of
 @acronym{ASCII}-based network protocols.  In that case, use the
 @code{with-case-table} macro with the variable @var{ascii-case-table},
index a6545eae7325cc991f86ab2e7725d9724aa58732..2605a3e7b5a7a81f3406a3b2bf93a18fc0347b13 100644 (file)
@@ -176,7 +176,7 @@ cause complete confusion.
 @cindex obarray
 @cindex bucket (in obarray)
   When the Lisp reader encounters a symbol, it reads all the characters
-of the name.  Then it ``hashes'' those characters to find an index in a
+of the name.  Then it hashes those characters to find an index in a
 table called an @dfn{obarray}.  Hashing is an efficient method of
 looking something up.  For example, instead of searching a telephone
 book cover to cover when looking up Jan Jones, you start with the J's
@@ -525,7 +525,7 @@ The value is an expression for determining whether the named menu item
 should be enabled in menus.  @xref{Simple Menu Items}.
 
 @item mode-class
-If the value is @code{special}, the named major mode is ``special''.
+If the value is @code{special}, the named major mode is special.
 @xref{Major Mode Conventions}.
 
 @item permanent-local
index 90daf34f0dc5812a0491416765b67679f711ad38..7a984e3d87b4d88f55d5f279f138ef94b21b339a 100644 (file)
@@ -98,7 +98,7 @@ serves as the name of the class when you need to specify a class.
 Usually, this designator character is one that is often assigned that
 class; however, its meaning as a designator is unvarying and
 independent of what syntax that character currently has.  Thus,
-@samp{\} as a designator character always means ``escape character''
+@samp{\} as a designator character always stands for escape character
 syntax, regardless of whether the @samp{\} character actually has that
 syntax in the current syntax table.
 @ifnottex
@@ -377,7 +377,7 @@ character does not have the @samp{b} flag.
 @end table
 
 @item
-@samp{p} identifies an additional ``prefix character'' for Lisp syntax.
+@samp{p} identifies an additional prefix character for Lisp syntax.
 These characters are treated as whitespace when they appear between
 expressions.  When they appear within an expression, they are handled
 according to their usual syntax classes.
@@ -640,7 +640,7 @@ expression prefix syntax class, and characters with the @samp{p} flag.
 expressions.  We will refer to such expressions as @dfn{sexps},
 following the terminology of Lisp, even though these functions can act
 on languages other than Lisp.  Basically, a sexp is either a balanced
-parenthetical grouping, a string, or a ``symbol'' (i.e., a sequence
+parenthetical grouping, a string, or a symbol (i.e., a sequence
 of characters whose syntax is either word constituent or symbol
 constituent).  However, characters in the expression prefix syntax
 class (@pxref{Syntax Class Table}) are treated as part of the sexp if
@@ -654,7 +654,7 @@ higher-level functions for moving over balanced expressions.
   A character's syntax controls how it changes the state of the
 parser, rather than describing the state itself.  For example, a
 string delimiter character toggles the parser state between
-``in-string'' and ``in-code'', but the syntax of characters does not
+in-string and in-code, but the syntax of characters does not
 directly say whether they are inside a string.  For example (note that
 15 is the syntax code for generic string delimiters),
 
@@ -731,7 +731,7 @@ number of complete comments.  If @var{count} comments are found as
 expected, with nothing except whitespace between them, it returns
 @code{t}; otherwise it returns @code{nil}.
 
-This function cannot tell whether the ``comments'' it traverses are
+This function cannot tell whether the comments it traverses are
 embedded within a string.  If they look like comments, it treats them
 as comments.
 
@@ -1084,18 +1084,27 @@ documentation @var{docstring}, for the category table @var{table}.
 
 Here's an example of defining a new category for characters that have
 strong right-to-left directionality (@pxref{Bidirectional Display})
-and using it in a special category table:
+and using it in a special category table.  To obtain the information
+about the directionality of characters, the example code uses the
+@samp{bidi-class} Unicode property (@pxref{Character Properties,
+bidi-class}).
 
 @example
 (defvar special-category-table-for-bidi
+  ;;     Make an empty category-table.
   (let ((category-table (make-category-table))
-       (uniprop-table (unicode-property-table-internal 'bidi-class)))
+        ;; Create a char-table which gives the 'bidi-class' Unicode
+        ;; property for each character.
+        (uniprop-table (unicode-property-table-internal 'bidi-class)))
     (define-category ?R "Characters of bidi-class R, AL, or RLO"
                      category-table)
+    ;; Modify the category entry of each character whose 'bidi-class'
+    ;; Unicode property is R, AL, or RLO -- these have a
+    ;; right-to-left directionality.
     (map-char-table
      #'(lambda (key val)
-        (if (memq val '(R AL RLO))
-            (modify-category-entry key ?R category-table)))
+         (if (memq val '(R AL RLO))
+             (modify-category-entry key ?R category-table)))
      uniprop-table)
     category-table))
 @end example
index 55e550a7b801d2d8602e9df58c80e9ffb677da47..6d9d26f0ad15e7aeb7c37f4903b852592b5a5335 100644 (file)
@@ -58,7 +58,7 @@ the character after point.
 * Base 64::          Conversion to or from base 64 encoding.
 * Checksum/Hash::    Computing cryptographic hashes.
 * Parsing HTML/XML:: Parsing HTML and XML.
-* Atomic Changes::   Installing several buffer changes ``atomically''.
+* Atomic Changes::   Installing several buffer changes atomically.
 * Change Hooks::     Supplying functions to be run when text is changed.
 @end menu
 
@@ -578,7 +578,7 @@ error; if some of the text in it is read-only, it signals a
 asking for any confirmation.  It returns @code{nil}.
 
 Normally, deleting a large amount of text from a buffer inhibits further
-auto-saving of that buffer ``because it has shrunk''.  However,
+auto-saving of that buffer because it has shrunk.  However,
 @code{erase-buffer} does not do this, the idea being that the future
 text is not really related to the former text, and its size should not
 be compared with that of the former text.
@@ -825,7 +825,7 @@ buffer if the variable @code{delete-trailing-lines} is non-@code{nil}.
 it so that the user can reinsert it by @dfn{yanking}.  Most of these
 functions have @samp{kill-} in their name.  By contrast, the functions
 whose names start with @samp{delete-} normally do not save text for
-yanking (though they can still be undone); these are ``deletion''
+yanking (though they can still be undone); these are deletion
 functions.
 
   Most of the kill commands are primarily for interactive use, and are
@@ -846,8 +846,8 @@ that treat it as a ring.
 
   Some people think this use of the word ``kill'' is unfortunate, since
 it refers to operations that specifically @emph{do not} destroy the
-entities ``killed''.  This is in sharp contrast to ordinary life, in
-which death is permanent and ``killed'' entities do not come back to
+entities killed.  This is in sharp contrast to ordinary life, in
+which death is permanent and killed entities do not come back to
 life.  Therefore, other metaphors have been proposed.  For example, the
 term ``cut ring'' makes sense to people who, in pre-computer days, used
 scissors and paste to cut up and rearrange manuscripts.  However, it
@@ -882,9 +882,9 @@ succession build up a single kill ring entry, which would be yanked as a
 unit; the second and subsequent consecutive kill commands add text to
 the entry made by the first one.
 
-  For yanking, one entry in the kill ring is designated the ``front'' of
-the ring.  Some yank commands ``rotate'' the ring by designating a
-different element as the ``front''.  But this virtual rotation doesn't
+  For yanking, one entry in the kill ring is designated the front of
+the ring.  Some yank commands rotate the ring by designating a
+different element as the front.  But this virtual rotation doesn't
 change the list itself---the most recent entry always comes first in the
 list.
 
@@ -892,7 +892,7 @@ list.
 @subsection Functions for Killing
 
   @code{kill-region} is the usual subroutine for killing text.  Any
-command that calls this function is a ``kill command'' (and should
+command that calls this function is a kill command (and should
 probably have @samp{kill} in its name).  @code{kill-region} puts the
 newly killed text in a new element at the beginning of the kill ring or
 adds it to the most recent element.  It determines automatically (using
@@ -1101,7 +1101,7 @@ because they take care of interaction with window system selections
 
 @defun current-kill n &optional do-not-move
 The function @code{current-kill} rotates the yanking pointer, which
-designates the ``front'' of the kill ring, by @var{n} places (from newer
+designates the front of the kill ring, by @var{n} places (from newer
 kills to older ones), and returns the text at that place in the ring.
 
 If the optional second argument @var{do-not-move} is non-@code{nil},
@@ -1148,13 +1148,13 @@ programs, when you are using a window system.  Its value should be
 @code{nil} or a function of no arguments.
 
 If the value is a function, @code{current-kill} calls it to get the
-``most recent kill''.  If the function returns a non-@code{nil} value,
-then that value is used as the ``most recent kill''.  If it returns
+most recent kill.  If the function returns a non-@code{nil} value,
+then that value is used as the most recent kill.  If it returns
 @code{nil}, then the front of the kill ring is used.
 
 To facilitate support for window systems that support multiple
 selections, this function may also return a list of strings.  In that
-case, the first string is used as the ``most recent kill'', and all
+case, the first string is used as the most recent kill, and all
 the other strings are pushed onto the kill ring, for easy access by
 @code{yank-pop}.
 
@@ -1186,7 +1186,7 @@ of the list.
 
   The @code{kill-ring-yank-pointer} variable points to a link in the
 kill ring list, whose @sc{car} is the text to yank next.  We say it
-identifies the ``front'' of the ring.  Moving
+identifies the front of the ring.  Moving
 @code{kill-ring-yank-pointer} to a different link is called
 @dfn{rotating the kill ring}.  We call the kill ring a ``ring'' because
 the functions that move the yank pointer wrap around from the end of the
@@ -1238,7 +1238,7 @@ killed first.
 
 @defvar kill-ring-yank-pointer
 This variable's value indicates which element of the kill ring is at the
-``front'' of the ring for yanking.  More precisely, the value is a tail
+front of the ring for yanking.  More precisely, the value is a tail
 of the value of @code{kill-ring}, and its @sc{car} is the kill string
 that @kbd{C-y} should yank.
 @end defvar
@@ -1423,7 +1423,7 @@ cannot specify any other buffer.  This function returns @code{nil}.
 
   As editing continues, undo lists get longer and longer.  To prevent
 them from using up all available memory space, garbage collection trims
-them back to size limits you can set.  (For this purpose, the ``size''
+them back to size limits you can set.  (For this purpose, the size
 of an undo list measures the cons cells that make up the list, plus the
 strings of deleted text.)  Three variables control the range of acceptable
 sizes: @code{undo-limit}, @code{undo-strong-limit} and
@@ -1648,8 +1648,8 @@ Manual}.
 
 @defvar use-hard-newlines
 If this variable is non-@code{nil}, the filling functions do not delete
-newlines that have the @code{hard} text property.  These ``hard
-newlines'' act as paragraph separators.  @xref{Hard and Soft
+newlines that have the @code{hard} text property.  These hard
+newlines act as paragraph separators.  @xref{Hard and Soft
 Newlines,, Hard and Soft Newlines, emacs, The GNU Emacs Manual}.
 @end defvar
 
@@ -1823,7 +1823,7 @@ Used only in one-line paragraphs, this regular expression acts as an
 additional check of the validity of the one available candidate fill
 prefix: the candidate must match this regular expression, or match
 @code{comment-start-skip}.  If it doesn't, @code{fill-context-prefix}
-replaces the candidate with a string of spaces ``of the same width''
+replaces the candidate with a string of spaces of the same width
 as it.
 
 The default value of this variable is @w{@code{"\\`[ \t]*\\'"}}, which
@@ -1836,7 +1836,7 @@ whitespace.
 You can specify more complex ways of choosing a fill prefix
 automatically by setting this variable to a function.  The function is
 called with point after the left margin (if any) of a line, and it
-must preserve point.  It should return either ``that line's'' fill
+must preserve point.  It should return either that line's fill
 prefix or @code{nil}, meaning it has failed to determine a prefix.
 @end defopt
 
@@ -2382,7 +2382,7 @@ a different meaning and does not use this variable.
 @deffn Command indent-rigidly start end count
 This function indents all lines starting between @var{start}
 (inclusive) and @var{end} (exclusive) sideways by @var{count} columns.
-This ``preserves the shape'' of the affected region, moving it as a
+This preserves the shape of the affected region, moving it as a
 rigid unit.
 
 This is useful not only for indenting regions of unindented text, but
@@ -2481,10 +2481,10 @@ column, this command does nothing.
 @end deffn
 
 @node Indent Tabs
-@subsection Adjustable ``Tab Stops''
+@subsection Adjustable Tab Stops
 @cindex tabs stops for indentation
 
-  This section explains the mechanism for user-specified ``tab stops''
+  This section explains the mechanism for user-specified tab stops
 and the mechanisms that use and set them.  The name ``tab stops'' is
 used because the feature is similar to that of the tab stops on a
 typewriter.  The feature works by inserting an appropriate number of
@@ -3165,7 +3165,7 @@ This property says whether the text is ready for display.  If
 @code{nil}, Emacs's redisplay routine calls the functions in
 @code{fontification-functions} (@pxref{Auto Faces}) to prepare this
 part of the buffer before it is displayed.  It is used internally by
-the ``just in time'' font locking code.
+the just-in-time font locking code.
 
 @item display
 This property activates various features that change the
@@ -3623,8 +3623,8 @@ once for the same part of the buffer, you can use the variable
 @defvar buffer-access-fontified-property
 If this variable's value is non-@code{nil}, it is a symbol which is used
 as a text property name.  A non-@code{nil} value for that text property
-means, ``the other text properties for this character have already been
-computed''.
+means the other text properties for this character have already been
+computed.
 
 If all the characters in the range specified for @code{buffer-substring}
 have a non-@code{nil} value for this property, @code{buffer-substring}
@@ -3742,10 +3742,10 @@ controlled by the user option @code{mouse-1-click-follows-link}.
 bind the @code{follow-link} event to a keymap (which can be a major
 mode keymap or a local keymap specified via the @code{keymap} text
 property).  The value of the @code{follow-link} property, or the
-binding for the @code{follow-link} event, acts as a ``condition'' for
+binding for the @code{follow-link} event, acts as a condition for
 the link action.  This condition tells Emacs two things: the
 circumstances under which a @kbd{Mouse-1} click should be regarded as
-occurring ``inside'' the link, and how to compute an ``action code''
+occurring inside the link, and how to compute an action code
 that says what to translate the @kbd{Mouse-1} click into.  The link
 action condition can be one of the following:
 
@@ -3911,7 +3911,7 @@ This function deletes the text of the field specified by @var{pos}.
 @end defun
 
 @defun constrain-to-field new-pos old-pos &optional escape-from-edge only-in-line inhibit-capture-property
-This function ``constrains'' @var{new-pos} to the field that
+This function constrains @var{new-pos} to the field that
 @var{old-pos} belongs to---in other words, it returns the position
 closest to @var{new-pos} that is in the same field as @var{old-pos}.
 
@@ -3929,7 +3929,7 @@ after @var{old-pos}.)  If @var{escape-from-edge} is non-@code{nil},
 @var{new-pos} can be anywhere in the two adjacent fields.
 Additionally, if two fields are separated by another field with the
 special value @code{boundary}, then any point within this special
-field is also considered to be ``on the boundary''.
+field is also considered to be on the boundary.
 
 Commands like @kbd{C-a} with no argument, that normally move backward
 to a specific kind of location and stay there once there, probably
@@ -3957,7 +3957,7 @@ You can cause @code{constrain-to-field} to ignore all field boundaries
 @cindex intervals
 
   Some editors that support adding attributes to text in the buffer do
-so by letting the user specify ``intervals'' within the text, and adding
+so by letting the user specify intervals within the text, and adding
 the properties to the intervals.  Those editors permit the user or the
 programmer to determine where individual intervals start and end.  We
 deliberately provided a different sort of interface in Emacs Lisp to
@@ -3975,7 +3975,7 @@ Then if you yank back the killed text, you get two intervals with the
 same properties.  Thus, editing does not preserve the distinction
 between one interval and two.
 
-  Suppose we ``fix'' this problem by coalescing the two intervals when
+  Suppose we attempt to fix this problem by coalescing the two intervals when
 the text is inserted.  That works fine if the buffer originally was a
 single interval.  But suppose instead that we have two adjacent
 intervals with the same properties, and we kill the text of one interval
@@ -4277,7 +4277,7 @@ The decoding functions ignore newline characters in the encoded text.
 @cindex cryptographic hash
 
   Emacs has built-in support for computing @dfn{cryptographic hashes}.
-A cryptographic hash, or @dfn{checksum}, is a digital ``fingerprint''
+A cryptographic hash, or @dfn{checksum}, is a digital fingerprint
 of a piece of data (e.g., a block of text) which can be used to check
 that you have an unaltered copy of that data.
 
@@ -4286,7 +4286,7 @@ that you have an unaltered copy of that data.
 SHA-1, SHA-2, SHA-224, SHA-256, SHA-384 and SHA-512.  MD5 is the
 oldest of these algorithms, and is commonly used in @dfn{message
 digests} to check the integrity of messages transmitted over a
-network.  MD5 is not ``collision resistant'' (i.e., it is possible to
+network.  MD5 is not collision resistant (i.e., it is possible to
 deliberately design different pieces of data which have the same MD5
 hash), so you should not used it for anything security-related.  A
 similar theoretical weakness also exists in SHA-1.  Therefore, for
@@ -4347,7 +4347,7 @@ are available to parse HTML or XML text into Lisp object trees.
 @defun libxml-parse-html-region start end &optional base-url discard-comments
 This function parses the text between @var{start} and @var{end} as
 HTML, and returns a list representing the HTML @dfn{parse tree}.  It
-attempts to handle ``real world'' HTML by robustly coping with syntax
+attempts to handle real-world HTML by robustly coping with syntax
 mistakes.
 
 The optional argument @var{base-url}, if non-@code{nil}, should be a
@@ -4559,7 +4559,7 @@ lower-level functions that @code{atomic-change-group} uses.
 
 @defun prepare-change-group &optional buffer
 This function sets up a change group for buffer @var{buffer}, which
-defaults to the current buffer.  It returns a ``handle'' that
+defaults to the current buffer.  It returns a handle that
 represents the change group.  You must use this handle to activate the
 change group and subsequently to finish it.
 @end defun
index 3bde0a877ab92746caf99062535304e860818130..d9cbf473306791b6979192ff11d8cfc90b37d613 100644 (file)
@@ -1,4 +1,4 @@
-@c -*-texinfo-*-
+@c -*- mode: texinfo; coding: utf-8 -*-
 @c This is part of the GNU Emacs Lisp Reference Manual.
 @c Copyright (C) 1990-1993, 1995, 1998-1999, 2001-2015 Free Software
 @c Foundation, Inc.
@@ -398,7 +398,7 @@ Enter the answer (default 42):
 
 @item
 In @code{interactive}, if you use a Lisp expression to produce a list
-of arguments, don't try to provide the ``correct'' default values for
+of arguments, don't try to provide the correct default values for
 region or position arguments.  Instead, provide @code{nil} for those
 arguments if they were not specified, and have the function body
 compute the default value when the argument is @code{nil}.  For
@@ -772,7 +772,7 @@ is indicative and has a proper subject.
 @item
 The documentation string for a function that is a yes-or-no predicate
 should start with words such as ``Return t if'', to indicate
-explicitly what constitutes ``truth''.  The word ``return'' avoids
+explicitly what constitutes truth.  The word ``return'' avoids
 starting the sentence with lower-case ``t'', which could be somewhat
 distracting.
 
@@ -883,7 +883,7 @@ strings, though.
 Comments that start with three semicolons, @samp{;;;}, should start at
 the left margin.  We use them
 for comments which should be considered a
-``heading'' by Outline minor mode.  By default, comments starting with
+heading by Outline minor mode.  By default, comments starting with
 at least three semicolons (followed by a single space and a
 non-whitespace character) are considered headings, comments starting
 with two or fewer are not.  Historically, triple-semicolon comments have
index 369e8ddfc307db1b0d7bb5e2c510b26e7818b498..1d920942d109ea2469d4fc1dd4a17d95284d3e9f 100644 (file)
@@ -25,7 +25,7 @@ representing the variable.
 
 @menu
 * Global Variables::            Variable values that exist permanently, everywhere.
-* Constant Variables::          Certain ``variables'' have values that never change.
+* Constant Variables::          Variables that never change.
 * Local Variables::             Variable values that exist only temporarily.
 * Void Variables::              Symbols that lack values.
 * Defining Variables::          A definition says a symbol is used as a variable.
@@ -131,7 +131,7 @@ starts with @samp{:}, interned in the standard obarray, and returns
 @code{nil} otherwise.
 @end defun
 
-These constants are fundamentally different from the ``constants''
+These constants are fundamentally different from the constants
 defined using the @code{defconst} special form (@pxref{Defining
 Variables}).  A @code{defconst} form serves to inform human readers
 that you do not intend to change the value of a variable, but Emacs
@@ -178,7 +178,7 @@ It determines the value returned by evaluating the variable symbol,
 and it is the binding acted on by @code{setq}.
 
   For most purposes, you can think of the current binding as the
-``innermost'' local binding, or the global binding if there is no
+innermost local binding, or the global binding if there is no
 local binding.  To be more precise, a rule called the @dfn{scoping
 rule} determines where in a program a local binding takes effect.  The
 default scoping rule in Emacs Lisp is called @dfn{dynamic scoping},
@@ -263,7 +263,7 @@ Macro calls (@pxref{Macros}).
 Variables}); a few variables have terminal-local bindings
 (@pxref{Multiple Terminals}).  These kinds of bindings work somewhat
 like ordinary local bindings, but they are localized depending on
-``where'' you are in Emacs.
+where you are in Emacs.
 
 @defopt max-specpdl-size
 @anchor{Definition of max-specpdl-size}
@@ -287,7 +287,7 @@ has room to execute.
 @end defopt
 
 @node Void Variables
-@section When a Variable is ``Void''
+@section When a Variable is Void
 @cindex @code{void-variable} error
 @cindex void variable
 
@@ -545,8 +545,7 @@ The value is a list of forms (expressions).
 
 @item @dots{}-predicate
 The value is a predicate---a function of one argument that returns
-non-@code{nil} for ``good'' arguments and @code{nil} for ``bad''
-arguments.
+non-@code{nil} for success and @code{nil} for failure.
 
 @item @dots{}-flag
 The value is significant only as to whether it is @code{nil} or not.
@@ -564,7 +563,7 @@ The value specifies options for a command.
 @end table
 
   When you define a variable, always consider whether you should mark
-it as ``safe'' or ``risky''; see @ref{File Local Variables}.
+it as safe or risky; see @ref{File Local Variables}.
 
   When defining and initializing a variable that holds a complicated
 value (such as a keymap with bindings in it), it's best to put the
@@ -831,7 +830,7 @@ following example:
 (defvar x -99)  ; @r{@code{x} receives an initial value of @minus{}99.}
 
 (defun getx ()
-  x)            ; @r{@code{x} is used ``free'' in this function.}
+  x)            ; @r{@code{x} is used free in this function.}
 
 (let ((x 1))    ; @r{@code{x} is dynamically bound.}
   (getx))
@@ -846,7 +845,7 @@ following example:
 @end example
 
 @noindent
-The function @code{getx} refers to @code{x}.  This is a ``free''
+The function @code{getx} refers to @code{x}.  This is a @dfn{free}
 reference, in the sense that there is no binding for @code{x} within
 that @code{defun} construct itself.  When we call @code{getx} from
 within a @code{let} form in which @code{x} is (dynamically) bound, it
@@ -957,7 +956,7 @@ construct.  Here is an example
      @result{} 4
 
 (defun getx ()
-  x)            ; @r{@code{x} is used ``free'' in this function.}
+  x)            ; @r{@code{x} is used free in this function.}
 
 (let ((x 1))    ; @r{@code{x} is lexically bound.}
   (getx))
@@ -1094,10 +1093,10 @@ it is not inadvertently bound lexically.
   A simple way to find out which variables need a variable definition
 is to byte-compile the source file.  @xref{Byte Compilation}.  If a
 non-special variable is used outside of a @code{let} form, the
-byte-compiler will warn about reference or assignment to a ``free
-variable''.  If a non-special variable is bound but not used within a
-@code{let} form, the byte-compiler will warn about an ``unused lexical
-variable''.  The byte-compiler will also issue a warning if you use a
+byte-compiler will warn about reference or assignment to a free
+variable.  If a non-special variable is bound but not used within a
+@code{let} form, the byte-compiler will warn about an unused lexical
+variable.  The byte-compiler will also issue a warning if you use a
 special variable as a function argument.
 
   (To silence byte-compiler warnings about unused variables, just use
@@ -1406,7 +1405,7 @@ buffer-local variables interactively.
 @cindex local variables, killed by major mode
 @defun kill-all-local-variables
 This function eliminates all the buffer-local variable bindings of the
-current buffer except for variables marked as ``permanent'' and local
+current buffer except for variables marked as permanent and local
 hook functions that have a non-@code{nil} @code{permanent-local-hook}
 property (@pxref{Setting Hooks}).  As a result, the buffer will see
 the default values of most variables.
@@ -1997,7 +1996,7 @@ a regular Lisp variable.  But the @sc{car}s and @sc{cdr}s of lists, elements
 of arrays, properties of symbols, and many other locations are also
 places where Lisp values are stored.
 
-Generalized variables are analogous to ``lvalues'' in the C
+Generalized variables are analogous to lvalues in the C
 language, where @samp{x = a[i]} gets an element from an array
 and @samp{a[i] = x} stores an element using the same notation.
 Just as certain forms like @code{a[i]} can be lvalues in C, there
@@ -2170,7 +2169,7 @@ of Common Lisp.  Consult the source file @file{gv.el} for more details.
 @cindex CL note---no @code{setf} functions
 @quotation
 @b{Common Lisp note:} Common Lisp defines another way to specify the
-@code{setf} behavior of a function, namely ``@code{setf} functions'',
+@code{setf} behavior of a function, namely @code{setf} functions,
 whose names are lists @code{(setf @var{name})} rather than symbols.
 For example, @code{(defun (setf foo) @dots{})} defines the function
 that is used when @code{setf} is applied to @code{foo}.  Emacs does
index 465693854eb0c9d929638cb5e563643b64bc5618..00161b28b660b855a92dad905488e7acfe4b8e57 100644 (file)
@@ -430,7 +430,7 @@ Format}); and the bottom divider (@pxref{Window Dividers}).
 width of a window.  The return value of many of these functions can be
 specified either in units of pixels or in units of lines and columns.
 On a graphical display, the latter actually correspond to the height and
-width of a ``default'' character specified by the frame's default font
+width of a default character specified by the frame's default font
 as returned by @code{frame-char-height} and @code{frame-char-width}
 (@pxref{Frame Font}).  Thus, if a window is displaying text with a
 different font or size, the reported line height and column width for
@@ -1050,7 +1050,7 @@ This section describes functions for creating a new window by
 @defun split-window &optional window size side pixelwise
 This function creates a new live window next to the window
 @var{window}.  If @var{window} is omitted or @code{nil}, it defaults
-to the selected window.  That window is ``split'', and reduced in
+to the selected window.  That window is split, and reduced in
 size.  The space is taken up by the new window, which is returned.
 
 The optional second argument @var{size} determines the sizes of
@@ -1075,7 +1075,7 @@ check whether the emanating windows are large enough to encompass all
 areas like a mode line or a scroll bar.  The function
 @code{window-min-size} (@pxref{Window Sizes}) can be used to determine
 the minimum requirements of @var{window} in this regard.  Since the new
-window usually ``inherits'' areas like the mode line or the scroll bar
+window usually inherits areas like the mode line or the scroll bar
 from @var{window}, that function is also a good guess for the minimum
 size of the new window.  The caller should specify a smaller size only
 if it correspondingly removes an inherited area before the next
@@ -1661,7 +1661,7 @@ internal routines often temporarily select a window in order to simplify
 coding.  As a rule, such selections (including those made by the macros
 @code{save-selected-window} and @code{with-selected-window} below) are
 not recorded thus avoiding to pollute @code{buffer-list-update-hook}.
-Selections that ``really count'' are those causing a visible change in
+Selections that really count are those causing a visible change in
 the next redisplay of @var{window}'s frame and should be always
 recorded.  This also means that to run a function each time a window
 gets selected, putting it on @code{buffer-list-update-hook} should be
@@ -1729,12 +1729,12 @@ nor the buffer list.
 @cindex use time of window
 @cindex window order by time of last use
 @defun window-use-time &optional window
-This functions returns the ``use time'' of window @var{window}.
+This functions returns the use time of window @var{window}.
 @var{window} must be a live window and defaults to the selected one.
 The @dfn{use time} of a window is not really a time value, but it does
 increase monotonically with each window selection, so the window with
-the lowest ``use time'' is the least recently selected one, and the
-window with the highest ``use time'' is the most recently selected
+the lowest use time is the least recently selected one, and the
+window with the highest use time is the most recently selected
 one.
 @end defun
 
@@ -1765,7 +1765,7 @@ if omitted or @code{nil}, it defaults to the selected window.
 The optional argument @var{minibuf} specifies whether minibuffer windows
 should be included in the cyclic ordering.  Normally, when @var{minibuf}
 is @code{nil}, a minibuffer window is included only if it is currently
-``active''; this matches the behavior of @kbd{C-x o}.  (Note that a
+active; this matches the behavior of @kbd{C-x o}.  (Note that a
 minibuffer window is active as long as its minibuffer is in use; see
 @ref{Minibuffers}).
 
@@ -1859,8 +1859,8 @@ criterion, without selecting it:
 
 @cindex least recently used window
 @defun get-lru-window &optional all-frames dedicated not-selected
-This function returns a live window which is heuristically the ``least
-recently used'' window.  The optional argument @var{all-frames} has
+This function returns a live window which is heuristically the least
+recently used.  The optional argument @var{all-frames} has
 the same meaning as in @code{next-window}.
 
 If any full-width windows are present, only those windows are
@@ -1874,8 +1874,8 @@ function returns @code{nil} in that case.
 
 @cindex most recently used window
 @defun get-mru-window &optional all-frames dedicated not-selected
-This function is like @code{get-lru-window}, but it returns the ``most
-recently used'' window instead.  The meaning of the arguments is the
+This function is like @code{get-lru-window}, but it returns the most
+recently used window instead.  The meaning of the arguments is the
 same as described for @code{get-lru-window}.
 @end defun
 
@@ -2293,7 +2293,7 @@ corresponding display action to display the buffer.
 
 @defopt display-buffer-base-action
 The value of this option should be a display action.  This option can
-be used to define a ``standard'' display action for calls to
+be used to define a standard display action for calls to
 @code{display-buffer}.
 @end defopt
 
@@ -2319,7 +2319,7 @@ to another buffer (@pxref{Dedicated Windows}).  It also fails if
 @end defun
 
 @defun display-buffer-reuse-window buffer alist
-This function tries to ``display'' @var{buffer} by finding a window
+This function tries to display @var{buffer} by finding a window
 that is already displaying it.
 
 If @var{alist} has a non-@code{nil} @code{inhibit-same-window} entry,
@@ -2365,7 +2365,7 @@ is added to the newly created frame's parameters.
 @end defun
 
 @defun display-buffer-use-some-frame buffer alist
-This function tries to ``display'' @var{buffer} by trying to find a
+This function tries to display @var{buffer} by trying to find a
 frame that meets a predicate (by default any frame other than the
 current frame).
 
@@ -2517,7 +2517,7 @@ buffer there.  If all these steps fail, it will proceed using whatever
 (provided *foo* was put by @code{display-buffer} there before) or a
 popped-up window as follows: If the window is part of a vertical
 combination, it will set its height to ten lines.  Note that if, instead
-of the number ``10'', we specified the function
+of the number 10, we specified the function
 @code{fit-window-to-buffer}, @code{display-buffer} would come up with a
 one-line window to fit the empty buffer.  If the window is part of a
 horizontal combination, it sets its width to 40 columns.  Whether a new
@@ -2558,7 +2558,7 @@ window below the selected window.
 selected one is dedicated to its buffer, @code{display-buffer} will
 proceed as described in the previous example.  Note, however, that when
 it tries to adjust the height of any reused or popped-up window, it will
-in any case try to set its number of lines to ``5'' since that value
+in any case try to set its number of lines to 5 since that value
 overrides the corresponding specification in the @var{action} argument
 of @code{display-buffer}.
 
@@ -3025,7 +3025,7 @@ window's buffer) if that window were selected.  The default for
 
 When @var{window} is the selected window, the value returned is the
 value of point in that window's buffer.  Strictly speaking, it would be
-more correct to return the ``top-level'' value of point, outside of any
+more correct to return the top-level value of point, outside of any
 @code{save-excursion} forms.  But that value is hard to find.
 @end defun
 
@@ -3122,7 +3122,7 @@ screen.  If this does place point off screen, the display routines move
 point to the left margin on the middle line in the window.
 
 For example, if point @w{is 1} and you set the start of the window
-@w{to 37}, the start of the next line, point will be ``above'' the top
+@w{to 37}, the start of the next line, point will be above the top
 of the window.  The display routines will automatically move point if
 it is still 1 when redisplay occurs.  Here is an example:
 
@@ -3429,7 +3429,7 @@ only if point is already on that position do they signal an error.
 @cindex centering point
 This function scrolls the text in the selected window so that point is
 displayed at a specified vertical position within the window.  It does
-not ``move point'' with respect to the text.
+not move point with respect to the text.
 
 If @var{count} is a non-negative number, that puts the line containing
 point @var{count} lines down from the top of the window.  If
@@ -3564,8 +3564,8 @@ times the normal character width.  How many characters actually
 disappear off to the left depends on their width, and could vary from
 line to line.
 
-  Because we read from side to side in the ``inner loop'', and from top
-to bottom in the ``outer loop'', the effect of horizontal scrolling is
+  Because we read from side to side in the inner loop, and from top
+to bottom in the outer loop, the effect of horizontal scrolling is
 not like that of textual or vertical scrolling.  Textual scrolling
 involves selection of a portion of text to display, and vertical
 scrolling moves the window contents contiguously; but horizontal
@@ -3697,13 +3697,13 @@ Most of these functions report positions relative to an origin at the
 native position of the window's frame (@pxref{Frame Geometry}).  Some
 functions report positions relative to the origin of the display of the
 window's frame.  In any case, the origin has the coordinates (0, 0) and
-X and Y coordinates increase ``rightward'' and ``downward''
+X and Y coordinates increase rightward and downward
 respectively.
 
   For the following functions, X and Y coordinates are reported in
 integer character units, i.e., numbers of lines and columns
 respectively.  On a graphical display, each ``line'' and ``column''
-corresponds to the height and width of a default character specified by
+corresponds to the height and width of the default character specified by
 the frame's default font (@pxref{Frame Font}).
 
 @defun window-edges &optional window body absolute pixelwise
@@ -3840,7 +3840,7 @@ argument because it always uses the frame that @var{window} is on.
   The following functions return window positions in pixels, rather
 than character units.  Though mostly useful on graphical displays,
 they can also be called on text terminals, where the screen area of
-each text character is taken to be ``one pixel''.
+each text character is taken to be one pixel.
 
 @defun window-pixel-edges &optional window
 This function returns a list of pixel coordinates for the edges of
index 034f42b1a1651b97cc83a66b5d3d2bd83b162ebb..ecf2ef9e5c2058fdcda149210442cf25b3d321dc 100644 (file)
@@ -20738,9 +20738,13 @@ mean, then repeating until the two values converge.
 $$ a_{i+1} = { a_i + b_i \over 2 } , \qquad b_{i+1} = \sqrt{a_i b_i} $$
 @end tex
 
-@c @cindex Root-mean-square
-@c Another commonly used mean, the RMS (root-mean-square), can be computed
-@c for a vector of numbers simply by using the @kbd{A} command.
+@kindex u R
+@cindex Root-mean-square
+@tindex rms
+The @kbd{u R} (@code{calc-vector-rms}) [@code{rms}]
+command computes the RMS (root-mean-square) of the data values.
+As its name suggests, this is the square root of the mean of the
+squares of the data values.
 
 @kindex u S
 @pindex calc-vector-sdev
@@ -36503,6 +36507,7 @@ keystrokes are not listed in this summary.
 @r{      v@:    H u M   @:             @:    19  @:vmedian@:(v)}
 @r{      v@:  I H u M   @:             @:    19  @:vhmean@:(v)}
 @r{      v@:      u N   @:             @:    19  @:vmin@:(v)}
+@r{      v@:      u R   @:             @:        @:rms@:(v)}
 @r{      v@:      u S   @:             @:    19  @:vsdev@:(v)}
 @r{      v@:    I u S   @:             @:    19  @:vpsdev@:(v)}
 @r{      v@:    H u S   @:             @:    19  @:vvar@:(v)}
index c90a7db5cec5a35491bb89f6b34cbb2fb80d30d3..b93bc8f679f7d8cd5731071acfd946f78a500b7b 100644 (file)
@@ -378,7 +378,7 @@ This manual describes @ccmode{}
 version 5.32.
 @comment Release.py script can update the version number automatically
 
-@ccmode{} supports the editing of K&R and ANSI C, C++, Objective-C,
+@ccmode{} supports the editing of C, C++, Objective-C,
 Java, CORBA's Interface Definition Language, Pike@footnote{A C-like
 scripting language with its roots in the LPC language used in some MUD
 engines.  See @uref{http://pike.ida.liu.se/}.} and AWK files.  In this
index 552e3be6598fd23dcee5299d08d15009aa970fa4..f7876a336f6d3991723679566071beaa685eda7d 100644 (file)
@@ -1388,7 +1388,7 @@ different frames.  Ediff respects these arrangements, automatically
 adapting itself to the multi-frame mode.
 
 Ediff uses the following variables to set up its control panel
-(a.k.a.@: control buffer, a.k.a.@: quick help window):
+(a.k.a.@: ``control buffer'', a.k.a.@: ``quick help window''):
 
 @table @code
 @item ediff-control-frame-parameters
index 3e9109d0924956a396e8bdd40dcccd69294ca692..6557f4d017b6c90aa7be7c279d50b7dd4c953e4f 100644 (file)
@@ -2089,8 +2089,8 @@ parenthesis, it simply inserts a % like normal.
 (defun match-paren (arg)
   "Go to the matching paren if on a paren; otherwise insert %."
   (interactive "p")
-  (cond ((looking-at "\\s\(") (forward-list 1) (backward-char 1))
-        ((looking-at "\\s\)") (forward-char 1) (backward-list 1))
+  (cond ((looking-at "\\s(") (forward-list 1) (backward-char 1))
+        ((looking-at "\\s)") (forward-char 1) (backward-list 1))
         (t (self-insert-command (or arg 1)))))
 @end lisp
 
index 19c78bf56c65b784a5fc2a6571508d601c24b8b4..26b9210b0dd365f3c10433e8ef136724721af6e9 100644 (file)
@@ -1528,7 +1528,7 @@ and create the actual X-face by saying
 
 @example
 cat file.xbm | xbm2ikon | compface > file.face
-cat file.face | sed 's/\\/\\\\/g;s/\"/\\\"/g;' > file.face.quoted
+cat file.face | sed 's/["\\]/\\&/g' > file.face.quoted
 @end example
 @noindent
 
index 726ec4e85216acdd586864b2c8259a98d05625aa..01d5ad7b0222ca7df256f6fa77a5d1bd74ea2be9 100644 (file)
@@ -2893,6 +2893,9 @@ default.  If you want to have these key bindings available, set in your
 (setq reftex-extra-bindings t)
 @end lisp
 
+Note that this variable has to be set before @RefTeX{} is loaded to
+have an effect.
+
 @vindex reftex-load-hook
 Changing and adding to @RefTeX{}'s key bindings is best done in the hook
 @code{reftex-load-hook}.  For information on the keymaps
index f773c90b8d59e02f7653837d56a922ff2533b85b..bff8eb017a0f32716a516649f16a6177f0233926 100644 (file)
@@ -3,7 +3,7 @@
 % Load plain if necessary, i.e., if running under initex.
 \expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi
 %
-\def\texinfoversion{2015-07-01.07}
+\def\texinfoversion{2015-09-20.17}
 %
 % Copyright 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995,
 % 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
   wide-spread wrap-around
 }
 
-% Margin to add to right of even pages, to left of odd pages.
-\newdimen\bindingoffset
-\newdimen\normaloffset
-\newdimen\pagewidth \newdimen\pageheight
-
-% For a final copy, take out the rectangles
-% that mark overfull boxes (in case you have decided
-% that the text looks ok even though it passes the margin).
-%
-\def\finalout{\overfullrule=0pt }
-
 % Sometimes it is convenient to have everything in the transcript file
 % and nothing on the terminal.  We don't just call \tracingall here,
 % since that produces some useless output on the terminal.  We also make
 \def\bigbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\bigskipamount
   \removelastskip\penalty-200\bigskip\fi\fi}
 
+%\f Output routine
+%
+
+% For a final copy, take out the rectangles
+% that mark overfull boxes (in case you have decided
+% that the text looks ok even though it passes the margin).
+%
+\def\finalout{\overfullrule=0pt }
+
 % Do @cropmarks to get crop marks.
 %
 \newif\ifcropmarks
     \noexpand\else \the\toks8             % 2: color marks
   }%
 }
+
+% \gettopheadingmarks, \getbottomheadingmarks - extract needed part of mark.
+%
 % \topmark doesn't work for the very first chapter (after the title
 % page or the contents), so we use \firstmark there -- this gets us
 % the mark with the chapter defs, unless the user sneaks in, e.g.,
 \def\prevsectiondefs{}
 \def\lastcolordefs{}
 
+% Margin to add to right of even pages, to left of odd pages.
+\newdimen\bindingoffset
+\newdimen\normaloffset
+\newdimen\pagewidth \newdimen\pageheight
+
 % Main output routine.
+%
 \chardef\PAGE = 255
 \output = {\onepageout{\pagecontents\PAGE}}
 
 \newbox\headlinebox
 \newbox\footlinebox
 
-% \onepageout takes a vbox as an argument.  Note that \pagecontents
-% does insertions, but you have to call it yourself.
+% \onepageout takes a vbox as an argument.
+% \shipout a vbox for a single page, adding an optional header, footer,
+% cropmarks, and footnote.  This also causes index entries for this page
+% to be written to the auxiliary files.
+%
 \def\onepageout#1{%
   \ifcropmarks \hoffset=0pt \else \hoffset=\normaloffset \fi
   %
   \ifodd\pageno  \advance\hoffset by \bindingoffset
   \else \advance\hoffset by -\bindingoffset\fi
   %
+  % Common context changes for both heading and footing.
   % Do this outside of the \shipout so @code etc. will be expanded in
   % the headline as they should be, not taken literally (outputting ''code).
   \def\commmonheadfootline{\let\hsize=\pagewidth \texinfochars}
   %
-  \ifodd\pageno \getoddheadingmarks \else \getevenheadingmarks \fi
-  \global\setbox\headlinebox = \vbox{\commmonheadfootline \makeheadline}%
+  % Retrieve the information for the headings from the marks in the page,
+  % and call Plain TeX's \makeheadline and \makefootline, which use the
+  % values in \headline and \footline.
   %
+  % This is used to check if we are on the first page of a chapter.
+  \ifcase0\topmark\fi
+  \ifx\thischapter\empty
+    % See comment for \gettopheadingmarks
+    \ifcase0\firstmark\fi
+    \let\curchaptername\thischaptername
+    \ifcase1\firstmark\fi
+    \let\prevchaptername\thischaptername
+  \else
+    \let\curchaptername\thischaptername
+    \ifcase1\topmark\fi
+    \let\prevchaptername\thischaptername
+  \fi
+  %
+  \ifodd\pageno \getoddheadingmarks \else \getevenheadingmarks \fi
   \ifodd\pageno \getoddfootingmarks \else \getevenfootingmarks \fi
+  %
+  \ifx\curchaptername\prevchaptername
+  \else
+    % If on the first page of a chapter, clear @thischapter so it
+    % doesn't appear in the headline, because the chapter is already
+    % shown in the chapter heading.
+    \def\thischapter{}%
+  \fi
+  %
+  \global\setbox\headlinebox = \vbox{\commmonheadfootline \makeheadline}%
   \global\setbox\footlinebox = \vbox{\commmonheadfootline \makefootline}%
   %
   {%
+    % Set context for writing to auxiliary files like index files.
     % Have to do this stuff outside the \shipout because we want it to
     % take effect in \write's, yet the group defined by the \vbox ends
     % before the \shipout runs.
     \normalturnoffactive  % \ in index entries must not stay \, e.g., if
                % the page break happens to be in the middle of an example.
                % We don't want .vr (or whatever) entries like this:
-               % \entry{{\tt \indexbackslash }acronym}{32}{\code {\acronym}}
+               % \entry{{\indexbackslash }acronym}{32}{\code {\acronym}}
                % "\acronym" won't work when it's read back in;
                % it needs to be
-               % {\code {{\tt \backslashcurfont }acronym}
+               % {\code {{\backslashcurfont }acronym}
     \shipout\vbox{%
       % Do this early so pdf references go to the beginning of the page.
       \ifpdfmakepagedest \pdfdest name{\the\pageno} xyz\fi
 
 \newinsert\margin \dimen\margin=\maxdimen
 
+% Main part of page, including any footnotes
 \def\pagebody#1{\vbox to\pageheight{\boxmaxdepth=\maxdepth #1}}
 {\catcode`\@ =11
 \gdef\pagecontents#1{\ifvoid\topins\else\unvbox\topins\fi
 \def\nsbot{\vbox
   {\hrule height\cornerlong depth\cornerthick width\cornerthick}}
 
+
+% Argument parsing
+
 % Parse an argument, then pass it to #1.  The argument is the rest of
 % the input line (except we remove a trailing comment).  #1 should be a
 % macro which expects an ordinary undelimited TeX argument.
+% For example, \def\foo{\parsearg\fooxxx}.
 %
 \def\parsearg{\parseargusing{}}
 \def\parseargusing#1#2{%
   }%
 }
 
-% First remove any @comment, then any @c comment.
+% First remove any @comment, then any @c comment.  Also remove a @texinfoc
+% comment (see \scanmacro for details).  Pass the result on to \argcheckspaces.
 \def\argremovecomment#1\comment#2\ArgTerm{\argremovec #1\c\ArgTerm}
-\def\argremovec#1\c#2\ArgTerm{\argcheckspaces#1\^^M\ArgTerm}
+\def\argremovec#1\c#2\ArgTerm{\argremovetexinfoc #1\texinfoc\ArgTerm}
+\def\argremovetexinfoc#1\texinfoc#2\ArgTerm{\argcheckspaces#1\^^M\ArgTerm}
 
 % Each occurrence of `\^^M' or `<space>\^^M' is replaced by a single space.
 %
     \endgraf % Not \par, as it may have been set to \lisppar.
     \global\dimen1 = \prevdepth
   \egroup           % End the \vtop.
+  \addgroupbox
+  \prevdepth = \dimen1
+  \checkinserts
+}
+
+\def\addgroupbox{
   % \dimen0 is the vertical size of the group's box.
   \dimen0 = \ht\groupbox  \advance\dimen0 by \dp\groupbox
   % \dimen2 is how much space is left on the page (more or less).
     \fi
   \fi
   \box\groupbox
-  \prevdepth = \dimen1
-  \checkinserts
 }
+
 %
 % TeX puts in an \escapechar (i.e., `@') at the beginning of the help
 % message, so this ends up printing `@group can only ...'.
@@ -939,12 +989,20 @@ where each line of input produces a line of output.}
 % @c is the same as @comment
 % @ignore ... @end ignore  is another way to write a comment
 %
-\def\comment{\begingroup \catcode`\^^M=\other%
+\def\comment{\begingroup \catcode`\^^M=\active%
+\catcode`\@=\other \catcode`\{=\other \catcode`\}=\other\commentxxx}%
+
+{\catcode`\^^M=\active%
+\gdef\commentxxx#1^^M{\endgroup%
+\futurelet\nexttoken\commentxxxx}%
+\gdef\commentxxxx{\ifx\nexttoken\aftermacro\expandafter\comment\fi}%
+}
+
+\def\c{\begingroup \catcode`\^^M=\active%
 \catcode`\@=\other \catcode`\{=\other \catcode`\}=\other%
-\commentxxx}
-{\catcode`\^^M=\other \gdef\commentxxx#1^^M{\endgroup}}
-%
-\let\c=\comment
+\cxxx}
+{\catcode`\^^M=\active \gdef\cxxx#1^^M{\endgroup}}
+% See comment in \scanmacro about why the definitions of @c and @comment differ
 
 % @paragraphindent NCHARS
 % We'll use ems for NCHARS, close enough.
@@ -1030,45 +1088,8 @@ where each line of input produces a line of output.}
 % @refill is a no-op.
 \let\refill=\relax
 
-% If working on a large document in chapters, it is convenient to
-% be able to disable indexing, cross-referencing, and contents, for test runs.
-% This is done with @novalidate (before @setfilename).
-%
-\newif\iflinks \linkstrue % by default we want the aux files.
-\let\novalidate = \linksfalse
-
-% @setfilename is done at the beginning of every texinfo file.
-% So open here the files we need to have open while reading the input.
-% This makes it possible to make a .fmt file for texinfo.
-\def\setfilename{%
-   \fixbackslash  % Turn off hack to swallow `\input texinfo'.
-   \iflinks
-     \tryauxfile
-     % Open the new aux file.  TeX will close it automatically at exit.
-     \immediate\openout\auxfile=\jobname.aux
-   \fi % \openindices needs to do some work in any case.
-   \openindices
-   \let\setfilename=\comment % Ignore extra @setfilename cmds.
-   %
-   % If texinfo.cnf is present on the system, read it.
-   % Useful for site-wide @afourpaper, etc.
-   \openin 1 texinfo.cnf
-   \ifeof 1 \else \input texinfo.cnf \fi
-   \closein 1
-   %
-   \comment % Ignore the actual filename.
-}
-
-% Called from \setfilename.
-%
-\def\openindices{%
-  \newindex{cp}%
-  \newcodeindex{fn}%
-  \newcodeindex{vr}%
-  \newcodeindex{tp}%
-  \newcodeindex{ky}%
-  \newcodeindex{pg}%
-}
+% @setfilename INFO-FILENAME - ignored
+\let\setfilename=\comment
 
 % @bye.
 \outer\def\bye{\pagealignmacro\tracingstats=1\ptexend}
@@ -1822,8 +1843,10 @@ end
 % A few fonts for @defun names and args.
 \setfont\defbf\bfshape{10}{\magstep1}{OT1}
 \setfont\deftt\ttshape{10}{\magstep1}{OT1TT}
+\setfont\defsl\slshape{10}{\magstep1}{OT1TT}
 \setfont\defttsl\ttslshape{10}{\magstep1}{OT1TT}
-\def\df{\let\tentt=\deftt \let\tenbf = \defbf \let\tenttsl=\defttsl \bf}
+\def\df{\let\tentt=\deftt \let\tenbf = \defbf
+\let\tenttsl=\defttsl \let\tensl=\defsl \bf}
 
 % Fonts for indices, footnotes, small examples (9pt).
 \def\smallnominalsize{9pt}
@@ -1884,6 +1907,7 @@ end
 % Section fonts (14.4pt).
 \def\secnominalsize{14pt}
 \setfont\secrm\rmbshape{12}{\magstep1}{OT1}
+\setfont\secrmnotbold\rmshape{12}{\magstep1}{OT1}
 \setfont\secit\itbshape{10}{\magstep2}{OT1IT}
 \setfont\secsl\slbshape{10}{\magstep2}{OT1}
 \setfont\sectt\ttbshape{12}{\magstep1}{OT1TT}
@@ -1953,8 +1977,10 @@ end
 % A few fonts for @defun names and args.
 \setfont\defbf\bfshape{10}{\magstephalf}{OT1}
 \setfont\deftt\ttshape{10}{\magstephalf}{OT1TT}
+\setfont\defsl\slshape{10}{\magstephalf}{OT1TT}
 \setfont\defttsl\ttslshape{10}{\magstephalf}{OT1TT}
-\def\df{\let\tentt=\deftt \let\tenbf = \defbf \let\tenttsl=\defttsl \bf}
+\def\df{\let\tentt=\deftt \let\tenbf = \defbf
+\let\tensl=\defsl \let\tenttsl=\defttsl \bf}
 
 % Fonts for indices, footnotes, small examples (9pt).
 \def\smallnominalsize{9pt}
@@ -2773,11 +2799,6 @@ end
 %
 \def\dmn#1{\thinspace #1}
 
-% @l was never documented to mean ``switch to the Lisp font'',
-% and it is not used as such in any manual I can find.  We need it for
-% Polish suppressed-l.  --karl, 22sep96.
-%\def\l#1{{\li #1}\null}
-
 % @acronym for "FBI", "NATO", and the like.
 % We print this one point size smaller, since it's intended for
 % all-uppercase.
@@ -2881,9 +2902,6 @@ end
 \def\sup{\ifmmode \expandafter\ptexsp \else \expandafter\finishsup\fi}
 \def\finishsup#1{$\ptexsp{\hbox{\selectfonts\lllsize #1}}$}%
 
-% ctrl is no longer a Texinfo command, but leave this definition for fun.
-\def\ctrl #1{{\tt \rawbackslash \hat}#1}
-
 % @inlinefmt{FMTNAME,PROCESSED-TEXT} and @inlineraw{FMTNAME,RAW-TEXT}.
 % Ignore unless FMTNAME == tex; then it is like @iftex and @tex,
 % except specified as a normal braced arg, so no newlines to worry about.
@@ -3391,7 +3409,7 @@ end
 \newtoks\evenfootline    % footline on even pages
 \newtoks\oddfootline     % footline on odd pages
 
-% Now make TeX use those variables
+% Now make \makeheadline and \makefootline in Plain TeX use those variables
 \headline={{\textfonts\rm \ifodd\pageno \the\oddheadline
                             \else \the\evenheadline \fi}}
 \footline={{\textfonts\rm \ifodd\pageno \the\oddfootline
@@ -3447,6 +3465,10 @@ end
 % @everyheadingmarks
 % @everyfootingmarks
 
+% These define \getoddheadingmarks, \getevenheadingmarks,
+% \getoddfootingmarks, and \getevenfootingmarks, each to one of
+% \gettopheadingmarks, \getbottomheadingmarks.
+%
 \def\evenheadingmarks{\headingmarks{even}{heading}}
 \def\oddheadingmarks{\headingmarks{odd}{heading}}
 \def\evenfootingmarks{\headingmarks{even}{footing}}
@@ -3736,7 +3758,12 @@ end
    \noindent
    \hbox to 0pt{\hss \itemcontents \kern\itemmargin}%
    %
-   \vadjust{\penalty 1200}}% not good to break after first line of item.
+   \ifinner\else
+     \vadjust{\penalty 1200}% not good to break after first line of item.
+   \fi
+   % We can be in inner vertical mode in a footnote, although an
+   % @itemize looks awful there.
+  }%
   \flushcr
 }
 
@@ -4358,19 +4385,16 @@ end
 % except not \outer, so it can be used within macros and \if's.
 \edef\newwrite{\makecsname{ptexnewwrite}}
 
-% \newindex {foo} defines an index named foo.
-% It automatically defines \fooindex such that
-% \fooindex ...rest of line... puts an entry in the index foo.
-% It also defines \fooindfile to be the number of the output channel for
-% the file that accumulates this index.  The file's extension is foo.
+% \newindex {foo} defines an index named IX.
+% It automatically defines \IXindex such that
+% \IXindex ...rest of line... puts an entry in the index IX.
+% It also defines \IXindfile to be the number of the output channel for
+% the file that accumulates this index.  The file's extension is IX.
 % The name of an index should be no more than 2 characters long
 % for the sake of vms.
 %
 \def\newindex#1{%
-  \iflinks
-    \expandafter\newwrite \csname#1indfile\endcsname
-    \openout \csname#1indfile\endcsname \jobname.#1 % Open the file
-  \fi
+  \expandafter\chardef\csname#1indfile\endcsname=0
   \expandafter\xdef\csname#1index\endcsname{%     % Define @#1index
     \noexpand\doindex{#1}}
 }
@@ -4384,14 +4408,19 @@ end
 \def\defcodeindex{\parsearg\newcodeindex}
 %
 \def\newcodeindex#1{%
-  \iflinks
-    \expandafter\newwrite \csname#1indfile\endcsname
-    \openout \csname#1indfile\endcsname \jobname.#1
-  \fi
+  \expandafter\chardef\csname#1indfile\endcsname=0
   \expandafter\xdef\csname#1index\endcsname{%
     \noexpand\docodeindex{#1}}%
 }
 
+% The default indices:
+\newindex{cp}%      concepts,
+\newcodeindex{fn}%  functions,
+\newcodeindex{vr}%  variables,
+\newcodeindex{tp}%  types,
+\newcodeindex{ky}%  keys
+\newcodeindex{pg}%  and programs.
+
 
 % @synindex foo bar    makes index foo feed into index bar.
 % Do this instead of @defindex foo if you don't want it as a separate index.
@@ -4420,26 +4449,19 @@ end
   \expandafter\xdef\csname#2index\endcsname{\noexpand#1{#3}}%
 }
 
-% Define \doindex, the driver for all \fooindex macros.
+% Define \doindex, the driver for all index macros.
 % Argument #1 is generated by the calling \fooindex macro,
-%  and it is "foo", the name of the index.
+% and it the two-letter name of the index.
 
-% \doindex just uses \parsearg; it calls \doind for the actual work.
-% This is because \doind is more useful to call from other macros.
-
-% There is also \dosubind {index}{topic}{subtopic}
-% which makes an entry in a two-level index such as the operation index.
-
-\def\doindex#1{\edef\indexname{#1}\parsearg\singleindexer}
-\def\singleindexer #1{\doind{\indexname}{#1}}
+\def\doindex#1{\edef\indexname{#1}\parsearg\doindexxxx}
+\def\doindexxxx #1{\doind{\indexname}{#1}}
 
 % like the previous two, but they put @code around the argument.
-\def\docodeindex#1{\edef\indexname{#1}\parsearg\singlecodeindexer}
-\def\singlecodeindexer #1{\doind{\indexname}{\code{#1}}}
+\def\docodeindex#1{\edef\indexname{#1}\parsearg\docodeindexxxx}
+\def\docodeindexxxx #1{\doind{\indexname}{\code{#1}}}
 
-% Take care of Texinfo commands that can appear in an index entry.
-% Since there are some commands we want to expand, and others we don't,
-% we have to laboriously prevent expansion for those that we don't.
+% Used when writing an index entry out to an index file, to prevent
+% expansion of Texinfo commands that can appear in an index entry.
 %
 \def\indexdummies{%
   \escapechar = `\\     % use backslash in output files.
@@ -4455,31 +4477,6 @@ end
   \def\{{{\tt\char123}}%
   \def\}{{\tt\char125}}%
   %
-  % I don't entirely understand this, but when an index entry is
-  % generated from a macro call, the \endinput which \scanmacro inserts
-  % causes processing to be prematurely terminated.  This is,
-  % apparently, because \indexsorttmp is fully expanded, and \endinput
-  % is an expandable command.  The redefinition below makes \endinput
-  % disappear altogether for that purpose -- although logging shows that
-  % processing continues to some further point.  On the other hand, it
-  % seems \endinput does not hurt in the printed index arg, since that
-  % is still getting written without apparent harm.
-  %
-  % Sample source (mac-idx3.tex, reported by Graham Percival to
-  % help-texinfo, 22may06):
-  % @macro funindex {WORD}
-  % @findex xyz
-  % @end macro
-  % ...
-  % @funindex commtest
-  % This is not enough to reproduce the bug, but it gives the flavor.
-  %
-  % Sample whatsit resulting:
-  % .@write3{\entry{xyz}{@folio }{@code {xyz@endinput }}}
-  %
-  % So:
-  \let\endinput = \empty
-  %
   % Do the redefinitions.
   \commondummies
 }
@@ -4686,11 +4683,39 @@ end
   % that we make for arg2 (see \parsemargdef ff.).  We want all this to be
   % expanded for the sake of the index, so we end up just seeing "bar".
   \let\xeatspaces = \eatspaces
+  \let\xprocessmacroarg\eatspaces
 }
 
 % For testing: output @{ and @} in index sort strings as \{ and \}.
 \newif\ifusebracesinindexes
 
+\let\indexlbrace\relax
+\let\indexrbrace\relax
+
+{\catcode`\@=0
+\catcode`\\=13
+  @gdef@backslashdisappear{@def\{}}
+}
+
+{
+\catcode`\<=13
+\catcode`\-=13
+  \gdef\indexnonalnumdisappear{%
+    \backslashdisappear
+    \def-{}%
+    \def<{}%
+    \def\@{}%
+  }
+
+  \gdef\indexnonalnumreappear{%
+    \useindexbackslash
+    \let-\normaldash
+    \let<\normalless
+    \def\@{@}%
+  }
+}
+
+
 % \indexnofonts is used when outputting the strings to sort the index
 % by, and when constructing control sequence names.  It eliminates all
 % control sequences and just writes whatever the best ASCII sort string
@@ -4716,16 +4741,10 @@ end
   \def\_{\normalunderscore}%
   \def\-{}% @- shouldn't affect sorting
   %
-  % Unfortunately, texindex is not prepared to handle braces in the
-  % content at all.  So for index sorting, we map @{ and @} to strings
-  % starting with |, since that ASCII character is between ASCII { and }.
-  \ifusebracesinindexes
-    \def\lbracechar{\lbracecmd}%
-    \def\rbracechar{\rbracecmd}%
-  \else
-    \def\lbracechar{|a}%
-    \def\rbracechar{|b}%
-  \fi
+  % Unfortunately, texindex < 6.0 is not prepared to handle braces in the
+  % content at all, so these won't be sorted in ASCII order.
+  \def\lbracechar{{\indexlbrace}}%
+  \def\rbracechar{{\indexrbrace}}%
   \let\{=\lbracechar
   \let\}=\rbracechar
   %
@@ -4737,7 +4756,7 @@ end
   \def\L{L}%
   \def\OE{OE}%
   \def\O{O}%
-  \def\TH{ZZZ}%
+  \def\TH{TH}%
   \def\aa{aa}%
   \def\ae{ae}%
   \def\dh{dzz}%
@@ -4749,7 +4768,7 @@ end
   \def\o{o}%
   \def\questiondown{?}%
   \def\ss{ss}%
-  \def\th{zzz}%
+  \def\th{th}%
   %
   \def\LaTeX{LaTeX}%
   \def\TeX{TeX}%
@@ -4807,14 +4826,17 @@ end
 {\catcode`\`=\active
  \gdef\indexlquoteignore{\let`=\empty}}
 
-\let\indexbackslash=0  %overridden during \printindex.
 \let\SETmarginindex=\relax % put index entries in margin (undocumented)?
 
 % Most index entries go through here, but \dosubind is the general case.
 % #1 is the index name, #2 is the entry text.
 \def\doind#1#2{\dosubind{#1}{#2}{}}
 
-% Workhorse for all \fooindexes.
+% There is also \dosubind {index}{topic}{subtopic}
+% which makes an entry in a two-level index such as the operation index.
+% TODO: Two-level index?  Operation index?
+
+% Workhorse for all indexes.
 % #1 is name of index, #2 is stuff to put there, #3 is subentry --
 % empty if called from \doind, as we usually are (the main exception
 % is with most defuns, which call us directly).
@@ -4822,6 +4844,7 @@ end
 \def\dosubind#1#2#3{%
   \iflinks
   {%
+    \requireopenindexfile{#1}%
     % Store the main index entry text (including the third arg).
     \toks0 = {#2}%
     % If third arg is present, precede it with a space.
@@ -4837,7 +4860,43 @@ end
   \fi
 }
 
-% Write the entry in \toks0 to the index file:
+% Check if an index file has been opened, and if not, open it.
+\def\requireopenindexfile#1{%
+\ifnum\csname #1indfile\endcsname=0
+  \expandafter\newwrite \csname#1indfile\endcsname
+  \immediate\openout\csname#1indfile\endcsname \jobname.#1 % Open the file
+  % Using \immediate here prevents an object entering into the current box,
+  % which could confound checks such as those in \safewhatsit for preceding
+  % skips.
+\fi}
+
+% Output \ as {\indexbackslash}, because \ is an escape character in
+% the index files.
+\let\indexbackslash=\relax
+{\catcode`\@=0 \catcode`\\=\active
+  @gdef@useindexbackslash{@def\{{@indexbackslash}}}
+}
+
+% Definition for writing index entry text.
+\def\sortas#1{\ignorespaces}%
+
+% Definition for writing index entry sort key.  Should occur at the at
+% the beginning of the index entry, like
+%     @cindex @sortas{september} \september
+% The \ignorespaces takes care of following space, but there's no way
+% to remove space before it.
+{
+\catcode`\-=13
+\gdef\indexwritesortas{%
+  \begingroup
+  \indexnonalnumreappear
+  \indexwritesortasxxx}
+\gdef\indexwritesortasxxx#1{%
+  \xdef\indexsortkey{#1}\endgroup}
+}
+
+
+% Write the entry in \toks0 to the index file.
 %
 \def\dosubindwrite{%
   % Put the index entry in the margin if desired.
@@ -4847,14 +4906,20 @@ end
   %
   % Remember, we are within a group.
   \indexdummies % Must do this here, since \bf, etc expand at this stage
-  \def\backslashcurfont{\indexbackslash}% \indexbackslash isn't defined now
-      % so it will be output as is; and it will print as backslash.
-  %
-  % Process the index entry with all font commands turned off, to
-  % get the string to sort by.
+  \useindexbackslash % \indexbackslash isn't defined now so it will be output 
+                     % as is; and it will print as backslash.
+  % Get the string to sort by, by processing the index entry with all
+  % font commands turned off.
   {\indexnofonts
-   \edef\temp{\the\toks0}% need full expansion
-   \xdef\indexsorttmp{\temp}%
+   \xdef\indexsortkey{}%
+   \let\sortas=\indexwritesortas
+   \indexnonalnumdisappear
+   \edef\temp{\the\toks0}%
+   \setbox\dummybox = \hbox{\temp}% Make sure to execute any \sortas
+   \ifx\indexsortkey\empty
+     \xdef\indexsortkey{\temp}%
+     \ifx\indexsortkey\empty\xdef\indexsortkey{ }\fi
+   \fi
   }%
   %
   % Set up the complete index entry, with both the sort key and
@@ -4864,10 +4929,11 @@ end
   % sorted result.
   \edef\temp{%
     \write\writeto{%
-      \string\entry{\indexsorttmp}{\noexpand\folio}{\the\toks0}}%
+      \string\entry{\indexsortkey}{\noexpand\folio}{\the\toks0}}%
   }%
   \temp
 }
+\newbox\dummybox % used above
 
 % Take care of unwanted page breaks/skips around a whatsit:
 %
@@ -5001,43 +5067,96 @@ end
     % there is some text.
     \putwordIndexNonexistent
   \else
+    \catcode`\\ = 0
+    \escapechar = `\\
     %
     % If the index file exists but is empty, then \openin leaves \ifeof
     % false.  We have to make TeX try to read something from the file, so
     % it can discover if there is anything in it.
-    \read 1 to \temp
+    \read 1 to \thisline
     \ifeof 1
       \putwordIndexIsEmpty
     \else
       % Index files are almost Texinfo source, but we use \ as the escape
       % character.  It would be better to use @, but that's too big a change
       % to make right now.
-      \def\indexbackslash{\backslashcurfont}%
-      \catcode`\\ = 0
-      \escapechar = `\\
+      \def\indexbackslash{\ttbackslash}%
+      \let\indexlbrace\{   % Likewise, set these sequences for braces
+      \let\indexrbrace\}   % used in the sort key.
       \begindoublecolumns
-      \input \jobname.#1s
+      \let\entryorphanpenalty=\indexorphanpenalty
+      %
+      % Read input from the index file line by line.
+      \loopdo
+        \ifeof1
+          \let\firsttoken\relax
+        \else
+          \read 1 to \nextline
+          \edef\act{\gdef\noexpand\firsttoken{\getfirsttoken\nextline}}%
+          \act
+        \fi
+        \thisline
+        %
+        \ifeof1\else
+        \let\thisline\nextline
+      \repeat
+      %%
       \enddoublecolumns
     \fi
   \fi
   \closein 1
 \endgroup}
 
+\def\getfirsttoken#1{\expandafter\getfirsttokenx#1\endfirsttoken}
+\long\def\getfirsttokenx#1#2\endfirsttoken{\noexpand#1}
+
+\def\loopdo#1\repeat{\def\body{#1}\loopdoxxx}
+\def\loopdoxxx{\let\next=\relax\body\let\next=\loopdoxxx\fi\next}
+
 % These macros are used by the sorted index file itself.
 % Change them to control the appearance of the index.
 
-\def\initial#1{{%
-  % Some minor font changes for the special characters.
-  \let\tentt=\sectt \let\tt=\sectt \let\sf=\sectt
-  %
+{\catcode`\/=13 \catcode`\-=13 \catcode`\^=13 \catcode`\~=13 \catcode`\_=13
+\catcode`\|=13 \catcode`\<=13 \catcode`\>=13 \catcode`\+=13 \catcode`\"=13
+\catcode`\$=3
+\gdef\initialglyphs{%
+  % Some changes for non-alphabetic characters.  Using the glyphs from the
+  % math fonts looks more consistent than the typewriter font used elsewhere
+  % for these characters.
+  \def\indexbackslash{\math{\backslash}}%
+  \let\\=\indexbackslash
+  %
+  % Can't get bold backslash so don't use bold forward slash
+  \catcode`\/=13
+  \def/{{\secrmnotbold \normalslash}}%
+  \def-{{\normaldash\normaldash}}% en dash `--'
+  \def^{{\chapbf \normalcaret}}%
+  \def~{{\chapbf \normaltilde}}%
+  \def\_{%
+     \leavevmode \kern.07em \vbox{\hrule width.3em height.1ex}\kern .07em }%
+  \def|{$\vert$}%
+  \def<{$\less$}%
+  \def>{$\gtr$}%
+  \def+{$\normalplus$}%
+}}
+
+\def\initial{%
+  \bgroup
+  \initialglyphs
+  \initialx
+}
+
+\def\initialx#1{%
   % Remove any glue we may have, we'll be inserting our own.
   \removelastskip
   %
   % We like breaks before the index initials, so insert a bonus.
+  % The glue before the bonus allows a little bit of space at the
+  % bottom of a column to reduce an increase in inter-line spacing.
   \nobreak
-  \vskip 0pt plus 3\baselineskip
-  \penalty 0
-  \vskip 0pt plus -3\baselineskip
+  \vskip 0pt plus 5\baselineskip
+  \penalty -300 
+  \vskip 0pt plus -5\baselineskip
   %
   % Typeset the initial.  Making this add up to a whole number of
   % baselineskips increases the chance of the dots lining up from column
@@ -5045,24 +5164,24 @@ end
   % we need before each entry, but it's better.
   %
   % No shrink because it confuses \balancecolumns.
-  \vskip 1.67\baselineskip plus .5\baselineskip
-  \leftline{\secbf #1}%
+  \vskip 1.67\baselineskip plus 1\baselineskip
+  \leftline{\secfonts \kern-0.05em \secbf #1}%
+  % \secfonts is inside the argument of \leftline so that the change of
+  % \baselineskip will not affect any glue inserted before the vbox that
+  % \leftline creates.
   % Do our best not to break after the initial.
   \nobreak
   \vskip .33\baselineskip plus .1\baselineskip
-}}
+  \egroup % \initialglyphs
+}
+
+\newdimen\entryrightmargin
+\entryrightmargin=0pt
 
 % \entry typesets a paragraph consisting of the text (#1), dot leaders, and
 % then page number (#2) flushed to the right margin.  It is used for index
 % and table of contents entries.  The paragraph is indented by \leftskip.
 %
-% A straightforward implementation would start like this:
-%      \def\entry#1#2{...
-% But this freezes the catcodes in the argument, and can cause problems to
-% @code, which sets - active.  This problem was fixed by a kludge---
-% ``-'' was active throughout whole index, but this isn't really right.
-% The right solution is to prevent \entry from swallowing the whole text.
-%                                 --kasal, 21nov03
 \def\entry{%
   \begingroup
     %
@@ -5070,38 +5189,46 @@ end
     % affect previous text.
     \par
     %
-    % Do not fill out the last line with white space.
-    \parfillskip = 0in
-    %
     % No extra space above this paragraph.
     \parskip = 0in
     %
+    % When reading the text of entry, convert explicit line breaks
+    % from @* into spaces.  The user might give these in long section
+    % titles, for instance.
+    \def\*{\unskip\space\ignorespaces}%
+    \def\entrybreak{\hfil\break}%
+    %
+    % A bit of stretch before each entry for the benefit of balancing
+    % columns.
+    \vskip 0pt plus0.5pt
+    %
+    % Badness calculation for paragraph affected by -
+    %  How much \indexdotfill is stretched, or how much \parfillskip is shrunk
+    %  Number of lines (\linepenalty)
+    %  
     % Do not prefer a separate line ending with a hyphen to fewer lines.
     \finalhyphendemerits = 0
     %
-    % \hangindent is only relevant when the entry text and page number
-    % don't both fit on one line.  In that case, bob suggests starting the
-    % dots pretty far over on the line.  Unfortunately, a large
-    % indentation looks wrong when the entry text itself is broken across
-    % lines.  So we use a small indentation and put up with long leaders.
+    % Word spacing - no stretch
+    \spaceskip=\fontdimen2\font minus \fontdimen4\font
     %
-    % \hangafter is reset to 1 (which is the value we want) at the start
-    % of each paragraph, so we need not do anything with that.
-    \hangindent = 2em
+    \linepenalty=1000  % Discourage line breaks.
+    \hyphenpenalty=5000  % Discourage hyphenation.
     %
-    % When the entry text needs to be broken, just fill out the first line
-    % with blank space.
-    \rightskip = 0pt plus1fil
+    % Ragged right margin, but not for the last line with the leaders in it.
+    % When an index entry spans lines, this stretch competes with the stretch
+    % in \indexdotfill to determine how the line will be split.
+    \rightskip=\entryrightmargin
+    \advance\rightskip by 0pt plus .6\hsize
     %
-    % A bit of stretch before each entry for the benefit of balancing
-    % columns.
-    \vskip 0pt plus1pt
-    %
-    % When reading the text of entry, convert explicit line breaks
-    % from @* into spaces.  The user might give these in long section
-    % titles, for instance.
-    \def\*{\unskip\space\ignorespaces}%
-    \def\entrybreak{\hfil\break}%
+    % \parfillskip is at the end of the line with the page number
+    \parfillskip=0pt
+    % Cancel the \rightskip stretch
+    \advance \parfillskip by 0pt plus -.6\hsize
+    % Determine how far we can stretch into the margin.
+    % This allows, e.g., "Appendix H  GNU Free Documentation License" to fit
+    % on one line.
+    \advance \parfillskip by 0pt minus .6\entryrightmargin
     %
     % Swallow the left brace of the text (first parameter):
     \afterassignment\doentry
@@ -5109,6 +5236,8 @@ end
 }
 \def\entrybreak{\unskip\space\ignorespaces}%
 \def\doentry{%
+    % Save the text of the entry in a \vtop.
+    \global\setbox\entryindexbox=\vtop\bgroup
     \bgroup % Instead of the swallowed brace.
       \noindent
       \aftergroup\finishentry
@@ -5125,29 +5254,70 @@ end
       \ %
     \else
       %
-      % If we must, put the page number on a line of its own, and fill out
-      % this line with blank space.  (The \hfil is overwhelmed with the
-      % fill leaders glue in \indexdotfill if the page number does fit.)
-      \hfil\penalty50
       \null\nobreak\indexdotfill % Have leaders before the page number.
       %
-      % The `\ ' here is removed by the implicit \unskip that TeX does as
-      % part of (the primitive) \par.  Without it, a spurious underfull
-      % \hbox ensues.
       \ifpdf
-       \pdfgettoks#1.%
-       \the\toksA
+        \pdfgettoks#1.%
+        \hskip\skip\thinshrinkable\the\toksA
       \else
-       \ #1%
+        \hskip\skip\thinshrinkable #1%
       \fi
     \fi
+    % Parameters for formatting this paragraph, reset for each paragraph.
+    %
+    % \hangindent is only relevant when the entry text and page number
+    % don't both fit on one line.  In that case, bob suggests starting the
+    % dots pretty far over on the line.  Unfortunately, a large
+    % indentation looks wrong when the entry text itself is broken across
+    % lines.  So we use a small indentation and put up with long leaders.
+    %
+    \hangafter = 1
+    \hangindent = 1em
     \par
+    \egroup % The \vtop
   \endgroup
+  % delay text of entry until after penalty
+  \bgroup\aftergroup\insertindexentrybox
+  \entryorphanpenalty
+}
+
+\newskip\thinshrinkable
+\skip\thinshrinkable=.15em minus .15em
+
+\newbox\entryindexbox
+\def\insertindexentrybox{%
+\lineskip=.8ex plus .6ex % This comes into effect when the \vtop has a large 
+                         % depth due to the paragraph in it having several 
+                         % lines.
+\box\entryindexbox}
+
+% Default is no penalty
+\let\entryorphanpenalty\egroup
+
+% Used from \printindex.  \firsttoken should be the first token
+% after the \entry.  If it's not another \entry, we are at the last
+% line of a group of index entries, so insert a penalty to discourage
+% orphaned index entries.
+\long\def\indexorphanpenalty{%
+  \def\isentry{\entry}%
+  \ifx\firsttoken\isentry
+  \else
+    \unskip\penalty 9000
+    % The \unskip here stops breaking before the glue.  It relies on the
+    % \vskip above being there, otherwise there is an error
+    % "You can't use `\unskip' in vertical mode".  There has to be glue
+    % in the current vertical list that hasn't been added to the
+    % "current page".  See Chapter 24 of the TeXbook.  This contradicts
+    % Section 8.3.7 in "TeX by Topic," though.
+  \fi
+  \egroup % now comes the box added with \aftergroup
 }
 
 % Like plain.tex's \dotfill, except uses up at least 1 em.
+% Using a finite stretch encourages several words to appear on a second line
+% if the entry is broken.
 \def\indexdotfill{\cleaders
-  \hbox{$\mathsurround=0pt \mkern1.5mu.\mkern1.5mu$}\hskip 1em plus 1fill}
+  \hbox{$\mathsurround=0pt \mkern1.5mu.\mkern1.5mu$}\hskip 1em plus .4\hsize}
 
 \def\primary #1{\line{#1\hfil}}
 
@@ -5174,6 +5344,9 @@ end
 \newbox\partialpage
 \newdimen\doublecolumnhsize
 
+\newtoks\savedtopmark % Used in \begindoublecolumns
+\newtoks\savedfirstmark
+
 \def\begindoublecolumns{\begingroup % ended by \enddoublecolumns
   % Grab any single-column material above us.
   \output = {%
@@ -5194,9 +5367,23 @@ end
       \unvbox\PAGE
       \kern-\topskip \kern\baselineskip
     }%
+    % Save \topmark and \firstmark
+    \global\savedtopmark=\expandafter{\topmark}%
+    \global\savedfirstmark=\expandafter{\firstmark}%
   }%
   \eject % run that output routine to set \partialpage
   %
+  % We recover the two marks that the last output routine saved in order
+  % to propagate the information in marks added around a chapter heading,
+  % which could be otherwise be lost by the time the final page is output.
+  %
+  \mark{\the\savedtopmark}% Only mark in page passed to following \output.
+  \output = {%
+    \setbox0=\box\PAGE % clear box 255
+  }abc\eject
+  %
+  \mark{\the\savedfirstmark}%
+  %
   % Use the double-column output routine for subsequent pages.
   \output = {\doublecolumnout}%
   %
@@ -5227,7 +5414,7 @@ end
 }
 
 % The double-column output routine for all double-column pages except
-% the last.
+% the last, which is done by \balancecolumns.
 %
 \def\doublecolumnout{%
   \splittopskip=\topskip \splitmaxdepth=\maxdepth
@@ -5309,28 +5496,47 @@ end
   \pagegoal = \vsize
 }
 %
-% Called at the end of the double column material.
+% Only called for the last of the double column material.  \doublecolumnout 
+% does the others.
 \def\balancecolumns{%
   \setbox0 = \vbox{\unvbox255}% like \box255 but more efficient, see p.120.
   \dimen@ = \ht0
   \advance\dimen@ by \topskip
   \advance\dimen@ by-\baselineskip
-  \divide\dimen@ by 2 % target to split to
-  %debug\message{final 2-column material height=\the\ht0, target=\the\dimen@.}%
-  \splittopskip = \topskip
-  % Loop until we get a decent breakpoint.
-  {%
-    \vbadness = 10000
-    \loop
-      \global\setbox3 = \copy0
-      \global\setbox1 = \vsplit3 to \dimen@
-    \ifdim\ht3>\dimen@
-      \global\advance\dimen@ by 1pt
-    \repeat
-  }%
-  %debug\message{split to \the\dimen@, column heights: \the\ht1, \the\ht3.}%
-  \setbox0=\vbox to\dimen@{\unvbox1}%
-  \setbox2=\vbox to\dimen@{\unvbox3}%
+  \ifdim\dimen@<14\baselineskip
+    % Don't split a short final column in two.
+    \setbox2=\vbox{}%
+  \else
+    \divide\dimen@ by 2 % target to split to
+    \dimen@ii = \dimen@
+    \splittopskip = \topskip
+    % Loop until the second column is no higher than the first
+    {%
+      \vbadness = 10000
+      \loop
+        \global\setbox3 = \copy0
+        \global\setbox1 = \vsplit3 to \dimen@
+        % Remove glue from bottom of first column to
+        % make sure it is higher than the second.
+        \global\setbox1 = \vbox{\unvbox1\unpenalty\unskip}%
+      \ifdim\ht3>\ht1
+        \global\advance\dimen@ by 1pt
+      \repeat
+    }%
+    \multiply\dimen@ii by 4
+    \divide\dimen@ii by 5
+    \ifdim\ht3<\dimen@ii
+      % Column heights are too different, so don't make their bottoms
+      % flush with each other.  The glue at the end of the second column
+      % allows a second column to stretch, reducing the difference in
+      % height between the two.
+      \setbox0=\vbox to\dimen@{\unvbox1\vfill}%
+      \setbox2=\vbox to\dimen@{\unvbox3\vskip 0pt plus 0.3\ht0}%
+    \else
+      \setbox0=\vbox to\dimen@{\unvbox1}%
+      \setbox2=\vbox to\dimen@{\unvbox3}%
+    \fi
+  \fi
   %
   \pagesofar
 }
@@ -5351,6 +5557,9 @@ end
     \let\lastnode=\empty      % no node to associate with
     \writetocentry{part}{#1}{}% but put it in the toc
     \headingsoff              % no headline or footline on the part page
+    % This outputs a mark at the end of the page that clears \thischapter
+    % and \thissection, like is done in \startcontents.
+    \chapmacro{}{Yomitfromtoc}{}%
     \chapoddpage
   \endgroup
 }
@@ -5595,9 +5804,6 @@ end
 
 % @centerchap is like @unnumbered, but the heading is centered.
 \outer\parseargdef\centerchap{%
-  % Well, we could do the following in a group, but that would break
-  % an assumption that \chapmacro is called at the outermost level.
-  % Thus we are safer this way:                --kasal, 24feb04
   \let\centerparametersmaybe = \centerparameters
   \unnmhead0{#1}%
   \let\centerparametersmaybe = \relax
@@ -5721,7 +5927,11 @@ end
 
 % Define plain chapter starts, and page on/off switching for it.
 \def\chapbreak{\dobreak \chapheadingskip {-4000}}
+
+% Start a new page
 \def\chappager{\par\vfill\supereject}
+
+% \chapoddpage - start on an odd page for a new chapter
 % Because \domark is called before \chapoddpage, the filler page will
 % get the headings for the next chapter, which is wrong.  But we don't
 % care -- we just disable all headings on the filler page.
@@ -5757,7 +5967,7 @@ end
 
 \CHAPPAGon
 
-% Chapter opening.
+% \chapmacro - Chapter opening.
 %
 % #1 is the text, #2 is the section type (Ynumbered, Ynothing,
 % Yappendix, Yomitfromtoc), #3 the chapter number.
@@ -6151,7 +6361,7 @@ end
   \savepageno = \pageno
   \begingroup                  % Set up to handle contents files properly.
     \raggedbottom              % Worry more about breakpoints than the bottom.
-    \advance\hsize by -\contentsrightmargin % Don't use the full line length.
+    \entryrightmargin=\contentsrightmargin % Don't use the full line length.
     %
     % Roman numerals for page numbers.
     \ifnum \pageno>0 \global\pageno = \lastnegativepageno \fi
@@ -6256,7 +6466,7 @@ end
 
 % Chapters, in the main contents.
 \def\numchapentry#1#2#3#4{\dochapentry{#2\labelspace#1}{#4}}
-%
+
 % Chapters, in the short toc.
 % See comments in \dochapentry re vbox and related settings.
 \def\shortchapentry#1#2#3#4{%
@@ -6271,7 +6481,7 @@ end
   \setbox0 = \hbox{\putwordAppendix{} M}%
   \hbox to \wd0{\putwordAppendix{} #1\hss}}
 %
-\def\appentry#1#2#3#4{\dochapentry{\appendixbox{#2}\labelspace#1}{#4}}
+\def\appentry#1#2#3#4{\dochapentry{\appendixbox{#2}\hskip.7em#1}{#4}}
 
 % Unnumbered chapters.
 \def\unnchapentry#1#2#3#4{\dochapentry{#1}{#4}}
@@ -6304,6 +6514,8 @@ end
 \def\dochapentry#1#2{%
    \penalty-300 \vskip1\baselineskip plus.33\baselineskip minus.25\baselineskip
    \begingroup
+     % Move the page numbers slightly to the right
+     \advance\entryrightmargin by -0.05em
      \chapentryfonts
      \tocentry{#1}{\dopageno\bgroup#2\egroup}%
    \endgroup
@@ -6416,6 +6628,24 @@ end
 % start of the next paragraph will insert \parskip.
 %
 \def\aboveenvbreak{{%
+  % =10000 instead of <10000 because of a special case in \itemzzz and
+  % \sectionheading, q.v.
+  \ifnum \lastpenalty=10000 \else
+    \advance\envskipamount by \parskip
+    \endgraf
+    \ifdim\lastskip<\envskipamount
+      \removelastskip
+      \ifnum\lastpenalty<10000
+        % Penalize breaking before the environment, because preceding text
+        % often leads into it.
+        \penalty100
+      \fi
+      \vskip\envskipamount
+    \fi
+  \fi
+}}
+
+\def\afterenvbreak{{%
   % =10000 instead of <10000 because of a special case in \itemzzz and
   % \sectionheading, q.v.
   \ifnum \lastpenalty=10000 \else
@@ -6431,8 +6661,6 @@ end
   \fi
 }}
 
-\let\afterenvbreak = \aboveenvbreak
-
 % \nonarrowing is a flag.  If "set", @lisp etc don't narrow margins; it will
 % also clear it, so that its embedded environments do the narrowing again.
 \let\nonarrowing=\relax
@@ -6476,7 +6704,7 @@ end
   % collide with the section heading.
   \ifnum\lastpenalty>10000 \vskip\parskip \penalty\lastpenalty \fi
   %
-  \vbox\bgroup
+  \setbox\groupbox=\vbox\bgroup
       \baselineskip=0pt\parskip=0pt\lineskip=0pt
       \carttop
       \hbox\bgroup
@@ -6500,6 +6728,7 @@ end
       \egroup
       \cartbot
   \egroup
+  \addgroupbox
   \checkinserts
 }
 
@@ -6977,7 +7206,7 @@ end
   \temp
 }
 
-% \domakedefun \deffn \deffnx \deffnheader
+% \domakedefun \deffn \deffnx \deffnheader { (defn. of \deffnheader) }
 %
 % Define \deffn and \deffnx, without parameters.
 % \deffnheader has to be defined explicitly.
@@ -7315,34 +7544,44 @@ end
   }
 \fi
 
-\def\scanmacro#1{\begingroup
+\let\aftermacroxxx\relax
+\def\aftermacro{\aftermacroxxx}
+
+% alias because \c means cedilla in @tex or @math
+\let\texinfoc=\c
+
+% Used at the time of macro expansion.
+% Argument is macro body with arguments substituted
+\def\scanmacro#1{%
   \newlinechar`\^^M
   \let\xeatspaces\eatspaces
+  % Reduce doubled backslashes to one
+  \def\xprocessmacroarg{\passargtomacro\eatspaces}%
   %
-  % Undo catcode changes of \startcontents and \doprintindex
-  % When called from @insertcopying or (short)caption, we need active
-  % backslash to get it printed correctly.  Previously, we had
-  % \catcode`\\=\other instead.  We'll see whether a problem appears
-  % with macro expansion.                              --kasal, 19aug04
-  \catcode`\@=0 \catcode`\\=\active \escapechar=`\@
-  %
-  % ... and for \example:
-  \spaceisspace
+  % Process the macro body under the current catcode regime.
+  \scantokens{#1\texinfoc}\aftermacro%
   %
-  % The \empty here causes a following catcode 5 newline to be eaten as
-  % part of reading whitespace after a control sequence.  It does not
-  % eat a catcode 13 newline.  There's no good way to handle the two
-  % cases (untried: maybe e-TeX's \everyeof could help, though plain TeX
-  % would then have different behavior).  See the Macro Details node in
-  % the manual for the workaround we recommend for macros and
-  % line-oriented commands.
-  % 
-  \scantokens{#1\empty}%
-\endgroup}
+  % The \c is to remove the \newlinechar added by \scantokens, and
+  % can be noticed by \parsearg.
+  %   The \aftermacro allows a \comment at the end of the macro definition
+  % to duplicate itself past the final \newlinechar added by \scantokens:
+  % this is used in the definition of \group to comment out a newline.  We
+  % don't do the same for \c to support Texinfo files with macros that ended
+  % with a @c, which should no longer be necessary.
+  %   We avoid surrounding the call to \scantokens with \bgroup and \egroup
+  % to allow macros to open or close groups themselves.
+}
 
 \def\scanexp#1{%
+  \bgroup
+  % Undo catcode changes of \startcontents and \printindex
+  % When called from @insertcopying or (short)caption, we need active
+  % backslash to get it printed correctly.
+  % FIXME: This may not be needed.
+  %\catcode`\@=0 \catcode`\\=\active \escapechar=`\@
   \edef\temp{\noexpand\scanmacro{#1}}%
   \temp
+  \egroup
 }
 
 \newcount\paramno   % Count of parameters
@@ -7408,7 +7647,6 @@ end
   \catcode`\+=\other
   \catcode`\<=\other
   \catcode`\>=\other
-  \catcode`\@=\other
   \catcode`\^=\other
   \catcode`\_=\other
   \catcode`\|=\other
@@ -7418,37 +7656,29 @@ end
 
 \def\scanargctxt{% used for copying and captions, not macros.
   \scanctxt
+  \catcode`\@=\other
   \catcode`\\=\other
   \catcode`\^^M=\other
 }
 
 \def\macrobodyctxt{% used for @macro definitions
   \scanctxt
+  \catcode`\ =\other
+  \catcode`\@=\other
   \catcode`\{=\other
   \catcode`\}=\other
   \catcode`\^^M=\other
   \usembodybackslash
 }
 
-\def\macroargctxt{% used when scanning invocations
+% Used when scanning braced macro arguments.  Note, however, that catcode
+% changes here are ineffectual if the macro invocation was nested inside
+% an argument to another Texinfo command.
+\def\macroargctxt{%
   \scanctxt
-  \catcode`\\=0
+  \catcode`\^^M=\other
+  \catcode`\\=\active
 }
-% why catcode 0 for \ in the above?  To recognize \\ \{ \} as "escapes"
-% for the single characters \ { }.  Thus, we end up with the "commands"
-% that would be written @\ @{ @} in a Texinfo document.
-% 
-% We already have @{ and @}.  For @\, we define it here, and only for
-% this purpose, to produce a typewriter backslash (so, the @\ that we
-% define for @math can't be used with @macro calls):
-%
-\def\\{\normalbackslash}%
-% 
-% We would like to do this for \, too, since that is what makeinfo does.
-% But it is not possible, because Texinfo already has a command @, for a
-% cedilla accent.  Documents must use @comma{} instead.
-%
-% \anythingelse will almost certainly be an error of some kind.
 
 \def\macrolineargctxt{% used for whole-line arguments without braces
   \scanctxt
@@ -7526,59 +7756,36 @@ end
   \fi
 }
 
-% This makes use of the obscure feature that if the last token of a
-% <parameter list> is #, then the preceding argument is delimited by
-% an opening brace, and that opening brace is not consumed.
-% 
+% \getargs -- Parse the arguments to a @macro line.  Set \macname to
+% the name of the macro, and \argl to the braced argument list.
 \def\getargs#1{\getargsxxx#1{}}
 \def\getargsxxx#1#{\getmacname #1 \relax\getmacargs}
 \def\getmacname#1 #2\relax{\macname={#1}}
 \def\getmacargs#1{\def\argl{#1}}
+% This made use of the feature that if the last token of a
+% <parameter list> is #, then the preceding argument is delimited by
+% an opening brace, and that opening brace is not consumed.
 
-% For macro processing make @ a letter so that we can make
-% private-to-Texinfo macro names.
-\edef\texiatcatcode{\the\catcode`\@}
-\catcode `@=11\relax
-
-% Parse the optional {params} list.  Set up \paramno and \paramlist
-% so \defmacro knows what to do.  Define \macarg.BLAH for each BLAH
-% in the params list to some hook where the argument is to be expanded.  If
-% there are less than 10 arguments that hook is to be replaced by ##N where N
+% Parse the optional {params} list to @macro or @rmacro.
+% Set \paramno to the number of arguments,
+% and \paramlist to a parameter text for the macro (e.g. #1,#2,#3 for a
+% three-param macro.)  Define \macarg.BLAH for each BLAH in the params
+% list to some hook where the argument is to be expanded.  If there are
+% less than 10 arguments that hook is to be replaced by ##N where N
 % is the position in that list, that is to say the macro arguments are to be
 % defined `a la TeX in the macro body.  
 %
 % That gets used by \mbodybackslash (above).
 %
-% We need to get `macro parameter char #' into several definitions.
-% The technique used is stolen from LaTeX: let \hash be something
-% unexpandable, insert that wherever you need a #, and then redefine
-% it to # just before using the token list produced.
-%
-% The same technique is used to protect \eatspaces till just before
-% the macro is used.
-%
-% If there are 10 or more arguments, a different technique is used, where the
-% hook remains in the body, and when macro is to be expanded the body is
-% processed again to replace the arguments.
-%
-% In that case, the hook is \the\toks N-1, and we simply set \toks N-1 to the
-% argument N value and then \edef  the body (nothing else will expand because of
-% the catcode regime underwhich the body was input).
+% If there are 10 or more arguments, a different technique is used: see
+% \parsemmanyargdef.
 %
-% If you compile with TeX (not eTeX), and you have macros with 10 or more
-% arguments, no macro can have more than 256 arguments (else error).
-% 
 \def\parsemargdef#1;{%
   \paramno=0\def\paramlist{}%
   \let\hash\relax
-  \let\xeatspaces\relax
+  % \hash is redefined to `#' later to get it into definitions
+  \let\processmacroarg\relax
   \parsemargdefxxx#1,;,%
-  % In case that there are 10 or more arguments we parse again the arguments
-  % list to set new definitions for the \macarg.BLAH macros corresponding to
-  % each BLAH argument. It was anyhow needed to parse already once this list
-  % in order to count the arguments, and as macros with at most 9 arguments
-  % are by far more frequent than macro with 10 or more arguments, defining
-  % twice the \macarg.BLAH macros does not cost too much processing power.
   \ifnum\paramno<10\relax\else
     \paramno0\relax
     \parsemmanyargdef@@#1,;,% 10 or more arguments
@@ -7589,10 +7796,47 @@ end
   \else \let\next=\parsemargdefxxx
     \advance\paramno by 1
     \expandafter\edef\csname macarg.\eatspaces{#1}\endcsname
-        {\xeatspaces{\hash\the\paramno}}%
+        {\processmacroarg{\hash\the\paramno}}%
     \edef\paramlist{\paramlist\hash\the\paramno,}%
   \fi\next}
 
+% \parsemacbody, \parsermacbody
+%
+% Read recursive and nonrecursive macro bodies. (They're different since
+% rec and nonrec macros end differently.)
+% 
+% We are in \macrobodyctxt, and the \xdef causes backslashshes in the macro 
+% body to be transformed.
+% Set \macrobody to the body of the macro, and call \defmacro.
+%
+{\catcode`\ =\other\long\gdef\parsemacbody#1@end macro{%
+\xdef\macrobody{\eatcr{#1}}\endgroup\defmacro}}%
+{\catcode`\ =\other\long\gdef\parsermacbody#1@end rmacro{%
+\xdef\macrobody{\eatcr{#1}}\endgroup\defmacro}}%
+
+% Make @ a letter, so that we can make private-to-Texinfo macro names.
+\edef\texiatcatcode{\the\catcode`\@}
+\catcode `@=11\relax
+
+%%%%%%%%%%%%%% Code for > 10 arguments only   %%%%%%%%%%%%%%%%%%
+
+% If there are 10 or more arguments, a different technique is used, where the
+% hook remains in the body, and when macro is to be expanded the body is
+% processed again to replace the arguments.
+%
+% In that case, the hook is \the\toks N-1, and we simply set \toks N-1 to the
+% argument N value and then \edef the body (nothing else will expand because of
+% the catcode regime under which the body was input).
+%
+% If you compile with TeX (not eTeX), and you have macros with 10 or more
+% arguments, no macro can have more than 256 arguments (else error).
+%
+% In case that there are 10 or more arguments we parse again the arguments
+% list to set new definitions for the \macarg.BLAH macros corresponding to
+% each BLAH argument. It was anyhow needed to parse already once this list
+% in order to count the arguments, and as macros with at most 9 arguments
+% are by far more frequent than macro with 10 or more arguments, defining
+% twice the \macarg.BLAH macros does not cost too much processing power.
 \def\parsemmanyargdef@@#1,{%
   \if#1;\let\next=\relax
   \else 
@@ -7608,15 +7852,6 @@ end
     \advance\paramno by 1\relax
   \fi\next}
 
-% These two commands read recursive and nonrecursive macro bodies.
-% (They're different since rec and nonrec macros end differently.)
-%
-\catcode `\@\texiatcatcode
-\long\def\parsemacbody#1@end macro%
-{\xdef\temp{\eatcr{#1}}\endgroup\defmacro}%
-\long\def\parsermacbody#1@end rmacro%
-{\xdef\temp{\eatcr{#1}}\endgroup\defmacro}%
-\catcode `\@=11\relax
 
 \let\endargs@\relax
 \let\nil@\relax
@@ -7645,9 +7880,6 @@ end
     \getargvals@@
   \fi
 }
-
-% Internal for \getargsval@.
-%  
 \def\getargvals@@{%
   \ifx\paramlist\nilm@
       % Some sanity check needed here that \argvaluelist is also empty.
@@ -7755,16 +7987,7 @@ end
   \next
 }
 
-% Save the token stack pointer into macro #1:
-\def\texisavetoksstackpoint#1{\edef#1{\the\@cclvi}}
-%
-% Restore the token stack pointer from number in macro #1:
-\def\texirestoretoksstackpoint#1{\expandafter\mathchardef
-  \expandafter\@cclvi#1\relax}
-% Variant \newtoks that can be used non-\outer:
-\def\texinonouternewtoks{\alloc@ 5\toks \toksdef \@cclvi}
-
-% Tailing missing arguments are set to empty.
+% Trailing missing arguments are set to empty.
 % 
 \def\setemptyargvalues@{%
   \ifx\paramlist\nilm@
@@ -7795,81 +8018,115 @@ end
    \long\def#2{#4}%
 }
 
-% This defines a Texinfo @macro. There are eight cases: recursive and
-% nonrecursive macros of zero, one, up to nine, and many arguments.
-% Much magic with \expandafter here.
+
+%%%%%%%%%%%%%% End of code for > 10 arguments %%%%%%%%%%%%%%%%%%
+
+
+
+% Remove following spaces at the expansion stage.
+% This works because spaces are discarded before each argument when TeX is 
+% getting the arguments for a macro.
+% This must not be immediately followed by a }.
+\long\def\gobblespaces#1{#1}
+
+% This defines a Texinfo @macro or @rmacro, called by \parsemacbody.
+%    \macrobody has the body of the macro in it, with placeholders for
+% its parameters, looking like "\processmacroarg{\hash 1}".
+%    \paramno is the number of parameters
+%    \paramlist is a TeX parameter text, e.g. "#1,#2,#3,"
+% There are eight cases: recursive and nonrecursive macros of zero, one,
+% up to nine, and many arguments.
 % \xdef is used so that macro definitions will survive the file
-% they're defined in; @include reads the file inside a group.
+% they're defined in: @include reads the file inside a group.
 %
 \def\defmacro{%
   \let\hash=##% convert placeholders to macro parameter chars
-  \ifrecursive
+  \ifnum\paramno=1
+    \def\processmacroarg{\gobblespaces}%
+    % This removes the pair of braces around the argument.  We don't
+    % use \eatspaces, because this can cause ends of lines to be lost
+    % when the argument to \eatspaces is read, leading to line-based
+    % commands like "@itemize" not being read correctly.
+  \else
+    \def\processmacroarg{\xprocessmacroarg}%
+    \let\xprocessmacroarg\relax
+  \fi
+  \ifrecursive   %%%%%%%%%%%%%% Recursive %%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     \ifcase\paramno
     % 0
       \expandafter\xdef\csname\the\macname\endcsname{%
-        \noexpand\scanmacro{\temp}}%
+        \noexpand\scanmacro{\macrobody}}%
     \or % 1
       \expandafter\xdef\csname\the\macname\endcsname{%
          \bgroup
          \noexpand\braceorline
-         \expandafter\noexpand\csname\the\macname xxx\endcsname}%
-      \expandafter\xdef\csname\the\macname xxx\endcsname##1{%
-         \egroup\noexpand\scanmacro{\temp}}%
+         \expandafter\noexpand\csname\the\macname @@@\endcsname}%
+      \expandafter\xdef\csname\the\macname @@@\endcsname##1{%
+         \expandafter\noexpand\csname\the\macname @@@@\endcsname{%
+           \noexpand\gobblespaces##1\empty}%
+           % The \empty is for \gobblespaces in case #1 is empty
+         }%
+      \expandafter\xdef\csname\the\macname @@@@\endcsname##1{%
+         \egroup\noexpand\scanmacro{\macrobody}}%
     \else
       \ifnum\paramno<10\relax % at most 9
         \expandafter\xdef\csname\the\macname\endcsname{%
            \bgroup\noexpand\macroargctxt
-           \noexpand\csname\the\macname xx\endcsname}%
-        \expandafter\xdef\csname\the\macname xx\endcsname##1{%
-            \expandafter\noexpand\csname\the\macname xxx\endcsname ##1,}%
+           \noexpand\csname\the\macname @@\endcsname}%
+        \expandafter\xdef\csname\the\macname @@\endcsname##1{%
+            \expandafter\noexpand\csname\the\macname @@@\endcsname ##1,}%
         \expandafter\expandafter
         \expandafter\xdef
         \expandafter\expandafter
-          \csname\the\macname xxx\endcsname
-            \paramlist{\egroup\noexpand\scanmacro{\temp}}%
+          \csname\the\macname @@@\endcsname
+            \paramlist{\egroup\noexpand\scanmacro{\macrobody}}%
       \else % 10 or more
         \expandafter\xdef\csname\the\macname\endcsname{%
           \noexpand\getargvals@{\the\macname}{\argl}%
         }%    
-        \global\expandafter\let\csname mac.\the\macname .body\endcsname\temp
+        \global\expandafter\let\csname mac.\the\macname .body\endcsname\macrobody
         \global\expandafter\let\csname mac.\the\macname .recurse\endcsname\gobble
       \fi
     \fi
-  \else
+  \else  %%%%%%%%%%%%%%%%%%%%%% Non-recursive %%%%%%%%%%%%%%%%%%%%%%%%%%
     \ifcase\paramno
     % 0
       \expandafter\xdef\csname\the\macname\endcsname{%
-        \noexpand\norecurse{\the\macname}%
-        \noexpand\scanmacro{\temp}\egroup}%
+        \noexpand\scanmacro{\macrobody}}%
     \or % 1
       \expandafter\xdef\csname\the\macname\endcsname{%
          \bgroup
          \noexpand\braceorline
-         \expandafter\noexpand\csname\the\macname xxx\endcsname}%
-      \expandafter\xdef\csname\the\macname xxx\endcsname##1{%
+         \expandafter\noexpand\csname\the\macname @@@\endcsname}%
+      \expandafter\xdef\csname\the\macname @@@\endcsname##1{%
+         \expandafter\noexpand\csname\the\macname @@@@\endcsname{%
+           \noexpand\gobblespaces##1\empty}%
+           % The \empty is for \gobblespaces in case #1 is empty
+         }%
+      \expandafter\xdef\csname\the\macname @@@@\endcsname##1{%
         \egroup
-        \noexpand\norecurse{\the\macname}%
-        \noexpand\scanmacro{\temp}\egroup}%
+        \noexpand\scanmacro{\macrobody}%
+        }%
     \else % at most 9
       \ifnum\paramno<10\relax
         \expandafter\xdef\csname\the\macname\endcsname{%
            \bgroup\noexpand\macroargctxt
-           \expandafter\noexpand\csname\the\macname xx\endcsname}%
-        \expandafter\xdef\csname\the\macname xx\endcsname##1{%
-            \expandafter\noexpand\csname\the\macname xxx\endcsname ##1,}%
+           \expandafter\noexpand\csname\the\macname @@\endcsname}%
+        \expandafter\xdef\csname\the\macname @@\endcsname##1{%
+            \expandafter\noexpand\csname\the\macname @@@\endcsname ##1,}%
         \expandafter\expandafter
         \expandafter\xdef
         \expandafter\expandafter
-        \csname\the\macname xxx\endcsname
+        \csname\the\macname @@@\endcsname
         \paramlist{%
             \egroup
-            \noexpand\norecurse{\the\macname}%
-            \noexpand\scanmacro{\temp}\egroup}%
+            \noexpand\scanmacro{\macrobody}%
+            }%
       \else % 10 or more:
         \expandafter\xdef\csname\the\macname\endcsname{%
           \noexpand\getargvals@{\the\macname}{\argl}%
         }%
-        \global\expandafter\let\csname mac.\the\macname .body\endcsname\temp
+        \global\expandafter\let\csname mac.\the\macname .body\endcsname\macrobody
         \global\expandafter\let\csname mac.\the\macname .recurse\endcsname\norecurse
       \fi
     \fi
@@ -7879,16 +8136,86 @@ end
 
 \def\norecurse#1{\bgroup\cslet{#1}{macsave.#1}}
 
+
+{\catcode`\@=0 \catcode`\\=13
+@catcode`@_=11
+
+% Call #1 with a list of tokens #2, with any doubled backslashes in #2
+% compressed to one.
+@gdef@passargtomacro#1#2{%
+  @def@the_macro{#1}%
+  @def@pending_backslash{}%
+  @def@finish{@finish}%
+  @def@arg_result{}%
+  @let@next_token=@relax
+  @add_segment#2\@finish\%
+}
+
+% Input stream is just after a backslash.  If the next token is not a
+% backslash, process the rest of the argument; otherwise, remove the next
+% token.
+@gdef@look_ahead{%
+  @futurelet@next_token@look_aheadzzz}
+@gdef@look_aheadzzz{%
+  @ifx@next_token\%
+   @let@next=@gobble_and_check_finish 
+  @else
+   @let@next=@add_segment
+  @fi@next
+}
+
+% Double backslash found.  Add a single backslash here.
+@gdef@gobble_and_check_finish#1{%
+  @add_the_backslash
+  @def@pending_backslash{}%
+  @futurelet@next_token@add_segment
+}
+
+% append a backslash to \arg_result
+@gdef@add_the_backslash{%
+  @expandafter@gdef@expandafter@arg_result@expandafter{@arg_result\}%
+}
+
+% Input stream is either at the start of the argument, or just after a 
+% backslash sequence, either a lone backslash, or a doubled backslash.  
+% \next_token contains the first token in the input stream: if it is \finish, 
+% finish; otherwise, append to \arg_result the segment of the argument up until
+% the next backslash.  \pending_backslash contains a backslash to represent
+% a backslash just before the start of the input stream that has not been
+% added to \arg_result.
+@gdef@add_segment#1\{%
+@ifx@next_token@finish
+  @let@next=@call_the_macro%
+@else
+  @let@next=@look_ahead
+  %
+  % append to @arg_result
+  % token list registers might be better
+  @expandafter@expandafter@expandafter@gdef
+  @expandafter@expandafter@expandafter@arg_result
+  @expandafter@expandafter@expandafter{%
+  @expandafter@arg_result
+  @pending_backslash#1}%
+  @def@pending_backslash{\}%
+@fi@next}
+
+@gdef@call_the_macro{@expandafter@the_macro@expandafter{@arg_result}}
+
+}
+
 % \braceorline MAC is used for a one-argument macro MAC.  It checks
 % whether the next non-whitespace character is a {.  It sets the context
 % for reading the argument (slightly different in the two cases).  Then,
-% to read the argument, in the whole-line case, it then calls the
-% regular \parsearg MAC; in the lbrace case, it just calls MAC itself.
+% to read the argument, in the whole-line case, it then calls the regular
+% \parsearg MAC; in the lbrace case, it calls \passargtomacro MAC.
 % 
 \def\braceorline#1{\let\macnamexxx=#1\futurelet\nchar\braceorlinexxx}
 \def\braceorlinexxx{%
-  \ifx\nchar\bgroup\macroargctxt
-  \else\macrolineargctxt\expandafter\parsearg
+  \ifx\nchar\bgroup
+    \macroargctxt
+    \expandafter\passargtomacro
+  \else
+    \macrolineargctxt\expandafter\parsearg
   \fi \macnamexxx}
 
 
@@ -7970,6 +8297,7 @@ end
   \pdfmkdest{#1}%
   \iflinks
     {%
+      \requireauxfile
       \atdummies  % preserve commands, but don't expand them
       \edef\writexrdef##1##2{%
        \write\auxfile{@xrdef{#1-% #1 of \setref, expanded by the \edef
@@ -8009,9 +8337,12 @@ end
 % node name, #4 the name of the Info file, #5 the name of the printed
 % manual.  All but the node name can be omitted.
 %
-\def\pxref#1{\putwordsee{} \xrefX[#1,,,,,,,]}
-\def\xref#1{\putwordSee{} \xrefX[#1,,,,,,,]}
-\def\ref#1{\xrefX[#1,,,,,,,]}
+\def\pxref{\putwordsee{} \xrefXX}
+\def\xref{\putwordSee{} \xrefXX}
+\def\ref{\xrefXX}
+
+\def\xrefXX#1{\def\xrefXXarg{#1}\futurelet\tokenafterxref\xrefXXX}
+\def\xrefXXX{\expandafter\xrefX\expandafter[\xrefXXarg,,,,,,,]}
 %
 \newbox\toprefbox
 \newbox\printedrefnamebox
@@ -8155,6 +8486,12 @@ end
       %
       % output the `page 3'.
       \turnoffactive \putwordpage\tie\refx{#1-pg}{}%
+           \ifx,\tokenafterxref
+      \else\ifx.\tokenafterxref
+      \else\ifx;\tokenafterxref
+      \else\ifx)\tokenafterxref
+      \else,% add a , if xref not followed by punctuation
+      \fi\fi\fi\fi
     \fi\fi
   \fi
   \endlink
@@ -8225,6 +8562,7 @@ end
 % If its value is nonempty, SUFFIX is output afterward.
 %
 \def\refx#1#2{%
+  \requireauxfile
   {%
     \indexnofonts
     \otherbackslash
@@ -8288,6 +8626,23 @@ end
   \fi
 }
 
+% If working on a large document in chapters, it is convenient to
+% be able to disable indexing, cross-referencing, and contents, for test runs.
+% This is done with @novalidate at the beginning of the file.
+%
+\newif\iflinks \linkstrue % by default we want the aux files.
+\let\novalidate = \linksfalse
+
+% Used when writing to the aux file, or when using data from it.
+\def\requireauxfile{%
+  \iflinks
+    \tryauxfile
+    % Open the new aux file.  TeX will close it automatically at exit.
+    \immediate\openout\auxfile=\jobname.aux
+  \fi
+  \global\let\requireauxfile=\relax   % Only do this once.
+}
+
 % Read the last existing aux file, if any.  No error if none exists.
 %
 \def\tryauxfile{%
@@ -8761,6 +9116,7 @@ end
       % \floatlabel-lof.  Besides \floatident, we include the short
       % caption if specified, else the full caption if specified, else nothing.
       {%
+        \requireauxfile
         \atdummies
         %
         % since we read the caption text in the macro world, where ^^M
@@ -10186,8 +10542,8 @@ directory should work if nowhere else does.}
 \def\activedoublequote{{\tt\char34}}
 \let"=\activedoublequote
 \catcode`\~=\active \def\activetilde{{\tt\char126}} \let~ = \activetilde
-\chardef\hat=`\^
-\catcode`\^=\active \def\activehat{{\tt \hat}} \let^ = \activehat
+\chardef\hatchar=`\^
+\catcode`\^=\active \def\activehat{{\tt \hatchar}} \let^ = \activehat
 
 \catcode`\_=\active
 \def_{\ifusingtt\normalunderscore\_}
@@ -10204,6 +10560,8 @@ directory should work if nowhere else does.}
 \catcode`\>=\active \def\activegtr{{\tt \gtr}}\let> = \activegtr
 \catcode`\+=\active \def+{{\tt \char 43}}
 \catcode`\$=\active \def${\ifusingit{{\sl\$}}\normaldollar}%$ font-lock fix
+\catcode`\-=\active \let-=\normaldash
+
 
 % used for headline/footline in the output routine, in case the page
 % breaks in the middle of an @tex block.
@@ -10218,12 +10576,6 @@ directory should work if nowhere else does.}
   % in principle, all other definitions in \tex have to be undone too.
 }
 
-% If a .fmt file is being used, characters that might appear in a file
-% name cannot be active until we have parsed the command line.
-% So turn them off again, and have \everyjob (or @setfilename) turn them on.
-% \otherifyactive is called near the end of this file.
-\def\otherifyactive{\catcode`+=\other \catcode`\_=\other}
-
 % Used sometimes to turn off (effectively) the active characters even after
 % parsing them.
 \def\turnoffactive{%
@@ -10242,23 +10594,22 @@ directory should work if nowhere else does.}
 % \doublebackslash is two of them (for the pdf outlines).
 {\catcode`\\=\other @gdef@realbackslash{\} @gdef@doublebackslash{\\}}
 
-% In texinfo, backslash is an active character; it prints the backslash
+% In Texinfo, backslash is an active character; it prints the backslash
 % in fixed width font.
 \catcode`\\=\active  % @ for escape char from now on.
 
-% The story here is that in math mode, the \char of \backslashcurfont
-% ends up printing the roman \ from the math symbol font (because \char
-% in math mode uses the \mathcode, and plain.tex sets
-% \mathcode`\\="026E).  It seems better for @backslashchar{} to always
-% print a typewriter backslash, hence we use an explicit \mathchar,
+% Print a typewriter backslash.  For math mode, we can't simply use
+% \backslashcurfont: the story here is that in math mode, the \char
+% of \backslashcurfont ends up printing the roman \ from the math symbol
+% font (because \char in math mode uses the \mathcode, and plain.tex
+% sets \mathcode`\\="026E).  Hence we use an explicit \mathchar,
 % which is the decimal equivalent of "715c (class 7, e.g., use \fam;
 % ignored family value; char position "5C).  We can't use " for the
 % usual hex value because it has already been made active.
-@def@normalbackslash{{@tt @ifmmode @mathchar29020 @else @backslashcurfont @fi}}
-@let@backslashchar = @normalbackslash % @backslashchar{} is for user documents.
 
-% On startup, @fixbackslash assigns:
-%  @let \ = @normalbackslash
+@def@ttbackslash{{@tt @ifmmode @mathchar29020 @else @backslashcurfont @fi}}
+@let@backslashchar = @ttbackslash % @backslashchar{} is for user documents.
+
 % \rawbackslash defines an active \ to do \backslashcurfont.
 % \otherbackslash defines an active \ to be a literal `\' character with
 % catcode other.  We switch back and forth between these.
@@ -10266,8 +10617,7 @@ directory should work if nowhere else does.}
 @gdef@otherbackslash{@let\=@realbackslash}
 
 % Same as @turnoffactive except outputs \ as {\tt\char`\\} instead of
-% the literal character `\'.  Also revert - to its normal character, in
-% case the active - from code has slipped in.
+% the literal character `\'.
 %
 {@catcode`- = @active
  @gdef@normalturnoffactive{%
@@ -10278,40 +10628,66 @@ directory should work if nowhere else does.}
    @let+=@normalplus
    @let<=@normalless
    @let>=@normalgreater
-   @let\=@normalbackslash
    @let^=@normalcaret
    @let_=@normalunderscore
    @let|=@normalverticalbar
    @let~=@normaltilde
+   @let\=@ttbackslash
    @markupsetuplqdefault
    @markupsetuprqdefault
    @unsepspaces
  }
 }
 
-% Make _ and + \other characters, temporarily.
-% This is canceled by @fixbackslash.
-@otherifyactive
+% If a .fmt file is being used, characters that might appear in a file
+% name cannot be active until we have parsed the command line.
+% So turn them off again, and have @fixbackslash turn them back on.
+@catcode`+=@other @catcode`@_=@other
 
+% \enablebackslashhack - allow file to begin `\input texinfo'
+%
 % If a .fmt file is being used, we don't want the `\input texinfo' to show up.
 % That is what \eatinput is for; after that, the `\' should revert to printing
 % a backslash.
-%
-@gdef@eatinput input texinfo{@fixbackslash}
-@global@let\ = @eatinput
+% If the file did not have a `\input texinfo', then it is turned off after
+% the first line; otherwise the first `\' in the file would cause an error.
+% This is used on the very last line of this file, texinfo.tex.
+% We also use @c to call @fixbackslash, in case ends of lines are hidden.
+{
+@catcode`@^=7
+@catcode`@^^M=13@gdef@enablebackslashhack{%
+  @global@let\ = @eatinput%
+  @catcode`@^^M=13%
+  @def@c{@fixbackslash@c}%
+  @def ^^M{@let^^M@secondlinenl}%
+  @gdef @secondlinenl{@let^^M@thirdlinenl}%
+  @gdef @thirdlinenl{@fixbackslash}%
+}}
+
+{@catcode`@^=7 @catcode`@^^M=13%
+@gdef@eatinput input texinfo#1^^M{@fixbackslash}}
 
-% On the other hand, perhaps the file did not have a `\input texinfo'. Then
-% the first `\' in the file would cause an error. This macro tries to fix
-% that, assuming it is called before the first `\' could plausibly occur.
-% Also turn back on active characters that might appear in the input
-% file name, in case not using a pre-dumped format.
-%
 @gdef@fixbackslash{%
-  @ifx\@eatinput @let\ = @normalbackslash @fi
+  @ifx\@eatinput @let\ = @ttbackslash @fi
+  @catcode13=5 % regular end of line
+  @let@c=@texinfoc
+  % Also turn back on active characters that might appear in the input
+  % file name, in case not using a pre-dumped format.
   @catcode`+=@active
   @catcode`@_=@active
+  %
+  % If texinfo.cnf is present on the system, read it.
+  % Useful for site-wide @afourpaper, etc.  This macro, @fixbackslash, gets
+  % called at the beginning of every Texinfo file.  Not opening texinfo.cnf
+  % directly in this file, texinfo.tex, makes it possible to make a format
+  % file for Texinfo.
+  %
+  @openin 1 texinfo.cnf
+  @ifeof 1 @else @input texinfo.cnf @fi
+  @closein 1
 }
 
+
 % Say @foo, not \foo, in error messages.
 @escapechar = `@@
 
@@ -10351,3 +10727,4 @@ directory should work if nowhere else does.}
 @ignore
    arch-tag: e1b36e32-c96e-4135-a41a-0b2efa2ea115
 @end ignore
+@enablebackslashhack
index 87c7c8054f1eb6f923ba396539873f5cbb674b15..ac2e74ed50aad438ae8b55bb2687e0e520714fbe 100644 (file)
@@ -1,4 +1,4 @@
-\input texinfo   @c -*-texinfo-*-
+\input texinfo   @c -*- mode: texinfo; coding: utf-8 -*-
 @setfilename ../../info/tramp.info
 @c %**start of header
 @settitle TRAMP User Manual
index d94b19f77b60c346dcaa436f795af1911366c478..95fe5eabc33f1cbf92ec2fdd475602e397f56356 100644 (file)
@@ -593,7 +593,7 @@ sending a message to @samp{foo@@bar.com}.  The ``retrieval method''
 for such URLs is to open a mail composition buffer in which the
 appropriate content (e.g., the recipient address) has been filled in.
 
-  As defined in RFC 2368, a @code{mailto} URL has the form
+  As defined in RFC 6068, a @code{mailto} URL can have the form
 
 @example
 @samp{mailto:@var{mailbox}[?@var{header}=@var{contents}[&@var{header}=@var{contents}]]}
index cf08cf8a647ec3a9488561465fded2f7f46485bf..f3adef4afa289373427b2e86ec4af217f05f494d 100644 (file)
@@ -3479,7 +3479,7 @@ Peter Stephenson: wrote vcursor.el
 
 Peter Tury: changed org.texi
 
-Peter von der Ahe: changed gnus-ems.el
+Peter von der Ahé: changed gnus-ems.el
 
 Peter Whaite: changed data.c
 
index 8a08a065ba98a527cbeb0a4f81a659ad9273bd73..e823905e8d33d1351328d5af06486402b2d77be2 100644 (file)
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -412,7 +412,6 @@ the old behavior -- *shell* buffer displays in current window -- use
 (add-to-list 'display-buffer-alist
      '("^\\*shell\\*$" . (display-buffer-same-window))).
 
-
 ** EIEIO
 +++
 *** The `:protection' slot option is not obeyed any more.
@@ -461,6 +460,11 @@ typing RET.
 *** If `quick-calc' is called with a prefix argument, insert the
 result of the calculation into the current buffer.
 
++++
+** In Edebug, you can now set the initial mode with C-x C-a C-m.  With
+this you can tell Edebug not to stop at the start of the first
+instrumented function.
+
 ** ElDoc
 *** New minor mode `global-eldoc-mode'
 *** `eldoc-documentation-function' now defaults to `ignore'
@@ -657,11 +661,17 @@ plist will contain a :peer element that has the output of
 
 ** Tramp
 
++++
 *** New connection method "nc", which allows to access dumb busyboxes.
 
++++
 *** Method-specific parameters can be overwritten now with variable
 `tramp-connection-properties'.
 
+---
+*** Handler for `file-notify-valid-p' for remote machines that support
+filesystem notifications.
+
 ** SQL mode
 
 *** New user variable `sql-default-directory' enables remote
@@ -822,9 +832,15 @@ make the new option `eshell-destroy-buffer-when-process-dies' non-nil.
 ** tar-mode: new `tar-new-entry' command, allowing for new members to
 be added to the archive.
 
+---
 ** Autorevert: dired buffers are also auto-reverted via file
 notifications, if Emacs is compiled with file notification support.
 
++++
+** File Notifications: the new function `file-notify-valid-p' checks,
+whether a file notification descriptor still corresponds to an
+activate watch.
+
 ** Obsolete packages
 
 ---
@@ -856,6 +872,10 @@ a typographically-correct documents.
 \f
 * Incompatible Lisp Changes in Emacs 25.1
 
+** `syntax-begin-function' is declared obsolete.
+Removed font-lock-beginning-of-syntax-function and the SYNTAX-BEGIN
+slot in font-lock-defaults.
+
 +++
 ** `package-initialize' now sets `package-enable-at-startup' to nil if
 called during startup.  Users who call this function in their init
@@ -977,6 +997,9 @@ be updated accordingly.
 \f
 * Lisp Changes in Emacs 25.1
 
+** syntax-propertize is now automatically called on-demand during forward
+parsing functions like `forward-sexp'.
+
 ** New hooks prefix-command-echo-keystrokes-functions and
 prefix-command-preserve-state-hook, to allow the definition of prefix
 commands other than the predefined C-u.
@@ -1125,8 +1148,7 @@ integers.
 of the Emacs process to binary I/O mode.
 
 ** ASCII approximations to curved quotes are put in standard-display-table
-if the locale cannot display curved quotes, or if text-quoting-style
-initially specifies a preference for ASCII.
+if the terminal cannot display curved quotes.
 
 ** Standard output and error streams now transliterate characters via
 standard-display-table, and encode output using locale-coding-system.
index d07e7cf9df7938116f36997f1ce6320368771e2f..1b4831809e2d9ae1b5080872734e6c868912a177 100644 (file)
@@ -2036,6 +2036,14 @@ XKeymacs Version 3.47, deactivating XKeymacs when Emacs is active is
 not enough to avoid its messing with the keyboard input.  Exiting
 XKeymacs completely is reported to solve the problem.
 
+** Pasting from Windows clipboard into Emacs doesn't work.
+
+This was reported to be the result of an anti-virus software blocking
+the clipboard-related operations when a Web browser is open, for
+security reasons.  The solution is to close the Web browser while
+working in Emacs, or to add emacs.exe to the list of applications that
+are allowed to use the clipboard when the Web browser is open.
+
 ** Windows 95 and networking.
 
 To support server sockets, Emacs loads ws2_32.dll.  If this file is
index 5d6cbd4f0c047b3a43b0fd062f34ed5205ea033f..cdcb666df61706a41cdfc212c3472754172bbd2b 100644 (file)
@@ -29,8 +29,8 @@
 # The Emacs executable must have debugging symbols for this to work.
 # But you never strip Emacs, right?
 #
-# The main commands of interest are `ybuffer-list', `yfile-buffers',
-# `ysave-buffer', and `ybuffer-contents'.  The `y' prefix avoids any
+# The main commands of interest are 'ybuffer-list', 'yfile-buffers',
+# 'ysave-buffer', and 'ybuffer-contents'.  The 'y' prefix avoids any
 # namespace collisions with emacs/src/.gdbinit.
 
 # Since the internal data structures in Emacs occasionally from time to
@@ -129,7 +129,7 @@ end
 document ybuffer-list
   Display a list of buffer names, sizes, and other attributes.
   The buffer number in the first column is used as an argument
-  to some other emacs-buffer recovery commands, e.g. `ysave-buffer'.
+  to some other emacs-buffer recovery commands, e.g. 'ysave-buffer'.
 end
 
 define yfile-buffers
@@ -138,7 +138,7 @@ define yfile-buffers
 end
 document yfile-buffers
   Display a list of buffers which are associated with files.
-  This is like `ybuffer-list', but only buffers that were visiting files
+  This is like 'ybuffer-list', but only buffers that were visiting files
   are displayed.
 end
 
@@ -165,7 +165,7 @@ define yset-buffer
 end
 document yset-buffer
   Set current buffer (for other emacs-buffer recovery commands) to the ARG'th
-  buffer as displayed by `ybuffer-list'.
+  buffer as displayed by 'ybuffer-list'.
 end
 
 define yget-buffer-pointers
@@ -184,9 +184,9 @@ define yget-buffer-pointers
 end
 document yget-buffer-pointers
   Update convenience variables with address pointers for the ARG'th buffer
-  as displayed by `ybuffer-list'.
+  as displayed by 'ybuffer-list'.
 
-  This also sets the current buffer using `yset-buffer' (which see).
+  This also sets the current buffer using 'yset-buffer' (which see).
 end
 
 define yget-current-buffer-name
@@ -220,11 +220,11 @@ define ydump-buffer
   end
 end
 document ydump-buffer
-  Write contents of buffer N (as numbered according to `ybuffer-list') to
+  Write contents of buffer N (as numbered according to 'ybuffer-list') to
   file FILE.
 
-  This is mainly used as an internal subroutine for `ysave-buffer' and
-  `ybuffer-contents', which see.
+  This is mainly used as an internal subroutine for 'ysave-buffer' and
+  'ybuffer-contents', which see.
 end
 
 define ysave-buffer
@@ -242,7 +242,7 @@ define ysave-buffer
   end
 end
 document ysave-buffer
-  Save contents of buffer N (as numbered according to `ybuffer-list') to
+  Save contents of buffer N (as numbered according to 'ybuffer-list') to
   file FILE.
 end
 
@@ -258,7 +258,7 @@ define ybuffer-contents
   end
 end
 document ybuffer-contents
-  Write contents of buffer N (numbered according to `ybuffer-list') to stdout.
+  Write contents of buffer N (numbered according to 'ybuffer-list') to stdout.
 end
 
 # local variables:
index 005754b0a9e28087f99ff622374013ee9563cac6..05d724149b6f38f587c49c9fdcbf000f7b75dadc 100644 (file)
 
 Thanks to jan.h.d@swipnet.se for the help.
 
+Alternatively, run 'convert' from ImageMagick:
+
+  convert file.xpm file.pbm
+
 
 COPYRIGHT AND LICENSE INFORMATION FOR IMAGE FILES
 
@@ -97,3 +101,6 @@ Emacs images and their source in the GNOME icons stock/ directory:
 The images in the low-color/ subdirectory are low-color versions of
 the files of the same name in this directory, and are subject to the
 same conditions.
+
+The *.pbm files were generally converted from *.xpm by running GIMP or
+ImageMagick's 'convert'.
diff --git a/etc/images/connect.pbm b/etc/images/connect.pbm
new file mode 100644 (file)
index 0000000..f7f72ba
Binary files /dev/null and b/etc/images/connect.pbm differ
diff --git a/etc/images/custom/down-pushed.pbm b/etc/images/custom/down-pushed.pbm
new file mode 100644 (file)
index 0000000..12c2374
--- /dev/null
@@ -0,0 +1,3 @@
+P4
+8 12
+ÿþýýûû÷÷ÿÿÿÿ
\ No newline at end of file
diff --git a/etc/images/custom/down.pbm b/etc/images/custom/down.pbm
new file mode 100644 (file)
index 0000000..0878505
--- /dev/null
@@ -0,0 +1,3 @@
+P4
+9 9
+ÿ\80Á\80Á\80ã\80ã\80÷\80÷\80ÿ\80ÿ\80
\ No newline at end of file
diff --git a/etc/images/custom/right-pushed.pbm b/etc/images/custom/right-pushed.pbm
new file mode 100644 (file)
index 0000000..f984f13
--- /dev/null
@@ -0,0 +1,3 @@
+P4
+8 12
+ÿÿÿþüóÏÿÿÿÿÿ
\ No newline at end of file
diff --git a/etc/images/custom/right.pbm b/etc/images/custom/right.pbm
new file mode 100644 (file)
index 0000000..1798fac
--- /dev/null
@@ -0,0 +1,3 @@
+P4
+9 9
+ÿ\80ÿ\80\9f\80\87\80\81\80\87\80\9f\80ÿ\80ÿ\80
\ No newline at end of file
diff --git a/etc/images/describe.pbm b/etc/images/describe.pbm
new file mode 100644 (file)
index 0000000..952f348
Binary files /dev/null and b/etc/images/describe.pbm differ
diff --git a/etc/images/disconnect.pbm b/etc/images/disconnect.pbm
new file mode 100644 (file)
index 0000000..8da87e0
Binary files /dev/null and b/etc/images/disconnect.pbm differ
diff --git a/etc/images/ezimage/bits.pbm b/etc/images/ezimage/bits.pbm
new file mode 100644 (file)
index 0000000..f8cb891
--- /dev/null
@@ -0,0 +1,3 @@
+P4
+15 15
+ÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþ
\ No newline at end of file
diff --git a/etc/images/ezimage/bitsbang.pbm b/etc/images/ezimage/bitsbang.pbm
new file mode 100644 (file)
index 0000000..95653a4
--- /dev/null
@@ -0,0 +1,3 @@
+P4
+15 15
+ÿþóþóþùþùþùþùþüþüþüþÿþþ~þ~ÿþÿþ
\ No newline at end of file
diff --git a/etc/images/ezimage/box-minus.pbm b/etc/images/ezimage/box-minus.pbm
new file mode 100644 (file)
index 0000000..ae1654e
--- /dev/null
@@ -0,0 +1,3 @@
+P4
+20 15
+ÿÿðÿÿðÿÿðÿÿðÿÿðÿÿðÿÿðÿÿðÿÿðÿÿðÿÿðÿÿðÿÿðÿÿðÿÿð
\ No newline at end of file
diff --git a/etc/images/ezimage/box-plus.pbm b/etc/images/ezimage/box-plus.pbm
new file mode 100644 (file)
index 0000000..ae1654e
--- /dev/null
@@ -0,0 +1,3 @@
+P4
+20 15
+ÿÿðÿÿðÿÿðÿÿðÿÿðÿÿðÿÿðÿÿðÿÿðÿÿðÿÿðÿÿðÿÿðÿÿðÿÿð
\ No newline at end of file
diff --git a/etc/images/ezimage/box.pbm b/etc/images/ezimage/box.pbm
new file mode 100644 (file)
index 0000000..bcfcc4c
Binary files /dev/null and b/etc/images/ezimage/box.pbm differ
diff --git a/etc/images/ezimage/checkmark.pbm b/etc/images/ezimage/checkmark.pbm
new file mode 100644 (file)
index 0000000..f8cb891
--- /dev/null
@@ -0,0 +1,3 @@
+P4
+15 15
+ÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþ
\ No newline at end of file
diff --git a/etc/images/ezimage/dir-minus.pbm b/etc/images/ezimage/dir-minus.pbm
new file mode 100644 (file)
index 0000000..327bf93
Binary files /dev/null and b/etc/images/ezimage/dir-minus.pbm differ
diff --git a/etc/images/ezimage/dir-plus.pbm b/etc/images/ezimage/dir-plus.pbm
new file mode 100644 (file)
index 0000000..0463e45
Binary files /dev/null and b/etc/images/ezimage/dir-plus.pbm differ
diff --git a/etc/images/ezimage/dir.pbm b/etc/images/ezimage/dir.pbm
new file mode 100644 (file)
index 0000000..3f0a1d8
Binary files /dev/null and b/etc/images/ezimage/dir.pbm differ
diff --git a/etc/images/ezimage/doc-minus.pbm b/etc/images/ezimage/doc-minus.pbm
new file mode 100644 (file)
index 0000000..979a4a9
--- /dev/null
@@ -0,0 +1,3 @@
+P4
+15 15
+ÿþÿþÿþÿöÿöøfÿîÿÎÿÞÇ\9eÀ>à>þ~ÿþÿþ
\ No newline at end of file
diff --git a/etc/images/ezimage/doc-plus.pbm b/etc/images/ezimage/doc-plus.pbm
new file mode 100644 (file)
index 0000000..c0a9be0
--- /dev/null
@@ -0,0 +1,3 @@
+P4
+15 15
+ÿþÿþÿþþöþöø&þîþÎÿÞÇ\9eÀ>à>þ~ÿþÿþ
\ No newline at end of file
diff --git a/etc/images/ezimage/doc.pbm b/etc/images/ezimage/doc.pbm
new file mode 100644 (file)
index 0000000..240ca75
--- /dev/null
@@ -0,0 +1,3 @@
+P4
+15 15
+ÿþÿþÿþÿöÿöÿæÿîÿÎÿÞÇ\9eÀ>À>þ~ÿþÿþ
\ No newline at end of file
diff --git a/etc/images/ezimage/info.pbm b/etc/images/ezimage/info.pbm
new file mode 100644 (file)
index 0000000..1adec0e
--- /dev/null
@@ -0,0 +1,3 @@
+P4
+10 15
+óÀÎÀ»@¿À¿ÀcÀ{À{À{À»À»À À¿ÀßÀÿÀ
\ No newline at end of file
diff --git a/etc/images/ezimage/key.pbm b/etc/images/ezimage/key.pbm
new file mode 100644 (file)
index 0000000..6556d87
--- /dev/null
@@ -0,0 +1,3 @@
+P4
+16 16
+ÿÿÿÿø\1fù\9fø\1fø\1fø\1fü?þ\7fþ?þ\7fþ\7fþ?þ\7fÿÿÿÿ
\ No newline at end of file
diff --git a/etc/images/ezimage/label.pbm b/etc/images/ezimage/label.pbm
new file mode 100644 (file)
index 0000000..5cdc80e
--- /dev/null
@@ -0,0 +1,3 @@
+P4
+10 16
+ÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀ
\ No newline at end of file
diff --git a/etc/images/ezimage/lock.pbm b/etc/images/ezimage/lock.pbm
new file mode 100644 (file)
index 0000000..24c3869
--- /dev/null
@@ -0,0 +1,3 @@
+P4
+16 16
+ÿÿÿÿÿÿÿÿÿÿÿÿø\að\ 3ð\ 3ñãðÃð\ 3ðÃð\ 3ÿÿÿÿ
\ No newline at end of file
diff --git a/etc/images/ezimage/mail.pbm b/etc/images/ezimage/mail.pbm
new file mode 100644 (file)
index 0000000..1969cc8
Binary files /dev/null and b/etc/images/ezimage/mail.pbm differ
diff --git a/etc/images/ezimage/page-minus.pbm b/etc/images/ezimage/page-minus.pbm
new file mode 100644 (file)
index 0000000..0eff2bc
Binary files /dev/null and b/etc/images/ezimage/page-minus.pbm differ
diff --git a/etc/images/ezimage/page-plus.pbm b/etc/images/ezimage/page-plus.pbm
new file mode 100644 (file)
index 0000000..cb4036b
Binary files /dev/null and b/etc/images/ezimage/page-plus.pbm differ
diff --git a/etc/images/ezimage/page.pbm b/etc/images/ezimage/page.pbm
new file mode 100644 (file)
index 0000000..ea4c5d6
Binary files /dev/null and b/etc/images/ezimage/page.pbm differ
diff --git a/etc/images/ezimage/tag-gt.pbm b/etc/images/ezimage/tag-gt.pbm
new file mode 100644 (file)
index 0000000..7714ea4
--- /dev/null
@@ -0,0 +1,3 @@
+P4
+20 15
+ÿÿðÿÿðÿÿðÿÿðð`0àp0Àx0Ø|0Ø~0À|0àx0ðp0ÿÿðÿÿðÿÿð
\ No newline at end of file
diff --git a/etc/images/ezimage/tag-minus.pbm b/etc/images/ezimage/tag-minus.pbm
new file mode 100644 (file)
index 0000000..5b2053e
Binary files /dev/null and b/etc/images/ezimage/tag-minus.pbm differ
diff --git a/etc/images/ezimage/tag-plus.pbm b/etc/images/ezimage/tag-plus.pbm
new file mode 100644 (file)
index 0000000..e75a0e6
Binary files /dev/null and b/etc/images/ezimage/tag-plus.pbm differ
diff --git a/etc/images/ezimage/tag-type.pbm b/etc/images/ezimage/tag-type.pbm
new file mode 100644 (file)
index 0000000..0eb893c
Binary files /dev/null and b/etc/images/ezimage/tag-type.pbm differ
diff --git a/etc/images/ezimage/tag-v.pbm b/etc/images/ezimage/tag-v.pbm
new file mode 100644 (file)
index 0000000..b7fea05
Binary files /dev/null and b/etc/images/ezimage/tag-v.pbm differ
diff --git a/etc/images/ezimage/tag.pbm b/etc/images/ezimage/tag.pbm
new file mode 100644 (file)
index 0000000..3f0ff20
Binary files /dev/null and b/etc/images/ezimage/tag.pbm differ
diff --git a/etc/images/ezimage/unlock.pbm b/etc/images/ezimage/unlock.pbm
new file mode 100644 (file)
index 0000000..24c3869
--- /dev/null
@@ -0,0 +1,3 @@
+P4
+16 16
+ÿÿÿÿÿÿÿÿÿÿÿÿø\að\ 3ð\ 3ñãðÃð\ 3ðÃð\ 3ÿÿÿÿ
\ No newline at end of file
diff --git a/etc/images/gnus/important.pbm b/etc/images/gnus/important.pbm
new file mode 100644 (file)
index 0000000..7139ff2
Binary files /dev/null and b/etc/images/gnus/important.pbm differ
diff --git a/etc/images/gnus/mail-send.pbm b/etc/images/gnus/mail-send.pbm
new file mode 100644 (file)
index 0000000..cfff708
--- /dev/null
@@ -0,0 +1,3 @@
+P4
+24 24
+ÿÿÿÿÿÿÿÿÿÿüÿÿÀÿø\ 1ÿì\ 3¿÷\ 3?ñç?ð=ßø@\7føÀ?ø\80\81ÿý\ fÿÿ\7fÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþ\1fÿÿÿÿÿÿ
\ No newline at end of file
diff --git a/etc/images/gnus/receipt.pbm b/etc/images/gnus/receipt.pbm
new file mode 100644 (file)
index 0000000..5595239
--- /dev/null
@@ -0,0 +1,3 @@
+P4
+24 24
+ÿÿÿÿÿÿÿÿçÿÿ÷ÿÿûÿÿûÿÿçÿÿ\9fÿþ\7fÿÿÇÿÿ¿ÿÿ\7fÿøÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
\ No newline at end of file
diff --git a/etc/images/gnus/toggle-subscription.pbm b/etc/images/gnus/toggle-subscription.pbm
new file mode 100644 (file)
index 0000000..b990dcc
Binary files /dev/null and b/etc/images/gnus/toggle-subscription.pbm differ
diff --git a/etc/images/gnus/unimportant.pbm b/etc/images/gnus/unimportant.pbm
new file mode 100644 (file)
index 0000000..26a8721
Binary files /dev/null and b/etc/images/gnus/unimportant.pbm differ
diff --git a/etc/images/gud/all.pbm b/etc/images/gud/all.pbm
new file mode 100644 (file)
index 0000000..5258dce
Binary files /dev/null and b/etc/images/gud/all.pbm differ
diff --git a/etc/images/gud/rcont.pbm b/etc/images/gud/rcont.pbm
new file mode 100644 (file)
index 0000000..11e9a4c
--- /dev/null
@@ -0,0 +1,3 @@
+P4
+24 24
+ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
\ No newline at end of file
diff --git a/etc/images/gud/recstart.pbm b/etc/images/gud/recstart.pbm
new file mode 100644 (file)
index 0000000..11e9a4c
--- /dev/null
@@ -0,0 +1,3 @@
+P4
+24 24
+ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
\ No newline at end of file
diff --git a/etc/images/gud/recstop.pbm b/etc/images/gud/recstop.pbm
new file mode 100644 (file)
index 0000000..11e9a4c
--- /dev/null
@@ -0,0 +1,3 @@
+P4
+24 24
+ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
\ No newline at end of file
diff --git a/etc/images/gud/rfinish.pbm b/etc/images/gud/rfinish.pbm
new file mode 100644 (file)
index 0000000..11e9a4c
--- /dev/null
@@ -0,0 +1,3 @@
+P4
+24 24
+ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
\ No newline at end of file
diff --git a/etc/images/gud/rnext.pbm b/etc/images/gud/rnext.pbm
new file mode 100644 (file)
index 0000000..11e9a4c
--- /dev/null
@@ -0,0 +1,3 @@
+P4
+24 24
+ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
\ No newline at end of file
diff --git a/etc/images/gud/rnexti.pbm b/etc/images/gud/rnexti.pbm
new file mode 100644 (file)
index 0000000..11e9a4c
--- /dev/null
@@ -0,0 +1,3 @@
+P4
+24 24
+ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
\ No newline at end of file
diff --git a/etc/images/gud/rstep.pbm b/etc/images/gud/rstep.pbm
new file mode 100644 (file)
index 0000000..11e9a4c
--- /dev/null
@@ -0,0 +1,3 @@
+P4
+24 24
+ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
\ No newline at end of file
diff --git a/etc/images/gud/rstepi.pbm b/etc/images/gud/rstepi.pbm
new file mode 100644 (file)
index 0000000..11e9a4c
--- /dev/null
@@ -0,0 +1,3 @@
+P4
+24 24
+ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
\ No newline at end of file
diff --git a/etc/images/gud/thread.pbm b/etc/images/gud/thread.pbm
new file mode 100644 (file)
index 0000000..d46f16d
Binary files /dev/null and b/etc/images/gud/thread.pbm differ
diff --git a/etc/images/lock-broken.pbm b/etc/images/lock-broken.pbm
new file mode 100644 (file)
index 0000000..09bff51
--- /dev/null
@@ -0,0 +1,3 @@
+P4
+24 24
+ÿÿÿÿÿÿÿÿÿþ~\7fùÿ?ûÿ¿÷ÿ\9f÷ÿ\9f÷ÿÿ÷þÿüÿÿçÿÿçÿÿçÿÿçÿÿçü\a÷ý·÷ý÷óüçóý÷ÿý·ÿü\aÿÿÿÿÿÿ
\ No newline at end of file
diff --git a/etc/images/lock-ok.pbm b/etc/images/lock-ok.pbm
new file mode 100644 (file)
index 0000000..40d06d2
Binary files /dev/null and b/etc/images/lock-ok.pbm differ
diff --git a/etc/images/lock.pbm b/etc/images/lock.pbm
new file mode 100644 (file)
index 0000000..bb6f228
Binary files /dev/null and b/etc/images/lock.pbm differ
diff --git a/etc/images/mail/copy.pbm b/etc/images/mail/copy.pbm
new file mode 100644 (file)
index 0000000..1d472cf
Binary files /dev/null and b/etc/images/mail/copy.pbm differ
diff --git a/etc/images/mail/forward.pbm b/etc/images/mail/forward.pbm
new file mode 100644 (file)
index 0000000..409ff67
Binary files /dev/null and b/etc/images/mail/forward.pbm differ
diff --git a/etc/images/mail/not-spam.pbm b/etc/images/mail/not-spam.pbm
new file mode 100644 (file)
index 0000000..d6f4a0f
Binary files /dev/null and b/etc/images/mail/not-spam.pbm differ
diff --git a/etc/images/mail/outbox.pbm b/etc/images/mail/outbox.pbm
new file mode 100644 (file)
index 0000000..7f679df
--- /dev/null
@@ -0,0 +1,3 @@
+P4
+24 24
+ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¿ÿü?ÿøÿÿûÿÿ·ÿþÿÿûÿÿïÿÿ¿ÿÿÿÿÿûÿÿþÿÿÿ¿÷ÿïÏÿ÷?ÿ÷ÿÿûÿÿÿÿÿÿÿÿÿÿ
\ No newline at end of file
diff --git a/etc/images/mail/preview.pbm b/etc/images/mail/preview.pbm
new file mode 100644 (file)
index 0000000..018b0b6
Binary files /dev/null and b/etc/images/mail/preview.pbm differ
diff --git a/etc/images/mail/save-draft.pbm b/etc/images/mail/save-draft.pbm
new file mode 100644 (file)
index 0000000..51471c2
Binary files /dev/null and b/etc/images/mail/save-draft.pbm differ
diff --git a/etc/images/mh-logo.pbm b/etc/images/mh-logo.pbm
new file mode 100644 (file)
index 0000000..13a8d48
--- /dev/null
@@ -0,0 +1,3 @@
+P4
+18 13
+ÿÿÀÿÿÀÿÿÀÿÿÀÿÿÀÿÿÀÿÿÀÿÿÀÿÿÀÿÿÀÿÿÀÿÿÀÿÿÀ
\ No newline at end of file
diff --git a/etc/images/mpc/add.pbm b/etc/images/mpc/add.pbm
new file mode 100644 (file)
index 0000000..3745891
Binary files /dev/null and b/etc/images/mpc/add.pbm differ
diff --git a/etc/images/mpc/ffwd.pbm b/etc/images/mpc/ffwd.pbm
new file mode 100644 (file)
index 0000000..ca8fabd
Binary files /dev/null and b/etc/images/mpc/ffwd.pbm differ
diff --git a/etc/images/mpc/next.pbm b/etc/images/mpc/next.pbm
new file mode 100644 (file)
index 0000000..41bcf4b
Binary files /dev/null and b/etc/images/mpc/next.pbm differ
diff --git a/etc/images/mpc/pause.pbm b/etc/images/mpc/pause.pbm
new file mode 100644 (file)
index 0000000..7d09d16
Binary files /dev/null and b/etc/images/mpc/pause.pbm differ
diff --git a/etc/images/mpc/play.pbm b/etc/images/mpc/play.pbm
new file mode 100644 (file)
index 0000000..a961bb5
Binary files /dev/null and b/etc/images/mpc/play.pbm differ
diff --git a/etc/images/mpc/prev.pbm b/etc/images/mpc/prev.pbm
new file mode 100644 (file)
index 0000000..392cb31
Binary files /dev/null and b/etc/images/mpc/prev.pbm differ
diff --git a/etc/images/mpc/rewind.pbm b/etc/images/mpc/rewind.pbm
new file mode 100644 (file)
index 0000000..b078f5c
Binary files /dev/null and b/etc/images/mpc/rewind.pbm differ
diff --git a/etc/images/mpc/stop.pbm b/etc/images/mpc/stop.pbm
new file mode 100644 (file)
index 0000000..470963a
Binary files /dev/null and b/etc/images/mpc/stop.pbm differ
diff --git a/etc/images/redo.pbm b/etc/images/redo.pbm
new file mode 100644 (file)
index 0000000..7203908
Binary files /dev/null and b/etc/images/redo.pbm differ
diff --git a/etc/images/separator.pbm b/etc/images/separator.pbm
new file mode 100644 (file)
index 0000000..3b471db
--- /dev/null
@@ -0,0 +1,3 @@
+P4
+2 24
+ÀÀ\80\80\80\80\80\80\80\80\80\80\80\80\80\80\80\80\80\80\80\80ÀÀ
\ No newline at end of file
diff --git a/etc/images/smilies/braindamaged.pbm b/etc/images/smilies/braindamaged.pbm
new file mode 100644 (file)
index 0000000..f6696b9
--- /dev/null
@@ -0,0 +1,3 @@
+P4
+13 14
+ÿøðxÀ\18\9c\b\95È\9dH\81È ( (\90H\8f\88À\18ðxÿø
\ No newline at end of file
diff --git a/etc/images/smilies/cry.pbm b/etc/images/smilies/cry.pbm
new file mode 100644 (file)
index 0000000..ff74c96
--- /dev/null
@@ -0,0 +1,3 @@
+P4
+13 14
+ÿøðxÀ\18\80\b\98È\80H\80¨\80¨\80h\8f\88\90\18ðxÿø
\ No newline at end of file
diff --git a/etc/images/smilies/dead.pbm b/etc/images/smilies/dead.pbm
new file mode 100644 (file)
index 0000000..e445b9c
--- /dev/null
@@ -0,0 +1,3 @@
+P4
+13 14
+ÿøðxÀ\18\80\b\95H\88\88\95H\80\b\80\b (\9fÈÀ\18ðxÿø
\ No newline at end of file
diff --git a/etc/images/smilies/evil.pbm b/etc/images/smilies/evil.pbm
new file mode 100644 (file)
index 0000000..f863618
--- /dev/null
@@ -0,0 +1,3 @@
+P4
+13 14
+ÿøðxÀ\18\90H\98È\9dÈ\80\b (\90H\88\88\87\bÀ\18ðxÿø
\ No newline at end of file
diff --git a/etc/images/smilies/forced.pbm b/etc/images/smilies/forced.pbm
new file mode 100644 (file)
index 0000000..4e807ed
--- /dev/null
@@ -0,0 +1,3 @@
+P4
+13 14
+ÿøðxÀ\18\80\b\98È\98È\80\b\80\b ( (¿è\80\bðxÿø
\ No newline at end of file
diff --git a/etc/images/smilies/grin.pbm b/etc/images/smilies/grin.pbm
new file mode 100644 (file)
index 0000000..3b770f6
--- /dev/null
@@ -0,0 +1,3 @@
+P4
+13 14
+ÿøðxÀ\18\80\b\98È\98È\80\b¿è (\90H\8f\88À\18ðxÿø
\ No newline at end of file
diff --git a/etc/images/smilies/indifferent.pbm b/etc/images/smilies/indifferent.pbm
new file mode 100644 (file)
index 0000000..67e6958
--- /dev/null
@@ -0,0 +1,3 @@
+P4
+13 14
+ÿøðxÀ\18\80\b\98È\98È\80\b\80\b\80\b\9fÈ\80\bÀ\18ðxÿø
\ No newline at end of file
diff --git a/etc/images/sort-ascending.pbm b/etc/images/sort-ascending.pbm
new file mode 100644 (file)
index 0000000..b9f2347
--- /dev/null
@@ -0,0 +1,3 @@
+P4
+24 24
+ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüÿÿýÿÿýÿÿýÿÿýÿÿýÿÿýÿÿýÿÿýÿÿýÿÿýÿÿùÿÿýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
\ No newline at end of file
diff --git a/etc/images/sort-column-ascending.pbm b/etc/images/sort-column-ascending.pbm
new file mode 100644 (file)
index 0000000..11e9a4c
--- /dev/null
@@ -0,0 +1,3 @@
+P4
+24 24
+ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
\ No newline at end of file
diff --git a/etc/images/sort-criteria.pbm b/etc/images/sort-criteria.pbm
new file mode 100644 (file)
index 0000000..01f239e
--- /dev/null
@@ -0,0 +1,3 @@
+P4
+24 24
+ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿä?ÿä\1fÿä/ÿçwÿïûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
\ No newline at end of file
diff --git a/etc/images/sort-descending.pbm b/etc/images/sort-descending.pbm
new file mode 100644 (file)
index 0000000..3c1662b
--- /dev/null
@@ -0,0 +1,3 @@
+P4
+24 24
+ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüÿÿýÿÿýÿÿýÿÿýÿÿýÿÿýÿÿýÿÿýÿÿýÿÿýÿÿùÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
\ No newline at end of file
diff --git a/etc/images/sort-row-ascending.pbm b/etc/images/sort-row-ascending.pbm
new file mode 100644 (file)
index 0000000..2f91a58
--- /dev/null
@@ -0,0 +1,3 @@
+P4
+21 17
+ÿÿøÿÿøÿÿøÿÿøÿÿøÿÿøÿÿøÿÿøÿÿøÿÿøÿÿøÿÿøÿÿøÿÿøÿÿøÿÿøÿÿø
\ No newline at end of file
diff --git a/etc/images/unchecked.pbm b/etc/images/unchecked.pbm
new file mode 100644 (file)
index 0000000..44445c3
--- /dev/null
@@ -0,0 +1,3 @@
+P4
+12 12
+ÿðÿðÿÐÿÐÿÐÿÐÿÐÿÐÿÐà\10À\10ÿð
\ No newline at end of file
diff --git a/etc/images/zoom-in.pbm b/etc/images/zoom-in.pbm
new file mode 100644 (file)
index 0000000..31d502f
Binary files /dev/null and b/etc/images/zoom-in.pbm differ
index 5c0baafa756c259dc357bc3b89d4aaa6aa5aa4f0..98929de3684746b904bf341f4e6306a6877cc8dd 100644 (file)
@@ -713,7 +713,19 @@ cx
 gov.cx
 
 // cy : http://en.wikipedia.org/wiki/.cy
-*.cy
+ac.cy
+biz.cy
+com.cy
+ekloges.cy
+gov.cy
+ltd.cy
+name.cy
+net.cy
+org.cy
+parliament.cy
+press.cy
+pro.cy
+tm.cy
 
 // cz : http://en.wikipedia.org/wiki/.cz
 cz
@@ -826,6 +838,7 @@ edu.et
 biz.et
 name.et
 info.et
+net.et
 
 // eu : http://en.wikipedia.org/wiki/.eu
 eu
@@ -932,6 +945,11 @@ org.gi
 // gl : http://en.wikipedia.org/wiki/.gl
 // http://nic.gl
 gl
+co.gl
+com.gl
+edu.gl
+net.gl
+org.gl
 
 // gm : http://www.nic.gm/htmlpages%5Cgm-policy.htm
 gm
@@ -1130,7 +1148,7 @@ tt.im
 tv.im
 
 // in : http://en.wikipedia.org/wiki/.in
-// see also: http://www.inregistry.in/policies/
+// see also: https://registry.in/Policies
 // Please note, that nic.in is not an offical eTLD, but used by most
 // government institutions.
 in
@@ -3571,6 +3589,7 @@ ltd.lk
 assn.lk
 grp.lk
 hotel.lk
+ac.lk
 
 // lr : http://psg.com/dns/lr/lr.txt
 // Submitted by registry <randy@psg.com> 2008-06-17
@@ -3647,7 +3666,7 @@ gov.me
 its.me
 priv.me
 
-// mg : http://www.nic.mg/tarif.htm
+// mg : http://nic.mg/nicmg/?page_id=39
 mg
 org.mg
 nom.mg
@@ -3657,6 +3676,7 @@ tm.mg
 edu.mg
 mil.mg
 com.mg
+co.mg
 
 // mh : http://en.wikipedia.org/wiki/.mh
 mh
@@ -4412,9 +4432,9 @@ mobi.ng
 // ni : http://www.nic.ni/dominios.htm
 *.ni
 
-// nl : http://www.domain-registry.nl/ace.php/c,728,122,,,,Home.html
-// Confirmed by registry <Antoin.Verschuren@sidn.nl> (with technical
-// reservations) 2008-06-08
+// nl : http://en.wikipedia.org/wiki/.nl
+//      https://www.sidn.nl/
+//      ccTLD for the Netherlands
 nl
 
 // BV.nl will be a registry for dutch BV's (besloten vennootschap)
@@ -5304,14 +5324,11 @@ gos.pk
 info.pk
 
 // pl http://www.dns.pl/english/index.html
-// confirmed on 26.09.2014 from Bogna Tchórzewska <partner@dns.pl>
+// updated by .PL registry on 2015-04-28
 pl
 com.pl
 net.pl
 org.pl
-info.pl
-waw.pl
-gov.pl
 // pl functional domains (http://www.dns.pl/english/index.html)
 aid.pl
 agro.pl
@@ -5321,6 +5338,7 @@ biz.pl
 edu.pl
 gmina.pl
 gsm.pl
+info.pl
 mail.pl
 miasta.pl
 media.pl
@@ -5342,16 +5360,55 @@ tm.pl
 tourism.pl
 travel.pl
 turystyka.pl
-// Government domains (administred by ippt.gov.pl)
-uw.gov.pl
-um.gov.pl
+// Government domains
+gov.pl
+ap.gov.pl
+ic.gov.pl
+is.gov.pl
+us.gov.pl
+kmpsp.gov.pl
+kppsp.gov.pl
+kwpsp.gov.pl
+psp.gov.pl
+wskr.gov.pl
+kwp.gov.pl
+mw.gov.pl
 ug.gov.pl
+um.gov.pl
+umig.gov.pl
+ugim.gov.pl
 upow.gov.pl
+uw.gov.pl
 starostwo.gov.pl
+pa.gov.pl
+po.gov.pl
+psse.gov.pl
+pup.gov.pl
+rzgw.gov.pl
+sa.gov.pl
 so.gov.pl
 sr.gov.pl
-po.gov.pl
-pa.gov.pl
+wsa.gov.pl
+sko.gov.pl
+uzs.gov.pl
+wiih.gov.pl
+winb.gov.pl
+pinb.gov.pl
+wios.gov.pl
+witd.gov.pl
+wzmiuw.gov.pl
+piw.gov.pl
+wiw.gov.pl
+griw.gov.pl
+wif.gov.pl
+oum.gov.pl
+sdn.gov.pl
+zp.gov.pl
+uppo.gov.pl
+mup.gov.pl
+wuoz.gov.pl
+konsulat.gov.pl
+oirm.gov.pl
 // pl regional domains (http://www.dns.pl/english/index.html)
 augustow.pl
 babia-gora.pl
@@ -5459,6 +5516,7 @@ ustka.pl
 walbrzych.pl
 warmia.pl
 warszawa.pl
+waw.pl
 wegrow.pl
 wielun.pl
 wlocl.pl
@@ -5906,6 +5964,38 @@ store.st
 
 // su : http://en.wikipedia.org/wiki/.su
 su
+adygeya.su
+arkhangelsk.su
+balashov.su
+bashkiria.su
+bryansk.su
+dagestan.su
+grozny.su
+ivanovo.su
+kalmykia.su
+kaluga.su
+karelia.su
+khakassia.su
+krasnodar.su
+kurgan.su
+lenug.su
+mordovia.su
+msk.su
+murmansk.su
+nalchik.su
+nov.su
+obninsk.su
+penza.su
+pokrovsk.su
+sochi.su
+spb.su
+togliatti.su
+troitsk.su
+tula.su
+tuva.su
+vladikavkaz.su
+vladimir.su
+vologda.su
 
 // sv : http://www.svnet.org.sv/niveldos.pdf
 sv
@@ -6213,10 +6303,6 @@ zhytomyr.ua
 zp.ua
 zt.ua
 
-// Private registries in .ua
-co.ua
-pp.ua
-
 // ug : https://www.registry.co.ug/
 ug
 co.ug
@@ -6589,114 +6675,147 @@ edu.ws
 yt
 
 // IDN ccTLDs
-// Please sort by ISO 3166 ccTLD, then punicode string
-// when submitting patches and follow this format:
-// <Punicode> ("<english word>" <language>) : <ISO 3166 ccTLD>
-// [optional sponsoring org]
-// <URL>
+// When submitting patches, please maintain a sort by ISO 3166 ccTLD, then
+// U-label, and follow this format:
+// // A-Label ("<Latin renderings>", <language name>[, variant info]) : <ISO 3166 ccTLD>
+// // [sponsoring org]
+// U-Label
 
-// xn--mgbaam7a8h ("Emerat" Arabic) : AE
+// xn--mgbaam7a8h ("Emerat", Arabic) : AE
 // http://nic.ae/english/arabicdomain/rules.jsp
 امارات
 
-// xn--54b7fta0cc ("Bangla" Bangla) : BD
+// xn--y9a3aq ("hye", Armenian) : AM
+// ISOC AM (operated by .am Registry)
+հայ
+
+// xn--54b7fta0cc ("Bangla", Bangla) : BD
 বাংলা
 
-// xn--fiqs8s ("China" Chinese-Han-Simplified <.Zhongguo>) : CN
+// xn--90ais ("bel", Belarusian/Russian Cyrillic) : BY
+// Operated by .by registry
+бел
+
+// xn--fiqs8s ("Zhongguo/China", Chinese, Simplified) : CN
 // CNNIC
 // http://cnnic.cn/html/Dir/2005/10/11/3218.htm
 中国
 
-// xn--fiqz9s ("China" Chinese-Han-Traditional <.Zhongguo>) : CN
+// xn--fiqz9s ("Zhongguo/China", Chinese, Traditional) : CN
 // CNNIC
 // http://cnnic.cn/html/Dir/2005/10/11/3218.htm
 中國
 
-// xn--lgbbat1ad8j ("Algeria / Al Jazair" Arabic) : DZ
+// xn--lgbbat1ad8j ("Algeria/Al Jazair", Arabic) : DZ
 الجزائر
 
-// xn--wgbh1c ("Egypt" Arabic .masr) : EG
+// xn--wgbh1c ("Egypt/Masr", Arabic) : EG
 // http://www.dotmasr.eg/
 مصر
 
-// xn--node ("ge" Georgian (Mkhedruli)) : GE
+// xn--node ("ge", Georgian Mkhedruli) : GE
 გე
 
-// xn--j6w193g ("Hong Kong" Chinese-Han) : HK
+// xn--qxam ("el", Greek) : GR
+// Hellenic Ministry of Infrastructure, Transport, and Networks
+ελ
+
+// xn--j6w193g ("Hong Kong", Chinese) : HK
 // https://www2.hkirc.hk/register/rules.jsp
 香港
 
-// xn--h2brj9c ("Bharat" Devanagari) : IN
+// xn--h2brj9c ("Bharat", Devanagari) : IN
 // India
 भारत
 
-// xn--mgbbh1a71e ("Bharat" Arabic) : IN
+// xn--mgbbh1a71e ("Bharat", Arabic) : IN
 // India
 بھارت
 
-// xn--fpcrj9c3d ("Bharat" Telugu) : IN
+// xn--fpcrj9c3d ("Bharat", Telugu) : IN
 // India
 భారత్
 
-// xn--gecrj9c ("Bharat" Gujarati) : IN
+// xn--gecrj9c ("Bharat", Gujarati) : IN
 // India
 ભારત
 
-// xn--s9brj9c ("Bharat" Gurmukhi) : IN
+// xn--s9brj9c ("Bharat", Gurmukhi) : IN
 // India
 ਭਾਰਤ
 
-// xn--45brj9c ("Bharat" Bengali) : IN
+// xn--45brj9c ("Bharat", Bengali) : IN
 // India
 ভারত
 
-// xn--xkc2dl3a5ee0h ("India" Tamil) : IN
+// xn--xkc2dl3a5ee0h ("India", Tamil) : IN
 // India
 இந்தியா
 
-// xn--mgba3a4f16a ("Iran" Persian) : IR
+// xn--mgba3a4f16a ("Iran", Persian) : IR
 ایران
 
-// xn--mgba3a4fra ("Iran" Arabic) : IR
+// xn--mgba3a4fra ("Iran", Arabic) : IR
 ايران
 
-// xn--mgbayh7gpa ("al-Ordon" Arabic) : JO
+// xn--mgbtx2b ("Iraq", Arabic) : IQ
+// Communications and Media Commission
+عراق
+
+// xn--mgbayh7gpa ("al-Ordon", Arabic) : JO
 // National Information Technology Center (NITC)
 // Royal Scientific Society, Al-Jubeiha
 الاردن
 
-// xn--3e0b707e ("Republic of Korea" Hangul) : KR
+// xn--3e0b707e ("Republic of Korea", Hangul) : KR
 한국
 
-// xn--80ao21a ("Kaz" Kazakh) : KZ
+// xn--80ao21a ("Kaz", Kazakh) : KZ
 қаз
 
-// xn--fzc2c9e2c ("Lanka" Sinhalese-Sinhala) : LK
+// xn--fzc2c9e2c ("Lanka", Sinhalese-Sinhala) : LK
 // http://nic.lk
 ලංකා
 
-// xn--xkc2al3hye2a ("Ilangai" Tamil) : LK
+// xn--xkc2al3hye2a ("Ilangai", Tamil) : LK
 // http://nic.lk
 இலங்கை
 
-// xn--mgbc0a9azcg ("Morocco / al-Maghrib" Arabic) : MA
+// xn--mgbc0a9azcg ("Morocco/al-Maghrib", Arabic) : MA
 المغرب
 
-// xn--l1acc ("mon" Mongolian) : MN
+// xn--d1alf ("mkd", Macedonian) : MK
+// MARnet
+мкд
+
+// xn--l1acc ("mon", Mongolian) : MN
 мон
 
-// xn--mgbx4cd0ab ("Malaysia" Malay) : MY
+// xn--mix891f ("Macao", Chinese, Traditional) : MO
+// MONIC / HNET Asia (Registry Operator for .mo)
+澳門
+
+// xn--mix082f ("Macao", Chinese, Simplified) : MO
+澳门
+
+// xn--mgbx4cd0ab ("Malaysia", Malay) : MY
 مليسيا
 
-// xn--mgb9awbf ("Oman" Arabic) : OM
+// xn--mgb9awbf ("Oman", Arabic) : OM
 عمان
 
-// xn--ygbi2ammx ("Falasteen" Arabic) : PS
+// xn--mgbai9azgqp6j ("Pakistan", Urdu/Arabic) : PK
+پاکستان
+
+// xn--mgbai9a5eva00b ("Pakistan", Urdu/Arabic, variant) : PK
+پاكستان
+
+// xn--ygbi2ammx ("Falasteen", Arabic) : PS
 // The Palestinian National Internet Naming Authority (PNINA)
 // http://www.pnina.ps
 فلسطين
 
-// xn--90a3ac ("srb" Cyrillic) : RS
+// xn--90a3ac ("srb", Cyrillic) : RS
 // http://www.rnids.rs/en/the-.срб-domain
 срб
 пр.срб
@@ -6706,62 +6825,66 @@ yt
 упр.срб
 ак.срб
 
-// xn--p1ai ("rf" Russian-Cyrillic) : RU
+// xn--p1ai ("rf", Russian-Cyrillic) : RU
 // http://www.cctld.ru/en/docs/rulesrf.php
 рф
 
-// xn--wgbl6a ("Qatar" Arabic) : QA
+// xn--wgbl6a ("Qatar", Arabic) : QA
 // http://www.ict.gov.qa/
 قطر
 
-// xn--mgberp4a5d4ar ("AlSaudiah" Arabic) : SA
+// xn--mgberp4a5d4ar ("AlSaudiah", Arabic) : SA
 // http://www.nic.net.sa/
 السعودية
 
-// xn--mgberp4a5d4a87g ("AlSaudiah" Arabic) variant : SA
+// xn--mgberp4a5d4a87g ("AlSaudiah", Arabic, variant)  : SA
 السعودیة
 
-// xn--mgbqly7c0a67fbc ("AlSaudiah" Arabic) variant : SA
+// xn--mgbqly7c0a67fbc ("AlSaudiah", Arabic, variant) : SA
 السعودیۃ
 
-// xn--mgbqly7cvafr ("AlSaudiah" Arabic) variant : SA
+// xn--mgbqly7cvafr ("AlSaudiah", Arabic, variant) : SA
 السعوديه
 
-// xn--ogbpf8fl ("Syria" Arabic) : SY
-سورية
-
-// xn--mgbtf8fl ("Syria" Arabic) variant : SY
-سوريا
+// xn--mgbpl2fh ("sudan", Arabic) : SD
+// Operated by .sd registry
+سودان
 
-// xn--yfro4i67o Singapore ("Singapore" Chinese-Han) : SG
+// xn--yfro4i67o Singapore ("Singapore", Chinese) : SG
 新加坡
 
-// xn--clchc0ea0b2g2a9gcd ("Singapore" Tamil) : SG
+// xn--clchc0ea0b2g2a9gcd ("Singapore", Tamil) : SG
 சிங்கப்பூர்
 
-// xn--o3cw4h ("Thai" Thai) : TH
+// xn--ogbpf8fl ("Syria", Arabic) : SY
+سورية
+
+// xn--mgbtf8fl ("Syria", Arabic, variant) : SY
+سوريا
+
+// xn--o3cw4h ("Thai", Thai) : TH
 // http://www.thnic.co.th
 ไทย
 
-// xn--pgbs0dh ("Tunis") : TN
+// xn--pgbs0dh ("Tunisia", Arabic) : TN
 // http://nic.tn
 تونس
 
-// xn--kpry57d ("Taiwan" Chinese-Han-Traditional) : TW
+// xn--kpry57d ("Taiwan", Chinese, Traditional) : TW
 // http://www.twnic.net/english/dn/dn_07a.htm
 台灣
 
-// xn--kprw13d ("Taiwan" Chinese-Han-Simplified) : TW
+// xn--kprw13d ("Taiwan", Chinese, Simplified) : TW
 // http://www.twnic.net/english/dn/dn_07a.htm
 台湾
 
-// xn--nnx388a ("Taiwan") variant : TW
+// xn--nnx388a ("Taiwan", Chinese, variant) : TW
 臺灣
 
-// xn--j1amh ("ukr" Cyrillic) : UA
+// xn--j1amh ("ukr", Cyrillic) : UA
 укр
 
-// xn--mgb2ddes ("AlYemen" Arabic) : YE
+// xn--mgb2ddes ("AlYemen", Arabic) : YE
 اليمن
 
 // xxx : http://icmregistry.com
@@ -6770,8 +6893,24 @@ xxx
 // ye : http://www.y.net.ye/services/domain_name.htm
 *.ye
 
-// za : http://www.zadna.org.za/slds.html
-*.za
+// za : http://www.zadna.org.za/content/page/domain-information
+ac.za
+agrica.za
+alt.za
+co.za
+edu.za
+gov.za
+grondar.za
+law.za
+mil.za
+net.za
+ngo.za
+nis.za
+nom.za
+org.za
+school.za
+tm.za
+web.za
 
 // zm : http://en.wikipedia.org/wiki/.zm
 *.zm
@@ -6780,7 +6919,16 @@ xxx
 *.zw
 
 
-// List of new gTLDs imported from https://newgtlds.icann.org/newgtlds.csv on 2014-12-22T18:02:07Z
+// List of new gTLDs imported from https://newgtlds.icann.org/newgtlds.csv on 2015-08-26T23:57:22Z
+
+// aaa : 2015-02-26 American Automobile Association, Inc.
+aaa
+
+// aarp : 2015-05-21 AARP
+aarp
+
+// abarth : 2015-07-30 Fiat Chrysler Automobiles N.V.
+abarth
 
 // abb : 2014-10-24 ABB Ltd
 abb
@@ -6788,9 +6936,21 @@ abb
 // abbott : 2014-07-24 Abbott Laboratories, Inc.
 abbott
 
+// abbvie : 2015-07-30 AbbVie Inc.
+abbvie
+
+// abc : 2015-07-30 Disney Enterprises, Inc.
+abc
+
+// able : 2015-06-25 Able Inc.
+able
+
 // abogado : 2014-04-24 Top Level Domain Holdings Limited
 abogado
 
+// abudhabi : 2015-07-30 Abu Dhabi Systems and Information Centre
+abudhabi
+
 // academy : 2013-11-07 Half Oaks, LLC
 academy
 
@@ -6803,42 +6963,105 @@ accountant
 // accountants : 2014-03-20 Knob Town, LLC
 accountants
 
+// aco : 2015-01-08 ACO Severin Ahlmann GmbH & Co. KG
+aco
+
 // active : 2014-05-01 The Active Network, Inc
 active
 
 // actor : 2013-12-12 United TLD Holdco Ltd.
 actor
 
+// adac : 2015-07-16 Allgemeiner Deutscher Automobil-Club e.V. (ADAC)
+adac
+
 // ads : 2014-12-04 Charleston Road Registry Inc.
 ads
 
 // adult : 2014-10-16 ICM Registry AD LLC
 adult
 
+// aeg : 2015-03-19 Aktiebolaget Electrolux
+aeg
+
+// aetna : 2015-05-21 Aetna Life Insurance Company
+aetna
+
+// afamilycompany : 2015-07-23 Johnson Shareholdings, Inc.
+afamilycompany
+
 // afl : 2014-10-02 Australian Football League
 afl
 
 // africa : 2014-03-24 ZA Central Registry NPC trading as Registry.Africa
 africa
 
+// africamagic : 2015-03-05 Electronic Media Network (Pty) Ltd
+africamagic
+
+// agakhan : 2015-04-23 Fondation Aga Khan (Aga Khan Foundation)
+agakhan
+
 // agency : 2013-11-14 Steel Falls, LLC
 agency
 
 // aig : 2014-12-18 American International Group, Inc.
 aig
 
+// aigo : 2015-08-06 aigo Digital Technology Co,Ltd.
+aigo
+
+// airbus : 2015-07-30 Airbus S.A.S.
+airbus
+
 // airforce : 2014-03-06 United TLD Holdco Ltd.
 airforce
 
 // airtel : 2014-10-24 Bharti Airtel Limited
 airtel
 
+// akdn : 2015-04-23 Fondation Aga Khan (Aga Khan Foundation)
+akdn
+
+// alfaromeo : 2015-07-31 Fiat Chrysler Automobiles N.V.
+alfaromeo
+
+// alibaba : 2015-01-15 Alibaba Group Holding Limited
+alibaba
+
+// alipay : 2015-01-15 Alibaba Group Holding Limited
+alipay
+
 // allfinanz : 2014-07-03 Allfinanz Deutsche Vermögensberatung Aktiengesellschaft
 allfinanz
 
+// allstate : 2015-07-31 Allstate Fire and Casualty Insurance Company
+allstate
+
+// ally : 2015-06-18 Ally Financial Inc.
+ally
+
 // alsace : 2014-07-02 REGION D ALSACE
 alsace
 
+// alstom : 2015-07-30 ALSTOM
+alstom
+
+// americanexpress : 2015-07-31 American Express Travel Related Services Company, Inc.
+americanexpress
+
+// americanfamily : 2015-07-23 AmFam, Inc.
+americanfamily
+
+// amex : 2015-07-31 American Express Travel Related Services Company, Inc.
+amex
+
+// amfam : 2015-07-23 AmFam, Inc.
+amfam
+
+// amica : 2015-05-28 Amica Mutual Insurance Company
+amica
+
 // amsterdam : 2014-07-24 Gemeente Amsterdam
 amsterdam
 
@@ -6848,9 +7071,21 @@ analytics
 // android : 2014-08-07 Charleston Road Registry Inc.
 android
 
+// anquan : 2015-01-08 QIHOO 360 TECHNOLOGY CO. LTD.
+anquan
+
+// anz : 2015-07-31 Australia and New Zealand Banking Group Limited
+anz
+
 // apartments : 2014-12-11 June Maple, LLC
 apartments
 
+// app : 2015-05-14 Charleston Road Registry Inc.
+app
+
+// apple : 2015-05-14 Apple Inc.
+apple
+
 // aquarelle : 2014-07-24 Aquarelle.com
 aquarelle
 
@@ -6866,33 +7101,66 @@ army
 // arte : 2014-12-11 Association Relative à la Télévision Européenne G.E.I.E.
 arte
 
+// asda : 2015-07-31 Wal-Mart Stores, Inc.
+asda
+
 // associates : 2014-03-06 Baxter Hill, LLC
 associates
 
+// athleta : 2015-07-30 The Gap, Inc.
+athleta
+
 // attorney : 2014-03-20
 attorney
 
 // auction : 2014-03-20
 auction
 
+// audi : 2015-05-21 AUDI Aktiengesellschaft
+audi
+
+// audible : 2015-06-25 Amazon EU S.à r.l.
+audible
+
 // audio : 2014-03-20 Uniregistry, Corp.
 audio
 
+// auspost : 2015-08-13 Australian Postal Corporation
+auspost
+
 // author : 2014-12-18 Amazon EU S.à r.l.
 author
 
-// auto : 2014-11-13 Uniregistry, Corp.
+// auto : 2014-11-13
 auto
 
 // autos : 2014-01-09 DERAutos, LLC
 autos
 
+// avianca : 2015-01-08 Aerovias del Continente Americano S.A. Avianca
+avianca
+
+// aws : 2015-06-25 Amazon EU S.à r.l.
+aws
+
 // axa : 2013-12-19 AXA SA
 axa
 
 // azure : 2014-12-18 Microsoft Corporation
 azure
 
+// baby : 2015-04-09 Johnson & Johnson Services, Inc.
+baby
+
+// baidu : 2015-01-08 Baidu, Inc.
+baidu
+
+// banamex : 2015-07-30 Citigroup Inc.
+banamex
+
+// bananarepublic : 2015-07-31 The Gap, Inc.
+bananarepublic
+
 // band : 2014-06-12
 band
 
@@ -6911,9 +7179,15 @@ barclaycard
 // barclays : 2014-11-20 Barclays Bank PLC
 barclays
 
+// barefoot : 2015-06-11 Gallo Vineyards, Inc.
+barefoot
+
 // bargains : 2013-11-14 Half Hallow, LLC
 bargains
 
+// basketball : 2015-08-20 Fédération Internationale de Basketball (FIBA)
+basketball
+
 // bauhaus : 2014-04-17 Werkhaus GmbH
 bauhaus
 
@@ -6923,12 +7197,21 @@ bayern
 // bbc : 2014-12-18 British Broadcasting Corporation
 bbc
 
+// bbt : 2015-07-23 BB&T Corporation
+bbt
+
 // bbva : 2014-10-02 BANCO BILBAO VIZCAYA ARGENTARIA, S.A.
 bbva
 
+// bcg : 2015-04-02 The Boston Consulting Group, Inc.
+bcg
+
 // bcn : 2014-07-24 Municipi de Barcelona
 bcn
 
+// beats : 2015-05-14 Beats Electronics, LLC
+beats
+
 // beer : 2014-01-09 Top Level Domain Holdings Limited
 beer
 
@@ -6941,6 +7224,12 @@ berlin
 // best : 2013-12-19 BestTLD Pty Ltd
 best
 
+// bestbuy : 2015-07-31 BBY Solutions, Inc.
+bestbuy
+
+// bet : 2015-05-07 Afilias plc
+bet
+
 // bharti : 2014-01-09 Bharti Enterprises (Holding) Private Limited
 bharti
 
@@ -6968,6 +7257,15 @@ black
 // blackfriday : 2014-01-16 Uniregistry, Corp.
 blackfriday
 
+// blanco : 2015-07-16 BLANCO GmbH + Co KG
+blanco
+
+// blockbuster : 2015-07-30 Dish DBS Corporation
+blockbuster
+
+// blog : 2015-05-14 PRIMER NIVEL S.A.
+blog
+
 // bloomberg : 2014-07-17 Bloomberg IP Holdings LLC
 bloomberg
 
@@ -6989,6 +7287,12 @@ bnpparibas
 // boats : 2014-12-04 DERBoats, LLC
 boats
 
+// boehringer : 2015-07-09 Boehringer Ingelheim International GmbH
+boehringer
+
+// bofa : 2015-07-31 NMS Services, Inc.
+bofa
+
 // bom : 2014-10-16 Núcleo de Informação e Coordenação do Ponto BR - NIC.br
 bom
 
@@ -6998,6 +7302,18 @@ bond
 // boo : 2014-01-30 Charleston Road Registry Inc.
 boo
 
+// booking : 2015-07-16 Booking.com B.V.
+booking
+
+// boots : 2015-01-08 THE BOOTS COMPANY PLC
+boots
+
+// bosch : 2015-06-18 Robert Bosch GMBH
+bosch
+
+// bostik : 2015-05-28 Bostik SA
+bostik
+
 // bot : 2014-12-18 Amazon EU S.à r.l.
 bot
 
@@ -7010,15 +7326,24 @@ bradesco
 // bridgestone : 2014-12-18 Bridgestone Corporation
 bridgestone
 
+// broadway : 2014-12-22 Celebrate Broadway, Inc.
+broadway
+
 // broker : 2014-12-11 IG Group Holdings PLC
 broker
 
+// brother : 2015-01-29 Brother Industries, Ltd.
+brother
+
 // brussels : 2014-02-06 DNS.be vzw
 brussels
 
 // budapest : 2013-11-21 Top Level Domain Holdings Limited
 budapest
 
+// bugatti : 2015-07-23 Bugatti International SA
+bugatti
+
 // build : 2013-11-07 Plan Bee LLC
 build
 
@@ -7040,12 +7365,18 @@ bzh
 // cab : 2013-10-24 Half Sunset, LLC
 cab
 
+// cafe : 2015-02-11 Pioneer Canyon, LLC
+cafe
+
 // cal : 2014-07-24 Charleston Road Registry Inc.
 cal
 
 // call : 2014-12-18 Amazon EU S.à r.l.
 call
 
+// calvinklein : 2015-07-30 PVH gTLD Holdings LLC
+calvinklein
+
 // camera : 2013-08-27 Atomic Maple, LLC
 camera
 
@@ -7064,6 +7395,12 @@ capetown
 // capital : 2014-03-06 Delta Mill, LLC
 capital
 
+// capitalone : 2015-08-06 Capital One Financial Corporation
+capitalone
+
+// car : 2015-01-22
+car
+
 // caravan : 2013-12-12 Caravan International, Inc.
 caravan
 
@@ -7079,7 +7416,7 @@ career
 // careers : 2013-10-02 Wild Corner, LLC
 careers
 
-// cars : 2014-11-13 Uniregistry, Corp.
+// cars : 2014-11-13
 cars
 
 // cartier : 2014-06-23 Richemont DNS Inc.
@@ -7103,13 +7440,22 @@ cba
 // cbn : 2014-08-22 The Christian Broadcasting Network, Inc.
 cbn
 
+// cbre : 2015-07-02 CBRE, Inc.
+cbre
+
+// cbs : 2015-08-06 CBS Domains Inc.
+cbs
+
+// ceb : 2015-04-09 The Corporate Executive Board Company
+ceb
+
 // center : 2013-11-07 Tin Mill, LLC
 center
 
 // ceo : 2013-11-07 CEOTLD Pty Ltd
 ceo
 
-// cern : 2014-06-05 European Organization for Nuclear Research (\
+// cern : 2014-06-05 European Organization for Nuclear Research ("CERN")
 cern
 
 // cfa : 2014-08-28 CFA Institute
@@ -7118,15 +7464,24 @@ cfa
 // cfd : 2014-12-11 IG Group Holdings PLC
 cfd
 
+// chanel : 2015-04-09 Chanel International B.V.
+chanel
+
 // channel : 2014-05-08 Charleston Road Registry Inc.
 channel
 
+// chase : 2015-04-30 JPMorgan Chase & Co.
+chase
+
 // chat : 2014-12-04 Sand Fields, LLC
 chat
 
 // cheap : 2013-11-14 Sand Cover, LLC
 cheap
 
+// chintai : 2015-06-11 CHINTAI Corporation
+chintai
+
 // chloe : 2014-10-16 Richemont DNS Inc.
 chloe
 
@@ -7136,12 +7491,27 @@ christmas
 // chrome : 2014-07-24 Charleston Road Registry Inc.
 chrome
 
-// church : 2014-02-06 Holly Fileds, LLC
+// chrysler : 2015-07-30 FCA US LLC.
+chrysler
+
+// church : 2014-02-06 Holly Fields, LLC
 church
 
+// cipriani : 2015-02-19 Hotel Cipriani Srl
+cipriani
+
 // circle : 2014-12-18 Amazon EU S.à r.l.
 circle
 
+// cisco : 2014-12-22 Cisco Technology, Inc.
+cisco
+
+// citadel : 2015-07-23 Citadel Domain LLC
+citadel
+
+// citi : 2015-07-30 Citigroup Inc.
+citi
+
 // citic : 2014-01-09 CITIC Group Corporation
 citic
 
@@ -7166,9 +7536,15 @@ clinic
 // clothing : 2013-08-27 Steel Lake, LLC
 clothing
 
+// cloud : 2015-04-16 ARUBA S.p.A.
+cloud
+
 // club : 2013-11-08 .CLUB DOMAINS, LLC
 club
 
+// clubmed : 2015-06-25 Club Méditerranée S.A.
+clubmed
+
 // coach : 2014-10-09 Koko Island, LLC
 coach
 
@@ -7184,6 +7560,9 @@ college
 // cologne : 2014-02-05 NetCologne Gesellschaft für Telekommunikation mbH
 cologne
 
+// comcast : 2015-07-23 Comcast IP Holdings I, LLC
+comcast
+
 // commbank : 2014-06-26 COMMONWEALTH BANK OF AUSTRALIA
 commbank
 
@@ -7196,6 +7575,9 @@ company
 // computer : 2013-10-24 Pine Mill, LLC
 computer
 
+// comsec : 2015-01-08 VeriSign, Inc.
+comsec
+
 // condos : 2013-12-05 Pine House, LLC
 condos
 
@@ -7205,12 +7587,18 @@ construction
 // consulting : 2013-12-05
 consulting
 
+// contact : 2015-01-08 Top Level Spectrum, Inc.
+contact
+
 // contractors : 2013-09-10 Magic Woods, LLC
 contractors
 
 // cooking : 2013-11-21 Top Level Domain Holdings Limited
 cooking
 
+// cookingchannel : 2015-07-02 Lifestyle Domain Holdings, Inc.
+cookingchannel
+
 // cool : 2013-11-14 Koko Lake, LLC
 cool
 
@@ -7220,6 +7608,12 @@ corsica
 // country : 2013-12-19 Top Level Domain Holdings Limited
 country
 
+// coupon : 2015-02-26 Amazon EU S.à r.l.
+coupon
+
+// coupons : 2015-03-26 Black Island, LLC
+coupons
+
 // courses : 2014-12-04 OPEN UNIVERSITIES AUSTRALIA PTY LTD
 courses
 
@@ -7229,6 +7623,9 @@ credit
 // creditcard : 2014-03-20 Binky Frostbite, LLC
 creditcard
 
+// creditunion : 2015-01-22 CUNA Performance Resources, LLC
+creditunion
+
 // cricket : 2014-10-09 dot Cricket Limited
 cricket
 
@@ -7250,6 +7647,9 @@ cuisinella
 // cymru : 2014-05-08 Nominet UK
 cymru
 
+// cyou : 2015-01-22 Beijing Gamease Age Digital Technology Co., Ltd.
+cyou
+
 // dabur : 2014-02-06 Dabur India Limited
 dabur
 
@@ -7274,6 +7674,15 @@ day
 // dclk : 2014-11-20 Charleston Road Registry Inc.
 dclk
 
+// dds : 2015-05-07 Top Level Domain Holdings Limited
+dds
+
+// deal : 2015-06-25 Amazon EU S.à r.l.
+deal
+
+// dealer : 2014-12-22 Dealer Dot Com, Inc.
+dealer
+
 // deals : 2014-05-22 Sand Sunset, LLC
 deals
 
@@ -7286,6 +7695,12 @@ delivery
 // dell : 2014-10-24 Dell Inc.
 dell
 
+// deloitte : 2015-07-31 Deloitte Touche Tohmatsu
+deloitte
+
+// delta : 2015-02-19 Delta Air Lines, Inc.
+delta
+
 // democrat : 2013-10-24 United TLD Holdco Ltd.
 democrat
 
@@ -7304,6 +7719,9 @@ design
 // dev : 2014-10-16 Charleston Road Registry Inc.
 dev
 
+// dhl : 2015-07-23 Deutsche Post AG
+dhl
+
 // diamonds : 2013-09-22 John Edge, LLC
 diamonds
 
@@ -7322,12 +7740,21 @@ directory
 // discount : 2014-03-06 Holly Hill, LLC
 discount
 
+// discover : 2015-07-23 Discover Financial Services
+discover
+
+// dish : 2015-07-30 Dish DBS Corporation
+dish
+
 // dnp : 2013-12-13 Dai Nippon Printing Co., Ltd.
 dnp
 
 // docs : 2014-10-16 Charleston Road Registry Inc.
 docs
 
+// dodge : 2015-07-30 FCA US LLC.
+dodge
+
 // dog : 2014-12-04 Koko Mill, LLC
 dog
 
@@ -7340,15 +7767,45 @@ domains
 // doosan : 2014-04-03 Doosan Corporation
 doosan
 
+// dot : 2015-05-21 Dish DBS Corporation
+dot
+
 // download : 2014-11-20 dot Support Limited
 download
 
+// drive : 2015-03-05 Charleston Road Registry Inc.
+drive
+
+// dstv : 2015-03-12 MultiChoice (Proprietary) Limited
+dstv
+
+// dtv : 2015-06-04 Dish DBS Corporation
+dtv
+
+// dubai : 2015-01-01 Dubai Smart Government Department
+dubai
+
+// duck : 2015-07-23 Johnson Shareholdings, Inc.
+duck
+
+// dunlop : 2015-07-02 The Goodyear Tire & Rubber Company
+dunlop
+
+// duns : 2015-08-06 The Dun & Bradstreet Corporation
+duns
+
+// dupont : 2015-06-25 E.I. du Pont de Nemours and Company
+dupont
+
 // durban : 2014-03-24 ZA Central Registry NPC trading as ZA Central Registry
 durban
 
 // dvag : 2014-06-23 Deutsche Vermögensberatung Aktiengesellschaft DVAG
 dvag
 
+// dwg : 2015-07-23 Autodesk, Inc.
+dwg
+
 // earth : 2014-12-04 Interlink Co., Ltd.
 earth
 
@@ -7367,6 +7824,9 @@ email
 // emerck : 2014-04-03 Merck KGaA
 emerck
 
+// emerson : 2015-07-23 Emerson Electric Co.
+emerson
+
 // energy : 2014-09-11 Binky Birch, LLC
 energy
 
@@ -7379,12 +7839,18 @@ engineering
 // enterprises : 2013-09-20 Snow Oaks, LLC
 enterprises
 
+// epost : 2015-07-23 Deutsche Post AG
+epost
+
 // epson : 2014-12-04 Seiko Epson Corporation
 epson
 
 // equipment : 2013-08-27 Corn Station, LLC
 equipment
 
+// ericsson : 2015-07-09 Telefonaktiebolaget L M Ericsson
+ericsson
+
 // erni : 2014-04-03 ERNI Group Holding AG
 erni
 
@@ -7394,6 +7860,9 @@ esq
 // estate : 2013-08-27 Trixy Park, LLC
 estate
 
+// esurance : 2015-07-23 Esurance Insurance Company
+esurance
+
 // eurovision : 2014-04-24 European Broadcasting Union (EBU)
 eurovision
 
@@ -7415,6 +7884,12 @@ expert
 // exposed : 2013-12-05 Victor Beach, LLC
 exposed
 
+// express : 2015-02-11 Sea Sunset, LLC
+express
+
+// extraspace : 2015-05-14 Extra Space Storage LLC
+extraspace
+
 // fage : 2014-12-18 Fage International S.A.
 fage
 
@@ -7427,6 +7902,9 @@ fairwinds
 // faith : 2014-11-20 dot Faith Limited
 faith
 
+// family : 2015-04-02
+family
+
 // fan : 2014-03-06
 fan
 
@@ -7436,18 +7914,39 @@ fans
 // farm : 2013-11-07 Just Maple, LLC
 farm
 
+// farmers : 2015-07-09 Farmers Insurance Exchange
+farmers
+
 // fashion : 2014-07-03 Top Level Domain Holdings Limited
 fashion
 
 // fast : 2014-12-18 Amazon EU S.à r.l.
 fast
 
+// fedex : 2015-08-06 Federal Express Corporation
+fedex
+
 // feedback : 2013-12-19 Top Level Spectrum, Inc.
 feedback
 
+// ferrari : 2015-07-31 Fiat Chrysler Automobiles N.V.
+ferrari
+
 // ferrero : 2014-12-18 Ferrero Trading Lux S.A.
 ferrero
 
+// fiat : 2015-07-31 Fiat Chrysler Automobiles N.V.
+fiat
+
+// fidelity : 2015-07-30 Fidelity Brokerage Services LLC
+fidelity
+
+// fido : 2015-08-06 Rogers Communications Partnership
+fido
+
+// film : 2015-01-08 Motion Picture Domain Registry Pty Ltd
+film
+
 // final : 2014-10-16 Núcleo de Informação e Coordenação do Ponto BR - NIC.br
 final
 
@@ -7457,6 +7956,9 @@ finance
 // financial : 2014-03-06 Just Cover, LLC
 financial
 
+// fire : 2015-06-25 Amazon EU S.à r.l.
+fire
+
 // firestone : 2014-12-18 Bridgestone Corporation
 firestone
 
@@ -7475,9 +7977,15 @@ fit
 // fitness : 2014-03-06 Brice Orchard, LLC
 fitness
 
+// flickr : 2015-04-02 Yahoo! Domain Services Inc.
+flickr
+
 // flights : 2013-12-05 Fox Station, LLC
 flights
 
+// flir : 2015-07-23 FLIR Systems, Inc.
+flir
+
 // florist : 2013-11-07 Half Cypress, LLC
 florist
 
@@ -7493,6 +8001,9 @@ fly
 // foo : 2014-01-23 Charleston Road Registry Inc.
 foo
 
+// foodnetwork : 2015-07-02 Lifestyle Domain Holdings, Inc.
+foodnetwork
+
 // football : 2014-12-18 Foggy Farms, LLC
 football
 
@@ -7505,15 +8016,36 @@ forex
 // forsale : 2014-05-22
 forsale
 
+// forum : 2015-04-02 Fegistry, LLC
+forum
+
 // foundation : 2013-12-05 John Dale, LLC
 foundation
 
+// fresenius : 2015-07-30 Fresenius Immobilien-Verwaltungs-GmbH
+fresenius
+
 // frl : 2014-05-15 FRLregistry B.V.
 frl
 
 // frogans : 2013-12-19 OP3FT
 frogans
 
+// frontdoor : 2015-07-02 Lifestyle Domain Holdings, Inc.
+frontdoor
+
+// frontier : 2015-02-05 Frontier Communications Corporation
+frontier
+
+// ftr : 2015-07-16 Frontier Communications Corporation
+ftr
+
+// fujitsu : 2015-07-30 Fujitsu Limited
+fujitsu
+
+// fujixerox : 2015-07-23 Xerox DNHC LLC
+fujixerox
+
 // fund : 2014-03-20 John Castle, LLC
 fund
 
@@ -7523,19 +8055,37 @@ furniture
 // futbol : 2013-09-20
 futbol
 
+// fyi : 2015-04-02 Silver Tigers, LLC
+fyi
+
 // gal : 2013-11-07 Asociación puntoGAL
 gal
 
 // gallery : 2013-09-13 Sugar House, LLC
 gallery
 
+// gallo : 2015-06-11 Gallo Vineyards, Inc.
+gallo
+
+// gallup : 2015-02-19 Gallup, Inc.
+gallup
+
+// game : 2015-05-28 Uniregistry, Corp.
+game
+
+// games : 2015-05-28 Foggy Beach, LLC
+games
+
+// gap : 2015-07-31 The Gap, Inc.
+gap
+
 // garden : 2014-06-26 Top Level Domain Holdings Limited
 garden
 
 // gbiz : 2014-07-17 Charleston Road Registry Inc.
 gbiz
 
-// gdn : 2014-07-31 Joint Stock Company \
+// gdn : 2014-07-31 Joint Stock Company "Navigation-information systems"
 gdn
 
 // gea : 2014-12-04 GEA Group Aktiengesellschaft
@@ -7544,6 +8094,12 @@ gea
 // gent : 2014-01-23 COMBELL GROUP NV/SA
 gent
 
+// genting : 2015-03-12 Resorts World Inc Pte. Ltd.
+genting
+
+// george : 2015-07-31 Wal-Mart Stores, Inc.
+george
+
 // ggee : 2014-01-09 GMO Internet, Inc.
 ggee
 
@@ -7559,6 +8115,9 @@ gives
 // giving : 2014-11-13 Giving Limited
 giving
 
+// glade : 2015-07-23 Johnson Shareholdings, Inc.
+glade
+
 // glass : 2013-11-07 Black Cover, LLC
 glass
 
@@ -7580,6 +8139,12 @@ gmo
 // gmx : 2014-04-24 1&1 Mail & Media GmbH
 gmx
 
+// godaddy : 2015-07-23 Go Daddy East, LLC
+godaddy
+
+// gold : 2015-01-22 June Edge, LLC
+gold
+
 // goldpoint : 2014-11-20 YODOBASHI CAMERA CO.,LTD.
 goldpoint
 
@@ -7589,6 +8154,12 @@ golf
 // goo : 2014-12-18 NTT Resonant Inc.
 goo
 
+// goodhands : 2015-07-31 Allstate Fire and Casualty Insurance Company
+goodhands
+
+// goodyear : 2015-07-02 The Goodyear Tire & Rubber Company
+goodyear
+
 // goog : 2014-11-20 Charleston Road Registry Inc.
 goog
 
@@ -7601,6 +8172,12 @@ gop
 // got : 2014-12-18 Amazon EU S.à r.l.
 got
 
+// gotv : 2015-03-12 MultiChoice (Proprietary) Limited
+gotv
+
+// grainger : 2015-05-07 Grainger Registry Services, LLC
+grainger
+
 // graphics : 2013-09-13 Over Madison, LLC
 graphics
 
@@ -7616,6 +8193,9 @@ gripe
 // group : 2014-08-15 Romeo Town, LLC
 group
 
+// guardian : 2015-07-30 The Guardian Life Insurance Company of America
+guardian
+
 // gucci : 2014-11-13 Guccio Gucci S.p.a.
 gucci
 
@@ -7640,39 +8220,78 @@ hangout
 // haus : 2013-12-05
 haus
 
+// hbo : 2015-07-30 HBO Registry Services, Inc.
+hbo
+
+// hdfc : 2015-07-30 HOUSING DEVELOPMENT FINANCE CORPORATION LIMITED
+hdfc
+
+// hdfcbank : 2015-02-12 HDFC Bank Limited
+hdfcbank
+
+// health : 2015-02-11 DotHealth, LLC
+health
+
 // healthcare : 2014-06-12 Silver Glen, LLC
 healthcare
 
 // help : 2014-06-26 Uniregistry, Corp.
 help
 
+// helsinki : 2015-02-05 City of Helsinki
+helsinki
+
 // here : 2014-02-06 Charleston Road Registry Inc.
 here
 
 // hermes : 2014-07-10 HERMES INTERNATIONAL
 hermes
 
+// hgtv : 2015-07-02 Lifestyle Domain Holdings, Inc.
+hgtv
+
 // hiphop : 2014-03-06 Uniregistry, Corp.
 hiphop
 
+// hisamitsu : 2015-07-16 Hisamitsu Pharmaceutical Co.,Inc.
+hisamitsu
+
 // hitachi : 2014-10-31 Hitachi, Ltd.
 hitachi
 
 // hiv : 2014-03-13 dotHIV gemeinnuetziger e.V.
 hiv
 
+// hkt : 2015-05-14 PCCW-HKT DataCom Services Limited
+hkt
+
+// hockey : 2015-03-19 Half Willow, LLC
+hockey
+
 // holdings : 2013-08-27 John Madison, LLC
 holdings
 
 // holiday : 2013-11-07 Goose Woods, LLC
 holiday
 
+// homedepot : 2015-04-02 Homer TLC, Inc.
+homedepot
+
+// homegoods : 2015-07-16 The TJX Companies, Inc.
+homegoods
+
 // homes : 2014-01-09 DERHomes, LLC
 homes
 
+// homesense : 2015-07-16 The TJX Companies, Inc.
+homesense
+
 // honda : 2014-12-18 Honda Motor Co., Ltd.
 honda
 
+// honeywell : 2015-07-23 Honeywell GTLD LLC
+honeywell
+
 // horse : 2013-11-21 Top Level Domain Holdings Limited
 horse
 
@@ -7682,6 +8301,9 @@ host
 // hosting : 2014-05-29 Uniregistry, Corp.
 hosting
 
+// hoteles : 2015-03-05 Travel Reservations SRL
+hoteles
+
 // hotmail : 2014-12-18 Microsoft Corporation
 hotmail
 
@@ -7694,18 +8316,48 @@ how
 // hsbc : 2014-10-24 HSBC Holdings PLC
 hsbc
 
+// htc : 2015-04-02 HTC corporation
+htc
+
+// hughes : 2015-07-30 Hughes Satellite Systems Corporation
+hughes
+
+// hyatt : 2015-07-30 Hyatt GTLD, L.L.C.
+hyatt
+
+// hyundai : 2015-07-09 Hyundai Motor Company
+hyundai
+
 // ibm : 2014-07-31 International Business Machines Corporation
 ibm
 
+// icbc : 2015-02-19 Industrial and Commercial Bank of China Limited
+icbc
+
 // ice : 2014-10-30 IntercontinentalExchange, Inc.
 ice
 
+// icu : 2015-01-08 One.com A/S
+icu
+
+// ieee : 2015-07-23 IEEE Global LLC
+ieee
+
 // ifm : 2014-01-30 ifm electronic gmbh
 ifm
 
 // iinet : 2014-07-03 Connect West Pty. Ltd.
 iinet
 
+// ikano : 2015-07-09 Ikano S.A.
+ikano
+
+// imamat : 2015-08-06 Fondation Aga Khan (Aga Khan Foundation)
+imamat
+
+// imdb : 2015-06-25 Amazon EU S.à r.l.
+imdb
+
 // immo : 2014-07-10 Auburn Bloom, LLC
 immo
 
@@ -7727,12 +8379,21 @@ ink
 // institute : 2013-11-07 Outer Maple, LLC
 institute
 
+// insurance : 2015-02-19 fTLD Registry Services LLC
+insurance
+
 // insure : 2014-03-20 Pioneer Willow, LLC
 insure
 
+// intel : 2015-08-06 Intel Corporation
+intel
+
 // international : 2013-11-07 Wild Way, LLC
 international
 
+// intuit : 2015-07-30 Intuit Administrative Services, Inc.
+intuit
+
 // investments : 2014-03-20 Holly Glen, LLC
 investments
 
@@ -7742,6 +8403,12 @@ ipiranga
 // irish : 2014-08-07 Dot-Irish LLC
 irish
 
+// iselect : 2015-02-11 iSelect Ltd
+iselect
+
+// ismaili : 2015-08-06 Fondation Aga Khan (Aga Khan Foundation)
+ismaili
+
 // ist : 2014-08-28 Istanbul Metropolitan Municipality
 ist
 
@@ -7751,6 +8418,9 @@ istanbul
 // itau : 2014-10-02 Itau Unibanco Holding S.A.
 itau
 
+// itv : 2015-07-09 ITV Services Limited
+itv
+
 // iwc : 2014-06-23 Richemont DNS Inc.
 iwc
 
@@ -7763,12 +8433,33 @@ java
 // jcb : 2014-11-20 JCB Co., Ltd.
 jcb
 
+// jcp : 2015-04-23 JCP Media, Inc.
+jcp
+
+// jeep : 2015-07-30 FCA US LLC.
+jeep
+
 // jetzt : 2014-01-09 New TLD Company AB
 jetzt
 
+// jewelry : 2015-03-05 Wild Bloom, LLC
+jewelry
+
+// jio : 2015-04-02 Affinity Names, Inc.
+jio
+
 // jlc : 2014-12-04 Richemont DNS Inc.
 jlc
 
+// jll : 2015-04-02 Jones Lang LaSalle Incorporated
+jll
+
+// jmp : 2015-03-26 Matrix IP LLC
+jmp
+
+// jnj : 2015-06-18 Johnson & Johnson Services, Inc.
+jnj
+
 // joburg : 2014-03-24 ZA Central Registry NPC trading as ZA Central Registry
 joburg
 
@@ -7778,27 +8469,48 @@ jot
 // joy : 2014-12-18 Amazon EU S.à r.l.
 joy
 
+// jpmorgan : 2015-04-30 JPMorgan Chase & Co.
+jpmorgan
+
 // jprs : 2014-09-18 Japan Registry Services Co., Ltd.
 jprs
 
 // juegos : 2014-03-20 Uniregistry, Corp.
 juegos
 
+// juniper : 2015-07-30 JUNIPER NETWORKS, INC.
+juniper
+
 // kaufen : 2013-11-07 United TLD Holdco Ltd.
 kaufen
 
 // kddi : 2014-09-12 KDDI CORPORATION
 kddi
 
+// kerryhotels : 2015-04-30 Kerry Trading Co. Limited
+kerryhotels
+
+// kerrylogistics : 2015-04-09 Kerry Trading Co. Limited
+kerrylogistics
+
+// kerryproperties : 2015-04-09 Kerry Trading Co. Limited
+kerryproperties
+
 // kfh : 2014-12-04 Kuwait Finance House
 kfh
 
+// kia : 2015-07-09 KIA MOTORS CORPORATION
+kia
+
 // kim : 2013-09-23 Afilias Limited
 kim
 
 // kinder : 2014-11-07 Ferrero Trading Lux S.A.
 kinder
 
+// kindle : 2015-06-25 Amazon EU S.à r.l.
+kindle
+
 // kitchen : 2013-09-20 Just Goodbye, LLC
 kitchen
 
@@ -7808,34 +8520,79 @@ kiwi
 // koeln : 2014-01-09 NetCologne Gesellschaft für Telekommunikation mbH
 koeln
 
+// komatsu : 2015-01-08 Komatsu Ltd.
+komatsu
+
+// kosher : 2015-08-20 Kosher Marketing Assets LLC
+kosher
+
+// kpmg : 2015-04-23 KPMG International Cooperative (KPMG International Genossenschaft)
+kpmg
+
+// kpn : 2015-01-08 Koninklijke KPN N.V.
+kpn
+
 // krd : 2013-12-05 KRG Department of Information Technology
 krd
 
 // kred : 2013-12-19 KredTLD Pty Ltd
 kred
 
+// kuokgroup : 2015-04-09 Kerry Trading Co. Limited
+kuokgroup
+
+// kyknet : 2015-03-05 Electronic Media Network (Pty) Ltd
+kyknet
+
 // kyoto : 2014-11-07 Academic Institution: Kyoto Jyoho Gakuen
 kyoto
 
 // lacaixa : 2014-01-09 CAIXA D'ESTALVIS I PENSIONS DE BARCELONA
 lacaixa
 
+// ladbrokes : 2015-08-06 LADBROKES INTERNATIONAL PLC
+ladbrokes
+
+// lamborghini : 2015-06-04 Automobili Lamborghini S.p.A.
+lamborghini
+
+// lancaster : 2015-02-12 LANCASTER
+lancaster
+
+// lancia : 2015-07-31 Fiat Chrysler Automobiles N.V.
+lancia
+
+// lancome : 2015-07-23 L'Oréal
+lancome
+
 // land : 2013-09-10 Pine Moon, LLC
 land
 
 // landrover : 2014-11-13 Jaguar Land Rover Ltd
 landrover
 
+// lanxess : 2015-07-30 LANXESS Corporation
+lanxess
+
+// lasalle : 2015-04-02 Jones Lang LaSalle Incorporated
+lasalle
+
 // lat : 2014-10-16 ECOM-LAC Federaciòn de Latinoamèrica y el Caribe para Internet y el Comercio Electrònico
 lat
 
+// latino : 2015-07-30 Dish DBS Corporation
+latino
+
 // latrobe : 2014-06-16 La Trobe University
 latrobe
 
+// law : 2015-01-22 Minds + Machines Group Limited
+law
+
 // lawyer : 2014-03-20
 lawyer
 
-// lds : 2014-03-20 IRI Domain Management, LLC (\
+// lds : 2014-03-20 IRI Domain Management, LLC ("Applicant")
 lds
 
 // lease : 2014-03-06 Victor Trail, LLC
@@ -7844,9 +8601,18 @@ lease
 // leclerc : 2014-08-07 A.C.D. LEC Association des Centres Distributeurs Edouard Leclerc
 leclerc
 
+// lefrak : 2015-07-16 LeFrak Organization, Inc.
+lefrak
+
 // legal : 2014-10-16 Blue Falls, LLC
 legal
 
+// lego : 2015-07-16 LEGO Juris A/S
+lego
+
+// lexus : 2015-04-23 TOYOTA MOTOR CORPORATION
+lexus
+
 // lgbt : 2014-05-08 Afilias Limited
 lgbt
 
@@ -7859,6 +8625,9 @@ lidl
 // life : 2014-02-06 Trixy Oaks, LLC
 life
 
+// lifeinsurance : 2015-01-15 American Council of Life Insurers
+lifeinsurance
+
 // lifestyle : 2014-12-11 Lifestyle Domain Holdings, Inc.
 lifestyle
 
@@ -7868,6 +8637,9 @@ lighting
 // like : 2014-12-18 Amazon EU S.à r.l.
 like
 
+// lilly : 2015-07-31 Eli Lilly and Company
+lilly
+
 // limited : 2014-03-06 Big Fest, LLC
 limited
 
@@ -7883,15 +8655,36 @@ linde
 // link : 2013-11-14 Uniregistry, Corp.
 link
 
-// live : 2014-12-04 Half Woods, LLC
+// lipsy : 2015-06-25 Lipsy Ltd
+lipsy
+
+// live : 2014-12-04
 live
 
+// living : 2015-07-30 Lifestyle Domain Holdings, Inc.
+living
+
+// lixil : 2015-03-19 LIXIL Group Corporation
+lixil
+
 // loan : 2014-11-20 dot Loan Limited
 loan
 
 // loans : 2014-03-20 June Woods, LLC
 loans
 
+// locker : 2015-06-04 Dish DBS Corporation
+locker
+
+// locus : 2015-06-25 Locus Analytics LLC
+locus
+
+// loft : 2015-07-30 Annco, Inc.
+loft
+
+// lol : 2015-01-30 Uniregistry, Corp.
+lol
+
 // london : 2013-11-14 Dot London Domains Limited
 london
 
@@ -7901,12 +8694,24 @@ lotte
 // lotto : 2014-04-10 Afilias Limited
 lotto
 
+// love : 2014-12-22 Merchant Law Group LLP
+love
+
+// lpl : 2015-07-30 LPL Holdings, Inc.
+lpl
+
+// lplfinancial : 2015-07-30 LPL Holdings, Inc.
+lplfinancial
+
 // ltd : 2014-09-25 Over Corner, LLC
 ltd
 
 // ltda : 2014-04-17 DOMAIN ROBOT SERVICOS DE HOSPEDAGEM NA INTERNET LTDA
 ltda
 
+// lundbeck : 2015-08-06 H. Lundbeck A/S
+lundbeck
+
 // lupin : 2014-11-07 LUPIN LIMITED
 lupin
 
@@ -7916,6 +8721,9 @@ luxe
 // luxury : 2013-10-17 Luxury Partners, LLC
 luxury
 
+// macys : 2015-07-31 Macys, Inc.
+macys
+
 // madrid : 2014-05-01 Comunidad de Madrid
 madrid
 
@@ -7925,6 +8733,9 @@ maif
 // maison : 2013-12-05 Victor Frostbite, LLC
 maison
 
+// makeup : 2015-01-15 L'Oréal
+makeup
+
 // man : 2014-12-04 MAN SE
 man
 
@@ -7946,10 +8757,34 @@ markets
 // marriott : 2014-10-09 Marriott Worldwide Corporation
 marriott
 
+// marshalls : 2015-07-16 The TJX Companies, Inc.
+marshalls
+
+// maserati : 2015-07-31 Fiat Chrysler Automobiles N.V.
+maserati
+
+// mattel : 2015-08-06 Mattel Sites, Inc.
+mattel
+
+// mba : 2015-04-02 Lone Hollow, LLC
+mba
+
+// mcd : 2015-07-30 McDonald’s Corporation
+mcd
+
+// mcdonalds : 2015-07-30 McDonald’s Corporation
+mcdonalds
+
+// mckinsey : 2015-07-31 McKinsey Holdings, Inc.
+mckinsey
+
+// med : 2015-08-06 Medistry LLC
+med
+
 // media : 2014-03-06 Grand Glen, LLC
 media
 
-// meet : 2014-01-16 Afilias Limited
+// meet : 2014-01-16
 meet
 
 // melbourne : 2014-05-29 The Crown in right of the State of Victoria, represented by its Department of State Development, Business and Innovation
@@ -7961,12 +8796,18 @@ meme
 // memorial : 2014-10-16 Dog Beach, LLC
 memorial
 
+// men : 2015-02-26 Exclusive Registry Limited
+men
+
 // menu : 2013-09-11 Wedding TLD2, LLC
 menu
 
 // meo : 2014-11-07 PT Comunicacoes S.A.
 meo
 
+// metlife : 2015-05-07 MetLife Services and Solutions, LLC
+metlife
+
 // miami : 2013-12-19 Top Level Domain Holdings Limited
 miami
 
@@ -7976,9 +8817,27 @@ microsoft
 // mini : 2014-01-09 Bayerische Motoren Werke Aktiengesellschaft
 mini
 
+// mint : 2015-07-30 Intuit Administrative Services, Inc.
+mint
+
+// mit : 2015-07-02 Massachusetts Institute of Technology
+mit
+
+// mitsubishi : 2015-07-23 Mitsubishi Corporation
+mitsubishi
+
+// mlb : 2015-05-21 MLB Advanced Media DH, LLC
+mlb
+
+// mls : 2015-04-23 The Canadian Real Estate Association
+mls
+
 // mma : 2014-11-07 MMA IARD
 mma
 
+// mnet : 2015-03-05 Electronic Media Network (Pty) Ltd
+mnet
+
 // mobily : 2014-12-18 GreenTech Consultancy Company W.L.L.
 mobily
 
@@ -7991,6 +8850,9 @@ moe
 // moi : 2014-12-18 Amazon EU S.à r.l.
 moi
 
+// mom : 2015-04-16 Uniregistry, Corp.
+mom
+
 // monash : 2013-09-30 Monash University
 monash
 
@@ -8000,7 +8862,10 @@ money
 // montblanc : 2014-06-23 Richemont DNS Inc.
 montblanc
 
-// mormon : 2013-12-05 IRI Domain Management, LLC (\
+// mopar : 2015-07-30 FCA US LLC.
+mopar
+
+// mormon : 2013-12-05 IRI Domain Management, LLC ("Applicant")
 mormon
 
 // mortgage : 2014-03-20
@@ -8009,33 +8874,78 @@ mortgage
 // moscow : 2013-12-19 Foundation for Assistance for Internet Technologies and Infrastructure Development (FAITID)
 moscow
 
+// moto : 2015-06-04 Charleston Road Registry Inc.
+moto
+
 // motorcycles : 2014-01-09 DERMotorcycles, LLC
 motorcycles
 
 // mov : 2014-01-30 Charleston Road Registry Inc.
 mov
 
+// movie : 2015-02-05 New Frostbite, LLC
+movie
+
 // movistar : 2014-10-16 Telefónica S.A.
 movistar
 
+// msd : 2015-07-23 MSD Registry Holdings, Inc.
+msd
+
 // mtn : 2014-12-04 MTN Dubai Limited
 mtn
 
 // mtpc : 2014-11-20 Mitsubishi Tanabe Pharma Corporation
 mtpc
 
+// mtr : 2015-03-12 MTR Corporation Limited
+mtr
+
+// multichoice : 2015-03-12 MultiChoice (Proprietary) Limited
+multichoice
+
+// mutual : 2015-04-02 Northwestern Mutual MU TLD Registry, LLC
+mutual
+
+// mutuelle : 2015-06-18 Fédération Nationale de la Mutualité Française
+mutuelle
+
+// mzansimagic : 2015-03-05 Electronic Media Network (Pty) Ltd
+mzansimagic
+
+// nab : 2015-08-20 National Australia Bank Limited
+nab
+
 // nadex : 2014-12-11 IG Group Holdings PLC
 nadex
 
 // nagoya : 2013-10-24 GMO Registry, Inc.
 nagoya
 
+// naspers : 2015-02-12 Intelprop (Proprietary) Limited
+naspers
+
+// nationwide : 2015-07-23 Nationwide Mutual Insurance Company
+nationwide
+
+// natura : 2015-03-12 NATURA COSMÉTICOS S.A.
+natura
+
 // navy : 2014-03-06 United TLD Holdco Ltd.
 navy
 
+// nba : 2015-07-31 NBA REGISTRY, LLC
+nba
+
+// nec : 2015-01-08 NEC Corporation
+nec
+
 // netbank : 2014-06-26 COMMONWEALTH BANK OF AUSTRALIA
 netbank
 
+// netflix : 2015-06-18 Netflix, Inc.
+netflix
+
 // network : 2013-11-14 Trixy Manor, LLC
 network
 
@@ -8045,12 +8955,21 @@ neustar
 // new : 2014-01-30 Charleston Road Registry Inc.
 new
 
-// news : 2014-12-18 Hidden Bloom, LLC
+// news : 2014-12-18
 news
 
+// next : 2015-06-18 Next plc
+next
+
+// nextdirect : 2015-06-18 Next plc
+nextdirect
+
 // nexus : 2014-07-24 Charleston Road Registry Inc.
 nexus
 
+// nfl : 2015-07-23 NFL Reg Ops LLC
+nfl
+
 // ngo : 2014-03-06 Public Interest Registry
 ngo
 
@@ -8060,18 +8979,36 @@ nhk
 // nico : 2014-12-04 DWANGO Co., Ltd.
 nico
 
+// nike : 2015-07-23 NIKE, Inc.
+nike
+
+// nikon : 2015-05-21 NIKON CORPORATION
+nikon
+
 // ninja : 2013-11-07 United TLD Holdco Ltd.
 ninja
 
 // nissan : 2014-03-27 NISSAN MOTOR CO., LTD.
 nissan
 
+// nokia : 2015-01-08 Nokia Corporation
+nokia
+
+// northwesternmutual : 2015-06-18 Northwestern Mutual Registry, LLC
+northwesternmutual
+
 // norton : 2014-12-04 Symantec Corporation
 norton
 
+// now : 2015-06-25 Amazon EU S.à r.l.
+now
+
 // nowruz : 2014-09-04 Asia Green IT System Bilgisayar San. ve Tic. Ltd. Sti.
 nowruz
 
+// nowtv : 2015-05-14 Starbucks (HK) Limited
+nowtv
+
 // nra : 2014-05-22 NRA Holdings Company, INC.
 nra
 
@@ -8087,9 +9024,33 @@ nyc
 // obi : 2014-09-25 OBI Group Holding SE & Co. KGaA
 obi
 
+// observer : 2015-04-30 Guardian News and Media Limited
+observer
+
+// off : 2015-07-23 Johnson Shareholdings, Inc.
+off
+
+// office : 2015-03-12 Microsoft Corporation
+office
+
 // okinawa : 2013-12-05 BusinessRalliart Inc.
 okinawa
 
+// olayan : 2015-05-14 Crescent Holding GmbH
+olayan
+
+// olayangroup : 2015-05-14 Crescent Holding GmbH
+olayangroup
+
+// oldnavy : 2015-07-31 The Gap, Inc.
+oldnavy
+
+// ollo : 2015-06-04 Dish DBS Corporation
+ollo
+
+// omega : 2015-01-08 The Swatch Group Ltd
+omega
+
 // one : 2014-11-07 One.com A/S
 one
 
@@ -8099,27 +9060,51 @@ ong
 // onl : 2013-09-16 I-Registry Ltd.
 onl
 
+// online : 2015-01-15 DotOnline Inc.
+online
+
+// onyourside : 2015-07-23 Nationwide Mutual Insurance Company
+onyourside
+
 // ooo : 2014-01-09 INFIBEAM INCORPORATION LIMITED
 ooo
 
+// open : 2015-07-31 American Express Travel Related Services Company, Inc.
+open
+
 // oracle : 2014-06-19 Oracle Corporation
 oracle
 
+// orange : 2015-03-12 Orange Brand Services Limited
+orange
+
 // organic : 2014-03-27 Afilias Limited
 organic
 
+// orientexpress : 2015-02-05 Belmond Ltd.
+orientexpress
+
 // osaka : 2014-09-04 Interlink Co., Ltd.
 osaka
 
 // otsuka : 2013-10-11 Otsuka Holdings Co., Ltd.
 otsuka
 
+// ott : 2015-06-04 Dish DBS Corporation
+ott
+
 // ovh : 2014-01-16 OVH SAS
 ovh
 
 // page : 2014-12-04 Charleston Road Registry Inc.
 page
 
+// pamperedchef : 2015-02-05 The Pampered Chef, Ltd.
+pamperedchef
+
+// panasonic : 2015-07-30 Panasonic Corporation
+panasonic
+
 // panerai : 2014-11-07 Richemont DNS Inc.
 panerai
 
@@ -8138,6 +9123,18 @@ parts
 // party : 2014-09-11 Blue Sky Registry Limited
 party
 
+// passagens : 2015-03-05 Travel Reservations SRL
+passagens
+
+// payu : 2015-02-12 MIH PayU B.V.
+payu
+
+// pccw : 2015-05-14 PCCW Enterprises Limited
+pccw
+
+// pet : 2015-05-07 Afilias plc
+pet
+
 // pharmacy : 2014-06-19 National Association of Boards of Pharmacy
 pharmacy
 
@@ -8168,36 +9165,66 @@ pictet
 // pictures : 2014-03-06 Foggy Sky, LLC
 pictures
 
+// pid : 2015-01-08 Top Level Spectrum, Inc.
+pid
+
 // pin : 2014-12-18 Amazon EU S.à r.l.
 pin
 
+// ping : 2015-06-11 Ping Registry Provider, Inc.
+ping
+
 // pink : 2013-10-01 Afilias Limited
 pink
 
+// pioneer : 2015-07-16 Pioneer Corporation
+pioneer
+
 // pizza : 2014-06-26 Foggy Moon, LLC
 pizza
 
 // place : 2014-04-24 Snow Galley, LLC
 place
 
+// play : 2015-03-05 Charleston Road Registry Inc.
+play
+
+// playstation : 2015-07-02 Sony Computer Entertainment Inc.
+playstation
+
 // plumbing : 2013-09-10 Spring Tigers, LLC
 plumbing
 
+// plus : 2015-02-05 Sugar Mill, LLC
+plus
+
+// pnc : 2015-07-02 PNC Domain Co., LLC
+pnc
+
 // pohl : 2014-06-23 Deutsche Vermögensberatung Aktiengesellschaft DVAG
 pohl
 
 // poker : 2014-07-03 Afilias Domains No. 5 Limited
 poker
 
+// politie : 2015-08-20 Politie Nederland
+politie
+
 // porn : 2014-10-16 ICM Registry PN LLC
 porn
 
+// pramerica : 2015-07-30 Prudential Financial, Inc.
+pramerica
+
 // praxi : 2013-12-05 Praxi S.p.A.
 praxi
 
 // press : 2014-04-03 DotPress Inc.
 press
 
+// prime : 2015-06-25 Amazon EU S.à r.l.
+prime
+
 // prod : 2014-01-23 Charleston Road Registry Inc.
 prod
 
@@ -8207,6 +9234,9 @@ productions
 // prof : 2014-07-24 Charleston Road Registry Inc.
 prof
 
+// progressive : 2015-07-23 Progressive Casualty Insurance Company
+progressive
+
 // promo : 2014-12-18 Play.PROMO Oy
 promo
 
@@ -8216,6 +9246,15 @@ properties
 // property : 2014-05-22 Uniregistry, Corp.
 property
 
+// protection : 2015-04-23
+protection
+
+// pru : 2015-07-30 Prudential Financial, Inc.
+pru
+
+// prudential : 2015-07-30 Prudential Financial, Inc.
+prudential
+
 // pub : 2013-12-12 United TLD Holdco Ltd.
 pub
 
@@ -8225,15 +9264,27 @@ qpon
 // quebec : 2013-12-19 PointQuébec Inc
 quebec
 
+// quest : 2015-03-26 Quest ION Limited
+quest
+
+// qvc : 2015-07-30 QVC, Inc.
+qvc
+
 // racing : 2014-12-04 Premier Registry Limited
 racing
 
+// raid : 2015-07-23 Johnson Shareholdings, Inc.
+raid
+
 // read : 2014-12-18 Amazon EU S.à r.l.
 read
 
 // realtor : 2014-05-29 Real Estate Domains LLC
 realtor
 
+// realty : 2015-03-19 Fegistry, LLC
+realty
+
 // recipes : 2013-10-17 Grand Island, LLC
 recipes
 
@@ -8243,10 +9294,13 @@ red
 // redstone : 2014-10-31 Redstone Haute Couture Co., Ltd.
 redstone
 
+// redumbrella : 2015-03-26 Travelers TLD, LLC
+redumbrella
+
 // rehab : 2014-03-06 United TLD Holdco Ltd.
 rehab
 
-// reise : 2014-03-13 dotreise GmbH
+// reise : 2014-03-13
 reise
 
 // reisen : 2014-03-06 New Cypress, LLC
@@ -8255,6 +9309,9 @@ reisen
 // reit : 2014-09-04 National Association of Real Estate Investment Trusts, Inc.
 reit
 
+// reliance : 2015-04-02 Reliance Industries Limited
+reliance
+
 // ren : 2013-12-12 Beijing Qianxiang Wangjing Technology Development Co., Ltd.
 ren
 
@@ -8285,12 +9342,24 @@ review
 // reviews : 2013-09-13
 reviews
 
+// rexroth : 2015-06-18 Robert Bosch GMBH
+rexroth
+
 // rich : 2013-11-21 I-Registry Ltd.
 rich
 
+// richardli : 2015-05-14 Pacific Century Asset Management (HK) Limited
+richardli
+
 // ricoh : 2014-11-20 Ricoh Company, Ltd.
 ricoh
 
+// rightathome : 2015-07-23 Johnson Shareholdings, Inc.
+rightathome
+
+// ril : 2015-04-02 Reliance Industries Limited
+ril
+
 // rio : 2014-02-27 Empresa Municipal de Informática SA - IPLANRIO
 rio
 
@@ -8306,6 +9375,9 @@ rocks
 // rodeo : 2013-12-19 Top Level Domain Holdings Limited
 rodeo
 
+// rogers : 2015-08-06 Rogers Communications Partnership
+rogers
+
 // room : 2014-12-18 Amazon EU S.à r.l.
 room
 
@@ -8315,6 +9387,12 @@ rsvp
 // ruhr : 2013-10-02 regiodot GmbH & Co. KG
 ruhr
 
+// run : 2015-03-19 Snow Park, LLC
+run
+
+// rwe : 2015-04-02 RWE AG
+rwe
+
 // ryukyu : 2014-01-09 BusinessRalliart Inc.
 ryukyu
 
@@ -8324,6 +9402,9 @@ saarland
 // safe : 2014-12-18 Amazon EU S.à r.l.
 safe
 
+// safety : 2015-01-08 Safety Registry Services, LLC.
+safety
+
 // sakura : 2014-12-18 SAKURA Internet Inc.
 sakura
 
@@ -8333,6 +9414,9 @@ sale
 // salon : 2014-12-11 Outer Orchard, LLC
 salon
 
+// samsclub : 2015-07-31 Wal-Mart Stores, Inc.
+samsclub
+
 // samsung : 2014-04-03 SAMSUNG SDS CO., LTD
 samsung
 
@@ -8354,18 +9438,30 @@ sapo
 // sarl : 2014-07-03 Delta Orchard, LLC
 sarl
 
+// sas : 2015-04-02 Research IP LLC
+sas
+
+// save : 2015-06-25 Amazon EU S.à r.l.
+save
+
 // saxo : 2014-10-31 Saxo Bank A/S
 saxo
 
+// sbi : 2015-03-12 STATE BANK OF INDIA
+sbi
+
 // sbs : 2014-11-07 SPECIAL BROADCASTING SERVICE CORPORATION
 sbs
 
 // sca : 2014-03-13 SVENSKA CELLULOSA AKTIEBOLAGET SCA (publ)
 sca
 
-// scb : 2014-02-20 The Siam Commercial Bank Public Company Limited (\
+// scb : 2014-02-20 The Siam Commercial Bank Public Company Limited ("SCB")
 scb
 
+// schaeffler : 2015-08-06 Schaeffler Technologies AG & Co. KG
+schaeffler
+
 // schmidt : 2014-04-03 SALM S.A.S.
 schmidt
 
@@ -8384,6 +9480,9 @@ schwarz
 // science : 2014-09-11 dot Science Limited
 science
 
+// scjohnson : 2015-07-23 Johnson Shareholdings, Inc.
+scjohnson
+
 // scor : 2014-10-31 SCOR SE
 scor
 
@@ -8393,6 +9492,9 @@ scot
 // seat : 2014-05-22 SEAT, S.A. (Sociedad Unipersonal)
 seat
 
+// security : 2015-05-14
+security
+
 // seek : 2014-12-04 Seek Limited
 seek
 
@@ -8402,6 +9504,12 @@ sener
 // services : 2014-02-27 Fox Castle, LLC
 services
 
+// ses : 2015-07-23 SES
+ses
+
+// seven : 2015-08-06 Seven West Media Ltd
+seven
+
 // sew : 2014-07-17 SEW-EURODRIVE GmbH & Co KG
 sew
 
@@ -8411,9 +9519,18 @@ sex
 // sexy : 2013-09-11 Uniregistry, Corp.
 sexy
 
+// sfr : 2015-08-13 Societe Francaise du Radiotelephone - SFR
+sfr
+
 // sharp : 2014-05-01 Sharp Corporation
 sharp
 
+// shaw : 2015-04-23 Shaw Cablesystems G.P.
+shaw
+
+// shell : 2015-07-30 Shell Information Technology International Inc
+shell
+
 // shia : 2014-09-04 Asia Green IT System Bilgisayar San. ve Tic. Ltd. Sti.
 shia
 
@@ -8423,24 +9540,63 @@ shiksha
 // shoes : 2013-10-02 Binky Galley, LLC
 shoes
 
+// shouji : 2015-01-08 QIHOO 360 TECHNOLOGY CO. LTD.
+shouji
+
+// show : 2015-03-05 Snow Beach, LLC
+show
+
+// showtime : 2015-08-06 CBS Domains Inc.
+showtime
+
 // shriram : 2014-01-23 Shriram Capital Ltd.
 shriram
 
+// silk : 2015-06-25 Amazon EU S.à r.l.
+silk
+
+// sina : 2015-03-12 Sina Corporation
+sina
+
 // singles : 2013-08-27 Fern Madison, LLC
 singles
 
+// site : 2015-01-15 DotSite Inc.
+site
+
+// ski : 2015-04-09 STARTING DOT LIMITED
+ski
+
+// skin : 2015-01-15 L'Oréal
+skin
+
 // sky : 2014-06-19 Sky IP International Ltd, a company incorporated in England and Wales, operating via its registered Swiss branch
 sky
 
 // skype : 2014-12-18 Microsoft Corporation
 skype
 
+// sling : 2015-07-30 Hughes Satellite Systems Corporation
+sling
+
+// smart : 2015-07-09 Smart Communications, Inc. (SMART)
+smart
+
 // smile : 2014-12-18 Amazon EU S.à r.l.
 smile
 
+// sncf : 2015-02-19 Société Nationale des Chemins de fer Francais S N C F
+sncf
+
+// soccer : 2015-03-26 Foggy Shadow, LLC
+soccer
+
 // social : 2013-11-07 United TLD Holdco Ltd.
 social
 
+// softbank : 2015-07-02 SoftBank Corp.
+softbank
+
 // software : 2014-03-20
 software
 
@@ -8453,6 +9609,12 @@ solar
 // solutions : 2013-11-07 Silver Cover, LLC
 solutions
 
+// song : 2015-02-26 Amazon EU S.à r.l.
+song
+
+// sony : 2015-01-08 Sony Corporation
+sony
+
 // soy : 2014-01-23 Charleston Road Registry Inc.
 soy
 
@@ -8462,12 +9624,36 @@ space
 // spiegel : 2014-02-05 SPIEGEL-Verlag Rudolf Augstein GmbH & Co. KG
 spiegel
 
+// spot : 2015-02-26 Amazon EU S.à r.l.
+spot
+
 // spreadbetting : 2014-12-11 IG Group Holdings PLC
 spreadbetting
 
+// srl : 2015-05-07 mySRL GmbH
+srl
+
+// srt : 2015-07-30 FCA US LLC.
+srt
+
 // stada : 2014-11-13 STADA Arzneimittel AG
 stada
 
+// staples : 2015-07-30 Staples, Inc.
+staples
+
+// star : 2015-01-08 Star India Private Limited
+star
+
+// starhub : 2015-02-05 StarHub Limited
+starhub
+
+// statebank : 2015-03-12 STATE BANK OF INDIA
+statebank
+
+// statefarm : 2015-07-30 State Farm Mutual Automobile Insurance Company
+statefarm
+
 // statoil : 2014-12-04 Statoil ASA
 statoil
 
@@ -8480,12 +9666,27 @@ stcgroup
 // stockholm : 2014-12-18 Stockholms kommun
 stockholm
 
+// storage : 2014-12-22 Self Storage Company LLC
+storage
+
+// store : 2015-04-09 DotStore Inc.
+store
+
+// studio : 2015-02-11
+studio
+
 // study : 2014-12-11 OPEN UNIVERSITIES AUSTRALIA PTY LTD
 study
 
 // style : 2014-12-04 Binky Moon, LLC
 style
 
+// sucks : 2014-12-22 Vox Populi Registry Inc.
+sucks
+
+// supersport : 2015-03-05 SuperSport International Holdings Proprietary Limited
+supersport
+
 // supplies : 2013-12-19 Atomic Fields, LLC
 supplies
 
@@ -8504,6 +9705,12 @@ surgery
 // suzuki : 2014-02-20 SUZUKI MOTOR CORPORATION
 suzuki
 
+// swatch : 2015-01-08 The Swatch Group Ltd
+swatch
+
+// swiftcover : 2015-07-23 Swiftcover Insurance Services Limited
+swiftcover
+
 // swiss : 2014-10-16 Swiss Confederation
 swiss
 
@@ -8522,7 +9729,19 @@ tab
 // taipei : 2014-07-10 Taipei City Government
 taipei
 
-// tatar : 2014-04-24 Limited Liability Company \
+// talk : 2015-04-09 Amazon EU S.à r.l.
+talk
+
+// taobao : 2015-01-15 Alibaba Group Holding Limited
+taobao
+
+// target : 2015-07-31 Target Domain Holdings, LLC
+target
+
+// tatamotors : 2015-03-12 Tata Motors Ltd
+tatamotors
+
+// tatar : 2014-04-24 Limited Liability Company "Coordination Center of Regional Domain of Tatarstan Republic"
 tatar
 
 // tattoo : 2013-08-30 Uniregistry, Corp.
@@ -8531,12 +9750,27 @@ tattoo
 // tax : 2014-03-20 Storm Orchard, LLC
 tax
 
+// taxi : 2015-03-19 Pine Falls, LLC
+taxi
+
 // tci : 2014-09-12 Asia Green IT System Bilgisayar San. ve Tic. Ltd. Sti.
 tci
 
+// tdk : 2015-06-11 TDK Corporation
+tdk
+
+// team : 2015-03-05 Atomic Lake, LLC
+team
+
+// tech : 2015-01-30 Dot Tech LLC
+tech
+
 // technology : 2013-09-13 Auburn Falls
 technology
 
+// telecity : 2015-02-19 TelecityGroup International Limited
+telecity
+
 // telefonica : 2014-10-16 Telefónica S.A.
 telefonica
 
@@ -8546,9 +9780,33 @@ temasek
 // tennis : 2014-12-04 Cotton Bloom, LLC
 tennis
 
+// teva : 2015-07-02 Teva Pharmaceutical Industries Limited
+teva
+
+// thd : 2015-04-02 Homer TLC, Inc.
+thd
+
+// theater : 2015-03-19 Blue Tigers, LLC
+theater
+
+// theatre : 2015-05-07
+theatre
+
+// theguardian : 2015-04-30 Guardian News and Media Limited
+theguardian
+
+// tiaa : 2015-07-23 Teachers Insurance and Annuity Association of America
+tiaa
+
+// tickets : 2015-02-05 Accent Media Limited
+tickets
+
 // tienda : 2013-11-14 Victor Manor, LLC
 tienda
 
+// tiffany : 2015-01-30 Tiffany and Company
+tiffany
+
 // tips : 2013-09-20 Corn Willow, LLC
 tips
 
@@ -8558,6 +9816,18 @@ tires
 // tirol : 2014-04-24 punkt Tirol GmbH
 tirol
 
+// tjmaxx : 2015-07-16 The TJX Companies, Inc.
+tjmaxx
+
+// tjx : 2015-07-16 The TJX Companies, Inc.
+tjx
+
+// tkmaxx : 2015-07-16 The TJX Companies, Inc.
+tkmaxx
+
+// tmall : 2015-01-15 Alibaba Group Holding Limited
+tmall
+
 // today : 2013-09-20 Pearl Woods, LLC
 today
 
@@ -8576,9 +9846,18 @@ toray
 // toshiba : 2014-04-10 TOSHIBA Corporation
 toshiba
 
+// total : 2015-08-06 Total SA
+total
+
+// tours : 2015-01-22 Sugar Station, LLC
+tours
+
 // town : 2014-03-06 Koko Moon, LLC
 town
 
+// toyota : 2015-04-23 TOYOTA MOTOR CORPORATION
+toyota
+
 // toys : 2014-03-06 Pioneer Orchard, LLC
 toys
 
@@ -8591,18 +9870,45 @@ trading
 // training : 2013-11-07 Wild Willow, LLC
 training
 
+// travelchannel : 2015-07-02 Lifestyle Domain Holdings, Inc.
+travelchannel
+
+// travelers : 2015-03-26 Travelers TLD, LLC
+travelers
+
+// travelersinsurance : 2015-03-26 Travelers TLD, LLC
+travelersinsurance
+
 // trust : 2014-10-16
 trust
 
+// trv : 2015-03-26 Travelers TLD, LLC
+trv
+
+// tube : 2015-06-11 Latin American Telecom LLC
+tube
+
 // tui : 2014-07-03 TUI AG
 tui
 
+// tunes : 2015-02-26 Amazon EU S.à r.l.
+tunes
+
 // tushu : 2014-12-18 Amazon EU S.à r.l.
 tushu
 
+// tvs : 2015-02-19 T V SUNDRAM IYENGAR  & SONS LIMITED
+tvs
+
+// ubank : 2015-08-20 National Australia Bank Limited
+ubank
+
 // ubs : 2014-12-11 UBS AG
 ubs
 
+// uconnect : 2015-07-30 FCA US LLC.
+uconnect
+
 // university : 2014-03-06 Little Station, LLC
 university
 
@@ -8612,6 +9918,9 @@ uno
 // uol : 2014-05-01 UBN INTERNET LTDA.
 uol
 
+// ups : 2015-06-25 UPS Market Driver, Inc.
+ups
+
 // vacations : 2013-12-05 Atomic Tigers, LLC
 vacations
 
@@ -8624,6 +9933,9 @@ vegas
 // ventures : 2013-08-27 Binky Lake, LLC
 ventures
 
+// verisign : 2015-08-13 VeriSign, Inc.
+verisign
+
 // versicherung : 2014-03-20 dotversicherung-registry GmbH
 versicherung
 
@@ -8636,12 +9948,27 @@ viajes
 // video : 2014-10-16
 video
 
+// vig : 2015-05-14 VIENNA INSURANCE GROUP AG Wiener Versicherung Gruppe
+vig
+
+// viking : 2015-04-02 Viking River Cruises (Bermuda) Ltd.
+viking
+
 // villas : 2013-12-05 New Sky, LLC
 villas
 
+// vin : 2015-06-18 Holly Shadow, LLC
+vin
+
+// vip : 2015-01-22 Minds + Machines Group Limited
+vip
+
 // virgin : 2014-09-25 Virgin Enterprises Limited
 virgin
 
+// visa : 2015-07-30 Visa Worldwide Pte. Limited
+visa
+
 // vision : 2013-12-05 Koko Station, LLC
 vision
 
@@ -8654,12 +9981,18 @@ vistaprint
 // viva : 2014-11-07 Saudi Telecom Company
 viva
 
+// vivo : 2015-07-31 Telefonica Brasil S.A.
+vivo
+
 // vlaanderen : 2014-02-06 DNS.be vzw
 vlaanderen
 
 // vodka : 2013-12-19 Top Level Domain Holdings Limited
 vodka
 
+// volkswagen : 2015-05-14 Volkswagen Group of America Inc.
+volkswagen
+
 // vote : 2013-11-21 Monolith Registry LLC
 vote
 
@@ -8672,9 +10005,15 @@ voto
 // voyage : 2013-08-27 Ruby House, LLC
 voyage
 
+// vuelos : 2015-03-05 Travel Reservations SRL
+vuelos
+
 // wales : 2014-05-08 Nominet UK
 wales
 
+// walmart : 2015-07-31 Wal-Mart Stores, Inc.
+walmart
+
 // walter : 2014-11-13 Sandvik AB
 walter
 
@@ -8684,12 +10023,27 @@ wang
 // wanggou : 2014-12-18 Amazon EU S.à r.l.
 wanggou
 
+// warman : 2015-06-18 Weir Group IP Limited
+warman
+
 // watch : 2013-11-14 Sand Shadow, LLC
 watch
 
+// watches : 2014-12-22 Richemont DNS Inc.
+watches
+
+// weather : 2015-01-08 The Weather Channel, LLC
+weather
+
+// weatherchannel : 2015-03-12 The Weather Channel, LLC
+weatherchannel
+
 // webcam : 2014-01-23 dot Webcam Limited
 webcam
 
+// weber : 2015-06-04 Saint-Gobain Weber SA
+weber
+
 // website : 2014-04-03 DotWebsite Inc.
 website
 
@@ -8699,6 +10053,12 @@ wed
 // wedding : 2014-04-24 Top Level Domain Holdings Limited
 wedding
 
+// weibo : 2015-03-05 Sina Corporation
+weibo
+
+// weir : 2015-01-29 Weir Group IP Limited
+weir
+
 // whoswho : 2014-02-20 Who's Who Registry
 whoswho
 
@@ -8717,9 +10077,21 @@ win
 // windows : 2014-12-18 Microsoft Corporation
 windows
 
+// wine : 2015-06-18 June Station, LLC
+wine
+
+// winners : 2015-07-16 The TJX Companies, Inc.
+winners
+
 // wme : 2014-02-13 William Morris Endeavor Entertainment, LLC
 wme
 
+// wolterskluwer : 2015-08-06 Wolters Kluwer N.V.
+wolterskluwer
+
+// woodside : 2015-07-09 Woodside Petroleum Limited
+woodside
+
 // work : 2013-12-19 Top Level Domain Holdings Limited
 work
 
@@ -8741,9 +10113,21 @@ xbox
 // xerox : 2014-10-24 Xerox DNHC LLC
 xerox
 
+// xfinity : 2015-07-09 Comcast IP Holdings I, LLC
+xfinity
+
+// xihuan : 2015-01-08 QIHOO 360 TECHNOLOGY CO. LTD.
+xihuan
+
 // xin : 2014-12-11 Elegant Leader Limited
 xin
 
+// xn--11b4c3d : 2015-01-15 VeriSign Sarl
+कॉम
+
+// xn--1ck2e1b : 2015-02-26 Amazon EU S.à r.l.
+セール
+
 // xn--1qqw23a : 2014-01-09 Guangzhou YU Wei Information Technology Co., Ltd.
 佛山
 
@@ -8756,18 +10140,33 @@ xin
 // xn--3ds443g : 2013-09-08 TLD REGISTRY LIMITED
 在线
 
+// xn--3oq18vl8pn36a : 2015-07-02 Volkswagen (China) Investment Co., Ltd.
+大众汽车
+
+// xn--3pxu8k : 2015-01-15 VeriSign Sarl
+点看
+
+// xn--42c2d9a : 2015-01-15 VeriSign Sarl
+คอม
+
 // xn--45q11c : 2013-11-21 Zodiac Scorpio Limited
 八卦
 
 // xn--4gbrim : 2013-10-04 Suhub Electronic Establishment
 موقع
 
+// xn--4gq48lf9j : 2015-07-31 Wal-Mart Stores, Inc.
+一号店
+
 // xn--55qw42g : 2013-11-08 China Organizational Name Administration Center
 公益
 
 // xn--55qx5d : 2013-11-14 Computer Network Information Center of Chinese Academy of Sciences (China Internet Network Information Center)
 公司
 
+// xn--5tzm5g : 2014-12-22 Global Website TLD Asia Limited
+网站
+
 // xn--6frz82g : 2013-09-23 Afilias Limited
 移动
 
@@ -8783,19 +10182,37 @@ xin
 // xn--80aswg : 2013-07-14 CORE Association
 сайт
 
+// xn--8y0a063a : 2015-03-26 China United Network Communications Corporation Limited
+联通
+
+// xn--9dbq2a : 2015-01-15 VeriSign Sarl
+קום
+
 // xn--9et52u : 2014-06-12 RISE VICTORY LIMITED
 时尚
 
+// xn--9krt00a : 2015-03-12 Sina Corporation
+微博
+
 // xn--b4w605ferd : 2014-08-07 Temasek Holdings (Private) Limited
 淡马锡
 
+// xn--bck1b9a5dre4c : 2015-02-26 Amazon EU S.à r.l.
+ファッション
+
 // xn--c1avg : 2013-11-14 Public Interest Registry
 орг
 
+// xn--c2br7g : 2015-01-15 VeriSign Sarl
+नेट
+
+// xn--cck2b3b : 2015-02-26 Amazon EU S.à r.l.
+ストア
+
 // xn--cg4bki : 2013-09-27 SAMSUNG SDS CO., LTD
 삼성
 
-// xn--czr694b : 2014-01-16 HU YI GLOBAL INFORMATION RESOURCES(HOLDING) COMPANY.HONGKONG LIMITED
+// xn--czr694b : 2014-01-16 HU YI GLOBAL INFORMATION RESOURCES (HOLDING) COMPANY. HONGKONG LIMITED
 商标
 
 // xn--czrs0t : 2013-12-19 Wild Island, LLC
@@ -8813,6 +10230,15 @@ xin
 // xn--efvy88h : 2014-08-22 Xinhua News Agency Guangdong Branch 新华通讯社广东分社
 新闻
 
+// xn--estv75g : 2015-02-19 Industrial and Commercial Bank of China Limited
+工行
+
+// xn--fct429k : 2015-04-09 Amazon EU S.à r.l.
+家電
+
+// xn--fhbei : 2015-01-15 VeriSign Sarl
+كوم
+
 // xn--fiq228c5hs : 2013-09-08 TLD REGISTRY LIMITED
 中文网
 
@@ -8825,6 +10251,15 @@ xin
 // xn--flw351e : 2014-07-31 Charleston Road Registry Inc.
 谷歌
 
+// xn--fzys8d69uvgm : 2015-05-14 PCCW Enterprises Limited
+電訊盈科
+
+// xn--g2xx48c : 2015-01-30 Minds + Machines Group Limited
+购物
+
+// xn--gckr3f0f : 2015-02-26 Amazon EU S.à r.l.
+クラウド
+
 // xn--hxt814e : 2014-05-15 Zodiac Libra Limited
 网店
 
@@ -8837,24 +10272,45 @@ xin
 // xn--io0a7i : 2013-11-14 Computer Network Information Center of Chinese Academy of Sciences (China Internet Network Information Center)
 网络
 
+// xn--j1aef : 2015-01-15 VeriSign Sarl
+ком
+
+// xn--jlq61u9w7b : 2015-01-08 Nokia Corporation
+诺基亚
+
+// xn--jvr189m : 2015-02-26 Amazon EU S.à r.l.
+食品
+
 // xn--kcrx77d1x4a : 2014-11-07 Koninklijke Philips N.V.
 飞利浦
 
+// xn--kpu716f : 2014-12-22 Richemont DNS Inc.
+手表
+
 // xn--kput3i : 2014-02-13 Beijing RITT-Net Technology Development Co., Ltd
 手机
 
 // xn--mgba3a3ejt : 2014-11-20 Aramco Services Company
 ارامكو
 
+// xn--mgba7c0bbn0a : 2015-05-14 Crescent Holding GmbH
+العليان
+
 // xn--mgbab2bd : 2013-10-31 CORE Association
 بازار
 
 // xn--mgbb9fbpob : 2014-12-18 GreenTech Consultancy Company W.L.L.
 موبايلي
 
+// xn--mgbca7dzdo : 2015-07-30 Abu Dhabi Systems and Information Centre
+ابوظبي
+
 // xn--mgbt3dhd : 2014-09-04 Asia Green IT System Bilgisayar San. ve Tic. Ltd. Sti.
 همراه
 
+// xn--mk1bu44c : 2015-01-15 VeriSign Sarl
+닷컴
+
 // xn--mxtq1m : 2014-03-06 Net-Chinese Co., Ltd.
 政府
 
@@ -8876,6 +10332,12 @@ xin
 // xn--p1acf : 2013-12-12 Rusnames Limited
 рус
 
+// xn--pbt977c : 2014-12-22 Richemont DNS Inc.
+珠宝
+
+// xn--pssy2u : 2015-01-15 VeriSign Sarl
+大拿
+
 // xn--q9jyb4c : 2013-09-17 Charleston Road Registry Inc.
 みんな
 
@@ -8885,9 +10347,18 @@ xin
 // xn--rhqv96g : 2013-09-11 Stable Tone Limited
 世界
 
-// xn--ses554g : 2014-01-16 HU YI GLOBAL INFORMATION RESOURCES (HOLDING) COMPANY. HONGKONG LIMITED
+// xn--rovu88b : 2015-02-26 Amazon EU S.à r.l.
+書籍
+
+// xn--ses554g : 2014-01-16
 网址
 
+// xn--t60b56a : 2015-01-15 VeriSign Sarl
+닷넷
+
+// xn--tckwe : 2015-01-15 VeriSign Sarl
+コム
+
 // xn--unup4y : 2013-07-14 Spring Fields, LLC
 游戏
 
@@ -8903,18 +10374,30 @@ vermögensberatung
 // xn--vuq861b : 2014-10-16 Beijing Tele-info Network Technology Co., Ltd.
 信息
 
+// xn--w4r85el8fhu5dnra : 2015-04-30 Kerry Trading Co. Limited
+嘉里大酒店
+
+// xn--w4rs40l : 2015-07-30 Kerry Trading Co. Limited
+嘉里
+
 // xn--xhq521b : 2013-11-14 Guangzhou YU Wei Information Technology Co., Ltd.
 广东
 
 // xn--zfr164b : 2013-11-08 China Organizational Name Administration Center
 政务
 
+// xperia : 2015-05-14 Sony Mobile Communications AB
+xperia
+
 // xyz : 2013-12-05 XYZ.COM LLC
 xyz
 
 // yachts : 2014-01-09 DERYachts, LLC
 yachts
 
+// yahoo : 2015-04-02 Yahoo! Domain Services Inc.
+yahoo
+
 // yamaxun : 2014-12-18 Amazon EU S.à r.l.
 yamaxun
 
@@ -8930,9 +10413,18 @@ yoga
 // yokohama : 2013-12-12 GMO Registry, Inc.
 yokohama
 
+// you : 2015-04-09 Amazon EU S.à r.l.
+you
+
 // youtube : 2014-05-01 Charleston Road Registry Inc.
 youtube
 
+// yun : 2015-01-08 QIHOO 360 TECHNOLOGY CO. LTD.
+yun
+
+// zappos : 2015-06-25 Amazon EU S.à r.l.
+zappos
+
 // zara : 2014-11-07 Industria de Diseño Textil, S.A. (INDITEX, S.A.)
 zara
 
@@ -8942,14 +10434,19 @@ zero
 // zip : 2014-05-08 Charleston Road Registry Inc.
 zip
 
+// zippo : 2015-07-02 Zadco Company
+zippo
+
 // zone : 2013-11-14 Outer Falls, LLC
 zone
 
 // zuerich : 2014-11-07 Kanton Zürich (Canton of Zurich)
 zuerich
 
+
 // ===END ICANN DOMAINS===
 // ===BEGIN PRIVATE DOMAINS===
+// (Note: these are in alphabetical order by company name)
 
 // Amazon CloudFront : https://aws.amazon.com/cloudfront/
 // Submitted by Donavan Miller <donavanm@amazon.com> 2013-03-22
@@ -8983,26 +10480,22 @@ elasticbeanstalk.com
 elb.amazonaws.com
 
 // Amazon S3 : https://aws.amazon.com/s3/
-// Submitted by Courtney Eckhardt <coec@amazon.com> 2013-03-22
+// Submitted by Eric Kinolik <kilo@amazon.com> 2015-04-08
 s3.amazonaws.com
-s3-us-west-2.amazonaws.com
-s3-us-west-1.amazonaws.com
-s3-eu-west-1.amazonaws.com
+s3-ap-northeast-1.amazonaws.com
 s3-ap-southeast-1.amazonaws.com
 s3-ap-southeast-2.amazonaws.com
-s3-ap-northeast-1.amazonaws.com
+s3-external-1.amazonaws.com
+s3-external-2.amazonaws.com
+s3-fips-us-gov-west-1.amazonaws.com
+s3-eu-central-1.amazonaws.com
+s3-eu-west-1.amazonaws.com
 s3-sa-east-1.amazonaws.com
 s3-us-gov-west-1.amazonaws.com
-s3-fips-us-gov-west-1.amazonaws.com
-s3-website-us-east-1.amazonaws.com
-s3-website-us-west-2.amazonaws.com
-s3-website-us-west-1.amazonaws.com
-s3-website-eu-west-1.amazonaws.com
-s3-website-ap-southeast-1.amazonaws.com
-s3-website-ap-southeast-2.amazonaws.com
-s3-website-ap-northeast-1.amazonaws.com
-s3-website-sa-east-1.amazonaws.com
-s3-website-us-gov-west-1.amazonaws.com
+s3-us-west-1.amazonaws.com
+s3-us-west-2.amazonaws.com
+s3.cn-north-1.amazonaws.com.cn
+s3.eu-central-1.amazonaws.com
 
 // BetaInABox
 // Submitted by adrian@betainabox.com 2012-09-13
@@ -9070,10 +10563,22 @@ cloudcontrolapp.com
 // co.ca : http://registry.co.ca/
 co.ca
 
+// CDN77.com : http://www.cdn77.com
+// Submitted by Jan Krpes <jan.krpes@cdn77.com> 2015-07-13
+c.cdn77.org
+cdn77-ssl.net
+r.cdn77.net
+rsc.cdn77.org
+ssl.origin.cdn77-secure.org
+
 // CoDNS B.V.
 co.nl
 co.no
 
+// Commerce Guys, SAS
+// Submitted by Damien Tournoud <damien@commerceguys.com> 2015-01-22
+*.platform.sh
+
 // Cupcake : https://cupcake.io/
 // Submitted by Jonathan Rudenberg <jonathan@cupcake.io> 2013-10-08
 cupcake.is
@@ -9082,6 +10587,10 @@ cupcake.is
 // Submitted by Andrew Farmer <andrew.farmer@dreamhost.com> 2012-10-02
 dreamhosters.com
 
+// DuckDNS : http://www.duckdns.org/
+// Submitted by Richard Harper <richard@duckdns.org> 2015-05-17
+duckdns.org
+
 // DynDNS.com : http://www.dyndns.com/services/dns/dyndns/
 dyndns-at-home.com
 dyndns-at-work.com
@@ -9363,6 +10872,66 @@ webhop.org
 worse-than.tv
 writesthisblog.com
 
+// EU.org https://eu.org/
+// Submitted by Pierre Beyssac <hostmaster@eu.org> 2015-04-17
+
+eu.org
+al.eu.org
+asso.eu.org
+at.eu.org
+au.eu.org
+be.eu.org
+bg.eu.org
+ca.eu.org
+cd.eu.org
+ch.eu.org
+cn.eu.org
+cy.eu.org
+cz.eu.org
+de.eu.org
+dk.eu.org
+edu.eu.org
+ee.eu.org
+es.eu.org
+fi.eu.org
+fr.eu.org
+gr.eu.org
+hr.eu.org
+hu.eu.org
+ie.eu.org
+il.eu.org
+in.eu.org
+int.eu.org
+is.eu.org
+it.eu.org
+jp.eu.org
+kr.eu.org
+lt.eu.org
+lu.eu.org
+lv.eu.org
+mc.eu.org
+me.eu.org
+mk.eu.org
+mt.eu.org
+my.eu.org
+net.eu.org
+ng.eu.org
+nl.eu.org
+no.eu.org
+nz.eu.org
+paris.eu.org
+pl.eu.org
+pt.eu.org
+q-a.eu.org
+ro.eu.org
+ru.eu.org
+se.eu.org
+si.eu.org
+sk.eu.org
+tr.eu.org
+uk.eu.org
+us.eu.org
+
 // Fastly Inc. http://www.fastly.com/
 // Submitted by Vladimir Vuksan <vladimir@fastly.com> 2013-05-31
 a.ssl.fastly.net
@@ -9379,6 +10948,10 @@ firebaseapp.com
 // Submitted by Jonathan Rudenberg <jonathan@flynn.io> 2014-07-12
 flynnhub.com
 
+// GDS : https://www.gov.uk/service-manual/operations/operating-servicegovuk-subdomains
+// Submitted by David Illsley <david.illsley@digital.cabinet-office.gov.uk> 2014-08-28
+service.gov.uk
+
 // GitHub, Inc.
 // Submitted by Ben Toews <btoews@github.com> 2014-02-06
 github.io
@@ -9392,21 +10965,37 @@ ro.com
 // Submitted by Eduardo Vela <evn@google.com> 2014-12-19
 appspot.com
 blogspot.ae
+blogspot.al
+blogspot.am
+blogspot.ba
 blogspot.be
+blogspot.bg
 blogspot.bj
 blogspot.ca
 blogspot.cf
 blogspot.ch
+blogspot.cl
 blogspot.co.at
+blogspot.co.id
 blogspot.co.il
+blogspot.co.ke
 blogspot.co.nz
 blogspot.co.uk
+blogspot.co.za
 blogspot.com
 blogspot.com.ar
 blogspot.com.au
 blogspot.com.br
+blogspot.com.by
+blogspot.com.co
+blogspot.com.cy
+blogspot.com.ee
+blogspot.com.eg
 blogspot.com.es
+blogspot.com.mt
+blogspot.com.ng
 blogspot.com.tr
+blogspot.com.uy
 blogspot.cv
 blogspot.cz
 blogspot.de
@@ -9415,30 +11004,46 @@ blogspot.fi
 blogspot.fr
 blogspot.gr
 blogspot.hk
+blogspot.hr
 blogspot.hu
 blogspot.ie
 blogspot.in
+blogspot.is
 blogspot.it
 blogspot.jp
 blogspot.kr
+blogspot.li
+blogspot.lt
+blogspot.lu
+blogspot.md
+blogspot.mk
 blogspot.mr
 blogspot.mx
+blogspot.my
 blogspot.nl
 blogspot.no
+blogspot.pe
 blogspot.pt
+blogspot.qa
 blogspot.re
 blogspot.ro
+blogspot.rs
 blogspot.ru
 blogspot.se
 blogspot.sg
+blogspot.si
 blogspot.sk
+blogspot.sn
 blogspot.td
 blogspot.tw
+blogspot.ug
+blogspot.vn
 codespot.com
 googleapis.com
 googlecode.com
 pagespeedmobilizer.com
 withgoogle.com
+withyoutube.com
 
 // Heroku : https://www.heroku.com/
 // Submitted by Tom Maher <tmaher@heroku.com> 2013-05-02
@@ -9462,6 +11067,14 @@ azurewebsites.net
 azure-mobile.net
 cloudapp.net
 
+// Mozilla Foundation : https://mozilla.org/
+// Submited by glob <glob@mozilla.com> 2015-07-06
+bmoattachments.org
+
+// Neustar Inc.
+// Submitted by Trung Tran <Trung.Tran@neustar.biz> 2015-04-23
+4u.com
+
 // NFSN, Inc. : https://www.NearlyFreeSpeech.NET/
 // Submitted by Jeff Wheelhouse <support@nearlyfreespeech.net> 2014-02-02
 nfshost.com
@@ -9490,17 +11103,38 @@ poznan.pl
 wroc.pl
 zakopane.pl
 
+// Pantheon Systems, Inc. : https://pantheon.io/
+// Submitted by Gary Dylina <gary@pantheon.io> 2015-09-14
+pantheon.io
+gotpantheon.com
+
+// priv.at : http://www.nic.priv.at/
+// Submitted by registry <lendl@nic.at> 2008-06-09
+priv.at
+
+// QA2
+// Submitted by Daniel Dent (https://www.danieldent.com/) 2015-07-16
+qa2.com
+
 // Red Hat, Inc. OpenShift : https://openshift.redhat.com/
 // Submitted by Tim Kramer <tkramer@rhcloud.com> 2012-10-24
 rhcloud.com
 
-// GDS : https://www.gov.uk/service-manual/operations/operating-servicegovuk-subdomains
-// Submitted by David Illsley <david.illsley@digital.cabinet-office.gov.uk> 2014-08-28
-service.gov.uk
+// Sandstorm Development Group, Inc. : https://sandcats.io/
+// Submitted by Asheesh Laroia <asheesh@sandstorm.io> 2015-07-21
+sandcats.io
 
-// priv.at : http://www.nic.priv.at/
-// Submitted by registry <lendl@nic.at> 2008-06-09
-priv.at
+// Service Online LLC : http://drs.ua/
+// Submitted by Serhii Bulakh <support@drs.ua> 2015-07-30
+biz.ua
+co.ua
+pp.ua
+
+// SinaAppEngine : http://sae.sina.com.cn/
+// Submitted by SinaAppEngine <saesupport@sinacloud.com> 2015-02-02
+sinaapp.com
+vipsinaapp.com
+1kapp.com
 
 // TASK geographical domains (www.task.gda.pl/uslugi/dns)
 gda.pl
index 6a1fb328a39604d54b660c6347d314ae40375ca7..d37be9716e570fa012009e7086d9280d8e727792 100644 (file)
@@ -12,13 +12,13 @@ CXTERM-DIC:
 This directory contains source dictionaries (TIT format) for Chinese
 input method distributed with cxterm (Chinese version xterm).  These
 dictionaries are automatically converted to Quail packages (Emacs Lisp
-source files) by `make'.
+source files) by 'make'.
 
 MISC-DIC:
 
 This directory contains various dictionaries for Chinese input
 methods.  These dictionaries are automatically converted to Quail
-packages (Emacs Lisp source files) by `make'.
+packages (Emacs Lisp source files) by 'make'.
 
 SKK-DIC:
 
index a175967156aff4adb29e28cacf1ed7aee4ac939d..2b65cb2e1a9ca0f0ac78a1ae5967835db0f4282d 100644 (file)
@@ -24,7 +24,7 @@ SHELL = @SHELL@
 EMACS = ../src/emacs${EXEEXT}
 EMACSOPT = -batch --no-site-file --no-site-lisp
 
-# ==================== Things `configure' will edit ====================
+# ==================== Things 'configure' will edit ====================
 
 CC=@CC@
 CFLAGS=@CFLAGS@
@@ -83,31 +83,31 @@ ns_appbindir=@ns_appbindir@
 # subdirectories of this directory.  The default values for many of
 # the variables below are expressed in terms of this one, so you may
 # not need to change them.  This is set with the --prefix option to
-# `../configure'.
+# '../configure'.
 prefix=@prefix@
 
-# Like `prefix', but used for architecture-specific files.  This is
-# set with the --exec-prefix option to `../configure'.
+# Like 'prefix', but used for architecture-specific files.  This is
+# set with the --exec-prefix option to '../configure'.
 exec_prefix=@exec_prefix@
 
 # Where to install Emacs and other binaries that people will want to
 # run directly (like etags).  This is set with the --bindir option
-# to `../configure'.
+# to '../configure'.
 bindir=@bindir@
 
 # Where to install and expect executable files to be run by Emacs
 # rather than directly by users, and other architecture-dependent
 # data.  ${archlibdir} is usually below this.  This is set with the
-# --libexecdir option to `../configure'.
+# --libexecdir option to '../configure'.
 libexecdir=@libexecdir@
 
 # Directory for local state files for all programs.
 localstatedir=@localstatedir@
 
 # Where to find the source code.  This is set by the configure
-# script's `--srcdir' option.  However, the value of ${srcdir} in
+# script's '--srcdir' option.  However, the value of ${srcdir} in
 # this makefile is not identical to what was specified with --srcdir,
-# since the variable here has `/lib-src' added at the end.
+# since the variable here has '/lib-src' added at the end.
 
 # We use $(srcdir) explicitly in dependencies so as not to depend on VPATH.
 srcdir=@srcdir@
@@ -127,7 +127,7 @@ abs_top_srcdir=@abs_top_srcdir@
 # This path usually includes the Emacs version and configuration name,
 # so that multiple configurations for multiple versions of Emacs may
 # be installed at once.  This can be set with the --archlibdir option
-# to `../configure'.
+# to '../configure'.
 archlibdir=@archlibdir@
 
 gamedir=@gamedir@
index f34c985109d01d924ae3e00ddcd113f0262e5604..791722d4b661878975fed9e9888dacf5c9c2e888 100644 (file)
@@ -361,8 +361,9 @@ static void analyze_regex (char *);
 static void free_regexps (void);
 static void regex_tag_multiline (void);
 static void error (const char *, ...) ATTRIBUTE_FORMAT_PRINTF (1, 2);
+static void verror (char const *, va_list) ATTRIBUTE_FORMAT_PRINTF (1, 0);
 static _Noreturn void suggest_asking_for_help (void);
-_Noreturn void fatal (const char *, const char *);
+static _Noreturn void fatal (char const *, ...) ATTRIBUTE_FORMAT_PRINTF (1, 2);
 static _Noreturn void pfatal (const char *);
 static void add_node (node *, node **);
 
@@ -1091,7 +1092,7 @@ main (int argc, char **argv)
        ++current_arg;
        ++file_count;
        if (parsing_stdin)
-         fatal ("cannot parse standard input more than once", (char *)NULL);
+         fatal ("cannot parse standard input more than once");
        parsing_stdin = true;
        break;
 
@@ -1255,8 +1256,8 @@ main (int argc, char **argv)
              if (streq (this_file, "-"))
                {
                  if (parsing_stdin)
-                   fatal ("cannot parse standard input AND read file names from it",
-                          (char *)NULL);
+                   fatal ("cannot parse standard input "
+                          "AND read file names from it");
                  while (readline_internal (&filename_lb, stdin, "-") > 0)
                    process_file_name (filename_lb.buffer, lang);
                }
@@ -1267,6 +1268,8 @@ main (int argc, char **argv)
           this_file = argbuffer[i].what;
           process_file (stdin, this_file, lang);
           break;
+       default:
+         error ("internal error: arg_type");
        }
     }
 
@@ -1324,7 +1327,7 @@ main (int argc, char **argv)
          z = stpcpy (z, tagfile);
          strcpy (z, ";rm OTAGS");
          if (system (cmd) != EXIT_SUCCESS)
-           fatal ("failed to execute shell command", (char *)NULL);
+           fatal ("failed to execute shell command");
        }
       free (cmd);
       append_to_tagfile = true;
@@ -2753,6 +2756,9 @@ consider_token (char *str, int len, int c, int *c_extp,
         case st_C_struct:
         case st_C_enum:
           typdef = ttypeseen;
+          break;
+        default:
+          break;
         }
        break;
      case ttypeseen:
@@ -2769,8 +2775,11 @@ consider_token (char *str, int len, int c, int *c_extp,
         case st_C_struct:
         case st_C_enum:
           return false;
+        default:
+          return true;
         }
-       return true;
+     default:
+       break;
      }
 
    switch (toktype)
@@ -2803,6 +2812,8 @@ consider_token (char *str, int len, int c, int *c_extp,
             fvdef = fvnone;
         }
        return false;
+     default:
+       break;
      }
 
    if (structdef == skeyseen)
@@ -2826,6 +2837,8 @@ consider_token (char *str, int len, int c, int *c_extp,
         case st_C_objimpl:
           objdef = oimplementation;
           return false;
+        default:
+          break;
         }
        break;
      case oimplementation:
@@ -2887,6 +2900,8 @@ consider_token (char *str, int len, int c, int *c_extp,
           objdef = onone;
         }
        return false;
+     default:
+       break;
      }
 
    /* A function, variable or enum constant? */
@@ -2942,6 +2957,8 @@ consider_token (char *str, int len, int c, int *c_extp,
                   return false;
                 }
               break;
+            default:
+              break;
             }
          /* FALLTHRU */
          case fvnameseen:
@@ -2958,8 +2975,12 @@ consider_token (char *str, int len, int c, int *c_extp,
          fvdef = fvnameseen;   /* function or variable */
          *is_func_or_var = true;
          return true;
+        default:
+          break;
        }
       break;
+     default:
+       break;
     }
 
   return false;
@@ -3469,6 +3490,8 @@ C_entries (int c_ext, FILE *inf)
                          fvdef = fignore;
                        }
                      break;
+                   default:
+                     break;
                    }
                  if (structdef == stagseen && !cjava)
                    {
@@ -3479,6 +3502,8 @@ C_entries (int c_ext, FILE *inf)
                case dsharpseen:
                  savetoken = token;
                  break;
+               default:
+                 break;
                }
              if (!yacc_rules || lp == newlb.buffer + 1)
                {
@@ -3507,7 +3532,7 @@ C_entries (int c_ext, FILE *inf)
            break;
          switch (objdef)
            {
-           case  otagseen:
+           case otagseen:
              objdef = oignore;
              make_C_tag (true); /* an Objective C class */
              break;
@@ -3521,6 +3546,8 @@ C_entries (int c_ext, FILE *inf)
                  strcpy (token_name.buffer + toklen, ":");
                }
              break;
+           default:
+             break;
            }
          if (structdef == stagseen)
            {
@@ -3598,6 +3625,8 @@ C_entries (int c_ext, FILE *inf)
              make_C_tag (true); /* an Objective C method */
              objdef = oinbody;
              break;
+           default:
+             break;
            }
          switch (fvdef)
            {
@@ -3671,6 +3700,8 @@ C_entries (int c_ext, FILE *inf)
                  fvdef = fvnone;
                }
              break;
+           default:
+             break;
            }
          break;
        case '(':
@@ -3704,6 +3735,8 @@ C_entries (int c_ext, FILE *inf)
            case flistseen:
              fvdef = finlist;
              break;
+           default:
+             break;
            }
          parlev++;
          break;
@@ -3729,6 +3762,8 @@ C_entries (int c_ext, FILE *inf)
                case finlist:
                  fvdef = flistseen;
                  break;
+               default:
+                 break;
                }
              if (!instruct
                  && (typdef == tend
@@ -3800,6 +3835,8 @@ C_entries (int c_ext, FILE *inf)
                    bracelev = -1;
                }
              break;
+           default:
+             break;
            }
          switch (structdef)
            {
@@ -3813,6 +3850,8 @@ C_entries (int c_ext, FILE *inf)
              structdef = snone;
              make_C_tag (false);  /* a struct or enum */
              break;
+           default:
+             break;
            }
          bracelev += 1;
          break;
@@ -6351,10 +6390,13 @@ skip_name (char *cp)
 }
 
 /* Print error message and exit.  */
-void
-fatal (const char *s1, const char *s2)
+static void
+fatal (char const *format, ...)
 {
-  error (s1, s2);
+  va_list ap;
+  va_start (ap, format);
+  verror (format, ap);
+  va_end (ap);
   exit (EXIT_FAILURE);
 }
 
@@ -6379,10 +6421,16 @@ error (const char *format, ...)
 {
   va_list ap;
   va_start (ap, format);
+  verror (format, ap);
+  va_end (ap);
+}
+
+static void
+verror (char const *format, va_list ap)
+{
   fprintf (stderr, "%s: ", progname);
   vfprintf (stderr, format, ap);
   fprintf (stderr, "\n");
-  va_end (ap);
 }
 
 /* Return a newly-allocated string whose contents
@@ -6673,7 +6721,7 @@ xmalloc (size_t size)
 {
   void *result = malloc (size);
   if (result == NULL)
-    fatal ("virtual memory exhausted", (char *)NULL);
+    fatal ("virtual memory exhausted");
   return result;
 }
 
@@ -6682,7 +6730,7 @@ xrealloc (void *ptr, size_t size)
 {
   void *result = realloc (ptr, size);
   if (result == NULL)
-    fatal ("virtual memory exhausted", (char *)NULL);
+    fatal ("virtual memory exhausted");
   return result;
 }
 
index 231bc22fa89609ebe766f0d49b42be13273f3003..84c8ce24286f6255a26a5795e13759c90b3aa72b 100644 (file)
@@ -174,8 +174,6 @@ main (int argc, char **argv)
   int desc;
 #endif /* not MAIL_USE_SYSTEM_LOCK */
 
-  char *spool_name = 0;
-
 #ifdef MAIL_USE_POP
   bool pop_reverse_order = false;
 # define ARGSTR "pr"
@@ -246,13 +244,14 @@ main (int argc, char **argv)
 #ifndef DISABLE_DIRECT_ACCESS
 
   char *lockname = 0;
+  char *spool_name = 0;
 
-#ifndef MAIL_USE_SYSTEM_LOCK
 #ifdef MAIL_USE_MAILLOCK
   spool_name = mail_spool_name (inname);
 #endif
   if (! spool_name)
     {
+#ifndef MAIL_USE_SYSTEM_LOCK
       /* Use a lock file named after our first argument with .lock appended:
         If it exists, the mail file is locked.  */
       /* Note: this locking mechanism is *required* by the mailer
@@ -323,8 +322,8 @@ main (int argc, char **argv)
        }
 
       delete_lockname = lockname;
-    }
 #endif /* not MAIL_USE_SYSTEM_LOCK */
+    }
 
 #ifdef SIGCHLD
   signal (SIGCHLD, SIG_DFL);
index 242760362e8dc3d1ca2359b092746f31b4e7f750..d1bd36931839c6506c663447e80b2fa52c22a418 100755 (executable)
@@ -414,7 +414,7 @@ sort $SORT_K_OPTIONS </dev/null 2>/dev/null || SORT_K_OPTIONS='+2 -4r +4 +0'
 
 
 # Get the full name of each author the logs mention, and set initialize_fullname
-# to awk code that initializes the `fullname' awk associative array.
+# to awk code that initializes the 'fullname' awk associative array.
 # Warning: foreign authors (i.e. not known in the passwd file) are mishandled;
 # you have to fix the resulting output by hand.
 
@@ -546,8 +546,8 @@ esac
 
 # Function to print a single log line.
 # We don't use awk functions, to stay compatible with old awk versions.
-# `Log' is the log message.
-# `files' contains the affected files.
+# 'Log' is the log message.
+# 'files' contains the affected files.
 printlogline='{
 
        # Following the GNU coding standards, rewrite
@@ -587,7 +587,7 @@ printlogline='{
        }
 }'
 
-# Pattern to match the `revision' line of rlog output.
+# Pattern to match the 'revision' line of rlog output.
 rlog_revision_pattern='^revision [0-9]+\.[0-9]+(\.[0-9]+\.[0-9]+)*(['"$tab"' ]+locked by: [^'"$tab"' $,.0-9:;@]*[^'"$tab"' $,:;@][^'"$tab"' $,.0-9:;@]*;)?['"$tab"' ]*$'
 
 case $hostname in
index 1eaa671bd37942a93cfab3d2f46698e77830c087..c1b70176ac0505f3d459d3837cdb23458bf69560 100644 (file)
@@ -1,4 +1,4 @@
-/* Test whether a file has a nontrivial access control list.
+/* Test whether a file has a nontrivial ACL.  -*- coding: utf-8 -*-
 
    Copyright (C) 2002-2003, 2005-2015 Free Software Foundation, Inc.
 
index 38a4ab2eb3aebf8e57b176df61b263703f013b58..560d1464daa35f087dffaf023e6592b63643b1e9 100644 (file)
@@ -1,4 +1,4 @@
-/* Internal implementation of access control lists.
+/* Internal implementation of access control lists.  -*- coding: utf-8 -*-
 
    Copyright (C) 2002-2003, 2005-2015 Free Software Foundation, Inc.
 
index 1fb5fe675e9155df89d18e708159b32b6b5061e6..5d9d4d87a61a27ca8bd0444826177977d03260b5 100644 (file)
@@ -1,395 +1,3 @@
-/* Character handling in C locale.
-
-   Copyright 2000-2003, 2006, 2009-2015 Free Software Foundation, Inc.
-
-This program 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.
-
-This program 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 this program; if not, see <http://www.gnu.org/licenses/>.  */
-
 #include <config.h>
-
-/* Specification.  */
-#define NO_C_CTYPE_MACROS
+#define C_CTYPE_INLINE _GL_EXTERN_INLINE
 #include "c-ctype.h"
-
-/* The function isascii is not locale dependent. Its use in EBCDIC is
-   questionable. */
-bool
-c_isascii (int c)
-{
-  return (c >= 0x00 && c <= 0x7f);
-}
-
-bool
-c_isalnum (int c)
-{
-#if C_CTYPE_CONSECUTIVE_DIGITS \
-    && C_CTYPE_CONSECUTIVE_UPPERCASE && C_CTYPE_CONSECUTIVE_LOWERCASE
-#if C_CTYPE_ASCII
-  return ((c >= '0' && c <= '9')
-          || ((c & ~0x20) >= 'A' && (c & ~0x20) <= 'Z'));
-#else
-  return ((c >= '0' && c <= '9')
-          || (c >= 'A' && c <= 'Z')
-          || (c >= 'a' && c <= 'z'));
-#endif
-#else
-  switch (c)
-    {
-    case '0': case '1': case '2': case '3': case '4': case '5':
-    case '6': case '7': case '8': case '9':
-    case 'A': case 'B': case 'C': case 'D': case 'E': case 'F':
-    case 'G': case 'H': case 'I': case 'J': case 'K': case 'L':
-    case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R':
-    case 'S': case 'T': case 'U': case 'V': case 'W': case 'X':
-    case 'Y': case 'Z':
-    case 'a': case 'b': case 'c': case 'd': case 'e': case 'f':
-    case 'g': case 'h': case 'i': case 'j': case 'k': case 'l':
-    case 'm': case 'n': case 'o': case 'p': case 'q': case 'r':
-    case 's': case 't': case 'u': case 'v': case 'w': case 'x':
-    case 'y': case 'z':
-      return 1;
-    default:
-      return 0;
-    }
-#endif
-}
-
-bool
-c_isalpha (int c)
-{
-#if C_CTYPE_CONSECUTIVE_UPPERCASE && C_CTYPE_CONSECUTIVE_LOWERCASE
-#if C_CTYPE_ASCII
-  return ((c & ~0x20) >= 'A' && (c & ~0x20) <= 'Z');
-#else
-  return ((c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z'));
-#endif
-#else
-  switch (c)
-    {
-    case 'A': case 'B': case 'C': case 'D': case 'E': case 'F':
-    case 'G': case 'H': case 'I': case 'J': case 'K': case 'L':
-    case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R':
-    case 'S': case 'T': case 'U': case 'V': case 'W': case 'X':
-    case 'Y': case 'Z':
-    case 'a': case 'b': case 'c': case 'd': case 'e': case 'f':
-    case 'g': case 'h': case 'i': case 'j': case 'k': case 'l':
-    case 'm': case 'n': case 'o': case 'p': case 'q': case 'r':
-    case 's': case 't': case 'u': case 'v': case 'w': case 'x':
-    case 'y': case 'z':
-      return 1;
-    default:
-      return 0;
-    }
-#endif
-}
-
-bool
-c_isblank (int c)
-{
-  return (c == ' ' || c == '\t');
-}
-
-bool
-c_iscntrl (int c)
-{
-#if C_CTYPE_ASCII
-  return ((c & ~0x1f) == 0 || c == 0x7f);
-#else
-  switch (c)
-    {
-    case ' ': case '!': case '"': case '#': case '$': case '%':
-    case '&': case '\'': case '(': case ')': case '*': case '+':
-    case ',': case '-': case '.': case '/':
-    case '0': case '1': case '2': case '3': case '4': case '5':
-    case '6': case '7': case '8': case '9':
-    case ':': case ';': case '<': case '=': case '>': case '?':
-    case '@':
-    case 'A': case 'B': case 'C': case 'D': case 'E': case 'F':
-    case 'G': case 'H': case 'I': case 'J': case 'K': case 'L':
-    case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R':
-    case 'S': case 'T': case 'U': case 'V': case 'W': case 'X':
-    case 'Y': case 'Z':
-    case '[': case '\\': case ']': case '^': case '_': case '`':
-    case 'a': case 'b': case 'c': case 'd': case 'e': case 'f':
-    case 'g': case 'h': case 'i': case 'j': case 'k': case 'l':
-    case 'm': case 'n': case 'o': case 'p': case 'q': case 'r':
-    case 's': case 't': case 'u': case 'v': case 'w': case 'x':
-    case 'y': case 'z':
-    case '{': case '|': case '}': case '~':
-      return 0;
-    default:
-      return 1;
-    }
-#endif
-}
-
-bool
-c_isdigit (int c)
-{
-#if C_CTYPE_CONSECUTIVE_DIGITS
-  return (c >= '0' && c <= '9');
-#else
-  switch (c)
-    {
-    case '0': case '1': case '2': case '3': case '4': case '5':
-    case '6': case '7': case '8': case '9':
-      return 1;
-    default:
-      return 0;
-    }
-#endif
-}
-
-bool
-c_islower (int c)
-{
-#if C_CTYPE_CONSECUTIVE_LOWERCASE
-  return (c >= 'a' && c <= 'z');
-#else
-  switch (c)
-    {
-    case 'a': case 'b': case 'c': case 'd': case 'e': case 'f':
-    case 'g': case 'h': case 'i': case 'j': case 'k': case 'l':
-    case 'm': case 'n': case 'o': case 'p': case 'q': case 'r':
-    case 's': case 't': case 'u': case 'v': case 'w': case 'x':
-    case 'y': case 'z':
-      return 1;
-    default:
-      return 0;
-    }
-#endif
-}
-
-bool
-c_isgraph (int c)
-{
-#if C_CTYPE_ASCII
-  return (c >= '!' && c <= '~');
-#else
-  switch (c)
-    {
-    case '!': case '"': case '#': case '$': case '%': case '&':
-    case '\'': case '(': case ')': case '*': case '+': case ',':
-    case '-': case '.': case '/':
-    case '0': case '1': case '2': case '3': case '4': case '5':
-    case '6': case '7': case '8': case '9':
-    case ':': case ';': case '<': case '=': case '>': case '?':
-    case '@':
-    case 'A': case 'B': case 'C': case 'D': case 'E': case 'F':
-    case 'G': case 'H': case 'I': case 'J': case 'K': case 'L':
-    case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R':
-    case 'S': case 'T': case 'U': case 'V': case 'W': case 'X':
-    case 'Y': case 'Z':
-    case '[': case '\\': case ']': case '^': case '_': case '`':
-    case 'a': case 'b': case 'c': case 'd': case 'e': case 'f':
-    case 'g': case 'h': case 'i': case 'j': case 'k': case 'l':
-    case 'm': case 'n': case 'o': case 'p': case 'q': case 'r':
-    case 's': case 't': case 'u': case 'v': case 'w': case 'x':
-    case 'y': case 'z':
-    case '{': case '|': case '}': case '~':
-      return 1;
-    default:
-      return 0;
-    }
-#endif
-}
-
-bool
-c_isprint (int c)
-{
-#if C_CTYPE_ASCII
-  return (c >= ' ' && c <= '~');
-#else
-  switch (c)
-    {
-    case ' ': case '!': case '"': case '#': case '$': case '%':
-    case '&': case '\'': case '(': case ')': case '*': case '+':
-    case ',': case '-': case '.': case '/':
-    case '0': case '1': case '2': case '3': case '4': case '5':
-    case '6': case '7': case '8': case '9':
-    case ':': case ';': case '<': case '=': case '>': case '?':
-    case '@':
-    case 'A': case 'B': case 'C': case 'D': case 'E': case 'F':
-    case 'G': case 'H': case 'I': case 'J': case 'K': case 'L':
-    case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R':
-    case 'S': case 'T': case 'U': case 'V': case 'W': case 'X':
-    case 'Y': case 'Z':
-    case '[': case '\\': case ']': case '^': case '_': case '`':
-    case 'a': case 'b': case 'c': case 'd': case 'e': case 'f':
-    case 'g': case 'h': case 'i': case 'j': case 'k': case 'l':
-    case 'm': case 'n': case 'o': case 'p': case 'q': case 'r':
-    case 's': case 't': case 'u': case 'v': case 'w': case 'x':
-    case 'y': case 'z':
-    case '{': case '|': case '}': case '~':
-      return 1;
-    default:
-      return 0;
-    }
-#endif
-}
-
-bool
-c_ispunct (int c)
-{
-#if C_CTYPE_ASCII
-  return ((c >= '!' && c <= '~')
-          && !((c >= '0' && c <= '9')
-               || ((c & ~0x20) >= 'A' && (c & ~0x20) <= 'Z')));
-#else
-  switch (c)
-    {
-    case '!': case '"': case '#': case '$': case '%': case '&':
-    case '\'': case '(': case ')': case '*': case '+': case ',':
-    case '-': case '.': case '/':
-    case ':': case ';': case '<': case '=': case '>': case '?':
-    case '@':
-    case '[': case '\\': case ']': case '^': case '_': case '`':
-    case '{': case '|': case '}': case '~':
-      return 1;
-    default:
-      return 0;
-    }
-#endif
-}
-
-bool
-c_isspace (int c)
-{
-  return (c == ' ' || c == '\t'
-          || c == '\n' || c == '\v' || c == '\f' || c == '\r');
-}
-
-bool
-c_isupper (int c)
-{
-#if C_CTYPE_CONSECUTIVE_UPPERCASE
-  return (c >= 'A' && c <= 'Z');
-#else
-  switch (c)
-    {
-    case 'A': case 'B': case 'C': case 'D': case 'E': case 'F':
-    case 'G': case 'H': case 'I': case 'J': case 'K': case 'L':
-    case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R':
-    case 'S': case 'T': case 'U': case 'V': case 'W': case 'X':
-    case 'Y': case 'Z':
-      return 1;
-    default:
-      return 0;
-    }
-#endif
-}
-
-bool
-c_isxdigit (int c)
-{
-#if C_CTYPE_CONSECUTIVE_DIGITS \
-    && C_CTYPE_CONSECUTIVE_UPPERCASE && C_CTYPE_CONSECUTIVE_LOWERCASE
-#if C_CTYPE_ASCII
-  return ((c >= '0' && c <= '9')
-          || ((c & ~0x20) >= 'A' && (c & ~0x20) <= 'F'));
-#else
-  return ((c >= '0' && c <= '9')
-          || (c >= 'A' && c <= 'F')
-          || (c >= 'a' && c <= 'f'));
-#endif
-#else
-  switch (c)
-    {
-    case '0': case '1': case '2': case '3': case '4': case '5':
-    case '6': case '7': case '8': case '9':
-    case 'A': case 'B': case 'C': case 'D': case 'E': case 'F':
-    case 'a': case 'b': case 'c': case 'd': case 'e': case 'f':
-      return 1;
-    default:
-      return 0;
-    }
-#endif
-}
-
-int
-c_tolower (int c)
-{
-#if C_CTYPE_CONSECUTIVE_UPPERCASE && C_CTYPE_CONSECUTIVE_LOWERCASE
-  return (c >= 'A' && c <= 'Z' ? c - 'A' + 'a' : c);
-#else
-  switch (c)
-    {
-    case 'A': return 'a';
-    case 'B': return 'b';
-    case 'C': return 'c';
-    case 'D': return 'd';
-    case 'E': return 'e';
-    case 'F': return 'f';
-    case 'G': return 'g';
-    case 'H': return 'h';
-    case 'I': return 'i';
-    case 'J': return 'j';
-    case 'K': return 'k';
-    case 'L': return 'l';
-    case 'M': return 'm';
-    case 'N': return 'n';
-    case 'O': return 'o';
-    case 'P': return 'p';
-    case 'Q': return 'q';
-    case 'R': return 'r';
-    case 'S': return 's';
-    case 'T': return 't';
-    case 'U': return 'u';
-    case 'V': return 'v';
-    case 'W': return 'w';
-    case 'X': return 'x';
-    case 'Y': return 'y';
-    case 'Z': return 'z';
-    default: return c;
-    }
-#endif
-}
-
-int
-c_toupper (int c)
-{
-#if C_CTYPE_CONSECUTIVE_UPPERCASE && C_CTYPE_CONSECUTIVE_LOWERCASE
-  return (c >= 'a' && c <= 'z' ? c - 'a' + 'A' : c);
-#else
-  switch (c)
-    {
-    case 'a': return 'A';
-    case 'b': return 'B';
-    case 'c': return 'C';
-    case 'd': return 'D';
-    case 'e': return 'E';
-    case 'f': return 'F';
-    case 'g': return 'G';
-    case 'h': return 'H';
-    case 'i': return 'I';
-    case 'j': return 'J';
-    case 'k': return 'K';
-    case 'l': return 'L';
-    case 'm': return 'M';
-    case 'n': return 'N';
-    case 'o': return 'O';
-    case 'p': return 'P';
-    case 'q': return 'Q';
-    case 'r': return 'R';
-    case 's': return 'S';
-    case 't': return 'T';
-    case 'u': return 'U';
-    case 'v': return 'V';
-    case 'w': return 'W';
-    case 'x': return 'X';
-    case 'y': return 'Y';
-    case 'z': return 'Z';
-    default: return c;
-    }
-#endif
-}
index 476447317829bff2802f6cf038429af0f58a04cd..50ebbb582930722a8158ec9b4d26fa137f3b3552 100644 (file)
@@ -25,6 +25,13 @@ along with this program; if not, see <http://www.gnu.org/licenses/>.  */
 
 #include <stdbool.h>
 
+#ifndef _GL_INLINE_HEADER_BEGIN
+ #error "Please include config.h first."
+#endif
+_GL_INLINE_HEADER_BEGIN
+#ifndef C_CTYPE_INLINE
+# define C_CTYPE_INLINE _GL_INLINE
+#endif
 
 #ifdef __cplusplus
 extern "C" {
@@ -39,38 +46,6 @@ extern "C" {
    characters.  */
 
 
-/* Check whether the ASCII optimizations apply. */
-
-/* ANSI C89 (and ISO C99 5.2.1.3 too) already guarantees that
-   '0', '1', ..., '9' have consecutive integer values.  */
-#define C_CTYPE_CONSECUTIVE_DIGITS 1
-
-#if ('A' <= 'Z') \
-    && ('A' + 1 == 'B') && ('B' + 1 == 'C') && ('C' + 1 == 'D') \
-    && ('D' + 1 == 'E') && ('E' + 1 == 'F') && ('F' + 1 == 'G') \
-    && ('G' + 1 == 'H') && ('H' + 1 == 'I') && ('I' + 1 == 'J') \
-    && ('J' + 1 == 'K') && ('K' + 1 == 'L') && ('L' + 1 == 'M') \
-    && ('M' + 1 == 'N') && ('N' + 1 == 'O') && ('O' + 1 == 'P') \
-    && ('P' + 1 == 'Q') && ('Q' + 1 == 'R') && ('R' + 1 == 'S') \
-    && ('S' + 1 == 'T') && ('T' + 1 == 'U') && ('U' + 1 == 'V') \
-    && ('V' + 1 == 'W') && ('W' + 1 == 'X') && ('X' + 1 == 'Y') \
-    && ('Y' + 1 == 'Z')
-#define C_CTYPE_CONSECUTIVE_UPPERCASE 1
-#endif
-
-#if ('a' <= 'z') \
-    && ('a' + 1 == 'b') && ('b' + 1 == 'c') && ('c' + 1 == 'd') \
-    && ('d' + 1 == 'e') && ('e' + 1 == 'f') && ('f' + 1 == 'g') \
-    && ('g' + 1 == 'h') && ('h' + 1 == 'i') && ('i' + 1 == 'j') \
-    && ('j' + 1 == 'k') && ('k' + 1 == 'l') && ('l' + 1 == 'm') \
-    && ('m' + 1 == 'n') && ('n' + 1 == 'o') && ('o' + 1 == 'p') \
-    && ('p' + 1 == 'q') && ('q' + 1 == 'r') && ('r' + 1 == 's') \
-    && ('s' + 1 == 't') && ('t' + 1 == 'u') && ('u' + 1 == 'v') \
-    && ('v' + 1 == 'w') && ('w' + 1 == 'x') && ('x' + 1 == 'y') \
-    && ('y' + 1 == 'z')
-#define C_CTYPE_CONSECUTIVE_LOWERCASE 1
-#endif
-
 #if (' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \
     && ('%' == 37) && ('&' == 38) && ('\'' == 39) && ('(' == 40) \
     && (')' == 41) && ('*' == 42) && ('+' == 43) && (',' == 44) \
@@ -96,11 +71,99 @@ extern "C" {
     && ('{' == 123) && ('|' == 124) && ('}' == 125) && ('~' == 126)
 /* The character set is ASCII or one of its variants or extensions, not EBCDIC.
    Testing the value of '\n' and '\r' is not relevant.  */
-#define C_CTYPE_ASCII 1
+# define C_CTYPE_ASCII 1
+#elif ! (' ' == '\x40' && '0' == '\xf0'                     \
+         && 'A' == '\xc1' && 'J' == '\xd1' && 'S' == '\xe2' \
+         && 'a' == '\x81' && 'j' == '\x91' && 's' == '\xa2')
+# error "Only ASCII and EBCDIC are supported"
+#endif
+
+#define _C_CTYPE_SIGNED_EBCDIC ('A' < 0)
+
+#if C_CTYPE_ASCII
+# define _C_CTYPE_CNTRL \
+    case '\x00': case '\x01': case '\x02': case '\x03': \
+    case '\x04': case '\x05': case '\x06': case '\x07': \
+    case '\x08': case '\x09': case '\x0a': case '\x0b': \
+    case '\x0c': case '\x0d': case '\x0e': case '\x0f': \
+    case '\x10': case '\x11': case '\x12': case '\x13': \
+    case '\x14': case '\x15': case '\x16': case '\x17': \
+    case '\x18': case '\x19': case '\x1a': case '\x1b': \
+    case '\x1c': case '\x1d': case '\x1e': case '\x1f': \
+    case '\x7f'
+#else
+   /* Use EBCDIC code page 1047's assignments for ASCII control chars;
+      assume all EBCDIC code pages agree about these assignments.  */
+# define _C_CTYPE_CNTRL \
+    case '\x00': case '\x01': case '\x02': case '\x03': \
+    case '\x05': case '\x07': case '\x0b': case '\x0c': \
+    case '\x0d': case '\x0e': case '\x0f': case '\x10': \
+    case '\x11': case '\x12': case '\x13': case '\x16': \
+    case '\x18': case '\x19': case '\x1c': case '\x1d': \
+    case '\x1e': case '\x1f': case '\x25': case '\x26': \
+    case '\x27': case '\x2d': case '\x2e': case '\x2f': \
+    case '\x32': case '\x37': case '\x3c': case '\x3d': \
+    case '\x3f'
 #endif
 
+/* Cases for hex letter digits, digits, lower, and upper, offset by N.  */
+
+#define _C_CTYPE_A_THRU_F_N(n) \
+   case 'a' + (n): case 'b' + (n): case 'c' + (n): case 'd' + (n): \
+   case 'e' + (n): case 'f' + (n): \
+   case 'A' + (n): case 'B' + (n): case 'C' + (n): case 'D' + (n): \
+   case 'E' + (n): case 'F' + (n)
+#define _C_CTYPE_DIGIT_N(n) \
+   case '0' + (n): case '1' + (n): case '2' + (n): case '3' + (n): \
+   case '4' + (n): case '5' + (n): case '6' + (n): case '7' + (n): \
+   case '8' + (n): case '9' + (n)
+#define _C_CTYPE_LOWER_N(n) \
+   case 'a' + (n): case 'b' + (n): case 'c' + (n): case 'd' + (n): \
+   case 'e' + (n): case 'f' + (n): case 'g' + (n): case 'h' + (n): \
+   case 'i' + (n): case 'j' + (n): case 'k' + (n): case 'l' + (n): \
+   case 'm' + (n): case 'n' + (n): case 'o' + (n): case 'p' + (n): \
+   case 'q' + (n): case 'r' + (n): case 's' + (n): case 't' + (n): \
+   case 'u' + (n): case 'v' + (n): case 'w' + (n): case 'x' + (n): \
+   case 'y' + (n): case 'z' + (n)
+#define _C_CTYPE_UPPER_N(n) \
+   case 'A' + (n): case 'B' + (n): case 'C' + (n): case 'D' + (n): \
+   case 'E' + (n): case 'F' + (n): case 'G' + (n): case 'H' + (n): \
+   case 'I' + (n): case 'J' + (n): case 'K' + (n): case 'L' + (n): \
+   case 'M' + (n): case 'N' + (n): case 'O' + (n): case 'P' + (n): \
+   case 'Q' + (n): case 'R' + (n): case 'S' + (n): case 'T' + (n): \
+   case 'U' + (n): case 'V' + (n): case 'W' + (n): case 'X' + (n): \
+   case 'Y' + (n): case 'Z' + (n)
+
+/* Given MACRO_N, expand to all the cases for the corresponding class.  */
+#if _C_CTYPE_SIGNED_EBCDIC
+# define _C_CTYPE_CASES(macro_n) macro_n (0): macro_n (256)
+#else
+# define _C_CTYPE_CASES(macro_n) macro_n (0)
+#endif
 
-/* Function declarations. */
+/* Cases for hex letter digits, digits, lower, and upper, with another
+   case for unsigned char if the original char is negative.  */
+
+#define _C_CTYPE_A_THRU_F _C_CTYPE_CASES (_C_CTYPE_A_THRU_F_N)
+#define _C_CTYPE_DIGIT _C_CTYPE_CASES (_C_CTYPE_DIGIT_N)
+#define _C_CTYPE_LOWER _C_CTYPE_CASES (_C_CTYPE_LOWER_N)
+#define _C_CTYPE_UPPER _C_CTYPE_CASES (_C_CTYPE_UPPER_N)
+
+/* The punct class differs because some punctuation characters may be
+   negative while others are nonnegative.  Instead of attempting to
+   define _C_CTYPE_PUNCT, define just the plain chars here, and do any
+   cases-plus-256 by hand after using this macro.  */
+#define _C_CTYPE_PUNCT_PLAIN \
+   case '!': case '"': case '#': case '$':  \
+   case '%': case '&': case '\'': case '(': \
+   case ')': case '*': case '+': case ',':  \
+   case '-': case '.': case '/': case ':':  \
+   case ';': case '<': case '=': case '>':  \
+   case '?': case '@': case '[': case '\\': \
+   case ']': case '^': case '_': case '`':  \
+   case '{': case '|': case '}': case '~'
+
+/* Function definitions.  */
 
 /* Unlike the functions in <ctype.h>, which require an argument in the range
    of the 'unsigned char' type, the functions here operate on values that are
@@ -117,179 +180,608 @@ extern "C" {
          if (c_isalpha (*s)) ...
  */
 
-extern bool c_isascii (int c) _GL_ATTRIBUTE_CONST; /* not locale dependent */
+C_CTYPE_INLINE bool
+c_isalnum (int c)
+{
+  switch (c)
+    {
+    _C_CTYPE_DIGIT:
+    _C_CTYPE_LOWER:
+    _C_CTYPE_UPPER:
+      return true;
+
+    default:
+      return false;
+    }
+}
 
-extern bool c_isalnum (int c) _GL_ATTRIBUTE_CONST;
-extern bool c_isalpha (int c) _GL_ATTRIBUTE_CONST;
-extern bool c_isblank (int c) _GL_ATTRIBUTE_CONST;
-extern bool c_iscntrl (int c) _GL_ATTRIBUTE_CONST;
-extern bool c_isdigit (int c) _GL_ATTRIBUTE_CONST;
-extern bool c_islower (int c) _GL_ATTRIBUTE_CONST;
-extern bool c_isgraph (int c) _GL_ATTRIBUTE_CONST;
-extern bool c_isprint (int c) _GL_ATTRIBUTE_CONST;
-extern bool c_ispunct (int c) _GL_ATTRIBUTE_CONST;
-extern bool c_isspace (int c) _GL_ATTRIBUTE_CONST;
-extern bool c_isupper (int c) _GL_ATTRIBUTE_CONST;
-extern bool c_isxdigit (int c) _GL_ATTRIBUTE_CONST;
+C_CTYPE_INLINE bool
+c_isalpha (int c)
+{
+  switch (c)
+    {
+    _C_CTYPE_LOWER:
+    _C_CTYPE_UPPER:
+      return true;
+
+    default:
+      return false;
+    }
+}
 
-extern int c_tolower (int c) _GL_ATTRIBUTE_CONST;
-extern int c_toupper (int c) _GL_ATTRIBUTE_CONST;
+/* The function isascii is not locale dependent.
+   Its use in EBCDIC is questionable. */
+C_CTYPE_INLINE bool
+c_isascii (int c)
+{
+  switch (c)
+    {
+    case ' ':
+    _C_CTYPE_CNTRL:
+    _C_CTYPE_DIGIT:
+    _C_CTYPE_LOWER:
+    _C_CTYPE_UPPER:
+
+    _C_CTYPE_PUNCT_PLAIN:
+#if '!' < 0
+    case '!' + 256:
+#endif
+#if '"' < 0
+    case '"' + 256:
+#endif
+#if '#' < 0
+    case '#' + 256:
+#endif
+#if '$' < 0
+    case '$' + 256:
+#endif
+#if '%' < 0
+    case '%' + 256:
+#endif
+#if '&' < 0
+    case '&' + 256:
+#endif
+#if '\'' < 0
+    case '\'' + 256:
+#endif
+#if '(' < 0
+    case '(' + 256:
+#endif
+#if ')' < 0
+    case ')' + 256:
+#endif
+#if '*' < 0
+    case '*' + 256:
+#endif
+#if '+' < 0
+    case '+' + 256:
+#endif
+#if ',' < 0
+    case ',' + 256:
+#endif
+#if '-' < 0
+    case '-' + 256:
+#endif
+#if '.' < 0
+    case '.' + 256:
+#endif
+#if '/' < 0
+    case '/' + 256:
+#endif
+#if ':' < 0
+    case ':' + 256:
+#endif
+#if ';' < 0
+    case ';' + 256:
+#endif
+#if '<' < 0
+    case '<' + 256:
+#endif
+#if '=' < 0
+    case '=' + 256:
+#endif
+#if '>' < 0
+    case '>' + 256:
+#endif
+#if '?' < 0
+    case '?' + 256:
+#endif
+#if '@' < 0
+    case '@' + 256:
+#endif
+#if '[' < 0
+    case '[' + 256:
+#endif
+#if '\\' < 0
+    case '\\' + 256:
+#endif
+#if ']' < 0
+    case ']' + 256:
+#endif
+#if '^' < 0
+    case '^' + 256:
+#endif
+#if '_' < 0
+    case '_' + 256:
+#endif
+#if '`' < 0
+    case '`' + 256:
+#endif
+#if '{' < 0
+    case '{' + 256:
+#endif
+#if '|' < 0
+    case '|' + 256:
+#endif
+#if '}' < 0
+    case '}' + 256:
+#endif
+#if '~' < 0
+    case '~' + 256:
+#endif
+      return true;
 
+    default:
+      return false;
+    }
+}
 
-#if (defined __GNUC__ && !defined __STRICT_ANSI__ && defined __OPTIMIZE__ \
-     && !defined __OPTIMIZE_SIZE__ && !defined NO_C_CTYPE_MACROS)
+C_CTYPE_INLINE bool
+c_isblank (int c)
+{
+  return c == ' ' || c == '\t';
+}
 
-/* ASCII optimizations. */
+C_CTYPE_INLINE bool
+c_iscntrl (int c)
+{
+  switch (c)
+    {
+    _C_CTYPE_CNTRL:
+      return true;
+    default:
+      return false;
+    }
+}
 
-#undef c_isascii
-#define c_isascii(c) \
-  ({ int __c = (c); \
-     (__c >= 0x00 && __c <= 0x7f); \
-   })
+C_CTYPE_INLINE bool
+c_isdigit (int c)
+{
+  switch (c)
+    {
+    _C_CTYPE_DIGIT:
+      return true;
+    default:
+      return false;
+    }
+}
 
-#if C_CTYPE_CONSECUTIVE_DIGITS \
-    && C_CTYPE_CONSECUTIVE_UPPERCASE && C_CTYPE_CONSECUTIVE_LOWERCASE
-#if C_CTYPE_ASCII
-#undef c_isalnum
-#define c_isalnum(c) \
-  ({ int __c = (c); \
-     ((__c >= '0' && __c <= '9') \
-      || ((__c & ~0x20) >= 'A' && (__c & ~0x20) <= 'Z')); \
-   })
-#else
-#undef c_isalnum
-#define c_isalnum(c) \
-  ({ int __c = (c); \
-     ((__c >= '0' && __c <= '9') \
-      || (__c >= 'A' && __c <= 'Z') \
-      || (__c >= 'a' && __c <= 'z')); \
-   })
+C_CTYPE_INLINE bool
+c_isgraph (int c)
+{
+  switch (c)
+    {
+    _C_CTYPE_DIGIT:
+    _C_CTYPE_LOWER:
+    _C_CTYPE_UPPER:
+
+    _C_CTYPE_PUNCT_PLAIN:
+#if '!' < 0
+    case '!' + 256:
 #endif
+#if '"' < 0
+    case '"' + 256:
 #endif
-
-#if C_CTYPE_CONSECUTIVE_UPPERCASE && C_CTYPE_CONSECUTIVE_LOWERCASE
-#if C_CTYPE_ASCII
-#undef c_isalpha
-#define c_isalpha(c) \
-  ({ int __c = (c); \
-     ((__c & ~0x20) >= 'A' && (__c & ~0x20) <= 'Z'); \
-   })
-#else
-#undef c_isalpha
-#define c_isalpha(c) \
-  ({ int __c = (c); \
-     ((__c >= 'A' && __c <= 'Z') || (__c >= 'a' && __c <= 'z')); \
-   })
+#if '#' < 0
+    case '#' + 256:
+#endif
+#if '$' < 0
+    case '$' + 256:
+#endif
+#if '%' < 0
+    case '%' + 256:
+#endif
+#if '&' < 0
+    case '&' + 256:
+#endif
+#if '\'' < 0
+    case '\'' + 256:
+#endif
+#if '(' < 0
+    case '(' + 256:
+#endif
+#if ')' < 0
+    case ')' + 256:
+#endif
+#if '*' < 0
+    case '*' + 256:
+#endif
+#if '+' < 0
+    case '+' + 256:
+#endif
+#if ',' < 0
+    case ',' + 256:
+#endif
+#if '-' < 0
+    case '-' + 256:
+#endif
+#if '.' < 0
+    case '.' + 256:
+#endif
+#if '/' < 0
+    case '/' + 256:
+#endif
+#if ':' < 0
+    case ':' + 256:
+#endif
+#if ';' < 0
+    case ';' + 256:
+#endif
+#if '<' < 0
+    case '<' + 256:
+#endif
+#if '=' < 0
+    case '=' + 256:
+#endif
+#if '>' < 0
+    case '>' + 256:
+#endif
+#if '?' < 0
+    case '?' + 256:
+#endif
+#if '@' < 0
+    case '@' + 256:
+#endif
+#if '[' < 0
+    case '[' + 256:
+#endif
+#if '\\' < 0
+    case '\\' + 256:
+#endif
+#if ']' < 0
+    case ']' + 256:
+#endif
+#if '^' < 0
+    case '^' + 256:
+#endif
+#if '_' < 0
+    case '_' + 256:
+#endif
+#if '`' < 0
+    case '`' + 256:
+#endif
+#if '{' < 0
+    case '{' + 256:
+#endif
+#if '|' < 0
+    case '|' + 256:
+#endif
+#if '}' < 0
+    case '}' + 256:
 #endif
+#if '~' < 0
+    case '~' + 256:
 #endif
+      return true;
 
-#undef c_isblank
-#define c_isblank(c) \
-  ({ int __c = (c); \
-     (__c == ' ' || __c == '\t'); \
-   })
+    default:
+      return false;
+    }
+}
 
-#if C_CTYPE_ASCII
-#undef c_iscntrl
-#define c_iscntrl(c) \
-  ({ int __c = (c); \
-     ((__c & ~0x1f) == 0 || __c == 0x7f); \
-   })
-#endif
+C_CTYPE_INLINE bool
+c_islower (int c)
+{
+  switch (c)
+    {
+    _C_CTYPE_LOWER:
+      return true;
+    default:
+      return false;
+    }
+}
 
-#if C_CTYPE_CONSECUTIVE_DIGITS
-#undef c_isdigit
-#define c_isdigit(c) \
-  ({ int __c = (c); \
-     (__c >= '0' && __c <= '9'); \
-   })
+C_CTYPE_INLINE bool
+c_isprint (int c)
+{
+  switch (c)
+    {
+    case ' ':
+    _C_CTYPE_DIGIT:
+    _C_CTYPE_LOWER:
+    _C_CTYPE_UPPER:
+
+    _C_CTYPE_PUNCT_PLAIN:
+#if '!' < 0
+    case '!' + 256:
 #endif
-
-#if C_CTYPE_CONSECUTIVE_LOWERCASE
-#undef c_islower
-#define c_islower(c) \
-  ({ int __c = (c); \
-     (__c >= 'a' && __c <= 'z'); \
-   })
+#if '"' < 0
+    case '"' + 256:
 #endif
-
-#if C_CTYPE_ASCII
-#undef c_isgraph
-#define c_isgraph(c) \
-  ({ int __c = (c); \
-     (__c >= '!' && __c <= '~'); \
-   })
+#if '#' < 0
+    case '#' + 256:
 #endif
-
-#if C_CTYPE_ASCII
-#undef c_isprint
-#define c_isprint(c) \
-  ({ int __c = (c); \
-     (__c >= ' ' && __c <= '~'); \
-   })
+#if '$' < 0
+    case '$' + 256:
+#endif
+#if '%' < 0
+    case '%' + 256:
+#endif
+#if '&' < 0
+    case '&' + 256:
+#endif
+#if '\'' < 0
+    case '\'' + 256:
+#endif
+#if '(' < 0
+    case '(' + 256:
+#endif
+#if ')' < 0
+    case ')' + 256:
+#endif
+#if '*' < 0
+    case '*' + 256:
+#endif
+#if '+' < 0
+    case '+' + 256:
+#endif
+#if ',' < 0
+    case ',' + 256:
+#endif
+#if '-' < 0
+    case '-' + 256:
+#endif
+#if '.' < 0
+    case '.' + 256:
+#endif
+#if '/' < 0
+    case '/' + 256:
+#endif
+#if ':' < 0
+    case ':' + 256:
+#endif
+#if ';' < 0
+    case ';' + 256:
 #endif
+#if '<' < 0
+    case '<' + 256:
+#endif
+#if '=' < 0
+    case '=' + 256:
+#endif
+#if '>' < 0
+    case '>' + 256:
+#endif
+#if '?' < 0
+    case '?' + 256:
+#endif
+#if '@' < 0
+    case '@' + 256:
+#endif
+#if '[' < 0
+    case '[' + 256:
+#endif
+#if '\\' < 0
+    case '\\' + 256:
+#endif
+#if ']' < 0
+    case ']' + 256:
+#endif
+#if '^' < 0
+    case '^' + 256:
+#endif
+#if '_' < 0
+    case '_' + 256:
+#endif
+#if '`' < 0
+    case '`' + 256:
+#endif
+#if '{' < 0
+    case '{' + 256:
+#endif
+#if '|' < 0
+    case '|' + 256:
+#endif
+#if '}' < 0
+    case '}' + 256:
+#endif
+#if '~' < 0
+    case '~' + 256:
+#endif
+      return true;
 
-#if C_CTYPE_ASCII
-#undef c_ispunct
-#define c_ispunct(c) \
-  ({ int _c = (c); \
-     (c_isgraph (_c) && ! c_isalnum (_c)); \
-   })
-#endif
-
-#undef c_isspace
-#define c_isspace(c) \
-  ({ int __c = (c); \
-     (__c == ' ' || __c == '\t' \
-      || __c == '\n' || __c == '\v' || __c == '\f' || __c == '\r'); \
-   })
-
-#if C_CTYPE_CONSECUTIVE_UPPERCASE
-#undef c_isupper
-#define c_isupper(c) \
-  ({ int __c = (c); \
-     (__c >= 'A' && __c <= 'Z'); \
-   })
-#endif
-
-#if C_CTYPE_CONSECUTIVE_DIGITS \
-    && C_CTYPE_CONSECUTIVE_UPPERCASE && C_CTYPE_CONSECUTIVE_LOWERCASE
-#if C_CTYPE_ASCII
-#undef c_isxdigit
-#define c_isxdigit(c) \
-  ({ int __c = (c); \
-     ((__c >= '0' && __c <= '9') \
-      || ((__c & ~0x20) >= 'A' && (__c & ~0x20) <= 'F')); \
-   })
-#else
-#undef c_isxdigit
-#define c_isxdigit(c) \
-  ({ int __c = (c); \
-     ((__c >= '0' && __c <= '9') \
-      || (__c >= 'A' && __c <= 'F') \
-      || (__c >= 'a' && __c <= 'f')); \
-   })
+    default:
+      return false;
+    }
+}
+
+C_CTYPE_INLINE bool
+c_ispunct (int c)
+{
+  switch (c)
+    {
+    _C_CTYPE_PUNCT_PLAIN:
+#if '!' < 0
+    case '!' + 256:
+#endif
+#if '"' < 0
+    case '"' + 256:
 #endif
+#if '#' < 0
+    case '#' + 256:
 #endif
+#if '$' < 0
+    case '$' + 256:
+#endif
+#if '%' < 0
+    case '%' + 256:
+#endif
+#if '&' < 0
+    case '&' + 256:
+#endif
+#if '\'' < 0
+    case '\'' + 256:
+#endif
+#if '(' < 0
+    case '(' + 256:
+#endif
+#if ')' < 0
+    case ')' + 256:
+#endif
+#if '*' < 0
+    case '*' + 256:
+#endif
+#if '+' < 0
+    case '+' + 256:
+#endif
+#if ',' < 0
+    case ',' + 256:
+#endif
+#if '-' < 0
+    case '-' + 256:
+#endif
+#if '.' < 0
+    case '.' + 256:
+#endif
+#if '/' < 0
+    case '/' + 256:
+#endif
+#if ':' < 0
+    case ':' + 256:
+#endif
+#if ';' < 0
+    case ';' + 256:
+#endif
+#if '<' < 0
+    case '<' + 256:
+#endif
+#if '=' < 0
+    case '=' + 256:
+#endif
+#if '>' < 0
+    case '>' + 256:
+#endif
+#if '?' < 0
+    case '?' + 256:
+#endif
+#if '@' < 0
+    case '@' + 256:
+#endif
+#if '[' < 0
+    case '[' + 256:
+#endif
+#if '\\' < 0
+    case '\\' + 256:
+#endif
+#if ']' < 0
+    case ']' + 256:
+#endif
+#if '^' < 0
+    case '^' + 256:
+#endif
+#if '_' < 0
+    case '_' + 256:
+#endif
+#if '`' < 0
+    case '`' + 256:
+#endif
+#if '{' < 0
+    case '{' + 256:
+#endif
+#if '|' < 0
+    case '|' + 256:
+#endif
+#if '}' < 0
+    case '}' + 256:
+#endif
+#if '~' < 0
+    case '~' + 256:
+#endif
+      return true;
 
-#if C_CTYPE_CONSECUTIVE_UPPERCASE && C_CTYPE_CONSECUTIVE_LOWERCASE
-#undef c_tolower
-#define c_tolower(c) \
-  ({ int __c = (c); \
-     (__c >= 'A' && __c <= 'Z' ? __c - 'A' + 'a' : __c); \
-   })
-#undef c_toupper
-#define c_toupper(c) \
-  ({ int __c = (c); \
-     (__c >= 'a' && __c <= 'z' ? __c - 'a' + 'A' : __c); \
-   })
+    default:
+      return false;
+    }
+}
+
+C_CTYPE_INLINE bool
+c_isspace (int c)
+{
+  switch (c)
+    {
+    case ' ': case '\t': case '\n': case '\v': case '\f': case '\r':
+      return true;
+    default:
+      return false;
+    }
+}
+
+C_CTYPE_INLINE bool
+c_isupper (int c)
+{
+  switch (c)
+    {
+    _C_CTYPE_UPPER:
+      return true;
+    default:
+      return false;
+    }
+}
+
+C_CTYPE_INLINE bool
+c_isxdigit (int c)
+{
+  switch (c)
+    {
+    _C_CTYPE_DIGIT:
+    _C_CTYPE_A_THRU_F:
+      return true;
+
+    default:
+      return false;
+    }
+}
+
+C_CTYPE_INLINE int
+c_tolower (int c)
+{
+  switch (c)
+    {
+    _C_CTYPE_UPPER_N (0):
+#if _C_CTYPE_SIGNED_EBCDIC
+      c += 256;
+      /* Fall through.  */
+    _C_CTYPE_UPPER_N (256):
 #endif
+      return c - 'A' + 'a';
 
-#endif /* optimizing for speed */
+    default:
+      return c;
+    }
+}
 
+C_CTYPE_INLINE int
+c_toupper (int c)
+{
+  switch (c)
+    {
+    _C_CTYPE_LOWER_N (0):
+#if _C_CTYPE_SIGNED_EBCDIC
+      c += 256;
+      /* Fall through.  */
+    _C_CTYPE_LOWER_N (256):
+#endif
+      return c - 'a' + 'A';
+
+    default:
+      return c;
+    }
+}
 
 #ifdef __cplusplus
 }
 #endif
 
+_GL_INLINE_HEADER_END
+
 #endif /* C_CTYPE_H */
index 459513c925144fa6be950cfeb2f9e204a69c0a9f..9dfb0764ce458e700a20589bf0cc6b4f8b593d27 100644 (file)
@@ -1,4 +1,4 @@
-/* get-permissions.c - get permissions of a file
+/* Get permissions of a file.  -*- coding: utf-8 -*-
 
    Copyright (C) 2002-2003, 2005-2015 Free Software Foundation, Inc.
 
index c4507424719dbdcc6e1bfa51358f866da2ffe88c..9db9033816d1a176262a16c77e9242ed9aac863a 100644 (file)
@@ -1,4 +1,4 @@
-/* copy-acl.c - copy access control list from one file to another file
+/* Copy access control list from one file to another.  -*- coding: utf-8 -*-
 
    Copyright (C) 2002-2003, 2005-2015 Free Software Foundation, Inc.
 
index 1aa5b4941c749d8bd91b97ec8a8fefce753c3d30..8e6ecf365d15dffc32ff11c8234814c4a481138e 100644 (file)
@@ -1,4 +1,4 @@
-/* set-permissions.c - set permissions of a file
+/* Set permissions of a file.  -*- coding: utf-8 -*-
 
    Copyright (C) 2002-2003, 2005-2015 Free Software Foundation, Inc.
 
index a990050b67d98d68d03064e9b2dbf67e265e4000..c6115b6dbe05f96ceaf8226e6a9bc176ee322661 100644 (file)
@@ -64,7 +64,9 @@
 #  define _Alignof(type) offsetof (struct { char __a; type __b; }, __b)
 # endif
 #endif
-#define alignof _Alignof
+#if ! (defined __cplusplus && 201103 <= __cplusplus)
+# define alignof _Alignof
+#endif
 #define __alignof_is_defined 1
 
 /* alignas (A), also known as _Alignas (A), aligns a variable or type
 #  define _Alignas(a) __declspec (align (a))
 # endif
 #endif
-#if defined _Alignas || (defined __STDC_VERSION && 201112 <= __STDC_VERSION__)
+#if ((defined _Alignas && ! (defined __cplusplus && 201103 <= __cplusplus)) \
+     || (defined __STDC_VERSION && 201112 <= __STDC_VERSION__))
 # define alignas _Alignas
+#endif
+#if defined alignas || (defined __cplusplus && 201103 <= __cplusplus)
 # define __alignas_is_defined 1
 #endif
 
index a40f8f3d67ac1b9870b51330e1292823a3912bd0..224e2a6da7fd1990179d088bab745bc5b08803cc 100644 (file)
@@ -1,3 +1,8 @@
+2015-09-20  Ken Manheimer  <ken.manheimer@gmail.com>
+
+       * python.el (python-pdbtrack-set-tracked-buffer): Repair pdbtrack
+       so it follows transition from one remote file to another.
+
 2015-04-06  Alan Mackenzie  <acm@muc.de>
 
        Fix miscellaneous glitches in cc-mode.el.  (Bug#20245)
index 8bcb2d6dc5f3e19f31b8dd2c1e9176a2b049fcde..15d4d37f7ba8668829ce45e0b90b5147a78047ec 100644 (file)
@@ -103,7 +103,7 @@ BYTE_COMPILE_FLAGS = $(BIG_STACK_OPTS) \
 # Files to compile before others during a bootstrap.  This is done to
 # speed up the bootstrap process.  They're ordered by size, so we use
 # the slowest-compiler on the smallest file and move to larger files as the
-# compiler gets faster.  `autoload.elc' comes last because it is not used by
+# compiler gets faster.  'autoload.elc' comes last because it is not used by
 # the compiler (so its compilation does not speed up subsequent compilations),
 # it's only placed here so as to speed up generation of the loaddefs.el file.
 
@@ -272,22 +272,22 @@ $(THEFILE)c:
 
 compile-first: $(COMPILE_FIRST)
 
-# In `compile-main' we could directly do
+# In 'compile-main' we could directly do
 #    ... | xargs $(MAKE)
 # and it works, but it generates a lot of messages like
 #    make[2]: gnus/gnus-mlspl.elc is up to date.
 # so instead, we use "xargs echo" to split the list of file into manageable
-# chunks and then use an intermediate `compile-targets' target so the
+# chunks and then use an intermediate 'compile-targets' target so the
 # actual targets (the .elc files) are not mentioned as targets on the
 # make command line.
 
 
 .PHONY: compile-targets
-# TARGETS is set dynamically in the recursive call from `compile-main'.
+# TARGETS is set dynamically in the recursive call from 'compile-main'.
 compile-targets: $(TARGETS)
 
 # Compile all the Elisp files that need it.  Beware: it approximates
-# `no-byte-compile', so watch out for false-positives!
+# 'no-byte-compile', so watch out for false-positives!
 compile-main: leim semantic compile-clean
        @(cd $(lisp) && \
        els=`echo "${SUBDIRS_REL} " | sed -e 's|/\./|/|g' -e 's|/\. | |g' -e 's| |/*.el |g'`; \
@@ -326,7 +326,7 @@ semantic:
 compile: $(LOADDEFS) autoloads compile-first
        $(MAKE) compile-main
 
-# Compile all Lisp files.  This is like `compile' but compiles files
+# Compile all Lisp files.  This is like 'compile' but compiles files
 # unconditionally.  Some files don't actually get compiled because they
 # set the local variable no-byte-compile.
 compile-always:
index e250a7004268543c8efe0e60ff27964c032b0d6a..b68ad5e30f91eb360f26b05a32a4bd22639d8320 100644 (file)
@@ -6,8 +6,7 @@ files are architecture-independent.
 The term subdirectory contains Lisp files that customize Emacs for
 certain terminal types.  When Emacs starts, it checks the TERM
 environment variable to get the terminal type and loads
-`term/${TERM}.el' if it exists.
+'term/${TERM}.el' if it exists.
 
 The other subdirectories hold Lisp packages grouped by their general
 purpose.
-
index f7055734961088a980a9a9bef088ae24ff04a60a..5273fe2b4335aa2737460839d8061dede4134d4a 100644 (file)
@@ -917,7 +917,7 @@ has been customized to enable this behavior), `allout-mode' will be
 automatically activated.  The layout dictated by the value will be used to
 set the initial exposure when `allout-mode' is activated.
 
-\*You should not setq-default this variable non-nil unless you want every
+*You should not setq-default this variable non-nil unless you want every
 visited file to be treated as an allout file.*
 
 The value would typically be set by a file local variable.  For
@@ -1512,7 +1512,7 @@ already associated with a file.
 
 It consists of an encrypted random string useful only to verify that a
 passphrase entered by the user is effective for decryption.  The passphrase
-itself is \*not* recorded in the file anywhere, and the encrypted contents
+itself is *not* recorded in the file anywhere, and the encrypted contents
 are random binary characters to avoid exposing greater susceptibility to
 search attacks.
 
@@ -3721,7 +3721,7 @@ Nuances:
   (save-match-data
     (let* ((inhibit-field-text-motion t)
            (depth (+ (allout-current-depth) relative-depth))
-           (opening-on-blank (if (looking-at "^\$")
+           (opening-on-blank (if (looking-at "^$")
                                  (not (setq before nil))))
            ;; bunch o vars set while computing ref-topic
            opening-numbered
@@ -5562,9 +5562,8 @@ Defaults:
          ;; Specified but not a buffer -- get it:
          (let ((got (get-buffer frombuf)))
            (if (not got)
-               (error (concat "allout-process-exposed: source buffer "
-                              frombuf
-                              " not found."))
+               (error "allout-process-exposed: source buffer %s not found."
+                      frombuf)
              (setq frombuf got))))
     ;; not specified -- default it:
     (setq frombuf (current-buffer)))
@@ -5909,7 +5908,7 @@ file with topics pending encryption is saved, topics pending
 encryption are encrypted.  See `allout-encrypt-unencrypted-on-saves'
 for auto-encryption specifics.
 
-\*NOTE WELL* that automatic encryption that happens during saves will
+*NOTE WELL* that automatic encryption that happens during saves will
 default to symmetric encryption -- you must deliberately (re)encrypt key-pair
 encrypted topics if you want them to continue to use the key-pair cipher.
 
index 3672812e5a17d553c4ebd15b6d6d94bcc181cd59..8560871694de1d84c15741973b1f9c203e95e9d7 100644 (file)
@@ -1265,9 +1265,9 @@ if `inhibit-field-text-motion' is non-nil."
 (define-key abbrev-map "e" 'expand-abbrev)
 (define-key abbrev-map "'" 'expand-abbrev)
 ;; (define-key ctl-x-map "\C-a" 'add-mode-abbrev)
-;; (define-key ctl-x-map "\+" 'add-global-abbrev)
+;; (define-key ctl-x-map "+" 'add-global-abbrev)
 ;; (define-key ctl-x-map "\C-h" 'inverse-add-mode-abbrev)
-;; (define-key ctl-x-map "\-" 'inverse-add-global-abbrev)
+;; (define-key ctl-x-map "-" 'inverse-add-global-abbrev)
 (define-key esc-map "'" 'abbrev-prefix-mark)
 (define-key ctl-x-map "'" 'expand-abbrev)
 (define-key ctl-x-map "\C-b" 'list-buffers)
index 035148120a4d3f0c8a47ce6132cd53e40f78e00d..e9310259e7e02fac5f411398de0e6917e2329a19 100644 (file)
@@ -138,7 +138,7 @@ This is as opposed to inline text at the top of the buffer."
 
 (defconst bookmark-bmenu-inline-header-height 2
   "Number of lines used for the *Bookmark List* header
-\(only significant when `bookmark-bmenu-use-header-line' is nil\).")
+\(only significant when `bookmark-bmenu-use-header-line' is nil).")
 
 (defconst bookmark-bmenu-marks-width 2
   "Number of columns (chars) used for the *Bookmark List* marks column,
index cb6ab6f8ecc17b62a2034d79e8ba7d3648dfc0d8..933c446875e08026b5ac016db914910222ed34e8 100644 (file)
   (define-key calc-mode-map "uG" 'calc-vector-geometric-mean)
   (define-key calc-mode-map "uM" 'calc-vector-mean)
   (define-key calc-mode-map "uN" 'calc-vector-min)
+  (define-key calc-mode-map "uR" 'calc-vector-rms)
   (define-key calc-mode-map "uS" 'calc-vector-sdev)
   (define-key calc-mode-map "uU" 'calc-undo)
   (define-key calc-mode-map "uX" 'calc-vector-max)
@@ -932,7 +933,7 @@ calc-preserve-point calc-replace-selections calc-replace-sub-formula
 calc-roll-down-with-selections calc-roll-up-with-selections
 calc-sel-error)
 
- ("calc-stat" calc-vector-op calcFunc-agmean
+ ("calc-stat" calc-vector-op calcFunc-agmean calcFunc-rms
 calcFunc-vcorr calcFunc-vcount calcFunc-vcov calcFunc-vflat
 calcFunc-vgmean calcFunc-vhmean calcFunc-vmax calcFunc-vmean
 calcFunc-vmeane calcFunc-vmedian calcFunc-vmin calcFunc-vpcov
@@ -1147,8 +1148,8 @@ calc-vector-covariance calc-vector-geometric-mean
 calc-vector-harmonic-mean calc-vector-max calc-vector-mean
 calc-vector-mean-error calc-vector-median calc-vector-min
 calc-vector-pop-covariance calc-vector-pop-sdev
-calc-vector-pop-variance calc-vector-product calc-vector-sdev
-calc-vector-sum calc-vector-variance)
+calc-vector-pop-variance calc-vector-product calc-vector-rms
+calc-vector-sdev calc-vector-sum calc-vector-variance)
 
  ("calc-store" calc-assign calc-copy-special-constant
 calc-copy-variable calc-declare-variable
@@ -1292,6 +1293,7 @@ calc-kill calc-kill-region calc-yank))))
   (define-key calc-help-map "?" 'calc-help-for-help)
   (define-key calc-help-map "\C-h" 'calc-help-for-help))
 
+(defvar calc-prefix-help-retry nil)
 (defvar calc-prefix-help-phase 0)
 (defun calc-do-prefix-help (msgs group key)
   (if calc-full-help-flag
@@ -1299,7 +1301,7 @@ calc-kill calc-kill-region calc-yank))))
     (if (cdr msgs)
        (progn
          (setq calc-prefix-help-phase
-               (if (eq this-command last-command)
+               (if calc-prefix-help-retry
                    (% (1+ calc-prefix-help-phase) (1+ (length msgs)))
                  0))
          (let ((msg (nth calc-prefix-help-phase msgs)))
@@ -1320,7 +1322,13 @@ calc-kill calc-kill-region calc-yank))))
              (message "%s: %s: %c-" group (car msgs) key)
            (message "%s: (none)  %c-" group key))
        (message "%s: %s" group (car msgs))))
-    (and key (calc-unread-command key))))
+    (let* ((chr (read-char))
+           (bnd (local-key-binding (if key (string key chr) (string chr)))))
+      (setq calc-prefix-help-retry (= chr ??))
+      (if bnd
+          (call-interactively bnd)
+        (message "%s is undefined"
+                 (key-description (if key (vector key chr) (vector chr))))))))
 
 ;;;; Commands.
 
index 444bb5ef9206ff790aa7a522110d6cfc0fd9abeb..33cb1c1566c54efda60af1d5cd26ff3296ab5abb 100644 (file)
@@ -386,7 +386,7 @@ C-w  Describe how there is no warranty for Calc."
   (interactive)
   (calc-quit)
   (view-emacs-news)
-  (re-search-forward "^\*+ .*\\<Calc\\>" nil t))
+  (re-search-forward "^\\*+ .*\\<Calc\\>" nil t))
 
 (defvar calc-help-long-names '((?b . "binary/business")
                               (?g . "graphics")
index 3b5949c274b1d2ecdf6956e8d94c0c00f0a38f19..d2c9da86a6f83834e9811711ba7c7ea8ab37b5ac 100644 (file)
                                ( ?G 1 calcFunc-vgmean )
                                ( ?M 1 calcFunc-vmean )
                                ( ?N 1 calcFunc-vmin )
+                                ( ?R 1 calcFunc-rms )
                                ( ?S 1 calcFunc-vsdev )
                                ( ?X 1 calcFunc-vmax ) )
                              ( ( ?C 2 calcFunc-vpcov )
index 44086872dd02eb0f88d3b49c91b04172503bfa2d..8610090c5d12b9bccd72b763d0cf8f46bb64de87 100644 (file)
               :keys "I u M"
               :active (>= (calc-stack-size) 1)
               :help "The average (arithmetic mean) of the data values as an error form"]
+              ["rms(1:)"
+               (progn
+                 (require 'calc-stat)
+                 (call-interactively 'calc-vector-rms))
+               :keys "u R"
+               :active (>= (calc-stack-size) 1)
+               :help "The root mean square of the data values"]
               ["sdev(1:)"
                (progn
                  (require 'calc-stat)
index cf0b3ea4a1233856e9f9c68a282519fea60115e0..a797db2e67dbae5713b6a95149b0581e3eb83f8f 100644 (file)
         (calc-vector-op "meae" 'calcFunc-vmeane arg)
        (calc-vector-op "mean" 'calcFunc-vmean arg)))))
 
+(defun calc-vector-rms (arg)
+  (interactive "P")
+  (calc-slow-wrapper
+   (calc-vector-op "rms" 'calcFunc-rms arg)))
+
 (defun calc-vector-mean-error (arg)
   (interactive "P")
   (calc-invert-func)
                          suminvsqrwts))
            (math-div (calcFunc-reduce '(var add var-add) means) len)))))))
 
+(defun calcFunc-rms (a)
+  "Return the root-mean-square of the vector A."
+  (math-sqrt
+   (calcFunc-vmean
+    (calcFunc-map '(var abssqr var-abssqr) a))))
+
 (defun math-fix-int-intv (x)
   (if (math-floatp x)
       x
index 3d8c865c7bf9c2f5770e5876fa2226f629c02999..21209c6667766ad64766df46bbcf19607fe16426 100644 (file)
@@ -58,8 +58,8 @@
              (let ((msg
                     (calc-store-value var (or calc-given-value (calc-top 1))
                                       "" calc-given-value-flag)))
-               (message (concat "Stored to variable \"%s\"" msg)
-                        (calc-var-name var)))))
+               (message "Stored to variable \"%s\"%s"
+                        (calc-var-name var) msg))))
        (setq var (calc-is-assignments (calc-top 1)))
        (if var
           (while var
@@ -67,8 +67,8 @@
                     (calc-store-value (car (car var)) (cdr (car var))
                                       (if (not (cdr var)) "")
                                       (if (not (cdr var)) 1))))
-               (message (concat "Stored to variable \"%s\"" msg)
-                        (calc-var-name (car (car var)))))
+               (message "Stored to variable \"%s\"%s"
+                        (calc-var-name (car (car var))) msg))
             (setq var (cdr var))))))))
 
 (defun calc-store-plus (&optional var)
                                       (calc-var-name var1)))))
         (if var2
             (let ((msg (calc-store-value var2 value "")))
-               (message (concat "Variable \"%s\" copied to \"%s\"" msg)
-                        (calc-var-name var1) (calc-var-name var2))))))))
+               (message "Variable \"%s\" copied to \"%s\"%s"
+                        (calc-var-name var1) (calc-var-name var2) msg)))))))
 
 (defvar calc-last-edited-variable nil)
 (defun calc-edit-variable (&optional var)
index bb7e97ea7f32b7c049c19c9be732a6b5a84e15f8..2c646456112f055876a35c2b9439fe49218ad977 100644 (file)
@@ -52,7 +52,8 @@ Type 0 is the cons cell (HIGH . LOW), type 1 is the list (HIGH
 LOW), type 2 is the list (HIGH LOW MICRO), and type 3 is the
 list (HIGH LOW MICRO PICO)."
   (declare (indent 1)
-          (debug ((&rest (symbolp symbolp symbolp &or [symbolp form] form))
+          (debug ((&rest (symbolp symbolp symbolp
+                           &or [symbolp symbolp form] [symbolp form] form))
                   body)))
   (if varlist
       (let* ((elt (pop varlist))
@@ -178,7 +179,7 @@ If DATE lacks timezone information, GMT is assumed."
       (defun time-to-seconds (&optional time)
         "Convert optional value TIME to a floating point number.
 TIME defaults to the current time."
-        (with-decoded-time-value ((high low micro pico type
+        (with-decoded-time-value ((high low micro pico _type
                                   (or time (current-time))))
           (+ (* high 65536.0)
              low
@@ -261,8 +262,8 @@ Return the difference in the format of a time value."
 
     (defun time-less-p (t1 t2)
       "Return non-nil if time value T1 is earlier than time value T2."
-      (with-decoded-time-value ((high1 low1 micro1 pico1 type1 t1)
-                               (high2 low2 micro2 pico2 type2 t2))
+      (with-decoded-time-value ((high1 low1 micro1 pico1 _type1 t1)
+                               (high2 low2 micro2 pico2 _type2 t2))
        (or (< high1 high2)
            (and (= high1 high2)
                 (or (< low1 low2)
index a04bf8237d9459bb4a87d29ac098c5549572bc8e..27ca17b4e4fe1641a2b0eb4915279e8c3718d029 100644 (file)
@@ -74,7 +74,7 @@ truenames (those with the extension \".toda\")."
   (let ((files (if (file-exists-p todo-directory)
                   (mapcar 'file-truename
                    (directory-files todo-directory t
-                                    (if archives "\.toda$" "\.todo$") t)))))
+                                    (if archives "\\.toda$" "\\.todo$") t)))))
     (sort files (lambda (s1 s2) (let ((cis1 (upcase s1))
                                      (cis2 (upcase s2)))
                                  (string< cis1 cis2))))))
@@ -1112,7 +1112,7 @@ these files, also rename them accordingly."
         (snname (todo-short-file-name nname))
         (files (directory-files todo-directory t
                                 (concat ".*" (regexp-quote soname)
-                                        ".*\.tod[aorty]$") t)))
+                                        ".*\\.tod[aorty]$") t)))
     (dolist (f files)
       (let* ((sfname (todo-short-file-name f))
             (fext (file-name-extension f t))
@@ -3963,7 +3963,7 @@ regexp items."
 (defun todo-find-filtered-items-file ()
   "Choose a filtered items file and visit it."
   (interactive)
-  (let ((files (directory-files todo-directory t "\.tod[rty]$" t))
+  (let ((files (directory-files todo-directory t "\\.tod[rty]$" t))
        falist file)
     (dolist (f files)
       (let ((type (cond ((equal (file-name-extension f) "todr") "regexp")
@@ -4892,7 +4892,7 @@ With nil or omitted CATEGORY, default to the current category."
        (widen)
        (goto-char (point-min))
        (setq todo-categories
-             (if (looking-at "\(\(\"")
+             (if (looking-at "((\"")
                  (read (buffer-substring-no-properties
                         (line-beginning-position)
                         (line-end-position)))
@@ -5643,9 +5643,10 @@ have been removed."
     (when deleted
       (let ((pl (> (length deleted) 1))
            (names (mapconcat (lambda (f) (concat "\"" f "\"")) deleted ", ")))
-       (message (concat "File" (if pl "s" "") " " names " ha" (if pl "ve" "s")
+       (message (concat "File" (if pl "s" "") " %s ha" (if pl "ve" "s")
                         " been deleted and removed from\n"
-                        "the list of category completion files")))
+                        "the list of category completion files")
+                names))
       (todo-reevaluate-category-completions-files-defcustom)
       (custom-set-default 'todo-category-completions-files
                          (symbol-value 'todo-category-completions-files))
@@ -6022,7 +6023,7 @@ the empty string (i.e., no time string)."
   "The :set function for user option `todo-nondiary-marker'."
   (let* ((oldvalue (symbol-value symbol))
         (files (append todo-files todo-archives
-                       (directory-files todo-directory t "\.tod[rty]$" t))))
+                       (directory-files todo-directory t "\\.tod[rty]$" t))))
     (custom-set-default symbol value)
     ;; Need to reset these to get font-locking right.
     (setq todo-nondiary-start (nth 0 todo-nondiary-marker)
@@ -6075,7 +6076,7 @@ the empty string (i.e., no time string)."
   "The :set function for user option `todo-done-string'."
   (let ((oldvalue (symbol-value symbol))
        (files (append todo-files todo-archives
-                      (directory-files todo-directory t "\.todr$" t))))
+                      (directory-files todo-directory t "\\.todr$" t))))
     (custom-set-default symbol value)
     ;; Need to reset this to get font-locking right.
     (setq todo-done-string-start
@@ -6104,7 +6105,7 @@ the empty string (i.e., no time string)."
   "The :set function for user option `todo-comment-string'."
   (let ((oldvalue (symbol-value symbol))
        (files (append todo-files todo-archives
-                      (directory-files todo-directory t "\.todr$" t))))
+                      (directory-files todo-directory t "\\.todr$" t))))
     (custom-set-default symbol value)
     (when (not (equal value oldvalue))
       (dolist (f files)
@@ -6130,7 +6131,7 @@ the empty string (i.e., no time string)."
   "The :set function for user option `todo-highlight-item'."
   (let ((oldvalue (symbol-value symbol))
        (files (append todo-files todo-archives
-                      (directory-files todo-directory t "\.tod[rty]$" t))))
+                      (directory-files todo-directory t "\\.tod[rty]$" t))))
     (custom-set-default symbol value)
     (when (not (equal value oldvalue))
       (dolist (f files)
index b4fea4214475a9985643c61943d70941a535a3b4..7c2a6b8dbf1c21ab45044ca7e80ae9f0741f1eb0 100644 (file)
@@ -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.
index 8d013245bb6d5f14915aec19015d23ec9f8ef1c9..b865ff5028dfa2994590b8cac2370f0541a85d69 100644 (file)
@@ -302,6 +302,8 @@ CLASS is the EIEIO class that is used to track this project.  It should subclass
                              ".svn" 'ede-generic-vc-project)
   (ede-generic-new-autoloader "generic-cvs" "Generic CVS"
                              "CVS" 'ede-generic-vc-project)
+  (ede-generic-new-autoloader "generic-mtn" "Generic Monotone"
+                              "_MTN/options" 'ede-generic-vc-project)
 
   ;; Take advantage of existing 'projectile' based projects.
   ;; @TODO - if projectile supports compile commands etc, can we
index de06910f75ef90e3dc987eb66b07d2e038de2e43..34e302d3d2c048b47b835a02e6a407412c9fa206 100644 (file)
@@ -126,7 +126,7 @@ file.")
 (defvar ede-source-c++
   (ede-sourcecode "ede-source-c++"
                  :name "C++"
-                 :sourcepattern "\\.\\(c\\(pp?\\|c\\|xx\\|++\\)\\|C\\\(PP\\)?\\)$"
+                 :sourcepattern "\\.\\(c\\(pp?\\|c\\|xx\\|++\\)\\|C\\(PP\\)?\\)$"
                  :auxsourcepattern "\\.\\(hpp?\\|hh?\\|hxx\\|H\\)$"
                  :garbagepattern '("*.o" "*.obj" ".deps/*.P" ".lo"))
   "C++ source code definition.")
index dfd44ac07c6d4ce060e398727a9a3b6a59008cf2..a8edbe8fbdfaeeccb81246d23843193ab59283d1 100644 (file)
@@ -166,7 +166,7 @@ Use ldlibs to add addition libraries.")
        "%.lo: %.c\n"
        "\t@echo '$(LTCOMPILE) -c $<'; \\\n"
        "\t$(LTCOMPILE) -Wp,-MD,.deps/$(*F).p -c $<\n"
-       "\t@-sed -e 's/^\([^:]*\)\.o:/\1.lo \1.o:/' \\\n"
+       "\t@-sed -e 's/^\\([^:]*\\)\\.o:/\\1.lo \\1.o:/' \\\n"
        "\t      < .deps/$(*F).p > .deps/$(*F).P\n"
        "\t@-rm -f .deps/$(*F).p\n\n"))
   )
index 64c1f08af22c77d26129a2e6563cda4a8c45160b..8736a4ff93c799ec83fb3f28c09248aced6a9047 100644 (file)
@@ -604,7 +604,7 @@ PROMPT, INITIAL, HIST, and DEFAULT are the same as for `completing-read'."
 ;;
 (defun overload-docstring-extension (overload)
   "Return the doc string that augments the description of OVERLOAD."
-  (let ((doc "\n\This function can be overloaded\
+  (let ((doc "\nThis function can be overloaded\
  with `define-mode-local-override'.")
         (sym (overload-obsoleted-by overload)))
     (when sym
@@ -677,7 +677,7 @@ SYMBOL is a function that can be overridden."
     result))
 
 (defun xref-mode-local-overload (symbol)
-  "For ‘elisp-xref-find-def-functions’; add overloads for SYMBOL."
+  "For `elisp-xref-find-def-functions'; add overloads for SYMBOL."
   ;; Current buffer is the buffer where xref-find-definitions was invoked.
   (when (get symbol 'mode-local-overload)
     (let* ((symbol-file (find-lisp-object-file-name symbol (symbol-function symbol)))
@@ -738,11 +738,11 @@ SYMBOL is a function that can be overridden."
 
 (defconst xref-mode-local-find-overloadable-regexp
   "(\\(\\(define-overloadable-function\\)\\|\\(define-overload\\)\\) +%s"
-  "Regexp used by ‘xref-find-definitions’ when searching for a
+  "Regexp used by `xref-find-definitions' when searching for a
   mode-local overloadable function definition.")
 
 (defun xref-mode-local-find-override (meta-name)
-  "Function used by ‘xref-find-definitions’ when searching for an
+  "Function used by `xref-find-definitions' when searching for an
   override of a mode-local overloadable function.
 META-NAME is a cons (OVERLOADABLE-SYMBOL . MAJOR-MODE)."
   (let* ((override (car meta-name))
index d32b2c4f001578df4169ea639b1a2f708b329799..9b7882c7acd3d4c66bfbad1524f7d4915cb2c62e 100644 (file)
@@ -156,7 +156,7 @@ Presumably if you call this you will insert something new there."
   "Display the string FMT formatted with ARGS at the end of the minibuffer."
   (if semantic-complete-inline-overlay
       (apply 'message fmt args)
-    (message (concat (buffer-string) (apply #'format-message fmt args)))))
+    (apply 'message (concat "%s" fmt) (buffer-string) args)))
 
 ;;; ------------------------------------------------------------
 ;;; MINIBUFFER: Option Selection harnesses
index 6c6616d7009be274727aad4421de9aef91562790..34fc8ba92cef624557c2577efb486ae92ac36692 100644 (file)
@@ -1212,7 +1212,7 @@ Returns a list of cooked tags.
   The parser returns raw tags with positional data START END at the
 end of the tag data structure (a list for now).  We convert it from
 that to a cooked state that uses an overlay proxy, that is, a vector
-\[START END].
+[START END].
 
   The raw tag is changed with side effects and maybe expanded in
 several derived tags when the variable `semantic-tag-expand-function'
index 6730e8e5bc7017f6dad6f13cd0df5cca61e0e9fb..585c11a05d39984cba8fbdbb56c8c2e1377640b6 100644 (file)
@@ -915,7 +915,7 @@ An NVARS by NRULES matrix of bits indicating which rules can help
 derive the beginning of the data for each nonterminal.  For example,
 if symbol 5 can be derived as the sequence of symbols 8 3 20, and one
 of the rules for deriving symbol 8 is rule 4, then the
-\[5 - NTOKENS, 4] bit in FDERIVES is set."
+[5 - NTOKENS, 4] bit in FDERIVES is set."
   (let (i j k)
     (setq fderives (make-vector nvars nil))
     (setq i 0)
index fb77cb3694759bc5fca3d6a809595cb97a1ae5e7..4c5274198ddde3ee4750af6343d7ba34661a5b0f 100644 (file)
@@ -364,7 +364,7 @@ automaton has only one entry point."
 
 - START specify the start symbol (nonterminal) used by the parser as
   its goal.  It defaults to the start symbol defined in the grammar
-  \(see also `wisent-compile-grammar')."
+  (see also `wisent-compile-grammar')."
   (run-hooks 'wisent-pre-parse-hook)
   (let* ((actions (aref automaton 0))
          (gotos   (aref automaton 1))
index 7c5819d2126b0276e4e9236b642ffa7310384edd..724fc2bb7b0c19ccd9cb428e2ab4967019284243 100644 (file)
@@ -430,7 +430,7 @@ in the next one.")
                                       (file-name-nondirectory file-name)))
   (comint-send-string (scheme-proc) (concat "(load \""
                                            file-name
-                                           "\"\)\n")))
+                                           "\")\n")))
 
 (defun scheme-compile-file (file-name)
   "Compile a Scheme file FILE-NAME in the inferior Scheme process."
@@ -444,7 +444,7 @@ in the next one.")
                                       (file-name-nondirectory file-name)))
   (comint-send-string (scheme-proc) (concat "(compile-file \""
                                            file-name
-                                           "\"\)\n")))
+                                           "\")\n")))
 
 \f
 (defvar scheme-buffer nil "The current scheme process buffer.
index ead2757e6e8e92a1a5da082185fb2eedd927203e..e70fe88baf7dcd93a7f63fea66f8571d9a9303ff 100644 (file)
@@ -1581,7 +1581,7 @@ Go to the history element by the absolute history position HIST-POS."
 (defun comint-within-quotes (beg end)
   "Return t if the number of quotes between BEG and END is odd.
 Quotes are single and double."
-  (let ((countsq (comint-how-many-region "\\(^\\|[^\\\\]\\)\'" beg end))
+  (let ((countsq (comint-how-many-region "\\(^\\|[^\\\\]\\)'" beg end))
        (countdq (comint-how-many-region "\\(^\\|[^\\\\]\\)\"" beg end)))
     (or (= (mod countsq 2) 1) (= (mod countdq 2) 1))))
 
index ea5ab7a4773ba7d89197c60ced6ceab55f211ed2..e212e32807dfc810243495849d568dfdf920e003 100644 (file)
@@ -1214,13 +1214,11 @@ Return t if THEME was successfully loaded, nil otherwise."
     (put theme 'theme-documentation nil))
   (let ((fn (locate-file (concat (symbol-name theme) "-theme.el")
                         (custom-theme--load-path)
-                        '("" "c")))
-       hash)
+                        '("" "c"))))
     (unless fn
       (error "Unable to find theme file for `%s'" theme))
     (with-temp-buffer
       (insert-file-contents fn)
-      (setq hash (secure-hash 'sha256 (current-buffer)))
       ;; Check file safety with `custom-safe-themes', prompting the
       ;; user if necessary.
       (when (or no-confirm
@@ -1228,8 +1226,9 @@ Return t if THEME was successfully loaded, nil otherwise."
                (and (memq 'default custom-safe-themes)
                     (equal (file-name-directory fn)
                            (expand-file-name "themes/" data-directory)))
-               (member hash custom-safe-themes)
-               (custom-theme-load-confirm hash))
+                (let ((hash (secure-hash 'sha256 (current-buffer))))
+                  (or (member hash custom-safe-themes)
+                      (custom-theme-load-confirm hash))))
        (let ((custom--inhibit-theme-enable t)
               (buffer-file-name fn))    ;For load-history.
          (eval-buffer))
index 42d7fd369ed7716aa8e9ffe61e27e2bddec8db59..b32d115d499177b19bb32af5703df8592d6e36ad 100644 (file)
 
 Example: Set this to \"\\\\$\" for programming languages
 in which variable names may appear with or without a leading `$'.
-\(For example, in Makefiles.\)
+\(For example, in Makefiles.)
 
 Set this to nil if no characters should be skipped."
   :type '(choice regexp
index 62330fca71b154acbd5b7f295c1907791589598b..4ee830023fc1e436f982516df491495ba593c851 100644 (file)
 ;;  "Switch to non-existing buffers only upon confirmation."
 ;;  (interactive "BSwitch to buffer: ")
 ;;  (if (or (get-buffer (ad-get-arg 0))
-;;          (y-or-n-p (format "‘%s’ does not exist, create? " (ad-get-arg 0))))
+;;          (y-or-n-p (format-message "`%s' does not exist, create? "
+;;                                    (ad-get-arg 0))))
 ;;      ad-do-it))
 ;;
 ;;(defadvice find-file (before existing-files-only activate)
@@ -3106,7 +3107,7 @@ deactivation, which might run hooks and get into other trouble."
   "Define a piece of advice for FUNCTION (a symbol).
 The syntax of `defadvice' is as follows:
 
-  \(defadvice FUNCTION (CLASS NAME [POSITION] [ARGLIST] FLAG...)
+  (defadvice FUNCTION (CLASS NAME [POSITION] [ARGLIST] FLAG...)
     [DOCSTRING] [INTERACTIVE-FORM]
     BODY...)
 
index e3d83eb127f260ea78dccb22a600d532742ced24..99a329b021e020b2628d8dd6b80a4b97d5c18b99 100644 (file)
@@ -615,7 +615,7 @@ is more efficient."
 of all elements of TREE.
 
 If REVERSE is non-nil, the stack is sorted in reverse order.
-\(See also `avl-tree-stack-pop'\).
+\(See also `avl-tree-stack-pop').
 
 Note that any modification to TREE *immediately* invalidates all
 avl-tree-stacks created before the modification (in particular,
index 279ffa37b7ea59ac38287631506d2307658695ab..8699af60ea841a1ccbcad2a6277f23377d8a046d 100644 (file)
@@ -397,7 +397,7 @@ invoked interactively are excluded from this list."
   "Alist of functions and their call tree.
 Each element looks like
 
-  \(FUNCTION CALLERS CALLS\)
+  (FUNCTION CALLERS CALLS)
 
 where CALLERS is a list of functions that call FUNCTION, and CALLS
 is a list of functions for which calls were generated while compiling
@@ -1814,7 +1814,7 @@ The value is non-nil if there were no errors, nil if errors."
     ;; compile this file.
     (if (with-current-buffer input-buffer no-byte-compile)
        (progn
-         ;; (message "%s not compiled because of ‘no-byte-compile: %s’"
+         ;; (message "%s not compiled because of `no-byte-compile: %s'"
          ;;       (byte-compile-abbreviate-file filename)
          ;;       (with-current-buffer input-buffer no-byte-compile))
          (when (file-exists-p target-file)
@@ -4196,7 +4196,7 @@ binding slots have been popped."
                       ;;              (consp (get condition
                       ;;                          'error-conditions)))))
                       ;; (byte-compile-warn
-                      ;;   "‘%s’ is not a known condition name
+                      ;;   "`%s' is not a known condition name
                       ;;   (in condition-case)"
                       ;;   condition))
                       )
@@ -4235,7 +4235,7 @@ binding slots have been popped."
           ;; for the argument to `signal', not to `condition-case'.
           ;;(unless (consp (get c 'error-conditions))
           ;;  (byte-compile-warn
-          ;;   "‘%s’ is not a known condition name (in condition-case)"
+          ;;   "`%s' is not a known condition name (in condition-case)"
           ;;   c))
           )
         (byte-compile-push-constant condition))
@@ -4529,11 +4529,11 @@ whose definitions have been compiled in this Emacs session, as well as
 all functions called by those functions.
 
 The call graph does not include macros, inline functions, or
-primitives that the byte-code interpreter knows about directly \(eq,
-cons, etc.\).
+primitives that the byte-code interpreter knows about directly
+\(`eq', `cons', etc.).
 
 The call tree also lists those functions which are not known to be called
-\(that is, to which no calls have been compiled\), and which cannot be
+\(that is, to which no calls have been compiled), and which cannot be
 invoked interactively."
   (interactive)
   (message "Generating call tree...")
index 205ae6d711e7adba58981f082072f5d13cae0b98..0f75f0a1664cf5d3cf463d4298fb4df3eeaa6ce6 100644 (file)
@@ -679,7 +679,7 @@ and updates the data stored in ENV."
 
     ;; ((and `(quote ,v . ,_) (guard (assq v env)))
     ;;  (byte-compile-log-warning
-    ;;   (format-message "Possible confusion variable/symbol for ‘%S’" v)))
+    ;;   (format-message "Possible confusion variable/symbol for `%S'" v)))
 
     (`(quote . ,_) nil)                 ; quote form
     (`(function . ,_) nil)              ; same as quote
index 3b69e9592827a3262cd216a36b8270ffc5020c1b..536e4186c412aeac0834b75f94ca8ec51d8e7690 100644 (file)
@@ -162,7 +162,7 @@ def\\(?:un\\|subst\\|foo\\|method\\|class\\|\
 ine-\\(?:derived\\|generic\\|\\(?:global\\(?:ized\\)?-\\)?minor\\)-mode\\|\
 \\(?:ine-obsolete-function-\\)?alias[ \t]+'\\|\
 ine-overloadable-function\\)\\)\
-\[ \t]*%s\\([ \t;]+\\|$\\)")
+[ \t]*%s\\([ \t;]+\\|$\\)")
                            (regexp-opt (mapcar 'cadr fnlist) t)))
           (while (re-search-forward re nil t)
             (skip-chars-forward " \t\n")
index 4a9e16ae88ec364ec87ce66f5f6d39e7562e13d0..bf1a21acaf158d6ec6becca56e586d7a9ee43e71 100644 (file)
@@ -1663,7 +1663,7 @@ function,command,variable,option or symbol." ms1))))))
             ;;           (concat "\\<" (regexp-quote (car fp)) "\\>")
             ;;           newname))
             ;;         (checkdoc-create-error
-            ;;          "Flag variable names should normally end in ‘-flag’" s
+            ;;          "Flag variable names should normally end in `-flag'" s
             ;;          (marker-position e)))))
             ;; Done with variables
             ))
index c012a30a41f385b38e7f8bfc9e64dd214294b2dc..dd01ebe9dd88431e25c4a968ce15ee8c1aa52d96 100644 (file)
@@ -1069,8 +1069,11 @@ The value returned is a list of elements of the form
   (or
    (and (assq type cl--generic-typeof-types)
         (progn
-          (if (memq type '(vector array sequence))
-              (message "`%S' also matches CL structs and EIEIO classes" type))
+          ;; FIXME: While this wrinkle in the semantics can be occasionally
+          ;; problematic, this warning is more often annoying than helpful.
+          ;;(if (memq type '(vector array sequence))
+          ;;    (message "`%S' also matches CL structs and EIEIO classes"
+          ;;             type))
           (list cl--generic-typeof-generalizer)))
    (cl-call-next-method)))
 
index eab22b67cd70c7ac5b18f18a1492ca11bcfb350b..56f95111ab88e9d8e1ec807b4ec8aa14fcd8ee0a 100644 (file)
@@ -136,7 +136,7 @@ BODY contains code to execute each time the mode is enabled or disabled.
 :variable PLACE        The location to use instead of the variable MODE to store
                the state of the mode.  This can be simply a different
                named variable, or a generalized variable.
-               PLACE can also be of the form \(GET . SET), where GET is
+               PLACE can also be of the form (GET . SET), where GET is
                an expression that returns the current state, and SET is
                a function that takes one argument, the new state, and
                sets it.  If you specify a :variable, this function does
index 0162a9a230ae24d2ef5f94799325a48f99b0d784..a3e3b567cc4644967f34335b0f2016e983ee0596 100644 (file)
@@ -3162,12 +3162,12 @@ Do this when stopped before the form or it will be too late.
 One side effect of using this command is that the next time the
 function or macro is called, Edebug will be called there as well."
   (interactive)
-  (if (not (looking-at "\("))
+  (if (not (looking-at "("))
       (error "You must be before a list form")
     (let ((func
           (save-excursion
             (down-list 1)
-            (if (looking-at "\(")
+            (if (looking-at "(")
                 (edebug--form-data-name
                  (edebug-get-form-data-entry (point)))
               (read (current-buffer))))))
@@ -3216,57 +3216,45 @@ This is useful for exiting even if `unwind-protect' code may be executed."
   (setq edebug-execution-mode 'Go-nonstop)
   (top-level))
 
-
 ;;(defun edebug-exit-out ()
 ;;  "Go until the current function exits."
 ;;  (interactive)
 ;;  (edebug-set-mode 'exiting "Exit..."))
 
-
-;;; The following initial mode setting definitions are not used yet.
-
-'(defconst edebug-initial-mode-alist
-  '((edebug-Continue-fast . Continue-fast)
-    (edebug-Trace-fast . Trace-fast)
-    (edebug-continue . continue)
-    (edebug-trace . trace)
-    (edebug-go . go)
-    (edebug-step-through . step)
-    (edebug-Go-nonstop . Go-nonstop)
-    )
+(defconst edebug-initial-mode-alist
+  '((edebug-step-mode . step)
+    (edebug-next-mode . next)
+    (edebug-trace-mode . trace)
+    (edebug-Trace-fast-mode . Trace-fast)
+    (edebug-go-mode . go)
+    (edebug-continue-mode . continue)
+    (edebug-Continue-fast-mode . Continue-fast)
+    (edebug-Go-nonstop-mode . Go-nonstop))
   "Association list between commands and the modes they set.")
 
+(defvar edebug-mode-map)               ; will be defined fully later.
 
-'(defun edebug-set-initial-mode ()
-  "Ask for the initial mode of the enclosing function.
+(defun edebug-set-initial-mode ()
+  "Set the initial execution mode of Edebug.
 The mode is requested via the key that would be used to set the mode in
 edebug-mode."
   (interactive)
-  (let* ((this-function (edebug-which-function))
-        (keymap (if (eq edebug-mode-map (current-local-map))
-                    edebug-mode-map))
-        (old-mode (or (get this-function 'edebug-initial-mode)
-                      edebug-initial-mode))
+  (let* ((old-mode edebug-initial-mode)
         (key (read-key-sequence
               (format
-               "Change initial edebug mode for %s from %s (%s) to (enter key): "
-                      this-function
-                      old-mode
-                      (where-is-internal
-                       (car (rassq old-mode edebug-initial-mode-alist))
-                       keymap 'firstonly
-                       ))))
-        (mode (cdr (assq (key-binding key) edebug-initial-mode-alist)))
-        )
-    (if (and mode
-            (or (get this-function 'edebug-initial-mode)
-                (not (eq mode edebug-initial-mode))))
+               "Change initial edebug mode from %s (%c) to (enter key): "
+               old-mode
+               (aref (where-is-internal
+                      (car (rassq old-mode edebug-initial-mode-alist))
+                      edebug-mode-map 'firstonly)
+                     0))))
+        (mode (cdr (assq (lookup-key edebug-mode-map key)
+                         edebug-initial-mode-alist))))
+    (if mode
        (progn
-         (put this-function 'edebug-initial-mode mode)
-         (message "Initial mode for %s is now: %s"
-                  this-function mode))
-      (error "Key must map to one of the mode changing commands")
-      )))
+         (setq edebug-initial-mode mode)
+         (message "Edebug's initial mode is now: %s" mode))
+      (error "Key must map to one of the mode changing commands"))))
 
 ;;; Evaluation of expressions
 
@@ -3425,7 +3413,9 @@ be installed in `emacs-lisp-mode-map'.")
   (define-key emacs-lisp-mode-map "\C-x\C-a\C-s" 'edebug-step-mode)
   (define-key emacs-lisp-mode-map "\C-x\C-a\C-n" 'edebug-next-mode)
   (define-key emacs-lisp-mode-map "\C-x\C-a\C-c" 'edebug-go-mode)
-  (define-key emacs-lisp-mode-map "\C-x\C-a\C-l" 'edebug-where))
+  (define-key emacs-lisp-mode-map "\C-x\C-a\C-l" 'edebug-where)
+  ;; The following isn't a GUD binding.
+  (define-key emacs-lisp-mode-map "\C-x\C-a\C-m" 'edebug-set-initial-mode))
 
 (defvar edebug-mode-map
   (let ((map (copy-keymap emacs-lisp-mode-map)))
@@ -3790,10 +3780,10 @@ Otherwise call `debug' normally."
       (if t (progn
 
       ;; Delete interspersed edebug internals.
-      (while (re-search-forward "^  \(?edebug" nil t)
+      (while (re-search-forward "^  (?edebug" nil t)
        (beginning-of-line)
        (cond
-        ((looking-at "^  \(edebug-after")
+        ((looking-at "^  (edebug-after")
          ;; Previous lines may contain code, so just delete this line.
          (setq last-ok-point (point))
          (forward-line 1)
index a2f5f8af8eac9c5e8b778eb8b5c939ee2037fb46..e3f7b11bb64c64c08736c3ad972be68f2b9a44cd 100644 (file)
@@ -135,10 +135,10 @@ Currently under control of this var:
       (or (cl--find-class class) class)
     class))
 
-(defun class-p (class)
-  "Return non-nil if CLASS is a valid class vector.
-CLASS is a symbol."                     ;FIXME: Is it a vector or a symbol?
-  (and (symbolp class) (eieio--class-p (cl--find-class class))))
+(defun class-p (x)
+  "Return non-nil if X is a valid class vector.
+X can also be is a symbol."
+  (eieio--class-p (if (symbolp x) (cl--find-class x) x)))
 
 (defun eieio--class-print-name (class)
   "Return a printed representation of CLASS."
@@ -769,7 +769,8 @@ Fills in OBJ's SLOT with its default value."
   (cl-check-type obj (or eieio-object class))
   (cl-check-type slot symbol)
   (let* ((cl (cond ((symbolp obj) (cl--find-class obj))
-                   (t (eieio--object-class obj))))
+                   ((eieio-object-p obj) (eieio--object-class obj))
+                   (t obj)))
         (c (eieio--slot-name-index cl slot)))
     (if (not c)
        ;; It might be missing because it is a :class allocated slot.
@@ -850,7 +851,7 @@ Fills in the default value in CLASS' in SLOT with VALUE."
       ;; gnus/registry.el, so it might be used elsewhere as well, so let's
       ;; keep it for now.
       ;; FIXME: Generate a compile-time warning for it!
-      ;; (error "Can't ‘oset-default’ an instance-allocated slot: %S of %S"
+      ;; (error "Can't `oset-default' an instance-allocated slot: %S of %S"
       ;;        slot class)
       (eieio--validate-slot-value class c value slot)
       ;; Set this into the storage for defaults.
index cae3fa2d460321af73bf5dd2bb4fcf82b7a84f6b..f899f40fb80d804728f4379e476602715f5e326c 100644 (file)
@@ -137,7 +137,7 @@ the name of the test and the result of NAME-FORM."
 
 This effectively executes
 
-  \(apply (car COMMAND) (cdr COMMAND)\)
+  (apply (car COMMAND) (cdr COMMAND))
 
 and returns the same value, but additionally runs hooks like
 `pre-command-hook' and `post-command-hook', and sets variables
@@ -189,7 +189,7 @@ test for `called-interactively' in the command will fail."
   "Return a copy of S with all matches of REGEXPS removed.
 
 Elements of REGEXPS may also be two-element lists \(REGEXP
-SUBEXP\), where SUBEXP is the number of a subexpression in
+SUBEXP), where SUBEXP is the number of a subexpression in
 REGEXP.  In that case, only that subexpression will be removed
 rather than the entire match."
   ;; Use a temporary buffer since replace-match copies strings, which
@@ -215,7 +215,7 @@ property list, or no properties if there is no plist before it.
 As a simple example,
 
 \(ert-propertized-string \"foo \" \\='(face italic) \"bar\" \" baz\" nil \
-\" quux\"\)
+\" quux\")
 
 would return the string \"foo bar baz quux\" where the substring
 \"bar baz\" has a `face' property with the value `italic'.
index d47e5d94b9dc199c85a77e6a3368748d1c1b80be..2eba0216faf778e37ea4ab4bc2f9ae98829237f3 100644 (file)
@@ -187,7 +187,7 @@ using :expected-result.  See `ert-test-result-type-p' for a
 description of valid values for RESULT-TYPE.
 
 \(fn NAME () [DOCSTRING] [:expected-result RESULT-TYPE] \
-\[:tags '(TAG...)] BODY...)"
+[:tags '(TAG...)] BODY...)"
   (declare (debug (&define :name test
                            name sexp [&optional stringp]
                           [&rest keywordp sexp] def-body))
@@ -887,10 +887,10 @@ Valid result types:
 nil -- Never matches.
 t -- Always matches.
 :failed, :passed, :skipped -- Matches corresponding results.
-\(and TYPES...\) -- Matches if all TYPES match.
-\(or TYPES...\) -- Matches if some TYPES match.
-\(not TYPE\) -- Matches if TYPE does not match.
-\(satisfies PREDICATE\) -- Matches if PREDICATE returns true when called with
+\(and TYPES...) -- Matches if all TYPES match.
+\(or TYPES...) -- Matches if some TYPES match.
+\(not TYPE) -- Matches if TYPE does not match.
+\(satisfies PREDICATE) -- Matches if PREDICATE returns true when called with
                            RESULT."
   ;; It would be easy to add `member' and `eql' types etc., but I
   ;; haven't bothered yet.
@@ -946,7 +946,7 @@ a test   -- (i.e., an object of the ert-test data-type) Selects that test.
 a symbol -- Selects the test that the symbol names, errors if none.
 \(member TESTS...) -- Selects the elements of TESTS, a list of tests
     or symbols naming tests.
-\(eql TEST\) -- Selects TEST, a test or a symbol naming a test.
+\(eql TEST) -- Selects TEST, a test or a symbol naming a test.
 \(and SELECTORS...) -- Selects the tests that match all SELECTORS.
 \(or SELECTORS...)  -- Selects the tests that match any of the SELECTORS.
 \(not SELECTOR)     -- Selects all tests that do not match SELECTOR.
index 026a4a749a97ce69577939ab5583fa00d4b99fb2..69d545560d452135fa13c372783b462374f8dcdd 100644 (file)
@@ -62,7 +62,7 @@ ine\\(?:-global\\)?-minor-mode\\|ine-compilation-mode\\|un-cvs-mode\\|\
 foo\\|\\(?:[^icfgv]\\|g[^r]\\)\\(\\w\\|\\s_\\)+\\*?\\)\\|easy-mmode-define-[a-z-]+\\|easy-menu-define\\|\
 menu-bar-make-toggle\\)"
    find-function-space-re
-   "\\('\\|\(quote \\)?%s\\(\\s-\\|$\\|\(\\|\)\\)")
+   "\\('\\|(quote \\)?%s\\(\\s-\\|$\\|[()]\\)")
   "The regexp used by `find-function' to search for a function definition.
 Note it must contain a `%s' at the place where `format'
 should insert the function name.  The default value avoids `defconst',
index bbe6b36ab9ab715888b401bf93a38acb47743f79..94fe6c3d4411a491eadb5505cbb037cd4b3a43c3 100644 (file)
@@ -233,7 +233,7 @@ turned into calls of the form (SETTER ARGS... VAL).
 
 If FIX-RETURN is non-nil, then SETTER is not assumed to return VAL and
 instead the assignment is turned into something equivalent to
-  \(let ((temp VAL))
+  (let ((temp VAL))
     (SETTER ARGS... temp)
     temp)
 so as to preserve the semantics of `setf'."
index 8aa34c7bef9a245a668bfbb2a2189b0594662c7e..fec9467bbb7600ec5ea27c1e0a665febc88911b9 100644 (file)
@@ -28,6 +28,8 @@
 
 ;;; Code:
 
+(eval-when-compile (require 'cl-lib))
+
 (defvar font-lock-comment-face)
 (defvar font-lock-doc-face)
 (defvar font-lock-keywords-case-fold-search)
@@ -87,6 +89,9 @@
     table)
   "Syntax table used in `lisp-mode'.")
 
+(eval-and-compile
+  (defconst lisp-mode-symbol-regexp "\\(?:\\sw\\|\\s_\\|\\\\.\\)+"))
+
 (defvar lisp-imenu-generic-expression
   (list
    (list nil
                                 ;; CLOS and EIEIO
                                "defgeneric" "defmethod")
                               t))
-                          "\\s-+\\(\\(\\sw\\|\\s_\\)+\\)"))
+                          "\\s-+\\(" lisp-mode-symbol-regexp "\\)"))
         2)
    (list (purecopy "Variables")
         (purecopy (concat "^\\s-*("
                                 "defconstant"
                                "defparameter" "define-symbol-macro")
                               t))
-                          "\\s-+\\(\\(\\sw\\|\\s_\\)+\\)"))
+                          "\\s-+\\(" lisp-mode-symbol-regexp "\\)"))
         2)
    ;; For `defvar', we ignore (defvar FOO) constructs.
    (list (purecopy "Variables")
-        (purecopy (concat "^\\s-*(defvar\\s-+\\(\\(\\sw\\|\\s_\\)+\\)"
+        (purecopy (concat "^\\s-*(defvar\\s-+\\(" lisp-mode-symbol-regexp "\\)"
                           "[[:space:]\n]+[^)]"))
         1)
    (list (purecopy "Types")
                                 ;; CLOS and EIEIO
                                 "defclass")
                               t))
-                          "\\s-+'?\\(\\(\\sw\\|\\s_\\)+\\)"))
+                          "\\s-+'?\\(" lisp-mode-symbol-regexp "\\)"))
         2))
 
   "Imenu generic expression for Lisp mode.  See `imenu-generic-expression'.")
 (defun lisp--el-match-keyword (limit)
   ;; FIXME: Move to elisp-mode.el.
   (catch 'found
-    (while (re-search-forward "(\\(\\(?:\\sw\\|\\s_\\)+\\)\\_>" limit t)
+    (while (re-search-forward
+            (eval-when-compile
+              (concat "(\\(" lisp-mode-symbol-regexp "\\)\\_>"))
+            limit t)
       (let ((sym (intern-soft (match-string 1))))
        (when (or (special-form-p sym)
                  (and (macrop sym)
                              (match-beginning 0)))))
          (throw 'found t))))))
 
+(defmacro let-when-compile (bindings &rest body)
+  "Like `let', but allow for compile time optimization.
+Use BINDINGS as in regular `let', but in BODY each usage should
+be wrapped in `eval-when-compile'.
+This will generate compile-time constants from BINDINGS."
+  (declare (indent 1) (debug let))
+  (cl-progv (mapcar #'car bindings)
+      (mapcar (lambda (x) (eval (cadr x))) bindings)
+    (macroexpand-all
+     (macroexp-progn
+      body)
+     macroexpand-all-environment)))
+
 (let-when-compile
     ((lisp-fdefs '("defmacro" "defun"))
      (lisp-vdefs '("defvar"))
      (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-fdefs '("defmacro" "defsubst" "defun" "defmethod" "defgeneric"))
      (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-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"
+     (cl-kw '("block" "break" "case" "ccase" "compiler-let" "ctypecase"
+              "declaim" "destructuring-bind" "do" "do*"
+              "ecase" "etypecase" "eval-when" "flet" "flet*"
+              "go" "handler-case" "handler-bind" "in-package" ;; "inline"
+              "labels" "letf" "locally" "loop"
+              "macrolet" "multiple-value-bind" "multiple-value-prog1"
+              "proclaim" "prog" "prog*" "progv"
+              "restart-case" "restart-bind" "return" "return-from"
+              "symbol-macrolet" "tagbody" "the" "typecase"
+              "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"))
+              "with-simple-restart" "with-slots" "with-standard-io-syntax"))
      (cl-errs '("abort" "cerror")))
   (let ((vdefs (eval-when-compile
                  (append lisp-vdefs el-vdefs cl-vdefs)))
                                           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)))
+        ;; Common Lisp keywords (Elisp keywords are handled dynamically).
         (cl-kws-re (eval-when-compile
-                     (regexp-opt (append lisp-kw cl-kw eieio-kw cl-lib-kw)
-                                 t)))
+                     (regexp-opt (append lisp-kw cl-kw) t)))
         ;; Elisp and Common Lisp "errors".
         (el-errs-re (eval-when-compile
                       (regexp-opt (append (mapcar (lambda (s) (concat "cl-" s))
                   ;; Any whitespace and defined object.
                   "[ \t']*"
                   "\\(([ \t']*\\)?" ;; An opening paren.
-                  "\\(\\(setf\\)[ \t]+\\(?:\\sw\\|\\s_\\)+\\|\\(?:\\sw\\|\\s_\\)+\\)?")
+                  "\\(\\(setf\\)[ \t]+" lisp-mode-symbol-regexp
+                  "\\|" lisp-mode-symbol-regexp "\\)?")
           (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)
                      ;; 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)))
+                               (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.
                   ;; Any whitespace and defined object.
                   "[ \t']*"
                   "\\(([ \t']*\\)?" ;; An opening paren.
-                  "\\(\\(setf\\)[ \t]+\\(?:\\sw\\|\\s_\\)+\\|\\(?:\\sw\\|\\s_\\)+\\)?")
+                  "\\(\\(setf\\)[ \t]+" lisp-mode-symbol-regexp
+                  "\\|" lisp-mode-symbol-regexp "\\)?")
           (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)
          (lisp--el-match-keyword . 1)
          ;; Exit/Feature symbols as constants.
          (,(concat "(\\(catch\\|throw\\|featurep\\|provide\\|require\\)\\_>"
-                   "[ \t']*\\(\\(?:\\sw\\|\\s_\\)+\\)?")
+                   "[ \t']*\\(" lisp-mode-symbol-regexp "\\)?")
            (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_\\)+\\)\\]"
+         (,(concat "\\\\\\\\\\[\\(" lisp-mode-symbol-regexp "\\)\\]")
           (1 font-lock-constant-face prepend))
          ;; Words inside ‘’ and '' and `' tend to be symbol names.
-         ("['`‘]\\(\\(?:\\sw\\|\\s_\\)\\(?:\\sw\\|\\s_\\)+\\)['’]"
+         (,(concat "['`‘]\\(\\(?:\\sw\\|\\s_\\|\\\\.\\)"
+                   lisp-mode-symbol-regexp "\\)['’]")
           (1 font-lock-constant-face prepend))
          ;; Constant values.
-         ("\\_<:\\(?:\\sw\\|\\s_\\)+\\_>" 0 font-lock-builtin-face)
+         (,(concat "\\_<:" lisp-mode-symbol-regexp "\\_>")
+          (0 font-lock-builtin-face))
          ;; ELisp and CLisp `&' keywords as types.
-         ("\\_<\\&\\(?:\\sw\\|\\s_\\)+\\_>" . font-lock-type-face)
+         (,(concat "\\_<\\&" lisp-mode-symbol-regexp "\\_>")
+          . font-lock-type-face)
          ;; ELisp regexp grouping constructs
          (,(lambda (bound)
              (catch 'found
          (,(concat "(" cl-kws-re "\\_>") . 1)
          ;; Exit/Feature symbols as constants.
          (,(concat "(\\(catch\\|throw\\|provide\\|require\\)\\_>"
-                   "[ \t']*\\(\\(?:\\sw\\|\\s_\\)+\\)?")
+                   "[ \t']*\\(" lisp-mode-symbol-regexp "\\)?")
            (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 ‘’ and '' and `' tend to be symbol names.
-         ("['`‘]\\(\\(?:\\sw\\|\\s_\\)\\(?:\\sw\\|\\s_\\)+\\)['’]"
+         (,(concat "['`‘]\\(\\(?:\\sw\\|\\s_\\|\\\\.\\)"
+                   lisp-mode-symbol-regexp "\\)['’]")
           (1 font-lock-constant-face prepend))
          ;; Constant values.
-         ("\\_<:\\(?:\\sw\\|\\s_\\)+\\_>" 0 font-lock-builtin-face)
+         (,(concat "\\_<:" lisp-mode-symbol-regexp "\\_>")
+          (0 font-lock-builtin-face))
          ;; ELisp and CLisp `&' keywords as types.
-         ("\\_<\\&\\(?:\\sw\\|\\s_\\)+\\_>" . font-lock-type-face)
+         (,(concat "\\_<\\&" lisp-mode-symbol-regexp "\\_>")
+          . 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.
   (let* ((firstsym (and listbeg
                         (save-excursion
                           (goto-char listbeg)
-                          (and (looking-at "([ \t\n]*\\(\\(\\sw\\|\\s_\\)+\\)")
+                          (and (looking-at
+                                (eval-when-compile
+                                  (concat "([ \t\n]*\\("
+                                          lisp-mode-symbol-regexp "\\)")))
                                (match-string 1)))))
          (docelt (and firstsym
                       (function-get (intern-soft firstsym)
@@ -898,7 +904,7 @@ property `lisp-indent-function' (or the deprecated `lisp-indent-hook'),
 it specifies how to indent.  The property value can be:
 
 * `defun', meaning indent `defun'-style
-  \(this is also the case if there is no property and the function
+  (this is also the case if there is no property and the function
   has a name that begins with \"def\", and three or more arguments);
 
 * an integer N, meaning indent the first N arguments specially
index 7b7b48c66dec2a56f4727dca05e8de79a61b7746..ca977db4b1ded72adc6b7f723c1e353f491cdb18 100644 (file)
@@ -364,8 +364,7 @@ is called as a function to find the defun's beginning."
          (arg-+ve (> arg 0)))
       (save-restriction
        (widen)
-       (let ((ppss (let (syntax-begin-function
-                         font-lock-beginning-of-syntax-function)
+       (let ((ppss (let (syntax-begin-function)
                      (syntax-ppss)))
              ;; position of least enclosing paren, or nil.
              encl-pos)
index 43fd4ef57a60f16fb6099f5081d9cbbb003c05dc..b8fb540d6cb2b3038fcbc52edac197b5a104a09c 100644 (file)
@@ -44,7 +44,7 @@ Takes args PROMPTER ACTOR LIST, and optional args HELP and ACTION-ALIST.
 LIST is a list of objects, or a function of no arguments to return the next
 object or nil.
 
-If PROMPTER is a string, the prompt is \(format PROMPTER OBJECT\).  If not
+If PROMPTER is a string, the prompt is \(format PROMPTER OBJECT).  If not
 a string, PROMPTER is a function of one arg (an object from LIST), which
 returns a string to be used as the prompt for that object.  If the return
 value is not a string, it may be nil to ignore the object or non-nil to act
@@ -56,7 +56,7 @@ which gets called with each object that the user answers `yes' for.
 If HELP is given, it is a list (OBJECT OBJECTS ACTION),
 where OBJECT is a string giving the singular noun for an elt of LIST;
 OBJECTS is the plural noun for elts of LIST, and ACTION is a transitive
-verb describing ACTOR.  The default is \(\"object\" \"objects\" \"act on\"\).
+verb describing ACTOR.  The default is \(\"object\" \"objects\" \"act on\").
 
 At the prompts, the user may enter y, Y, or SPC to act on that object;
 n, N, or DEL to skip that object; ! to act on all following objects;
index b0d2ff96629dc1e2a4de85661f49771a09e8e63f..eb66e8f25a3dcbb913cff46c88463ac43e4d4c8f 100644 (file)
@@ -1852,12 +1852,12 @@ add a call to it along with some explanatory comments."
                     (save-restriction
                       (widen)
                       (goto-char (point-min))
-                      (search-forward "(package-initialize)" nil 'noerror))))
+                      (re-search-forward "(package-initialize\\_>" nil 'noerror))))
               ;; Don't visit the file if we don't have to.
               (with-temp-buffer
                 (insert-file-contents user-init-file)
                 (goto-char (point-min))
-                (search-forward "(package-initialize)" nil 'noerror)))))
+                (re-search-forward "(package-initialize\\_>" nil 'noerror)))))
       (unless contains-init
         (with-current-buffer (or buffer
                                  (let ((delay-mode-hooks t))
index 9888e92021900cd7af8ca7051ef6f11b000a2263..e315733e22266d6dbfb7d8f57f1fbf12f16191f3 100644 (file)
@@ -143,7 +143,7 @@ If LAX non-nil, don't output parentheses if it doesn't require them.
 Merges keywords to avoid backtracking in Emacs's regexp matcher."
   ;; The basic idea is to find the shortest common prefix or suffix, remove it
   ;; and recurse.  If there is no prefix, we divide the list into two so that
-  ;; \(at least) one half will have at least a one-character common prefix.
+  ;; (at least) one half will have at least a one-character common prefix.
 
   ;; Also we delay the addition of grouping parenthesis as long as possible
   ;; until we're sure we need them, and try to remove one-character sequences
index a21ac7a2835d902f440900207d84c5d8f284e407..a5ff972269846f43fb2713cbdc88cdda6f9e0f53 100644 (file)
@@ -768,8 +768,8 @@ of all atomic regexps."
      ((= l 3) (string-match "\\`\\(?:\\\\[cCsS_]\\|\\[[^^]\\]\\)" r))
      ((null lax)
       (cond
-       ((string-match "\\`\\[^?\]?\\(?:\\[:[a-z]+:]\\|[^\]]\\)*\\]\\'" r))
-       ((string-match "\\`\\\\(\\(?:[^\\]\\|\\\\[^\)]\\)*\\\\)\\'" r)))))))
+       ((string-match "\\`\\[^?\]?\\(?:\\[:[a-z]+:]\\|[^]]\\)*\\]\\'" r))
+       ((string-match "\\`\\\\(\\(?:[^\\]\\|\\\\[^)]\\)*\\\\)\\'" r)))))))
 
 
 (defun rx-syntax (form)
index 8dc91471312087671dcb980fdd948e084abf5ddb..e0f17c0335d1bfef97423c0803f0bff2085fbb0b 100644 (file)
@@ -270,6 +270,19 @@ If so, return the non-nil value returned by PRED."
           (throw 'seq--break result))))
     nil))
 
+(cl-defgeneric seq-find (pred seq &optional default)
+  "Return the first element for which (PRED element) is non-nil in SEQ.
+If no element is found, return DEFAULT.
+
+Note that `seq-find' has an ambiguity if the found element is
+identical to DEFAULT, as it cannot be known if an element was
+found or not."
+  (catch 'seq--break
+    (seq-doseq (elt seq)
+      (when (funcall pred elt)
+        (throw 'seq--break elt)))
+    default))
+
 (cl-defgeneric seq-count (pred seq)
   "Return the number of elements for which (PRED element) is non-nil in SEQ."
   (let ((count 0))
@@ -417,13 +430,7 @@ If no element is found, return nil."
     (nreverse result)))
 
 (cl-defmethod seq-drop-while (pred (list list))
-  "Optimized implementation of `seq-drop-while' for lists"
-  (while (and list (funcall pred (car list)))
-    (setq list (cdr list)))
-  list)
-
-(cl-defmethod seq-drop-while (pred (list list))
-  "Optimized implementation of `seq-drop-while' for lists"
+  "Optimized implementation of `seq-drop-while' for lists."
   (while (and list (funcall pred (car list)))
     (setq list (cdr list)))
   list)
index c7a95e4e5f3cf0cd17882831f9569632730dece1..17e3be7d3ff0cb0a8b6aceab763b59effc361197 100644 (file)
@@ -68,9 +68,9 @@ This is slower, but filters out some innocuous shadowing."
   "Return a list of Emacs Lisp files that create shadows.
 This function does the work for `list-load-path-shadows'.
 
-We traverse PATH looking for shadows, and return a \(possibly empty\)
+We traverse PATH looking for shadows, and return a \(possibly empty)
 even-length list of files.  A file in this list at position 2i shadows
-the file in position 2i+1.  Emacs Lisp file suffixes \(.el and .elc\)
+the file in position 2i+1.  Emacs Lisp file suffixes \(.el and .elc)
 are stripped from the file names in the list.
 
 See the documentation for `list-load-path-shadows' for further information."
index 0c24f796d19461208fe73ae06f4254202f4ab31f..f305025f2158894f95bb6f9b81a99d38deaa4d96 100644 (file)
@@ -213,7 +213,7 @@ one of those elements share the same precedence level and associativity."
 (defun smie-bnf->prec2 (bnf &rest resolvers)
   "Convert the BNF grammar into a prec2 table.
 BNF is a list of nonterminal definitions of the form:
-  \(NONTERM RHS1 RHS2 ...)
+  (NONTERM RHS1 RHS2 ...)
 where each RHS is a (non-empty) list of terminals (aka tokens) or non-terminals.
 Not all grammars are accepted:
 - an RHS cannot be an empty list (this is not needed, since SMIE allows all
@@ -1136,6 +1136,8 @@ METHOD can be:
 - :elem, in which case the function should return either:
   - the offset to use to indent function arguments (ARG = `arg')
   - the basic indentation step (ARG = `basic').
+  - the token to use (when ARG = `empty-line-token') when we don't know how
+    to indent an empty line.
 - :list-intro, in which case ARG is a token and the function should return
   non-nil if TOKEN is followed by a list of expressions (not separated by any
   token) rather than an expression.
@@ -1686,6 +1688,19 @@ should not be computed on the basis of the following token."
         (+ (smie-indent-virtual) (smie-indent--offset 'basic))) ;
        (t (smie-indent-virtual))))))                            ;An infix.
 
+(defun smie-indent-empty-line ()
+  "Indentation rule when there's nothing yet on the line."
+  ;; Without this rule, SMIE assumes that an empty line will be filled with an
+  ;; argument (since it falls back to smie-indent-sexps), which tends
+  ;; to indent far too deeply.
+  (when (eolp)
+    (let ((token (or (funcall smie-rules-function :elem 'empty-line-token)
+                     ;; FIXME: Should we default to ";"?
+                     ;; ";"
+                     )))
+      (when (assoc token smie-grammar)
+        (smie-indent-keyword token)))))
+
 (defun smie-indent-exps ()
   ;; Indentation of sequences of simple expressions without
   ;; intervening keywords or operators.  E.g. "a b c" or "g (balbla) f".
@@ -1744,7 +1759,7 @@ should not be computed on the basis of the following token."
     smie-indent-comment smie-indent-comment-continue smie-indent-comment-close
     smie-indent-comment-inside smie-indent-inside-string
     smie-indent-keyword smie-indent-after-keyword
-                          smie-indent-exps)
+    smie-indent-empty-line smie-indent-exps)
   "Functions to compute the indentation.
 Each function is called with no argument, shouldn't move point, and should
 return either nil if it has no opinion, or an integer representing the column
index 05dd7d57503b147aecf931f0c3e2492db4ccf0c5..95ed775f6b43567a08ffc072f72947d0eb67c3ba 100644 (file)
@@ -43,8 +43,6 @@
 
 (eval-when-compile (require 'cl-lib))
 
-(defvar font-lock-beginning-of-syntax-function)
-
 ;;; Applying syntax-table properties where needed.
 
 (defvar syntax-propertize-function nil
@@ -106,10 +104,6 @@ Put first the functions more likely to cause a change and cheaper to compute.")
                  (point-max))))
   (cons beg end))
 
-(defvar syntax-propertize--done -1
-  "Position up to which syntax-table properties have been set.")
-(make-variable-buffer-local 'syntax-propertize--done)
-
 (defun syntax-propertize--shift-groups (re n)
   (replace-regexp-in-string
    "\\\\(\\?\\([0-9]+\\):"
@@ -290,39 +284,59 @@ The return value is a function suitable for `syntax-propertize-function'."
 
 (defun syntax-propertize (pos)
   "Ensure that syntax-table properties are set until POS."
-  (when (and syntax-propertize-function
-             (< syntax-propertize--done pos))
-    ;; (message "Needs to syntax-propertize from %s to %s"
-    ;;          syntax-propertize--done pos)
-    (set (make-local-variable 'parse-sexp-lookup-properties) t)
-    (save-excursion
-      (with-silent-modifications
-        (let* ((start (max syntax-propertize--done (point-min)))
-               (end (max pos
-                         (min (point-max)
-                              (+ start syntax-propertize-chunk-size))))
-               (funs syntax-propertize-extend-region-functions))
-          (while funs
-            (let ((new (funcall (pop funs) start end)))
-              (if (or (null new)
-                      (and (>= (car new) start) (<= (cdr new) end)))
-                  nil
-                (setq start (car new))
-                (setq end (cdr new))
-                ;; If there's been a change, we should go through the
-                ;; list again since this new position may
-                ;; warrant a different answer from one of the funs we've
-                ;; already seen.
-                (unless (eq funs
-                            (cdr syntax-propertize-extend-region-functions))
-                  (setq funs syntax-propertize-extend-region-functions)))))
-          ;; Move the limit before calling the function, so the function
-          ;; can use syntax-ppss.
-          (setq syntax-propertize--done end)
-          ;; (message "syntax-propertizing from %s to %s" start end)
-          (remove-text-properties start end
-                                  '(syntax-table nil syntax-multiline nil))
-          (funcall syntax-propertize-function start end))))))
+  (when (< syntax-propertize--done pos)
+    (if (null syntax-propertize-function)
+        (setq syntax-propertize--done (max (point-max) pos))
+      ;; (message "Needs to syntax-propertize from %s to %s"
+      ;;          syntax-propertize--done pos)
+      (set (make-local-variable 'parse-sexp-lookup-properties) t)
+      (save-excursion
+        (with-silent-modifications
+          (make-local-variable 'syntax-propertize--done) ;Just in case!
+          (let* ((start (max (min syntax-propertize--done (point-max))
+                             (point-min)))
+                 (end (max pos
+                           (min (point-max)
+                                (+ start syntax-propertize-chunk-size))))
+                 (funs syntax-propertize-extend-region-functions))
+            (while funs
+              (let ((new (funcall (pop funs) start end))
+                    ;; Avoid recursion!
+                    (syntax-propertize--done most-positive-fixnum))
+                (if (or (null new)
+                        (and (>= (car new) start) (<= (cdr new) end)))
+                    nil
+                  (setq start (car new))
+                  (setq end (cdr new))
+                  ;; If there's been a change, we should go through the
+                  ;; list again since this new position may
+                  ;; warrant a different answer from one of the funs we've
+                  ;; already seen.
+                  (unless (eq funs
+                              (cdr syntax-propertize-extend-region-functions))
+                    (setq funs syntax-propertize-extend-region-functions)))))
+            ;; Move the limit before calling the function, so the function
+            ;; can use syntax-ppss.
+            (setq syntax-propertize--done end)
+            ;; (message "syntax-propertizing from %s to %s" start end)
+            (remove-text-properties start end
+                                    '(syntax-table nil syntax-multiline nil))
+            ;; Avoid recursion!
+            (let ((syntax-propertize--done most-positive-fixnum))
+              (funcall syntax-propertize-function start end))))))))
+
+;;; Link syntax-propertize with syntax.c.
+
+(defvar syntax-propertize-chunks
+  ;; We're not sure how far we'll go.  In my tests, using chunks of 20000
+  ;; brings to overhead to something negligible.  Passing ‘charpos’ directly
+  ;; also works (basically works line-by-line) but results in an overhead which
+  ;; I thought was a bit too high (like around 50%).
+  2000)
+
+(defun internal--syntax-propertize (charpos)
+  ;; FIXME: Called directly from C.
+  (syntax-propertize (min (+ syntax-propertize-chunks charpos) (point-max))))
 
 ;;; Incrementally compute and memoize parser state.
 
@@ -360,6 +374,7 @@ from each other, to avoid keeping too much useless info.")
   "Function to move back outside of any comment/string/paren.
 This function should move the cursor back to some syntactically safe
 point (where the PPSS is equivalent to nil).")
+(make-obsolete-variable 'syntax-begin-function nil "25.1")
 
 (defvar syntax-ppss-cache nil
   "List of (POS . PPSS) pairs, in decreasing POS order.")
@@ -487,11 +502,6 @@ running the hook."
              ;; - The function might be slow.
              ;; - If this function almost always finds a safe nearby spot,
              ;;   the cache won't be populated, so consulting it is cheap.
-             (when (and (not syntax-begin-function)
-                        (boundp 'font-lock-beginning-of-syntax-function)
-                        font-lock-beginning-of-syntax-function)
-               (set (make-local-variable 'syntax-begin-function)
-                    font-lock-beginning-of-syntax-function))
              (when (and syntax-begin-function
                         (progn (goto-char pos)
                                (funcall syntax-begin-function)
index dca459f2bf699670aa69702e68c2a261ba101f25..c9e3fbe4f7d965e12c061e56aeed0d4f93c8764b 100644 (file)
@@ -205,7 +205,7 @@ timers).  If nil, allocate a new cell."
   "Insert TIMER into `timer-idle-list'.
 This arranges to activate TIMER whenever Emacs is next idle.
 If optional argument DONT-WAIT is non-nil, set TIMER to activate
-immediately \(see below\), or at the right time, if Emacs is
+immediately \(see below), or at the right time, if Emacs is
 already idle.
 
 REUSE-CELL, if non-nil, is a cons cell to reuse when inserting
@@ -345,18 +345,26 @@ This function is called, by name, directly by the C code."
 (defun run-at-time (time repeat function &rest args)
   "Perform an action at time TIME.
 Repeat the action every REPEAT seconds, if REPEAT is non-nil.
-TIME should be one of: a string giving an absolute time like
-\"11:23pm\" (the acceptable formats are those recognized by
-`diary-entry-time'; note that such times are interpreted as times
-today, even if in the past); a string giving a relative time like
-\"2 hours 35 minutes\" (the acceptable formats are those
-recognized by `timer-duration'); nil meaning now; a number of
-seconds from now; a value from `encode-time'; or t (with non-nil
-REPEAT) meaning the next integral multiple of REPEAT.  REPEAT may
-be an integer or floating point number.  The action is to call
-FUNCTION with arguments ARGS.
+REPEAT may be an integer or floating point number.
+TIME should be one of:
+- a string giving today's time like \"11:23pm\"
+  (the acceptable formats are HHMM, H:MM, HH:MM, HHam, HHAM,
+  HHpm, HHPM, HH:MMam, HH:MMAM, HH:MMpm, or HH:MMPM;
+  a period `.' can be used instead of a colon `:' to separate
+  the hour and minute parts);
+- a string giving a relative time like \"90\" or \"2 hours 35 minutes\"
+  (the acceptable forms are a number of seconds without units
+  or some combination of values using units in `timer-duration-words');
+- nil, meaning now;
+- a number of seconds from now;
+- a value from `encode-time';
+- or t (with non-nil REPEAT) meaning the next integral
+  multiple of REPEAT.
 
-This function returns a timer object which you can use in `cancel-timer'."
+The action is to call FUNCTION with arguments ARGS.
+
+This function returns a timer object which you can use in
+`cancel-timer'."
   (interactive "sRun at time: \nNRepeat interval: \naFunction: ")
 
   (or (null repeat)
index 9e3667e7a8ff34c387ce73734f34cc2a379a2cb2..c002ecfd2ffae92fbcbeb225c87db061b491c7a3 100644 (file)
 ;;;  Determine Window System, and X Server Vendor (if appropriate).
 ;;;
 (defconst edt-window-system (if (featurep 'xemacs) (console-type) window-system)
-  "Indicates window system \(in GNU Emacs\) or console type \(in XEmacs\).")
+  "Indicates window system (in GNU Emacs) or console type (in XEmacs).")
 
 (declare-function x-server-vendor "xfns.c" (&optional terminal))
 
index 9bd1627ffebedc4c12e07f4637efe76187c54101..0c089698752f6b19ca72c58449b0765d237fc952 100644 (file)
@@ -213,23 +213,23 @@ use within the EDT emulation."
 
 (defcustom edt-word-entities '(?\t)
   "Specifies the list of EDT word entity characters.
-The default list, (\?\\t), contains just the TAB character, which
+The default list, (?\\t), contains just the TAB character, which
 emulates EDT.  Characters are specified in the list using their
 decimal ASCII values.  A question mark, followed by the actual
 character, can be used to indicate the numerical value of the
 character, instead of the actual decimal value.  So, ?A means the
-numerical value for the letter A, \?/ means the numerical value for /,
+numerical value for the letter A, ?/ means the numerical value for /,
 etc.  Several unprintable and special characters have special
 representations, which you can also use:
 
-            \?\\b  specifies  BS, C-h
-            \?\\t  specifies  TAB, C-i
-            \?\\n  specifies  LFD, C-j
-            \?\\v  specifies  VTAB, C-k
-            \?\\f  specifies  FF, C-l
-            \?\\r  specifies  CR, C-m
-            \?\\e  specifies  ESC, C-[
-            \?\\\\  specifies  \\
+            ?\\b  specifies  BS, C-h
+            ?\\t  specifies  TAB, C-i
+            ?\\n  specifies  LFD, C-j
+            ?\\v  specifies  VTAB, C-k
+            ?\\f  specifies  FF, C-l
+            ?\\r  specifies  CR, C-m
+            ?\\e  specifies  ESC, C-[
+            ?\\\\  specifies  \\
 
 In EDT Emulation movement-by-word commands, each character in the list
 will be treated as if it were a separate word."
@@ -311,10 +311,10 @@ This means that an edt-user.el file was found in the user's `load-path'.")
 ;;;     o edt-emulation-on      o edt-load-keys
 ;;;
 (defconst edt-emacs-variant (if (featurep 'emacs) "gnu" "xemacs")
-  "Indicates Emacs variant:  GNU Emacs or XEmacs \(aka Lucid Emacs\).")
+  "Indicates Emacs variant:  GNU Emacs or XEmacs (aka Lucid Emacs).")
 
 (defconst edt-window-system (if (featurep 'emacs) window-system (console-type))
-  "Indicates window system \(in GNU Emacs\) or console type \(in XEmacs\).")
+  "Indicates window system (in GNU Emacs) or console type (in XEmacs).")
 
 (declare-function x-server-vendor "xfns.c" (&optional terminal))
 
index 93fcec865a78a754969bbc3ee69a1cfb534f10ac..960ccedd4dd2440227b83720edca86608afdb51e 100644 (file)
@@ -1536,7 +1536,7 @@ as a Meta key and any number of multiple escapes are allowed."
 (defun viper-repeat (arg)
   "Re-execute last destructive command.
 Use the info in viper-d-com, which has the form
-\(com val ch reg inserted-text command-keys\),
+\(com val ch reg inserted-text command-keys),
 where `com' is the command to be re-executed, `val' is the
 argument to `com', `ch' is a flag for repeat, and `reg' is optional;
 if it exists, it is the name of the register for `com'.
@@ -3424,7 +3424,7 @@ controlled by the sign of prefix numeric value."
              ((re-search-backward "[][(){}]" beg-lim t))
              (t
               (error "No matching character on line"))))
-      (cond ((looking-at "[\(\[{]")
+      (cond ((looking-at "[([{]")
             (if com (viper-move-marker-locally 'viper-com-point (point)))
             (forward-sexp 1)
             (if com
@@ -3733,7 +3733,7 @@ With a prefix argument, this function unsets the macros.
 If the optional prefix argument is non-nil and specifies a valid major mode,
 this sets the macros only in the macros in that major mode.  Otherwise,
 the macros are set in the current major mode.
-\(When unsetting the macros, the second argument has no effect.\)"
+\(When unsetting the macros, the second argument has no effect.)"
   (interactive "P")
   (or noninteractive
       (if (not unset)
@@ -3980,7 +3980,7 @@ Null string will repeat previous search."
   (let (buffer buffer-name)
     (setq buffer-name
          (funcall viper-read-buffer-function
-                  (format "Kill buffer \(%s\): "
+                  (format "Kill buffer (%s): "
                           (buffer-name (current-buffer)))))
     (setq buffer
          (if (null buffer-name)
@@ -4588,7 +4588,7 @@ One can use \\=`\\=` and \\='\\=' to temporarily jump 1 step back."
 ;; Viewing registers
 
 (defun viper-ket-function (arg)
-  "Function called by \], the ket.  View registers and call \]\]."
+  "Function called by ], the ket.  View registers and call ]]."
   (interactive "P")
   (let ((reg (read-char)))
     (cond ((viper-valid-register reg '(letter Letter))
@@ -4605,7 +4605,7 @@ One can use \\=`\\=` and \\='\\=' to temporarily jump 1 step back."
              viper-InvalidRegister reg)))))
 
 (defun viper-brac-function (arg)
-  "Function called by \[, the brac.  View textmarkers and call \[\[."
+  "Function called by [, the brac.  View textmarkers and call [[."
   (interactive "P")
   (let ((reg (read-char)))
     (cond ((viper= ?\[ reg)
@@ -4981,7 +4981,7 @@ back trace of the execution that leads to the error.  Please include this
 trace in your bug report.
 
 If you believe that one of Viper's commands goes into an infinite loop
-\(e.g., Emacs freezes\), type:
+\(e.g., Emacs freezes), type:
 
     M-x set-variable <Return> debug-on-quit <Return> t <Return>
 
index fb2c1792a41d7e163cd9d497357855918c0055b7..6e55ac5b5d69ac26d585cd95f38c3c7e2edcc3ad 100644 (file)
@@ -396,7 +396,7 @@ reversed."
     ))
 
 ;; Get an ex-token which is either an address or a command.
-;; A token has a type, \(command, address, end-mark\), and a value
+;; A token has a type, (command, address, end-mark), and a value
 (defun viper-get-ex-token ()
   (save-window-excursion
     (setq viper-ex-work-buf (get-buffer-create viper-ex-work-buf-name))
@@ -1658,7 +1658,7 @@ reversed."
   (if (and (not (string= ex-file (buffer-file-name)))
           (buffer-modified-p)
           (not ex-variant))
-      (error "No write since last change \(:rec! overrides\)"))
+      (error "No write since last change (:rec! overrides)"))
   (recover-file ex-file))
 
 ;; Tell that `rewind' is obsolete and to use `:next count' instead
index 092de55e70ede750bcfd923a247d53c1ead3a705..f422a1354a9c1b26ec3d6c2f18458da2be2196c9 100644 (file)
@@ -102,7 +102,7 @@ docstring.  The variable becomes buffer-local whenever set."
   (declare (indent defun))
   `(progn
     (defvar ,var ,default-value
-      ,(format "%s\n\(buffer local\)" documentation))
+      ,(format "%s\n(buffer local)" documentation))
     (make-variable-buffer-local ',var)))
 
 ;; (viper-loop COUNT BODY) Execute BODY COUNT times.
@@ -778,7 +778,7 @@ Related buffers can be cycled through via :R and :P commands."
          "^\\\\[sb][a-z]*{.*}\\s-*$\\|"                        ; latex
          "^@node\\|@table\\|^@m?enu\\|^@itemize\\|^@if\\|"     ; texinfo
          "^.+:-")                                              ; prolog
-  "Regexps for Headings.  Used by \[\[ and \]\].")
+  "Regexps for Headings.  Used by [[ and ]].")
 
 (defvar viper-heading-end
   (concat "^}\\|"                                              ; C/C++
@@ -786,7 +786,7 @@ Related buffers can be cycled through via :R and :P commands."
          "^@end \\|"                                           ; texinfo
          ")\n\n[ \t\n]*\\|"                                    ; lisp
          "\\.\\s-*$")                                          ; prolog
-      "*Regexps to end Headings/Sections.  Used by \[\].")
+      "*Regexps to end Headings/Sections.  Used by [].")
 
 
 ;; These two vars control the interaction of jumps performed by ' and `.
index 4fa07792334ca7db7e985adc9b896a897ec3dab0..3aff0628b5f27a8259a424ccf5c9b4d8ae3f98d4 100644 (file)
@@ -327,8 +327,8 @@ Can be used in `viper-custom-file-name' to define permanent macros.
 MACRO-NAME is a string of characters or a vector of keys.  STATE is
 either `vi-state' or `insert-state'.  It specifies the Viper state in which to
 define the macro.  MACRO-BODY is a string that represents the keyboard macro.
-Optional SCOPE says whether the macro should be global \(t\), mode-specific
-\(a major-mode symbol\), or buffer-specific \(buffer name, a string\).
+Optional SCOPE says whether the macro should be global \(t), mode-specific
+\(a major-mode symbol), or buffer-specific \(buffer name, a string).
 If SCOPE is nil, the user is asked to specify the scope."
   (let* (state-name keymap
         (macro-alist-var
@@ -894,7 +894,7 @@ mistakes in macro names to be passed to this function is to use
   (set-register reg last-kbd-macro))
 
 (defun viper-register-macro (count)
-  "Keyboard macros in registers - a modified \@ command."
+  "Keyboard macros in registers - a modified @ command."
   (interactive "P")
   (let ((reg (downcase (read-char))))
     (cond ((or (and (<= ?a reg) (<= reg ?z)))
index 4d5c86fd6aaad40e79305d9d1e8b6f67d706c148..5c82bf1f55d5939ef54132208ba22c94b66bbd6a 100644 (file)
@@ -145,7 +145,7 @@ If CLICK-COUNT is 2,then `word' is a Word in Vi sense.
 If the character clicked on is a non-separator and is non-alphanumeric but
 is adjacent to an alphanumeric symbol, then it is considered alphanumeric
 for the purpose of this command.  If this character has a matching
-character, such as `\(' is a match for `\)', then the matching character is
+character, such as `(' is a match for `)', then the matching character is
 also considered alphanumeric.
 For convenience, in Lisp modes, `-' is considered alphanumeric.
 
@@ -250,7 +250,7 @@ On single or double click, returns the word as determined by
 With prefix argument, N, insert that many words.
 This command must be bound to a mouse click.
 The double-click action of the same mouse button must not be bound
-\(or it must be bound to the same function\).
+\(or it must be bound to the same function).
 See `viper-surrounding-word' for the definition of a word in this case."
   (interactive "e\nP")
   (if viper-frame-of-focus     ;; to handle clicks in another frame
@@ -339,7 +339,7 @@ See `viper-surrounding-word' for the definition of a word in this case."
    "Find the word clicked or double-clicked on.  Word may be in another window.
 With prefix argument, N, search for N-th occurrence.
 This command must be bound to a mouse click.  The double-click action of the
-same button must not be bound \(or it must be bound to the same function\).
+same button must not be bound \(or it must be bound to the same function).
 See `viper-surrounding-word' for the details on what constitutes a word for
 this command."
   (interactive "e\nP")
index c4dc569efb39c4df0781fd545cacf531fb501abb..8c2ad581a755c4931d917889ecfeab00b0b5d038 100644 (file)
@@ -379,7 +379,7 @@ Otherwise return the normal value."
 
 ;; Append LIS2 to LIS1, both alists, by side-effect and returns LIS1
 ;; LIS2 is modified by filtering it: deleting its members of the form
-;; \(car elt\) such that (car elt') is in LIS1.
+;; (car elt) such that (car elt') is in LIS1.
 (defun viper-append-filter-alist (lis1 lis2)
   (let ((temp lis1)
        elt)
@@ -426,7 +426,7 @@ Otherwise return the normal value."
       ;; Issue an error, if no match.
       (unless (eq 0 status)
        (save-excursion
-         (skip-chars-forward " \t\n\j")
+         (skip-chars-forward " \t\n")
          (if (looking-at "ls:")
              (viper-forward-Word 1))
          (error "%s: %s"
@@ -859,7 +859,7 @@ Otherwise return the normal value."
 
 (defsubst viper-is-in-minibuffer ()
   (save-match-data
-    (string-match "\*Minibuf-" (buffer-name))))
+    (string-match "\\*Minibuf-" (buffer-name))))
 
 
 \f
@@ -1330,7 +1330,7 @@ Works best when set in the hooks to various major modes.
 `strict-vi' means Viper words are (hopefully) exactly as in Vi.
 
 `reformed-vi' means Viper words are like Emacs words \(as determined using
-Emacs syntax tables, which are different for different major modes\) with two
+Emacs syntax tables, which are different for different major modes) with two
 exceptions: the symbol `_' is always part of a word and typical Vi non-word
 symbols, such as `,',:,\",),{, etc., are excluded.
 This behaves very close to `strict-vi', but also works well with non-ASCII
index 0933c949df0a789900195285e3ba91f6de2c9300..6398b476fad64a7193ca4b0a76c01f3c9cdfb933 100644 (file)
@@ -819,7 +819,7 @@ It also can't undo some Viper settings."
 ;; fundamental
 (defun viper-major-mode-change-sentinel ()
   (save-match-data
-    (or (string-match "\*Minibuf-" (buffer-name))
+    (or (string-match "\\*Minibuf-" (buffer-name))
        (setq viper-new-major-mode-buffer-list
              (cons (current-buffer) viper-new-major-mode-buffer-list))))
   ;; change the global value of hook
index ed71e966853e9a2c0eaa81f388b3a974265e8483..aa79c7d0fc20dde34d02e836681f07c5274a3d84 100644 (file)
@@ -2199,7 +2199,7 @@ The return value is an alist mapping from types to values."
       (if (eq index (string-match "[ \t\n\r]*" string index))
          (setq index (match-end 0)))
       (if (eq index (string-match
-                    "\\([0-9]+\\(\\.[0-9]+\\)*\\)\[ \t\n\r]*=[ \t\n\r]*"
+                    "\\([0-9]+\\(\\.[0-9]+\\)*\\)[ \t\n\r]*=[ \t\n\r]*"
                     string index))
          (setq type (match-string 1 string)
                index (match-end 0))
index 958c5ef8b626e5e61644b4e5afdd9b5bcdca8f7a..ec45dcfcf24eaf5446e220a59ae8fe77d9df513c 100644 (file)
@@ -1541,7 +1541,7 @@ A server may send more than one 005 message."
     (while (erc-response.command-args parsed)
       (let ((section (pop (erc-response.command-args parsed))))
         ;; fill erc-server-parameters
-        (when (string-match "^\\([A-Z]+\\)\=\\(.*\\)$\\|^\\([A-Z]+\\)$"
+        (when (string-match "^\\([A-Z]+\\)=\\(.*\\)$\\|^\\([A-Z]+\\)$"
                             section)
           (add-to-list 'erc-server-parameters
                        `(,(or (match-string 1 section)
index 55f298bbf69cddc19200d190051c1a92dd4a4647..0622b18ca7fa9a9e5ac9fb73bbf23b427fb541e7 100644 (file)
@@ -84,7 +84,7 @@ Useful to mark nicks from dangerous hosts."
 
 (defcustom erc-current-nick-highlight-type 'keyword
   "Determines how to highlight text in which your current nickname appears
-\(does not apply to text sent by you\).
+\(does not apply to text sent by you).
 
 The following values are allowed:
 
index 441663f3b3b34992402879be506196cc0d832cee..2891fe17be60535fd9fb1a90a233f00d317f2a52 100644 (file)
@@ -588,7 +588,7 @@ PORTS is either a number, a list of numbers, or a list of port ranges."
     (LagNet "lagnet.org.za")
     (Librenet "librenet.net")
     (LinkNet "link-net.org")
-    (LinuxChix "cats\.meow\.at\\|linuxchix\.org")
+    (LinuxChix "cats\\.meow\\.at\\|linuxchix\\.org")
     (Liquidized "liquidized.net")
     (M-IRC "m-sys.org")
     (MagicStar "magicstar.net")
index 2d2fa6230c3dccab8a238637ce1ffa8b7473cf47..274b01ffbd14a8069d3851c218a5095fda5f6bfd 100644 (file)
@@ -280,7 +280,7 @@ Example of use:
      "IDENTIFY" nil nil nil))
    "Alist of NickServer details, sorted by network.
 Every element in the list has the form
-  \(SYMBOL NICKSERV REGEXP NICK KEYWORD USE-CURRENT ANSWER SUCCESS-REGEXP)
+  (SYMBOL NICKSERV REGEXP NICK KEYWORD USE-CURRENT ANSWER SUCCESS-REGEXP)
 
 SYMBOL is a network identifier, a symbol, as used in `erc-networks-alist'.
 NICKSERV is the description of the nickserv in the form nick!user@host.
index 62be63e9aa46d39a1caa88603bafb5d7075ca2ac..8e26db1d9d30febe305994e4d3400b6a1eb99c12 100644 (file)
@@ -258,20 +258,20 @@ If nil, only \"> \" will be shown."
 
 (defcustom erc-hide-list nil
   "A global list of IRC message types to hide.
-A typical value would be '(\"JOIN\" \"PART\" \"QUIT\")."
+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\")
+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\")
+A typical value would be \((\"#emacs\" \"QUIT\" \"JOIN\")
 (\"#erc\" \"NICK\")."
   :group 'erc-ignore
   :type 'erc-message-type)
@@ -2503,7 +2503,7 @@ non-nil."
 (defcustom erc-lurker-hide-list nil
   "List of IRC type messages to hide when sent by lurkers.
 
-A typical value would be '(\"JOIN\" \"PART\" \"QUIT\").
+A typical value would be \(\"JOIN\" \"PART\" \"QUIT\").
 See also `erc-lurker-p' and `erc-hide-list'."
   :group 'erc-lurker
   :type 'erc-message-type)
@@ -2973,7 +2973,7 @@ VERSION and so on.  It is called with ARGS."
 If FUNC contains a valid function or variable, help about that
 will be displayed.  If FUNC is empty, display an apropos about
 ERC commands.  Otherwise, do `apropos' in the ERC namespace
-\(\"erc-.*LINE\"\).
+\(\"erc-.*LINE\").
 
 Examples:
 To find out about erc and bbdb, do
index f2e67cc8c32daab50b334913c4d9176f21c041bc..f0a8515238200cc5862f99fa89c22c207acd9f81 100644 (file)
@@ -193,8 +193,8 @@ The basic syntax is:
   *      .*      matches any group of characters (or none)
   #      *       matches zero or more occurrences of preceding
   ##     +       matches one or more occurrences of preceding
-  (x)    \(x\)   makes `x' a regular expression group
-  |      \|      boolean OR within an expression group
+  (x)    \\(x\\)   makes `x' a regular expression group
+  |      \\|      boolean OR within an expression group
   [a-b]  [a-b]   matches a character or range
   [^a]   [^a]    excludes a character or range
 
index 499eda40dc30c27afb06dfa989e49db8468ffb62..90dec59670148d7a8bb6538ac8efb031e3c76312 100644 (file)
@@ -639,7 +639,7 @@ matched."
   ;; `!'
   ;;      Start a history substitution, except when followed by a
   ;;      space, tab, the end of the line, = or (.
-  (if (not (string-match "^![^ \t\n=\(]" reference))
+  (if (not (string-match "^![^ \t\n=(]" reference))
       reference
     (setq eshell-history-index nil)
     (let ((event (eshell-hist-parse-event-designator reference)))
index 76751e51dfd7af6b5941685b8b1abe42f0501287..ae6e0d3e8866834c3f085e186ac1dd8b6efc07d0 100644 (file)
@@ -47,7 +47,7 @@ properties to colorize its output based on the setting of
 (defcustom eshell-ls-date-format "%Y-%m-%d"
   "How to display time information in `eshell-ls-file'.
 This is passed to `format-time-string' as a format string.
-To display the date using the current locale, use \"%b \%e\"."
+To display the date using the current locale, use \"%b \ %e\"."
   :version "24.1"
   :type 'string)
 
index 8ae81df92e58c9ff96f360389803f8a13317aac9..19597dfbc1f6e0bc41efce5922b321d9e7e70d4d 100644 (file)
@@ -517,7 +517,7 @@ Remove the DIRECTORY(ies), if they are empty.")
      :usage "[OPTION]... SOURCE DEST
    or: mv [OPTION]... SOURCE... DIRECTORY
 Rename SOURCE to DEST, or move SOURCE(s) to DIRECTORY.
-\[OPTION] DIRECTORY...")
+[OPTION] DIRECTORY...")
    (let ((no-dereference t))
      (eshell-mvcpln-template "mv" "moving" 'rename-file
                             eshell-mv-interactive-query
index 22ccf4e91f95379e7a696eb9b4035378d3d39212..3df820d59568e2b81004d70db91cef69e2f05a18 100644 (file)
@@ -627,10 +627,11 @@ newline."
   (let ((proc-running-p (and (eshell-interactive-process)
                             (not queue-p)))
        (inhibit-point-motion-hooks t)
-       after-change-functions)
+       (inhibit-modification-hooks t))
     (unless (and proc-running-p
                 (not (eq (process-status
-                          (eshell-interactive-process)) 'run)))
+                          (eshell-interactive-process))
+                          'run)))
       (if (or proc-running-p
              (>= (point) eshell-last-output-end))
          (goto-char (point-max))
@@ -697,7 +698,7 @@ This is done after all necessary filtering has been done."
   (let ((oprocbuf (if process (process-buffer process)
                    (current-buffer)))
        (inhibit-point-motion-hooks t)
-       after-change-functions)
+       (inhibit-modification-hooks t))
     (let ((functions eshell-preoutput-filter-functions))
       (while (and functions string)
        (setq string (funcall (car functions) string))
index 2565842706ef9ae5b1ffd4d3a166f9a559586b1a..f645702ac2bb29dc577dbd3c1b7578d93ee6b451 100644 (file)
@@ -228,7 +228,7 @@ If N or M is nil, it means the end of the list."
 
 (defvar eshell-path-env (getenv "PATH")
   "Content of $PATH.
-It might be different from \(getenv \"PATH\"\), when
+It might be different from \(getenv \"PATH\"), when
 `default-directory' points to a remote host.")
 (make-variable-buffer-local 'eshell-path-env)
 
index 4459c3ae960cf8fbee4b8496d55a08064a86f938..97c8a259459c01f2ec5471d766883558cf1c69ce 100644 (file)
     "for"                               ; foreach
     (concat
      "for (  )\n"
-     "{\n\n\}"
+     "{\n\n}"
      )
     (list 7 12))
 
     "whi"                               ; foreach
     (concat
      "while (  )\n"
-     "{\n\n\}"
+     "{\n\n}"
      )
     (list 9 15))
 
     "iff"
     (concat
      "if (  )\n"
-     "{\n\n\}"
+     "{\n\n}"
      )
     (list 6 12))
 
index 5485d80c926066cf2727506c5eed1678bb59f655..4e7f1a42bff6a4719ef328937b1d330cb07bfa7a 100644 (file)
@@ -433,7 +433,7 @@ completely specified)."
 (defun face-attribute-merged-with (attribute value faces &optional frame)
   "Merges ATTRIBUTE, initially VALUE, with faces from FACES until absolute.
 FACES may be either a single face or a list of faces.
-\[This is an internal function.]"
+[This is an internal function.]"
   (cond ((not (face-attribute-relative-p attribute value))
         value)
        ((null faces)
@@ -2691,10 +2691,12 @@ It is used for characters of no fonts too."
      :background "turquoise")          ; looks OK on tty (becomes cyan)
     (((class color) (background dark))
      :background "steelblue3")         ; looks OK on tty (becomes blue)
-    (((background dark))
+    (((background dark) (min-colors 4))
      :background "grey50")
+    (((background light) (min-colors 4))
+     :background "gray")
     (t
-     :background "gray"))
+     :inherit underline))
   "Face used for a matching paren."
   :group 'paren-showing-faces)
 
index 5822cf0cc7e54b16dccd495d661832c33d12358b..a07f99adcbf5a5aafad8d3e444bc72db4e501aa0 100644 (file)
@@ -1,4 +1,4 @@
-;;; filenotify.el --- watch files for changes on disk
+;;; filenotify.el --- watch files for changes on disk  -*- lexical-binding:t -*-
 
 ;; Copyright (C) 2013-2015 Free Software Foundation, Inc.
 
@@ -43,7 +43,7 @@ A key in this hash table is the descriptor as returned from
 `gfilenotify', `inotify', `w32notify' or a file name handler.
 The value in the hash table is a list
 
-  \(DIR (FILE . CALLBACK) (FILE . CALLBACK) ...)
+  (DIR (FILE . CALLBACK) (FILE . CALLBACK) ...)
 
 Several values for a given DIR happen only for `inotify', when
 different files from the same directory are watched.")
@@ -54,7 +54,7 @@ different files from the same directory are watched.")
   "Handle file system monitoring event.
 If EVENT is a filewatch event, call its callback.  It has the format
 
-  \(file-notify (DESCRIPTOR ACTIONS FILE [FILE1-OR-COOKIE]) CALLBACK)
+  (file-notify (DESCRIPTOR ACTIONS FILE [FILE1-OR-COOKIE]) CALLBACK)
 
 Otherwise, signal a `file-notify-error'."
   (interactive "e")
@@ -161,7 +161,7 @@ EVENT is the cadr of the event in `file-notify-handle-event'
               ((eq action 'attrib) 'attribute-changed)
               ((memq action '(create added)) 'created)
               ((memq action '(modify modified)) 'changed)
-              ((memq action '(delete 'delete-self move-self removed)) 'deleted)
+              ((memq action '(delete delete-self move-self removed)) 'deleted)
               ;; Make the event pending.
               ((memq action '(moved-from renamed-from))
                (setq file-notify--pending-event
@@ -177,9 +177,9 @@ EVENT is the cadr of the event in `file-notify-handle-event'
                               (car file-notify--pending-event)))
                   ;; If the source is handled by another watch, we
                   ;; must fire the rename event there as well.
-                  (when (not (eq (file-notify--descriptor desc)
-                                 (file-notify--descriptor
-                                  (caar file-notify--pending-event))))
+                  (when (not (equal (file-notify--descriptor desc)
+                                    (file-notify--descriptor
+                                     (caar file-notify--pending-event))))
                     (setq pending-event
                           `((,(caar file-notify--pending-event)
                              renamed ,file ,file1)
@@ -291,7 +291,7 @@ FILE is the name of the file whose event is being reported."
 
       ;; Determine respective flags.
       (if (eq file-notify--library 'gfilenotify)
-         (setq l-flags '(watch-mounts send-moved))
+         (setq l-flags (append '(watch-mounts send-moved) flags))
        (when (memq 'change flags)
          (setq
           l-flags
@@ -300,11 +300,10 @@ FILE is the name of the file whose event is being reported."
            ((eq file-notify--library 'w32notify)
             '(file-name directory-name size last-write-time)))))
        (when (memq 'attribute-change flags)
-         (add-to-list
-          'l-flags
-          (cond
-           ((eq file-notify--library 'inotify) 'attrib)
-           ((eq file-notify--library 'w32notify) 'attributes)))))
+         (push (cond
+                 ((eq file-notify--library 'inotify) 'attrib)
+                 ((eq file-notify--library 'w32notify) 'attributes))
+                l-flags)))
 
       ;; Call low-level function.
       (setq desc (funcall func dir l-flags 'file-notify-callback)))
@@ -328,35 +327,64 @@ DESCRIPTOR should be an object returned by `file-notify-add-watch'."
   (let* ((desc (if (consp descriptor) (car descriptor) descriptor))
         (file (if (consp descriptor) (cdr descriptor)))
         (dir (car (gethash desc file-notify-descriptors)))
-        handler registered)
+        (handler (and (stringp dir)
+                       (find-file-name-handler dir 'file-notify-rm-watch)))
+         (registered (gethash desc file-notify-descriptors)))
 
     (when (stringp dir)
-      (setq handler (find-file-name-handler dir 'file-notify-rm-watch))
+      ;; Call low-level function.
+      (when (null (cdr registered))
+        (condition-case nil
+            (if handler
+                ;; A file name handler could exist even if there is no local
+                ;; file notification support.
+                (funcall handler 'file-notify-rm-watch desc)
+
+              (funcall
+               (cond
+                ((eq file-notify--library 'gfilenotify) 'gfile-rm-watch)
+                ((eq file-notify--library 'inotify) 'inotify-rm-watch)
+                ((eq file-notify--library 'w32notify) 'w32notify-rm-watch))
+               desc))
+          (file-notify-error nil)))
 
       ;; Modify `file-notify-descriptors'.
       (if (not file)
          (remhash desc file-notify-descriptors)
 
-       (setq registered (gethash desc file-notify-descriptors))
        (setcdr registered
                (delete (assoc file (cdr registered)) (cdr registered)))
        (if (null (cdr registered))
            (remhash desc file-notify-descriptors)
-         (puthash desc registered file-notify-descriptors)))
+         (puthash desc registered file-notify-descriptors))))))
 
-      ;; Call low-level function.
-      (when (null (cdr registered))
-       (if handler
-           ;; A file name handler could exist even if there is no local
-           ;; file notification support.
-           (funcall handler 'file-notify-rm-watch desc)
+(defun file-notify-valid-p (descriptor)
+  "Check a watch specified by its DESCRIPTOR.
+DESCRIPTOR should be an object returned by `file-notify-add-watch'."
+  (let* ((desc (if (consp descriptor) (car descriptor) descriptor))
+        (file (if (consp descriptor) (cdr descriptor)))
+         (registered (gethash desc file-notify-descriptors))
+        (dir (car registered))
+        handler)
 
-         (funcall
-          (cond
-           ((eq file-notify--library 'gfilenotify) 'gfile-rm-watch)
-           ((eq file-notify--library 'inotify) 'inotify-rm-watch)
-           ((eq file-notify--library 'w32notify) 'w32notify-rm-watch))
-          desc))))))
+    (when (stringp dir)
+      (setq handler (find-file-name-handler dir 'file-notify-valid-p))
+
+      (and (or ;; It is a directory.
+               (not file)
+               ;; The file is registered.
+               (assoc file (cdr registered)))
+           (if handler
+               ;; A file name handler could exist even if there is no
+               ;; local file notification support.
+               (funcall handler 'file-notify-valid-p descriptor)
+             (funcall
+              (cond
+               ((eq file-notify--library 'gfilenotify) 'gfile-valid-p)
+               ((eq file-notify--library 'inotify) 'inotify-valid-p)
+               ((eq file-notify--library 'w32notify) 'w32notify-valid-p))
+              desc))
+           t))))
 
 ;; The end:
 (provide 'filenotify)
index c309f86f85b5d414b85dac26f6621ecf74c93744..8565aa83266b900cca158f02ed23c70bd7bb17bf 100644 (file)
@@ -1057,7 +1057,7 @@ Tip: You can use this expansion of remote identifier components
      to derive a new remote file name from an existing one.  For
      example, if FILE is \"/sudo::/path/to/file\" then
 
-       \(concat \(file-remote-p FILE) \"/bin/sh\")
+       (concat (file-remote-p FILE) \"/bin/sh\")
 
      returns a remote file name for file \"/bin/sh\" that has the
      same remote identifier as FILE but expanded; a name such as
@@ -3863,7 +3863,7 @@ directories."
 However, the mode will not be changed if
 \(1) a local variables list or the `-*-' line specifies a major mode, or
 \(2) the current major mode is a \"special\" mode,
-    not suitable for ordinary files, or
+    not suitable for ordinary files, or
 \(3) the new file name does not particularly specify any mode."
   :type 'boolean
   :group 'editing-basics)
index 464c7c3eec59ccab91d82ee5c9f2157b9e89bbc4..ab332bbeff0dabda7ad298956857acfd92d798a1 100644 (file)
@@ -415,10 +415,10 @@ at the last position.
 Possible uses: If you don't want to save `filesets-data' in your normal
 configuration file, you can add a something like this
 
-       \(lambda ()
-             \(insert (format \"(setq-default filesets-data \\='%S)\"
+       (lambda ()
+             (insert (format \"(setq-default filesets-data \\='%S)\"
                              filesets-data))
-             \(newline 2))
+             (newline 2))
 
 to this hook.
 
@@ -550,14 +550,14 @@ will be recursively added to the menu.  `filesets-tree-max-level' tells up
 to which level the directory structure should be scanned/listed,
 i.e. how deep the menu should be.  Try something like
 
-       \(\"HOME -- only one level\"
-        \(:tree \"~\" \"^[^.].*[^~]$\")
-        \(:tree-max-level 1)
-        \(:filter-dirs-flag t))
-       \(\"HOME -- up to 3 levels\"
-        \(:tree \"~\" \"^[^.].*[^~]$\")
-        \(:tree-max-level 3)
-        \(:filter-dirs-flag t))
+       (\"HOME -- only one level\"
+        (:tree \"~\" \"^[^.].*[^~]$\")
+        (:tree-max-level 1)
+        (:filter-dirs-flag t))
+       (\"HOME -- up to 3 levels\"
+        (:tree \"~\" \"^[^.].*[^~]$\")
+        (:tree-max-level 3)
+        (:filter-dirs-flag t))
 
 and it should become clear what this option is about.  In any case,
 including directory trees to the menu can take a lot of memory."
@@ -679,20 +679,20 @@ variables my-ps-viewer, my-pdf-viewer, my-dvi-viewer, my-pic-viewer.
 In order to view pdf or rtf files in an Emacs buffer, you could use these:
 
 
-      \(\"^.+\\\\.pdf\\\\\\='\" \"pdftotext\"
-       \((:capture-output t)
-       \(:args (\"%S - | fmt -w \" window-width))
-       \(:ignore-on-read-text t)
-       \(:constraintp (lambda ()
-                       \(and \(filesets-which-command-p \"pdftotext\")
-                            \(filesets-which-command-p \"fmt\"))))))
-      \(\"^.+\\\\.rtf\\\\\\='\" \"rtf2htm\"
-       \((:capture-output t)
-       \(:args (\"%S 2> /dev/null | w3m -dump -T text/html\"))
-       \(:ignore-on-read-text t)
-       \(:constraintp (lambda ()
-                       \(and (filesets-which-command-p \"rtf2htm\")
-                            \(filesets-which-command-p \"w3m\"))))))"
+      (\"^.+\\\\.pdf\\\\\\='\" \"pdftotext\"
+       ((:capture-output t)
+       (:args (\"%S - | fmt -w \" window-width))
+       (:ignore-on-read-text t)
+       (:constraintp (lambda ()
+                       (and (filesets-which-command-p \"pdftotext\")
+                            (filesets-which-command-p \"fmt\"))))))
+      (\"^.+\\\\.rtf\\\\\\='\" \"rtf2htm\"
+       ((:capture-output t)
+       (:args (\"%S 2> /dev/null | w3m -dump -T text/html\"))
+       (:ignore-on-read-text t)
+       (:constraintp (lambda ()
+                       (and (filesets-which-command-p \"rtf2htm\")
+                            (filesets-which-command-p \"w3m\"))))))"
   :set (function filesets-set-default)
   :type '(repeat :tag "Viewer"
                 (list :tag "Definition"
@@ -756,7 +756,7 @@ In order to view pdf or rtf files in an Emacs buffer, you could use these:
 (defcustom filesets-ingroup-patterns
   '(("^.+\\.tex$" t
      (((:name "Package")
-       (:pattern "\\\\usepackage\\W*\\(\\[[^\]]*\\]\\W*\\)?{\\W*\\(.+\\)\\W*}")
+       (:pattern "\\\\usepackage\\W*\\(\\[[^]]*\\]\\W*\\)?{\\W*\\(.+\\)\\W*}")
        (:match-number 2)
        (:stub-flag t)
        (:get-file-name (lambda (master file)
@@ -951,18 +951,18 @@ variable will take effect after rebuilding the menu.
 Caveat: Fileset names have to be unique.
 
 Example definition:
-      \\='\(\(\"My Wiki\"
-        \(:ingroup \"~/Etc/My-Wiki/WikiContents\"))
-       \(\"My Homepage\"
-        \(:pattern \"~/public_html/\" \"^.+\\\\.html$\")
-        \(:open filesets-find-file))
-       \(\"User Configuration\"
-        \(:files \"~/.xinitrc\"
+      \\='((\"My Wiki\"
+        (:ingroup \"~/Etc/My-Wiki/WikiContents\"))
+       (\"My Homepage\"
+        (:pattern \"~/public_html/\" \"^.+\\\\.html$\")
+        (:open filesets-find-file))
+       (\"User Configuration\"
+        (:files \"~/.xinitrc\"
                 \"~/.bashrc\"
                 \"~/.bash_profile\"))
-       \(\"HOME\"
-        \(:tree \"~\" \"^[^.].*[^~]$\")
-        \(:filter-dirs-flag t)))
+       (\"HOME\"
+        (:tree \"~\" \"^[^.].*[^~]$\")
+        (:filter-dirs-flag t)))
 
 `filesets-data' is a list of (NAME-AS-STRING . DEFINITION), DEFINITION
 being an association list with the fields:
@@ -2450,13 +2450,13 @@ and edit your startup file as shown below:
 1. `filesets-data': Edit all :pattern filesets in your startup file and
 transform all entries as shown in this example:
 
-       \(\"Test\" (:pattern \"~/dir/^pattern$\"))
-       --> \(\"Test\" (:pattern \"~/dir/\" \"^pattern$\"))
+       (\"Test\" (:pattern \"~/dir/^pattern$\"))
+       --> (\"Test\" (:pattern \"~/dir/\" \"^pattern$\"))
 
 2. `filesets-data': Change all occurrences of \":document\" to \":ingroup\":
 
-      \(\(\"Test\" \(:document \"~/dir/file\"))
-      --> \(\(\"Test\" \(:ingroup \"~/dir/file\"))
+      ((\"Test\" (:document \"~/dir/file\"))
+      --> ((\"Test\" (:ingroup \"~/dir/file\"))
 
 3. `filesets-subdocument-patterns': If you already modified the variable
 previously called `filesets-subdocument-patterns', change its name to
index d78a0b35fabc02a512582fcd4d1cba866cf997c7..71c7a9b9c77f13e73142e63ccf662bd3f6c3815d 100644 (file)
@@ -140,10 +140,10 @@ the string will be quoted).")
   "Initiate the building of a find command.
 For example:
 
-\(find-cmd \\='\(prune \(name \".svn\" \".git\" \".CVS\"\)\)
-          \\='\(and \(or \(name \"*.pl\" \"*.pm\" \"*.t\"\)
-                    \(mtime \"+1\"\)\)
-                \(fstype \"nfs\" \"ufs\"\)\)\)\)
+\(find-cmd \\='(prune (name \".svn\" \".git\" \".CVS\"))
+          \\='(and (or (name \"*.pl\" \"*.pm\" \"*.t\")
+                    (mtime \"+1\"))
+                (fstype \"nfs\" \"ufs\"))))
 
 `default-directory' is used as the initial search path.  The
 result is a string that should be ready for the command line."
@@ -159,9 +159,9 @@ result is a string that should be ready for the command line."
 
 (defun find-and (form)
   "And FORMs together, so:
-  \(and \(mtime \"+1\"\) \(name \"something\"\)\)
+  (and (mtime \"+1\") (name \"something\"))
 will produce:
-  find . \\\( -mtime +1 -and -name something \\\)"
+  find . \\( -mtime +1 -and -name something \\)"
   (if (< (length form) 2)
       (find-to-string (car form))
       (concat "\\( "
@@ -170,9 +170,9 @@ will produce:
 
 (defun find-or (form)
   "Or FORMs together, so:
-  \(or \(mtime \"+1\"\) \(name \"something\"\)\)
+  (or (mtime \"+1\") (name \"something\"))
 will produce:
-  find . \\\( -mtime +1 -or -name something \\\)"
+  find . \\( -mtime +1 -or -name something \\)"
   (if (< (length form) 2)
       (find-to-string (car form))
       (concat "\\( "
@@ -181,21 +181,21 @@ will produce:
 
 (defun find-not (form)
   "Or FORMs together and prefix with a -not, so:
-  \(not \(mtime \"+1\"\) \(name \"something\"\)\)
+  (not (mtime \"+1\") (name \"something\"))
 will produce:
-  -not \\\( -mtime +1 -or -name something \\\)
+  -not \\( -mtime +1 -or -name something \\)
 If you wanted the FORMs -and(ed) together instead then this would
 suffice:
-  \(not \(and \(mtime \"+1\"\) \(name \"something\"\)\)\)"
+  (not (and (mtime \"+1\") (name \"something\")))"
   (concat "-not " (find-or (mapcar #'find-to-string form))))
 
 (defun find-prune (form)
   "-or together FORMs postfix `-prune' and then -or that with a
 -true, so:
-  \(\(prune \(name \".svn\" \".git\"\)\) \(name \"*.pm\"\)\)
+  ((prune (name \".svn\" \".git\")) (name \"*.pm\"))
 will produce (unwrapped):
-  \\\( \\\( \\\( -name .svn -or -name .git \\\) /
-  -prune -or -true \\\) -and -name *.pm \\\)"
+  \\( \\( \\( -name .svn -or -name .git \\) /
+  -prune -or -true \\) -and -name *.pm \\)"
   (find-or
    (list
     (concat (find-or (mapcar #'find-to-string form)) (find-generic "prune"))
index b53c1da2a808f157d4ef513b6b3fba3322c4424f..c4ef0fef22932e29f16871c9487fff8b256d9054 100644 (file)
@@ -72,10 +72,10 @@ a file listing in the desired format.  LS-SWITCHES is a set of
 
 The two options must be set to compatible values.
 For example, to use human-readable file sizes with GNU ls:
-   \(\"-exec ls -ldh {} +\" . \"-ldh\")
+   (\"-exec ls -ldh {} +\" . \"-ldh\")
 
 To use GNU find's inbuilt \"-ls\" option to list files:
-   \(\"-ls\" . \"-dilsb\")
+   (\"-ls\" . \"-dilsb\")
 since GNU find's output has the same format as using GNU ls with
 the options \"-dilsb\"."
   :version "24.1"             ; add tests for -ls and -exec + support
index 97e95d206d84c388a3da631c410c1a0b6626e050..5c2c5064453a43e832859eabb4687691fa0162ab 100644 (file)
@@ -183,7 +183,7 @@ To override this, give an argument to `ff-find-other-file'."
 ;;;###autoload
 (defcustom ff-special-constructs
   ;; C/C++ include, for NeXTstep too
-  `((,(purecopy "^\#\\s *\\(include\\|import\\)\\s +[<\"]\\(.*\\)[>\"]") .
+  `((,(purecopy "^#\\s *\\(include\\|import\\)\\s +[<\"]\\(.*\\)[>\"]") .
      (lambda ()
        (buffer-substring (match-beginning 2) (match-end 2)))))
   ;; We include `ff-treat-as-special' documentation here so that autoload
@@ -678,7 +678,7 @@ name of the first file found."
       (setq suffixes suffix-list)
 
       ;; if dir does not contain '/*', look for the file
-      (if (and dir (not (string-match "\\([^*]*\\)/\\\*\\(/.*\\)*" dir)))
+      (if (and dir (not (string-match "\\([^*]*\\)/\\*\\(/.*\\)*" dir)))
           (progn
 
             ;; suffixes is nil => fname-stub is the file we are looking for
index 64c0af451b89029840576738ef1142fecc20c787..0a401c77ddfe113a08cc525c01181a83981b2401 100644 (file)
@@ -250,7 +250,7 @@ An end marker of nil means the fold ends after (point-max).")
   "Open the subtree under the current heading and narrow to it.
 
 Normally the body and the immediate subheadings are exposed, but
-optional arg EXPOSURE \(interactively with prefix arg\) changes this:-
+optional arg EXPOSURE \(interactively with prefix arg) changes this:-
 
        EXPOSURE > 0    exposes n levels of subheadings (c.f. show-children)
        EXPOSURE < 0    exposes only the body
index d62d5577dabab64dc5eeeb6857d77aa788b57db5..938c59e8506bdfb1f82068dcab972bb614a12938 100644 (file)
@@ -347,6 +347,9 @@ Used by `follow-window-size-change'.")
 (defvar follow-windows-start-end-cache nil
   "Cache used by `follow-window-start-end'.")
 
+(defvar follow-fixed-window nil
+  "If non-nil, the current window must not be scrolled.
+This is typically set by explicit scrolling commands.")
 ;;; Debug messages
 
 ;; This inline function must be as small as possible!
@@ -439,6 +442,54 @@ Keys specific to Follow mode:
 
 ;;; Scroll
 
+(defun follow-get-scrolled-point (dest windows)
+  "Calculate the correct value for point after a scrolling operation.
+
+DEST is our default position, typically where point was before the scroll.
+If `scroll-preserve-screen-position' is non-nil and active, DEST will be
+in the same screen position as before the scroll.  WINDOWS is the list of
+windows in the follow chain.
+
+This function attempts to duplicate the point placing from
+`window_scroll_line_based' in the Emacs core source window.c.
+
+Return the new position."
+  (if (and scroll-preserve-screen-position
+          (get this-command 'scroll-command))
+      dest
+    (let ((dest-column
+          (save-excursion
+            (goto-char dest)
+            (- (current-column)
+               (progn (vertical-motion 0) (current-column)))))
+         (limit0
+          (with-selected-window (car windows)
+            (save-excursion
+              (goto-char (window-start))
+              (vertical-motion 0)
+              (point))))
+         (limitn
+          (with-selected-window (car (reverse windows))
+            (save-excursion
+              (goto-char (window-end nil t))
+              (if (pos-visible-in-window-p)
+                  (point)              ; i.e. (point-max)
+                (1- (point)))))))
+      (cond
+       ((< dest limit0)
+       (with-selected-window (car windows)
+         (save-excursion
+           (goto-char limit0)
+           (vertical-motion (cons dest-column 0))
+           (point))))
+       ((> dest limitn)
+       (with-selected-window (car (reverse windows))
+         (save-excursion
+           (goto-char limitn)
+           (vertical-motion (cons dest-column 0))
+           (point))))
+       (t dest)))))
+
 ;; `scroll-up' and `-down', but for windows in Follow mode.
 ;;
 ;; Almost like the real thing, except when the cursor ends up outside
@@ -454,6 +505,7 @@ Keys specific to Follow mode:
 ;; position...  (This would also be corrected if we would have had a
 ;; good redisplay abstraction.)
 
+;;;###autoload
 (defun follow-scroll-up (&optional arg)
   "Scroll text in a Follow mode window chain up.
 
@@ -467,22 +519,26 @@ Works like `scroll-up' when not in Follow mode."
   (interactive "P")
   (cond ((not follow-mode)
         (scroll-up arg))
-       (arg
-        (save-excursion (scroll-up arg))
-        (setq follow-internal-force-redisplay t))
+       ((eq arg '-)
+        (follow-scroll-down))
        (t
-        (let* ((windows (follow-all-followers))
-               (end (window-end (car (reverse windows)))))
-          (if (eq end (point-max))
-              (signal 'end-of-buffer nil)
-            (select-window (car windows))
-            ;; `window-end' might return nil.
-            (if end
-                (goto-char end))
-            (vertical-motion (- next-screen-context-lines))
-            (set-window-start (car windows) (point)))))))
-
+        (let ((opoint (point))  (owin (selected-window)))
+          (while
+              ;; If we are too near EOB, try scrolling the previous window.
+              (condition-case nil (progn (scroll-up arg) nil)
+                (end-of-buffer
+                 (condition-case nil (progn (follow-previous-window) t)
+                   (error
+                    (select-window owin)
+                    (goto-char opoint)
+                    (signal 'end-of-buffer nil))))))
+          (unless (and scroll-preserve-screen-position
+                       (get this-command 'scroll-command))
+            (goto-char opoint))
+          (setq follow-fixed-window t)))))
+(put 'follow-scroll-up 'scroll-command t)
 
+;;;###autoload
 (defun follow-scroll-down (&optional arg)
   "Scroll text in a Follow mode window chain down.
 
@@ -492,27 +548,20 @@ the top window in the chain will be visible in the bottom window.
 If called with an argument, scroll ARG lines down.
 Negative ARG means scroll upward.
 
-Works like `scroll-up' when not in Follow mode."
+Works like `scroll-down' when not in Follow mode."
   (interactive "P")
   (cond ((not follow-mode)
-        (scroll-up arg))
-       (arg
-        (save-excursion (scroll-down arg)))
+        (scroll-down arg))
+       ((eq arg '-)
+        (follow-scroll-up))
        (t
-        (let* ((windows (follow-all-followers))
-               (win (car (reverse windows)))
-               (start (window-start (car windows))))
-          (if (eq start (point-min))
-              (signal 'beginning-of-buffer nil)
-            (select-window win)
-            (goto-char start)
-            (vertical-motion (- (- (window-height win)
-                                   (if header-line-format 2 1)
-                                   next-screen-context-lines)))
-            (set-window-start win (point))
-            (goto-char start)
-            (vertical-motion (- next-screen-context-lines 1))
-            (setq follow-internal-force-redisplay t))))))
+        (let ((opoint (point)))
+          (scroll-down arg)
+          (unless (and scroll-preserve-screen-position
+                       (get this-command 'scroll-command))
+            (goto-char opoint))
+          (setq follow-fixed-window t)))))
+(put 'follow-scroll-down 'scroll-command t)
 
 (declare-function comint-adjust-point "comint" (window))
 (defvar comint-scroll-show-maximum-output)
@@ -766,15 +815,16 @@ from the selected window."
 Return (END-POS END-OF-BUFFER).
 
 Actually, the position returned is the start of the line after
-the last fully-visible line in WIN.  If WIN is nil, the selected
-window is used."
+the last fully-visible line in WIN.  END-OF-BUFFER is t when EOB
+is fully-visible in WIN.  If WIN is nil, the selected window is
+used."
   (let* ((win (or win (selected-window)))
         (edges (window-inside-pixel-edges win))
         (ht (- (nth 3 edges) (nth 1 edges)))
         (last-line-pos (posn-point (posn-at-x-y 0 (1- ht) win))))
     (if (pos-visible-in-window-p last-line-pos win)
        (let ((end (window-end win t)))
-         (list end (= end (point-max))))
+         (list end (pos-visible-in-window-p (point-max) win)))
       (list last-line-pos nil))))
 
 (defun follow-calc-win-start (windows pos win)
@@ -1008,7 +1058,7 @@ should be a member of WINDOWS, starts at position START."
       (goto-char start)
       (vertical-motion 0 win)
       (dolist (w windows-before)
-       (vertical-motion (- (window-text-height w)) w))
+       (vertical-motion (- (window-text-height w)) w))
       (point))))
 
 
@@ -1130,138 +1180,144 @@ non-first windows in Follow mode."
   (cl-assert (eq (window-buffer win) (current-buffer)))
   (when (and follow-mode
              (not (window-minibuffer-p win)))
-    (let* ((dest (point))
-           (windows (follow-all-followers win))
-           (win-start-end (progn
-                            (follow-update-window-start (car windows))
-                            (follow-windows-start-end windows)))
-           (aligned (follow-windows-aligned-p win-start-end))
-           (visible (follow-pos-visible dest win win-start-end))
-           selected-window-up-to-date)
-      (unless (and aligned visible)
-        (setq follow-windows-start-end-cache nil))
-
-      ;; Select a window to display point.
-      (unless follow-internal-force-redisplay
-        (if (eq dest (point-max))
-            ;; Be careful at point-max: the display can be aligned
-            ;; while DEST can be visible in several windows.
-            (cond
-             ;; Select the current window, but only when the display
-             ;; is correct. (When inserting characters in a tail
-             ;; window, the display is not correct, as they are
-             ;; shown twice.)
-             ;;
-             ;; Never stick to the current window after a deletion.
-             ;; Otherwise, when typing `DEL' in a window showing
-             ;; only the end of the file, a character would be
-             ;; removed from the window above, which is very
-             ;; unintuitive.
-             ((and visible
-                   aligned
-                   (not (memq this-command
-                              '(backward-delete-char
-                                delete-backward-char
-                                backward-delete-char-untabify
-                                kill-region))))
-              (follow-debug-message "Max: same"))
-             ;; If the end is visible, and the window doesn't
-             ;; seems like it just has been moved, select it.
-             ((follow-select-if-end-visible win-start-end)
-              (follow-debug-message "Max: end visible")
-              (setq visible t aligned nil)
-              (goto-char dest))
-             ;; Just show the end...
-             (t
-              (follow-debug-message "Max: default")
-              (select-window (car (last windows)))
-              (goto-char dest)
-              (setq visible nil aligned nil)))
-
-          ;; We're not at the end, here life is much simpler.
-          (cond
-           ;; This is the normal case!
-           ;; It should be optimized for speed.
-           ((and visible aligned)
-            (follow-debug-message "same"))
-           ;; Pick a position in any window.  If the display is ok,
-           ;; this picks the `correct' window.
-           ((follow-select-if-visible dest win-start-end)
-            (follow-debug-message "visible")
-            (goto-char dest)
-            ;; Perform redisplay, in case line is partially visible.
-            (setq visible nil))
-           ;; Not visible anywhere else, lets pick this one.
-           (visible
-            (follow-debug-message "visible in selected."))
-           ;; If DEST is before the first window start, select the
-           ;; first window.
-           ((< dest (nth 1 (car win-start-end)))
-            (follow-debug-message "before first")
-            (select-window (car windows))
-            (goto-char dest)
-            (setq visible nil aligned nil))
-           ;; If we can position the cursor without moving the first
-           ;; window, do it. This is the case that catches `RET' at
-           ;; the bottom of a window.
-           ((follow-select-if-visible-from-first dest windows)
-            (follow-debug-message "Below first")
-            (setq visible t aligned t))
-           ;; None of the above.  Stick to the selected window.
-           (t
-            (follow-debug-message "None")
-            (setq visible nil aligned nil))))
-
-        ;; If a new window was selected, make sure that the old is
-        ;; not scrolled when point is outside the window.
-        (unless (eq win (selected-window))
-          (let ((p (window-point win)))
-            (set-window-start win (window-start win) nil)
-            (set-window-point win p))))
-
-      (unless visible
-        ;; If point may not be visible in the selected window,
-        ;; perform a redisplay; this ensures scrolling.
-        (let ((opoint (point)))
-          (redisplay)
-          ;; If this `redisplay' moved point, we got clobbered by a
-          ;; previous call to `set-window-start'.  Try again.
-          (when (/= (point) opoint)
-            (goto-char opoint)
-            (redisplay)))
-
-        (setq selected-window-up-to-date t)
-        (follow-avoid-tail-recenter)
-        (setq win-start-end (follow-windows-start-end windows)
-              follow-windows-start-end-cache nil
-              aligned nil))
-
-      ;; Now redraw the windows around the selected window.
-      (unless (and (not follow-internal-force-redisplay)
-                   (or aligned
-                       (follow-windows-aligned-p win-start-end))
-                   (follow-point-visible-all-windows-p win-start-end))
-        (setq follow-internal-force-redisplay nil)
-        (follow-redisplay windows (selected-window)
-                          selected-window-up-to-date)
-        (setq win-start-end (follow-windows-start-end windows)
-              follow-windows-start-end-cache nil)
-        ;; Point can end up in another window when DEST is at
-        ;; the beginning of the buffer and the selected window is
-        ;; not the first.  It can also happen when long lines are
-        ;; used and there is a big difference between the width of
-        ;; the windows.  (When scrolling one line in a wide window
-        ;; which will cause a move larger that an entire small
-        ;; window.)
-        (unless (follow-pos-visible dest win win-start-end)
-          (follow-select-if-visible dest win-start-end)
-          (goto-char dest)))
-
-      ;; If the region is visible, make it look good when spanning
-      ;; multiple windows.
-      (when (region-active-p)
-        (follow-maximize-region
-         (selected-window) windows win-start-end)))
+    (let ((windows (follow-all-followers win)))
+      ;; If we've explicitly scrolled, align the windows first.
+      (when follow-fixed-window
+       (follow-debug-message "fixed")
+       (follow-redisplay windows win)
+       (goto-char (follow-get-scrolled-point (point) windows))
+       (setq follow-fixed-window nil))
+      (let* ((dest (point))
+            (win-start-end (progn
+                             (follow-update-window-start (car windows))
+                             (follow-windows-start-end windows)))
+            (aligned (follow-windows-aligned-p win-start-end))
+            (visible (follow-pos-visible dest win win-start-end))
+            selected-window-up-to-date)
+       (unless (and aligned visible)
+         (setq follow-windows-start-end-cache nil))
+
+       ;; Select a window to display point.
+       (unless follow-internal-force-redisplay
+         (if (eq dest (point-max))
+             ;; Be careful at point-max: the display can be aligned
+             ;; while DEST can be visible in several windows.
+             (cond
+              ;; Select the current window, but only when the display
+              ;; is correct. (When inserting characters in a tail
+              ;; window, the display is not correct, as they are
+              ;; shown twice.)
+              ;;
+              ;; Never stick to the current window after a deletion.
+              ;; Otherwise, when typing `DEL' in a window showing
+              ;; only the end of the file, a character would be
+              ;; removed from the window above, which is very
+              ;; unintuitive.
+              ((and visible
+                    aligned
+                    (not (memq this-command
+                               '(backward-delete-char
+                                 delete-backward-char
+                                 backward-delete-char-untabify
+                                 kill-region))))
+               (follow-debug-message "Max: same"))
+              ;; If the end is visible, and the window doesn't
+              ;; seems like it just has been moved, select it.
+              ((follow-select-if-end-visible win-start-end)
+               (follow-debug-message "Max: end visible")
+               (setq visible t aligned nil)
+               (goto-char dest))
+              ;; Just show the end...
+              (t
+               (follow-debug-message "Max: default")
+               (select-window (car (last windows)))
+               (goto-char dest)
+               (setq visible nil aligned nil)))
+
+           ;; We're not at the end, here life is much simpler.
+           (cond
+            ;; This is the normal case!
+            ;; It should be optimized for speed.
+            ((and visible aligned)
+             (follow-debug-message "same"))
+            ;; Pick a position in any window.  If the display is ok,
+            ;; this picks the `correct' window.
+            ((follow-select-if-visible dest win-start-end)
+             (follow-debug-message "visible")
+             (goto-char dest)
+             ;; Perform redisplay, in case line is partially visible.
+             (setq visible nil))
+            ;; Not visible anywhere else, lets pick this one.
+            (visible
+             (follow-debug-message "visible in selected."))
+            ;; If DEST is before the first window start, select the
+            ;; first window.
+            ((< dest (nth 1 (car win-start-end)))
+             (follow-debug-message "before first")
+             (select-window (car windows))
+             (goto-char dest)
+             (setq visible nil aligned nil))
+            ;; If we can position the cursor without moving the first
+            ;; window, do it. This is the case that catches `RET' at
+            ;; the bottom of a window.
+            ((follow-select-if-visible-from-first dest windows)
+             (follow-debug-message "Below first")
+             (setq visible t aligned t))
+            ;; None of the above.  Stick to the selected window.
+            (t
+             (follow-debug-message "None")
+             (setq visible nil aligned nil))))
+
+         ;; If a new window was selected, make sure that the old is
+         ;; not scrolled when point is outside the window.
+         (unless (eq win (selected-window))
+           (let ((p (window-point win)))
+             (set-window-start win (window-start win) nil)
+             (set-window-point win p))))
+
+       (unless visible
+         ;; If point may not be visible in the selected window,
+         ;; perform a redisplay; this ensures scrolling.
+         (let ((opoint (point)))
+           (redisplay)
+           ;; If this `redisplay' moved point, we got clobbered by a
+           ;; previous call to `set-window-start'.  Try again.
+           (when (/= (point) opoint)
+             (goto-char opoint)
+             (redisplay)))
+
+         (setq selected-window-up-to-date t)
+         (follow-avoid-tail-recenter)
+         (setq win-start-end (follow-windows-start-end windows)
+               follow-windows-start-end-cache nil
+               aligned nil))
+
+       ;; Now redraw the windows around the selected window.
+       (unless (and (not follow-internal-force-redisplay)
+                    (or aligned
+                        (follow-windows-aligned-p win-start-end))
+                    (follow-point-visible-all-windows-p win-start-end))
+         (setq follow-internal-force-redisplay nil)
+         (follow-redisplay windows (selected-window)
+                           selected-window-up-to-date)
+         (setq win-start-end (follow-windows-start-end windows)
+               follow-windows-start-end-cache nil)
+         ;; Point can end up in another window when DEST is at
+         ;; the beginning of the buffer and the selected window is
+         ;; not the first.  It can also happen when long lines are
+         ;; used and there is a big difference between the width of
+         ;; the windows.  (When scrolling one line in a wide window
+         ;; which will cause a move larger that an entire small
+         ;; window.)
+         (unless (follow-pos-visible dest win win-start-end)
+           (follow-select-if-visible dest win-start-end)
+           (goto-char dest)))
+
+       ;; If the region is visible, make it look good when spanning
+       ;; multiple windows.
+       (when (region-active-p)
+         (follow-maximize-region
+          (selected-window) windows win-start-end))))
 
     ;; Whether or not the buffer was in follow mode, update windows
     ;; displaying the tail so that Emacs won't recenter them.
index 6d8588bfa33974c36452cf951733a6ee78289e64..2253204d9f72028a3255644c3c45aa04b07a509c 100644 (file)
@@ -30,7 +30,7 @@
   "Defaults for Font Lock mode specified by the major mode.
 Defaults should be of the form:
 
- (KEYWORDS [KEYWORDS-ONLY [CASE-FOLD [SYNTAX-ALIST [SYNTAX-BEGIN ...]]]])
+ (KEYWORDS [KEYWORDS-ONLY [CASE-FOLD [SYNTAX-ALIST ...]]])
 
 KEYWORDS may be a symbol (a variable or function whose value is the keywords
 to use for fontification) or a list of symbols (specifying different levels
@@ -45,20 +45,9 @@ If SYNTAX-ALIST is non-nil, it should be a list of cons pairs of the form
 \(CHAR-OR-STRING . STRING) used to set the local Font Lock syntax table, for
 keyword and syntactic fontification (see `modify-syntax-entry').
 
-If SYNTAX-BEGIN is non-nil, it should be a function with no args used to move
-backwards outside any enclosing syntactic block, for syntactic fontification.
-Typical values are `beginning-of-line' (i.e., the start of the line is known to
-be outside a syntactic block), or `beginning-of-defun' for programming modes or
-`backward-paragraph' for textual modes (i.e., the mode-dependent function is
-known to move outside a syntactic block).  If nil, the beginning of the buffer
-is used as a position outside of a syntactic block, in the worst case.
-
-\(See also Info node `(elisp)Font Lock Basics'.)
-
 These item elements are used by Font Lock mode to set the variables
 `font-lock-keywords', `font-lock-keywords-only',
-`font-lock-keywords-case-fold-search', `font-lock-syntax-table' and
-`font-lock-beginning-of-syntax-function', respectively.
+`font-lock-keywords-case-fold-search', `font-lock-syntax-table'.
 
 Further item elements are alists of the form (VARIABLE . VALUE) and are in no
 particular order.  Each VARIABLE is made buffer-local before set to VALUE.
index cec95bf259c3705bb2ab748e5d733521a91ecfd5..e2660bfab912415be75dd35d57affc4ca36973f5 100644 (file)
@@ -556,21 +556,6 @@ This is normally set via `font-lock-defaults'.")
 If this is nil, the major mode's syntax table is used.
 This is normally set via `font-lock-defaults'.")
 
-(defvar font-lock-beginning-of-syntax-function nil
-  "Non-nil means use this function to move back outside all constructs.
-When called with no args it should move point backward to a place which
-is not in a string or comment and not within any bracket-pairs (or else,
-a place such that any bracket-pairs outside it can be ignored for Emacs
-syntax analysis and fontification).
-
-If this is nil, Font Lock uses `syntax-begin-function' to move back
-outside of any comment, string, or sexp.  This variable is semi-obsolete;
-we recommend setting `syntax-begin-function' instead.
-
-This is normally set via `font-lock-defaults'.")
-(make-obsolete-variable 'font-lock-beginning-of-syntax-function
-                        'syntax-begin-function "23.3" 'set)
-
 (defvar font-lock-mark-block-function nil
   "Non-nil means use this function to mark a block of text.
 When called with no args it should leave point at the beginning of any
@@ -1347,7 +1332,7 @@ no ARG is given and `font-lock-mark-block-function' is nil.
 If `font-lock-mark-block-function' non-nil and no ARG is given, it is used to
 delimit the region to fontify."
   (interactive "P")
-  (let ((inhibit-point-motion-hooks t) font-lock-beginning-of-syntax-function
+  (let ((inhibit-point-motion-hooks t)
        deactivate-mark)
     ;; Make sure we have the right `font-lock-keywords' etc.
     (if (not font-lock-mode) (font-lock-set-defaults))
@@ -1765,11 +1750,10 @@ If SYNTACTIC-KEYWORDS is non-nil, it means these keywords are used for
          (cons t (cons keywords
                        (mapcar #'font-lock-compile-keyword keywords))))
     (if (and (not syntactic-keywords)
-            (let ((beg-function
-                   (or font-lock-beginning-of-syntax-function
-                       syntax-begin-function)))
+            (let ((beg-function syntax-begin-function))
               (or (eq beg-function 'beginning-of-defun)
-                  (get beg-function 'font-lock-syntax-paren-check)))
+                   (if (symbolp beg-function)
+                       (get beg-function 'font-lock-syntax-paren-check))))
             (not beginning-of-defun-function))
        ;; Try to detect when a string or comment contains something that
        ;; looks like a defun and would thus confuse font-lock.
@@ -1890,17 +1874,14 @@ Sets various variables using `font-lock-defaults' and
                              (list (car selem))
                            (mapcar 'identity (car selem))))
              (modify-syntax-entry char syntax font-lock-syntax-table)))))
-      ;; Syntax function for syntactic fontification?
-      (if (nth 4 defaults)
-       (set (make-local-variable 'font-lock-beginning-of-syntax-function)
-               (nth 4 defaults))
-        (kill-local-variable 'font-lock-beginning-of-syntax-function))
+      ;; (nth 4 defaults) used to hold `font-lock-beginning-of-syntax-function',
+      ;; but that was removed in 25.1, so if it's a cons cell, we assume that
+      ;; it's part of the variable alist.
       ;; Variable alist?
-      (dolist (x (nthcdr 5 defaults))
+      (dolist (x (nthcdr (if (consp (nth 4 defaults)) 4 5) defaults))
        (set (make-local-variable (car x)) (cdr x)))
       ;; Set up `font-lock-keywords' last because its value might depend
-      ;; on other settings (e.g. font-lock-compile-keywords uses
-      ;; font-lock-beginning-of-syntax-function).
+      ;; on other settings.
       (set (make-local-variable 'font-lock-keywords)
           (font-lock-eval-keywords keywords))
       ;; Local fontification?
index dbc814e5b017b1c3dca4cf808cc119195327213f..8a756e3396ce626c3b37ceab16dd4da917fa14b2 100644 (file)
@@ -513,7 +513,7 @@ Optional args BEG and END specify a region of the buffer on which to operate."
 (defun format-delq-cons (cons list)
   "Remove the given CONS from LIST by side effect and return the new LIST.
 Since CONS could be the first element of LIST, write
-`\(setq foo \(format-delq-cons element foo))' to be sure of changing
+\(setq foo \(format-delq-cons element foo)) to be sure of changing
 the value of `foo'."
   (if (eq cons list)
       (cdr list)
@@ -619,7 +619,7 @@ the rest of the arguments are any PARAMETERs found in that region.
 Any annotations that are found by NEXT-FN but not defined by TRANSLATIONS
 are saved as values of the `unknown' text-property \(which is list-valued).
 The TRANSLATIONS list should usually contain an entry of the form
-    \(unknown \(nil format-annotate-value))
+    (unknown (nil format-annotate-value))
 to write these unknown annotations back into the file."
   (save-excursion
     (save-restriction
@@ -827,7 +827,7 @@ in the region, it is treated as though it were DEFAULT."
 Insert each element of the given LIST of buffer annotations at its
 appropriate place.  Use second arg OFFSET if the annotations' locations are
 not relative to the beginning of the buffer: annotations will be inserted
-at their location-OFFSET+1 \(ie, the offset is treated as the position of
+at their location-OFFSET+1 \(i.e., the offset is treated as the position of
 the first character in the buffer)."
   (if (not offset)
       (setq offset 0)
@@ -839,7 +839,7 @@ the first character in the buffer)."
       (setq l (cdr l)))))
 
 (defun format-annotate-value (old new)
-  "Return OLD and NEW as a \(CLOSE . OPEN) annotation pair.
+  "Return OLD and NEW as a (CLOSE . OPEN) annotation pair.
 Useful as a default function for TRANSLATIONS alist when the value of the text
 property is the name of the annotation that you want to use, as it is for the
 `unknown' text property."
index ce8e1b91e4f0c919f171308db736f06ccb8b9bb8..29ab9788bbaf7b60d4172a8182aee4dd2a0209bb 100644 (file)
        (gnus-agent-fetch-selected-article): New function for
        gnus-select-article-hook or gnus-mark-article-hook.
 
-2002-10-02  Peter von der Ahe  <nospam2159@daimi.au.dk>
+2002-10-02  Peter von der Ahé  <nospam2159@daimi.au.dk>
 
        * gnus-ems.el (gnus-x-splash): Set coding-system-for-read to
        raw-text.
index 3f426bf95f6f837cca8fd28e9be70a3b8f7be255..f101ecdea088fdf7201cdf7f27d179ce9eacd194 100644 (file)
@@ -362,7 +362,7 @@ If the value is not a list, symmetric encryption will be used."
   "Read one of CHOICES by `read-char-choice', or `read-char'.
 `dropdown-list' support is disabled because it doesn't work reliably.
 Only one of CHOICES will be returned.  The PROMPT is augmented
-with \"[a/b/c] \" if CHOICES is '\(?a ?b ?c\)."
+with \"[a/b/c] \" if CHOICES is \(?a ?b ?c)."
   (when choices
     (let* ((prompt-choices
             (apply 'concat (loop for c in choices
@@ -1557,20 +1557,20 @@ You'll get back all the properties of the token as a plist.
 Here's an example that looks for the first item in the `Login'
 Secrets collection:
 
\(let ((auth-sources \\='(\"secrets:Login\")))
+ (let ((auth-sources \\='(\"secrets:Login\")))
     (auth-source-search :max 1)
 
 Here's another that looks for the first item in the `Login'
 Secrets collection whose label contains `gnus':
 
\(let ((auth-sources \\='(\"secrets:Login\")))
+ (let ((auth-sources \\='(\"secrets:Login\")))
     (auth-source-search :max 1 :label \"gnus\")
 
 And this one looks for the first item in the `Login' Secrets
 collection that's a Google Chrome entry for the git.gnus.org site
 authentication tokens:
 
\(let ((auth-sources \\='(\"secrets:Login\")))
+ (let ((auth-sources \\='(\"secrets:Login\")))
     (auth-source-search :max 1 :signon_realm \"https://git.gnus.org/Git\"))
 "
 
@@ -1691,19 +1691,19 @@ field), :user maps to \"-a USER\", and :port maps to \"-s PORT\".
 Here's an example that looks for the first item in the default
 generic MacOS Keychain:
 
\(let ((auth-sources \\='(macos-keychain-generic)))
+ (let ((auth-sources \\='(macos-keychain-generic)))
     (auth-source-search :max 1)
 
 Here's another that looks for the first item in the internet
 MacOS Keychain collection whose label is `gnus':
 
\(let ((auth-sources \\='(macos-keychain-internet)))
+ (let ((auth-sources \\='(macos-keychain-internet)))
     (auth-source-search :max 1 :label \"gnus\")
 
 And this one looks for the first item in the internet keychain
 entries for git.gnus.org:
 
\(let ((auth-sources \\='(macos-keychain-internet\")))
+ (let ((auth-sources \\='(macos-keychain-internet\")))
     (auth-source-search :max 1 :host \"git.gnus.org\"))
 "
   ;; TODO
index 8ad81c9fc3ee28d8c337663e34ddd04461777fd7..44aff772402bb9cba6da5e94e649a7e61a11a5c7 100644 (file)
@@ -5516,7 +5516,7 @@ If no internal viewer is available, use an external viewer."
         (mm-display-part handle nil t))))))
 
 (defun gnus-mime-action-on-part (&optional action)
-  "Do something with the MIME attachment at \(point\)."
+  "Do something with the MIME attachment at (point)."
   (interactive
    (list (gnus-completing-read "Action" (mapcar 'car gnus-mime-action-alist) t)))
   (gnus-article-check-buffer)
@@ -5992,7 +5992,7 @@ If t, it overrides nil values of
   "Display \"multipart/related\" parts as  \"multipart/mixed\".
 
 If displaying \"text/html\" is discouraged \(see
-`mm-discouraged-alternatives'\) images or other material inside a
+`mm-discouraged-alternatives') images or other material inside a
 \"multipart/related\" part might be overlooked when this variable is nil."
   :version "22.1"
   :group 'gnus-article-mime
@@ -7545,7 +7545,7 @@ must return `mid', `mail', `invalid' or `ask'."
     (10.0  . "^[^0-9]+@")
     (3.0   . "^[^0-9]+[0-9][0-9]?[0-9]?@")
     ;;      ^[^0-9]+[0-9]{1,3}\@ digits only at end of local part
-    (3.0   . "\@stud")
+    (3.0   . "@stud")
     ;;
     (2.0   . "[a-z][a-z][._-][A-Z][a-z].*@")
     ;;
@@ -7553,7 +7553,7 @@ must return `mid', `mail', `invalid' or `ask'."
     (0.5   . "^[A-Z][a-z][a-z]")
     (1.5   . "^[A-Z][a-z][A-Z][a-z][^a-z]") ;; ^[A-Z][a-z]{3,3}
     (2.0   . "^[A-Z][a-z][A-Z][a-z][a-z][^a-z]")) ;; ^[A-Z][a-z]{4,4}
-  "An alist of \(RATE . REGEXP\) pairs for `gnus-button-mid-or-mail-heuristic'.
+  "An alist of (RATE . REGEXP) pairs for `gnus-button-mid-or-mail-heuristic'.
 
 A negative RATE indicates a message IDs, whereas a positive indicates a mail
 address.  The REGEXP is processed with `case-fold-search' set to nil."
@@ -7612,9 +7612,9 @@ address, `ask' if unsure and `invalid' if the string is invalid."
          (gnus-message
           9 "Many digits in `%s', rate `%s', result `%s'."
           mid-or-mail rate result))
-        ((string-match "[^aeiouy][^aeiouy][^aeiouy][^aeiouy]+.*\@"
+        ((string-match "[^aeiouy][^aeiouy][^aeiouy][^aeiouy]+.*@"
                        mid-or-mail)
-         ;; Too few vowels [^aeiouy]{4,}.*\@
+         ;; Too few vowels [^aeiouy]{4,}.*@
          (setq result (+ result -5.0))
          (gnus-message
           9 "Few vowels in `%s', rate `%s', result `%s'."
@@ -7724,7 +7724,7 @@ Calls `describe-variable' or `describe-function'."
   "Call `locate-library' when pushing the corresponding URL button."
   (gnus-message 9 "url=`%s'" url)
   (let* ((lib (locate-library url))
-        (file (gnus-replace-in-string (or lib "") "\.elc" ".el")))
+        (file (gnus-replace-in-string (or lib "") "\\.elc" ".el")))
     (if (not lib)
        (gnus-message 1 "Cannot locale library `%s'." url)
       (find-file-read-only file))))
@@ -8113,7 +8113,7 @@ url is put as the `gnus-button-url' overlay property on the button."
                                              (< (match-end 0) start))
                                     (regexp-quote (match-string 0)))
                                   "\
-\[\t ]*\\(?:\\([^\t\n \">]+\\)[\t ]*$\\|\\([^\t\n \">]*\\)[\t ]*"
+[\t ]*\\(?:\\([^\t\n \">]+\\)[\t ]*$\\|\\([^\t\n \">]*\\)[\t ]*"
                                   delim "\\)"))
                     (while (progn
                              (forward-line 1)
index e26c78b65c5dc1815e860a7c4155e4010547bc2d..3e4807cd7ce47a5840671f95cf9bda889ad5a1ab 100644 (file)
@@ -101,7 +101,7 @@ List of details is defined in `gnus-bookmark-bookmark-inline-details'.
 This may result in truncated bookmark names.  To disable this, put the
 following in your `.emacs' file:
 
-\(setq gnus-bookmark-bmenu-toggle-infos nil\)"
+\(setq gnus-bookmark-bmenu-toggle-infos nil)"
   :type 'boolean
   :group 'gnus-bookmark)
 
@@ -118,7 +118,7 @@ You can toggle whether details are shown with \\<gnus-bookmark-bmenu-mode-map>\\
 
 (defcustom gnus-bookmark-bookmark-inline-details '(author)
   "Details to be shown with `gnus-bookmark-bmenu-toggle-infos'.
-The default value is \(subject\)."
+The default value is \(subject)."
   :type '(list :tag "Gnus bookmark details"
               (set :inline t
                    (const :tag "Author" author)
@@ -131,7 +131,7 @@ The default value is \(subject\)."
 (defcustom gnus-bookmark-bookmark-details
   '(author subject date group annotation)
   "Details to be shown with `gnus-bookmark-bmenu-show-details'.
-The default value is \(author subject date group annotation\)."
+The default value is \(author subject date group annotation)."
   :type '(list :tag "Gnus bookmark details"
               (set :inline t
                    (const :tag "Author" author)
@@ -160,17 +160,17 @@ You should never need to change this.")
   "Association list of Gnus bookmarks and their records.
 The format of the alist is
 
-     \(BMK1 BMK2 ...\)
+     (BMK1 BMK2 ...)
 
 where each BMK is of the form
 
 \(NAME
-  \(group . GROUP\)
-  \(message-id . MESSAGE-ID\)
-  \(author . AUTHOR\)
-  \(date . DATE\)
-  \(subject . SUBJECT\)
-  \(annotation . ANNOTATION\)\)
+  (group . GROUP)
+  (message-id . MESSAGE-ID)
+  (author . AUTHOR)
+  (date . DATE)
+  (subject . SUBJECT)
+  (annotation . ANNOTATION))
 
 So the cdr of each bookmark is an alist too.")
 
@@ -432,7 +432,7 @@ That is, all information but the name."
   (car (cdr (gnus-bookmark-get-bookmark bookmark))))
 
 (defun gnus-bookmark-name-from-full-record (full-record)
-  "Return name of FULL-RECORD \(an alist element instead of a string\)."
+  "Return name of FULL-RECORD (an alist element instead of a string)."
   (car full-record))
 
 (defvar gnus-bookmark-bmenu-bookmark-column nil)
@@ -484,7 +484,7 @@ Gnus bookmarks names preceded by a \"*\" have annotations.
   Also show bookmarks marked using m in other windows.
 \\[gnus-bookmark-bmenu-toggle-infos] -- toggle displaying of details (they may obscure long bookmark names).
 \\[gnus-bookmark-bmenu-locate] -- display (in minibuffer) location of this bookmark.
-\\[gnus-bookmark-bmenu-rename] -- rename this bookmark \(prompts for new name\).
+\\[gnus-bookmark-bmenu-rename] -- rename this bookmark (prompts for new name).
 \\[gnus-bookmark-bmenu-delete] -- mark this bookmark to be deleted, and move down.
 \\[gnus-bookmark-bmenu-delete-backwards] -- mark this bookmark to be deleted, and move up.
 \\[gnus-bookmark-bmenu-execute-deletions] -- delete bookmarks marked with `\\[gnus-bookmark-bmenu-delete]'.
@@ -806,7 +806,7 @@ command."
 Removes only the first instance of a bookmark with that name.  If
 there are one or more other bookmarks with the same name, they will
 not be deleted.  Defaults to the \"current\" bookmark \(that is, the
-one most recently used in this file, if any\).
+one most recently used in this file, if any).
 Optional second arg BATCH means don't update the bookmark list buffer,
 probably because we were called from there."
   (gnus-bookmark-maybe-load-default-file)
index 93b7a1ba6353f6ae66c1d00b70de2964890aa037..9b8cbc3589d328ce04233eec46992c050a20635d 100644 (file)
@@ -436,7 +436,7 @@ to the groups in this topic, then edit the value to suit your taste."
                                        :greedy t
                                        :tag "Agent Parameters"
                                        :format "%t:\n%h%v"
-                                       :doc "These agent parameters are
+                                       :doc "These agent parameters are
 recognized by Gnus.  They control article selection and expiration for
 use in the unplugged cache.  Check the [ ] for the parameters you want
 to apply to this group or to the groups in this topic, then edit the
index ad49824f028613d276385b32562955d57d8fca62..b1a4933ebf15b7ad25df86812b15e13501a64959 100644 (file)
@@ -155,7 +155,7 @@ list."
                         (function-item gnus-group-sort-by-rank)
                         (function :tag "other" nil))))
 
-(defcustom gnus-group-line-format "%M\%S\%p\%P\%5y:%B%(%g%)\n"
+(defcustom gnus-group-line-format "%M\ %S\ %p\ %P\ %5y:%B%(%g%)\n"
   "*Format of group lines.
 It works along the same lines as a normal formatting string,
 with some simple extensions.
@@ -213,7 +213,7 @@ See Info node `(gnus)Formatting Variables'."
   :group 'gnus-group-visual
   :type 'string)
 
-(defcustom gnus-group-mode-line-format "Gnus: %%b {%M\%:%S}"
+(defcustom gnus-group-mode-line-format "Gnus: %%b {%M\ %:%S}"
   "*The format specification for the group mode line.
 It works along the same lines as a normal formatting string,
 with some simple extensions:
@@ -445,7 +445,7 @@ If non-nil, the value should be a string or an alist.  If it is a string,
 e.g. \"nnml:\", in which case `gnus-group-jump-to-group' offers \"Group:
 nnml:\" in the minibuffer prompt.
 
-If it is an alist, it must consist of \(NUMBER .  PROMPT\) pairs, for example:
+If it is an alist, it must consist of \(NUMBER .  PROMPT) pairs, for example:
 \((1 .  \"\") (2 .  \"nnfolder+archive:\")).  The element with number 0 is
 used when no prefix argument is given to `gnus-group-jump-to-group'."
   :version "22.1"
@@ -2174,7 +2174,7 @@ be permanent."
          (gnus-group-decoded-name group)))
     (let ((regexp "[][\C-@-\t\v-*,/:-@\\^`{-\C-?]*\
 \\(nn[a-z]+\\(?:\\+[^][\C-@-*,/:-@\\^`{-\C-?]+\\)?:\
-\[^][\C-@-*,./:-@\\^`{-\C-?]+\\(?:\\.[^][\C-@-*,./:-@\\^`{-\C-?]+\\)*\
+[^][\C-@-*,./:-@\\^`{-\C-?]+\\(?:\\.[^][\C-@-*,./:-@\\^`{-\C-?]+\\)*\
 \\|[^][\C-@-*,./:-@\\^`{-\C-?]+\\(?:\\.[^][\C-@-*,./:-@\\^`{-\C-?]+\\)+\\)")
          (start (point))
          (case-fold-search nil))
@@ -2435,7 +2435,7 @@ Valid input formats include:
      ;; URLs providing `group', `start' and `range':
      ((string-match
        ;; http://thread.gmane.org/gmane.emacs.devel/86326/focus=86525
-       "^http://thread\.gmane\.org/\\([^/]+\\)/\\([0-9]+\\)/focus=\\([0-9]+\\)$"
+       "^http://thread\\.gmane\\.org/\\([^/]+\\)/\\([0-9]+\\)/focus=\\([0-9]+\\)$"
        url)
       (setq group (match-string 1 url)
            start (string-to-number (match-string 2 url))
@@ -2446,15 +2446,15 @@ Valid input formats include:
      ;; URLs providing `group' and `start':
      ((or (string-match
           ;; http://article.gmane.org/gmane.comp.gnu.make.bugs/3584
-          "^http://\\(?:thread\\|article\\|permalink\\)\.gmane\.org/\\([^/]+\\)/\\([0-9]+\\)"
+          "^http://\\(?:thread\\|article\\|permalink\\)\\.gmane\\.org/\\([^/]+\\)/\\([0-9]+\\)"
           url)
          (string-match
           ;; Don't advertise these in the doc string yet:
-          "^\\(?:nntp\\|news\\)://news\.gmane\.org/\\([^/]+\\)/\\([0-9]+\\)"
+          "^\\(?:nntp\\|news\\)://news\\.gmane\\.org/\\([^/]+\\)/\\([0-9]+\\)"
           url)
          (string-match
           ;; http://news.gmane.org/group/gmane.emacs.gnus.general/thread=65099/force_load=t
-          "^http://news\.gmane\.org/group/\\([^/]+\\)/thread=\\([0-9]+\\)"
+          "^http://news\\.gmane\\.org/group/\\([^/]+\\)/thread=\\([0-9]+\\)"
           url))
       (setq group (match-string 1 url)
            start (string-to-number (match-string 2 url))))
index 56166f2fca292bccaa06437e73ce2a5305384560..37a5d6150db1af7ea5cce5047b79be8f9c5ca37b 100644 (file)
@@ -100,7 +100,7 @@ See `gnus-group-split-fancy' for more information.
   "Uses information from group parameters in order to split mail.
 It can be embedded into `nnmail-split-fancy' lists with the SPLIT
 
-\(: gnus-group-split-fancy GROUPS NO-CROSSPOST CATCH-ALL\)
+\(: gnus-group-split-fancy GROUPS NO-CROSSPOST CATCH-ALL)
 
 GROUPS may be a regular expression or a list of group names, that will
 be used to select candidate groups.  If it is omitted or nil, all
index 23c79cbdb151523d698959fba8aebbb2bba9a0aa..77ff428e1f14c9b1007207cfdfecc95b9095ee23 100644 (file)
@@ -251,7 +251,7 @@ In order to prevent constant pruning, we prune back to a number
 somewhat less than the maximum size.  This option controls
 exactly how much less.  For example, given a maximum size of
 50000 and a prune factor of 0.1, the pruning process will try to
-cut the registry back to \(- 50000 \(* 50000 0.1\)\) -> 45000
+cut the registry back to \(- 50000 \(* 50000 0.1)) -> 45000
 entries.  The pruning process is constrained by the presence of
 \"precious\" entries."
   :version "25.1"
index 5776b0a569fec609ce2255ca5ac3a160b34c1f89..bca5f43cd5f8c99ad64108514c03011a135a3d77 100644 (file)
@@ -62,7 +62,7 @@
   :group 'gnus-summary-pick)
 
 (defcustom gnus-summary-pick-line-format
-  "%-5P %U\%R\%z\%I\%(%[%4L: %-23,23n%]%) %s\n"
+  "%-5P %U\ %R\ %z\ %I\ %(%[%4L: %-23,23n%]%) %s\n"
   "*The format specification of the lines in pick buffers.
 It accepts the same format specs that `gnus-summary-line-format' does."
   :type 'string
index cde93764cac95ec3dc7485af746996c6cc2c285c..2a8ea3ed2014a842b98bda11d83c076d1dddea9d 100644 (file)
@@ -80,7 +80,7 @@ formatting characters are recognized:
 (defun gnus-sieve-update ()
   "Update the Sieve script in gnus-sieve-file, by replacing the region
 between gnus-sieve-region-start and gnus-sieve-region-end with
-\(gnus-sieve-script gnus-sieve-select-method gnus-sieve-crosspost\), then
+\(gnus-sieve-script gnus-sieve-select-method gnus-sieve-crosspost), then
 execute gnus-sieve-update-shell-command.
 See the documentation for these variables and functions for details."
   (interactive)
@@ -97,7 +97,7 @@ See the documentation for these variables and functions for details."
 (defun gnus-sieve-generate ()
   "Generate the Sieve script in gnus-sieve-file, by replacing the region
 between gnus-sieve-region-start and gnus-sieve-region-end with
-\(gnus-sieve-script gnus-sieve-select-method gnus-sieve-crosspost\).
+\(gnus-sieve-script gnus-sieve-select-method gnus-sieve-crosspost).
 See the documentation for these variables and functions for details."
   (interactive)
   (require 'sieve)
@@ -195,9 +195,9 @@ For example:
 
 (defun gnus-sieve-script (&optional method crosspost)
   "Generate a Sieve script based on groups with select method METHOD
-\(or all groups if nil\).  Only groups having a `sieve' parameter are
+\(or all groups if nil).  Only groups having a `sieve' parameter are
 considered.  This parameter should contain an elisp test
-\(see the documentation of gnus-sieve-test for details\).  For each
+\(see the documentation of gnus-sieve-test for details).  For each
 such group, a Sieve IF control structure is generated, having the
 test as the condition and { fileinto \"group.name\"; } as the body.
 
index 215eac88aef131ce326ae9f93fbab7c610a2b351..40e2dcf92fdd858ce9689fcac296e6c3165b759a 100644 (file)
@@ -1486,7 +1486,7 @@ sure of changing the value of `foo'."
 (defvar gnus-directory-sep-char-regexp "/"
   "The regexp of directory separator character.
 If you find some problem with the directory separator character, try
-\"[/\\\\\]\" for some systems.")
+\"[/\\\\]\" for some systems.")
 
 (defun gnus-url-unhex (x)
   (if (> x ?9)
index ea26216faca750d83bc273f0daa94a161cdc35ca..a2913ac9fdd00a82151914aad6c67ce0901237a9 100644 (file)
@@ -1361,7 +1361,7 @@ group (or nil) as a parameter.
 If you want to save your mail in one group and the news articles you
 write in another group, you could say something like:
 
\(setq gnus-message-archive-group
 (setq gnus-message-archive-group
        \\='((if (message-news-p)
              \"misc-news\"
            \"misc-mail\")))
@@ -2517,10 +2517,10 @@ This should be an alist for Emacs, or a plist for XEmacs."
   "Which information should be exposed in the User-Agent header.
 
 Can be a list of symbols or a string.  Valid symbols are `gnus'
-\(show Gnus version\) and `emacs' \(show Emacs version\).  In
+\(show Gnus version) and `emacs' \(show Emacs version).  In
 addition to the Emacs version, you can add `codename' \(show
-\(S\)XEmacs codename\) or either `config' \(show system
-configuration\) or `type' \(show system type\).  If you set it to
+\(S)XEmacs codename) or either `config' \(show system
+configuration) or `type' \(show system type).  If you set it to
 a string, be sure to use a valid format, see RFC 2616."
 
   :version "22.1"
index 5ede15b05384ded77dcf07dc9f124c57a3f40cc2..1b693d77983a7b6f60103147755cb649bac2850a 100644 (file)
@@ -367,7 +367,7 @@ few false positives here."
 
 (defcustom message-archive-header "X-No-Archive: Yes\n"
   "Header to insert when you don't want your article to be archived.
-Archives \(such as groups.google.com\) respect this header."
+Archives \(such as groups.google.com) respect this header."
   :version "22.1"
   :type 'string
   :link '(custom-manual "(message)Header Commands")
@@ -1200,7 +1200,7 @@ If stringp, use this; if non-nil, use no host name (user name only)."
 (defvar message-reply-headers nil
   "The headers of the current replied article.
 It is a vector of the following headers:
-\[number subject from date id references chars lines xref extra].")
+[number subject from date id references chars lines xref extra].")
 (defvar message-newsreader nil)
 (defvar message-mailer nil)
 (defvar message-sent-message-via nil)
@@ -1303,7 +1303,7 @@ actually occur."
   "Alist of ways to send outgoing messages.
 Each element has the form
 
-  \(TYPE PREDICATE FUNCTION)
+  (TYPE PREDICATE FUNCTION)
 
 where TYPE is a symbol that names the method; PREDICATE is a function
 called without any parameters to determine whether the message is
@@ -8329,7 +8329,7 @@ From headers in the original article."
                     (list message-hidden-headers)
                   message-hidden-headers))
        (inhibit-point-motion-hooks t)
-       (after-change-functions nil)
+       (inhibit-modification-hooks t)
        (end-of-headers (point-min)))
     (when regexps
       (save-excursion
index 3d5a15afedb97c00a7c6e665ca403f660343409d..327b0e6e86f3abd006419e03d8511133610a0f47 100644 (file)
@@ -1419,7 +1419,7 @@ Return t if meta tag is added or replaced."
        (goto-char (point-min))
        (if (re-search-forward "\
 <meta\\s-+http-equiv=[\"']?content-type[\"']?\\s-+content=[\"']\
-text/\\(\\sw+\\)\\(?:\;\\s-*charset=\\([^\"'>]+\\)\\)?[^>]*>" nil t)
+text/\\(\\sw+\\)\\(?:;\\s-*charset=\\([^\"'>]+\\)\\)?[^>]*>" nil t)
            (if (and (not force-charset)
                     (match-beginning 2)
                     (string-match "\\`html\\'" (match-string 1)))
index 8304f6f6a38e797f67393b4ae85d1225e2a0048a..3d1515e84734a1562b1aad7ffa45cf3b69134f1a 100644 (file)
@@ -118,7 +118,7 @@ This can be either \"inline\" or \"attachment\".")
      mm-uu-shar-extract)
     (forward
      ;; Thanks to Edward J. Sabol <sabol@alderaan.gsfc.nasa.gov> and
-     ;; Peter von der Ah\'e <pahe@daimi.au.dk>
+     ;; Peter von der Ahé <pahe@daimi.au.dk>
      "^-+ \\(Start of \\)?Forwarded message"
      "^-+ End \\(of \\)?forwarded message"
      mm-uu-forward-extract
@@ -771,4 +771,8 @@ Assume text has been decoded if DECODED is non-nil."
 
 (provide 'mm-uu)
 
+;; Local Variables:
+;; coding: utf-8
+;; End:
+
 ;;; mm-uu.el ends here
index 70d803faf541391eef92a8f2df1bf3db10ee1684..cca341875e0c4ec39b7e79cc0d7d746bf90b4993 100644 (file)
@@ -742,7 +742,7 @@ from the document.")
                                   nil t)
            (setq subject (concat (match-string 1) subject))
            (setq from (concat (match-string 2) " " from))))))
-    (while (and from (string-match "(\[^)\]*)" from))
+    (while (and from (string-match "([^)]*)" from))
       (setq from (replace-match "" t t from)))
     (insert "From: "  (or from "unknown")
            "\nSubject: " (or subject "(no subject)") "\n")
index c88f4afa7dcc0a7daa4543b1ba5a6d8fd3934503..0d2d453df3ef64fdb603012a635498a9f73d70e3 100644 (file)
@@ -66,7 +66,7 @@ they will keep on jabbering all the time."
   "*Max length of the head of articles.
 
 Value is an integer, nil, or t.  nil means read in chunks of a file
-indefinitely until a complete head is found\; t means always read the
+indefinitely until a complete head is found; t means always read the
 entire file immediately, disregarding `nnheader-head-chop-length'.
 
 Integer values will in effect be rounded up to the nearest multiple of
index 5b72b52079d4d874f4f9fb3287daf5fbcf64ae79..3d8926b69259685040b88fddd8124ae83be54f62 100644 (file)
@@ -147,7 +147,7 @@ by nnmaildir-request-article.")
 
 ;; A NOV structure looks like this (must be prin1-able, so no defstruct):
 ["subject\tfrom\tdate"
- "references\tchars\lines"
+ "references\tchars\tlines"
  "To: you\tIn-Reply-To: <your.mess@ge>"
  (12345 67890)     ;; modtime of the corresponding article file
  (to in-reply-to)] ;; contemporary value of nnmail-extra-headers
index 6c97cecdcdbd10f89740d035ee17b518773b0728..ec9a66614b48e1238e0b55d4326be6f0ed730efe 100644 (file)
@@ -175,7 +175,7 @@ This variable is used by the various nntp-open-via-* methods.")
   "*Whether both telnet client and server support the ENVIRON option.
 If non-nil, there will be no prompt for a login name.")
 
-(defvoo nntp-via-shell-prompt "bash\\|\$ *\r?$\\|> *\r?"
+(defvoo nntp-via-shell-prompt "bash\\|[$>] *\r?$"
   "*Regular expression to match the shell prompt on an intermediate host.
 This variable is used by the `nntp-open-via-telnet-and-telnet' method.")
 
@@ -1764,7 +1764,7 @@ If SEND-IF-FORCE, only send authinfo to the server if the
 (defvoo nntp-open-telnet-envuser nil
   "*If non-nil, telnet session (client and server both) will support the ENVIRON option and not prompt for login name.")
 
-(defvoo nntp-telnet-shell-prompt "bash\\|\$ *\r?$\\|> *\r?"
+(defvoo nntp-telnet-shell-prompt "bash\\|[$>] *\r?$"
   "*Regular expression to match the shell prompt on the remote machine.")
 
 (defvoo nntp-rlogin-program "rsh"
index 783ff36172bcd29a4ed5f7bcc115e9e0311a06c7..9f3f38175bc910f86985e8a9f05aa20bb5470883 100644 (file)
     :initform 0.1
     :type float
     :custom float
-    :documentation "Prune to \(:max-size * :prune-factor\) less
+    :documentation "Prune to (:max-size * :prune-factor) less
     than the :max-size limit.  Should be a float between 0 and 1.")
    (tracked :initarg :tracked
             :initform nil
@@ -222,9 +222,9 @@ When SET is not nil, set it for VAL (use t for an empty list)."
 
 (defmethod registry-search ((db registry-db) &rest spec)
   "Search for SPEC across the registry-db THIS.
-For example calling with :member \\='(a 1 2) will match entry \\='((a 3 1)).
-Calling with :all t (any non-nil value) will match all.
-Calling with :regex \\='\(a \"h.llo\") will match entry \\='((a \"hullo\" \"bye\").
+For example calling with `:member \\='(a 1 2)' will match entry \((a 3 1)).
+Calling with `:all t' (any non-nil value) will match all.
+Calling with `:regex \\='(a \"h.llo\")' will match entry \(a \"hullo\" \"bye\").
 The test order is to check :all first, then :member, then :regex."
   (when db
     (let ((all (plist-get spec :all))
@@ -331,7 +331,7 @@ Errors out if the key exists already."
   "Prunes the registry-db object DB.
 
 Attempts to prune the number of entries down to \(*
-:max-size :prune-factor\) less than the max-size limit, so
+:max-size :prune-factor) less than the max-size limit, so
 pruning doesn't need to happen on every save. Removes only
 entries without the :precious keys, so it may not be possible to
 reach the target limit.
index cab2f4e751c85efb018fb30a694cbecf4807933b..83bda2af8a98e44a31c0b0edb95207bc05388019 100644 (file)
 
 (defvar rfc1843-hzp-word-regexp
   "~\\({\\([\041-\167][\041-\176]\\| \\)+\\|\
-\[<>]\\([\041-\175][\041-\176]\\| \\)+\\)\\(~}\\|$\\)")
+[<>]\\([\041-\175][\041-\176]\\| \\)+\\)\\(~}\\|$\\)")
 
 (defvar rfc1843-hzp-word-regexp-strictly
   "~\\({\\([\041-\167][\041-\176]\\)+\\|\
-\[<>]\\([\041-\175][\041-\176]\\)+\\)\\(~}\\|$\\)")
+[<>]\\([\041-\175][\041-\176]\\)+\\)\\(~}\\|$\\)")
 
 (defcustom rfc1843-decode-loosely nil
   "Loosely check HZ encoding if non-nil.
index ea558d75a20b2df2904a58a6fe363e32fe36a98a..e8a377979ffb1e38601cc0c2c7269db57acd254c 100644 (file)
@@ -102,7 +102,7 @@ quoted-printable and base64 respectively.")
 
 (eval-and-compile ;; Necessary to hard code them in `rfc2047-decode-region'.
   (defconst rfc2047-encoded-word-regexp
-    "=\\?\\([^][\000-\040()<>@,\;:*\\\"/?.=]+\\)\\(?:\\*[^?]+\\)?\\?\
+    "=\\?\\([^][\000-\040()<>@,;:*\\\"/?.=]+\\)\\(?:\\*[^?]+\\)?\\?\
 \\(B\\?[+/0-9A-Za-z]*=*\
 \\|Q\\?[ ->@-~]*\
 \\)\\?="
@@ -112,7 +112,7 @@ quoted-printable and base64 respectively.")
     ;; the characters that those encodings may generally use.
     )
   (defconst rfc2047-encoded-word-regexp-loose
-    "=\\?\\([^][\000-\040()<>@,\;:*\\\"/?.=]+\\)\\(?:\\*[^?]+\\)?\\?\
+    "=\\?\\([^][\000-\040()<>@,;:*\\\"/?.=]+\\)\\(?:\\*[^?]+\\)?\\?\
 \\(B\\?[+/0-9A-Za-z]*=*\
 \\|Q\\?\\(?:\\?+[ -<>@-~]\\)?\\(?:[ ->@-~]+\\?+[ -<>@-~]\\)*[ ->@-~]*\\?*\
 \\)\\?="
index de680795a1095604d3a21114a4c42315b2a2ca0f..5871b08b35aa9584b92a363ea7ab604f89148cbd 100644 (file)
@@ -43,7 +43,7 @@ If you are using spam.el, consider setting gnus-spam-process-newsgroups
 or the gnus-group-spam-exit-processor-report-gmane group/topic parameter
 instead."
   :type '(radio (const nil)
-               (regexp :value "^nntp\+.*:gmane\."))
+               (regexp :value "^nntp\\+.*:gmane\\."))
   :group 'spam-report)
 
 (defcustom spam-report-gmane-use-article-number t
index 77ef21d4af1f653190dc9f17f85993fdf2dec233..945b4d523cc28a5a6012a7bbedc1016c3cf7b198 100644 (file)
@@ -178,7 +178,7 @@ if the variable `help-downcase-arguments' is non-nil."
         (skip-chars-forward "^ ")
         (while next
           (or opt (not (looking-at " &")) (setq opt t))
-          (if (not (re-search-forward " \\([\\[(]*\\)\\([^] &)\.]+\\)" nil t))
+          (if (not (re-search-forward " \\([\\[(]*\\)\\([^] &).]+\\)" nil t))
               (setq next nil)
             (setq args (cons (match-string 2) args))
             (when (and opt (string= (match-string 1) "("))
index 66df6b08037682041379260146868cfd88dfebfa..3387628fb8a326f6f34933f290846c8aaf9ca89b 100644 (file)
@@ -355,7 +355,7 @@ With argument, display info only for the selected version."
                   (while (re-search-forward
                           (if (member file '("NEWS.18" "NEWS.1-17"))
                               "Changes in \\(?:Emacs\\|version\\)?[ \t]*\\([0-9]+\\(?:\\.[0-9]+\\)?\\)"
-                            "^\* [^0-9\n]*\\([0-9]+\\.[0-9]+\\)") nil t)
+                            "^\\* [^0-9\n]*\\([0-9]+\\.[0-9]+\\)") nil t)
                     (setq res (cons (match-string-no-properties 1) res)))))
               (cons "NEWS"
                     (directory-files data-directory nil
@@ -392,7 +392,7 @@ With argument, display info only for the selected version."
       (when (re-search-forward
             (concat (if (< vn 19)
                         "Changes in Emacs[ \t]*"
-                      "^\* [^0-9\n]*") version "$")
+                      "^\\* [^0-9\n]*") version "$")
             nil t)
        (beginning-of-line)
        (narrow-to-region
@@ -402,7 +402,7 @@ With argument, display info only for the selected version."
                             (re-search-forward
                              (if (< vn 19)
                                  "Changes in \\(?:Emacs\\|version\\)?[ \t]*\\([0-9]+\\(?:\\.[0-9]+\\)?\\)"
-                               "^\* [^0-9\n]*\\([0-9]+\\.[0-9]+\\)") nil t))
+                               "^\\* [^0-9\n]*\\([0-9]+\\.[0-9]+\\)") nil t))
                       (equal (match-string-no-properties 1) version)))
           (or res (goto-char (point-max)))
           (beginning-of-line)
index b7d3b344acadd4834444fecfe225c7ee2955f852..6b7f2caed1e9a5fcea4db2a4a0e8c867eb5b1041 100644 (file)
@@ -810,7 +810,7 @@ Loads the variable `hfy-rgb-txt-colour-map', which is used by
 `hfy-fallback-colour-values'."
   (interactive
    (list
-    (read-file-name "rgb.txt \(equivalent\) file: " "" nil t (hfy-rgb-file))))
+    (read-file-name "rgb.txt (equivalent) file: " "" nil t (hfy-rgb-file))))
   (let ((rgb-buffer   nil)
        (end-of-rgb     0)
        (rgb-txt      nil))
index 74cdfe13f58f3307069488732190c7a8a87f31da..0a0a0b346c08222d06867f6bd184dd373fff3aa1 100644 (file)
@@ -1140,7 +1140,7 @@ See also `hfy-face-to-css'."
 
 (defvar hfy-face-to-css 'hfy-face-to-css-default
   "Handler for mapping faces  to styles.
-The signature of the handler is of the form \(lambda (FN) ...\).
+The signature of the handler is of the form \(lambda (FN) ...).
 FN is a font or `defface' specification (cf
 `face-attr-construct').  The handler should return a cons cell of
 the form (STYLE-NAME . STYLE-SPEC).
@@ -1598,7 +1598,7 @@ information."
 (defvar hfy-begin-span-handler 'hfy-begin-span
   "Handler to begin a span of text.
 The signature of the handler is \(lambda (STYLE TEXT-BLOCK
-TEXT-ID TEXT-BEGINS-BLOCK-P) ...\).  The handler must insert
+TEXT-ID TEXT-BEGINS-BLOCK-P) ...).  The handler must insert
 appropriate tags to begin a span of text.
 
 STYLE is the name of the style that begins at point.  It is
@@ -1626,7 +1626,7 @@ The default handler is `hfy-begin-span'.")
 
 (defvar hfy-end-span-handler 'hfy-end-span
   "Handler to end a span of text.
-The signature of the handler is \(lambda () ...\).  The handler
+The signature of the handler is \(lambda () ...).  The handler
 must insert appropriate tags to end a span of text.
 
 The default handler is `hfy-end-span'.")
@@ -2412,7 +2412,7 @@ You may also want to set `hfy-page-header' and `hfy-page-footer'."
     (load file 'NOERROR nil nil) ))
 
 \f
-;;;### (autoloads nil "hfy-cmap" "hfy-cmap.el" "ce07a28b93c09032fd6b225ad74be0df")
+;;;### (autoloads nil "hfy-cmap" "hfy-cmap.el" "1fb78b15b18622256262c7246b2a3520")
 ;;; Generated autoloads from hfy-cmap.el
 
 (autoload 'htmlfontify-load-rgb-file "hfy-cmap" "\
index 718471b7993bc06f3679947c67111e3f3e364624..5065b661101aa89391e1df6501f3aebdde6896b1 100644 (file)
@@ -1785,7 +1785,7 @@ If point is on a group name, this function operates on that group."
      (let ((procs 0)
           (files 0))
        (dolist (string strings)
-        (if (string-match "\\(\?:\\`(\[\[:ascii:\]\]\+)\\)" string)
+        (if (string-match "\\(?:\\`([[:ascii:]]+)\\)" string)
             (progn (setq procs (1+ procs))
                    (if (< (match-end 0) (length string))
                        (setq files (1+ files))))
@@ -2037,7 +2037,7 @@ the value of point at the beginning of the line for that buffer."
 (defun ibuffer-update-title-and-summary (format)
   (ibuffer-assert-ibuffer-mode)
   ;; Don't do funky font-lock stuff here
-  (let ((after-change-functions nil))
+  (let ((inhibit-modification-hooks t))
     (if (get-text-property (point-min) 'ibuffer-title)
        (delete-region (point-min)
                       (next-single-property-change
@@ -2244,7 +2244,7 @@ If optional arg SILENT is non-nil, do not display progress messages."
         (orig (count-lines (point-min) (point)))
         ;; Inhibit font-lock caching tricks, since we're modifying the
         ;; entire buffer at once
-        (after-change-functions nil)
+        (inhibit-modification-hooks t)
         (ext-loaded (featurep 'ibuf-ext))
         (bgroups (if ext-loaded
                      (ibuffer-generate-filter-groups bmarklist)
index 13b6d52e75c8b3375c15340d4d08e520bfe54183..6ad354c58f2baf19c4603a626558c15e0298a451 100644 (file)
@@ -3777,13 +3777,13 @@ frame, rather than all frames, regardless of value of `ido-all-frames'."
                       (not (and (eq ido-cur-item 'buffer)
                                 ido-buffer-disable-smart-matches))
                       (not ido-enable-regexp)
-                      (not (string-match "\$\\'" rex0))
+                      (not (string-match "$\\'" rex0))
                       (concat "\\`" rex0 (if slash "/" "") "\\'")))
         (suffix-re (and do-full slash
                         (not (and (eq ido-cur-item 'buffer)
                                   ido-buffer-disable-smart-matches))
                         (not ido-enable-regexp)
-                        (not (string-match "\$\\'" rex0))
+                        (not (string-match "$\\'" rex0))
                         (concat rex0 "/\\'")))
         (prefix-re (and full-re (not ido-enable-prefix)
                         (concat "\\`" rexq)))
index 013fc5ae39361783ea5b5f69770ae871fcade6ca..c5efb338152b819157715ed8da550b1d91b7f3d2 100644 (file)
@@ -1910,7 +1910,7 @@ overwritten.  This confirmation can be turned off using
       (message "No image at point")
     (let ((file (image-dired-original-file-name))
           command)
-      (if (not (string-match "\.[jJ][pP[eE]?[gG]$" file))
+      (if (not (string-match "\\.[jJ][pP[eE]?[gG]$" file))
           (error "Only JPEG images can be rotated!"))
       (setq command (format-spec
                      image-dired-cmd-rotate-original-options
@@ -1950,7 +1950,7 @@ for traceability.  The format of the returned file name is
 YYYY_MM_DD_HH_MM_DD_ORIG_FILE_NAME.jpg.  Used from
 `image-dired-copy-with-exif-file-name'."
   (let (data no-exif-data-found)
-    (if (not (string-match "\.[Jj][Pp][Ee]?[Gg]$" (expand-file-name file)))
+    (if (not (string-match "\\.[Jj][Pp][Ee]?[Gg]$" (expand-file-name file)))
         (progn
           (setq no-exif-data-found t)
           (setq data
@@ -2572,7 +2572,7 @@ tags to their respective image file.  Internal function used by
 ;;               (let ((fattribs (file-attributes f)))
 ;;                 ;; Get last access time and file size
 ;;                 `(,(nth 4 fattribs) ,(nth 7 fattribs) ,f)))
-;;             (directory-files (image-dired-dir) t ".+\.thumb\..+$"))
+;;             (directory-files (image-dired-dir) t ".+\\.thumb\\..+$"))
 ;;            ;; Sort function. Compare time between two files.
 ;;            (lambda (l1 l2)
 ;;               (time-less-p (car l1) (car l2)))))
index 0c62088ca5dc771c20f57edfc396c1c5af20ff3d..d557e39aac28b151713eb71082bbe7694f960fb4 100644 (file)
@@ -34,7 +34,7 @@
 
 (defconst image-type-header-regexps
   `(("\\`/[\t\n\r ]*\\*.*XPM.\\*/" . xpm)
-    ("\\`P[1-6]\\\(?:\
+    ("\\`P[1-6]\\(?:\
 \\(?:\\(?:#[^\r\n]*[\r\n]\\)?[[:space:]]\\)+\
 \\(?:\\(?:#[^\r\n]*[\r\n]\\)?[0-9]\\)+\
 \\)\\{2\\}" . pbm)
index 6168a0c2660d73f8686ae84a56e1c204284fec1e..70c30c3e7a6dff3912c976236a1c7959b4836910 100644 (file)
@@ -142,7 +142,7 @@ OTHER-MODES is a list of cross references to other help modes.")
   "Add or update a help specification.
 Function arguments are specified as keyword/argument pairs:
 
-    \(KEYWORD . ARGUMENT)
+    (KEYWORD . ARGUMENT)
 
 KEYWORD is either `:topic', `:mode', `:regexp', `:ignore-case',
  `:doc-spec', `:parse-rule', or `:other-modes'.
index a5a2c559e0dc49edb821109c6238059609f289cd..bd12d56829108a2b5400afe3cf88d51c4eb3bb39 100644 (file)
@@ -3838,7 +3838,7 @@ START is a regular expression which will match the
     beginning of the tokens delimited string.
 ALL is a regular expression with a single
     parenthesized subpattern which is the token to be
-    returned.  E.g. `{\(.*\)}' would return any string
+    returned.  E.g. `{(.*)}' would return any string
     enclosed in braces around POS.
 ERRORSTRING optional fourth argument, controls action on no match:
     nil: return nil
@@ -4720,28 +4720,28 @@ first line or header line, and for breadcrumb links.")
       ;; Fontify titles
       (goto-char (point-min))
       (when (and font-lock-mode not-fontified-p)
-        (while (and (re-search-forward "\n\\([^ \t\n].+\\)\n\\(\\*\\*+\\|==+\\|--+\\|\\.\\.+\\)$"
-                                       nil t)
-                    ;; Only consider it as an underlined title if the ASCII
-                    ;; underline has the same size as the text.  A typical
-                    ;; counter example is when a continuation "..." is alone
-                    ;; on a line.
-                    (= (string-width (match-string 1))
-                       (string-width (match-string 2))))
-          (let* ((c (preceding-char))
-                 (face
-                  (cond ((= c ?*) 'info-title-1)
-                        ((= c ?=) 'info-title-2)
-                        ((= c ?-) 'info-title-3)
-                        (t        'info-title-4))))
-            (put-text-property (match-beginning 1) (match-end 1)
-                               'font-lock-face face))
-          ;; This is a serious problem for trying to handle multiple
-          ;; frame types at once.  We want this text to be invisible
-          ;; on frames that can display the font above.
-          (when (memq (framep (selected-frame)) '(x pc w32 ns))
-            (add-text-properties (1- (match-beginning 2)) (match-end 2)
-                                 '(invisible t front-sticky nil rear-nonsticky t)))))
+        (while (re-search-forward "\n\\([^ \t\n].+\\)\n\\(\\*\\*+\\|==+\\|--+\\|\\.\\.+\\)$"
+                                  nil t)
+          ;; Only consider it as an underlined title if the ASCII
+          ;; underline has the same size as the text.  A typical
+          ;; counter example is when a continuation "..." is alone
+          ;; on a line.
+          (when (= (string-width (match-string 1))
+                   (string-width (match-string 2)))
+            (let* ((c (preceding-char))
+                   (face
+                    (cond ((= c ?*) 'info-title-1)
+                          ((= c ?=) 'info-title-2)
+                          ((= c ?-) 'info-title-3)
+                          (t        'info-title-4))))
+              (put-text-property (match-beginning 1) (match-end 1)
+                                 'font-lock-face face))
+            ;; This is a serious problem for trying to handle multiple
+            ;; frame types at once.  We want this text to be invisible
+            ;; on frames that can display the font above.
+            (when (memq (framep (selected-frame)) '(x pc w32 ns))
+              (add-text-properties (1- (match-beginning 2)) (match-end 2)
+                                   '(invisible t front-sticky nil rear-nonsticky t))))))
 
       ;; Fontify cross references
       (goto-char (point-min))
index 31f841d7b56da6c8a3d0a684f3cf198e3c3dfbd1..92e55220375e969d37e6d5a929ca0e90b5255b71 100644 (file)
@@ -71,6 +71,7 @@
 
 (defun isearch-with-keyboard-coding ()
   (interactive)
+  ;; FIXME: What does this after-change-functions binding do here?
   (let ((after-change-functions '(isearch-exit-recursive-edit)))
     (recursive-edit))
   (exit-minibuffer))
index 61db03d9b76ebf4c8e40b1ed711f60cb369f943b..d662699c17c7670fc475614fcf53c28c5c969c73 100644 (file)
@@ -46,7 +46,7 @@
 (defvar iso-spanish-trans-tab
   '(
     ("~n" "ñ")
-    ("\([a-zA-Z]\)#" "\\1ñ")
+    ("([a-zA-Z])#" "\\1ñ")
     ("~N" "Ñ")
     ("\\([-a-zA-Z\"`]\\)\"u" "\\1ü")
     ("\\([-a-zA-Z\"`]\\)\"U" "\\1Ü")
index d598814a63aca3b079ccaed3ef42049be7aae317..29036ff796b95b94ba832d29f9955c5b29cc343f 100644 (file)
@@ -2271,7 +2271,7 @@ isn't changed if the display can render Unicode characters."
             (?\∨ "OR")
             (?\∩ "(U")
             (?\∪ ")U")
-            (?\∫ "\int ")
+            (?\∫ "\\int ")
             (?\∬ "DI")
             (?\∮ "Io")
             (?\∴ ".:")
index 4fd4b906b05b9389848dbb9045a0cabcf99b904d..0904ff93e232d82454719d38129dd02624c02b0e 100644 (file)
 ;; very frequently while editing multilingual text.  Now we can use
 ;; only two such keys: "\C-\\" and "\C-^", but the latter is not
 ;; convenient because it requires shifting on most keyboards.  An
-;; alternative is "\C-\]" which is now bound to `abort-recursive-edit'
+;; alternative is "\C-]" which is now bound to `abort-recursive-edit'
 ;; but it won't be used that frequently.
 (define-key global-map "\C-\\" 'toggle-input-method)
 
@@ -397,7 +397,7 @@ A coding system that requires automatic detection of text+encoding
 
 To prefer, for instance, utf-8, say the following:
 
-  \(prefer-coding-system \\='utf-8)"
+  (prefer-coding-system \\='utf-8)"
   (interactive "zPrefer coding system: ")
   (if (not (and coding-system (coding-system-p coding-system)))
       (error "Invalid coding system `%s'" coding-system))
@@ -1272,7 +1272,7 @@ This file contains a list of libraries of Emacs input methods (LEIM)
 in the format of Lisp expression for registering each input method.
 Emacs loads this file at startup time.")
 
-(defconst leim-list-header (format
+(defconst leim-list-header (format-message
 ";;; %s -- list of LEIM (Library of Emacs Input Method) -*-coding: utf-8;-*-
 ;;
 ;; This file is automatically generated.
@@ -1286,9 +1286,9 @@ Emacs loads this file at startup time.")
 ;;    INPUT-METHOD LANGUAGE-NAME ACTIVATE-FUNC
 ;;    TITLE DESCRIPTION
 ;;    ARG ...)
-;; See the function ‘register-input-method’ for the meanings of the arguments.
+;; See the function `register-input-method' for the meanings of the arguments.
 ;;
-;; If this directory is included in ‘load-path’, Emacs automatically
+;; If this directory is included in `load-path', Emacs automatically
 ;; loads this file at startup time.
 
 "
@@ -2413,12 +2413,12 @@ See `set-language-info-alist' for use in programs."
     ))
   "Alist of locale regexps vs the corresponding languages and coding systems.
 Each element has this form:
-  \(LOCALE-REGEXP LANG-ENV CODING-SYSTEM)
+  (LOCALE-REGEXP LANG-ENV CODING-SYSTEM)
 The first element whose LOCALE-REGEXP matches the start of a
 downcased locale specifies the LANG-ENV \(language environment)
 and CODING-SYSTEM corresponding to that locale.  If there is no
 appropriate language environment, the element may have this form:
-  \(LOCALE-REGEXP . LANG-ENV)
+  (LOCALE-REGEXP . LANG-ENV)
 In this case, LANG-ENV is one of generic language environments for an
 specific encoding such as \"Latin-1\" and \"UTF-8\".")
 
index f3aa70fd66c5cc36bc413753807001ecf243ce4d..b575c2b7db396f6cfe27c316d837540b1d91f222 100644 (file)
@@ -273,43 +273,48 @@ per-character basis, this may not be accurate."
        ((not enable-multibyte-characters)
         ;; Maybe there's a font for it, but we can't put it in the buffer.
         nil)
-       ((display-multi-font-p)
-        ;; On a window system, a character is displayable if we have
-        ;; a font for that character in the default face of the
-        ;; currently selected frame.
-        (car (internal-char-font nil char)))
        (t
-        ;; On a terminal, a character is displayable if the coding
-        ;; system for the terminal can encode it.
-        (let ((coding (terminal-coding-system)))
-          (when coding
-            (let ((cs-list (coding-system-get coding :charset-list)))
-              (cond
-                ((listp cs-list)
-                 (catch 'tag
-                   (mapc #'(lambda (charset)
-                             (if (encode-char char charset)
-                                 (throw 'tag charset)))
-                         cs-list)
-                   nil))
-                ((eq cs-list 'iso-2022)
-                 (catch 'tag2
-                   (mapc #'(lambda (charset)
-                             (if (and (plist-get (charset-plist charset)
-                                                 :iso-final-char)
-                                      (encode-char char charset))
-                                 (throw 'tag2 charset)))
-                         charset-list)
-                   nil))
-                ((eq cs-list 'emacs-mule)
-                 (catch 'tag3
-                   (mapc #'(lambda (charset)
-                             (if (and (plist-get (charset-plist charset)
-                                                 :emacs-mule-id)
-                                      (encode-char char charset))
-                                 (throw 'tag3 charset)))
-                         charset-list)
-                   nil)))))))))
+        (let ((font-glyph (internal-char-font nil char)))
+          (if font-glyph
+              (if (consp font-glyph)
+                  ;; On a window system, a character is displayable
+                  ;; if a font for that character is in the default
+                  ;; face of the currently selected frame.
+                  (car font-glyph)
+                ;; On a text terminal supporting glyph codes, CHAR is
+                ;; displayable if its glyph code is nonnegative.
+                (<= 0 font-glyph))
+            ;; On a text terminal without glyph codes, CHAR is displayable
+            ;; if the coding system for the terminal can encode it.
+            (let ((coding (terminal-coding-system)))
+              (when coding
+                (let ((cs-list (coding-system-get coding :charset-list)))
+                  (cond
+                   ((listp cs-list)
+                    (catch 'tag
+                      (mapc #'(lambda (charset)
+                                (if (encode-char char charset)
+                                    (throw 'tag charset)))
+                            cs-list)
+                      nil))
+                   ((eq cs-list 'iso-2022)
+                    (catch 'tag2
+                      (mapc #'(lambda (charset)
+                                (if (and (plist-get (charset-plist charset)
+                                                    :iso-final-char)
+                                         (encode-char char charset))
+                                    (throw 'tag2 charset)))
+                            charset-list)
+                      nil))
+                   ((eq cs-list 'emacs-mule)
+                    (catch 'tag3
+                      (mapc #'(lambda (charset)
+                                (if (and (plist-get (charset-plist charset)
+                                                    :emacs-mule-id)
+                                         (encode-char char charset))
+                                    (throw 'tag3 charset)))
+                            charset-list)
+                      nil)))))))))))
 
 (defun filepos-to-bufferpos--dos (byte f)
   (let ((eol-offset 0)
index 946f793731b45f495a08c3f098f4793834236311..af4c6e93e0be647e74602857d7b2147f38384946 100644 (file)
@@ -665,8 +665,8 @@ without any conversions.
 
 VALUE is the EOL (end-of-line) format of the coding system.  It must be
 one of `unix', `dos', `mac'.  The symbol `unix' means Unix-like EOL
-\(i.e. a single LF character), `dos' means DOS-like EOL \(i.e. a sequence
-of CR followed by LF), and `mac' means Mac-like EOL \(i.e. a single CR).
+\(i.e., a single LF character), `dos' means DOS-like EOL \(i.e., a sequence
+of CR followed by LF), and `mac' means Mac-like EOL \(i.e., a single CR).
 If omitted, Emacs detects the EOL format automatically when decoding.
 
 `:charset-list' (required if `:coding-type' is `charset' or `shift-jis')
index 01cbe1e5222434665610d7392f50093250ac2fed..18ebf91d505116a67dbda2d0d36a2e5c58641e05 100644 (file)
@@ -2,7 +2,7 @@
 
 ;; Copyright (C) 1997-1998, 2001-2015 Free Software Foundation, Inc.
 
-;; Author: W{\l}odek Bzyl
+;; Author: Włodek Bzyl
 ;;        Ryszard Kubiak
 ;; Maintainer: Ryszard Kubiak <rysiek@ipipan.gda.pl>
 ;; Keywords: i18n
index 6a15bc41e50e15afcc3d883937e8cebde3b81903..f22b30e613bbc571879092ec270b439e25b2022d 100644 (file)
@@ -86,7 +86,7 @@
   '(("chinese-4corner" "\e$(0(?-F\e(B")
     ("chinese-array30" "\e$(0#R#O\e(B")
     ("chinese-ccdospy" "\e$AKuF4\e(B"
-     "Pinyin base input method for Chinese charset GB2312 \(`chinese-gb2312').
+     "Pinyin base input method for Chinese charset GB2312 (`chinese-gb2312').
 
 Pinyin is the standard Roman transliteration method for Chinese.
 For the detail of Pinyin system, see the documentation of the input
index 5f9196da645d97058880fcc01c76541dccbeabb4..4e8fa7b15cba6be3291fe1f94229c9fbe34a974e 100644 (file)
@@ -382,14 +382,6 @@ Defaults to the whole buffer.  END can be out of bounds."
    (save-excursion
      (unless start (setq start (point-min)))
      (setq end (if end (min end (point-max)) (point-max)))
-     ;; This did bind `font-lock-beginning-of-syntax-function' to
-     ;; nil at some point, for an unknown reason.  Don't do this; it
-     ;; can make highlighting slow due to expensive calls to
-     ;; `parse-partial-sexp' in function
-     ;; `font-lock-fontify-syntactically-region'.  Example: paging
-     ;; from the end of a buffer to its start, can do repeated
-     ;; `parse-partial-sexp' starting from `point-min', which can
-     ;; take a long time in a large buffer.
      (let ((orig-start start) next)
        (save-match-data
         ;; Fontify chunks beginning at START.  The end of a
@@ -583,11 +575,13 @@ non-nil in a repeated invocation of this function."
                      'fontified nil))
                   (setq pos (next-single-property-change
                               pos 'fontified)))))))))
-    (setq jit-lock-defer-buffers nil)
     ;; Force fontification of the visible parts.
-    (let ((jit-lock-defer-timer nil))
+    (let ((buffers jit-lock-defer-buffers)
+          (jit-lock-defer-timer nil))
+      (setq jit-lock-defer-buffers nil)
       ;; (message "Jit-Defer Now")
-      (sit-for 0)
+      (unless (redisplay)                       ;FIXME: Should we `force'?
+        (setq jit-lock-defer-buffers buffers))
       ;; (message "Jit-Defer Done")
       )))
 
index 2871ec8f974e05dc607caf1ed5c5acedfb896bec..bdd8853d4dc140be63a209dd2aa2a8d34ff32bc1 100644 (file)
@@ -102,7 +102,7 @@ HANKAKU-KATAKANA belongs to `japanese-jisx0201-kana'.")
     (?\e$B!-\e(B ?') (?\e$B!.\e(B ?`) (?\e$B!0\e(B ?^) (?\e$B!2\e(B ?_) (?\e$B!<\e(B ?- ?\e(I0\e(B) (?\e$B!=\e(B ?-) (?\e$B!>\e(B ?-)
     (?\e$B!?\e(B ?/) (?\e$B!@\e(B ?\\) (?\e$B!A\e(B ?~)  (?\e$B!C\e(B ?|) (?\e$B!F\e(B ?`) (?\e$B!G\e(B ?') (?\e$B!H\e(B ?\") (?\e$B!I\e(B ?\")
     (?\\e$B!J\e(B ?\() (?\\e$B!K\e(B ?\)) (?\\e$B!N\e(B ?[) (?\\e$B!O\e(B ?]) (?\\e$B!P\e(B ?{) (?\\e$B!Q\e(B ?})
-    (?\e$B!R\e(B ?<) (?\e$B!S\e(B ?>) (?\\e$B!V\e(B nil ?\\e(I"\e(B) (?\\e$B!W\e(B nil ?\\e(I#\e(B) 
+    (?\e$B!R\e(B ?<) (?\e$B!S\e(B ?>) (?\\e$B!V\e(B nil ?\\e(I"\e(B) (?\\e$B!W\e(B nil ?\\e(I#\e(B)
     (?\e$B!\\e(B ?+) (?\e$B!]\e(B ?-) (?\e$B!a\e(B ?=) (?\e$B!c\e(B ?<) (?\e$B!d\e(B ?>)
     (?\e$B!l\e(B ?') (?\e$B!m\e(B ?\") (?\e$B!o\e(B ?\\) (?\e$B!p\e(B ?$) (?\e$B!s\e(B ?%) (?\e$B!t\e(B ?#) (?\e$B!u\e(B ?&) (?\e$B!v\e(B ?*)
     (?\e$B!w\e(B ?@)
@@ -175,9 +175,9 @@ belongs to `japanese-jisx0208', ASCII belongs to `ascii'.")
 The argument may be a character or string.  The result has the same type.
 The argument object is not altered--the value is a copy.
 Optional argument HANKAKU t means to convert to `hankaku' Katakana
- \(`japanese-jisx0201-kana'), in which case return value
- may be a string even if OBJ is a character if two Katakanas are
- necessary to represent OBJ."
+\(`japanese-jisx0201-kana'), in which case return value
+may be a string even if OBJ is a character if two Katakanas are
+necessary to represent OBJ."
   (if (stringp obj)
       (japanese-string-conversion obj 'japanese-katakana-region hankaku)
     (or (get-char-code-property obj (if hankaku 'jisx0201 'katakana))
index 7c443857d4431ae2c559e44a70dc1880897259c4..5d11e45b3f6bd34cc1899e762a7b304ec7260da1 100644 (file)
@@ -1245,7 +1245,7 @@ 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."
+`]', `\\', `\\=`' 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) -– =+ ьѝ
index 831725f80658a9ef5b72c62301508605eb7fc404..7741697286b4fbaaa9d9f81c620b84b0529127b4 100644 (file)
     ("zk" "\e$B",\e(B")
     ("zl" "\e$B"*\e(B")
     ("z;" "\e$B!+\e(B") ("z:" "\e$B!,\e(B")
-    ("z\'" "\e$B!F\e(B") ("z\"" "\e$B!H\e(B")
+    ("z'" "\e$B!F\e(B") ("z\"" "\e$B!H\e(B")
 
     ("zx" [":-"]) ("zX" [":-)"])
     ("zc" "\e$B!;\e(B") ("zC" "\e$B!n\e(B")
index 935a471dce8a7671a500e29d3c6260b43fdf4543..a0697c48f7dcf1283fdab2740fd6037ee8fb29cb 100644 (file)
@@ -1321,7 +1321,7 @@ Doubling the postfix separates the letter and postfix: e.g. a\\='\\=' -> a\\='
  ("K" ?Ķ)
  ("l" ?ļ)
  ("L" ?Ļ)
- ("\'" ?“)
+ ("'" ?“)
  ("\"" ?„)
  ("z" ?ž)
  ("Z" ?Ž)
index 3c84ba8348a7889a963e04a8b3c741e8140099b0..c63a758f198468a926b7c7f4e63a16985121138c 100644 (file)
@@ -664,7 +664,7 @@ system, including many technical ones.  Examples:
  ;; Probably not useful enough:
  ;; ("\\Telefon" ?☎)                 ; there are other possibilities
  ;; ("\\Radioactivity" ?☢)
- ;; ("\Biohazard" ?☣)
+ ;; ("\\Biohazard" ?☣)
  ;; ("\\Male" ?♂)
  ;; ("\\Female" ?♀)
  ;; ("\\Lightning" ?☇)
index 7d0949ee529884a0b74909c34e047777ec7ab95d..02f8b78d76b046b927b8680f9418e8a044daed7d 100644 (file)
@@ -76,7 +76,7 @@ The difference from the ordinal Thai keyboard:
   "๑" "ฤ" "ฺ" "ฉ" "ฏ" "ฎ" "โ" "ฌ"      ; @ .. G
   "็" "ณ" "๋" "ษ" "ศ" "?" "์" "ฯ"        ; H .. O
   "ญ" "๐" "ฑ" "ฆ" "ธ" "๊" "ฮ" "\""       ; P .. W
-  "\)" "ํ" "\(" "บ" "ฃ" "ล" "ู" "๘"        ; X .. _
+  ")" "ํ" "(" "บ" "ฃ" "ล" "ู" "๘"  ; X .. _
   "_" "ฟ" "ิ" "แ" "ก" "ำ" "ด" "เ"        ; ` .. g
   "้" "ร" "่" "า" "ส" "ท" "ื" "น"      ; h .. o
   "ย" "ๆ" "พ" "ห" "ะ" "ี" "อ" "ไ"      ; p .. w
index 52fd04736f62620bb38e00ba355bbeeb52a105b7..4ea1bcb9f50c946e4c9a3adb1d8b00ddeb619a48 100644 (file)
@@ -123,7 +123,6 @@ from a file."
     delete-frame-functions disabled-command-function
     fill-nobreak-predicate find-directory-functions
     find-file-not-found-functions
-    font-lock-beginning-of-syntax-function
     font-lock-fontify-buffer-function
     font-lock-fontify-region-function
     font-lock-mark-block-function
index 24c325cb2630aaf0a57e970743ec309c25e6ef3e..11cc8f86cfd8b05a442091d9756bf5e25c15630f 100644 (file)
@@ -49,7 +49,7 @@
 (defcustom printer-name
   (and (eq system-type 'ms-dos) "PRN")
   "The name of a local printer to which data is sent for printing.
-\(Note that PostScript files are sent to `ps-printer-name', which see.\)
+\(Note that PostScript files are sent to `ps-printer-name', which see.)
 
 On Unix-like systems, a string value should be a name understood by
 lpr's -P option; otherwise the value should be nil.
index 368e2ab89822a376267943c3a1c9a93c233081cd..aec93db3fa6a249e56f822be6de3461a6bd72820 100644 (file)
@@ -438,7 +438,7 @@ shuttled robotically onward."
 If a positive number, it's a timeout before sending.  If a negative
 number, it's a timeout before not sending.  This will not work if your
 version of Emacs doesn't include the function `y-or-n-p-with-timeout'
-\(e.g., some versions of XEmacs\)."
+\(e.g., some versions of XEmacs)."
   :version "24.1"
   :group 'feedmail-misc
   :type '(choice (const nil) integer)
@@ -449,7 +449,7 @@ version of Emacs doesn't include the function `y-or-n-p-with-timeout'
   "If non-nil remove Bcc: lines from the message headers.
 In any case, the Bcc: lines do participate in the composed address
 list.  You may want to leave them in if you're using sendmail
-\(see `feedmail-buffer-eating-function'\)."
+\(see `feedmail-buffer-eating-function')."
   :group 'feedmail-headers
   :type 'boolean
   )
@@ -459,7 +459,7 @@ list.  You may want to leave them in if you're using sendmail
   "If non-nil remove Resent-Bcc: lines from the message headers.
 In any case, the Resent-Bcc: lines do participate in the composed
 address list.  You may want to leave them in if you're using sendmail
-\(see `feedmail-buffer-eating-function'\)."
+\(see `feedmail-buffer-eating-function')."
   :group 'feedmail-headers
   :type 'boolean
   )
@@ -645,7 +645,7 @@ is not an option for many users.  As this is the default behavior of most
 sendmail installations, one can mostly only wish it were otherwise.  If feedmail
 believes the sendmail program will sell you out this way, it won't use the \"-f\"
 option when calling sendmail.  If it doesn't think sendmail will sell you out,
-it will use the \"-f\" \(since it is a handy feature\).  You control what
+it will use the \"-f\" \(since it is a handy feature).  You control what
 feedmail thinks with this variable.  The default is nil, meaning that feedmail
 will believe that sendmail will sell you out."
   :version "24.1"
@@ -861,7 +861,7 @@ as well."
   "User-supplied specification for a crude form of mailmerge capability.
 When spraying is enabled, feedmail composes a list of envelope addresses.
 In turn, `feedmail-spray-this-address' is temporarily set to each address
-\(stripped of any comments and angle brackets\) and a function is called which
+\(stripped of any comments and angle brackets) and a function is called which
 fiddles message headers according to this variable.  See the documentation for
 `feedmail-fiddle-plex-blurb', for an overview of fiddle-plex data structures.
 
@@ -1313,7 +1313,7 @@ of `buffer-file-name' to nil because that will defeat feedmail's file
 management features.  Instead, arrange for this variable to be set to
 the value of `buffer-file-name' before setting that to nil.  An easy way
 to do that would be with defadvice on `mail-send' \(undoing the
-assignments in a later advice\).
+assignments in a later advice).
 
 feedmail will pretend that `buffer-file-name', if nil, has the value
 assigned of `feedmail-queue-buffer-file-name' and carry out its normal
@@ -1507,7 +1507,7 @@ The default action is an anonymous function which gets rid of the file
 from the queue directory.  With a non-nil second argument, a brief
 message is give for each file deleted.  You could replace this
 function, for example, to archive all of your sent messages someplace
-\(though there are better ways to get that particular result\)."
+\(though there are better ways to get that particular result)."
   :group 'feedmail-queue
   :type 'function
   )
@@ -1715,7 +1715,7 @@ for ACTION (default is `supplement'):
                 VAL-LIKE is not used.  Else, if VAL-LIKE is a function,
                 it is called with two arguments: NAME and the
                 aggregate like values.  Else, if VAL-LIKE is a string, it is
-                used as a format string where a single \%s will be
+                used as a format string where a single %s will be
                 replaced by the aggregate values of like fields.
 
                 VAL-PRE, the results of using VAL-LIKE, and VAL-POST
@@ -1745,7 +1745,8 @@ applied to a file after you've just read it from disk: for example, a
 feedmail FQM message file from a queue.  You could use something like
 this:
 
-\(setq auto-mode-alist \(cons \\='\(\"\\\\.fqm$\" . feedmail-vm-mail-mode\) auto-mode-alist\)\)
+\(setq auto-mode-alist
+      (cons \\='(\"\\\\.fqm$\" . feedmail-vm-mail-mode) auto-mode-alist))
 "
   (feedmail-say-debug ">in-> feedmail-vm-mail-mode")
   (let ((the-buf (current-buffer)))
@@ -1894,26 +1895,26 @@ You're dispatching a message and feedmail queuing is enabled.
 Typing ? again will normally scroll this help buffer.
 
 Choices:
-   q  QUEUE        for later sending \(via feedmail-run-the-queue\)
+   q  QUEUE        for later sending (via feedmail-run-the-queue)
    Q  QUEUE!       like \"q\", but always make a new file
-   i  IMMEDIATELY  send this \(but not the other queued messages\)
+   i  IMMEDIATELY  send this (but not the other queued messages)
    I  IMMEDIATELY! like \"i\", but skip following confirmation prompt
    d  DRAFT        queue in the draft directory
    D  DRAFT!       like \"d\", but always make a new file
-   e  EDIT         return to the message edit buffer \(don't send or queue\)
-   *  SPRAY        toggle spray mode \(individual message transmissions\)
-   >  SCROLL UP    scroll message up \(toward end of message\)
-   <  SCROLL DOWN  scroll message down \(toward beginning of message\)
+   e  EDIT         return to the message edit buffer (don't send or queue)
+   *  SPRAY        toggle spray mode (individual message transmissions)
+   >  SCROLL UP    scroll message up (toward end of message)
+   <  SCROLL DOWN  scroll message down (toward beginning of message)
    ?  HELP         show or scroll this help buffer
 
 Synonyms:
-   s  SEND         immediately \(same as \"i\"\)
-   S  SEND!        immediately \(same as \"I\"\)
-   r  ROUGH        draft \(same as \"d\"\)
-   R  ROUGH!       draft \(same as \"D\"\)
-   n  NOPE         didn't mean it \(same as \"e\"\)
-   y  YUP          do the default behavior \(same as \"C-m\"\)
-  SPC SCROLL UP    \(same as \">\"\)
+   s  SEND         immediately (same as \"i\")
+   S  SEND!        immediately (same as \"I\")
+   r  ROUGH        draft (same as \"d\")
+   R  ROUGH!       draft (same as \"D\")
+   n  NOPE         didn't mean it (same as \"e\")
+   y  YUP          do the default behavior (same as \"C-m\")
+  SPC SCROLL UP    (same as \">\")
 
 The user-configurable default is currently \""))
        (princ d-string)
index 5164ea1bfed3931033a98b5b3a63313b04fdb17c..a7057ca21c8b4bfd82d98365e9f424eed6828449 100644 (file)
@@ -329,7 +329,7 @@ by translating things like \"foo!bar!baz@host\" into \"baz@bar.UUCP\"."
 ;; Matches an embedded or leading nickname that should be removed.
 ;; (defconst mail-extr-nickname-pattern
 ;;   (purecopy
-;;    (format "\\([ .]\\|\\`\\)[\"'`\[\(]\\([ .%s]+\\)[\]\"'\)] "
+;;    (format "\\([ .]\\|\\`\\)[\"'`[(]\\([ .%s]+\\)[]\"')] "
 ;;            mail-extr-all-letters)))
 
 ;; Matches the occurrence of a generational name suffix, and the last
@@ -369,7 +369,7 @@ by translating things like \"foo!bar!baz@host\" into \"baz@bar.UUCP\"."
 ;; Matches a variety of trailing comments not including comma-delimited
 ;; comments.
 (defconst mail-extr-trailing-comment-start-pattern
-  (purecopy " [-{]\\|--\\|[+@#></\;]"))
+  (purecopy " [-{]\\|--\\|[+@#></;]"))
 
 ;; Matches a name (not an initial).
 ;; This doesn't force a word boundary at the end because sometimes a
@@ -456,7 +456,7 @@ by translating things like \"foo!bar!baz@host\" into \"baz@bar.UUCP\"."
 ;; mode from GB back to ASCII.  (Note that the escape-from-GB code '~}'
 ;; ($7E7D) is outside the defined GB range.)
 (defconst mail-extr-hz-embedded-gb-encoded-chinese-pattern
-  (purecopy "~{\\([^~].\\|~[^\}]\\)+~}"))
+  (purecopy "~{\\([^~].\\|~[^}]\\)+~}"))
 
 ;; The leading optional lowercase letters are for a bastardized version of
 ;; the encoding, as is the optional nature of the final slash.
@@ -543,8 +543,8 @@ by translating things like \"foo!bar!baz@host\" into \"baz@bar.UUCP\"."
     (?\t " ")
     (?\r " ")
     (?\n " ")
-    (?\( "\(\)")
-    (?\) "\)\(")
+    (?\( "()")
+    (?\) ")(")
     (?\\ "\\"))
    (mail-extr-address-domain-literal-syntax-table
     (?\000 ?\377 "w")
@@ -553,8 +553,8 @@ by translating things like \"foo!bar!baz@host\" into \"baz@bar.UUCP\"."
     (?\t " ")
     (?\r " ")
     (?\n " ")
-    (?\[ "\(\]")                       ;??????
-    (?\] "\)\[")                       ;??????
+    (?\[ "(]")                 ;??????
+    (?\] ")[")                 ;??????
     (?\\ "\\"))
    (mail-extr-address-text-comment-syntax-table
     (?\000 ?\377 "w")
@@ -563,16 +563,16 @@ by translating things like \"foo!bar!baz@host\" into \"baz@bar.UUCP\"."
     (?\t " ")
     (?\r " ")
     (?\n " ")
-    (?\( "\(\)")
-    (?\) "\)\(")
-    (?\[ "\(\]")
-    (?\] "\)\[")
-    (?\{ "\(\}")
-    (?\} "\)\{")
+    (?\( "()")
+    (?\) ")(")
+    (?\[ "(]")
+    (?\] ")[")
+    (?\{ "(}")
+    (?\} "){")
     (?\\ "\\")
     (?\" "\"")
-    ;; (?\' "\)\`")
-    ;; (?\` "\(\'")
+    ;; (?\' ")`")
+    ;; (?\` "('")
     )
    (mail-extr-address-text-syntax-table
     (?\000 ?\177 ".")
index 31da6ee2eb320ee8f0f401f88226d7d98ecc1cce..5bc1d3129eab70dcaffc46a4c670bd2443bdb644 100644 (file)
@@ -62,10 +62,9 @@ supported.  Defaults to non-nil on Windows, nil otherwise."
         (mapcar
          (lambda (char)
            (cond
-            ((eq char ?\x20) "%20")   ;; space
             ((eq char ?\n) "%0D%0A")  ;; newline
-            ((string-match "[-a-zA-Z0-9_:/.@]" (char-to-string char))
-             (char-to-string char))   ;; printable
+            ((string-match "[-a-zA-Z0-9._~]" (char-to-string char))
+             (char-to-string char))   ;; unreserved as per RFC 6068
             (t                        ;; everything else
              (format "%%%02x" char)))) ;; escape
          ;; Convert string to list of chars
@@ -96,7 +95,7 @@ supported.  Defaults to non-nil on Windows, nil otherwise."
                       recp)))
               (setq first nil))
             (split-string
-             (mail-strip-quoted-names field) "\, *"))
+             (mail-strip-quoted-names field) ", *"))
            result)))))
 
 (declare-function clipboard-kill-ring-save "menu-bar.el"
@@ -125,6 +124,13 @@ The mail client is taken to be the handler of mailto URLs."
                      (< (point) delimline))
            (replace-match "\n"))
          (let ((case-fold-search t)
+               (mime-charset-pattern
+                (concat
+                 "^content-type:[ \t]*text/plain;"
+                 "\\(?:[ \t\n]*\\(?:format\\|delsp\\)=\"?[-a-z0-9]+\"?;\\)*"
+                 "[ \t\n]*charset=\"?\\([^ \t\n\";]+\\)\"?"))
+               coding-system
+               character-coding
                ;; Use the external browser function to send the
                ;; message.
                (browse-url-mailto-function nil))
@@ -135,6 +141,15 @@ The mail client is taken to be the handler of mailto URLs."
             (concat
              (save-excursion
                (narrow-to-region (point-min) delimline)
+               (goto-char (point-min))
+               (setq coding-system
+                     (if (re-search-forward mime-charset-pattern nil t)
+                         (coding-system-from-name (match-string 1))
+                       'undecided))
+               (setq character-coding
+                     (mail-fetch-field "content-transfer-encoding"))
+               (when character-coding
+                 (setq character-coding (downcase character-coding)))
                (concat
                 "mailto:"
                 ;; some of the headers according to RFC822
@@ -160,18 +175,31 @@ The mail client is taken to be the handler of mailto URLs."
                               (mailclient-encode-string-as-url subj))
                     ""))))
              ;; body
-             (concat
-              (mailclient-url-delim) "body="
-              (mailclient-encode-string-as-url
-               (if mailclient-place-body-on-clipboard-flag
-                   (progn
-                     (clipboard-kill-ring-save
-                      (+ 1 delimline) (point-max))
-                     (concat
-                      "*** E-Mail body has been placed on clipboard, "
-                      "please paste it here! ***"))
-                 ;; else
-                 (buffer-substring (+ 1 delimline) (point-max))))))))))))
+             (mailclient-url-delim) "body="
+             (progn
+               (delete-region (point-min) delimline)
+               (unless (null character-coding)
+                 ;; mailto: and clipboard need UTF-8 and cannot deal with
+                 ;; Content-Transfer-Encoding or Content-Type.
+                 ;; FIXME: There is code duplication here with rmail.el.
+                 (set-buffer-multibyte nil)
+                 (cond
+                  ((string= character-coding "base64")
+                   (base64-decode-region (point-min) (point-max)))
+                  ((string= character-coding "quoted-printable")
+                   (mail-unquote-printable-region (point-min) (point-max)
+                                                  nil nil t))
+                  (t (error "unsupported Content-Transfer-Encoding: %s"
+                            character-coding)))
+                 (decode-coding-region (point-min) (point-max) coding-system))
+               (mailclient-encode-string-as-url
+                (if mailclient-place-body-on-clipboard-flag
+                    (progn
+                      (clipboard-kill-ring-save (point-min) (point-max))
+                      (concat
+                       "*** E-Mail body has been placed on clipboard, "
+                       "please paste it here! ***"))
+                  (buffer-string)))))))))))
 
 (provide 'mailclient)
 
index ddd5414de76c001aa3069546e278cbb2aa5a1396..f22222ad552ff9fcfc3aae45455bc41eae1e7bd1 100644 (file)
@@ -309,7 +309,7 @@ Buffer is not displayed if SHOW is non-nil."
 ;; to file name.
 ;(defun get-folder-from-spool-safe (name)
 ;  "Return the folder name corresponding to the spool file NAME."
-;  (if (string-match "^\\(.*\\)\.spool$" name)
+;  (if (string-match "^\\(.*\\)\\.spool$" name)
 ;      (substring name (match-beginning 1) (match-end 1))
 ;    (error "Could not extract folder name from spool name %s" name)))
 
index 67b04b569684de23824f9a41f1e8bd8af45108e7..8e38564b14a4aedcfa26e57a763d8e5de6e7c1ee 100644 (file)
@@ -316,7 +316,7 @@ Currently known variants are 'emacs and 'mailutils."
 If non-nil, this variable is used to identify the correspondent
 when receiving new mail.  If it matches the address of the sender,
 the recipient is taken as correspondent of a mail.
-If nil \(default value\), your `user-login-name' and `user-mail-address'
+If nil \(default value), your `user-login-name' and `user-mail-address'
 are used to exclude yourself as correspondent.
 
 Usually you don't have to set this variable, except if you collect mails
@@ -4778,7 +4778,7 @@ With prefix argument N moves forward N messages with these labels.
 
 ;;;***
 \f
-;;;### (autoloads nil "rmailmm" "rmailmm.el" "e5b89eed8afb278cc8881f2208382c7c")
+;;;### (autoloads nil "rmailmm" "rmailmm.el" "36f518e036612a33eb436cb267fd39c7")
 ;;; Generated autoloads from rmailmm.el
 
 (autoload 'rmail-mime "rmailmm" "\
@@ -4922,7 +4922,7 @@ SENDERS is a regular expression.
 
 ;;;***
 \f
-;;;### (autoloads nil "undigest" "undigest.el" "912d4d3bf762991df5d4d02f42358025")
+;;;### (autoloads nil "undigest" "undigest.el" "c0ddfad4fe34ef9c1e790c2cc72b571d")
 ;;; Generated autoloads from undigest.el
 
 (autoload 'undigestify-rmail-message "undigest" "\
index 3dd57b9bab7b91ee98927a50a1e36a59a6247dd4..16f62154fbcf4613bfb1ad90203d681b2df0583c 100644 (file)
@@ -172,7 +172,7 @@ The value is usually nil, and bound to non-nil while inserting
 MIME entities.")
 
 (defvar rmail-mime-searching nil
-  "Bound to T inside `rmail-search-mime-message' to suppress expensive 
+  "Bound to T inside `rmail-search-mime-message' to suppress expensive
 operations such as HTML decoding")
 
 ;;; MIME-entity object
@@ -190,7 +190,7 @@ A MIME-entity is a vector of 10 elements:
 TYPE and DISPOSITION correspond to MIME headers Content-Type and
 Content-Disposition respectively, and have this format:
 
-  \(VALUE (ATTRIBUTE . VALUE) (ATTRIBUTE . VALUE) ...)
+  (VALUE (ATTRIBUTE . VALUE) (ATTRIBUTE . VALUE) ...)
 
 Each VALUE is a string and each ATTRIBUTE is a string.
 
@@ -202,7 +202,7 @@ Content-Type: multipart/mixed;
 The corresponding TYPE argument must be:
 
 \(\"multipart/mixed\"
-  \(\"boundary\" . \"----=_NextPart_000_0104_01C617E4.BDEC4C40\"))
+  (\"boundary\" . \"----=_NextPart_000_0104_01C617E4.BDEC4C40\"))
 
 TRANSFER-ENCODING corresponds to MIME header
 Content-Transfer-Encoding, and is a lower-case string.
@@ -1119,11 +1119,11 @@ are the values of the respective parsed headers.  The latter should
 be lower-case.  The parsed headers for CONTENT-TYPE and CONTENT-DISPOSITION
 have the form
 
-  \(VALUE . ALIST)
+  (VALUE . ALIST)
 
 In other words:
 
-  \(VALUE (ATTRIBUTE . VALUE) (ATTRIBUTE . VALUE) ...)
+  (VALUE (ATTRIBUTE . VALUE) (ATTRIBUTE . VALUE) ...)
 
 VALUE is a string and ATTRIBUTE is a symbol.
 
@@ -1135,7 +1135,7 @@ Content-Type: multipart/mixed;
 The parsed header value:
 
 \(\"multipart/mixed\"
-  \(\"boundary\" . \"----=_NextPart_000_0104_01C617E4.BDEC4C40\"))"
+  (\"boundary\" . \"----=_NextPart_000_0104_01C617E4.BDEC4C40\"))"
   ;; Handle the content transfer encodings we know.  Unknown transfer
   ;; encodings will be passed on to the various handlers.
   (cond ((string= content-transfer-encoding "base64")
index 6dd26062285458f619b6cbbd7216519730344cb5..9fbbd94b08384bfad8939a9a2455387e623acf59 100644 (file)
@@ -79,7 +79,7 @@ See rmail-digest-methods."
  (rmail-digest-rfc1153
   "^-\\{70\\}\n\n"
   "^\n-\\{30\\}\n\n"
-  "^\n-\\{30\\}\n\nEnd of .* Digest.*\n\\*\\{15,\\}\n+\'"))
+  "^\n-\\{30\\}\n\nEnd of .* Digest.*\n\\*\\{15,\\}\n+\\'"))
 
 (defun rmail-digest-parse-rfc1153sloppy ()
   "Parse using the method defined in RFC 1153, allowing for some sloppiness.
index 23b2110a4ecc12f34a08242b4d1481d2786944e4..fbfa6f0c7f74b4071a4bed8b964d604ca322fac9 100644 (file)
@@ -311,7 +311,7 @@ This regular expression should start with a `^' character.")
   "Regular expression describing a reference to another manpage.")
 
 (defvar Man-apropos-regexp
-  (concat "\\\[\\(" Man-name-regexp "\\)\\\][ \t]*(\\(" Man-section-regexp "\\))")
+  (concat "\\[\\(" Man-name-regexp "\\)\\][ \t]*(\\(" Man-section-regexp "\\))")
   "Regular expression describing a reference to manpages in \"man -k output\".")
 
 (defvar Man-synopsis-regexp "SYNOPSIS"
index de0038a306a7b6a855107c0d15020d42cea53a19..04e9fef59ebc7d7ba9239af047afcfe3e0a0f374 100644 (file)
@@ -417,7 +417,7 @@ string is converted to lower case."
 
 (defun mh-alias-insert-file (&optional alias)
   "Return filename which should be used to add ALIAS.
-The value of the option `mh-alias-insert-file' is used if non-nil\;
+The value of the option `mh-alias-insert-file' is used if non-nil;
 otherwise the value of the \"Aliasfile:\" profile component is used.
 If the alias already exists, try to return the name of the file that
 contains it."
index 700d22c386285794fb22ac9e80a6465046e90cc5..129e6857a4c889d12b06a32b38a5be0d30dfdf4c 100644 (file)
@@ -269,7 +269,7 @@ RETURN-ACTION and any additional arguments are IGNORED."
 
 When you are all through editing a message, you send it with this
 command. You can give a prefix argument ARG to monitor the first stage
-of the delivery\; this output can be found in a buffer called \"*MH-E
+of the delivery; this output can be found in a buffer called \"*MH-E
 Mail Delivery*\".
 
 The hook `mh-before-send-letter-hook' is run at the beginning of
@@ -1064,7 +1064,7 @@ The versions of MH-E, Emacs, and MH are shown."
                          (string-match "[0-9]+\\.[0-9]+\\(\\.[0-9]+\\)?"
                                        emacs-version)
                          (match-string 0 emacs-version))
-                        ((string-match "[0-9.]*\\( +\([ a-z]+[0-9]+\)\\)?"
+                        ((string-match "[0-9.]*\\( +([ a-z]+[0-9]+)\\)?"
                                        emacs-version)
                          (match-string 0 emacs-version))
                         (t (format "%s.%s" emacs-major-version
index 7cdf67cc150c1299e8cea848882cd4ed1cab7e11..96fe7d797c2720b2008c45a5af8a60ba60f921b5 100644 (file)
                "\\(defgroup-mh\\)"
                "\\)\\>"
                ;; Any whitespace and defined object.
-               "[ \t'\(]*"
+               "[ \t'(]*"
                "\\(setf[ \t]+\\sw+)\\|\\sw+\\)?")
       (1 font-lock-keyword-face)
       (7 (cond ((match-beginning 2) font-lock-function-name-face)
@@ -1834,7 +1834,7 @@ message without line wrapping."
   "Default method to use in security tags.
 
 This option is used to select between a variety of mail security
-mechanisms. The default is \"PGP (MIME)\" if it is supported\;
+mechanisms. The default is \"PGP (MIME)\" if it is supported;
 otherwise, the default is \"None\". Other mechanisms include
 vanilla \"PGP\" and \"S/MIME\".
 
index ae5e2bf1f3bf225cf627bb080778af38e68b5081..d21720ebe55b49b58839173dc94ccd75a5a0219f 100644 (file)
@@ -755,7 +755,7 @@ You can enter the message NUMBER either before or after typing
 
 In a program, optional non-nil second argument NO-ERROR-IF-NO-MESSAGE
 means return nil instead of signaling an error if message does not
-exist\; in this case, the cursor is positioned near where the message
+exist; in this case, the cursor is positioned near where the message
 would have been. Non-nil third argument DONT-SHOW means not to show
 the message."
   (interactive "NGo to message: ")
index 62e9b4a357d0a26c33cc27148a873ae9143af4cc..7a56427027e1a7196b111a440158ee5db4cfa83c 100644 (file)
@@ -553,7 +553,7 @@ one space."
 (defun mh-letter-confirm-address ()
   "Flash alias expansion.
 
-Addresses are separated by a comma\; when you press the comma,
+Addresses are separated by a comma; when you press the comma,
 this command flashes the alias expansion in the minibuffer if
 `mh-alias-flash-on-comma' is turned on."
   (interactive)
@@ -932,7 +932,7 @@ Any match found replaces the text from BEGIN to END."
     (and (stringp file)
          (file-exists-p file)
          (or (and (not (mh-have-file-command))
-                  (not (null (string-match "\.vcf$" file))))
+                  (not (null (string-match "\\.vcf$" file))))
              (string-equal "text/x-vcard" (mh-file-mime-type file))))))
 
 ;;;###mh-autoload
index 60b796b1fdb57e08173cdc30a029bcae12cfdeaf..a1c0bebd28940f321fe6c4af6fef4c58931ad78f 100644 (file)
@@ -1715,7 +1715,7 @@ buffer, while END defaults to the end of the buffer."
 (defun mh-minibuffer-read-type (filename &optional default)
   "Return the content type associated with the given FILENAME.
 If the \"file\" command exists and recognizes the given file,
-then its value is returned\; otherwise, the user is prompted for
+then its value is returned; otherwise, the user is prompted for
 a type (see `mailcap-mime-types').
 Optional argument DEFAULT is returned if a type isn't entered."
   (mailcap-parse-mimetypes)
@@ -1756,21 +1756,21 @@ Returns nil if file command not on system."
           (kill-buffer tmp-buffer)))))))
 
 (defvar mh-file-mime-type-substitutions
-  '(("application/msword" "\.xls" "application/ms-excel")
-    ("application/msword" "\.ppt" "application/ms-powerpoint")
-    ("text/plain" "\.vcf" "text/x-vcard")
-    ("text/rtf" "\.rtf" "application/rtf")
-    ("application/x-zip" "\.sxc" "application/vnd.sun.xml.calc")
-    ("application/x-zip" "\.sxd" "application/vnd.sun.xml.draw")
-    ("application/x-zip" "\.sxi" "application/vnd.sun.xml.impress")
-    ("application/x-zip" "\.sxw" "application/vnd.sun.xml.writer")
-    ("application/x-zip" "\.odg" "application/vnd.oasis.opendocument.graphics")
-    ("application/x-zip" "\.odi" "application/vnd.oasis.opendocument.image")
-    ("application/x-zip" "\.odp"
+  '(("application/msword" "\\.xls" "application/ms-excel")
+    ("application/msword" "\\.ppt" "application/ms-powerpoint")
+    ("text/plain" "\\.vcf" "text/x-vcard")
+    ("text/rtf" "\\.rtf" "application/rtf")
+    ("application/x-zip" "\\.sxc" "application/vnd.sun.xml.calc")
+    ("application/x-zip" "\\.sxd" "application/vnd.sun.xml.draw")
+    ("application/x-zip" "\\.sxi" "application/vnd.sun.xml.impress")
+    ("application/x-zip" "\\.sxw" "application/vnd.sun.xml.writer")
+    ("application/x-zip" "\\.odg" "application/vnd.oasis.opendocument.graphics")
+    ("application/x-zip" "\\.odi" "application/vnd.oasis.opendocument.image")
+    ("application/x-zip" "\\.odp"
      "application/vnd.oasis.opendocument.presentation")
-    ("application/x-zip" "\.ods"
+    ("application/x-zip" "\\.ods"
      "application/vnd.oasis.opendocument.spreadsheet")
-    ("application/x-zip" "\.odt" "application/vnd.oasis.opendocument.text"))
+    ("application/x-zip" "\\.odt" "application/vnd.oasis.opendocument.text"))
   "Substitutions to make for Content-Type returned from file command.
 The first element is the Content-Type returned by the file command.
 The second element is a regexp matching the file name, usually the
index 7d066b0b8dd88ab558f490ebcba998c4d057e413..b6eef4ecfc6777d1cb1f3c2dfef13063aef55d43 100644 (file)
@@ -1247,7 +1247,7 @@ is used to search."
   (prog1
       (block nil
         (when (eobp) (return nil))
-        (when (search-forward-regexp "^\+" (mh-line-end-position) t)
+        (when (search-forward-regexp "^\\+" (mh-line-end-position) t)
           (setq mh-index-pick-folder
                 (buffer-substring-no-properties (mh-line-beginning-position)
                                                 (mh-line-end-position)))
index 643674a4523a586f4985450dfe88bd4cec88fff9..37fd1651c5e7e0ffcbe47c9cb03e84f9385cea2e 100644 (file)
@@ -515,7 +515,7 @@ they will not be returned."
     ;; folder is specified, ensure it is nil to avoid adding the
     ;; folder to the folder-list and adding a slash to it.
     (when folder
-      (setq folder (mh-replace-regexp-in-string "^\+" "" folder))
+      (setq folder (mh-replace-regexp-in-string "^\\+" "" folder))
       (setq folder (mh-replace-regexp-in-string "/+$" "" folder))
       (if (equal folder "")
           (setq folder nil)))
index b7b7febca26749c62277ea8ef7abe3208cd21790..d48a8b3d152eaad3e5cff7cda202d7f824cde2a4 100644 (file)
@@ -366,7 +366,7 @@ filenames.  In addition, replaces * with %2a. See URL
 `http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/reference/ifaces/iitemnamelimits/GetValidCharacters.asp'."
   (format "%s/%s.png" mh-x-image-cache-directory
           (mh-replace-regexp-in-string
-           "\*" "%2a"
+           "\\*" "%2a"
            (mh-url-hexify-string
             (with-temp-buffer
               (insert url)
index 6584733a86026a3e7fdbc607bf565fb4bfa2b3e0..d6ce31a7a537291fe78363b2935506903e940ed9 100644 (file)
@@ -1111,12 +1111,12 @@ This does not delete the region; it acts like \\[kill-ring-save]."
     ;; Delete, but make the undo-list entry share with the kill ring.
     ;; First, delete just one char, so in case buffer is being modified
     ;; for the first time, the undo list records that fact.
-    (let (before-change-functions after-change-functions)
+    (let ((inhibit-modification-hooks t))
       (delete-region beg
                     (+ beg (if (> end beg) 1 -1))))
     (let ((buffer-undo-list buffer-undo-list))
       ;; Undo that deletion--but don't change the undo list!
-      (let (before-change-functions after-change-functions)
+      (let ((inhibit-modification-hooks t))
        (primitive-undo 1 buffer-undo-list))
       ;; Now delete the rest of the specified region,
       ;; but don't record it.
index b7c19a967fa2910605d36b875dc94e5d22844049..bc7d4733ee84be8258e317bdd93d26944623465a 100644 (file)
@@ -268,7 +268,10 @@ defaults to 6600 and HOST defaults to localhost."
                 (if (string-match "[^[:digit:]]" v)
                     (string-to-number v)
                   v)))))
-    (when (string-prefix-p "/" host)    ;FIXME: Use file-name-absolute-p?
+    (when (file-name-absolute-p host)
+      ;; Expand file name because `file-name-absolute-p'
+      ;; considers paths beginning with "~" as absolute
+      (setq host (expand-file-name host))
       (setq local t))
 
     (mpc--debug "Connecting to %s:%s..." host port)
@@ -909,8 +912,13 @@ If PLAYLIST is t or nil or missing, use the main playlist."
 (defun mpc-file-local-copy (file)
   ;; Try to set mpc-mpd-music-directory.
   (when (and (null mpc-mpd-music-directory)
-             (string-match "\\`localhost" mpc-host))
-    (let ((files '("~/.mpdconf" "/etc/mpd.conf"))
+             (or (string-match "\\`localhost" mpc-host)
+                 (file-name-absolute-p mpc-host)))
+    (let ((files `(,(let ((xdg (getenv "XDG_CONFIG_HOME")))
+                      (concat (if (and xdg (file-name-absolute-p xdg))
+                                  xdg "~/.config")
+                              "/mpd/mpd.conf"))
+                   "~/.mpdconf" "~/.mpd/mpd.conf" "/etc/mpd.conf"))
           file)
       (while (and files (not file))
         (if (file-exists-p (car files)) (setq file (car files)))
index 0351bda0e42ea42671f908d5157c9e5649a1a6ed..fbc130174b833c4d26d61d46a481c7045900e2cd 100644 (file)
@@ -659,7 +659,7 @@ If the argument is left out or nil, then the current buffer is considered."
 (defun msb--create-function-info (menu-cond-elt)
   "Create a vector from an element MENU-COND-ELT of `msb-menu-cond'.
 This takes the form:
-\[BUFFER-LIST-VARIABLE CONDITION MENU-SORT-KEY MENU-TITLE ITEM-HANDLER SORTER]
+[BUFFER-LIST-VARIABLE CONDITION MENU-SORT-KEY MENU-TITLE ITEM-HANDLER SORTER]
 See `msb-menu-cond' for a description of its elements."
   (let* ((list-symbol (make-symbol "-msb-buffer-list"))
         (tmp-ih (and (> (length menu-cond-elt) 3)
index bb8351437d70c59e4de27dddd9334351071564f8..4f7fa3b8f394fc6d94aad493e798d1aab48cb113 100644 (file)
   '("\\`/\\(\\([^/:]*\\)@\\)?\\([^@/:]*[^@/:.]\\):\\(.*\\)" . (3 2 4))
   "Format of a fully expanded remote file name.
 
-This is a list of the form \(REGEXP HOST USER NAME\),
+This is a list of the form \(REGEXP HOST USER NAME),
 where REGEXP is a regular expression matching
 the full remote name, and HOST, USER, and NAME are the numbers of
 parenthesized expressions in REGEXP for the components (in that order)."
@@ -1366,8 +1366,8 @@ only return the directory part of FILE."
     (goto-char end)))
 
 ;; Read in ~/.netrc, if one exists.  If ~/.netrc file exists and has
-;; the correct permissions then extract the \`machine\', \`login\',
-;; \`password\' and \`account\' information from within.
+;; the correct permissions then extract the machine, login,
+;; password and account information from within.
 
 (defun ange-ftp-parse-netrc ()
   ;; We set this before actually doing it to avoid the possibility
@@ -2511,7 +2511,7 @@ Works by doing a pwd and examining the directory syntax."
 ;;;; Remote file and directory listing support.
 ;;;; ------------------------------------------------------------
 
-;; Returns whether HOST's FTP server doesn't like \'ls\' or \'dir\' commands
+;; Returns whether HOST's FTP server doesn't like 'ls' or 'dir' commands
 ;; to take switch arguments.
 (defun ange-ftp-dumb-unix-host (host)
   (and host ange-ftp-dumb-unix-host-regexp
index a7efaf81dbc9d9208bb4749dab088e0d2f23a220..e8e6bc0cb6a51a83fd5de541905954d4570f5e1d 100644 (file)
@@ -380,7 +380,7 @@ Example:
   \"org.freedesktop.Hal.Device\" \"GetPropertyString\" \\='message
   \"system.kernel.machine\")
 
-  => \(:serial :system 2)
+  => (:serial :system 2)
 
   -| i686"
 
@@ -656,8 +656,8 @@ Example:
   :system \"org.freedesktop.Hal\" \"/org/freedesktop/Hal/Manager\"
   \"org.freedesktop.Hal.Manager\" \"DeviceAdded\" \\='my-signal-handler)
 
-  => \(\(:signal :system \"org.freedesktop.Hal.Manager\" \"DeviceAdded\")
-      \(\"org.freedesktop.Hal\" \"/org/freedesktop/Hal/Manager\" my-signal-handler))
+  => ((:signal :system \"org.freedesktop.Hal.Manager\" \"DeviceAdded\")
+      (\"org.freedesktop.Hal\" \"/org/freedesktop/Hal/Manager\" my-signal-handler))
 
 `dbus-register-signal' returns an object, which can be used in
 `dbus-unregister-object' for removing the registration."
@@ -1143,7 +1143,7 @@ Note, that this autoloads SERVICE if it is not running yet.  If
 it shall be checked whether SERVICE is already running, one shall
 apply
 
-  \(member service \(dbus-list-known-names bus))"
+  (member service \(dbus-list-known-names bus))"
   ;; "Ping" raises a D-Bus error if SERVICE does not exist.
   ;; Otherwise, it returns silently with nil.
   (condition-case nil
@@ -1631,22 +1631,22 @@ name, and the cdr is the list of properties as returned by
 
 \(dbus-get-all-managed-objects :session \"org.gnome.SettingsDaemon\" \"/\")
 
-  => \(\(\"/org/gnome/SettingsDaemon/MediaKeys\"
-       \(\"org.gnome.SettingsDaemon.MediaKeys\")
-       \(\"org.freedesktop.DBus.Peer\")
-       \(\"org.freedesktop.DBus.Introspectable\")
-       \(\"org.freedesktop.DBus.Properties\")
-       \(\"org.freedesktop.DBus.ObjectManager\"))
-      \(\"/org/gnome/SettingsDaemon/Power\"
-       \(\"org.gnome.SettingsDaemon.Power.Keyboard\")
-       \(\"org.gnome.SettingsDaemon.Power.Screen\")
-       \(\"org.gnome.SettingsDaemon.Power\"
-        \(\"Icon\" . \". GThemedIcon battery-full-charged-symbolic \")
-        \(\"Tooltip\" . \"Laptop battery is charged\"))
-       \(\"org.freedesktop.DBus.Peer\")
-       \(\"org.freedesktop.DBus.Introspectable\")
-       \(\"org.freedesktop.DBus.Properties\")
-       \(\"org.freedesktop.DBus.ObjectManager\"))
+  => ((\"/org/gnome/SettingsDaemon/MediaKeys\"
+       (\"org.gnome.SettingsDaemon.MediaKeys\")
+       (\"org.freedesktop.DBus.Peer\")
+       (\"org.freedesktop.DBus.Introspectable\")
+       (\"org.freedesktop.DBus.Properties\")
+       (\"org.freedesktop.DBus.ObjectManager\"))
+      (\"/org/gnome/SettingsDaemon/Power\"
+       (\"org.gnome.SettingsDaemon.Power.Keyboard\")
+       (\"org.gnome.SettingsDaemon.Power.Screen\")
+       (\"org.gnome.SettingsDaemon.Power\"
+        (\"Icon\" . \". GThemedIcon battery-full-charged-symbolic \")
+        (\"Tooltip\" . \"Laptop battery is charged\"))
+       (\"org.freedesktop.DBus.Peer\")
+       (\"org.freedesktop.DBus.Introspectable\")
+       (\"org.freedesktop.DBus.Properties\")
+       (\"org.freedesktop.DBus.ObjectManager\"))
       ...)
 
 If possible, \"org.freedesktop.DBus.ObjectManager.GetManagedObjects\"
index f2f5ecb8e88b8bf4d9560d444a502c5b9cc84d43..d44890f1b09ba8c663896a7fd6d2365e96ea488a 100644 (file)
@@ -263,7 +263,7 @@ word(s) will be searched for via `eww-search-prefix'."
                 ;; en.wikipedia.org/wiki/Free software
                 (string-match "\\`[A-Za-z_]+\\.[A-Za-z._]+/" url)
                 (and (= (length (split-string url)) 1)
-                     (or (and (not (string-match-p "\\`[\"\'].*[\"\']\\'" url))
+                     (or (and (not (string-match-p "\\`[\"'].*[\"']\\'" url))
                               (> (length (split-string url "[.:]")) 1))
                          (string-match eww-local-regex url))))
              (progn
index 418796a89c942c08b224afb1c23b23e2d2de61d5..479c9a579f3a3591c3b0df87f3822cd437cadfc9 100644 (file)
@@ -111,9 +111,9 @@ specifying a port number to connect to.
 
 Usage example:
 
-  \(with-temp-buffer
-    \(open-gnutls-stream \"tls\"
-                        \(current-buffer)
+  (with-temp-buffer
+    (open-gnutls-stream \"tls\"
+                        (current-buffer)
                         \"your server goes here\"
                         \"imaps\"))
 
index eaf1d7e22c46f9d8e41badc01d60ea41eac0fa90..c6d40b62415ef397e5ce67d6832f3a3cced57287 100644 (file)
@@ -204,7 +204,7 @@ This variable is only used if the variable
   :group 'net-utils
   :type  '(repeat string))
 
-(defcustom smbclient-prompt-regexp "^smb: \>"
+(defcustom smbclient-prompt-regexp "^smb: >"
   "Regexp which matches the smbclient program's prompt.
 
 This variable is only used if the variable
index 6c80e6274772fb091d04d97fe8abaf93979ee58f..072fd015b60a30403078623ba73b7c425f84aabd 100644 (file)
@@ -343,8 +343,8 @@ pattern-list is checked: The new headline will be marked as AGE
 if REGEXP matches the headline's TITLE-OR-DESCRIPTION.
 
 If, for example, `newsticker-auto-mark-filter-list' looks like
\((slashdot (\\='old \\='title \"^Forget me!$\") (\\='immortal \\='title \"Read me\")
-  \(\\='immortal \\='all \"important\"))))
+ ((slashdot (\\='old \\='title \"^Forget me!$\") (\\='immortal \\='title \"Read me\")
+  (\\='immortal \\='all \"important\"))))
 
 then all articles from slashdot are marked as old if they have
 the title \"Forget me!\".  All articles with a title containing
@@ -562,7 +562,7 @@ If non-nil only the current headline is visible.")
   "Return guid of ITEM."
   (newsticker--guid-to-string (assoc 'guid (newsticker--extra item))))
 (defsubst newsticker--enclosure (item)
-  "Return enclosure element of ITEM in the form \(...FIXME...\) or nil."
+  "Return enclosure element of ITEM in the form (...FIXME...) or nil."
   (let ((enclosure (assoc 'enclosure (newsticker--extra item))))
     (if enclosure
         (xml-node-attributes enclosure))))
index be4179e4b11bf8a57a37ad99203091d56c7502f0..105b36e14a3436ec5c8fac1314c9eb0628d5ac1f 100644 (file)
@@ -258,7 +258,7 @@ for formatting."
 (defun newsticker--image-read (feed-name-symbol disabled &optional max-height)
   "Read the cached image for FEED-NAME-SYMBOL from disk.
 If DISABLED is non-nil the image will be converted to a disabled look
-\(unless `newsticker-enable-logo-manipulations' is not t\).
+\(unless `newsticker-enable-logo-manipulations' is not t).
 Optional argument MAX-HEIGHT specifies the maximal image height.
 Return the image."
   (let ((image-name (concat (newsticker--images-dir)
index df0635066cca9c9b11715e76d62f3d778ff16421..d58f3ebd4ea4db9b2802c44740c5f1c413eddcd8 100644 (file)
@@ -2600,7 +2600,7 @@ If ARG is given, opens the URL in a new browser window."
                   (cond ((rcirc-channel-p target)
                          target)
                         ;;; -ChanServ- [#gnu] Welcome...
-                        ((string-match "\\[\\(#[^\] ]+\\)\\]" message)
+                        ((string-match "\\[\\(#[^] ]+\\)\\]" message)
                          (match-string 1 message))
                         (sender
                          (if (string= sender (rcirc-server-name process))
index da46ec3f670bcf3bb258f1442b0cfbfd0f0528bf..fead60eb8ab645b747106983405cb8a15613557b 100644 (file)
@@ -145,7 +145,7 @@ other arguments for `rlogin'.
 Input is sent line-at-a-time to the remote connection.
 
 Communication with the remote host is recorded in a buffer `*rlogin-HOST*'
-\(or `*rlogin-USER@HOST*' if the remote username differs\).
+\(or `*rlogin-USER@HOST*' if the remote username differs).
 If a prefix argument is given and the buffer `*rlogin-HOST*' already exists,
 a new buffer with a different connection will be made.
 
index c4102a18cefc696a70db3847930bea07b7b2c6e0..5e0274029f12243e94b696ecc74551a052c6daf6 100644 (file)
@@ -598,7 +598,7 @@ If successful, return the object path of the collection."
 ATTRIBUTES are key-value pairs.  The keys are keyword symbols,
 starting with a colon.  Example:
 
-  \(secrets-search-items \"Tramp collection\" :user \"joe\")
+  (secrets-search-items \"Tramp collection\" :user \"joe\")
 
 The object labels of the found items are returned as list."
   (let ((collection-path (secrets-unlock-collection collection))
@@ -635,8 +635,8 @@ The object labels of the found items are returned as list."
 ATTRIBUTES are key-value pairs set for the created item.  The
 keys are keyword symbols, starting with a colon.  Example:
 
-  \(secrets-create-item \"Tramp collection\" \"item\" \"geheim\"
-   :method \"sudo\" :user \"joe\" :host \"remote-host\"\)
+  (secrets-create-item \"Tramp collection\" \"item\" \"geheim\"
+   :method \"sudo\" :user \"joe\" :host \"remote-host\")
 
 The object path of the created item is returned."
   (unless (member item (secrets-list-items collection))
index 433254db929ae54455035378f509dcea5ada7374..482f829707d2b75d7ffa0c54105c7e05ae573513 100644 (file)
@@ -242,7 +242,7 @@ Like rgb() or hsl()."
            "rgb(\s*\\([0-9]\\{1,3\\}\\(?:\s*%\\)?\\)\s*,\s*\\([0-9]\\{1,3\\}\\(?:\s*%\\)?\\)\s*,\s*\\([0-9]\\{1,3\\}\\(?:\s*%\\)?\\)\s*)"
            color)
           (string-match
-           "rgba(\s*\\([0-9]\\{1,3\\}\\(?:\s*%\\)?\\)\s*,\s*\\([0-9]\\{1,3\\}\\(?:\s*%\\)?\\)\s*,\s*\\([0-9]\\{1,3\\}\\(?:\s*%\\)?\\)\s*,\s*[0-9]*\.?[0-9]+\s*%?\s*)"
+           "rgba(\s*\\([0-9]\\{1,3\\}\\(?:\s*%\\)?\\)\s*,\s*\\([0-9]\\{1,3\\}\\(?:\s*%\\)?\\)\s*,\s*\\([0-9]\\{1,3\\}\\(?:\s*%\\)?\\)\s*,\s*[0-9]*\\.?[0-9]+\s*%?\s*)"
            color))
       (format "#%02X%02X%02X"
               (shr-color-relative-to-absolute (match-string-no-properties 1 color))
@@ -253,7 +253,7 @@ Like rgb() or hsl()."
            "hsl(\s*\\([0-9]\\{1,3\\}\\)\s*,\s*\\([0-9]\\{1,3\\}\\)\s*%\s*,\s*\\([0-9]\\{1,3\\}\\)\s*%\s*)"
            color)
           (string-match
-           "hsla(\s*\\([0-9]\\{1,3\\}\\)\s*,\s*\\([0-9]\\{1,3\\}\\)\s*%\s*,\s*\\([0-9]\\{1,3\\}\\)\s*%\s*,\s*[0-9]*\.?[0-9]+\s*%?\s*)"
+           "hsla(\s*\\([0-9]\\{1,3\\}\\)\s*,\s*\\([0-9]\\{1,3\\}\\)\s*%\s*,\s*\\([0-9]\\{1,3\\}\\)\s*%\s*,\s*[0-9]*\\.?[0-9]+\s*%?\s*)"
            color))
       (let ((h (/ (string-to-number (match-string-no-properties 1 color)) 360.0))
             (s (/ (string-to-number (match-string-no-properties 2 color)) 100.0))
index ada2767a4d1076c6c59d50ea31f43070fd65239a..509c021c6443acd26e9cb7c169778e03fc596797 100644 (file)
@@ -167,7 +167,7 @@ namespace of LOCAL-NAME."
   "Convert LOCAL-NAME into a fully qualified name.
 A fully qualified name is a cons of the namespace name and the
 name of the element itself.  For example \"xsd:string\" is
-converted to \(\"http://www.w3.org/2001/XMLSchema\" . \"string\"\).
+converted to \(\"http://www.w3.org/2001/XMLSchema\" . \"string\").
 
 The USE-TNS argument specifies what to do when LOCAL-NAME has no
 namespace tag.  If USE-TNS is non-nil, the `soap-target-xmlns'
index f818fcd61d62063462d497a6ed7ed2bfca0eb2f5..595e0ef672269179632b11db98b677fd729a11e5 100644 (file)
@@ -59,7 +59,7 @@ It is used for TCP/IP devices."
 
 ;;;###tramp-autoload
 (defcustom tramp-adb-prompt
-  "^\\(?:[[:digit:]]*|?\\)?\\(?:[[:alnum:]\e;\[]*@[[:alnum:]]*[^#\\$]*\\)?[#\\$][[:space:]]"
+  "^\\(?:[[:digit:]]*|?\\)?\\(?:[[:alnum:]\e;[]*@[[:alnum:]]*[^#\\$]*\\)?[#\\$][[:space:]]"
   "Regexp used as prompt in almquist shell."
   :type 'string
   :version "24.4"
@@ -132,6 +132,7 @@ It is used for TCP/IP devices."
     (file-newer-than-file-p . tramp-handle-file-newer-than-file-p)
     (file-notify-add-watch . tramp-handle-file-notify-add-watch)
     (file-notify-rm-watch . tramp-handle-file-notify-rm-watch)
+    (file-notify-valid-p . tramp-handle-file-notify-valid-p)
     (file-ownership-preserved-p . ignore)
     (file-readable-p . tramp-handle-file-exists-p)
     (file-regular-p . tramp-handle-file-regular-p)
index 4dfdcd76e663ba31c29f8bdad1f8c6e884f4ec35..b7b0a1c016fe13a8226f57db4a5641f1c8e16ede 100644 (file)
@@ -443,6 +443,7 @@ Every entry is a list (NAME ADDRESS).")
     (file-newer-than-file-p . tramp-handle-file-newer-than-file-p)
     (file-notify-add-watch . tramp-gvfs-handle-file-notify-add-watch)
     (file-notify-rm-watch . tramp-handle-file-notify-rm-watch)
+    (file-notify-valid-p . tramp-handle-file-notify-valid-p)
     (file-ownership-preserved-p . ignore)
     (file-readable-p . tramp-gvfs-handle-file-readable-p)
     (file-regular-p . tramp-handle-file-regular-p)
@@ -1002,27 +1003,48 @@ file names."
             v (concat localname filename)
            "file-name-all-completions" result))))))))
 
-(defun tramp-gvfs-handle-file-notify-add-watch (file-name _flags _callback)
+(defun tramp-gvfs-handle-file-notify-add-watch (file-name flags _callback)
   "Like `file-notify-add-watch' for Tramp files."
   (setq file-name (expand-file-name file-name))
   (with-parsed-tramp-file-name file-name nil
-    (let ((p (start-process
-             "gvfs-monitor-file" (generate-new-buffer " *gvfs-monitor-file*")
-             "gvfs-monitor-file" (tramp-gvfs-url-file-name file-name))))
+    ;; We cannot watch directories, because `gvfs-monitor-dir' is not
+    ;; supported for gvfs-mounted directories.
+    (when (file-directory-p file-name)
+      (tramp-error
+       v 'file-notify-error "Monitoring not supported for `%s'" file-name))
+    (let* ((default-directory (file-name-directory file-name))
+          (events
+           (cond
+            ((and (memq 'change flags) (memq 'attribute-change flags))
+             '(created changed changes-done-hint moved deleted
+                       attribute-changed))
+            ((memq 'change flags)
+             '(created changed changes-done-hint moved deleted))
+            ((memq 'attribute-change flags) '(attribute-changed))))
+          (p (start-process
+              "gvfs-monitor-file" (generate-new-buffer " *gvfs-monitor-file*")
+              "gvfs-monitor-file" (tramp-gvfs-url-file-name file-name))))
       (if (not (processp p))
          (tramp-error
-          v 'file-notify-error "gvfs-monitor-file failed to start")
+          v 'file-notify-error "Monitoring not supported for `%s'" file-name)
        (tramp-message
         v 6 "Run `%s', %S" (mapconcat 'identity (process-command p) " ") p)
        (tramp-set-connection-property p "vector" v)
+       (tramp-compat-process-put p 'events events)
+       (tramp-compat-process-put p 'watch-name localname)
        (tramp-compat-set-process-query-on-exit-flag p nil)
-       (set-process-filter p 'tramp-gvfs-file-gvfs-monitor-file-process-filter)
-       (with-current-buffer (process-buffer p)
-         (setq default-directory (file-name-directory file-name)))
+       (set-process-filter p 'tramp-gvfs-monitor-file-process-filter)
+       ;; There might be an error if the monitor is not supported.
+       ;; Give the filter a chance to read the output.
+       (tramp-accept-process-output p 1)
+       (unless (memq (process-status p) '(run open))
+         (tramp-error
+          v 'file-notify-error "Monitoring not supported for `%s'" file-name))
        p))))
 
-(defun tramp-gvfs-file-gvfs-monitor-file-process-filter (proc string)
-  "Read output from \"gvfs-monitor-file\" and add corresponding file-notify events."
+(defun tramp-gvfs-monitor-file-process-filter (proc string)
+  "Read output from \"gvfs-monitor-file\" and add corresponding \
+file-notify events."
   (let* ((rest-string (tramp-compat-process-get proc 'rest-string))
         (dd (with-current-buffer (process-buffer proc) default-directory))
         (ddu (regexp-quote (tramp-gvfs-url-file-name dd))))
@@ -1033,6 +1055,8 @@ file names."
          ;; Attribute change is returned in unused wording.
          string (tramp-compat-replace-regexp-in-string
                  "ATTRIB CHANGED" "ATTRIBUTE_CHANGED" string))
+    (when (string-match "Monitoring not supported" string)
+      (delete-process proc))
 
     (while (string-match
            (concat "^[\n\r]*"
@@ -1040,10 +1064,10 @@ file names."
                    "File = \\([^\n\r]+\\)[\n\r]+"
                    "Event = \\([^[:blank:]]+\\)[\n\r]+")
            string)
-      (let ((action (intern-soft
+      (let ((file (match-string 1 string))
+           (action (intern-soft
                     (tramp-compat-replace-regexp-in-string
-                     "_" "-" (downcase (match-string 2 string)))))
-           (file (match-string 1 string)))
+                     "_" "-" (downcase (match-string 2 string))))))
        (setq string (replace-match "" nil nil string))
        ;; File names are returned as URL paths.  We must convert them.
        (when (string-match ddu file)
index 79b024e831082ddb310f2bcd45b1b604a532424a..433b2ba09c7d4edde2c5b2743f1b25499c67399d 100644 (file)
@@ -1008,6 +1008,7 @@ of command line.")
     (file-newer-than-file-p . tramp-sh-handle-file-newer-than-file-p)
     (file-notify-add-watch . tramp-sh-handle-file-notify-add-watch)
     (file-notify-rm-watch . tramp-handle-file-notify-rm-watch)
+    (file-notify-valid-p . tramp-handle-file-notify-valid-p)
     (file-ownership-preserved-p . tramp-sh-handle-file-ownership-preserved-p)
     (file-readable-p . tramp-sh-handle-file-readable-p)
     (file-regular-p . tramp-handle-file-regular-p)
@@ -3721,22 +3722,33 @@ Fall back to normal file name handler if no Tramp handler exists."
   "Like `file-notify-add-watch' for Tramp files."
   (setq file-name (expand-file-name file-name))
   (with-parsed-tramp-file-name file-name nil
-    (let* ((default-directory (file-name-directory file-name))
-          command events filter p sequence)
+    (let ((default-directory (file-name-directory file-name))
+         command events filter p sequence)
       (cond
        ;; gvfs-monitor-dir.
        ((setq command (tramp-get-remote-gvfs-monitor-dir v))
-       (setq filter 'tramp-sh-file-gvfs-monitor-dir-process-filter
+       (setq filter 'tramp-sh-gvfs-monitor-dir-process-filter
+             events
+             (cond
+              ((and (memq 'change flags) (memq 'attribute-change flags))
+               '(created changed changes-done-hint moved deleted
+                         attribute-changed))
+              ((memq 'change flags)
+               '(created changed changes-done-hint moved deleted))
+              ((memq 'attribute-change flags) '(attribute-changed)))
              sequence `(,command ,localname)))
        ;; inotifywait.
        ((setq command (tramp-get-remote-inotifywait v))
-       (setq filter 'tramp-sh-file-inotifywait-process-filter
+       (setq filter 'tramp-sh-inotifywait-process-filter
              events
              (cond
               ((and (memq 'change flags) (memq 'attribute-change flags))
-               "create,modify,move,delete,attrib")
-              ((memq 'change flags) "create,modify,move,delete")
-              ((memq 'attribute-change flags) "attrib"))
+               (concat "create,modify,move,moved_from,moved_to,move_self,"
+                       "delete,delete_self,attrib,ignored"))
+              ((memq 'change flags)
+               (concat "create,modify,move,moved_from,moved_to,move_self,"
+                       "delete,delete_self,ignored"))
+              ((memq 'attribute-change flags) "attrib,ignored"))
              sequence `(,command "-mq" "-e" ,events ,localname)))
        ;; None.
        (t (tramp-error
@@ -3758,12 +3770,22 @@ Fall back to normal file name handler if no Tramp handler exists."
           (mapconcat 'identity sequence " "))
        (tramp-message v 6 "Run `%s', %S" (mapconcat 'identity sequence " ") p)
        (tramp-set-connection-property p "vector" v)
+       ;; Needed for `tramp-sh-gvfs-monitor-dir-process-filter'.
+       (tramp-compat-process-put p 'events events)
+       (tramp-compat-process-put p 'watch-name localname)
        (tramp-compat-set-process-query-on-exit-flag p nil)
        (set-process-filter p filter)
+       ;; There might be an error if the monitor is not supported.
+       ;; Give the filter a chance to read the output.
+       (tramp-accept-process-output p 1)
+       (unless (memq (process-status p) '(run open))
+         (tramp-error
+          v 'file-notify-error "Monitoring not supported for `%s'" file-name))
        p))))
 
-(defun tramp-sh-file-gvfs-monitor-dir-process-filter (proc string)
-  "Read output from \"gvfs-monitor-dir\" and add corresponding file-notify events."
+(defun tramp-sh-gvfs-monitor-dir-process-filter (proc string)
+  "Read output from \"gvfs-monitor-dir\" and add corresponding \
+file-notify events."
   (let ((remote-prefix
         (with-current-buffer (process-buffer proc)
           (file-remote-p default-directory)))
@@ -3775,6 +3797,8 @@ Fall back to normal file name handler if no Tramp handler exists."
          ;; Attribute change is returned in unused wording.
          string (tramp-compat-replace-regexp-in-string
                  "ATTRIB CHANGED" "ATTRIBUTE_CHANGED" string))
+    (when (string-match "Monitoring not supported" string)
+      (delete-process proc))
 
     (while (string-match
            (concat "^[\n\r]*"
@@ -3783,29 +3807,36 @@ Fall back to normal file name handler if no Tramp handler exists."
                    "\\(Other = \\([^\n\r]+\\)[\n\r]+\\)?"
                    "Event = \\([^[:blank:]]+\\)[\n\r]+")
            string)
-      (let ((object
-            (list
-             proc
-             (intern-soft
-              (tramp-compat-replace-regexp-in-string
-               "_" "-" (downcase (match-string 4 string))))
-             ;; File names are returned as absolute paths.  We must
-             ;; add the remote prefix.
-             (concat remote-prefix (match-string 1 string))
-             (when (match-string 3 string)
-               (concat remote-prefix (match-string 3 string))))))
+      (let* ((file (match-string 1 string))
+            (file1 (match-string 3 string))
+            (object
+             (list
+              proc
+              (intern-soft
+               (tramp-compat-replace-regexp-in-string
+                "_" "-" (downcase (match-string 4 string))))
+              ;; File names are returned as absolute paths.  We must
+              ;; add the remote prefix.
+              (concat remote-prefix file)
+              (when file1 (concat remote-prefix file1)))))
        (setq string (replace-match "" nil nil string))
+       ;; Remove watch when file or directory to be watched is deleted.
+       (when (and (member (cadr object) '(moved deleted))
+                  (string-equal
+                   file (tramp-compat-process-get proc 'watch-name)))
+         (delete-process proc))
        ;; Usually, we would add an Emacs event now.  Unfortunately,
        ;; `unread-command-events' does not accept several events at
        ;; once.  Therefore, we apply the callback directly.
-       (tramp-compat-funcall 'file-notify-callback object)))
+       (when (member (cadr object) (tramp-compat-process-get proc 'events))
+         (tramp-compat-funcall 'file-notify-callback object))))
 
     ;; Save rest of the string.
     (when (zerop (length string)) (setq string nil))
     (when string (tramp-message proc 10 "Rest string:\n%s" string))
     (tramp-compat-process-put proc 'rest-string string)))
 
-(defun tramp-sh-file-inotifywait-process-filter (proc string)
+(defun tramp-sh-inotifywait-process-filter (proc string)
   "Read output from \"inotifywait\" and add corresponding file-notify events."
   (tramp-message proc 6 "%S\n%s" proc string)
   (dolist (line (split-string string "[\n\r]+" 'omit-nulls))
@@ -3827,6 +3858,9 @@ Fall back to normal file name handler if no Tramp handler exists."
                (tramp-compat-replace-regexp-in-string "_" "-" (downcase x))))
             (split-string (match-string 1 line) "," 'omit-nulls))
            (match-string 3 line))))
+      ;; Remove watch when file or directory to be watched is deleted.
+      (when (equal (cadr object) 'ignored)
+       (delete-process proc))
       ;; Usually, we would add an Emacs event now.  Unfortunately,
       ;; `unread-command-events' does not accept several events at
       ;; once.  Therefore, we apply the callback directly.
@@ -4297,7 +4331,7 @@ process to set up.  VEC specifies the connection."
   "List of local coding commands for inline transfer.
 Each item is a list that looks like this:
 
-\(FORMAT ENCODING DECODING\)
+\(FORMAT ENCODING DECODING)
 
 FORMAT is  symbol describing the encoding/decoding format.  It can be
 `b64' for base64 encoding, `uu' for uu encoding, or `pack' for simple packing.
@@ -4335,7 +4369,7 @@ with the encoded or decoded results, respectively.")
   "List of remote coding commands for inline transfer.
 Each item is a list that looks like this:
 
-\(FORMAT ENCODING DECODING [TEST]\)
+\(FORMAT ENCODING DECODING [TEST])
 
 FORMAT is a symbol describing the encoding/decoding format.  It can be
 `b64' for base64 encoding, `uu' for uu encoding, or `pack' for simple packing.
@@ -4508,7 +4542,7 @@ means discard it)."
   "List of compress and decompress commands for inline transfer.
 Each item is a list that looks like this:
 
-\(COMPRESS DECOMPRESS\)
+\(COMPRESS DECOMPRESS)
 
 COMPRESS or DECOMPRESS are strings with the respective commands.")
 
@@ -5519,7 +5553,7 @@ Return ATTR."
           (tramp-get-remote-id vec)
           (if (equal id-format 'integer) "" "n")
           (if (equal id-format 'integer)
-              "" "| sed -e s/^/\\\"/ -e s/\$/\\\"/"))))
+              "" "| sed -e s/^/\\\"/ -e s/\\$/\\\"/"))))
 
 (defun tramp-get-remote-uid-with-perl (vec id-format)
   (tramp-send-command-and-read
@@ -5570,7 +5604,7 @@ Return ATTR."
           (tramp-get-remote-id vec)
           (if (equal id-format 'integer) "" "n")
           (if (equal id-format 'integer)
-              "" "| sed -e s/^/\\\"/ -e s/\$/\\\"/"))))
+              "" "| sed -e s/^/\\\"/ -e s/\\$/\\\"/"))))
 
 (defun tramp-get-remote-gid-with-perl (vec id-format)
   (tramp-send-command-and-read
index c4f0f1f500a2cf6452d1bf4419a7ddc8180f296b..5910d1fd3a46968882e3b671cdf63771eaf78f65 100644 (file)
@@ -247,6 +247,7 @@ See `tramp-actions-before-shell' for more info.")
     (file-newer-than-file-p . tramp-handle-file-newer-than-file-p)
     (file-notify-add-watch . tramp-handle-file-notify-add-watch)
     (file-notify-rm-watch . tramp-handle-file-notify-rm-watch)
+    (file-notify-valid-p . tramp-handle-file-notify-valid-p)
     (file-ownership-preserved-p . ignore)
     (file-readable-p . tramp-handle-file-exists-p)
     (file-regular-p . tramp-handle-file-regular-p)
index 0969048c433fffa2e4a5657ea452bea5c64fc85d..fbb8c8a349eb0754d69ed50fef99f540c52358a3 100644 (file)
@@ -110,9 +110,9 @@ Any level x includes messages for all levels 1 .. x-1.  The levels are
 Each element looks like (REGEXP . DIRECTORY), with the same meaning like
 in `backup-directory-alist'.  If a Tramp file is backed up, and DIRECTORY
 is a local file name, the backup directory is prepended with Tramp file
-name prefix \(method, user, host\) of file.
+name prefix \(method, user, host) of file.
 
-\(setq tramp-backup-directory-alist backup-directory-alist\)
+\(setq tramp-backup-directory-alist backup-directory-alist)
 
 gives the same backup policy for Tramp files on their hosts like the
 policy for local files."
@@ -129,9 +129,9 @@ policy for local files."
 It has the same meaning like `bkup-backup-directory-info' from package
 `backup-dir'.  If a Tramp file is backed up, and BACKUP-DIR is a local
 file name, the backup directory is prepended with Tramp file name prefix
-\(method, user, host\) of file.
+\(method, user, host) of file.
 
-\(setq tramp-bkup-backup-directory-info bkup-backup-directory-info\)
+\(setq tramp-bkup-backup-directory-info bkup-backup-directory-info)
 
 gives the same backup policy for Tramp files on their hosts like the
 policy for local files."
@@ -464,15 +464,15 @@ host runs a registered shell, it shall be added to this list, too."
   (concat
    "\\`"
    (regexp-opt
-    (list "localhost" "localhost6" (system-name) "127\.0\.0\.1" "::1") t)
+    (list "localhost" "localhost6" (system-name) "127.0.0.1" "::1") t)
    "\\'")
   "Host names which are regarded as local host.")
 
 (defvar tramp-completion-function-alist nil
   "Alist of methods for remote files.
-This is a list of entries of the form \(NAME PAIR1 PAIR2 ...\).
+This is a list of entries of the form \(NAME PAIR1 PAIR2 ...).
 Each NAME stands for a remote access method.  Each PAIR is of the form
-\(FUNCTION FILE\).  FUNCTION is responsible to extract user names and host
+\(FUNCTION FILE).  FUNCTION is responsible to extract user names and host
 names from FILE for completion.  The following predefined FUNCTIONs exists:
 
  * `tramp-parse-rhosts'      for \"~/.rhosts\" like files,
@@ -908,7 +908,7 @@ and is a bit too general, then some files might be considered Tramp
 files which are not really Tramp files.
 
 Please note that the entry in `file-name-handler-alist' is made when
-this file \(tramp.el\) is loaded.  This means that this variable must be set
+this file \(tramp.el) is loaded.  This means that this variable must be set
 before loading tramp.el.  Alternatively, `file-name-handler-alist' can be
 updated after changing this variable.
 
@@ -940,7 +940,7 @@ See `tramp-file-name-structure' for more explanations.")
 This regexp should match partial Tramp file names only.
 
 Please note that the entry in `file-name-handler-alist' is made when
-this file \(tramp.el\) is loaded.  This means that this variable must be set
+this file \(tramp.el) is loaded.  This means that this variable must be set
 before loading tramp.el.  Alternatively, `file-name-handler-alist' can be
 updated after changing this variable.
 
@@ -993,18 +993,18 @@ checked via the following code:
 
 In the Emacs normally running Tramp, evaluate the above code
 \(replace \"xxx\" and \"yyy\" by the remote user and host name,
-respectively\).  You can do this, for example, by pasting it into
+respectively).  You can do this, for example, by pasting it into
 the `*scratch*' buffer and then hitting C-j with the cursor after the
 last closing parenthesis.  Note that it works only if you have configured
-\"ssh\" to run without password query, see ssh-agent\(1\).
+\"ssh\" to run without password query, see ssh-agent(1).
 
 You will see the number of bytes sent successfully to the remote host.
 If that number exceeds 1000, you can stop the execution by hitting
 C-g, because your Emacs is likely clean.
 
 When it is necessary to set `tramp-chunksize', you might consider to
-use an out-of-the-band method \(like \"scp\"\) instead of an internal one
-\(like \"ssh\"\), because setting `tramp-chunksize' to non-nil decreases
+use an out-of-the-band method \(like \"scp\") instead of an internal one
+\(like \"ssh\"), because setting `tramp-chunksize' to non-nil decreases
 performance.
 
 If your Emacs is buggy, the code stops and gives you an indication
@@ -2070,7 +2070,7 @@ ARGS are the arguments OPERATION has been called with."
                  'dired-print-file 'dired-shell-call-process))
     default-directory)
    ;; PROC.
-   ((eq operation 'file-notify-rm-watch)
+   ((member operation (list 'file-notify-rm-watch 'file-notify-valid-p))
     (when (processp (nth 0 args))
       (with-current-buffer (process-buffer (nth 0 args))
        default-directory)))
@@ -3407,7 +3407,7 @@ of."
 (defun tramp-handle-file-notify-add-watch (filename _flags _callback)
   "Like `file-notify-add-watch' for Tramp files."
   ;; This is the default handler.  tramp-gvfs.el and tramp-sh.el have
-  ;; its own one.
+  ;; their own one.
   (setq filename (expand-file-name filename))
   (with-parsed-tramp-file-name filename nil
     (tramp-error
@@ -3419,7 +3419,17 @@ of."
   (unless (processp proc)
     (tramp-error proc 'file-notify-error "Not a valid descriptor %S" proc))
   (tramp-message proc 6 "Kill %S" proc)
-  (kill-process proc))
+  (delete-process proc))
+
+(defun tramp-handle-file-notify-valid-p (proc)
+  "Like `file-notify-valid-p' for Tramp files."
+  (and proc (processp proc) (memq (process-status proc) '(run open))
+       ;; Sometimes, the process is still in status `run' when the
+       ;; file or directory to be watched is deleted already.
+       (with-current-buffer (process-buffer proc)
+        (file-exists-p
+         (concat (file-remote-p default-directory)
+                 (tramp-compat-process-get proc 'watch-name))))))
 
 ;;; Functions for establishing connection:
 
@@ -3615,7 +3625,7 @@ This is needed in order to hide `last-coding-system-used', which is set
 for process communication also."
   (with-current-buffer (process-buffer proc)
     ;; FIXME: If there is a gateway process, we need communication
-    ;; between several processes.  Too complicated to implement, so we
+    ;; between several processes.  Too complicate to implement, so we
     ;; read output from all processes.
     (let ((p (if (tramp-get-connection-property proc "gateway" nil) nil proc))
          buffer-read-only last-coding-system-used)
index 7fae9e6acc6e9a81b06dbbc148a597e62c8fb291..794a4676a5e41c43d85383816d4850d031d54e8d 100644 (file)
@@ -197,7 +197,7 @@ The key of an entry is the concatenation of the service name and
 service type of a discovered service.  The value is the service
 itself.  The format of a service is
 
-  \(INTERFACE PROTOCOL NAME TYPE DOMAIN FLAGS\)
+  \(INTERFACE PROTOCOL NAME TYPE DOMAIN FLAGS)
 
 The INTERFACE is a number, which represents the network interface
 the service is located at.  The corresponding network interface
@@ -233,7 +233,7 @@ The key of an entry is the concatenation of the service name and
 service type of a resolved service.  The value is the service
 itself.  The format of a service is
 
-  \(INTERFACE PROTOCOL NAME TYPE DOMAIN HOST APROTOCOL ADDRESS PORT TXT FLAGS\)
+  (INTERFACE PROTOCOL NAME TYPE DOMAIN HOST APROTOCOL ADDRESS PORT TXT FLAGS)
 
 INTERFACE, PROTOCOL, NAME, TYPE, DOMAIN and FLAGS have the same
 meaning as in `zeroconf-services-hash'.
@@ -275,7 +275,7 @@ supported keys depend on the service type.")
   "Returns all discovered Avahi services for a given service type TYPE.
 The service type is one of the returned values of
 `zeroconf-list-service-types'.  The return value is a list
-\(SERVICE1 SERVICE2 ...\).  See `zeroconf-services-hash' for the
+\(SERVICE1 SERVICE2 ...).  See `zeroconf-services-hash' for the
 format of SERVICE."
   (let (result)
     (maphash
@@ -385,7 +385,7 @@ type used when registering FUNCTION."
 NAME must be a string.  The service must be of service type
 TYPE. The resulting list has the format
 
-  \(INTERFACE PROTOCOL NAME TYPE DOMAIN FLAGS\)."
+  (INTERFACE PROTOCOL NAME TYPE DOMAIN FLAGS)."
   ;; Due to the service browser, all known services are kept in
   ;; `zeroconf-services-hash'.
   (gethash (concat name "/" type) zeroconf-services-hash nil))
@@ -395,7 +395,7 @@ TYPE. The resulting list has the format
 NAME must be a string.  The service must be of service type
 TYPE. The resulting list has the format
 
-  \(INTERFACE PROTOCOL NAME TYPE DOMAIN HOST APROTOCOL ADDRESS PORT TXT FLAGS\)."
+  (INTERFACE PROTOCOL NAME TYPE DOMAIN HOST APROTOCOL ADDRESS PORT TXT FLAGS)."
   (let* ((name (zeroconf-service-name service))
         (type (zeroconf-service-type service))
         (key (concat name "/" type)))
index 60f35c834b3e6cfec1ff7568ed41c61760319fd8..0c49211869edecfecb6064e09381434329f08da4 100644 (file)
@@ -179,6 +179,11 @@ comments always start in column zero.")
   "Non-nil if nested comments should be quoted.
 This should be locally set by each major mode if needed.")
 
+(defvar comment-quote-nested-function #'comment-quote-nested-default
+  "Function to quote nested comments in a region.
+It takes the same arguments as `comment-quote-nested-default',
+and is called with the buffer narrowed to a single comment.")
+
 (defvar comment-continue nil
   "Continuation string to insert for multiline comments.
 This string will be added at the beginning of each line except the very
@@ -382,7 +387,7 @@ function should first call this function explicitly."
           (concat (unless (eq comment-use-syntax t)
                      ;; `syntax-ppss' will detect escaping.
                      "\\(\\(^\\|[^\\\n]\\)\\(\\\\\\\\\\)*\\)")
-                   "\\(\\s<+\\|"
+                   "\\(?:\\s<+\\|"
                   (regexp-quote (comment-string-strip comment-start t t))
                   ;; Let's not allow any \s- but only [ \t] since \n
                   ;; might be both a comment-end marker and \s-.
@@ -412,28 +417,44 @@ function should first call this function explicitly."
 If UNP is non-nil, unquote nested comment markers."
   (setq cs (comment-string-strip cs t t))
   (setq ce (comment-string-strip ce t t))
-  (when (and comment-quote-nested (> (length ce) 0))
-    (let ((re (concat (comment-quote-re ce unp)
-                     "\\|" (comment-quote-re cs unp))))
-      (goto-char (point-min))
-      (while (re-search-forward re nil t)
-       (goto-char (match-beginning 0))
-       (forward-char 1)
-       (if unp (delete-char 1) (insert "\\"))
-       (when (= (length ce) 1)
-         ;; If the comment-end is a single char, adding a \ after that
-         ;; "first" char won't deactivate it, so we turn such a CE
-         ;; into !CS.  I.e. for pascal, we turn } into !{
-         (if (not unp)
-             (when (string= (match-string 0) ce)
-               (replace-match (concat "!" cs) t t))
-           (when (and (< (point-min) (match-beginning 0))
-                      (string= (buffer-substring (1- (match-beginning 0))
-                                                 (1- (match-end 0)))
-                               (concat "!" cs)))
-             (backward-char 2)
-             (delete-char (- (match-end 0) (match-beginning 0)))
-             (insert ce))))))))
+  (when (and comment-quote-nested
+            (> (length ce) 0))
+    (funcall comment-quote-nested-function cs ce unp)))
+
+(defun comment-quote-nested-default (cs ce unp)
+  "Quote comment delimiters in the buffer.
+It expects to be called with the buffer narrowed to a single comment.
+It is used as a default for `comment-quote-nested-function'.
+
+The arguments CS and CE are strings matching comment starting and
+ending delimiters respectively.
+
+If UNP is non-nil, comments are unquoted instead.
+
+To quote the delimiters, a \\ is inserted after the first
+character of CS or CE.  If CE is a single character it will
+change CE into !CS."
+  (let ((re (concat (comment-quote-re ce unp)
+                   "\\|" (comment-quote-re cs unp))))
+    (goto-char (point-min))
+    (while (re-search-forward re nil t)
+      (goto-char (match-beginning 0))
+      (forward-char 1)
+      (if unp (delete-char 1) (insert "\\"))
+      (when (= (length ce) 1)
+       ;; If the comment-end is a single char, adding a \ after that
+       ;; "first" char won't deactivate it, so we turn such a CE
+       ;; into !CS.  I.e. for pascal, we turn } into !{
+       (if (not unp)
+           (when (string= (match-string 0) ce)
+             (replace-match (concat "!" cs) t t))
+         (when (and (< (point-min) (match-beginning 0))
+                    (string= (buffer-substring (1- (match-beginning 0))
+                                               (1- (match-end 0)))
+                             (concat "!" cs)))
+           (backward-char 2)
+           (delete-char (- (match-end 0) (match-beginning 0)))
+           (insert ce)))))))
 
 ;;;;
 ;;;; Navigation
index 6c5c85b2fcc879d1ece8b96a72502db962926ef9..0e2fca349a5c85f3ecb345fb666ad5937dff3e39 100644 (file)
@@ -546,6 +546,7 @@ Many aspects this mode can be customized using
   (setq comment-end-skip "[ \t\r\n]*-->")
   (make-local-variable 'comment-line-break-function)
   (setq comment-line-break-function 'nxml-newline-and-indent)
+  (setq-local comment-quote-nested-function 'nxml-comment-quote-nested)
   (use-local-map nxml-mode-map)
   (save-excursion
     (save-restriction
@@ -1350,6 +1351,18 @@ of the inserted start-tag or nil if none was inserted."
                            start-tag-indent)))))
     inserted-start-tag-pos))
 
+(defun nxml-comment-quote-nested (_cs _ce unp)
+  "Quote nested comments in buffer.
+See `comment-quote-nested-function' for more information."
+  (goto-char (point-min))
+  (save-match-data
+    (while (re-search-forward "-[\\]*-" nil t)
+      (goto-char (match-beginning 0))
+      (forward-char 1)
+      (if unp
+         (delete-char 1)
+       (insert "\\")))))
+
 ;;; Indentation
 
 (defun nxml-indent-line ()
index 7e3dd66a56a8d2462d8d988d8659c46c27508f18..3985d511eacaf73122070947554ff815eff5f4b2 100644 (file)
    `(let* (,@(append varlist
                      '((modified (buffer-modified-p)) (buffer-undo-list t)
                        (inhibit-read-only t) (inhibit-point-motion-hooks t)
-                       before-change-functions after-change-functions
+                       (inhibit-modification-hooks t)
                        deactivate-mark buffer-file-name buffer-file-truename)))
      ,@body
      (when (and (not modified) (buffer-modified-p))
index 79afd80813f55134f714c742bd673ceae7c001f9..d05a7d86dbcad10ff1f558f24b3f3432f93bed98 100644 (file)
@@ -892,8 +892,7 @@ verbosity is controlled via the variable `lazy-lock-stealth-verbose'."
       (save-excursion
        (save-match-data
          (save-buffer-state
-          ;; Ensure syntactic fontification is always correct.
-          (font-lock-beginning-of-syntax-function next)
+          (next)
           ;; Find successive unfontified regions between BEG and END.
           (condition-case data
               (do-while beg
index 01939daa709bd74b521601c6bc59cf0c2956f3f4..7cb13ce600f14bfa99ab66cdea274ff3b3cf647b 100644 (file)
@@ -143,7 +143,7 @@ newlines are indicated with a symbol."
                     'longlines-window-change-function nil t))
         (let ((buffer-undo-list t)
               (inhibit-read-only t)
-             (after-change-functions nil)
+             (inhibit-modification-hooks t)
               (mod (buffer-modified-p))
              buffer-file-name buffer-file-truename)
           ;; Turning off undo is OK since (spaces + newlines) is
@@ -184,7 +184,7 @@ newlines are indicated with a symbol."
     (if longlines-showing
         (longlines-unshow-hard-newlines))
     (let ((buffer-undo-list t)
-         (after-change-functions nil)
+         (inhibit-modification-hooks t)
           (inhibit-read-only t)
          buffer-file-name buffer-file-truename)
       (if longlines-decoded
index 799e58b6af261e10bf3b9016046b14eea12dc112..11cd2530dd763609c566e9a544de3740af85b46f 100644 (file)
@@ -502,7 +502,7 @@ be saved in the second match data.")
 
 (defvar org-babel-result-w-name-regexp
   (concat org-babel-result-regexp
-         "\\([^ ()\f\t\n\r\v]+\\)\\(\(\\(.*\\)\)\\|\\)"))
+         "\\([^ ()\f\t\n\r\v]+\\)\\((\\(.*\\))\\|\\)"))
 
 (defvar org-babel-min-lines-for-block-output 10
   "The minimum number of lines for block output.
@@ -2456,7 +2456,7 @@ block but are passed literally to the \"example-block\"."
       (setq index (point))
       (while (and (re-search-forward (org-babel-noweb-wrap) nil t))
        (save-match-data (setf source-name (match-string 1)))
-       (save-match-data (setq evaluate (string-match "\(.*\)" source-name)))
+       (save-match-data (setq evaluate (string-match "(.*)" source-name)))
        (save-match-data
          (setq prefix
                (buffer-substring (match-beginning 0)
index 21a40b34f4999cf0bf7f6f7681263cd78d59f0b2..f4953a39eac553af624589a31cd668ed6650346f 100644 (file)
@@ -53,7 +53,7 @@
             (value (cdr pair)))
         (setq body
               (replace-regexp-in-string
-               (concat "\$" (regexp-quote name))
+               (concat "$" (regexp-quote name))
                (if (stringp value) value (format "%S" value))
                body))))
      vars)
index d0a413f11727ce969aded31c93850a23a8486fcc..811c9ef92c6ee986ea1b6e0c2650bb30f6b34f18 100644 (file)
@@ -183,7 +183,7 @@ This function is called by `org-babel-execute-src-block'."
   "Generate a file from a pdf file using imagemagick."
   (let ((cmd (concat "convert " im-in-options " " pdffile " "
                     im-out-options " " out-file)))
-    (message (concat "Converting pdffile file " cmd  "..."))
+    (message "Converting pdffile file %s..." cmd)
     (shell-command cmd)))
 
 (defun org-babel-latex-tex-to-pdf (file)
index 5391edff5fc9c5de0bc1280eb170176c06b9b468..04eab7c31dd784237f4e42af31f9b9fb33e65643 100644 (file)
@@ -111,7 +111,7 @@ blocks")
             (value (cdr pair)))
         (setq body
               (replace-regexp-in-string
-               (concat "\$" (regexp-quote name))
+               (concat "$" (regexp-quote name))
                (if (stringp value) value (format "%S" value))
                body))))
      vars)
index b083011bbf2c294b23f7a6e869bf8114390152dd..c25470666c86ab166881f43467d89db80ccdaaac 100644 (file)
@@ -64,14 +64,14 @@ To add files to this list use the `org-babel-lob-ingest' command."
 
 (defconst org-babel-block-lob-one-liner-regexp
   (concat
-   "^\\([ \t]*?\\)#\\+call:[ \t]+\\([^\(\)\n]+?\\)\\(\\[\\(.*\\)\\]\\|\\(\\)\\)"
-   "\(\\([^\n]*?\\)\)\\(\\[.+\\]\\|\\)[ \t]*\\(\\([^\n]*\\)\\)?")
+   "^\\([ \t]*?\\)#\\+call:[ \t]+\\([^()\n]+?\\)\\(\\[\\(.*\\)\\]\\|\\(\\)\\)"
+   "(\\([^\n]*?\\))\\(\\[.+\\]\\|\\)[ \t]*\\(\\([^\n]*\\)\\)?")
   "Regexp to match non-inline calls to predefined source block functions.")
 
 (defconst org-babel-inline-lob-one-liner-regexp
   (concat
-   "\\([^\n]*?\\)call_\\([^\(\)\n]+?\\)\\(\\[\\(.*?\\)\\]\\|\\(\\)\\)"
-   "\(\\([^\n]*?\\)\)\\(\\[\\(.*?\\)\\]\\)?")
+   "\\([^\n]*?\\)call_\\([^()\n]+?\\)\\(\\[\\(.*?\\)\\]\\|\\(\\)\\)"
+   "(\\([^\n]*?\\))\\(\\[\\(.*?\\)\\]\\)?")
   "Regexp to match inline calls to predefined source block functions.")
 
 (defconst org-babel-lob-one-liner-regexp
index e0775dba3bd806ab5c2f6489ec050382c2df0c7e..7ad474dfb4de30377ec2df773e6adea5b0e37023 100644 (file)
@@ -61,7 +61,7 @@ if ischar(ans), fid = fopen('%s', 'w'); fprintf(fid, '%%s\\n', ans); fclose(fid)
 else, dlmwrite('%s', ans, '\\t')
 end")
 
-(defvar org-babel-octave-eoe-indicator "\'org_babel_eoe\'")
+(defvar org-babel-octave-eoe-indicator "'org_babel_eoe'")
 
 (defvar org-babel-octave-eoe-output "ans = org_babel_eoe")
 
@@ -127,7 +127,7 @@ specifying a variable of the same value."
                             (if (listp (car var)) "; " ",")) "]")
     (cond
      ((stringp var)
-      (format "\'%s\'" var))
+      (format "'%s'" var))
      (t
       (format "%s" var)))))
 
index 3e79592f5a029411465de99b1d1e6c7318387d74..5c1e13142dad253e6ae030b56d08d039cdaa5775 100644 (file)
@@ -138,7 +138,7 @@ the variable."
          (setq ref (substring ref 0 (match-beginning 0))))
        ;; assign any arguments to pass to source block
        (when (string-match
-              "^\\(.+?\\)\\(\\[\\(.*\\)\\]\\|\\(\\)\\)\(\\(.*\\)\)$" ref)
+              "^\\(.+?\\)\\(\\[\\(.*\\)\\]\\|\\(\\)\\)(\\(.*\\))$" ref)
          (setq new-refere      (match-string 1 ref))
          (setq new-header-args (match-string 3 ref))
          (setq new-referent    (match-string 5 ref))
@@ -224,7 +224,7 @@ returned, or an empty string or \"*\" both of which are
 interpreted to mean the entire range and as such are equivalent
 to \"0:-1\"."
   (if (and (> (length index) 0) (string-match "^\\([^,]*\\),?" index))
-      (let* ((ind-re "\\(\\([-[:digit:]]+\\):\\([-[:digit:]]+\\)\\|\*\\)")
+      (let* ((ind-re "\\(\\([-[:digit:]]+\\):\\([-[:digit:]]+\\)\\|\\*\\)")
             (lgth (length lis))
             (portion (match-string 1 index))
             (remainder (substring index (match-end 0)))
index 7ed61b153e7e776bdef3d20dec4e6dd26ac38d31..6dff9adca8664e631ac6cfd61b5b329b99df9f27 100644 (file)
@@ -106,7 +106,7 @@ This function is called by `org-babel-execute-src-block'."
                     ('dbi (format "dbish --batch %s < %s | sed '%s' > %s"
                                  (or cmdline "")
                                  (org-babel-process-file-name in-file)
-                                 "/^+/d;s/^\|//;s/(NULL)/ /g;$d"
+                                 "/^+/d;s/^|//;s/(NULL)/ /g;$d"
                                  (org-babel-process-file-name out-file)))
                     ('monetdb (format "mclient -f tab %s < %s > %s"
                                       (or cmdline "")
@@ -186,7 +186,7 @@ This function is called by `org-babel-execute-src-block'."
    (lambda (pair)
      (setq body
           (replace-regexp-in-string
-           (format "\$%s" (car pair))  ;FIXME: "\$" == "$"!
+           (format "$%s" (car pair))
            (let ((val (cdr pair)))
               (if (listp val)
                   (let ((data-file (org-babel-temp-file "sql-data-")))
index 33c8d9b59fc391ee9ed845b47c96a71bdad89643..18d7fc8fd6a5a729e91cd5e8bc1dbe3dcba1d632 100644 (file)
@@ -119,7 +119,7 @@ This function is called by `org-babel-execute-src-block'."
    (lambda (pair)
      (setq body
           (replace-regexp-in-string
-           (format "\$%s" (car pair))  ;FIXME: "\$" == "$"!
+           (format "$%s" (car pair))
            (let ((val (cdr pair)))
               (if (listp val)
                   (let ((data-file (org-babel-temp-file "sqlite-data-")))
index c0846f9cd82a2eabd1cd53a8fff7caad2437c0bd..732522c3773a3278ed3891b1fe99810d4041ef2b 100644 (file)
@@ -302,7 +302,7 @@ Insert the source-code specified by SPEC into the current source
 code file.  This function uses `comment-region' which assumes
 that the appropriate major-mode is set.  SPEC has the form:
 
-  \(start-line file link source-name params body comment)"
+  (start-line file link source-name params body comment)"
   (let* ((start-line (nth 0 spec))
         (file (nth 1 spec))
         (link (nth 2 spec))
index ae5a252d8afd152432813a7f4b8590e4ade11a9c..0b3be562489095baf37fadcc57dc3224bcb1629f 100644 (file)
@@ -4603,7 +4603,8 @@ in `org-agenda-text-search-extra-files'."
                                             (goto-char (1- end))
                                             (throw :skip t)))
                              (if todo-only
-                                 (cons (concat "^\*+[ \t]+" org-not-done-regexp)
+                                 (cons (concat "^\\*+[ \t]+"
+                                                org-not-done-regexp)
                                        regexps+)
                                regexps+))
                        (goto-char beg)
index 06adc078c5dc2308b51524bb065b519d49aa35f1..7227803e6be638dc3227eb7c604cf1a3378220c0 100644 (file)
     (:howpublished . "How something strange has been published.  The first word should be capitalized.")
     (:institution  . "The sponsoring institution of a technical report.")
     (:journal      . "A journal name.")
-    (:key          . "Used for alphabetizing, cross-referencing, and creating a label when the author information is missing.  This field should not be confused with the key that appears in the \cite command and at the beginning of the database entry.")
+    (:key          . "Used for alphabetizing, cross-referencing, and creating a label when the author information is missing.  This field should not be confused with the key that appears in the \\cite command and at the beginning of the database entry.")
     (:month        . "The month in which the work was published or, for an unpublished work, in which it was written.  You should use the standard three-letter abbreviation,")
     (:note         . "Any additional information that can help the reader.  The first word should be capitalized.")
     (:number       . "Any additional information that can help the reader.  The first word should be capitalized.")
index 9489edf98bf3978ffa260a950b16a5754aee4467..b386eb11652124eea165b5d3e7ce663ba21a7e0c 100644 (file)
@@ -1235,7 +1235,7 @@ make this the default behavior.)"
                   (looking-at
                    (concat "^[ \t]*" org-clock-string
                            " \\[\\([0-9]\\{4\\}-[0-9]\\{2\\}-[0-9]\\{2\\}"
-                           " *\\sw+\.? +[012][0-9]:[0-5][0-9]\\)\\][ \t]*$")))
+                           " *\\sw+.? +[012][0-9]:[0-5][0-9]\\)\\][ \t]*$")))
              (message "Matched %s" (match-string 1))
              (setq ts (concat "[" (match-string 1) "]"))
              (goto-char (match-end 1))
index e938ab4ae4bb318930812464d4b9b0014b40796f..396aa3711d3143597e7c99400ceb6c2126c763dd 100644 (file)
@@ -354,7 +354,7 @@ CPHR is the complex heading regexp to use for parsing ITEM."
   (let (fixitem)
     (if (not cphr)
        item
-      (unless (string-match "^\*+ " item)
+      (unless (string-match "^\\*+ " item)
        (setq item (concat "* " item) fixitem t))
       (if (string-match cphr item)
          (setq item
@@ -369,7 +369,7 @@ CPHR is the complex heading regexp to use for parsing ITEM."
         0 (1+ (match-end 1))
         (list 'org-whitespace (* 2 (1- (org-reduced-level (- (match-end 1) (match-beginning 1))))))
         item))
-      (if fixitem (replace-regexp-in-string "^\*+ " "" item) item))))
+      (if fixitem (replace-regexp-in-string "^\\*+ " "" item) item))))
 
 (defun org-columns-compact-links (s)
   "Replace [[link][desc]] with [desc] or [link]."
index f527673cbd4d22e68ffb2ea5297aa0e0de3357a3..2b3445e47cd5af1a1f86ef6d92857e2f2097d164 100644 (file)
@@ -133,9 +133,10 @@ See `org-crypt-disable-auto-save'."
        (and
        (eq org-crypt-disable-auto-save 'ask)
        (y-or-n-p "org-decrypt: auto-save-mode may cause leakage.  Disable it for current buffer? ")))
-      (message (concat "org-decrypt: Disabling auto-save-mode for " (or (buffer-file-name) (current-buffer))))
-                                       ; The argument to auto-save-mode has to be "-1", since
-                                       ; giving a "nil" argument toggles instead of disabling.
+      (message "org-decrypt: Disabling auto-save-mode for %s"
+               (or (buffer-file-name) (current-buffer)))
+      ;; The argument to auto-save-mode has to be "-1", since
+      ;; giving a "nil" argument toggles instead of disabling.
       (auto-save-mode -1))
      ((eq org-crypt-disable-auto-save nil)
       (message "org-decrypt: Decrypting entry with auto-save-mode enabled.  This may cause leakage."))
index 07224d38bd16ed19dc3e016a393eac753403cd10..5c0e3e923289cde89dd6077e77520d2782531094 100644 (file)
@@ -61,7 +61,7 @@
       (setq path (org-link-escape (expand-file-name path)))
       (cond
        ((eq format 'html) (format "<a href=\"%s\">%s</a>" path desc))
-       ((eq format 'latex) (format "\href{%s}{%s}" path desc))
+       ((eq format 'latex) (format "\\href{%s}{%s}" path desc))
        ((eq format 'ascii) (format "%s (%s)" desc path))
        (t path)))))
 
index 573d7eeca2de0ab504be86365a8be1d5fac8d63b..9f4cfa3ec66845f4c80f35c40764c5558fbc1b9e 100644 (file)
@@ -4141,30 +4141,30 @@ Assuming TREE is a variable containing an Org buffer parse tree,
 the following example will return a flat list of all `src-block'
 and `example-block' elements in it:
 
-  \(org-element-map tree \\='(example-block src-block) \\='identity)
+  (org-element-map tree \\='(example-block src-block) \\='identity)
 
 The following snippet will find the first headline with a level
 of 1 and a \"phone\" tag, and will return its beginning position:
 
-  \(org-element-map tree \\='headline
-   \(lambda (hl)
-     \(and (= (org-element-property :level hl) 1)
-          \(member \"phone\" (org-element-property :tags hl))
-          \(org-element-property :begin hl)))
+  (org-element-map tree \\='headline
+   (lambda (hl)
+     (and (= (org-element-property :level hl) 1)
+          (member \"phone\" (org-element-property :tags hl))
+          (org-element-property :begin hl)))
    nil t)
 
 The next example will return a flat list of all `plain-list' type
 elements in TREE that are not a sub-list themselves:
 
-  \(org-element-map tree \\='plain-list \\='identity nil nil \\='plain-list)
+  (org-element-map tree \\='plain-list \\='identity nil nil \\='plain-list)
 
 Eventually, this example will return a flat list of all `bold'
 type objects containing a `latex-snippet' type object, even
 looking into captions:
 
-  \(org-element-map tree \\='bold
-   \(lambda (b)
-     \(and (org-element-map b \\='latex-snippet \\='identity nil t) b))
+  (org-element-map tree \\='bold
+   (lambda (b)
+     (and (org-element-map b \\='latex-snippet \\='identity nil t) b))
    nil nil nil t)"
   ;; Ensure TYPES and NO-RECURSION are a list, even of one element.
   (unless (listp types) (setq types (list types)))
index f8f218f6f55ea4091f08ce6870f5c877af03a0ce..89d6b951588192bc51b73f334aafbe7f6788694d 100644 (file)
@@ -359,8 +359,8 @@ packages to be loaded, add these packages to `org-latex-packages-alist'."
     ("lessgtr" "\\lessgtr" t "&lessgtr;" "[less than or greater than]" "[less than or greater than]" "≶")
     ("lesseqgtr" "\\lesseqgtr" t "&lesseqgtr;" "[less than or equal or greater than or equal]" "[less than or equal or greater than or equal]" "⋚")
     ("ll" "\\ll" t  "&Lt;" "<<" "<<" "≪")
-    ("Ll" "\lll" t "&Ll;" "<<<" "<<<" "⋘")
-    ("lll" "\lll" t "&Ll;" "<<<" "<<<" "⋘")
+    ("Ll" "\\lll" t "&Ll;" "<<<" "<<<" "⋘")
+    ("lll" "\\lll" t "&Ll;" "<<<" "<<<" "⋘")
     ("gg" "\\gg" t  "&Gt;" ">>" ">>" "≫")
     ("Gg" "\\ggg" t "&Gg;" ">>>" ">>>" "⋙")
     ("ggg" "\\ggg" t "&Gg;" ">>>" ">>>" "⋙")
index 0f086975aa7d7f47e2c405f800941441cb587f87..5d853e62bc14cb8ae4904cc4c35065062d579e8e 100644 (file)
@@ -243,7 +243,7 @@ positions, and the definition, when inlined."
 
 This matches only pure definitions like [1] or [fn:name] at the
 beginning of a line.  It does not match references like
-\[fn:name:definition], where the footnote text is included and
+[fn:name:definition], where the footnote text is included and
 defined locally.
 
 The return value will be nil if not at a footnote definition, and
index 28bed8dcc59cb4284ce0c51cddd18721e4800679..c8266500fe36b379802205274d3d4c039c679075 100644 (file)
@@ -230,7 +230,7 @@ This variable needs to be set before org.el is loaded.  If you
 need to make a change while Emacs is running, use the customize
 interface or run the following code after updating it:
 
-  \(when (featurep \\='org-element) (load \"org-element\" t t))"
+  (when (featurep \\='org-element) (load \"org-element\" t t))"
   :group 'org-plain-lists
   :version "24.1"
   :type 'boolean
@@ -620,11 +620,11 @@ point-at-bol:
 
 will get the following structure:
 
-\(\(1 0 \"- \"  nil \"[X]\" nil 97\)
\(18 2 \"1. \"  nil nil nil 34\)
\(34 2 \"5. \" \"5\" nil nil 55\)
\(97 0 \"- \"  nil nil nil 131\)
\(109 2 \"+ \" nil nil \"tag\" 131\)
+ ((1 0 \"- \"  nil \"[X]\" nil 97)
 (18 2 \"1. \"  nil nil nil 34)
 (34 2 \"5. \" \"5\" nil nil 55)
 (97 0 \"- \"  nil nil nil 131)
 (109 2 \"+ \" nil nil \"tag\" 131))
 
 Assume point is at an item."
   (save-excursion
@@ -2015,7 +2015,7 @@ previous item, plus ARGS extra arguments.
 
 FUNCTION is applied on items in reverse order.
 
-As an example, \(org-apply-on-list \(lambda \(result\) \(1+ result\)\) 0\)
+As an example, \(org-apply-on-list \(lambda \(result) \(1+ result)) 0)
 will return the number of items in the current list.
 
 Sublists of the list are skipped.  Cursor is always at the
@@ -2931,13 +2931,13 @@ For example, the following list:
 
 will be parsed as:
 
-\(ordered
-  \(nil \"first item\"
-  \(unordered
-    \(nil \"sub-item one\"\)
-    \(nil \"[CBON] sub-item two\"\)\)
-  \"more text in first item\"\)
-  \(3 \"last item\"\)\)
+ (ordered
+  (nil \"first item\"
+  (unordered
+    (nil \"sub-item one\")
+    (nil \"[CBON] sub-item two\"))
+  \"more text in first item\")
+  (3 \"last item\"))
 
 Point is left at list end."
   (defvar parse-item)                   ;FIXME: Or use `cl-labels' or `letrec'.
index 478ad933ae2f0d9047d67c10d83a5f68633eb0cd..174e36ed63234c99456ba46345159987fab892d7 100644 (file)
@@ -440,8 +440,8 @@ available parameters."
   "Check if the table has a marking column.
 If yes remove the column and the special lines."
   (let ((special (if maybe-quoted
-                    "^[ \t]*| *\\\\?[\#!$*_^/ ] *|"
-                  "^[ \t]*| *[\#!$*_^/ ] *|"))
+                    "^[ \t]*| *\\\\?[#!$*_^/ ] *|"
+                  "^[ \t]*| *[#!$*_^/ ] *|"))
        (ignore  (if maybe-quoted
                     "^[ \t]*| *\\\\?[!$_^/] *|"
                   "^[ \t]*| *[!$_^/] *|")))
@@ -3248,7 +3248,7 @@ formulas that use a range of rows or columns, it may often be better
 to anchor the formula with \"I\" row markers, or to offset from the
 borders of the table using the @< @> $< $> makers."
   (let (n nmax len char (start 0))
-    (while (string-match "\\([@$]\\)\\(<+\\|>+\\)\\|\\(remote([^\)]+)\\)"
+    (while (string-match "\\([@$]\\)\\(<+\\|>+\\)\\|\\(remote([^)]+)\\)"
                         s start)
       (if (match-end 3)
          (setq start (match-end 3))
index c7b64cccb19ebd96adbadf4c6c3a5aec05cc81e8..7a6d6cc1b3fd4af54ac8c7c31b301f737b318a76 100644 (file)
@@ -381,7 +381,7 @@ core modules, nor modules from the CONTRIB directory).  Just add symbols
 to the end of the list.  If the package is called org-xyz.el, then you need
 to add the symbol `xyz', and the package must have a call to:
 
-   \(provide \\='org-xyz)
+   (provide \\='org-xyz)
 
 For export specific modules, see also `org-export-backends'."
   :group 'org
@@ -465,26 +465,26 @@ need to make a change while Emacs is running, use the customize
 interface or run the following code, where VAL stands for the new
 value of the variable, after updating it:
 
-  \(progn
-    \(setq org-export--registered-backends
-          \(org-remove-if-not
-           \(lambda (backend)
-             \(let ((name (org-export-backend-name backend)))
-               \(or (memq name val)
-                   \(catch \\='parentp
-                     \(dolist (b val)
-                       \(and (org-export-derived-backend-p b name)
-                            \(throw \\='parentp t)))))))
+  (progn
+    (setq org-export--registered-backends
+          (org-remove-if-not
+           (lambda (backend)
+             (let ((name (org-export-backend-name backend)))
+               (or (memq name val)
+                   (catch \\='parentp
+                     (dolist (b val)
+                       (and (org-export-derived-backend-p b name)
+                            (throw \\='parentp t)))))))
            org-export--registered-backends))
-    \(let ((new-list (mapcar \\='org-export-backend-name
+    (let ((new-list (mapcar \\='org-export-backend-name
                             org-export--registered-backends)))
-      \(dolist (backend val)
-        \(cond
-         \((not (load (format \"ox-%s\" backend) t t))
-          \(message \"Problems while trying to load export back-end \\=`%s\\='\"
+      (dolist (backend val)
+        (cond
+         ((not (load (format \"ox-%s\" backend) t t))
+          (message \"Problems while trying to load export back-end \\=`%s\\='\"
                    backend))
-         \((not (memq backend new-list)) (push backend new-list))))
-      \(set-default \\='org-export-backends new-list)))
+         ((not (memq backend new-list)) (push backend new-list))))
+      (set-default \\='org-export-backends new-list)))
 
 Adding a back-end to this list will also pull the back-end it
 depends on, if any."
@@ -2957,7 +2957,7 @@ its value is 0.
 
 For example,
 
-  \(:days \"%dd\" :hours \"%d\" :require-hours t :minutes \":%02d\"
+   (:days \"%dd\" :hours \"%d\" :require-hours t :minutes \":%02d\"
     :require-minutes t)
 
 means durations longer than a day will be expressed in days,
@@ -2967,7 +2967,7 @@ hour).
 
 The value
 
-  \(:days \"%dd\" :minutes \"%dm\")
+  (:days \"%dd\" :minutes \"%dm\")
 
 means durations longer than a day will be expressed in days and
 minutes, and durations less than a day will be expressed entirely
@@ -3802,8 +3802,8 @@ images at the same place."
 
 (defcustom org-format-latex-header "\\documentclass{article}
 \\usepackage[usenames]{color}
-\[PACKAGES]
-\[DEFAULT-PACKAGES]
+[PACKAGES]
+[DEFAULT-PACKAGES]
 \\pagestyle{empty}             % do not remove
 % The settings below are copied from fullpage.sty
 \\setlength{\\textwidth}{\\paperwidth}
@@ -3889,7 +3889,7 @@ a string.
 
 A cell is of the format:
 
-  \( \"options\" \"package\" SNIPPET-FLAG).
+  ( \"options\" \"package\" SNIPPET-FLAG).
 
 If SNIPPET-FLAG is non-nil, the package also needs to be included
 when compiling LaTeX snippets into images for inclusion into
@@ -3917,7 +3917,7 @@ Each element is either a cell or a string.
 
 A cell is of the format:
 
-    \(\"options\" \"package\" SNIPPET-FLAG)
+    (\"options\" \"package\" SNIPPET-FLAG)
 
 SNIPPET-FLAG, when non-nil, indicates that this package is also
 needed when turning LaTeX snippets into images for inclusion into
@@ -7302,7 +7302,7 @@ Optional arguments START and END can be used to limit the range."
 (defconst org-goto-help
   "Browse buffer copy, to find location or copy text.%s
 RET=jump to location             C-g=quit and return to previous location
-\[Up]/[Down]=next/prev headline   TAB=cycle visibility   [/] org-occur")
+[Up]/[Down]=next/prev headline   TAB=cycle visibility   [/] org-occur")
 
 (defvar org-goto-start-pos) ; dynamically scoped parameter
 
@@ -7682,7 +7682,7 @@ command."
              (re-search-forward org-outline-regexp-bol)
              (beginning-of-line 0))
            (skip-chars-backward " \r\n")
-           (and (not (looking-back "^\*+" (line-beginning-position)))
+           (and (not (looking-back "^\\*+" (line-beginning-position)))
                 (looking-at "[ \t]+") (replace-match ""))
            (unless (eobp) (forward-char 1))
            (when (looking-at "^\\*")
@@ -11389,7 +11389,7 @@ on the system \"/user@host:\"."
                         (setq level (org-reduced-level
                                      (- (match-end 1) (match-beginning 1)))
                               txt (org-link-display-format (match-string 4))
-                              txt (replace-regexp-in-string "\\( *\[[0-9]+/?[0-9]*%?\]\\)+$" "" txt)
+                              txt (replace-regexp-in-string "\\( *[[0-9]+/?[0-9]*%?]\\)+$" "" txt)
                               re (format org-complex-heading-regexp-format
                                          (regexp-quote (match-string 4))))
                         (when org-refile-use-outline-path
@@ -16355,7 +16355,7 @@ While prompting, a calendar is popped up - you can also select the
 date with the mouse (button 1).  The calendar shows a period of three
 months.  To scroll it to other months, use the keys `>' and `<'.
 If you don't like the calendar, turn it off with
-       \(setq org-read-date-popup-calendar nil)
+       (setq org-read-date-popup-calendar nil)
 
 With optional argument TO-TIME, the date will immediately be converted
 to an internal time.
@@ -17912,7 +17912,7 @@ If EXCLUDE-TMP is non-nil, ignore temporary buffers."
           ((eq predicate 'files)
            (lambda (b) (with-current-buffer b (derived-mode-p 'org-mode))))
           ((eq predicate 'export)
-           (lambda (b) (string-match "\*Org .*Export" (buffer-name b))))
+           (lambda (b) (string-match "\\*Org .*Export" (buffer-name b))))
           ((eq predicate 'agenda)
            (lambda (b)
              (with-current-buffer b
@@ -17921,7 +17921,7 @@ If EXCLUDE-TMP is non-nil, ignore temporary buffers."
                     (member (file-truename bfn) agenda-files)))))
           (t (lambda (b) (with-current-buffer b
                            (or (derived-mode-p 'org-mode)
-                               (string-match "\*Org .*Export"
+                               (string-match "\\*Org .*Export"
                                              (buffer-name b)))))))))
     (delq nil
          (mapcar
@@ -23005,7 +23005,7 @@ no special treatment.  In particular, a simple \\[universal-argument] prefix \
 will just
 plainly yank the text as it is.
 
-\[1] The test checks if the first non-white line is a heading
+[1] The test checks if the first non-white line is a heading
     and if there are no other headings with fewer stars."
   (interactive "P")
   (org-yank-generic 'yank arg))
index fc4f574a4c47540b0cbb2ffea02817ddd462da30..2b2d92ee2fcba81c5b4a90d4e476b4eb5f3797da 100644 (file)
@@ -2598,7 +2598,7 @@ Bind `org-html-standalone-image-predicate' to constrain paragraph
 further.  For example, to check for only captioned standalone
 images, set it to:
 
-  \(lambda (paragraph) (org-element-property :caption paragraph))"
+  (lambda (paragraph) (org-element-property :caption paragraph))"
   (let ((paragraph (case (org-element-type element)
                     (paragraph element)
                     (link (org-export-get-parent element)))))
index a77eaedb9a08abf06d0c6d8bc5813bb7b106a6c2..3da52243d30ee22b14ce59b79205a2db2ee9b857 100644 (file)
@@ -447,7 +447,7 @@ or subject for the event."
     ;; characters with literal \n.
     (replace-regexp-in-string
      "[ \t]*\n" "\\n"
-     (replace-regexp-in-string "[\\,;]" "\\\&" s)
+     (replace-regexp-in-string "[\\,;]" "\\\\\\&" s)
      nil t)))
 
 (defun org-icalendar-fold-string (s)
index cea02ff45488b6d0972a6a0929d07d9c516b9102..51f7b17a8bf08114bf38d1fd549390fcd5cd1f33 100644 (file)
 If #+LATEX_CLASS is set in the buffer, use its value and the
 associated information.  Here is the structure of each cell:
 
-  \(class-name
+  (class-name
     header-string
-    \(numbered-section . unnumbered-section)
+    (numbered-section . unnumbered-section)
     ...)
 
 The header string
@@ -281,11 +281,11 @@ section string and will be replaced by the title of the section.
 Instead of a cons cell (numbered . unnumbered), you can also
 provide a list of 2 or 4 elements,
 
-  \(numbered-open numbered-close)
+  (numbered-open numbered-close)
 
 or
 
-  \(numbered-open numbered-close unnumbered-open unnumbered-close)
+  (numbered-open numbered-close unnumbered-open unnumbered-close)
 
 providing opening and closing strings for a LaTeX environment
 that should represent the document section.  The opening clause
@@ -591,18 +591,18 @@ The function should return the string to be exported.
 For example, the variable could be set to the following function
 in order to mimic default behavior:
 
-\(defun org-latex-format-inlinetask \(todo type priority name tags contents\)
+\(defun org-latex-format-inlinetask (todo type priority name tags contents)
 \"Format an inline task element for LaTeX export.\"
-  \(let ((full-title
-        \(concat
-         \(when todo
-            \(format \"\\\\textbf{\\\\textsf{\\\\textsc{%s}}} \" todo))
-         \(when priority (format \"\\\\framebox{\\\\#%c} \" priority))
+  (let ((full-title
+        (concat
+         (when todo
+            (format \"\\\\textbf{\\\\textsf{\\\\textsc{%s}}} \" todo))
+         (when priority (format \"\\\\framebox{\\\\#%c} \" priority))
          title
-         \(when tags
-            \(format \"\\\\hfill{}\\\\textsc{:%s:}\"
-                    \(mapconcat \\='identity tags \":\")))))
-    \(format (concat \"\\\\begin{center}\\n\"
+         (when tags
+            (format \"\\\\hfill{}\\\\textsc{:%s:}\"
+                    (mapconcat \\='identity tags \":\")))))
+    (format (concat \"\\\\begin{center}\\n\"
                    \"\\\\fbox{\\n\"
                    \"\\\\begin{minipage}[c]{.6\\\\textwidth}\\n\"
                    \"%s\\n\\n\"
@@ -626,21 +626,21 @@ listings package, and if you want to have color, the color
 package.  Just add these to `org-latex-packages-alist', for
 example using customize, or with something like:
 
-  \(require \\='ox-latex)
-  \(add-to-list \\='org-latex-packages-alist \\='(\"\" \"listings\"))
-  \(add-to-list \\='org-latex-packages-alist \\='(\"\" \"color\"))
+  (require \\='ox-latex)
+  (add-to-list \\='org-latex-packages-alist \\='(\"\" \"listings\"))
+  (add-to-list \\='org-latex-packages-alist \\='(\"\" \"color\"))
 
 Alternatively,
 
-  \(setq org-latex-listings \\='minted)
+  (setq org-latex-listings \\='minted)
 
 causes source code to be exported using the minted package as
 opposed to listings.  If you want to use minted, you need to add
 the minted package to `org-latex-packages-alist', for example
 using customize, or with
 
-  \(require \\='ox-latex)
-  \(add-to-list \\='org-latex-packages-alist \\='(\"\" \"minted\"))
+  (require \\='ox-latex)
+  (add-to-list \\='org-latex-packages-alist \\='(\"\" \"minted\"))
 
 In addition, it is necessary to install pygments
 \(http://pygments.org), and to configure the variable
@@ -689,9 +689,9 @@ These options are supplied as a comma-separated list to the
 a list containing two strings: the name of the option, and the
 value.  For example,
 
-  \(setq org-latex-listings-options
+  (setq org-latex-listings-options
     '((\"basicstyle\" \"\\\\small\")
-      \(\"keywordstyle\" \"\\\\color{black}\\\\bfseries\\\\underbar\")))
+      (\"keywordstyle\" \"\\\\color{black}\\\\bfseries\\\\underbar\")))
 
 will typeset the code in a small size font with underlined, bold
 black keywords.
@@ -736,8 +736,8 @@ These options are supplied within square brackets in
 be a list containing two strings: the name of the option, and the
 value.  For example,
 
-  \(setq org-latex-minted-options
-    '\((\"bgcolor\" \"bg\") \(\"frame\" \"lines\")))
+  (setq org-latex-minted-options
+    '((\"bgcolor\" \"bg\") (\"frame\" \"lines\")))
 
 will result in src blocks being exported with
 
@@ -757,8 +757,8 @@ options will be applied to blocks of all languages."
 It is used during export of src blocks by the listings and minted
 latex packages.  For example,
 
-  \(setq org-latex-custom-lang-environments
-     '\(\(python \"pythoncode\"\)\)\)
+  (setq org-latex-custom-lang-environments
+     '((python \"pythoncode\")))
 
 would have the effect that if org encounters begin_src python
 during latex export it will output
@@ -2876,8 +2876,8 @@ Return PDF file name or an error if it couldn't be produced."
        ;; Check for process failure.  Provide collected errors if
        ;; possible.
        (if (not (file-exists-p pdffile))
-           (error (concat (format "PDF file %s wasn't produced" pdffile)
-                          (when errors (concat ": " errors))))
+           (error "PDF file %s wasn't produced%s" pdffile
+                  (if errors (concat ": " errors) ""))
          ;; Else remove log files, when specified, and signal end of
          ;; process to user, along with any error encountered.
          (when (and (not snippet) org-latex-remove-logfiles)
index 8b4ddc7e651680d1023c6923110f59a02b739d91..09ad1866c0ef815d6af032163f1918a69a7f300d 100644 (file)
@@ -206,8 +206,8 @@ in this list - but it does not hurt if it is present."
 It is used during export of src blocks by the listings and
 man packages.  For example,
 
-  \(setq org-man-custom-lang-environments
-     '\(\(python \"pythoncode\"\)\)\)
+  (setq org-man-custom-lang-environments
+     '((python \"pythoncode\")))
 
 would have the effect that if org encounters begin_src python
 during man export."
@@ -1219,8 +1219,8 @@ Return PDF file name or an error if it couldn't be produced."
        ;; Check for process failure.  Provide collected errors if
        ;; possible.
        (if (not (file-exists-p pdffile))
-           (error (concat (format "PDF file %s wasn't produced" pdffile)
-                          (when errors (concat ": " errors))))
+           (error "PDF file %s wasn't produced%s" pdffile
+                  (if errors (concat ": " errors) ""))
          ;; Else remove log files, when specified, and signal end of
          ;; process to user, along with any error encountered.
          (when org-man-remove-logfiles
index a028142031727766c731f58c748101c371551f68..9abda33f59ddae68b5cb69de300cbd90465304ff 100644 (file)
@@ -231,13 +231,13 @@ standard Emacs.")
 (defvar org-odt-automatic-styles '()
   "Registry of automatic styles for various OBJECT-TYPEs.
 The variable has the following form:
-\(\(OBJECT-TYPE-A
-  \(\(OBJECT-NAME-A.1 OBJECT-PROPS-A.1\)
-   \(OBJECT-NAME-A.2 OBJECT-PROPS-A.2\) ...\)\)
\(OBJECT-TYPE-B
-  \(\(OBJECT-NAME-B.1 OBJECT-PROPS-B.1\)
-   \(OBJECT-NAME-B.2 OBJECT-PROPS-B.2\) ...\)\)
...\).
+ ((OBJECT-TYPE-A
+   ((OBJECT-NAME-A.1 OBJECT-PROPS-A.1)
+    (OBJECT-NAME-A.2 OBJECT-PROPS-A.2) ...))
 (OBJECT-TYPE-B
+   ((OBJECT-NAME-B.1 OBJECT-PROPS-B.1)
+    (OBJECT-NAME-B.2 OBJECT-PROPS-B.2) ...))
 ...).
 
 OBJECT-TYPEs could be \"Section\", \"Table\", \"Figure\" etc.
 OBJECT-PROPS is (typically) a plist created by passing
@@ -292,7 +292,7 @@ according to the default face identified by the `htmlfontify'.")
 
 This is an alist where each element is of the form:
 
-  \(STYLE-NAME ATTACH-FMT REF-MODE REF-FMT)
+  (STYLE-NAME ATTACH-FMT REF-MODE REF-FMT)
 
 ATTACH-FMT controls how labels and captions are attached to an
 entity.  It may contain following specifiers - %e and %c.  %e is
@@ -319,7 +319,7 @@ See also `org-odt-format-label'.")
 
 This is a list where each entry is of the form:
 
-  \(CATEGORY-HANDLE OD-VARIABLE LABEL-STYLE CATEGORY-NAME ENUMERATOR-PREDICATE)
+  (CATEGORY-HANDLE OD-VARIABLE LABEL-STYLE CATEGORY-NAME ENUMERATOR-PREDICATE)
 
 CATEGORY_HANDLE identifies the captionable entity in question.
 
@@ -670,11 +670,11 @@ The default value simply returns the value of CONTENTS."
   "Function to format headline text.
 
 This function will be called with 5 arguments:
-TODO      the todo keyword \(string or nil\).
-TODO-TYPE the type of todo \(symbol: `todo', `done', nil\)
-PRIORITY  the priority of the headline \(integer or nil\)
-TEXT      the main headline text \(string\).
-TAGS      the tags string, separated with colons \(string or nil\).
+TODO      the todo keyword (string or nil).
+TODO-TYPE the type of todo (symbol: `todo', `done', nil)
+PRIORITY  the priority of the headline (integer or nil)
+TEXT      the main headline text (string).
+TAGS      the tags string, separated with colons (string or nil).
 
 The function result will be used as headline text."
   :group 'org-export-odt
@@ -852,11 +852,11 @@ ON-OR-OFF                 := t | nil
 For example, with the following configuration
 
 \(setq org-odt-table-styles
-      '\(\(\"TableWithHeaderRowsAndColumns\" \"Custom\"
-         \(\(use-first-row-styles . t\)
-          \(use-first-column-styles . t\)\)\)
-        \(\"TableWithHeaderColumns\" \"Custom\"
-         \(\(use-first-column-styles . t\)\)\)\)\)
+      '((\"TableWithHeaderRowsAndColumns\" \"Custom\"
+         ((use-first-row-styles . t)
+          (use-first-column-styles . t)))
+        (\"TableWithHeaderColumns\" \"Custom\"
+         ((use-first-column-styles . t)))))
 
 1. A table associated with \"TableWithHeaderRowsAndColumns\"
    style will use the following table-cell styles -
@@ -4089,8 +4089,8 @@ contextual information."
                                         nil standard-output nil (cdr cmd)))))
                    (or (zerop exitcode)
                        (error (concat "Unable to create OpenDocument file."
-                                      (format "  Zip failed with error (%s)"
-                                              err-string)))))
+                                      "  Zip failed with error (%s)")
+                              err-string)))
                  cmds)))
             ;; Move the zip file from temporary work directory to
             ;; user-mandated location.
index 08762fbbfddec282883fbb0db766712c499fbec9..52d925adbf902cd8ea04ca8b6af786979082548b 100644 (file)
@@ -69,12 +69,12 @@ CDR of each element is in one of the following forms:
    alternating keys and values, specifying parameters for the
    publishing process.
 
-     \(:property value :property value ... )
+     (:property value :property value ... )
 
 2. A meta-project definition, specifying of a list of
    sub-projects:
 
-     \(:components (\"project-1\" \"project-2\" ...))
+     (:components (\"project-1\" \"project-2\" ...))
 
 When the CDR of an element of org-publish-project-alist is in
 this second form, the elements of the list after `:components'
index d5e650afb79d76ceb2fd6b4e6ec466e1b32560b3..67daf6f979ed853d11e738651ec3ea97f23197e9 100644 (file)
@@ -137,9 +137,9 @@ If nil it will default to `buffer-file-coding-system'."
 If #+TEXINFO_CLASS is set in the buffer, use its value and the
 associated information.  Here is the structure of each cell:
 
-  \(class-name
+  (class-name
     header-string
-    \(numbered-section . unnumbered-section)
+    (numbered-section . unnumbered-section)
     ...)
 
 
@@ -210,14 +210,14 @@ order to reproduce the default set-up:
 
 \(defun org-texinfo-format-headline (todo todo-type priority text tags)
   \"Default format function for a headline.\"
-  \(concat (when todo
-            \(format \"\\\\textbf{\\\\textsc{\\\\textsf{%s}}} \" todo))
-         \(when priority
-            \(format \"\\\\framebox{\\\\#%c} \" priority))
+  (concat (when todo
+            (format \"\\\\textbf{\\\\textsc{\\\\textsf{%s}}} \" todo))
+         (when priority
+            (format \"\\\\framebox{\\\\#%c} \" priority))
          text
-         \(when tags
-            \(format \"\\\\hfill{}\\\\textsc{%s}\"
-              \(mapconcat \\='identity tags \":\"))))"
+         (when tags
+            (format \"\\\\hfill{}\\\\textsc{%s}\"
+              (mapconcat \\='identity tags \":\"))))"
   :group 'org-export-texinfo
   :type 'function)
 
@@ -337,18 +337,18 @@ The function should return the string to be exported.
 For example, the variable could be set to the following function
 in order to mimic default behavior:
 
-\(defun org-texinfo-format-inlinetask \(todo type priority name tags contents\)
+\(defun org-texinfo-format-inlinetask (todo type priority name tags contents)
 \"Format an inline task element for Texinfo export.\"
-  \(let ((full-title
-        \(concat
-         \(when todo
-            \(format \"@strong{%s} \" todo))
-         \(when priority (format \"#%c \" priority))
+  (let ((full-title
+        (concat
+         (when todo
+            (format \"@strong{%s} \" todo))
+         (when priority (format \"#%c \" priority))
          title
-         \(when tags
-            \(format \":%s:\"
-                    \(mapconcat \\='identity tags \":\")))))
-    \(format (concat \"@center %s\n\n\"
+         (when tags
+            (format \":%s:\"
+                    (mapconcat \\='identity tags \":\")))))
+    (format (concat \"@center %s\n\n\"
                    \"%s\"
                     \"\n\"))
            full-title contents))"
@@ -1534,8 +1534,8 @@ Return INFO file name or an error if it couldn't be produced."
        ;; Check for process failure.  Provide collected errors if
        ;; possible.
        (if (not (file-exists-p infofile))
-           (error (concat (format "INFO file %s wasn't produced" infofile)
-                          (when errors (concat ": " errors))))
+           (error "INFO file %s wasn't produced%s" infofile
+                  (if errors (concat ": " errors) ""))
          ;; Else remove log files, when specified, and signal end of
          ;; process to user, along with any error encountered.
          (when org-texinfo-remove-logfiles
@@ -1578,7 +1578,7 @@ none."
                  (re-search-forward "requires a sectioning" nil t))
            (setq errors (concat errors " [invalid section command]")))
          (when (save-excursion
-                 (re-search-forward "\\[unexpected\]" nil t))
+                 (re-search-forward "\\[unexpected\ ]" nil t))
            (setq errors (concat errors " [unexpected error]")))
          (when (save-excursion
                  (re-search-forward "misplaced " nil t))
index 4e3e0ef9376fd35a5bf738ebaa26d30826f9d74f..2fa03866281ddc0e49d46673990187afddb337fa 100644 (file)
@@ -777,7 +777,7 @@ is nil.  You can also allow them through local buffer variables."
 
 This variable allows to provide shortcuts for export snippets.
 
-For example, with a value of '\(\(\"h\" . \"html\"\)\), the
+For example, with a value of \((\"h\" . \"html\")), the
 HTML back-end will recognize the contents of \"@@h:<b>@@\" as
 HTML code while every other back-end will ignore it."
   :group 'org-export-general
@@ -849,7 +849,7 @@ output is restricted to body only, \"s\" when it is restricted to
 the current subtree, \"v\" when only visible elements are
 considered for export, \"f\" when publishing functions should be
 passed the FORCE argument and \"a\" when the export should be
-asynchronous).  Also, \[?] allows to switch back to standard
+asynchronous).  Also, [?] allows to switch back to standard
 mode."
   :group 'org-export-general
   :version "24.4"
@@ -1095,19 +1095,19 @@ keywords are understood:
       or
 
        (?l \"Export to LaTeX\"
-           \(?p \"As PDF file\" org-latex-export-to-pdf)
-           \(?o \"As PDF file and open\"
-               \(lambda (a s v b)
-                 \(if a (org-latex-export-to-pdf t s v b)
-                   \(org-open-file
-                    \(org-latex-export-to-pdf nil s v b)))))))
+           (?p \"As PDF file\" org-latex-export-to-pdf)
+           (?o \"As PDF file and open\"
+               (lambda (a s v b)
+                 (if a (org-latex-export-to-pdf t s v b)
+                   (org-open-file
+                    (org-latex-export-to-pdf nil s v b)))))))
 
       or the following, which will be added to the previous
       sub-menu,
 
        (?l 1
-          \((?B \"As TEX buffer (Beamer)\" org-beamer-export-as-latex)
-           \(?P \"As PDF file (Beamer)\" org-beamer-export-to-pdf)))
+          ((?B \"As TEX buffer (Beamer)\" org-beamer-export-as-latex)
+           (?P \"As PDF file (Beamer)\" org-beamer-export-to-pdf)))
 
   :options-alist
 
@@ -1180,12 +1180,12 @@ keywords are understood:
 As an example, here is how one could define \"my-latex\" back-end
 as a variant of `latex' back-end with a custom template function:
 
-  \(org-export-define-derived-backend \\='my-latex \\='latex
+  (org-export-define-derived-backend \\='my-latex \\='latex
      :translate-alist \\='((template . my-latex-template-fun)))
 
 The back-end could then be called with, for example:
 
-  \(org-export-to-buffer \\='my-latex \"*Test my-latex*\")"
+  (org-export-to-buffer \\='my-latex \"*Test my-latex*\")"
   (declare (indent 2))
   (let (blocks filters menu-entry options transcoders contents)
     (while (keywordp (car body))
@@ -1962,7 +1962,7 @@ DATA is the parse tree.  OPTIONS is the plist holding export
 options.
 
 Return an alist whose key is a headline and value is its
-associated numbering \(in the shape of a list of numbers\) or nil
+associated numbering \(in the shape of a list of numbers) or nil
 for a footnotes section."
   (let ((numbering (make-vector org-export-max-depth 0)))
     (org-element-map data 'headline
@@ -3314,7 +3314,7 @@ lines, include only those lines.
 Optional argument IND, when non-nil, is an integer specifying the
 global indentation of returned contents.  Since its purpose is to
 allow an included file to stay in the same environment it was
-created \(i.e. a list item), it doesn't apply past the first
+created \(i.e., a list item), it doesn't apply past the first
 headline encountered.
 
 Optional argument MINLEVEL, when non-nil, is an integer
@@ -3893,7 +3893,7 @@ PATH is the link path.  DESC is its description."
 Optional argument is a set of RULES defining inline images.  It
 is an alist where associations have the following shape:
 
-  \(TYPE . REGEXP)
+  (TYPE . REGEXP)
 
 Applying a rule means apply REGEXP against LINK's path when its
 type is TYPE.  The function will return a non-nil value if any of
@@ -3952,7 +3952,7 @@ Return value can be an object, an element, or nil:
 - If LINK path matches a target object (i.e. <<path>>) return it.
 
 - If LINK path exactly matches the name affiliated keyword
-  \(i.e. #+NAME: path) of an element, return that element.
+  (i.e. #+NAME: path) of an element, return that element.
 
 - If LINK path exactly matches any headline name, return that
   element.  If more than one headline share that name, priority
@@ -5586,10 +5586,10 @@ no argument.  It is always called within the current process,
 from BUFFER, with point at its beginning.  Export back-ends can
 use it to set a major mode there, e.g,
 
-  \(defun org-latex-export-as-latex
-    \(&optional async subtreep visible-only body-only ext-plist)
-    \(interactive)
-    \(org-export-to-buffer \\='latex \"*Org LATEX Export*\"
+  (defun org-latex-export-as-latex
+    (&optional async subtreep visible-only body-only ext-plist)
+    (interactive)
+    (org-export-to-buffer \\='latex \"*Org LATEX Export*\"
       async subtreep visible-only body-only ext-plist (lambda () (LaTeX-mode))))
 
 This function returns BUFFER."
@@ -5646,13 +5646,13 @@ argument and happens asynchronously when ASYNC is non-nil.  It
 has to return a file name, or nil.  Export back-ends can use this
 to send the output file through additional processing, e.g,
 
-  \(defun org-latex-export-to-latex
-    \(&optional async subtreep visible-only body-only ext-plist)
-    \(interactive)
-    \(let ((outfile (org-export-output-file-name \".tex\" subtreep)))
-      \(org-export-to-file \\='latex outfile
+  (defun org-latex-export-to-latex
+    (&optional async subtreep visible-only body-only ext-plist)
+    (interactive)
+    (let ((outfile (org-export-output-file-name \".tex\" subtreep)))
+      (org-export-to-file \\='latex outfile
         async subtreep visible-only body-only ext-plist
-        \(lambda (file) (org-latex-compile file)))
+        (lambda (file) (org-latex-compile file)))
 
 The function returns either a file name returned by POST-PROCESS,
 or FILE."
@@ -5985,7 +5985,7 @@ is nil when this menu hasn't been selected yet.
 
 EXPERTP, when non-nil, triggers expert UI.  In that case, no help
 buffer is provided, but indications about currently active
-options are given in the prompt.  Moreover, \[?] allows to switch
+options are given in the prompt.  Moreover, [?] allows to switch
 back to standard interface."
   (let* ((fontify-key
          (lambda (key &optional access-key)
@@ -6037,8 +6037,8 @@ back to standard interface."
            (concat
             ;; Options are hard-coded.
             (format "[%s] Body only:    %s           [%s] Visible only:     %s
-\[%s] Export scope: %s       [%s] Force publishing: %s
-\[%s] Async export: %s\n\n"
+[%s] Export scope: %s       [%s] Force publishing: %s
+[%s] Async export: %s\n\n"
                     (funcall fontify-key "C-b" t)
                     (funcall fontify-value
                              (if (memq 'body options) "On " "Off"))
index 3da7267ca8e12e053dc9cebe2d33673c950029bc..3c9d87fa81e3ae5751eca7018593541a7fa981e9 100644 (file)
@@ -989,7 +989,7 @@ Otherwise call the Doctor to parse preceding sentence."
 Put dialogue in buffer."
   (let (a
        (prompt (concat (doctor-make-string x)
-                       " what \?  "))
+                       " what ?  "))
        retval)
     (while (not retval)
           (while (not a)
index 2c68c40d89391c0d9ec6c13ecdf5198e50f53d46..a07a24d519509e756daacad530f468f76abd3ff1 100644 (file)
@@ -324,7 +324,7 @@ This value is simply the outline heading level of the current line."
 (defun gametree-hack-file-layout ()
   (save-excursion
     (goto-char (point-min))
-    (if (looking-at "[^\n]*-\*-[^\n]*gametree-local-layout: \\([^;\n]*\\);")
+    (if (looking-at "[^\n]*-*-[^\n]*gametree-local-layout: \\([^;\n]*\\);")
         (progn
           (goto-char (match-beginning 1))
           (delete-region (point) (match-end 1))
index 586d1d5d4623627d83cc25dfa748392b0ab26fb4..0f3b7586153f8f3e1e0f6d9f5be04fbdea3b9c76 100644 (file)
@@ -265,7 +265,7 @@ each one of its four blocks.")
     (define-key map [left]     'tetris-move-left)
     (define-key map [right]    'tetris-move-right)
     (define-key map [up]       'tetris-rotate-prev)
-    (define-key map [down]     'tetris-rotate-next)
+    (define-key map [down]     'tetris-move-down)
     map))
 
 (defvar tetris-null-map
@@ -524,6 +524,16 @@ Drops the shape one square, testing for collision."
        (setq tetris-pos-x (1- tetris-pos-x)))
     (tetris-draw-shape)))
 
+(defun tetris-move-down ()
+  "Move the shape one square to the bottom."
+  (interactive)
+  (unless tetris-paused
+    (tetris-erase-shape)
+    (setq tetris-pos-y (1+ tetris-pos-y))
+    (if (tetris-test-shape)
+       (setq tetris-pos-y (1- tetris-pos-y)))
+    (tetris-draw-shape)))
+
 (defun tetris-rotate-prev ()
   "Rotate the shape clockwise."
   (interactive)
index 452f3b99742ae1758acd505e6dc592a4d67ec682..529b691ee7961363dafc4c6eb6a798a503805e44 100644 (file)
@@ -2682,7 +2682,7 @@ if INITIAL-POS is non-nil, moves point to INITIAL-POS before calculation."
         ;; "then" has to be included in the case of "select...then abort"
         ;; statements, since (goto-stmt-start) at the beginning of
         ;; the current function would leave the cursor on that position
-        ((looking-at "\\(\\(els\\)?if\\>\\)\\|then abort\\\>")
+        ((looking-at "\\(\\(els\\)?if\\>\\)\\|then abort\\>")
          (ada-get-indent-if orgpoint))
         ;;
         ((looking-at "case\\>")
@@ -5290,7 +5290,7 @@ for `ada-procedure-start-regexp'."
            (setq functype (buffer-substring (point)
                                             (progn
                                               (skip-chars-forward
-                                               "a-zA-Z0-9_\.")
+                                               "a-zA-Z0-9_.")
                                               (point))))))
       ;; look for next non WS
       (cond
index 816de12cbdb46c944dae649914065875a1d6598c..0ea33c16878408e72b3252d64bbaaac90fa937b5 100644 (file)
@@ -420,7 +420,7 @@ As a special case, ${current} is replaced with the name of the current
 file, minus extension but with directory, and ${full_current} is
 replaced by the name including the extension."
 
-  (while (string-match "\\(-[^-\$IO]*[IO]\\)?\${\\([^}]+\\)}" cmd-string)
+  (while (string-match "\\(-[^-$IO]*[IO]\\)?${\\([^}]+\\)}" cmd-string)
     (let (value
          (name (match-string 2 cmd-string)))
       (cond
@@ -1724,7 +1724,7 @@ Information is extracted from the ali file."
                (concat "^"    (ada-line-of identlist)
                        "."    (ada-column-of identlist)
                        "[ *]" (ada-name-of identlist)
-                       "[{\[\(<= ]?\\(.*\\)$") bound t))
+                       "[{[(<= ]?\\(.*\\)$") bound t))
          (if declaration-found
              (ada-set-on-declaration identlist t))
          ))
@@ -1756,7 +1756,7 @@ Information is extracted from the ali file."
                   (concat
                    "^[0-9]+.[0-9]+[ *]"
                    (ada-name-of identlist)
-                   "[ <{=\(\[]\\(.\\|\n\\.\\)*\\<"
+                   "[ <{=([]\\(.\\|\n\\.\\)*\\<"
                    (ada-line-of identlist)
                    "[^0-9]"
                    (ada-column-of identlist) "\\>")
@@ -1779,7 +1779,7 @@ Information is extracted from the ali file."
              (forward-line -1)
              (beginning-of-line))
            (unless (looking-at (concat "[0-9]+.[0-9]+[ *]"
-                                       (ada-name-of identlist) "[ <{=\(\[]"))
+                                       (ada-name-of identlist) "[ <{=([]"))
              (setq declaration-found nil))))
 
       ;; Still no success ! The ali file must be too old, and we need to
index d59948e6447137feea78d7d7158e9d7bd79afc70..9cac400c27ba07b8f8b1bd8b928a835f7ea6cc41 100644 (file)
             (let ((buffer-undo-list t) (inhibit-read-only t)
                   ,@(unless (featurep 'xemacs)
                       '((inhibit-point-motion-hooks t) deactivate-mark))
-                  before-change-functions after-change-functions
+                  (inhibit-modification-hooks t)
                   buffer-file-name buffer-file-truename)
               ,@body)
           (and (not ,modified) (buffer-modified-p)
@@ -225,7 +225,7 @@ variable list\" near the end of the file, see
     (c++-mode "C++" "\"Cpp\"" "Cpp"))
   "List of ANTLR's supported languages.
 Each element in this list looks like
-  \(MAJOR-MODE MODELINE-STRING OPTION-VALUE...)
+  (MAJOR-MODE MODELINE-STRING OPTION-VALUE...)
 
 MAJOR-MODE, the major mode of the code in the grammar's actions, is the
 value of `antlr-language' if the first group in the string matched by
@@ -243,7 +243,7 @@ also displayed in the mode line next to \"Antlr\"."
 (defcustom antlr-language-limit-n-regexp
   '(8192 . "language[ \t]*=[ \t]*\\(\"?[A-Z][A-Za-z_]*\"?\\)")
   "Used to set a reasonable value for `antlr-language'.
-Looks like \(LIMIT \. REGEXP).  Search for REGEXP from the beginning of
+Looks like \(LIMIT . REGEXP).  Search for REGEXP from the beginning of
 the buffer to LIMIT and use the first group in the matched string to set
 the language according to `antlr-language-alist'."
   :group 'antlr
@@ -620,7 +620,7 @@ COUNT starts with 1.  GEN-SEP is used to separate long variable values."
     (c++-mode ("%sTokenTypes.hpp") ("%s.cpp" "%s.hpp")))
   "Language dependent formats which specify generated files.
 Each element in this list looks looks like
-  \(MAJOR-MODE (VOCAB-FILE-FORMAT...) (CLASS-FILE-FORMAT...)).
+  (MAJOR-MODE (VOCAB-FILE-FORMAT...) (CLASS-FILE-FORMAT...)).
 
 The element whose MAJOR-MODE is equal to `antlr-language' is used to
 specify the generated files which are language dependent.  See variable
@@ -779,7 +779,7 @@ fontification, see `antlr-font-lock-keywords-alist'.
 
 While calculating the decoration level for actions, `major-mode' is
 bound to `antlr-language'.  For example, with value
-  \((java-mode \. 2) (c++-mode \. 0))
+  ((java-mode . 2) (c++-mode . 0))
 Java actions are fontified with level 2 and C++ actions are not
 fontified at all."
   :group 'antlr
@@ -817,7 +817,7 @@ Do not change the value of this constant.")
      c++-font-lock-keywords-3))
   "List of font-lock keywords for actions in the grammar.
 Each element in this list looks like
-  \(MAJOR-MODE KEYWORD...)
+  (MAJOR-MODE KEYWORD...)
 
 If `antlr-language' is equal to MAJOR-MODE, the KEYWORDs are the
 font-lock keywords according to `font-lock-defaults' used for the code
@@ -1570,8 +1570,8 @@ Inserting an option with this command works as follows:
  4. Ask user for confirmation if the given OPTION does not seem to be a
     valid option to insert into the current file.
  5. Find a correct position to insert the option.
- 6. Depending on the option, insert it the following way \(inserting an
-    option also means inserting the option section if necessary\):
+ 6. Depending on the option, insert it the following way (inserting an
+    option also means inserting the option section if necessary):
      - Insert the option and let user insert the value at point.
      - Read a value (with completion) from the minibuffer, using a
        previous value as initial contents, and insert option with value.
@@ -1687,9 +1687,9 @@ Return \(LEVEL OPTION LOCATION)."
 (defun antlr-option-kind (requested)
   "Return level and location for option to insert near point.
 Call function `antlr-option-level' with argument REQUESTED.  If the
-result is nil, return \(REQUESTED \. error).  If the result has the
-non-nil value LEVEL, return \(LEVEL \. LOCATION) where LOCATION looks
-like \(AREA \. PLACE), see `antlr-option-location'."
+result is nil, return \(REQUESTED . error).  If the result has the
+non-nil value LEVEL, return \(LEVEL . LOCATION) where LOCATION looks
+like \(AREA . PLACE), see `antlr-option-location'."
   (save-excursion
     (save-restriction
       (let ((min0 (point-min))         ; before `widen'!
@@ -1845,7 +1845,7 @@ WARNING: this may alter `match-data'."
 (defun antlr-insert-option-do (level option old area pos)
   "Insert option into buffer at position POS.
 Insert option of level LEVEL and name OPTION.  If OLD is non-nil, an
-options area is already exists.  If OLD looks like \(BEG \. END), the
+options area is already exists.  If OLD looks like \(BEG . END), the
 option already exists.  Then, BEG is the start position of the option
 value, the position of the `=' or nil, and END is the end position of
 the option value or nil.
@@ -2104,7 +2104,7 @@ Called in PHASE `before-input', see `antlr-options-alists'."
 
 (defun antlr-file-dependencies ()
   "Return dependencies for grammar in current buffer.
-The result looks like \(FILE \(CLASSES \. SUPERS) VOCABS \. LANGUAGE)
+The result looks like \(FILE \(CLASSES . SUPERS) VOCABS . LANGUAGE)
   where CLASSES = ((CLASS . CLASS-EVOCAB) ...),
         SUPERS  = ((SUPER . USE-EVOCAB-P) ...), and
         VOCABS  = ((EVOCAB ...) . (IVOCAB ...))
@@ -2168,8 +2168,8 @@ its export vocabulary is used as an import vocabulary."
 
 (defun antlr-directory-dependencies (dirname)
   "Return dependencies for all grammar files in directory DIRNAME.
-The result looks like \((CLASS-SPEC ...) \. \(FILE-DEP ...))
-  where CLASS-SPEC = (CLASS (FILE \. EVOCAB) ...).
+The result looks like \((CLASS-SPEC ...) . \(FILE-DEP ...))
+  where CLASS-SPEC = (CLASS (FILE . EVOCAB) ...).
 
 FILE-DEP are the dependencies for each grammar file in DIRNAME, see
 `antlr-file-dependencies'.  For each grammar class CLASS, FILE is a
@@ -2220,7 +2220,7 @@ The result looks like \(OPTION WITH-UNKNOWN GLIB ...).  OPTION is the
 complete \"-glib\" option.  WITH-UNKNOWN is t if there is none or more
 than one grammar file for at least one super grammar.
 
-Each GLIB looks like \(GRAMMAR-FILE \. EVOCAB).  GRAMMAR-FILE is a file
+Each GLIB looks like \(GRAMMAR-FILE . EVOCAB).  GRAMMAR-FILE is a file
 in which a super-grammar is defined.  EVOCAB is the value of the export
 vocabulary of the super-grammar or nil if it is not needed."
   ;; If the superclass is defined in the same file, that file will be included
index b0c4a6425bf2720399451d985dac0b9da3f312b2..1e3cb8e16f9557ab46abff200d931a57c7c8b445 100644 (file)
@@ -1075,7 +1075,7 @@ Works with: brace-list-entry, brace-entry-open, statement,
 arglist-cont."
   (save-excursion
     (goto-char (c-langelem-pos langelem))
-    (when (looking-at "\\s\(")
+    (when (looking-at "\\s(")
       (if (c-go-up-list-backward)
          (let ((pos (point)))
            (back-to-indentation)
@@ -1093,24 +1093,24 @@ v beg of preceding constr      v beg of preceding constr
 const char msg[] =             if (!running)
   \"Some text.\";               error(\"Not running!\");
 
-#define X(A, B)  \           #define X(A, B)    \
-do {             \    <->      do {             \    <- c-lineup-cpp-define
-  printf (A, B); \               printf (A, B); \
+#define X(A, B)  \\           #define X(A, B)    \\
+do {             \\    <->      do {             \\    <- c-lineup-cpp-define
+  printf (A, B); \\               printf (A, B); \\
 } while (0)                    } while (0)
 
 If `c-syntactic-indentation-in-macros' is non-nil, the function
 returns the relative indentation to the macro start line to allow
 accumulation with other offsets.  E.g. in the following cases,
 cpp-define-intro is combined with the statement-block-intro that comes
-from the \"do {\" that hangs on the \"#define\" line:
+from the `do {' that hangs on the `#define' line:
 
                              int dribble() {
 const char msg[] =             if (!running)
   \"Some text.\";               error(\"Not running!\");
 
-#define X(A, B) do { \       #define X(A, B) do { \
-  printf (A, B);     \  <->      printf (A, B);   \  <- c-lineup-cpp-define
-  this->refs++;      \           this->refs++;    \
+#define X(A, B) do { \\       #define X(A, B) do { \\
+  printf (A, B);     \\  <->      printf (A, B);   \\  <- c-lineup-cpp-define
+  this->refs++;      \\           this->refs++;    \\
 } while (0)             <->    } while (0)           <- c-lineup-cpp-define
 
 The relative indentation returned by `c-lineup-cpp-define' is zero and
index 337fdc800b1ff7995d390eb6726f2dd3336bfe27..077a18cc5971f6104cbcf7b20e3102044a021764 100644 (file)
 (defconst c-awk-neutrals*-re
   (concat "\\(" c-awk-neutral-re "\\)*"))
 ;;   A (possibly empty) string of neutral characters (or character pairs).
-(defconst c-awk-var-num-ket-re "[]\)0-9a-zA-Z_$.\x80-\xff]+")
+(defconst c-awk-var-num-ket-re "[])0-9a-zA-Z_$.\x80-\xff]+")
 ;;   Matches a char which is a constituent of a variable or number, or a ket
 ;; (i.e. closing bracKET), round or square.  Assume that all characters \x80 to
 ;; \xff are "letters".
 ;; will only work when there won't be a preceding " or / before the sought /
 ;; to foul things up.
 (defconst c-awk-non-arith-op-bra-re
-  "[[\({&=:!><,?;'~|]")
+  "[[({&=:!><,?;'~|]")
 ;;   Matches an opening BRAcket (of any sort), or any operator character
 ;; apart from +,-,/,*,%.  For the purpose at hand (detecting a / which is a
 ;; regexp bracket) these arith ops are unnecessary and a pain, because of "++"
 ;; Matches optional whitespace followed by a "/" with string syntax (a matched
 ;; regexp delimiter).
 (defconst c-awk-space*-unclosed-regexp-/-re
-  (concat c-awk-escaped-nls*-with-space* "\\s\|"))
+  (concat c-awk-escaped-nls*-with-space* "\\s|"))
 ;; Matches optional whitespace followed by a "/" with string fence syntax (an
 ;; unmatched regexp delimiter).
 
index 0e249bd4212511680fc9d3209bc79de2b0c43b71..32ce8c6a249e5343d62ab54bc748a7b9315babc6 100644 (file)
@@ -428,7 +428,7 @@ the function `delete-forward-p' is defined and returns non-nil, it
 deletes forward.  Otherwise it deletes backward.
 
 Note: This is the way in XEmacs to choose the correct action for the
-\[delete] key, whichever key that means.  Other flavors don't use this
+[delete] key, whichever key that means.  Other flavors don't use this
 function to control that."
   (interactive "*P")
   (if (and (fboundp 'delete-forward-p)
@@ -445,7 +445,7 @@ forward using `c-hungry-delete-forward'.  Otherwise it deletes
 backward using `c-hungry-backspace'.
 
 Note: This is the way in XEmacs to choose the correct action for the
-\[delete] key, whichever key that means.  Other flavors don't use this
+[delete] key, whichever key that means.  Other flavors don't use this
 function to control that."
   (interactive)
   (if (and (fboundp 'delete-forward-p)
@@ -1143,9 +1143,9 @@ numeric argument is supplied, or the point is inside a literal."
                           (eq (char-before) ?<))
                         (progn
                           (backward-char)
-                          (looking-at "\\s\("))))
+                          (looking-at "\\s("))))
                    (and (eq (char-after) ?<)
-                        (not (looking-at "\\s\("))
+                        (not (looking-at "\\s("))
                         (progn (c-backward-syntactic-ws)
                                (c-simple-skip-symbol-backward))
                         (or (looking-at c-opt-<>-sexp-key)
@@ -1380,13 +1380,13 @@ No indentation or other \"electric\" behavior is performed."
                ;; be the return type of a function, or the like.  Exclude
                ;; this case.
                (c-syntactic-re-search-forward
-                (concat "[;=\(\[{]\\|\\("
+                (concat "[;=([{]\\|\\("
                         c-opt-block-decls-with-vars-key
                         "\\)")
                 eo-block t t t)
                (match-beginning 1)     ; Is there a "struct" etc., somewhere?
                (not (eq (char-before) ?_))
-               (c-syntactic-re-search-forward "[;=\(\[{]" eo-block t t t)
+               (c-syntactic-re-search-forward "[;=([{]" eo-block t t t)
                (eq (char-before) ?\{)
                bod)))))
 
@@ -4455,7 +4455,7 @@ is in situations like the following:
 
 char description[] = \"\\
 A very long description of something that you want to fill to make
-nicely formatted output.\"\;
+nicely formatted output.\";
 
 If point is in any other situation, i.e. in normal code, do nothing.
 
index 0422ca0b02896be72ec3721fc2c4931d419d3562..6bd58159fce420a238abbba2f6f6d52bb212bdf2 100644 (file)
@@ -500,10 +500,10 @@ even if the user undoes the command which set them.
 
 This macro should ALWAYS be placed around \"temporary\" internal buffer
 changes \(like adding a newline to calculate a text-property then
-deleting it again\), so that the user never sees them on his
+deleting it again), so that the user never sees them on his
 `buffer-undo-list'.  See also `c-tentative-buffer-changes'.
 
-However, any user-visible changes to the buffer \(like auto-newlines\)
+However, any user-visible changes to the buffer \(like auto-newlines)
 must not be within a `c-save-buffer-state', since the user then
 wouldn't be able to undo them.
 
index 82f0d722d036f86e0a05f8810247154da655deb4..6382b14521141cd7808e3f6a63842b8649b8982c 100644 (file)
@@ -1060,7 +1060,7 @@ comment at the start of cc-engine.el for more info."
                          (save-excursion
                            (c-forward-sexp) (point)))
                         ;; Just gone back over some paren block?
-                        ((looking-at "\\s\(")
+                        ((looking-at "\\s(")
                          (save-excursion
                            (goto-char (1+ (c-down-list-backward
                                            before-sws-pos)))
@@ -1233,7 +1233,7 @@ The variable `c-maybe-labelp' is set to the position of the first `:' that
 might start a label (i.e. not part of `::' and not preceded by `?').  If a
 single `?' is found, then `c-maybe-labelp' is cleared.
 
-For AWK, a statement which is terminated by an EOL (not a \; or a }) is
+For AWK, a statement which is terminated by an EOL (not a ; or a }) is
 regarded as having a \"virtual semicolon\" immediately after the last token on
 the line.  If this virtual semicolon is _at_ from, the function recognizes it.
 
@@ -3792,8 +3792,8 @@ comment at the start of cc-engine.el for more info."
 
 (defconst c-jump-syntax-balanced
   (if (memq 'gen-string-delim c-emacs-features)
-      "\\w\\|\\s_\\|\\s\(\\|\\s\)\\|\\s\"\\|\\s|"
-    "\\w\\|\\s_\\|\\s\(\\|\\s\)\\|\\s\""))
+      "\\w\\|\\s_\\|\\s(\\|\\s)\\|\\s\"\\|\\s|"
+    "\\w\\|\\s_\\|\\s(\\|\\s)\\|\\s\""))
 
 (defconst c-jump-syntax-unbalanced
   (if (memq 'gen-string-delim c-emacs-features)
@@ -3960,7 +3960,7 @@ See `c-forward-token-2' for details."
 tokens like \"==\" as single tokens, i.e. all sequences of symbol
 characters are jumped over character by character.  This function is
 for compatibility only; it's only a wrapper over `c-forward-token-2'."
-  (let ((c-nonsymbol-token-regexp "\\s.\\|\\s\(\\|\\s\)"))
+  (let ((c-nonsymbol-token-regexp "\\s."))
     (c-forward-token-2 count balanced limit)))
 
 (defun c-backward-token-1 (&optional count balanced limit)
@@ -3968,7 +3968,7 @@ for compatibility only; it's only a wrapper over `c-forward-token-2'."
 tokens like \"==\" as single tokens, i.e. all sequences of symbol
 characters are jumped over character by character.  This function is
 for compatibility only; it's only a wrapper over `c-backward-token-2'."
-  (let ((c-nonsymbol-token-regexp "\\s.\\|\\s\(\\|\\s\)"))
+  (let ((c-nonsymbol-token-regexp "\\s."))
     (c-backward-token-2 count balanced limit)))
 
 \f
@@ -7124,7 +7124,7 @@ comment at the start of cc-engine.el for more info."
                       (setq paren-depth (1- paren-depth))
                       (forward-char)
                       t)
-                  (when (if (save-match-data (looking-at "\\s\("))
+                  (when (if (save-match-data (looking-at "\\s("))
                             (c-safe (c-forward-sexp 1) t)
                           (goto-char (match-end 1))
                           t)
@@ -7198,7 +7198,7 @@ comment at the start of cc-engine.el for more info."
 
         (setq at-decl-end
               (looking-at (cond ((eq context '<>) "[,>]")
-                                (context "[,\)]")
+                                (context "[,)]")
                                 (t "[,;]"))))
 
         ;; Now we've collected info about various characteristics of
@@ -7522,7 +7522,7 @@ comment at the start of cc-engine.el for more info."
         ;; The closing paren should follow.
         (progn
           (c-forward-syntactic-ws)
-          (looking-at "\\s\)"))
+          (looking-at "\\s)"))
 
         ;; There should be a primary expression after it.
         (let (pos)
@@ -7919,7 +7919,7 @@ comment at the start of cc-engine.el for more info."
 
          (catch 'break
            ;; Look for ": superclass-name" or "( category-name )".
-           (when (looking-at "[:\(]")
+           (when (looking-at "[:(]")
              (setq start-char (char-after))
              (forward-char)
              (c-forward-syntactic-ws)
@@ -8434,7 +8434,7 @@ comment at the start of cc-engine.el for more info."
                            ;; Check for `c-opt-block-decls-with-vars-key'
                            ;; before the first paren.
                            (c-syntactic-re-search-forward
-                            (concat "[;=\(\[{]\\|\\("
+                            (concat "[;=([{]\\|\\("
                                     c-opt-block-decls-with-vars-key
                                     "\\)")
                             lim t t t)
@@ -8442,7 +8442,7 @@ comment at the start of cc-engine.el for more info."
                            (not (eq (char-before) ?_))
                            ;; Check that the first following paren is
                            ;; the block.
-                           (c-syntactic-re-search-forward "[;=\(\[{]"
+                           (c-syntactic-re-search-forward "[;=([{]"
                                                           lim t t t)
                            (eq (char-before) ?{)))))))
            ;; The declaration doesn't have any of the
@@ -8961,7 +8961,7 @@ comment at the start of cc-engine.el for more info."
                         (> (point) closest-lim))
                  (not (bobp))
                  (progn (backward-char)
-                        (looking-at "[\]\).]\\|\\w\\|\\s_"))
+                        (looking-at "[]).]\\|\\w\\|\\s_"))
                  (c-safe (forward-char)
                          (goto-char (scan-sexps (point) -1))))
 
index f05d6a06595517e0ab907012f5eec98351facc43..ad112d720d8bfddb29a3db1c5438f6695decf47d 100644 (file)
@@ -575,10 +575,10 @@ stuff.  Used on level 1 and higher."
                               c-symbol-key) "\\)"
                        (concat "\\("   ; 2 + ncle + nsws + c-sym-key
                                ;; Macro with arguments - a "function".
-                               "\\(\(\\)" ; 3 + ncle + nsws + c-sym-key
+                               "\\((\\)" ; 3 + ncle + nsws + c-sym-key
                                "\\|"
                                ;; Macro without arguments - a "variable".
-                               "\\([^\(]\\|$\\)"
+                               "\\([^(]\\|$\\)"
                                "\\)"))
                       `((if (match-beginning
                              ,(+ 3 ncle-depth nsws-depth
@@ -1082,7 +1082,7 @@ casts and declarations are fontified.  Used on level 2 and higher."
 
            ;; Search syntactically to the end of the declarator (";",
            ;; ",", a closing paren, eob etc) or to the beginning of an
-           ;; initializer or function prototype ("=" or "\\s\(").
+           ;; initializer or function prototype ("=" or "\\s(").
            ;; Note that square brackets are now not also treated as
            ;; initializers, since this broke when there were also
            ;; initializing brace lists.
@@ -1867,7 +1867,7 @@ higher."
                "\\)\\>"
                ;; Disallow various common punctuation chars that can't come
                ;; before the '{' of the enum list, to avoid searching too far.
-               "[^\]\[{}();/#=]*"
+               "[^][{}();/#=]*"
                "{")
               '((c-font-lock-declarators limit t nil)
                 (save-match-data
@@ -2112,7 +2112,7 @@ need for `c-font-lock-extra-types'.")
                  (unless (looking-at
                           (cc-eval-when-compile
                             (concat (c-lang-const c-symbol-start c++)
-                                    "\\|[*:\)\[]")))
+                                    "\\|[*:)[]")))
                    ;; There's something after the would-be type that
                    ;; can't be there, so this is a placement arglist.
                    (setq expr1-res nil)))
@@ -2122,7 +2122,7 @@ need for `c-font-lock-extra-types'.")
                  (unless (looking-at
                           (cc-eval-when-compile
                             (concat (c-lang-const c-symbol-start c++)
-                                    "\\|[*:\)\[]")))
+                                    "\\|[*:)[]")))
                    ;; There's something after the would-be type that can't
                    ;; be there, so this is an initialization expression.
                    (setq expr2-res nil))
@@ -2675,7 +2675,7 @@ need for `pike-font-lock-extra-types'.")
   nil)
 
 (defconst autodoc-font-lock-doc-comments
-  `(("@\\(\\w+{\\|\\[\\([^\]@\n\r]\\|@@\\)*\\]\\|[@}]\\|$\\)"
+  `(("@\\(\\w+{\\|\\[\\([^]@\n\r]\\|@@\\)*\\]\\|[@}]\\|$\\)"
      ;; In-text markup.
      0 ,c-doc-markup-face-name prepend nil)
     (autodoc-font-lock-line-markup)
index a1e26b9fcc4e5ebb1a7a07b4f2d9663cc3449097..7cda5ceaf1d0e6d6e08e030aee813b02153127d4 100644 (file)
@@ -870,7 +870,7 @@ definition, or nil if the language doesn't have any."
   t (if (c-lang-const c-opt-cpp-macro-define)
        (concat (c-lang-const c-opt-cpp-prefix)
                (c-lang-const c-opt-cpp-macro-define)
-               "[ \t]+\\(\\(\\sw\\|_\\)+\\)\\(\([^\)]*\)\\)?"
+               "[ \t]+\\(\\(\\sw\\|_\\)+\\)\\(([^)]*)\\)?"
                ;;       ^                 ^ #defined name
                "\\([ \t]\\|\\\\\n\\)*")))
 (c-lang-defvar c-opt-cpp-macro-define-start
@@ -1190,7 +1190,7 @@ operators."
   t (c-make-keywords-re nil
       (c-filter-ops (c-lang-const c-all-op-syntax-tokens)
                    t
-                   "\\`\\(\\s.\\|\\s\(\\|\\s\)\\)+\\'")))
+                   "\\`\\(\\s.\\)+\\'")))
 (c-lang-defvar c-nonsymbol-token-regexp
   (c-lang-const c-nonsymbol-token-regexp))
 
@@ -1694,7 +1694,7 @@ be a subset of `c-primitive-type-kwds'."
            "strong"))
 
 (c-lang-defconst c-typedef-kwds
-  "Prefix keyword\(s\) like \"typedef\" which make a type declaration out
+  "Prefix keyword(s) like \"typedef\" which make a type declaration out
 of a variable declaration."
   t        '("typedef")
   (awk idl java) nil)
@@ -2202,7 +2202,7 @@ regexp if `c-colon-type-list-kwds' isn't nil."
        ;; before the ":" that starts the inherit list after "class"
        ;; or "struct" in C++.  (Also used as default for other
        ;; languages.)
-       "[^\]\[{}();,/#=:]*:"))
+       "[^][{}();,/#=:]*:"))
 (c-lang-defvar c-colon-type-list-re (c-lang-const c-colon-type-list-re))
 
 (c-lang-defconst c-paren-nontype-kwds
@@ -2366,7 +2366,7 @@ nevertheless contains a list separated with `;' and not `,'."
 (c-lang-defvar c-opt-asm-stmt-key (c-lang-const c-opt-asm-stmt-key))
 
 (c-lang-defconst c-case-kwds
-  "The keyword\(s) which introduce a \"case\" like construct.
+  "The keyword(s) which introduce a \"case\" like construct.
 This construct is \"<keyword> <expression> :\"."
   t '("case")
   awk nil)
@@ -2729,25 +2729,25 @@ more info."
   ;; more quickly.  We match ")" in C for K&R region declarations, and
   ;; in all languages except Java for when a cpp macro definition
   ;; begins with a declaration.
-  t "\\([\{\}\(\);,]+\\)"
-  java "\\([\{\}\(;,<]+\\)"
+  t "\\([{}();,]+\\)"
+  java "\\([{}(;,<]+\\)"
   ;; Match "<" in C++ to get the first argument in a template arglist.
   ;; In that case there's an additional check in `c-find-decl-spots'
   ;; that it got open paren syntax.  Match ":" to aid in picking up
   ;; "public:", etc.  This involves additional checks in
   ;; `c-find-decl-prefix-search' to prevent a match of identifiers
   ;; or labels.
-  c++ "\\([\{\}\(\);:,<]+\\)"
+  c++ "\\([{}();:,<]+\\)"
   ;; Additionally match the protection directives in Objective-C.
   ;; Note that this doesn't cope with the longer directives, which we
   ;; would have to match from start to end since they don't end with
   ;; any easily recognized characters.
-  objc (concat "\\([\{\}\(\);,]+\\|"
+  objc (concat "\\([{}();,]+\\|"
               (c-make-keywords-re nil (c-lang-const c-protection-kwds))
               "\\)")
   ;; Pike is like C but we also match "[" for multiple value
   ;; assignments and type casts.
-  pike "\\([\{\}\(\)\[;,]+\\)")
+  pike "\\([{}()[;,]+\\)")
 (c-lang-defvar c-decl-prefix-re (c-lang-const c-decl-prefix-re)
   'dont-doc)
 
@@ -2792,7 +2792,7 @@ constructs."
   ;; languages without casts.
   t (c-filter-ops (c-lang-const c-operators)
                  '(prefix)
-                 "\\`\\s\(\\'"
+                 "\\`\\s(\\'"
                  (lambda (op) (elt op 0))))
 (c-lang-defvar c-cast-parens (c-lang-const c-cast-parens))
 
@@ -2875,13 +2875,13 @@ Identifier syntax is in effect when this is matched \(see
   ;; Check that there's no "=" afterwards to avoid matching tokens
   ;; like "*=".
   (c objc) (concat "\\("
-                  "[*\(]"
+                  "[*(]"
                   "\\|"
                   (c-lang-const c-type-decl-prefix-key)
                   "\\)"
                   "\\([^=]\\|$\\)")
   c++  (concat "\\("
-              "[*\(&]"
+              "[*(&]"
               "\\|"
               (c-lang-const c-type-decl-prefix-key)
               "\\|"
@@ -2909,13 +2909,13 @@ is in effect when this is matched (see `c-identifier-syntax-table')."
   ;; Default to a regexp that matches `c-type-modifier-kwds' and a
   ;; function argument list parenthesis.
   t    (if (c-lang-const c-type-modifier-kwds)
-          (concat "\\(\(\\|"
+          (concat "\\((\\|"
                   (regexp-opt (c-lang-const c-type-modifier-kwds) t) "\\>"
                   "\\)")
-        "\\(\(\\)")
+        "\\((\\)")
   (c c++ objc) (concat
                "\\("
-               "[\)\[\(]"
+               "[)[(]"
                (if (c-lang-const c-type-modifier-kwds)
                    (concat
                     "\\|"
@@ -2926,8 +2926,8 @@ is in effect when this is matched (see `c-identifier-syntax-table')."
                     "\\>")
                  "")
                "\\)")
-  java "\\([\[\(\)]\\)"
-  idl "\\([\[\(]\\)")
+  java "\\([[()]\\)"
+  idl "\\([[(]\\)")
 (c-lang-defvar c-type-decl-suffix-key (c-lang-const c-type-decl-suffix-key)
   'dont-doc)
 
@@ -3111,7 +3111,7 @@ i.e. compound statements surrounded by parentheses inside expressions."
   t (if (c-lang-const c-opt-<>-arglist-start)
        (concat "\\("
                (c-lang-const c-opt-<>-arglist-start)
-               "\\)\\|\\s\)")))
+               "\\)\\|\\s)")))
 (c-lang-defvar c-opt-<>-arglist-start-in-paren
   (c-lang-const c-opt-<>-arglist-start-in-paren))
 
@@ -3168,7 +3168,7 @@ i.e. before \":\".  Only used if `c-recognize-colon-labels' is set."
   ;; Also check for open parens in C++, to catch member init lists in
   ;; constructors.  We normally allow it so that macros with arguments
   ;; work in labels.
-  c++ (concat "\\s\(\\|\"\\|" (c-lang-const c-nonlabel-token-key)))
+  c++ (concat "\\s(\\|\"\\|" (c-lang-const c-nonlabel-token-key)))
 (c-lang-defvar c-nonlabel-token-key (c-lang-const c-nonlabel-token-key))
 
 (c-lang-defconst c-nonlabel-token-2-key
@@ -3216,7 +3216,7 @@ way."
        "\\([+-]\\)"
        (c-lang-const c-simple-ws) "*"
        (concat "\\("                   ; Return type.
-               "([^\)]*)"
+               "([^)]*)"
                (c-lang-const c-simple-ws) "*"
                "\\)?")
        "\\(" (c-lang-const c-symbol-key) "\\)"))
@@ -3304,10 +3304,9 @@ accomplish that conveniently."
                 (setq source-eval t)
                 (let ((init ',(append (cdr c-emacs-variable-inits)
                                       (cdr c-lang-variable-inits))))
-                  (while init
-                    (setq current-var (caar init))
-                    (set (caar init) (eval (cadar init)))
-                    (setq init (cdr init)))))
+                  (dolist (var-init init)
+                    (setq current-var (car var-init))
+                    (set (car var-init) (eval (cadr var-init))))))
 
             (error
              (if current-var
@@ -3333,10 +3332,9 @@ accomplish that conveniently."
         (c-make-emacs-variables-local)
         (condition-case err
 
-            (while init
-              (setq current-var (caar init))
-              (set (caar init) (eval (cadar init)))
-              (setq init (cdr init)))
+            (dolist (var-init init)
+              (setq current-var (car var-init))
+              (set (car var-init) (eval (cadr var-init))))
 
           (error
            (if current-var
index 97491e4d1d7d380f06cd5ab52b631ebe216244ea..5c68de4b057dccbd009e4c1bf3a1565844aed4b2 100644 (file)
@@ -1265,7 +1265,7 @@ Note that the style variables are always made local to the buffer."
   ;;
   ;;
   ;;     void myfunc(T* p) {}
-  ;; 
+  ;;
   ;; Type a space in the first blank line, and the fontification of the next
   ;; line was fouled up by context fontification.
   (let (new-beg new-end new-region case-fold-search
@@ -1455,7 +1455,8 @@ This function is called from `c-common-init', once per mode initialization."
 
 ;;;###autoload
 (define-derived-mode c-mode prog-mode "C"
-  "Major mode for editing K&R and ANSI C code.
+  "Major mode for editing C code.
+
 To submit a problem report, enter `\\[c-submit-bug-report]' from a
 c-mode buffer.  This automatically sets up a mail buffer with version
 information already added.  You just need to add a description of the
index da36647f2cdd510cbccfa123094578570244edaa..9afece9e30be51fe4feda38f7fab20303825120c 100644 (file)
@@ -277,7 +277,7 @@ nil."
 If t, hitting TAB always just indents the current line.  If nil, hitting
 TAB indents the current line if point is at the left margin or in the
 line's indentation, otherwise it inserts a `real' tab character \(see
-note\).  If some other value (not nil or t), then tab is inserted only
+note).  If some other value \(not nil or t), then tab is inserted only
 within literals \(comments and strings), but the line is always
 reindented.
 
index 96bb8d3a1129b6f052428f3de67221af142419f3..78c8d94576b07085524ca971c19cb6d62209b0cf 100644 (file)
@@ -1005,12 +1005,12 @@ Intended as the value of `indent-line-function'."
                                   (point))))
       (let ((paragraph-start
             ;; Include start of parenthesized block.
-            "\f\\|[ \t]*$\\|.*\(")
+            "\f\\|[ \t]*$\\|.*(")
            (paragraph-separate
             ;; Include action and class lines, start and end of
             ;; bracketed blocks and end of parenthesized blocks to
             ;; avoid including these in fill.  This isn't ideal.
-            "[ \t\f]*$\\|.*#\\|.*[\){}]\\|\\s-*[[:alpha:]_().|!]+:")
+            "[ \t\f]*$\\|.*#\\|.*[){}]\\|\\s-*[[:alpha:]_().|!]+:")
            fill-paragraph-function)
        (fill-paragraph justify))
       t))
index 005e71a825e620453509073007806a2e4723b4ac..0f5b1bb8c6a76f67398f18ecf88de961a96e84bb 100644 (file)
@@ -390,7 +390,7 @@ Optional arg DISPLAY non-nil means show messages in the echo area."
                ;; the way of font-lock, highlighting etc.
                (insert
                 (format
-                 "/* Preprocessor terminated with status %s\n\n   Messages from '%s\':\n\n"
+                 "/* Preprocessor terminated with status %s\n\n   Messages from '%s':\n\n"
                  exit-status cppcommand))
                (goto-char (+ (point)
                              (nth 1 (insert-file-contents tempname))))
index a6e9ed8889aa76b98211fed2cd515b26d0358c18..9cb367aa6336b3eb236ccbb4ce6e9d8bead4d2a9 100644 (file)
@@ -167,7 +167,7 @@ of[ \t]+\"?\\([a-zA-Z]?:?[^\":\n]+\\)\"?:" 3 2 nil (1))
 
     (cucumber
      "\\(?:^cucumber\\(?: -p [^[:space:]]+\\)?\\|#\\)\
-\\(?: \\)\\([^\(].*\\):\\([1-9][0-9]*\\)" 1 2)
+\\(?: \\)\\([^(].*\\):\\([1-9][0-9]*\\)" 1 2)
 
     (msft
      ;; Must be before edg-1, so that MSVC's longer messages are
@@ -230,7 +230,7 @@ of[ \t]+\"?\\([a-zA-Z]?:?[^\":\n]+\\)\"?:" 3 2 nil (1))
      1 2 3 (4 . 5))
 
     (ruby-Test::Unit
-     "^[\t ]*\\[\\([^\(].*\\):\\([1-9][0-9]*\\)\\(\\]\\)?:in " 1 2)
+     "^[\t ]*\\[\\([^(].*\\):\\([1-9][0-9]*\\)\\(\\]\\)?:in " 1 2)
 
     (gnu
      ;; The first line matches the program name for
@@ -377,7 +377,7 @@ File = \\(.+\\), Line = \\([0-9]+\\)\\(?:, Column = \\([0-9]+\\)\\)?"
      3 4 5 (1 . 2))
 
     (sun-ada
-     "^\\([^, \n\t]+\\), line \\([0-9]+\\), char \\([0-9]+\\)[:., \(-]" 1 2 3)
+     "^\\([^, \n\t]+\\), line \\([0-9]+\\), char \\([0-9]+\\)[:., (-]" 1 2 3)
 
     (watcom
      "^[ \t]*\\(\\(?:[a-zA-Z]:\\)?[^:(\t\n]+\\)(\\([0-9]+\\)): ?\
@@ -477,7 +477,29 @@ File = \\(.+\\), Line = \\([0-9]+\\)\\(?:, Column = \\([0-9]+\\)\\)?"
      ;;
      "^\\([^ \t\r\n(]+\\) (\\([0-9]+\\):\\([0-9]+\\)) "
      1 2 3)
-    (guile-file "^In \\(.+\\):\n" 1)
+
+    ;; Guile compilation yields file-headers in the following format:
+    ;;
+    ;;   In sourcefile.scm:
+    ;;
+    ;; We need to catch those, but we also need to be aware that Emacs
+    ;; byte-compilation yields compiler headers in similar form of
+    ;; those:
+    ;;
+    ;;   In toplevel form:
+    ;;   In end of data:
+    ;;
+    ;; We want to catch the Guile file-headers but not the Emacs
+    ;; byte-compilation headers, because that will cause next-error
+    ;; and prev-error to break, because the files "toplevel form" and
+    ;; "end of data" does not exist.
+    ;;
+    ;; To differentiate between these two cases, we require that the
+    ;; file-match must always contain an extension.
+    ;;
+    ;; We should also only treat this as "info", not "error", because
+    ;; we do not know what lines will follow.
+    (guile-file "^In \\(.+\\..+\\):\n" 1 nil nil 0)
     (guile-line "^ *\\([0-9]+\\): *\\([0-9]+\\)" nil 1 2)
     )
   "Alist of values for `compilation-error-regexp-alist'.")
index b8ba170a246f6d6c16920ab71364013643b14767..ab3aa7f993affd180a1a8fbad292861390c0bce0 100644 (file)
@@ -395,12 +395,12 @@ Affects: `cperl-font-lock', `cperl-electric-lbrace-space',
   :type 'boolean
   :group 'cperl-indentation-details)
 
-(defcustom cperl-vc-sccs-header '("($sccs) = ('%W\%' =~ /(\\d+(\\.\\d+)+)/) ;")
+(defcustom cperl-vc-sccs-header '("($sccs) = ('%W\ %' =~ /(\\d+(\\.\\d+)+)/) ;")
   "*Special version of `vc-sccs-header' that is used in CPerl mode buffers."
   :type '(repeat string)
   :group 'cperl)
 
-(defcustom cperl-vc-rcs-header '("($rcs) = (' $Id\$ ' =~ /(\\d+(\\.\\d+)+)/);")
+(defcustom cperl-vc-rcs-header '("($rcs) = (' $Id\ $ ' =~ /(\\d+(\\.\\d+)+)/);")
   "*Special version of `vc-rcs-header' that is used in CPerl mode buffers."
   :type '(repeat string)
      :group 'cperl)
@@ -793,7 +793,7 @@ corrected problems are: POD sections, here-documents, regexps.  The
 operations are: highlighting, indentation, electric keywords, electric
 braces.
 
-This may be confusing, since the regexp s#//#/#\; may be highlighted
+This may be confusing, since the regexp s#//#/#; may be highlighted
 as a comment, but it will be recognized as a regexp by the indentation
 code.  Or the opposite case, when a POD section is highlighted, but
 may break the indentation of the following code (though indentation
@@ -3672,7 +3672,7 @@ the sections using `cperl-pod-head-face', `cperl-pod-face',
         is-REx is-x-REx REx-subgr-start REx-subgr-end was-subgr i2 hairy-RE
         (case-fold-search nil) (inhibit-read-only t) (buffer-undo-list t)
         (modified (buffer-modified-p)) overshoot is-o-REx name
-        (after-change-functions nil)
+        (inhibit-modification-hooks t)
         (cperl-font-locking t)
         (use-syntax-state (and cperl-syntax-state
                                (>= min (car cperl-syntax-state))))
@@ -4585,13 +4585,13 @@ the sections using `cperl-pod-head-face', `cperl-pod-face',
                                         ((eq (char-after b) ?\: )
                                          "\\\\*\\[\\\\:\\^?\\sw+\\\\:]")
                                         ((eq (char-after b) ?^ )
-                                         "\\\\*\\[:\\(\\\\\\^\\)?\\sw+:\]")
+                                         "\\\\*\\[:\\(\\\\\\^\\)?\\sw+:]")
                                         ((eq (char-syntax (char-after b))
                                              ?w)
                                          (concat
                                           "\\\\*\\[:\\(\\\\\\^\\)?\\(\\\\"
                                           (char-to-string (char-after b))
-                                          "\\|\\sw\\)+:\]"))
+                                          "\\|\\sw\\)+:]"))
                                         (t "\\\\*\\[:\\^?\\sw*:]")))
                                       (goto-char REx-subgr-end)
                                       (cperl-highlight-charclass
@@ -5043,7 +5043,7 @@ conditional/loop constructs."
                  (goto-char top))
              (if (looking-at           ; Try Plan C: continuation block
                   (concat cperl-maybe-white-and-comment-rex
-                          "\\<\\(else\\|elsif\|continue\\)\\>"))
+                          "\\<\\(else\\|elsif\\|continue\\)\\>"))
                  (progn
                    (goto-char (match-end 0))
                    (setq tmp-end (point-at-eol)))
@@ -5706,7 +5706,7 @@ indentation and initial hashes.  Behaves usually outside of comment."
                 "redo" "return" "local" "exec" "sub" "do" "dump" "use" "our"
                 "require" "package" "eval" "my" "BEGIN" "END" "CHECK" "INIT")
               "\\|")                   ; Flow control
-             "\\)\\>") 2)              ; was "\\)[ \n\t;():,\|&]"
+             "\\)\\>") 2)              ; was "\\)[ \n\t;():,|&]"
                                        ; In what follows we use `type' style
                                        ; for overwritable builtins
            (list
@@ -5850,7 +5850,7 @@ indentation and initial hashes.  Behaves usually outside of comment."
                      (1 font-lock-string-face t))))
                  (t '("\\([]}\\\\%@>*&]\\|\\$[a-zA-Z0-9_:]*\\)[ \t]*{[ \t]*\\(-?[a-zA-Z0-9_:]+\\)[ \t]*}"
                       2 font-lock-string-face t)))
-           '("[\[ \t{,(]\\(-?[a-zA-Z0-9_:]+\\)[ \t]*=>" 1
+           '("[[ \t{,(]\\(-?[a-zA-Z0-9_:]+\\)[ \t]*=>" 1
              font-lock-string-face t)
            '("^[ \t]*\\([a-zA-Z0-9_]+[ \t]*:\\)[ \t]*\\($\\|{\\|\\<\\(until\\|while\\|for\\(each\\)?\\|do\\)\\>\\)" 1
              font-lock-constant-face)  ; labels
@@ -5935,7 +5935,7 @@ indentation and initial hashes.  Behaves usually outside of comment."
                 (and (string< "21.1.10" emacs-version)
                      (string< emacs-version "21.1.2")))
                '(
-                 ("\\(\\([@%]\\|\$#\\)[a-zA-Z_:][a-zA-Z0-9_:]*\\)" 1
+                 ("\\(\\([@%]\\|\\$#\\)[a-zA-Z_:][a-zA-Z0-9_:]*\\)" 1
                   (if (eq (char-after (match-beginning 2)) ?%)
                       'cperl-hash-face
                     'cperl-array-face)
@@ -8882,7 +8882,7 @@ Delay of auto-help controlled by `cperl-lazy-help-time'."
 (defun cperl-font-lock-unfontify-region-function (beg end)
   (let* ((modified (buffer-modified-p)) (buffer-undo-list t)
         (inhibit-read-only t) (inhibit-point-motion-hooks t)
-        before-change-functions after-change-functions
+        (inhibit-modification-hooks t)
         deactivate-mark buffer-file-name buffer-file-truename)
     (remove-text-properties beg end '(face nil))
     (if (and (not modified) (buffer-modified-p))
index 4c997bdd4d060dff5d5ba787b3b3031e92a86a94..8c8bef06eccec9b95ea0abf139452a194394927e 100644 (file)
@@ -259,12 +259,12 @@ never indented."
   :group 'dcl)
 
 (defcustom dcl-imenu-generic-expression
-  `((nil "^\\$[ \t]*\\([A-Za-z0-9_\$]+\\):[ \t]+SUBROUTINE\\b" 1)
+  `((nil "^\\$[ \t]*\\([A-Za-z0-9_$]+\\):[ \t]+SUBROUTINE\\b" 1)
     (,dcl-imenu-label-labels
-     "^\\$[ \t]*\\([A-Za-z0-9_\$]+\\):\\([ \t]\\|$\\)" 1)
-    (,dcl-imenu-label-goto "\\s-GOTO[ \t]+\\([A-Za-z0-9_\$]+\\)" 1)
-    (,dcl-imenu-label-gosub "\\s-GOSUB[ \t]+\\([A-Za-z0-9_\$]+\\)" 1)
-    (,dcl-imenu-label-call "\\s-CALL[ \t]+\\([A-Za-z0-9_\$]+\\)" 1))
+     "^\\$[ \t]*\\([A-Za-z0-9_$]+\\):\\([ \t]\\|$\\)" 1)
+    (,dcl-imenu-label-goto "\\s-GOTO[ \t]+\\([A-Za-z0-9_$]+\\)" 1)
+    (,dcl-imenu-label-gosub "\\s-GOSUB[ \t]+\\([A-Za-z0-9_$]+\\)" 1)
+    (,dcl-imenu-label-call "\\s-CALL[ \t]+\\([A-Za-z0-9_$]+\\)" 1))
   "Default imenu generic expression for DCL.
 
 The default includes SUBROUTINE labels in the main listing and
@@ -369,7 +369,7 @@ followed by space or tab."
 
 
 (defcustom dcl-label-r
-  "[a-zA-Z0-9_\$]*:\\([ \t!]\\|$\\)"
+  "[a-zA-Z0-9_$]*:\\([ \t!]\\|$\\)"
   "Regular expression describing a label.
 A label is a name followed by a colon followed by white-space or end-of-line."
   :type 'regexp
@@ -453,12 +453,12 @@ Preloaded with all known option names from dcl-option-alist")
 ;; above.  This version won't find GOTOs in comments or text strings.
 ;(defvar dcl-imenu-generic-expression
 ;  (`
-;   ((nil "^\\$[ \t]*\\([A-Za-z0-9_\$]+\\):[ \t]+SUBROUTINE\\b" 1)
-;    ("Labels" "^\\$[ \t]*\\([A-Za-z0-9_\$]+\\):\\([ \t]\\|$\\)" 1)
-;    ("GOTO" (, (concat dcl-cmd-r "GOTO[ \t]+\\([A-Za-z0-9_\$]+\\)")) 5)
+;   ((nil "^\\$[ \t]*\\([A-Za-z0-9_$]+\\):[ \t]+SUBROUTINE\\b" 1)
+;    ("Labels" "^\\$[ \t]*\\([A-Za-z0-9_$]+\\):\\([ \t]\\|$\\)" 1)
+;    ("GOTO" (, (concat dcl-cmd-r "GOTO[ \t]+\\([A-Za-z0-9_$]+\\)")) 5)
 ;    ("GOSUB" (, (concat dcl-cmd-r
-;                      "GOSUB[ \t]+\\([A-Za-z0-9_\$]+\\)")) 5)
-;    ("CALL" (, (concat dcl-cmd-r "CALL[ \t]+\\([A-Za-z0-9_\$]+\\)")) 5)))
+;                      "GOSUB[ \t]+\\([A-Za-z0-9_$]+\\)")) 5)
+;    ("CALL" (, (concat dcl-cmd-r "CALL[ \t]+\\([A-Za-z0-9_$]+\\)")) 5)))
 ;  "*Default imenu generic expression for DCL.
 
 ;The default includes SUBROUTINE labels in the main listing and
index c694bbd5832231a39cbec1cfa232ff4cdf81acba..6d8e90c2d6a96edba64b8dabb9db403ab9fbdfac 100644 (file)
@@ -1899,7 +1899,7 @@ It's only used when `ebnf-syntax' is `iso-ebnf'."
   :group 'ebnf-syntactic)
 
 
-(defcustom ebnf-file-suffix-regexp "\.[Bb][Nn][Ff]$"
+(defcustom ebnf-file-suffix-regexp "\\.[Bb][Nn][Ff]$"
   "Specify file name suffix that contains EBNF.
 
 See `ebnf-eps-directory' command."
@@ -2731,7 +2731,7 @@ See also `ebnf-syntax-buffer'."
       (ebnf-syntax                      . 'ebnf)
       (ebnf-iso-alternative-p           . nil)
       (ebnf-iso-normalize-p             . nil)
-      (ebnf-file-suffix-regexp          . "\.[Bb][Nn][Ff]$")
+      (ebnf-file-suffix-regexp          . "\\.[Bb][Nn][Ff]$")
       (ebnf-eps-prefix                  . "ebnf--")
       (ebnf-eps-header-font             . '(11 Helvetica "Black" "White" bold))
       (ebnf-eps-header                  . nil)
index 1ea9f17477542d60ea8d0531bc5a336a6f66b3d0..bdc304e0aa53f490b57bcc385dc20c29f40baf2d 100644 (file)
@@ -632,16 +632,16 @@ otherwise build the summary from TYPE and SYMBOL."
             (xref-make-elisp-location symbol type file)))
 
 (defvar elisp-xref-find-def-functions nil
-  "List of functions to be run from ‘elisp--xref-find-definitions’ to add additional xrefs.
+  "List of functions to be run from `elisp--xref-find-definitions' to add additional xrefs.
 Called with one arg; the symbol whose definition is desired.
 Each function should return a list of xrefs, or nil; the first
 non-nil result supercedes the xrefs produced by
-‘elisp--xref-find-definitions’.")
+`elisp--xref-find-definitions'.")
 
 ;; FIXME: name should be singular; match xref-find-definition
 (defun elisp--xref-find-definitions (symbol)
   ;; The file name is not known when `symbol' is defined via interactive eval.
-  (let (xrefs temp)
+  (let (xrefs)
 
     (let ((temp elisp-xref-find-def-functions))
       (while (and (null xrefs)
@@ -720,10 +720,15 @@ non-nil result supercedes the xrefs produced by
               (dolist (method (cl--generic-method-table generic))
                 (let* ((info (cl--generic-method-info method));; qual-string combined-args doconly
                        (specializers (cl--generic-method-specializers method))
+                       (non-default nil)
                        (met-name (cons symbol specializers))
                        (file (find-lisp-object-file-name met-name 'cl-defmethod)))
+                  (dolist (item specializers)
+                    ;; default method has all 't' in specializers
+                    (setq non-default (or non-default (not (equal t item)))))
+
                   (when (and file
-                             (or specializers   ;; default method has null specializers
+                             (or non-default
                                  (nth 2 info))) ;; assuming only co-located default has null doc string
                     (if specializers
                         (let ((summary (format elisp--xref-format-extra 'cl-defmethod symbol (nth 1 info))))
@@ -800,6 +805,7 @@ non-nil result supercedes the xrefs produced by
 (declare-function project-current "project")
 
 (defun elisp--xref-find-references (symbol)
+  "Find all references to SYMBOL (a string) in the current project."
   (cl-mapcan
    (lambda (dir)
      (xref-collect-references symbol dir))
@@ -928,6 +934,7 @@ Semicolons start comments.
             (goto-char end)))))))
 
 (defun elisp-byte-code-syntax-propertize (start end)
+  (goto-char start)
   (elisp--byte-code-comment end (point))
   (funcall
    (syntax-propertize-rules
@@ -1240,7 +1247,7 @@ If the current defun is actually a call to `defvar',
 then reset the variable using the initial value expression
 even if the variable already has some other value.
 \(Normally `defvar' does not change the variable's value
-if it already has a value.\)
+if it already has a value.)
 
 Return the result of evaluation."
   ;; FIXME: the print-length/level bindings should only be applied while
index e8a1ae455ee72bdddb5491c464ea9417ad10d4fe..0ac59e1a1ead92e32b8d837c51dc9610b739d526 100644 (file)
   :group 'f90-indent)
 
 (defcustom f90-beginning-ampersand t
-  "Non-nil gives automatic insertion of \& at start of continuation line."
+  "Non-nil gives automatic insertion of `&' at start of continuation line."
   :type  'boolean
   :safe  'booleanp
   :group 'f90)
@@ -649,7 +649,7 @@ forall\\|block\\|critical\\)\\)\\_>"
 \\|enumerator\\|procedure\\|\
 logical\\|double[ \t]*precision\\|type[ \t]*(\\(?:\\sw\\|\\s_\\)+)\\|none\\)[ \t]*"
       (1 font-lock-keyword-face) (2 font-lock-type-face))
-    '("\\_<\\(namelist\\|common\\)[ \t]*\/\\(\\(?:\\sw\\|\\s_\\)+\\)?\/"
+    '("\\_<\\(namelist\\|common\\)[ \t]*/\\(\\(?:\\sw\\|\\s_\\)+\\)?\/"
       (1 font-lock-keyword-face) (2 font-lock-constant-face nil t))
     "\\_<else\\([ \t]*if\\|where\\)?\\_>"
     '("\\(&\\)[ \t]*\\(!\\|$\\)"  (1 font-lock-keyword-face))
@@ -954,8 +954,8 @@ Used in the F90 entry in `hs-special-modes-alist'.")
    ;; and also variables of derived type "type (foo)".
    ;; "type, foo" must be a block (?).
    "type[ \t,]\\("
-   "[^i(!\n\"\& \t]\\|"                 ; not-i(
-   "i[^s!\n\"\& \t]\\|"                 ; i not-s
+   "[^i(!\n\"& \t]\\|"                 ; not-i(
+   "i[^s!\n\"& \t]\\|"                 ; i not-s
    "is\\(?:\\sw\\|\\s_\\)\\)\\|"
    ;; "abstract interface" is F2003; "submodule" is F2008.
    "program\\|\\(?:abstract[ \t]*\\)?interface\\|\\(?:sub\\)?module\\|"
@@ -992,9 +992,9 @@ Set subexpression 1 in the match-data to the name of the type."
     found))
 
 (defvar f90-imenu-generic-expression
-  (let ((good-char "[^!\"\&\n \t]") (not-e "[^e!\n\"\& \t]")
-        (not-n "[^n!\n\"\& \t]") (not-d "[^d!\n\"\& \t]")
-        ;; (not-ib "[^i(!\n\"\& \t]") (not-s "[^s!\n\"\& \t]")
+  (let ((good-char "[^!\"&\n \t]") (not-e "[^e!\n\"& \t]")
+        (not-n "[^n!\n\"& \t]") (not-d "[^d!\n\"& \t]")
+        ;; (not-ib "[^i(!\n\"& \t]") (not-s "[^s!\n\"& \t]")
         )
     `((nil "^[ \t0-9]*program[ \t]+\\(\\(?:\\sw\\|\\s_\\)+\\)" 1)
       ("Submodules" "^[ \t0-9]*submodule[ \t]*([^)\n]+)[ \t]*\
@@ -1015,7 +1015,7 @@ Set subexpression 1 in the match-data to the name of the type."
          "\\("
          ;; At least three non-space characters before function/subroutine.
          ;; Check that the last three non-space characters do not spell E N D.
-         "[^!\"\&\n]*\\("
+         "[^!\"&\n]*\\("
          not-e good-char good-char "\\|"
          good-char not-n good-char "\\|"
          good-char good-char not-d "\\)"
@@ -1154,7 +1154,7 @@ Variables controlling indentation style and extra features:
   Non-nil causes `f90-do-auto-fill' to break lines before delimiters
   (default t).
 `f90-beginning-ampersand'
-  Automatic insertion of \& at beginning of continuation lines (default t).
+  Automatic insertion of `&' at beginning of continuation lines (default t).
 `f90-smart-end'
   From an END statement, check and fill the end using matching block start.
   Allowed values are `blink', `no-blink', and nil, which determine
@@ -1378,7 +1378,7 @@ write\\)[ \t]*([^)\n]*)")
    ((looking-at "\\(submodule\\)[ \t]*([^)\n]+)[ \t]*\\(\\(?:\\sw\\|\\s_\\)+\\)\\_>")
     (list (match-string 1) (match-string 2)))
    ((and (not (looking-at "end[ \t]*\\(function\\|subroutine\\)"))
-         (looking-at "[^!'\"\&\n]*\\(function\\|subroutine\\)[ \t]+\
+         (looking-at "[^!'\"&\n]*\\(function\\|subroutine\\)[ \t]+\
 \\(\\(?:\\sw\\|\\s_\\)+\\)"))
     (list (match-string 1) (match-string 2)))))
 ;; Following will match an un-named main program block; however
@@ -2110,7 +2110,7 @@ Like `join-line', but handles F90 syntax."
   (if arg (forward-line 1))
   (when (eq (preceding-char) ?\n)
     (skip-chars-forward " \t")
-    (if (looking-at "\&") (delete-char 1))
+    (if (looking-at "&") (delete-char 1))
     (beginning-of-line)
     (delete-region (point) (1- (point)))
     (skip-chars-backward " \t")
index a9d47431e516c2dd37c1ca2cce2970a978d41bd6..3adadd1386ee1a06f996491210610e408d46153d 100644 (file)
@@ -826,16 +826,16 @@ Convert it to flymake internal format."
   (append
    '(
      ;; MS Visual C++ 6.0
-     ("\\(\\([a-zA-Z]:\\)?[^:(\t\n]+\\)(\\([0-9]+\\)) \: \\(\\(error\\|warning\\|fatal error\\) \\(C[0-9]+\\):[ \t\n]*\\(.+\\)\\)"
+     ("\\(\\([a-zA-Z]:\\)?[^:(\t\n]+\\)(\\([0-9]+\\)) : \\(\\(error\\|warning\\|fatal error\\) \\(C[0-9]+\\):[ \t\n]*\\(.+\\)\\)"
       1 3 nil 4)
      ;; jikes
-     ("\\(\\([a-zA-Z]:\\)?[^:(\t\n]+\\)\:\\([0-9]+\\)\:[0-9]+\:[0-9]+\:[0-9]+\: \\(\\(Error\\|Warning\\|Caution\\|Semantic Error\\):[ \t\n]*\\(.+\\)\\)"
+     ("\\(\\([a-zA-Z]:\\)?[^:(\t\n]+\\):\\([0-9]+\\):[0-9]+:[0-9]+:[0-9]+: \\(\\(Error\\|Warning\\|Caution\\|Semantic Error\\):[ \t\n]*\\(.+\\)\\)"
       1 3 nil 4)
      ;; MS midl
      ("midl[ ]*:[ ]*\\(command line error .*\\)"
       nil nil nil 1)
      ;; MS C#
-     ("\\(\\([a-zA-Z]:\\)?[^:(\t\n]+\\)(\\([0-9]+\\),[0-9]+)\: \\(\\(error\\|warning\\|fatal error\\) \\(CS[0-9]+\\):[ \t\n]*\\(.+\\)\\)"
+     ("\\(\\([a-zA-Z]:\\)?[^:(\t\n]+\\)(\\([0-9]+\\),[0-9]+): \\(\\(error\\|warning\\|fatal error\\) \\(CS[0-9]+\\):[ \t\n]*\\(.+\\)\\)"
       1 3 nil 4)
      ;; perl
      ("\\(.*\\) at \\([^ \n]+\\) line \\([0-9]+\\)[,.\n]" 2 3 nil 1)
@@ -843,7 +843,7 @@ Convert it to flymake internal format."
      ("\\(?:Parse\\|Fatal\\) error: \\(.*\\) in \\(.*\\) on line \\([0-9]+\\)" 2 3 nil 1)
      ;; LaTeX warnings (fileless) ("\\(LaTeX \\(Warning\\|Error\\): .*\\) on input line \\([0-9]+\\)" 20 3 nil 1)
      ;; ant/javac.  Note this also matches gcc warnings!
-     (" *\\(\\[javac\\] *\\)?\\(\\([a-zA-Z]:\\)?[^:(\t\n]+\\)\:\\([0-9]+\\)\\(?:\:[0-9]+\\)?\:[ \t\n]*\\(.+\\)"
+     (" *\\(\\[javac\\] *\\)?\\(\\([a-zA-Z]:\\)?[^:(\t\n]+\\):\\([0-9]+\\)\\(?::[0-9]+\\)?:[ \t\n]*\\(.+\\)"
       2 4 nil 5))
    ;; compilation-error-regexp-alist)
    (flymake-reformat-err-line-patterns-from-compile-el compilation-error-regexp-alist-alist))
index ee4733f6e4e86f1e2c9b580cb5e0302caf572b37..ef47005506556ab35ca466f7477f8e831569cd71 100644 (file)
@@ -244,8 +244,8 @@ line in region."
 (defcustom fortran-column-ruler-fixed
   "0   4 6  10        20        30        40        5\
 0        60        70\n\
-\[   ]|{   |    |    |    |    |    |    |    |    \
-\|    |    |    |    |}\n"
+[   ]|{   |    |    |    |    |    |    |    |    \
+|    |    |    |    |}\n"
   "String displayed above current line by \\[fortran-column-ruler].
 This variable is used in fixed format mode.
 See the variable `fortran-column-ruler-tab' for TAB format mode."
@@ -257,8 +257,8 @@ See the variable `fortran-column-ruler-tab' for TAB format mode."
 (defcustom fortran-column-ruler-tab
   "0       810        20        30        40        5\
 0        60        70\n\
-\[   ]|  { |    |    |    |    |    |    |    |    \
-\|    |    |    |    |}\n"
+[   ]|  { |    |    |    |    |    |    |    |    \
+|    |    |    |    |}\n"
   "String displayed above current line by \\[fortran-column-ruler].
 This variable is used in TAB format mode.
 See the variable `fortran-column-ruler-fixed' for fixed format mode."
index 1eff62c5acf0ad140a163f1b8924cbb528008b32..3860c81065d59ea0c8cac3a6d4c449696b640eac 100644 (file)
@@ -4038,6 +4038,8 @@ member."
       (let ((name (bindat-get-field local 'name))
             (value (bindat-get-field local 'value))
             (type (bindat-get-field local 'type)))
+        (when (not value)
+          (setq value "<complex data type>"))
         (if (or (not value)
                 (string-match "\\0x" value))
             (add-text-properties 0 (length name)
index 257c3d2a80f8d6648e1ce92930228297163be9e9..6ee32b0b3eeb0d392057b9bc1c1f057ec763faca 100644 (file)
@@ -252,7 +252,7 @@ CATEGORY is the overlay category.  If it is nil, use the `glasses' category."
        ;; Parentheses
        (when glasses-separate-parentheses-p
          (goto-char beg)
-         (while (re-search-forward "[a-zA-Z]_*\\(\(\\)" end t)
+         (while (re-search-forward "[a-zA-Z]_*\\((\\)" end t)
            (unless (glasses-parenthesis-exception-p (point-at-bol) (match-end 1))
              (glasses-make-overlay (match-beginning 1) (match-end 1)
                                    'glasses-parenthesis))))))))
@@ -291,7 +291,7 @@ recognized according to the current value of the variable `glasses-separator'."
              (goto-char (match-beginning 1)))))
        (when glasses-separate-parentheses-p
          (goto-char (point-min))
-         (while (re-search-forward "[a-zA-Z]_*\\( \\)\(" nil t)
+         (while (re-search-forward "[a-zA-Z]_*\\( \\)(" nil t)
            (unless (glasses-parenthesis-exception-p (point-at-bol) (1+ (match-end 1)))
              (replace-match "" t nil nil 1)))))))
   ;; nil must be returned to allow use in write file hooks
index 9ab0667b5bac30b4337e563fa11c2b75c8f52506..1284ef2857add991e01b5cad12cf0f2c857cf7e4 100644 (file)
@@ -2855,6 +2855,10 @@ Obeying it means displaying in another window the specified file and line."
 (defun gud-format-command (str arg)
   (let ((insource (not (eq (current-buffer) gud-comint-buffer)))
        (frame (or gud-last-frame gud-last-last-frame))
+       (buffer-file-name-localized
+         (and (buffer-file-name)
+              (or (file-remote-p (buffer-file-name) 'localname)
+                  (buffer-file-name))))
        result)
     (while (and str
                (let ((case-fold-search nil))
@@ -2864,15 +2868,15 @@ Obeying it means displaying in another window the specified file and line."
        (cond
         ((eq key ?f)
          (setq subst (file-name-nondirectory (if insource
-                                                 (buffer-file-name)
+                                                 buffer-file-name-localized
                                                (car frame)))))
         ((eq key ?F)
          (setq subst (file-name-base (if insource
-                                          (buffer-file-name)
+                                          buffer-file-name-localized
                                         (car frame)))))
         ((eq key ?d)
          (setq subst (file-name-directory (if insource
-                                              (buffer-file-name)
+                                              buffer-file-name-localized
                                             (car frame)))))
         ((eq key ?l)
          (setq subst (int-to-string
index c4111398f54379032b8010b4ba84b5e45c7d0d7d..4473409e344bee75405a9f1bc9cc367487089831 100644 (file)
@@ -434,7 +434,7 @@ It collects and prints the diagnostics messages."
 
        ;; A system variable -- only system help
        ((string-match
-        "\\`!\\([a-zA-Z0-9_]+\\)\\(\.\\([A-Za-z0-9_]+\\)\\)?"
+        "\\`!\\([a-zA-Z0-9_]+\\)\\(\\.\\([A-Za-z0-9_]+\\)\\)?"
         this-word)
        (let* ((word  (match-string-no-properties 1 this-word))
               (entry (assq (idlwave-sintern-sysvar word)
@@ -1312,7 +1312,7 @@ IDL assistant.")
   (let ((help-loc (idlwave-html-help-location))
        topic anchor file just-started exists full-link)
 
-    (if (string-match "\.html" link)
+    (if (string-match "\\.html" link)
        (setq topic (substring link 0 (match-beginning 0))
              anchor (substring link (match-end 0)))
       (error "Malformed help link"))
index 50ebadf733b1a27d7a32e9ff1c9f13ad9f80724f..5aeb4ea1a07fc019be42fcb0a8025faca4a51209 100644 (file)
@@ -732,7 +732,7 @@ it contains an error message, even if hide-output is non-nil.")
 
 (defvar idlwave-shell-pending-commands nil
   "List of commands to be sent to IDL.
-Each element of the list is list of \(CMD PCMD HIDE\), where CMD is a
+Each element of the list is list of \(CMD PCMD HIDE), where CMD is a
 string to be sent to IDL and PCMD is a post-command to be placed on
 `idlwave-shell-post-command-hook'.  If HIDE is non-nil, hide the output
 from command CMD.  PCMD and HIDE are optional.")
@@ -1240,7 +1240,7 @@ Return either nil or 'hide."
                                             show-if-error)
   "Send a command to IDL process.
 
-\(CMD PCMD HIDE\) are placed at the end of `idlwave-shell-pending-commands'.
+\(CMD PCMD HIDE) are placed at the end of `idlwave-shell-pending-commands'.
 If IDL is ready the first command in `idlwave-shell-pending-commands',
 CMD, is sent to the IDL process.
 
@@ -1256,7 +1256,7 @@ stepping through code with output.
 If optional fourth argument PREEMPT is non-nil CMD is put at front of
 `idlwave-shell-pending-commands'.  If PREEMPT is 'wait, wait for all
 output to complete and the next prompt to arrive before returning
-\(useful if you need an answer now\).  IDL is considered ready if the
+\(useful if you need an answer now).  IDL is considered ready if the
 prompt is present and if `idlwave-shell-ready' is non-nil.
 
 If SHOW-IF-ERROR is non-nil, show the output if it contains an error
@@ -3122,7 +3122,7 @@ versions of IDL."
         (string-match "\\.\\'" pre)))             ;; structure member
 
        ;; Skip over strings
-       ((and (string-match "\\([\"\']\\)[^\1]*$" pre)
+       ((and (string-match "\\([\"']\\)[^\1]*$" pre)
             (string-match (concat "^[^" (match-string 1 pre) "]*"
                                   (match-string 1 pre)) post))
        (setq start (+ start (match-end 0))))
@@ -3212,7 +3212,7 @@ size(___,/DIMENSIONS)"
 
 (defvar idlwave-shell-bp-alist nil
   "Alist of breakpoints.
-A breakpoint is a cons cell \(\(file line\) . \(\(index module\) data\)\)
+A breakpoint is a cons cell \((file line) . \((index module) data))
 
 The car is the `frame' for the breakpoint:
 file - full path file name.
@@ -3921,7 +3921,7 @@ Query as a function if TYPE set to something beside `pro'."
   "Get module source, and update `idlwave-shell-sources-alist'."
   (let ((old (assoc (upcase module) idlwave-shell-sources-alist))
        filename)
-    (when (string-match "\.PATH *[\n\r]\\([^%][^\r\n]+\\)[\n\r]"
+    (when (string-match ".PATH *[\n\r]\\([^%][^\r\n]+\\)[\n\r]"
                        idlwave-shell-command-output)
       (setq filename (substring idlwave-shell-command-output
                                (match-beginning 1) (match-end 1)))
index b524b761b75fa22af48d27438e972061ff3f4c25..ac2259df6a4d5abaadc6767af97d34c7dfa4e2e2 100644 (file)
@@ -742,7 +742,7 @@ The actions that can be performed are listed in `idlwave-indent-action-table'."
 
 (defcustom idlwave-abbrev-start-char "\\"
   "A single character string used to start abbreviations in abbrev mode.
-Possible characters to choose from: ~\\=`\%
+Possible characters to choose from: ~\\=`%
 or even `?'.  `.' is not a good choice because it can make structure
 field names act like abbrevs in certain circumstances.
 
@@ -1559,7 +1559,7 @@ KEY in `idlwave-mode-map' by defining an anonymous function calling
 `self-insert-command' followed by CMD.  If KEY contains more than one
 character a binding will only be set if SELECT is 'both.
 
-\(KEY . CMD\) is also placed in the `idlwave-indent-expand-table',
+\(KEY . CMD) is also placed in the `idlwave-indent-expand-table',
 replacing any previous value for KEY.  If a binding is not set then it
 will instead be placed in `idlwave-indent-action-table'.
 
index 17aaab9e2c308442311b37390a5cd66540cb09c5..290ebeea290f7c31b506b51a87fa51701fe83449 100644 (file)
@@ -510,7 +510,7 @@ Used by these commands to determine defaults."
                                     (file-name-nondirectory file-name)))
   (comint-send-string (inferior-lisp-proc) (concat "(compile-file \""
                                                   file-name
-                                                  "\"\)\n"))
+                                                  "\")\n"))
   (switch-to-lisp t))
 
 
index 98a22dd8441c1877d80f305529a393720a349750..ab994f382529ea51d7159f502a3c122999d598c1 100644 (file)
@@ -126,7 +126,7 @@ An example of this is \"Class.prototype = { method1: ...}\".")
 (defconst js--prototype-objextend-class-decl-re-2
   (concat "^\\s-*\\(?:var\\s-+\\)?"
           "\\(" js--dotted-name-re "\\)"
-          "\\s-*=\\s-*Object\\.extend\\s-*\("))
+          "\\s-*=\\s-*Object\\.extend\\s-*("))
 
 ;; var NewClass = Class.create({
 (defconst js--prototype-class-decl-re
@@ -639,7 +639,7 @@ enabled frameworks."
          (js--maybe-join
           "\\(?:var[ \t]+\\)?[a-zA-Z_$0-9.]+[ \t]*=[ \t]*\\(?:"
           "\\|"
-          "\\)[ \t]*\("
+          "\\)[ \t]*("
 
           (when (memq 'prototype js-enabled-frameworks)
                     "Class\\.create")
@@ -651,10 +651,10 @@ enabled frameworks."
             "[a-zA-Z_$0-9]+\\.extend\\(?:Final\\)?"))
 
          (when (memq 'dojo js-enabled-frameworks)
-           "dojo\\.declare[ \t]*\(")
+           "dojo\\.declare[ \t]*(")
 
          (when (memq 'mochikit js-enabled-frameworks)
-           "MochiKit\\.Base\\.update[ \t]*\(")
+           "MochiKit\\.Base\\.update[ \t]*(")
 
          ;; mumble.prototypeTHING
          (js--maybe-join
@@ -662,7 +662,7 @@ enabled frameworks."
 
           (when (memq 'javascript js-enabled-frameworks)
             '( ;; foo.prototype.bar = function(
-              "\\.[a-zA-Z_$0-9]+[ \t]*=[ \t]*function[ \t]*\("
+              "\\.[a-zA-Z_$0-9]+[ \t]*=[ \t]*function[ \t]*("
 
               ;; mumble.prototype = {
               "[ \t]*=[ \t]*{")))))
@@ -1370,17 +1370,6 @@ LIMIT defaults to point."
              (looking-at "\"\\s-*,\\s-*\\[")
              (eq (match-end 0) (1+ list-begin)))))))
 
-(defun js--syntax-begin-function ()
-  (when (< js--cache-end (point))
-    (goto-char (max (point-min) js--cache-end)))
-
-  (let ((pitem))
-    (while (and (setq pitem (car (js--backward-pstate)))
-                (not (eq 0 (js--pitem-paren-depth pitem)))))
-
-    (when pitem
-      (goto-char (js--pitem-h-begin pitem )))))
-
 ;;; Font Lock
 (defun js--make-framework-matcher (framework &rest regexps)
   "Helper function for building `js--font-lock-keywords'.
@@ -1735,6 +1724,12 @@ This performs fontification according to `js--class-styles'."
            (js-syntax-propertize-regexp end))))))
    (point) end))
 
+(defconst js--prettify-symbols-alist
+  '(("=>" . ?⇒)
+    (">=" . ?≥)
+    ("<=" . ?≤))
+  "Alist of symbol prettifications for JavaScript.")
+
 ;;; Indentation
 
 (defconst js--possibly-braceless-keyword-re
@@ -3506,6 +3501,7 @@ If one hasn't been set, or if it's stale, prompt for a new one."
   (setq-local open-paren-in-column-0-is-defun-start nil)
   (setq-local font-lock-defaults (list js--font-lock-keywords))
   (setq-local syntax-propertize-function #'js-syntax-propertize)
+  (setq-local prettify-symbols-alist js--prettify-symbols-alist)
 
   (setq-local parse-sexp-ignore-comments t)
   (setq-local parse-sexp-lookup-properties t)
@@ -3550,8 +3546,6 @@ If one hasn't been set, or if it's stale, prompt for a new one."
     (make-local-variable 'adaptive-fill-regexp)
     (c-setup-paragraph-variables))
 
-  (setq-local syntax-begin-function #'js--syntax-begin-function)
-
   ;; Important to fontify the whole buffer syntactically! If we don't,
   ;; then we might have regular expression literals that aren't marked
   ;; as strings, which will screw up parse-partial-sexp, scan-lists,
@@ -3577,4 +3571,8 @@ If one hasn't been set, or if it's stale, prompt for a new one."
 
 (provide 'js)
 
+;; Local Variables:
+;; coding: utf-8
+;; End:
+
 ;; js.el ends here
index 511b25486a28410c39dd5fc35a0cf3159baebde8..80a93a477b42d0630e2b6f1893272b24cd278ae5 100644 (file)
@@ -2,8 +2,7 @@
 
 ;; Copyright (C) 1996-1997, 2001-2015 Free Software Foundation, Inc.
 
-;; Author: Andrew Csillag <drew_csillag@geocities.com>
-;; Maintainer: Andrew Csillag <drew_csillag@geocities.com>
+;; Author: Andrew Csillag <drew@thecsillags.com>
 ;; Keywords: languages, faces
 
 ;; This file is part of GNU Emacs.
@@ -67,10 +66,9 @@ If m4 is not in your PATH, set this to an absolute file name."
   `(
     ("\\(\\_<\\(m4_\\)?dnl\\_>\\).*$" . font-lock-comment-face)
     ("\\$[*#@0-9]" . font-lock-variable-name-face)
-    ("\\\$\\\@" . font-lock-variable-name-face)
-    ("\\\$\\\*" . font-lock-variable-name-face)
-    ("\\b\\(builtin\\|change\\(com\\|quote\\|word\\)\\|d\\(e\\(bug\\(file\\|mode\\)\\|cr\\|f\\(ine\\|n\\)\\)\\|iv\\(ert\\|num\\)\\|nl\\|umpdef\\)\\|e\\(rrprint\\|syscmd\\|val\\)\\|f\\(ile\\|ormat\\)\\|gnu\\|i\\(f\\(def\\|else\\)\\|n\\(c\\(lude\\|r\\)\\|d\\(ex\\|ir\\)\\)\\)\\|l\\(en\\|ine\\)\\|m\\(4\\(exit\\|wrap\\)\\|aketemp\\)\\|p\\(atsubst\\|opdef\\|ushdef\\)\\|regexp\\|s\\(hift\\|include\\|ubstr\\|ys\\(cmd\\|val\\)\\)\\|tra\\(ceo\\(ff\\|n\\)\\|nslit\\)\\|un\\(d\\(efine\\|ivert\\)\\|ix\\)\\)\\b" . font-lock-keyword-face)
-    ("\\b\\(m4_\\(builtin\\|change\\(com\\|quote\\|word\\)\\|d\\(e\\(bug\\(file\\|mode\\)\\|cr\\|f\\(ine\\|n\\)\\)\\|iv\\(ert\\|num\\)\\|nl\\|umpdef\\)\\|e\\(rrprint\\|syscmd\\|val\\)\\|f\\(ile\\|ormat\\)\\|i\\(f\\(def\\|else\\)\\|n\\(c\\(lude\\|r\\)\\|d\\(ex\\|ir\\)\\)\\)\\|l\\(en\\|ine\\)\\|m\\(4\\(_undefine\\|exit\\|wrap\\)\\|aketemp\\)\\|p\\(atsubst\\|opdef\\|ushdef\\)\\|regexp\\|s\\(hift\\|include\\|ubstr\\|ys\\(cmd\\|val\\)\\)\\|tra\\(ceo\\(ff\\|n\\)\\|nslit\\)\\|undivert\\)\\)\\b" . font-lock-keyword-face))
+    ("\\$\\@" . font-lock-variable-name-face)
+    ("\\$\\*" . font-lock-variable-name-face)
+    ("\\_<\\(m4_\\)?\\(builtin\\|change\\(com\\|quote\\|word\\)\\|d\\(e\\(bug\\(file\\|mode\\)\\|cr\\|f\\(ine\\|n\\)\\)\\|iv\\(ert\\|num\\)\\|nl\\|umpdef\\)\\|e\\(rrprint\\|syscmd\\|val\\)\\|f\\(ile\\|ormat\\)\\|gnu\\|i\\(f\\(def\\|else\\)\\|n\\(c\\(lude\\|r\\)\\|d\\(ex\\|ir\\)\\)\\)\\|l\\(en\\|ine\\)\\|m\\(4\\(exit\\|wrap\\)\\|aketemp\\)\\|p\\(atsubst\\|opdef\\|ushdef\\)\\|regexp\\|s\\(hift\\|include\\|ubstr\\|ys\\(cmd\\|val\\)\\)\\|tra\\(ceo\\(ff\\|n\\)\\|nslit\\)\\|un\\(d\\(efine\\|ivert\\)\\|ix\\)\\)\\_>" . font-lock-keyword-face))
   "Default `font-lock-keywords' for M4 mode.")
 
 (defcustom m4-mode-hook nil
index 4f46cbe63571728178c4fac5e1929c8fc03544ba..9736f0f207cb3b3c6518c5cfcb6fa5435ced3825 100644 (file)
@@ -1502,7 +1502,7 @@ Insertion takes place at point."
   (if (zerop (+ (length targets) (length macros)))
       (progn
        (beep)
-       (message "No macros or targets to browse! Consider running 'makefile-pickup-everything\'"))
+       (message "No macros or targets to browse! Consider running `makefile-pickup-everything'"))
     (let ((browser-buffer (get-buffer-create makefile-browser-buffer-name)))
        (pop-to-buffer browser-buffer)
        (makefile-browser-fill targets macros)
index 6b92c7ee2d64701bf02f3a411efff53482891cc6..a0f50fc0f19ae7a5d32b90e55971c60496e73541 100644 (file)
@@ -89,7 +89,7 @@
   (save-excursion
     (goto-char (point-min))
     (message "Removing comments")
-    (while (re-search-forward "^[A-z\.()+0-9: ]*`\\|'.*$" nil t)
+    (while (re-search-forward "^[A-z.()+0-9: ]*`\\|'.*$" nil t)
       (replace-match ""))))
 
 (defun mantemp-remove-memfuncs ()
index 3521a13980996a24cea22deb8840efca9d6d74a5..55d69bfddff44d844ce01f1270adf7249c64c15f 100644 (file)
@@ -932,7 +932,7 @@ Returns (parse-state) if line starts inside a string."
            (if (save-excursion (goto-char indent-point)
                                (looking-at
                                 (if perl-indent-parens-as-block
-                                    "[ \t]*[{(\[]" "[ \t]*{")))
+                                    "[ \t]*[{([]" "[ \t]*{")))
                perl-continued-brace-offset 0)))
        (t
         ;; This line starts a new statement.
index 8f50887113e589287beb40f1b4c662aa0c0cc40f..f1aa35f287114aba0c6b60a9788d4489936552d1 100644 (file)
@@ -61,7 +61,7 @@ indentation of a line/region to the indentation engine of the sub
 mode, it is supposed to bind this variable to non-nil around the call.
 
 The non-nil value looks as follows
-   \(FIRST-COLUMN (START . END) PREVIOUS-CHUNKS)
+   (FIRST-COLUMN (START . END) PREVIOUS-CHUNKS)
 
 FIRST-COLUMN is the column the indentation engine of the sub mode
 should usually choose for top-level language constructs inside
@@ -86,7 +86,7 @@ values are:
 
  - A function called with the start position of the current
    chunk.  It will return either the region of the previous chunk
-   as \(PREV-START . PREV-END) or nil if there is no further
+   as (PREV-START . PREV-END) or nil if there is no further
    previous chunk.
 
    A typical use case are literate programming sources - the
index 5a4ed84c346f00031923dbe9bad0c632a3a9ddda..3d9b0c322ab670aad7b461780dd7158e4298e347 100644 (file)
@@ -922,15 +922,38 @@ This is really kludgy, and unneeded (i.e. obsolete) in Emacs>=24."
 (defun prolog-smie-rules (kind token)
   (pcase (cons kind token)
     (`(:elem . basic) prolog-indent-width)
+    ;; The list of arguments can never be on a separate line!
+    (`(:list-intro . ,_) t)
+    ;; When we don't know how to indent an empty line, assume the most
+    ;; likely token will be ";".
+    (`(:elem . empty-line-token) ";")
     (`(:after . ".") '(column . 0)) ;; To work around smie-closer-alist.
     ;; Allow indentation of if-then-else as:
     ;;    (   test
-    ;;     -> thenrule
-    ;;     ;  elserule
+    ;;    ->  thenrule
+    ;;      elserule
     ;;    )
     (`(:before . ,(or `"->" `";"))
-     (and (smie-rule-bolp) (smie-rule-parent-p "(") (smie-rule-parent 1)))
-    (`(:after . ,(or `":-" `"->" `"-->")) prolog-indent-width)))
+     (and (smie-rule-bolp) (smie-rule-parent-p "(") (smie-rule-parent 0)))
+    (`(:after . ,(or `"->" `"*->"))
+     ;; We distinguish
+     ;;
+     ;;     (a ->
+     ;;          b;
+     ;;      c)
+     ;; and
+     ;;     (    a ->
+     ;;          b
+     ;;     ;    c)
+     ;;
+     ;; based on the space between the open paren and the "a".
+     (unless (and (smie-rule-parent-p "(")
+                  (save-excursion
+                    (smie-indent-forward-token)
+                    (smie-backward-sexp 'halfsexp)
+                    (not (eq ?\( (char-before)))))
+       prolog-indent-width))
+    (`(:after . ,(or `":-" `"-->")) prolog-indent-width)))
 
 \f
 ;;-------------------------------------------------------------------
@@ -1005,7 +1028,7 @@ VERSION is of the format (Major . Minor)"
   (setq-local comment-start "%")
   (setq-local comment-end "")
   (setq-local comment-add 1)
-  (setq-local comment-start-skip "\\(?:/\\*+ *\\|%%+ *\\)")
+  (setq-local comment-start-skip "\\(?:/\\*+ *\\|%+ *\\)")
   (setq-local parens-require-spaces nil)
   ;; Initialize Prolog system specific variables
   (dolist (var '(prolog-keywords prolog-types prolog-mode-specificators
@@ -1121,6 +1144,9 @@ Commands:
   (dolist (ar prolog-align-rules) (add-to-list 'align-rules-list ar))
   (add-hook 'post-self-insert-hook #'prolog-post-self-insert nil t)
   ;; `imenu' entry moved to the appropriate hook for consistency.
+  (when prolog-electric-dot-flag
+    (setq-local electric-indent-chars
+                (cons ?\. electric-indent-chars)))
 
   ;; Load SICStus debugger if suitable
   (if (and (eq prolog-system 'sicstus)
@@ -2060,7 +2086,7 @@ Argument BOUND is a buffer position limiting searching."
 (defun prolog-find-unmatched-paren ()
   "Return the column of the last unmatched left parenthesis."
   (save-excursion
-    (goto-char (or (car (nth 9 (syntax-ppss))) (point-min)))
+    (goto-char (or (nth 1 (syntax-ppss)) (point-min)))
     (current-column)))
 
 
@@ -2078,6 +2104,7 @@ whitespace characters, parentheses, or then/else branches."
   (when prolog-electric-if-then-else-flag
     (save-excursion
       (let ((regexp (concat "(\\|" prolog-left-indent-regexp))
+            (pos (point))
             level)
         (beginning-of-line)
         (skip-chars-forward " \t")
@@ -2087,6 +2114,9 @@ whitespace characters, parentheses, or then/else branches."
         ;;             prolog-paren-indent))
 
         ;; work on all subsequent "->", "(", ";"
+        (and (looking-at regexp)
+             (= pos (match-end 0))
+             (indent-according-to-mode))
         (while (looking-at regexp)
           (goto-char (match-end 0))
           (setq level (+ (prolog-find-unmatched-paren) prolog-paren-indent))
@@ -2357,7 +2387,7 @@ This function is only available when `prolog-system' is set to `swi'."
 (defun prolog-atom-under-point ()
   "Return the atom under or left to the point."
   (save-excursion
-    (let ((nonatom_chars "[](){},\. \t\n")
+    (let ((nonatom_chars "[](){},. \t\n")
           start)
       (skip-chars-forward (concat "^" nonatom_chars))
       (skip-chars-backward nonatom_chars)
@@ -2826,10 +2856,10 @@ objects (relevant only if `prolog-system' is set to `sicstus')."
                   (eq prolog-system 'sicstus)
                   (prolog-in-object))
              (format
-              "^\\(%s\\|%s\\|[^\n\'\"%%]\\)*&[ \t]*\\(\\|%%.*\\)$\\|[ \t]*}"
+              "^\\(%s\\|%s\\|[^\n'\"%%]\\)*&[ \t]*\\(\\|%%.*\\)$\\|[ \t]*}"
               prolog-quoted-atom-regexp prolog-string-regexp)
            (format
-            "^\\(%s\\|%s\\|[^\n\'\"%%]\\)*\\.[ \t]*\\(\\|%%.*\\)$"
+            "^\\(%s\\|%s\\|[^\n'\"%%]\\)*\\.[ \t]*\\(\\|%%.*\\)$"
             prolog-quoted-atom-regexp prolog-string-regexp))
          nil t)
         (if (and (nth 8 (syntax-ppss))
index 9528ffeebbc811af5955591c5b3967231b1d171d..b641e300163cbdab5d9dd8612fab798768da65bf 100644 (file)
@@ -620,6 +620,11 @@ The type returned can be `comment', `string' or `paren'."
    ((python-rx string-delimiter)
     (0 (ignore (python-syntax-stringify))))))
 
+(defconst python--prettify-symbols-alist
+  '(("lambda"  . ?λ)
+    ("and" . ?∧)
+    ("or" . ?∨)))
+
 (defsubst python-syntax-count-quotes (quote-char &optional point limit)
   "Count number of quotes around point (max is 3).
 QUOTE-CHAR is the quote char to count.  Optional argument POINT is
@@ -3635,12 +3640,18 @@ Never set this variable directly, use
   "Set the buffer for FILE-NAME as the tracked buffer.
 Internally it uses the `python-pdbtrack-tracked-buffer' variable.
 Returns the tracked buffer."
-  (let ((file-buffer (get-file-buffer
-                      (concat (file-remote-p default-directory)
-                              file-name))))
+  (let* ((file-name-prospect (concat (file-remote-p default-directory)
+                              file-name))
+         (file-buffer (get-file-buffer file-name-prospect)))
     (if file-buffer
         (setq python-pdbtrack-tracked-buffer file-buffer)
-      (setq file-buffer (find-file-noselect file-name))
+      (cond
+       ((file-exists-p file-name-prospect)
+        (setq file-buffer (find-file-noselect file-name-prospect)))
+       ((and (not (equal file-name file-name-prospect))
+             (file-exists-p file-name))
+        ;; Fallback to a locally available copy of the file.
+        (setq file-buffer (find-file-noselect file-name-prospect))))
       (when (not (member file-buffer python-pdbtrack-buffers-to-kill))
         (add-to-list 'python-pdbtrack-buffers-to-kill file-buffer)))
     file-buffer))
@@ -5098,6 +5109,9 @@ returned as is."
            "`outline-level' function for Python mode."
            (1+ (/ (current-indentation) python-indent-offset))))
 
+  (set (make-local-variable 'prettify-symbols-alist)
+       python--prettify-symbols-alist)
+
   (python-skeleton-add-menu-items)
 
   (make-local-variable 'python-shell-internal-buffer)
index 5d59a56e858e30e263087361e00abb6a0f2c6a74..09338860c7520cb7bfa489e09d1012a1f7ce8296 100644 (file)
@@ -695,7 +695,7 @@ It is used when `ruby-encoding-magic-comment-style' is set to `custom'."
   (let ((index-alist '()) (case-fold-search nil)
         name next pos decl sing)
     (goto-char beg)
-    (while (re-search-forward "^\\s *\\(\\(class\\s +\\|\\(class\\s *<<\\s *\\)\\|module\\s +\\)\\([^\(<\n ]+\\)\\|\\(def\\|alias\\)\\s +\\([^\(\n ]+\\)\\)" end t)
+    (while (re-search-forward "^\\s *\\(\\(class\\s +\\|\\(class\\s *<<\\s *\\)\\|module\\s +\\)\\([^(<\n ]+\\)\\|\\(def\\|alias\\)\\s +\\([^(\n ]+\\)\\)" end t)
       (setq sing (match-beginning 3))
       (setq decl (match-string 5))
       (setq next (match-end 0))
@@ -709,7 +709,7 @@ It is used when `ruby-encoding-magic-comment-style' is set to `custom'."
         (if prefix
             (setq name
                   (cond
-                   ((string-match "^self\." name)
+                   ((string-match "^self\\." name)
                     (concat (substring prefix 0 -1) (substring name 4)))
                   (t (concat prefix name)))))
         (push (cons name pos) index-alist)
@@ -1795,7 +1795,7 @@ If the result is do-end block, it will always be multiline."
       (setq content
             (if (equal string-quote "\"")
                 (replace-regexp-in-string "\\\\\"" "\"" (replace-regexp-in-string "\\([^\\\\]\\)'" "\\1\\\\'" content))
-              (replace-regexp-in-string "\\\\\'" "'" (replace-regexp-in-string "\\([^\\\\]\\)\"" "\\1\\\\\"" content))))
+              (replace-regexp-in-string "\\\\'" "'" (replace-regexp-in-string "\\([^\\\\]\\)\"" "\\1\\\\\"" content))))
       (let ((orig-point (point)))
         (delete-region min max)
         (insert
@@ -2007,7 +2007,8 @@ It will be properly highlighted even when the call omits parens.")
          (t
           (error (concat
                   "Internal error on `ruby-in-ppss-context-p': "
-                  "context name `" (symbol-name context) "' is unknown"))))
+                  "context name `%s' is unknown")
+                 context)))
         t)))
 
 (defvar ruby-font-lock-syntax-table
@@ -2192,7 +2193,7 @@ See `font-lock-syntax-table'.")
     ;; Constants.
     ("\\(?:\\_<\\|::\\)\\([A-Z]+\\(\\w\\|_\\)*\\)"
      1 (unless (eq ?\( (char-after)) font-lock-type-face))
-    ("\\(^\\s *\\|[\[\{\(,]\\s *\\|\\sw\\s +\\)\\(\\(\\sw\\|_\\)+\\):[^:]"
+    ("\\(^\\s *\\|[[{(,]\\s *\\|\\sw\\s +\\)\\(\\(\\sw\\|_\\)+\\):[^:]"
      (2 font-lock-constant-face))
     ;; Conversion methods on Kernel.
     (,(concat ruby-font-lock-keyword-beg-re
index a21bc198e3bf4e2ca7810503379453f223b87b72..e921e84a33ebd0f4afde18c98289a6ee2436e4c7 100644 (file)
@@ -415,7 +415,7 @@ that variable's value is a string."
   (eval-when-compile
     (list
      ;; Similar to Scheme
-     (list "(\\(define\\(-\\w+\\)?\\)\\>[      ]*\\\((?\\)\\(\\sw+\\)\\>"
+     (list "(\\(define\\(-\\w+\\)?\\)\\>[      ]*\\((?\\)\\(\\sw+\\)\\>"
           '(1 font-lock-keyword-face)
           '(4 font-lock-function-name-face))
      (cons
index 735c8f968882b130d08f9ea6773c0c4f6cf6d78f..049c93dfae25d5c908eebb2c6d90d86ce98b09c4 100644 (file)
@@ -347,7 +347,7 @@ naming the shell."
      . ((nil
         ;; function FOO
         ;; function FOO()
-         "^\\s-*function\\s-+\\\([[:alpha:]_][[:alnum:]_]*\\)\\s-*\\(?:()\\)?"
+         "^\\s-*function\\s-+\\([[:alpha:]_][[:alnum:]_]*\\)\\s-*\\(?:()\\)?"
          1)
        ;; FOO()
        (nil
@@ -374,7 +374,7 @@ For use in `add-log-current-defun-function'."
           (concat "\\(?:"
                   ;; function FOO
                   ;; function FOO()
-                  "^\\s-*function\\s-+\\\([[:alpha:]_][[:alnum:]_]*\\)\\s-*\\(?:()\\)?"
+                  "^\\s-*function\\s-+\\([[:alpha:]_][[:alnum:]_]*\\)\\s-*\\(?:()\\)?"
                   "\\)\\|\\(?:"
                   ;; FOO()
                   "^\\s-*\\([[:alpha:]_][[:alnum:]_]*\\)\\s-*()"
@@ -2319,7 +2319,7 @@ controls whether to query about making the visited file executable.
 
 Calls the value of `sh-set-shell-hook' if set."
   (interactive (list (completing-read
-                      (format "Shell \(default %s\): "
+                      (format "Shell (default %s): "
                               sh-shell-file)
                       ;; This used to use interpreter-mode-alist, but that is
                       ;; no longer appropriate now that uses regexps.
@@ -2810,15 +2810,15 @@ Return new point if successful, nil if an error occurred."
   "Return indent-info for this line.
 This is a list.  nil means the line is to be left as is.
 Otherwise it contains one or more of the following sublists:
-\(t NUMBER\)   NUMBER is the base location in the buffer that indentation is
+\(t NUMBER)   NUMBER is the base location in the buffer that indentation is
             relative to.  If present, this is always the first of the
             sublists.  The indentation of the line in question is
             derived from the indentation of this point, possibly
             modified by subsequent sublists.
-\(+ VAR\)
-\(- VAR\)      Get the value of variable VAR and add to or subtract from
+\(+ VAR)
+\(- VAR)      Get the value of variable VAR and add to or subtract from
             the indentation calculated so far.
-\(= VAR\)           Get the value of variable VAR and *replace* the
+\(= VAR)      Get the value of variable VAR and *replace* the
             indentation with its value.  This only occurs for
             special variables such as `sh-indent-comment'.
 STRING      This is ignored for the purposes of calculating
@@ -3086,7 +3086,7 @@ we go to the end of the previous line and do not check for continuations."
                (setq prev (point))
                ))
          ;; backward-sexp failed
-         (if (zerop (skip-chars-backward " \t()[\]{};`'"))
+         (if (zerop (skip-chars-backward " \t()[]{};`'"))
              (forward-char -1))
          (if (bolp)
              (let ((back (sh-prev-line nil)))
index cbf65c0a8034794e2431fd02b2a572477072fdeb..abc99eec909e6b46fda0c2c7772995f3c1b65937 100644 (file)
@@ -360,7 +360,7 @@ file.  Since that is a plaintext file, this could be dangerous."
      :sqli-comint-func sql-comint-db2
      :prompt-regexp "^db2 => "
      :prompt-length 7
-     :prompt-cont-regexp "^db2 (cont\.) => "
+     :prompt-cont-regexp "^db2 (cont\\.) => "
      :input-filter sql-escape-newlines-filter)
 
     (informix
@@ -381,9 +381,9 @@ file.  Since that is a plaintext file, this could be dangerous."
      :sqli-options sql-ingres-options
      :sqli-login sql-ingres-login-params
      :sqli-comint-func sql-comint-ingres
-     :prompt-regexp "^\* "
+     :prompt-regexp "^\\* "
      :prompt-length 2
-     :prompt-cont-regexp "^\* ")
+     :prompt-cont-regexp "^\\* ")
 
     (interbase
      :name "Interbase"
@@ -491,7 +491,7 @@ file.  Since that is a plaintext file, this could be dangerous."
      :completion-object sql-sqlite-completion-object
      :prompt-regexp "^sqlite> "
      :prompt-length 8
-     :prompt-cont-regexp "^   \.\.\.> "
+     :prompt-cont-regexp "^   \\.\\.\\.> "
      :terminator ";")
 
     (sybase
@@ -525,7 +525,7 @@ highlighted and will not support `sql-interactive-mode'.
 
 Each element in the list is in the following format:
 
\(PRODUCT FEATURE VALUE ...)
+ (PRODUCT FEATURE VALUE ...)
 
 where PRODUCT is the appropriate value of `sql-product'.  The
 product name is then followed by FEATURE-VALUE pairs.  If a
@@ -639,7 +639,7 @@ settings.")
   "An alist of connection parameters for interacting with a SQL product.
 Each element of the alist is as follows:
 
-  \(CONNECTION \(SQL-VARIABLE VALUE) ...)
+  (CONNECTION \(SQL-VARIABLE VALUE) ...)
 
 Where CONNECTION is a case-insensitive string identifying the
 connection, SQL-VARIABLE is the symbol name of a SQL mode
@@ -3897,14 +3897,14 @@ Here is an example for your init file.  It keeps the SQLi buffer a
 certain length.
 
 \(add-hook \\='sql-interactive-mode-hook
-    \(function (lambda ()
-        \(setq comint-output-filter-functions \\='comint-truncate-buffer))))
+    (function (lambda ()
+        (setq comint-output-filter-functions \\='comint-truncate-buffer))))
 
 Here is another example.  It will always put point back to the statement
 you entered, right above the output it created.
 
 \(setq comint-output-filter-functions
-       \(function (lambda (STR) (comint-show-output))))"
+       (function (lambda (STR) (comint-show-output))))"
   (delay-mode-hooks (comint-mode))
 
   ;; Get the `sql-product' for this interactive session.
index 5f1cb53f1ddfc18d3a1ee0444321888fdeeed4d9..bce56a447f0a047c953b8d0d38640f5657c07ffd 100644 (file)
@@ -259,7 +259,7 @@ Usage:
 
   INDENTATION:  Typing `TAB' at the beginning of a line indents the line.
     The amount of indentation is specified by option `vera-basic-offset'.
-    Indentation can be done for an entire region \(`M-C-\\') or buffer (menu).
+    Indentation can be done for an entire region (`M-C-\\') or buffer (menu).
     `TAB' always indents the line if option `vera-intelligent-tab' is nil.
 
   WORD/COMMAND COMPLETION:  Typing `TAB' after a (not completed) word looks
index f83c676396d87d586a54242a158b1053aea1e5f6..489094b2e4fdbf6ed683a094178d11cae61ab3ef 100644 (file)
 ;;
 
 ;; This variable will always hold the version number of the mode
-(defconst verilog-mode-version "2015-08-16-ce03c7a-vpo-GNU"
+(defconst verilog-mode-version "2015-09-18-314cf1d-vpo-GNU"
   "Version of this Verilog mode.")
 (defconst verilog-mode-release-emacs t
   "If non-nil, this version of Verilog mode was released with Emacs itself.")
@@ -841,7 +841,7 @@ first difference.")
     (verilog-xl-2
      "([WE][0-9A-Z]+)[ \t]+\\([^ \t\n,]+\\)[, \t]+\\(line[ \t]+\\)?\\([0-9]+\\):.*$" 1 3)
     (verilog-IES
-     ".*\\*[WE],[0-9A-Z]+\\(\[[0-9A-Z_,]+\]\\)? (\\([^ \t,]+\\),\\([0-9]+\\)" 2 3)
+     ".*\\*[WE],[0-9A-Z]+\\(\\[[0-9A-Z_,]+\\]\\)? (\\([^ \t,]+\\),\\([0-9]+\\)" 2 3)
     (verilog-surefire-1
      "[^\n]*\\[\\([^:]+\\):\\([0-9]+\\)\\]" 1 2)
     (verilog-surefire-2
@@ -885,8 +885,8 @@ See `compilation-error-regexp-alist-alist' for the formatting.  For XEmacs.")
     ("([WE][0-9A-Z]+)[ \t]+\\([^ \t\n,]+\\)[, \t]+\\(line[ \t]+\\)?\\([0-9]+\\):.*$" 1 bold t)
     ("([WE][0-9A-Z]+)[ \t]+\\([^ \t\n,]+\\)[, \t]+\\(line[ \t]+\\)?\\([0-9]+\\):.*$" 3 bold t)
     ;; verilog-IES (nc-verilog)
-    (".*\\*[WE],[0-9A-Z]+\\(\[[0-9A-Z_,]+\]\\)? (\\([^ \t,]+\\),\\([0-9]+\\)|" 2 bold t)
-    (".*\\*[WE],[0-9A-Z]+\\(\[[0-9A-Z_,]+\]\\)? (\\([^ \t,]+\\),\\([0-9]+\\)|" 3 bold t)
+    (".*\\*[WE],[0-9A-Z]+\\(\\[[0-9A-Z_,]+\\]\\)? (\\([^ \t,]+\\),\\([0-9]+\\)|" 2 bold t)
+    (".*\\*[WE],[0-9A-Z]+\\(\\[[0-9A-Z_,]+\\]\\)? (\\([^ \t,]+\\),\\([0-9]+\\)|" 3 bold t)
     ;; verilog-surefire-1
     ("[^\n]*\\[\\([^:]+\\):\\([0-9]+\\)\\]" 1 bold t)
     ("[^\n]*\\[\\([^:]+\\):\\([0-9]+\\)\\]" 2 bold t)
@@ -2303,7 +2303,7 @@ find the errors."
        ;; non blocking assignment operator
        "<="
        ;; comparison
-       "==" "!=" "===" "!==" "<=" ">=" "==\?" "!=\?" "<->"
+       "==" "!=" "===" "!==" "<=" ">=" "==?" "!=?" "<->"
        ;; event_trigger
        "->" "->>"
        ;; property_expr
@@ -2469,7 +2469,7 @@ find the errors."
    "\\(\\<begin\\>\\)\\|"                       ; 1
    "\\(\\<else\\>\\)\\|"                        ; 2
    "\\(\\<end\\>\\s-+\\<else\\>\\)\\|"          ; 3
-   "\\(\\<always\\(?:_ff\\)?\\>\\(?:\[ \t\]*@\\)\\)\\|"    ; 4 (matches always or always_ff w/ @...)
+   "\\(\\<always\\(?:_ff\\)?\\>\\(?:[ \t]*@\\)\\)\\|"    ; 4 (matches always or always_ff w/ @...)
    "\\(\\<always\\(?:_comb\\|_latch\\)?\\>\\)\\|"  ; 5 (matches always, always_comb, always_latch w/o @...)
    "\\(\\<fork\\>\\)\\|"                        ; 7
    "\\(\\<if\\>\\)\\|"
@@ -3194,10 +3194,10 @@ See also `verilog-font-lock-extra-types'.")
                                                       'font-lock-preprocessor-face
                                                     'font-lock-type-face))
                 ;; Fontify delays/numbers
-                '("\\(@\\)\\|\\([ \t\n\f\r]#\\s-*\\(\\(\[0-9_.\]+\\('s?[hdxbo][0-9a-fA-F_xz]*\\)?\\)\\|\\(([^()]+)\\|\\sw+\\)\\)\\)"
+                '("\\(@\\)\\|\\([ \t\n\f\r]#\\s-*\\(\\([0-9_.]+\\('s?[hdxbo][0-9a-fA-F_xz]*\\)?\\)\\|\\(([^()]+)\\|\\sw+\\)\\)\\)"
                   0 font-lock-type-face append)
      ;; Fontify property/sequence cycle delays - these start with '##'
-     '("\\(##\\(\\sw+\\|\\[[^\]]+\\]\\)\\)"
+     '("\\(##\\(\\sw+\\|\\[[^]]+\\]\\)\\)"
        0 font-lock-type-face append)
                 ;; Fontify instantiation names
                 '("\\([A-Za-z][A-Za-z0-9_]*\\)\\s-*(" 1 font-lock-function-name-face)
@@ -3442,7 +3442,7 @@ Use filename, if current buffer being edited shorten to just buffer name."
   (verilog-forward-sexp))
 
 (defun verilog-forward-sexp-function (arg)
-  "Move forward a sexp."
+  "Move forward ARG sexps."
   ;; Used by hs-minor-mode
   (if (< arg 0)
       (verilog-backward-sexp)
@@ -3936,7 +3936,7 @@ With optional ARG, remove existing end of line comments."
 (defun electric-verilog-semi-with-comment ()
   "Insert `;' character, reindent the line and indent for comment."
   (interactive)
-  (insert "\;")
+  (insert ";")
   (save-excursion
     (beginning-of-line)
     (verilog-indent-line))
@@ -4072,7 +4072,7 @@ if it reaches the end of the buffer."
 The upper left corner is defined by point.  Indices begin with 0
 and extend to the MAX - 1.  If no prefix arg is given, the user
 is prompted for a value.  The indices are surrounded by square
-brackets \[].  For example, the following code with the point
+brackets [].  For example, the following code with the point
 located after the first 'a' gives:
 
     a = b                           a[  0] = b
@@ -5072,7 +5072,7 @@ Useful for creating tri's and other expanded fields."
     (if (verilog-within-string)
        (re-search-forward "\"" nil t)
       (if (verilog-in-star-comment-p)
-         (re-search-forward "\*/" nil t)
+         (re-search-forward "\\*/" nil t)
        (let ((bpt (- (point) 2)))
          (end-of-line)
          (delete-region bpt (point))))))
@@ -5184,7 +5184,7 @@ becomes:
                  (t
                   )))
                ((verilog-in-star-comment-p)
-                (re-search-backward "/\*")
+                (re-search-backward "/\\*")
                 (insert (format " // surefire lint_off_line %6s" code )))
                (t
                 (insert (format " // surefire lint_off_line %6s" code ))
@@ -5301,8 +5301,8 @@ Save the result unless optional NO-SAVE is t."
                 (save-excursion
                   (if (not (file-exists-p (buffer-file-name buf)))
                       (error
-                       (concat "File not found: " (buffer-file-name buf))))
-                  (message (concat "Processing " (buffer-file-name buf)))
+                       "File not found: %s" (buffer-file-name buf)))
+                  (message "Processing %s" (buffer-file-name buf))
                   (set-buffer buf)
                   (funcall funref)
                   (when (and (not no-save)
@@ -6054,7 +6054,7 @@ Optional BOUND limits search."
                (verilog-re-search-backward "//" nil 'move)
                 (skip-chars-backward "/"))
                ((nth 4 state)  ; in /* */ comment
-               (verilog-re-search-backward "/\*" nil 'move))))
+               (verilog-re-search-backward "/\\*" nil 'move))))
            (narrow-to-region bound (point))
            (while (/= here (point))
              (setq here (point))
@@ -6092,7 +6092,7 @@ Optional BOUND limits search."
                (skip-chars-forward " \t\n\f")
                )
                ((nth 4 state)  ; in /* */ comment
-               (verilog-re-search-forward "\*\/\\s-*" nil 'move))))
+               (verilog-re-search-forward "\\*/\\s-*" nil 'move))))
            (narrow-to-region (point) bound)
            (while (/= here (point))
              (setq here (point)
@@ -6673,7 +6673,7 @@ Do not count named blocks or case-statements."
               (save-excursion
                 (forward-line -1)
                 (skip-chars-forward " \t")
-                (looking-at "\*")))
+                (looking-at "\\*")))
          (insert "* ")))))
 
 (defun verilog-comment-indent (&optional _arg)
@@ -7078,7 +7078,7 @@ Region is defined by B and EDPOS."
                (beginning-of-line)
                (point-marker)
              (end-of-line))))
-      (if (re-search-backward " /\\* \[#-\]# \[a-zA-Z\]+ \[0-9\]+ ## \\*/" b t)
+      (if (re-search-backward " /\\* [#-]# [a-zA-Z]+ [0-9]+ ## \\*/" b t)
          (progn
            (replace-match " /* -#  ## */")
            (end-of-line))
@@ -8074,9 +8074,9 @@ Duplicate signals are also removed.  For example A[2] and A[1] become A[2:1]."
             (when (and sv-busstring
                        (not (equal sv-busstring (verilog-sig-bits sig))))
                (when nil  ; Debugging
-                (message (concat "Warning, can't merge into single bus "
-                                 sv-name bus
-                                 ", the AUTOs may be wrong")))
+                (message (concat "Warning, can't merge into single bus %s%s"
+                                 ", the AUTOs may be wrong")
+                         sv-name bus))
               (setq buswarn ", Couldn't Merge"))
             (if (verilog-sig-comment sig) (setq combo ", ..."))
             (setq sv-memory (or sv-memory (verilog-sig-memory sig))
@@ -8129,7 +8129,8 @@ Tieoff value uses `verilog-active-low-regexp' and
 ;;
 
 (defun verilog-decls-princ (decls &optional header prefix)
-  "For debug, dump the `verilog-read-decls' structure DECLS."
+  "For debug, dump the `verilog-read-decls' structure DECLS.
+Use optional HEADER and PREFIX."
   (when decls
     (if header (princ header))
     (setq prefix (or prefix ""))
@@ -8173,7 +8174,7 @@ Tieoff value uses `verilog-active-low-regexp' and
        (princ "\n")))))
 
 (defun verilog-modport-princ (modports &optional header prefix)
-  "For debug, dump internal MODPORT structures, with HEADER and PREFIX."
+  "For debug, dump internal MODPORTS structures, with HEADER and PREFIX."
   (when modports
     (if header (princ header))
     (while modports
@@ -8196,32 +8197,32 @@ Tieoff value uses `verilog-active-low-regexp' and
   (verilog-backward-open-paren)
   (let (done)
     (while (not done)
-      (verilog-re-search-backward-quick "\\()\\|\\b[a-zA-Z0-9`_\$]\\|\\]\\)" nil nil)  ; ] isn't word boundary
+      (verilog-re-search-backward-quick "\\()\\|\\b[a-zA-Z0-9`_$]\\|\\]\\)" nil nil)  ; ] isn't word boundary
       (cond ((looking-at ")")
              (verilog-backward-open-paren))
             (t (setq done t)))))
   (while (looking-at "\\]")
     (verilog-backward-open-bracket)
-    (verilog-re-search-backward-quick "\\(\\b[a-zA-Z0-9`_\$]\\|\\]\\)" nil nil))
+    (verilog-re-search-backward-quick "\\(\\b[a-zA-Z0-9`_$]\\|\\]\\)" nil nil))
   (skip-chars-backward "a-zA-Z0-9`_$"))
 
 (defun verilog-read-inst-module-matcher ()
   "Set match data 0 with module_name when point is inside instantiation."
   (verilog-read-inst-backward-name)
   ;; Skip over instantiation name
-  (verilog-re-search-backward-quick "\\(\\b[a-zA-Z0-9`_\$]\\|)\\)" nil nil)  ; ) isn't word boundary
+  (verilog-re-search-backward-quick "\\(\\b[a-zA-Z0-9`_$]\\|)\\)" nil nil)  ; ) isn't word boundary
   ;; Check for parameterized instantiations
   (when (looking-at ")")
     (verilog-backward-open-paren)
-    (verilog-re-search-backward-quick "\\b[a-zA-Z0-9`_\$]" nil nil))
+    (verilog-re-search-backward-quick "\\b[a-zA-Z0-9`_$]" nil nil))
   (skip-chars-backward "a-zA-Z0-9'_$")
   ;; #1 is legal syntax for gate primitives
   (when (save-excursion
          (verilog-backward-syntactic-ws-quick)
          (eq ?# (char-before)))
-    (verilog-re-search-backward-quick "\\b[a-zA-Z0-9`_\$]" nil nil)
+    (verilog-re-search-backward-quick "\\b[a-zA-Z0-9`_$]" nil nil)
     (skip-chars-backward "a-zA-Z0-9'_$"))
-  (looking-at "[a-zA-Z0-9`_\$]+")
+  (looking-at "[a-zA-Z0-9`_$]+")
   ;; Important: don't use match string, this must work with Emacs 19 font-lock on
   (buffer-substring-no-properties (match-beginning 0) (match-end 0))
   ;; Caller assumes match-beginning/match-end is still set
@@ -8236,7 +8237,7 @@ Tieoff value uses `verilog-active-low-regexp' and
   "Return instance_name when point is inside instantiation."
   (save-excursion
     (verilog-read-inst-backward-name)
-    (looking-at "[a-zA-Z0-9`_\$]+")
+    (looking-at "[a-zA-Z0-9`_$]+")
     ;; Important: don't use match string, this must work with Emacs 19 font-lock on
     (buffer-substring-no-properties (match-beginning 0) (match-end 0))))
 
@@ -8247,7 +8248,7 @@ Tieoff value uses `verilog-active-low-regexp' and
     ;; Due to "module x import y (" we must search for declaration begin
     (verilog-re-search-backward-quick verilog-defun-re nil nil)
     (goto-char (match-end 0))
-    (verilog-re-search-forward-quick "\\b[a-zA-Z0-9`_\$]+" nil nil)
+    (verilog-re-search-forward-quick "\\b[a-zA-Z0-9`_$]+" nil nil)
     ;; Important: don't use match string, this must work with Emacs 19 font-lock on
     (verilog-symbol-detick
      (buffer-substring-no-properties (match-beginning 0) (match-end 0)) t)))
@@ -8257,7 +8258,7 @@ Tieoff value uses `verilog-active-low-regexp' and
   (save-excursion
     (verilog-read-inst-backward-name)
     ;; Skip over instantiation name
-    (verilog-re-search-backward-quick "\\(\\b[a-zA-Z0-9`_\$]\\|)\\)" nil nil)  ; ) isn't word boundary
+    (verilog-re-search-backward-quick "\\(\\b[a-zA-Z0-9`_$]\\|)\\)" nil nil)  ; ) isn't word boundary
     ;; If there are parameterized instantiations
     (when (looking-at ")")
       (let ((end-pt (point))
@@ -8265,9 +8266,9 @@ Tieoff value uses `verilog-active-low-regexp' and
            param-name paren-beg-pt param-value)
        (verilog-backward-open-paren)
        (while (verilog-re-search-forward-quick "\\." end-pt t)
-         (verilog-re-search-forward-quick "\\([a-zA-Z0-9`_\$]\\)" nil nil)
+         (verilog-re-search-forward-quick "\\([a-zA-Z0-9`_$]\\)" nil nil)
          (skip-chars-backward "a-zA-Z0-9'_$")
-         (looking-at "[a-zA-Z0-9`_\$]+")
+         (looking-at "[a-zA-Z0-9`_$]+")
          (setq param-name (buffer-substring-no-properties
                            (match-beginning 0) (match-end 0)))
          (verilog-re-search-forward-quick "(" nil nil)
@@ -8666,7 +8667,7 @@ Return an array of [outputs inouts inputs wire reg assign const]."
 
 (defun verilog-read-sub-decls-expr (submoddecls comment port expr)
   "For `verilog-read-sub-decls-line', parse a subexpression and add signals."
-  ;;(message "vrsde: ‘%s’" expr)
+  ;;(message "vrsde: `%s'" expr)
   ;; Replace special /*[....]*/ comments inserted by verilog-auto-inst-port
   (setq expr (verilog-string-replace-matches "/\\*\\(\\[[^*]+\\]\\)\\*/" "\\1" nil nil expr))
   ;; Remove front operators
@@ -8685,25 +8686,25 @@ Return an array of [outputs inouts inputs wire reg assign const]."
     (let (sig vec multidim)
       ;; Remove leading reduction operators, etc
       (setq expr (verilog-string-replace-matches "^\\s-*[---+~!|&]+\\s-*" "" nil nil expr))
-      ;;(message "vrsde-ptop: ‘%s’" expr)
+      ;;(message "vrsde-ptop: `%s'" expr)
       (cond  ; Find \signal. Final space is part of escaped signal name
        ((string-match "^\\s-*\\(\\\\[^ \t\n\f]+\\s-\\)" expr)
-       ;;(message "vrsde-s: ‘%s’" (match-string 1 expr))
+       ;;(message "vrsde-s: `%s'" (match-string 1 expr))
        (setq sig (match-string 1 expr)
              expr (substring expr (match-end 0))))
        ;; Find signal
        ((string-match "^\\s-*\\([a-zA-Z_][a-zA-Z_0-9]*\\)" expr)
-       ;;(message "vrsde-s: ‘%s’" (match-string 1 expr))
+       ;;(message "vrsde-s: `%s'" (match-string 1 expr))
        (setq sig (verilog-string-remove-spaces (match-string 1 expr))
              expr (substring expr (match-end 0)))))
       ;; Find [vector] or [multi][multi][multi][vector]
       (while (string-match "^\\s-*\\(\\[[^]]+\\]\\)" expr)
-       ;;(message "vrsde-v: ‘%s’" (match-string 1 expr))
+       ;;(message "vrsde-v: `%s'" (match-string 1 expr))
        (when vec (setq multidim (cons vec multidim)))
        (setq vec (match-string 1 expr)
              expr (substring expr (match-end 0))))
       ;; If found signal, and nothing unrecognized, add the signal
-      ;;(message "vrsde-rem: ‘%s’" expr)
+      ;;(message "vrsde-rem: `%s'" expr)
       (when (and sig (string-match "^\\s-*$" expr))
        (verilog-read-sub-decls-sig submoddecls comment port sig vec multidim))))))
 
@@ -9324,8 +9325,8 @@ warning message, you need to add to your init file:
        (let ((fns (verilog-library-filenames filename (buffer-file-name))))
          (if fns
              (set-buffer (find-file-noselect (car fns)))
-           (error (concat (verilog-point-text)
-                          ": Can't find verilog-read-defines file: " filename)))))
+           (error "%s: Can't find verilog-read-defines file: %s"
+                  (verilog-point-text) filename))))
       (when recurse
        (goto-char (point-min))
        (while (re-search-forward "^\\s-*`include\\s-+\\([^ \t\n\f]+\\)" nil t)
@@ -9506,8 +9507,8 @@ Some macros and such are also found and included.  For dinotrace.el."
          line)
       (if fns
          (set-buffer (find-file-noselect (car fns)))
-       (error (concat (verilog-point-text)
-                      ": Can't find verilog-getopt-file -f file: " filename)))
+       (error "%s: Can't find verilog-getopt-file -f file: %s"
+              (verilog-point-text) filename))
       (goto-char (point-min))
       (while (not (eobp))
        (setq line (buffer-substring (point) (point-at-eol)))
@@ -9674,7 +9675,7 @@ If undefined, and WING-IT, return just SYMBOL without the tick, else nil."
     ;; something like a[b].  Sorry, it should be substituted into the parser
     (setq symbol
          (verilog-string-replace-matches
-          "\[[^0-9: \t]+\]" "" nil nil
+          "\\[[^0-9: \t]+\\]" "" nil nil
           (or (verilog-symbol-detick symbol nil)
               (if verilog-auto-sense-defines-constant
                   "0"
@@ -9709,7 +9710,8 @@ Or, just the existing dirnames themselves if there are no wildcards."
   ;; Note this function is performance critical.
   ;; Do not call anything that requires disk access that cannot be cached.
   (interactive)
-  (unless dirnames (error "`verilog-library-directories' should include at least '.'"))
+  (unless dirnames
+    (error "`verilog-library-directories' should include at least `.'"))
   (setq dirnames (reverse dirnames))   ; not nreverse
   (let ((dirlist nil)
        pattern dirfile dirfiles dirname root filename rest basefile)
@@ -9888,17 +9890,18 @@ Return modi if successful, else print message unless IGNORE-ERROR is true."
                 (if (not (setq mif (verilog-module-inside-filename-p realname (car filenames))))
                     (setq filenames (cdr filenames))))
               ;; mif has correct form to become later elements of modi
-              (cond (mif (setq modi mif))
-                    (t (setq modi nil)
-                       (or ignore-error
-                           (error (concat (verilog-point-text)
-                                          ": Can't locate " module " module definition"
-                                          (if (not (equal module realname))
-                                              (concat " (Expanded macro to " realname ")")
-                                            "")
-                                          "\n    Check the verilog-library-directories variable."
-                                          "\n    I looked in (if not listed, doesn't exist):\n\t"
-                                          (mapconcat 'concat orig-filenames "\n\t"))))))
+              (setq modi mif)
+              (or mif ignore-error
+                  (error
+                   (concat
+                    "%s: Can't locate %s module definition%s"
+                    "\n    Check the verilog-library-directories variable."
+                    "\n    I looked in (if not listed, doesn't exist):\n\t%s")
+                   (verilog-point-text) module
+                   (if (not (equal module realname))
+                       (concat " (Expanded macro to " realname ")")
+                     "")
+                   (mapconcat 'concat orig-filenames "\n\t")))
               (when (eval-when-compile (fboundp 'make-hash-table))
                 (unless verilog-modi-lookup-cache
                   (setq verilog-modi-lookup-cache
@@ -9994,16 +9997,17 @@ and invalidating the cache."
 
 
 (defun verilog-modi-modport-lookup-one (modi name &optional ignore-error)
-  "Given a MODI, return the declarations related to the given modport NAME."
+  "Given a MODI, return the declarations related to the given modport NAME.
+Report errors unless optional IGNORE-ERROR."
   ;; Recursive routine - see below
   (let* ((realname (verilog-symbol-detick name t))
         (modport (assoc name (verilog-decls-get-modports (verilog-modi-get-decls modi)))))
     (or modport ignore-error
-       (error (concat (verilog-point-text)
-                      ": Can't locate " name " modport definition"
-                      (if (not (equal name realname))
-                          (concat " (Expanded macro to " realname ")")
-                        ""))))
+       (error "%s: Can't locate %s modport definition%s"
+               (verilog-point-text) name
+               (if (not (equal name realname))
+                   (concat " (Expanded macro to " realname ")")
+                 "")))
     (let* ((decls (verilog-modport-decls modport))
           (clks (verilog-modport-clockings modport)))
       ;; Now expand any clocking's
@@ -10641,7 +10645,7 @@ Typing \\[verilog-inject-auto] will make this into:
   (save-excursion
     (goto-char (point-min))
     ;; It's hard to distinguish modules; we'll instead search for pins.
-    (while (verilog-re-search-forward-quick "\\.\\s *[a-zA-Z0-9`_\$]+\\s *(\\s *[a-zA-Z0-9`_\$]+\\s *)" nil t)
+    (while (verilog-re-search-forward-quick "\\.\\s *[a-zA-Z0-9`_$]+\\s *(\\s *[a-zA-Z0-9`_$]+\\s *)" nil t)
       (verilog-backward-open-paren)  ; Inst start
       (cond
        ((= (preceding-char) ?\#)  ; #(...) parameter section, not pin.  Skip.
@@ -10656,7 +10660,7 @@ Typing \\[verilog-inject-auto] will make this into:
                (t
                 ;; Delete identical interconnect
                  (let ((case-fold-search nil))  ; So we don't convert upper-to-lower, etc
-                  (while (verilog-re-search-forward-quick "\\.\\s *\\([a-zA-Z0-9`_\$]+\\)*\\s *(\\s *\\1\\s *)\\s *" end-pt t)
+                  (while (verilog-re-search-forward-quick "\\.\\s *\\([a-zA-Z0-9`_$]+\\)*\\s *(\\s *\\1\\s *)\\s *" end-pt t)
                     (delete-region (match-beginning 0) (match-end 0))
                      (setq end-pt (- end-pt (- (match-end 0) (match-beginning 0))))  ; Keep it correct
                     (while (or (looking-at "[ \t\n\f,]+")
@@ -11397,12 +11401,12 @@ Multiple Module Templates:
   instantiation name.
 
   If a regular expression is provided, the @ character will be replaced
-  with the first \(\) grouping that matches against the cell name.  Using a
-  regexp of \"\\([0-9]+\\)\" provides identical values for @ as when no
+  with the first () grouping that matches against the cell name.  Using a
+  regexp of `\\([0-9]+\\)' provides identical values for @ as when no
   regexp is provided.  If you use multiple layers of parenthesis,
-  \"test\\([^0-9]+\\)_\\([0-9]+\\)\" would replace @ with non-number
+  `test\\([^0-9]+\\)_\\([0-9]+\\)' would replace @ with non-number
   characters after test and before _, whereas
-  \"\\(test\\([a-z]+\\)_\\([0-9]+\\)\\)\" would replace @ with the entire
+  `\\(test\\([a-z]+\\)_\\([0-9]+\\)\\)' would replace @ with the entire
   match.
 
   For example:
index 19a7e970a605937f0ca52d7a74ef8d6df155c7ce..9ee4ab520e183d2f20c7835fd20af358fd67d481 100644 (file)
@@ -268,7 +268,7 @@ Overrides local variable `indent-tabs-mode'."
     ;; ** Error: adder.vhd(190): Unknown identifier: ctl_numb
     ("ModelSim" "vcom" "-93 -work \\1" "make" "-f \\1"
      nil "vlib \\1; vmap \\2 \\1" "./" "work/" "Makefile" "modelsim"
-     ("^\\(ERROR\\|WARNING\\|\\*\\* Error\\|\\*\\* Warning\\)[^:]*:\\( *\[[0-9]+\]\\)? \\([^ \t\n]+\\)(\\([0-9]+\\)):" 3 4 nil) ("" 0)
+     ("^\\(ERROR\\|WARNING\\|\\*\\* Error\\|\\*\\* Warning\\)[^:]*:\\( *\\[[0-9]+]\\)? \\([^ \t\n]+\\)(\\([0-9]+\\)):" 3 4 nil) ("" 0)
      ("\\1/_primary.dat" "\\2/\\1.dat" "\\1/_primary.dat"
       "\\1/_primary.dat" "\\1/body.dat" downcase))
     ;; ProVHDL, Synopsys LEDA: provhdl -w work -f test.vhd
@@ -315,7 +315,7 @@ Overrides local variable `indent-tabs-mode'."
     ;;     ERROR[11]::File test.vhd Line 100: Use of undeclared identifier
     ("Speedwave" "analyze" "-libfile vsslib.ini -src" "make" "-f \\1"
      nil "mkdir \\1" "./" "work/" "Makefile" "speedwave"
-     ("^ *ERROR\[[0-9]+\]::File \\([^ \t\n]+\\) Line \\([0-9]+\\):" 1 2 nil) ("" 0)
+     ("^ *ERROR\\[[0-9]+]::File \\([^ \t\n]+\\) Line \\([0-9]+\\):" 1 2 nil) ("" 0)
      nil)
     ;; Synopsys, VHDL Analyzer (sim): vhdlan -nc test.vhd
     ;; **Error: vhdlan,703 test.vhd(22): OTHERS is not legal in this context.
@@ -364,7 +364,7 @@ Overrides local variable `indent-tabs-mode'."
     ;; ERROR:HDLParsers:164 - "test.vhd" Line 3. parse error
     ("Xilinx XST" "xflow" "" "make" "-f \\1"
      nil "mkdir \\1" "./" "work/" "Makefile" "xilinx"
-     ("^ERROR:HDLParsers:[0-9]+ - \"\\([^ \t\n]+\\)\" Line \\([0-9]+\\)\." 1 2 nil) ("" 0)
+     ("^ERROR:HDLParsers:[0-9]+ - \"\\([^ \t\n]+\\)\" Line \\([0-9]+\\)\\." 1 2 nil) ("" 0)
      nil)
     )
   "List of available VHDL compilers and their properties.
@@ -376,8 +376,8 @@ Compiler:
   Make command     : command used for compilation using a Makefile
   Make options     : make options (\"\\1\" inserts Makefile name)
   Generate Makefile: use built-in function or command to generate a Makefile
-                     \(\"\\1\" inserts Makefile name, \"\\2\" inserts library name)
-  Library command  : command to create library directory \(\"\\1\" inserts
+                     (\"\\1\" inserts Makefile name, \"\\2\" inserts library name)
+  Library command  : command to create library directory (\"\\1\" inserts
                      library directory, \"\\2\" inserts library name)
   Compile directory: where compilation is run and the Makefile is placed
   Library directory: directory of default library
@@ -519,9 +519,9 @@ with other user Makefiles."
 Allows you to insert user specific parts into a Makefile.
 
 Example:
-  \(lambda nil
-    \(re-search-backward \"^# Rule for compiling entire design\")
-    \(insert \"# My target\\n\\n.MY_TARGET :\\n\\n\\n\"))"
+  (lambda nil
+    (re-search-backward \"^# Rule for compiling entire design\")
+    (insert \"# My target\\n\\n.MY_TARGET :\\n\\n\\n\"))"
   :type 'hook
   :group 'vhdl-compile)
 
@@ -573,7 +573,7 @@ Is overwritten by project settings if a project is active."
                         \"\\3\" project-specific options)
       - Do not compile: do not compile this file (in Makefile)
   Compile directory: where compilation is run and the Makefile is placed
-                     \(\"\\1\" inserts compiler ID string)
+                     (\"\\1\" inserts compiler ID string)
   Library name     : name of library (default is \"work\")
   Library directory: path to library (\"\\1\" inserts compiler ID string)
   Makefile name    : name of Makefile
@@ -997,7 +997,7 @@ if the header needs to be version controlled.
 The following keywords for template generation are supported:
   <filename>    : replaced by the name of the buffer
   <author>      : replaced by the user name and email address
-                  \(`user-full-name',`mail-host-address', `user-mail-address')
+                  (`user-full-name',`mail-host-address', `user-mail-address')
   <authorfull>  : replaced by the user full name (`user-full-name')
   <login>       : replaced by user login name (`user-login-name')
   <company>     : replaced by contents of option `vhdl-company-name'
@@ -1678,8 +1678,8 @@ syntax (as regular expression) are highlighted in the corresponding color.
 
   Name         : string of words and spaces
   Regexp       : regular expression describing word syntax
-                 (e.g. \"\\\\=\<\\\w+_c\\\\=\>\" matches word with suffix \"_c\")
-                 expression must start with \"\\\\=\<\" and end with \"\\\\=\>\"
+                 (e.g., `\\=\\<\\w+_c\\>' matches word with suffix `_c')
+                 expression must start with `\\=\\<' and end with `\\>'
                  if only whole words should be matched (no substrings)
   Color (light): foreground color for light background
                  (matching color examples: Gold3, Grey50, LimeGreen, Tomato,
@@ -1690,14 +1690,14 @@ syntax (as regular expression) are highlighted in the corresponding color.
   In comments  : If non-nil, words are also highlighted inside comments
 
 Can be used for visual support of naming conventions, such as highlighting
-different kinds of signals (e.g. \"Clk50\", \"Rst_n\") or objects (e.g.
-\"Signal_s\", \"Variable_v\", \"Constant_c\") by distinguishing them using
+different kinds of signals (e.g. `Clk50', `Rst_n') or objects (e.g.
+`Signal_s', `Variable_v', `Constant_c') by distinguishing them using
 common substrings or name suffices.
 For each entry, a new face is generated with the specified colors and name
-\"vhdl-font-lock-\" + name + \"-face\".
+`vhdl-font-lock-' + name + `-face'.
 
 NOTE: Activate a changed regexp in a VHDL buffer by re-fontifying it (menu
-      entry \"Fontify Buffer\").  All other changes require restarting Emacs."
+      entry `Fontify Buffer').  All other changes require restarting Emacs."
   :type '(repeat (list :tag "Face" :indent 2
                       (string :tag "Name         ")
                       (regexp :tag "Regexp       " "\\w+_")
@@ -4323,7 +4323,7 @@ Usage:
   TEMPLATE INSERTION (electrification):
     After typing a VHDL keyword and entering `SPC', you are prompted for
     arguments while a template is generated for that VHDL construct.  Typing
-    `RET' or `C-g' at the first \(mandatory) prompt aborts the current
+    `RET' or `C-g' at the first (mandatory) prompt aborts the current
     template generation.  Optional arguments are indicated by square
     brackets and removed if the queried string is left empty.  Prompts for
     mandatory arguments remain in the code if the queried string is left
@@ -4342,7 +4342,7 @@ Usage:
     conf, comp, cons, func, inst, pack, sig, var.
 
       Template styles can be customized in customization group
-    `vhdl-template' \(see OPTIONS).
+    `vhdl-template' (see OPTIONS).
 
 
   HEADER INSERTION:
@@ -4373,7 +4373,7 @@ Usage:
       Typing `TAB' after `(' looks for and inserts complete parenthesized
     expressions (e.g. for array index ranges).  All keywords as well as
     standard types and subprograms of VHDL have predefined abbreviations
-    \(e.g. type \"std\" and `TAB' will toggle through all standard types
+    (e.g., type \"std\" and `TAB' will toggle through all standard types
     beginning with \"std\").
 
       Typing `TAB' after a non-word character indents the line if at the
@@ -4417,7 +4417,7 @@ Usage:
     the entire region.
 
       Indentation can be done for a group of lines (`C-c C-i C-g'), a region
-    \(`M-C-\\') or the entire buffer (menu).  Argument and port lists are
+    (`M-C-\\') or the entire buffer (menu).  Argument and port lists are
     indented normally (nil) or relative to the opening parenthesis (non-nil)
     according to option `vhdl-argument-list-indent'.
 
@@ -4563,7 +4563,7 @@ Usage:
     Enables simple structural composition.  `C-c C-m C-n' creates a skeleton
     for a new component.  Subcomponents (i.e. component declaration and
     instantiation) can be automatically placed from a previously read port
-    \(`C-c C-m C-p') or directly from the hierarchy browser (`P').  Finally,
+    (`C-c C-m C-p') or directly from the hierarchy browser (`P').  Finally,
     all subcomponents can be automatically connected using internal signals
     and ports (`C-c C-m C-w') following these rules:
       - subcomponent actual ports with same name are considered to be
@@ -4763,7 +4763,7 @@ Usage:
           Insert them once manually (will be kept afterwards).
         - Out parameters of procedures are considered to be read.
       Use option `vhdl-entity-file-name' to specify the entity file name
-      \(used to obtain the port names).
+      (used to obtain the port names).
       Use option `vhdl-array-index-record-field-in-sensitivity-list' to
       specify whether to include array indices and record fields in
       sensitivity lists.
@@ -4771,12 +4771,12 @@ Usage:
 
   CODE FIXING:
     `C-c C-x C-p' fixes the closing parenthesis of a generic/port clause
-    \(e.g. if the closing parenthesis is on the wrong line or is missing).
+    (e.g., if the closing parenthesis is on the wrong line or is missing).
 
 
   PRINTING:
     PostScript printing with different faces (an optimized set of faces is
-    used if `vhdl-print-customize-faces' is non-nil) or colors \(if
+    used if `vhdl-print-customize-faces' is non-nil) or colors (if
     `ps-print-color-p' is non-nil) is possible using the standard Emacs
     PostScript printing commands.  Option `vhdl-print-two-column' defines
     appropriate default settings for nice landscape two-column printing.
@@ -4808,7 +4808,7 @@ Usage:
     automatically recognized as VHDL source files.  To add an extension
     \".xxx\", add the following line to your Emacs start-up file (`.emacs'):
 
-      \(push \\='(\"\\\\.xxx\\\\\\='\" . vhdl-mode) auto-mode-alist)
+      (push \\='(\"\\\\.xxx\\\\\\='\" . vhdl-mode) auto-mode-alist)
 
 
   HINTS:
@@ -4895,7 +4895,7 @@ Key bindings:
            (syntax-propertize-rules
             ;; Mark single quotes as having string quote syntax in
             ;; 'c' instances.
-            ("\\(\'\\).\\(\'\\)" (1 "\"'") (2 "\"'"))))
+            ("\\('\\).\\('\\)" (1 "\"'") (2 "\"'"))))
     (set (make-local-variable 'font-lock-syntactic-keywords)
          vhdl-font-lock-syntactic-keywords))
   (unless vhdl-emacs-21
@@ -6707,7 +6707,7 @@ search, and an argument indicating an interactive call."
   (re-search-forward vhdl-e-o-s-re))
 
 (defconst vhdl-b-o-s-re
-  (concat ";[^_]\\|\([^_]\\|\)[^_]\\|\\bwhen\\b[^_]\\|"
+  (concat ";[^_]\\|([^_]\\|)[^_]\\|\\bwhen\\b[^_]\\|"
          vhdl-begin-bwd-re "\\|" vhdl-statement-bwd-re))
 
 (defun vhdl-beginning-of-statement-1 (&optional lim)
@@ -8061,25 +8061,25 @@ end of line, do nothing in comments and strings."
     (setq end (point-marker))
     ;; have no space before and one space after `,' and ';'
     (goto-char beg)
-    (while (re-search-forward "\\(--.*\n\\|\"[^\"\n]*[\"\n]\\|\'.\'\\|\\\\[^\\\n]*[\\\n]\\)\\|\\(\\s-*\\([,;]\\)\\)" end t)
+    (while (re-search-forward "\\(--.*\n\\|\"[^\"\n]*[\"\n]\\|'.'\\|\\\\[^\\\n]*[\\\n]\\)\\|\\(\\s-*\\([,;]\\)\\)" end t)
       (if (match-string 1)
          (goto-char (match-end 1))
        (replace-match "\\3 " nil nil nil 2)))
     ;; have no space after `('
     (goto-char beg)
-    (while (re-search-forward "\\(--.*\n\\|\"[^\"\n]*[\"\n]\\|\'.\'\\|\\\\[^\\\n]*[\\\n]\\)\\|\\((\\)\\s-+" end t)
+    (while (re-search-forward "\\(--.*\n\\|\"[^\"\n]*[\"\n]\\|'.'\\|\\\\[^\\\n]*[\\\n]\\)\\|\\((\\)\\s-+" end t)
       (if (match-string 1)
          (goto-char (match-end 1))
        (replace-match "\\2")))
     ;; have no space before `)'
     (goto-char beg)
-    (while (re-search-forward "\\(--.*\n\\|\"[^\"\n]*[\"\n]\\|\'.\'\\|\\\\[^\\\n]*[\\\n]\\|^\\s-+\\)\\|\\s-+\\()\\)" end t)
+    (while (re-search-forward "\\(--.*\n\\|\"[^\"\n]*[\"\n]\\|'.'\\|\\\\[^\\\n]*[\\\n]\\|^\\s-+\\)\\|\\s-+\\()\\)" end t)
       (if (match-string 1)
          (goto-char (match-end 1))
        (replace-match "\\2")))
     ;; surround operator symbols by one space
     (goto-char beg)
-    (while (re-search-forward "\\(--.*\n\\|\"[^\"\n]*[\"\n]\\|\'.\'\\|\\\\[^\\\n]*[\\\n]\\)\\|\\(\\([^/:<>=\n]\\)\\(:\\|\\??=\\|\\??<<\\|\\??>>\\|\\??<\\|\\??>\\|:=\\|\\??<=\\|\\??>=\\|=>\\|\\??/=\\|\\?\\?\\)\\([^=>\n]\\|$\\)\\)" end t)
+    (while (re-search-forward "\\(--.*\n\\|\"[^\"\n]*[\"\n]\\|'.'\\|\\\\[^\\\n]*[\\\n]\\)\\|\\(\\([^/:<>=\n]\\)\\(:\\|\\??=\\|\\??<<\\|\\??>>\\|\\??<\\|\\??>\\|:=\\|\\??<=\\|\\??>=\\|=>\\|\\??/=\\|\\?\\?\\)\\([^=>\n]\\|$\\)\\)" end t)
       (if (or (match-string 1)
              (<= (match-beginning 0)  ; not if at boi
                 (save-excursion (back-to-indentation) (point))))
@@ -11858,7 +11858,7 @@ reflected in a subsequent paste operation."
                  (save-excursion
                    (re-search-backward
                     (concat "^\\s-*use\\s-+" (car clause)
-                            "\." (cdr clause) "\\>") nil t)))
+                            "." (cdr clause) "\\>") nil t)))
        (vhdl-template-standard-package (car clause) (cdr clause))
        (insert "\n"))
       (setq clause-list (cdr clause-list)))))
@@ -12113,7 +12113,7 @@ reflected in a subsequent paste operation."
               (insert name))
              ((equal (cdr vhdl-instance-name) "")
               (setq name (vhdl-template-field "instance name")))
-             ((string-match "\%d" (cdr vhdl-instance-name))
+             ((string-match "%d" (cdr vhdl-instance-name))
               (let ((n 1))
                 (while (save-excursion
                          (setq name (format (vhdl-replace-string
@@ -12978,7 +12978,7 @@ File statistics: \"%s\"\n\
 # empty lines   : %5d\n\
 # comment lines : %5d\n\
 # comments      : %5d\n\
-# total lines   : %5d\n"
+# total lines   : %5d\n"
             (buffer-file-name) no-stats no-code-lines no-empty-lines
             no-comm-lines no-comments no-lines)
     (unless vhdl-emacs-21 (vhdl-show-messages))))
@@ -13121,7 +13121,7 @@ File statistics: \"%s\"\n\
                     (vhdl-resolve-env-variable
                      (vhdl-replace-string
                       (cons "\\(.*\\) \\(.*\\)" (car file-name-list))
-                      (concat "\*" " " (user-login-name)))))))
+                      (concat "* " (user-login-name)))))))
       (setq list-length (or list-length (length file-list)))
       (setq file-name-list (cdr file-name-list)))
     (while file-list
@@ -13306,7 +13306,7 @@ File statistics: \"%s\"\n\
 ;; Syntax definitions
 
 (defconst vhdl-font-lock-syntactic-keywords
-  '(("\\(\'\\).\\(\'\\)" (1 (7 . ?\')) (2 (7 . ?\'))))
+  '(("\\('\\).\\('\\)" (1 (7 . ?\')) (2 (7 . ?\'))))
   "Mark single quotes as having string quote syntax in 'c' instances.")
 
 (defvar vhdl-font-lock-keywords nil
@@ -15461,19 +15461,19 @@ NO-POSITION non-nil means do not re-position cursor."
          (let* ((file-entry (vhdl-aget file-alist
                                        speedbar-last-selected-file)))
            (vhdl-speedbar-update-units
-            "\\[.\\] " (nth 0 file-entry)
+            "\\[.] " (nth 0 file-entry)
             speedbar-last-selected-file 'vhdl-speedbar-entity-face)
            (vhdl-speedbar-update-units
             "{.} " (nth 1 file-entry)
             speedbar-last-selected-file 'vhdl-speedbar-architecture-face)
            (vhdl-speedbar-update-units
-            "\\[.\\] " (nth 3 file-entry)
+            "\\[.] " (nth 3 file-entry)
             speedbar-last-selected-file 'vhdl-speedbar-configuration-face)
            (vhdl-speedbar-update-units
             "[]>] " (nth 4 file-entry)
             speedbar-last-selected-file 'vhdl-speedbar-package-face)
            (vhdl-speedbar-update-units
-            "\\[.\\].+(" '("body")
+            "\\[.].+(" '("body")
             speedbar-last-selected-file 'vhdl-speedbar-package-face)
            (vhdl-speedbar-update-units
             "> " (nth 6 file-entry)
@@ -15482,19 +15482,19 @@ NO-POSITION non-nil means do not re-position cursor."
          (let* ((file-entry (vhdl-aget file-alist file-name)))
            (setq
             pos (vhdl-speedbar-update-units
-                 "\\[.\\] " (nth 0 file-entry)
+                 "\\[.] " (nth 0 file-entry)
                  file-name 'vhdl-speedbar-entity-selected-face pos)
             pos (vhdl-speedbar-update-units
                  "{.} " (nth 1 file-entry)
                  file-name 'vhdl-speedbar-architecture-selected-face pos)
             pos (vhdl-speedbar-update-units
-                 "\\[.\\] " (nth 3 file-entry)
+                 "\\[.] " (nth 3 file-entry)
                  file-name 'vhdl-speedbar-configuration-selected-face pos)
             pos (vhdl-speedbar-update-units
                  "[]>] " (nth 4 file-entry)
                  file-name 'vhdl-speedbar-package-selected-face pos)
             pos (vhdl-speedbar-update-units
-                 "\\[.\\].+(" '("body")
+                 "\\[.].+(" '("body")
                  file-name 'vhdl-speedbar-package-selected-face pos)
             pos (vhdl-speedbar-update-units
                  "> " (nth 6 file-entry)
@@ -15926,7 +15926,7 @@ is already shown in a buffer."
     (if (not (or is-entity (vhdl-speedbar-check-unit 'subprogram)))
        (error "ERROR:  No entity/component or subprogram under cursor")
       (beginning-of-line)
-      (if (looking-at "\\([0-9]\\)+:\\s-*\\(\\[[-+?]\\]\\|>\\) \\(\\(\\w\\|\\s_\\)+\\)")
+      (if (looking-at "\\([0-9]\\)+:\\s-*\\(\\[[-+?]]\\|>\\) \\(\\(\\w\\|\\s_\\)+\\)")
          (condition-case info
              (let ((token (get-text-property
                            (match-beginning 3) 'speedbar-token)))
@@ -17864,17 +17864,17 @@ NOTE: click `mouse-2' on variable names above (not in XEmacs).")
 For VHDL coding style and naming convention guidelines, see the following
 references:
 
-\[1] Ben Cohen.
+[1] Ben Cohen.
     \"VHDL Coding Styles and Methodologies\".
     Kluwer Academic Publishers, 1999.
     http://members.aol.com/vhdlcohen/vhdl/
 
-\[2] Michael Keating and Pierre Bricaud.
+[2] Michael Keating and Pierre Bricaud.
     \"Reuse Methodology Manual, Second Edition\".
     Kluwer Academic Publishers, 1999.
     http://www.openmore.com/openmore/rmm2.html
 
-\[3] European Space Agency.
+[3] European Space Agency.
     \"VHDL Modelling Guidelines\".
     ftp://ftp.estec.esa.nl/pub/vhdl/doc/ModelGuide.{pdf,ps}
 
index d5243dac769b06b068969c5f87295c999fd9ff17..cf61073b442bc7823709fbbd008234410dcf3efb 100644 (file)
@@ -347,9 +347,9 @@ the command interpreter stack:
 
 Some possible command interpreter types and their meanings are:
 
-\[Evaluator]   read-eval-print loop for evaluating expressions
-\[Debugger]    single character commands for debugging errors
-\[Where]               single character commands for examining environments
+[Evaluator]    read-eval-print loop for evaluating expressions
+[Debugger]     single character commands for debugging errors
+[Where]                single character commands for examining environments
 
 Starting with release 6.2 of Scheme, the latter two types of command
 interpreters will change the major mode of the Scheme process buffer
index 218a02a7f6d2ebba319957f6a62b155cb24a330f..e9294279c23ae0c9facb3bfcd49f8c35feb73220 100644 (file)
@@ -1684,7 +1684,7 @@ non-default settings would be \"LPT1\" to \"LPT3\" for parallel printers, or
 for a shared network printer.  You can also set it to a name of a file, in
 which case the output gets appended to that file.  \(Note that `ps-print'
 package already has facilities for printing to a file, so you might as well use
-them instead of changing the setting of this variable.\)  If you want to
+them instead of changing the setting of this variable.)  If you want to
 silently discard the printed output, set this to \"NUL\".
 
 Set to t, if the utility given by `ps-lpr-command' needs an empty printer name.
@@ -3172,7 +3172,7 @@ This variable is used only when `ps-print-color-p' is set to `black-white'."
       font-lock-variable-name-face
       font-lock-keyword-face
       font-lock-warning-face))
-  "A list of the \(non-bold\) faces that should be printed in bold font.
+  "A list of the (non-bold) faces that should be printed in bold font.
 This applies to generating PostScript."
   :type '(repeat face)
   :version "20"
@@ -3185,7 +3185,7 @@ This applies to generating PostScript."
       font-lock-string-face
       font-lock-comment-face
       font-lock-warning-face))
-  "A list of the \(non-italic\) faces that should be printed in italic font.
+  "A list of the (non-italic) faces that should be printed in italic font.
 This applies to generating PostScript."
   :type '(repeat face)
   :version "20"
@@ -3196,7 +3196,7 @@ This applies to generating PostScript."
     '(font-lock-function-name-face
       font-lock-constant-face
       font-lock-warning-face))
-  "A list of the \(non-underlined\) faces that should be printed underlined.
+  "A list of the (non-underlined) faces that should be printed underlined.
 This applies to generating PostScript."
   :type '(repeat face)
   :version "20"
index 37e97e2c2150894a55da39d2294dbb143af10bca..d84f3a24f61370faa897a324bed2adf178684ea0 100644 (file)
@@ -1,4 +1,4 @@
-;;; replace.el --- replace commands for Emacs
+;;; replace.el --- replace commands for Emacs            -*- coding: utf-8 -*-
 
 ;; Copyright (C) 1985-1987, 1992, 1994, 1996-1997, 2000-2015 Free
 ;; Software Foundation, Inc.
@@ -76,7 +76,7 @@ to the minibuffer that reads the string to replace, or invoke replacements
 from Isearch by using a key sequence like `C-s C-s M-%'." "24.3")
 
 (defcustom query-replace-from-to-separator
-  (propertize (if (char-displayable-p ?\u2192) " \u2192 " " -> ")
+  (propertize (if (char-displayable-p ?→) " → " " -> ")
               'face 'minibuffer-prompt)
   "String that separates FROM and TO in the history of replacement pairs."
   ;; Avoids error when attempt to autoload char-displayable-p fails
index f80faae80d873ca6e7a4a31dad9306b2411650f3..8acb6839744b4949c4ba7a2c94207cd7f046fbd8 100644 (file)
@@ -8423,6 +8423,38 @@ contains the list of implementations currently supported for this command."
                            "No implementation selected for command `%s'"
                            command-name)))))))
 
+\f
+;;; Functions for changing capitalization that Do What I Mean
+(defun upcase-dwim (arg)
+  "Upcase words in the region, if active; if not, upcase word at point.
+If the region is active, this function calls `upcase-region'.
+Otherwise, it calls `upcase-word', with prefix argument passed to it
+to upcase ARG words."
+  (interactive "*p")
+  (if (use-region-p)
+      (upcase-region (region-beginning) (region-end))
+    (upcase-word arg)))
+
+(defun downcase-dwim (arg)
+    "Downcase words in the region, if active; if not, downcase word at point.
+If the region is active, this function calls `downcase-region'.
+Otherwise, it calls `downcase-word', with prefix argument passed to it
+to downcase ARG words."
+  (interactive "*p")
+  (if (use-region-p)
+      (downcase-region (region-beginning) (region-end))
+    (downcase-word arg)))
+
+(defun capitalize-dwim (arg)
+  "Capitalize words in the region, if active; if not, capitalize word at point.
+If the region is active, this function calls `capitalize-region'.
+Otherwise, it calls `capitalize-word', with prefix argument passed to it
+to capitalize ARG words."
+  (interactive "*p")
+  (if (use-region-p)
+      (capitalize-region (region-beginning) (region-end))
+    (capitalize-word arg)))
+
 \f
 
 (provide 'simple)
index 9b8cec6ac682c5d8dd0d58bec04170f02e8073b5..9843749f0c8c1b6b3162a2e67a3d488b8eab5741 100644 (file)
@@ -316,7 +316,7 @@ FIELD, BEG and END.  BEG and END specify region to sort."
 ;;                            (point)
 ;;                            (save-excursion
 ;;                              (re-search-forward
-;;                               "[+-]?[0-9]*\.?[0-9]*\\([eE][+-]?[0-9]+\\)?")
+;;                               "[+-]?[0-9]*\\.?[0-9]*\\([eE][+-]?[0-9]+\\)?")
 ;;                              (point))))))
 ;;              nil))
 
index 97c977cf1fc8de4a12ca80a7b626f002fcc4ce3e..17430587818aa4a9404c3e4c5ce7f90bbf3f512f 100644 (file)
@@ -2857,7 +2857,7 @@ indicator, then do not add a space."
        (progn
          (goto-char speedbar-ro-to-do-point)
          (while (and (not (input-pending-p))
-                     (re-search-forward "^\\([0-9]+\\):\\s-*[[<][+-\?][]>] "
+                     (re-search-forward "^\\([0-9]+\\):\\s-*[[<][+-?][]>] "
                                         nil t))
            (setq speedbar-ro-to-do-point (point))
            (let ((f (speedbar-line-file)))
index 9caf485c1e831e46ba62c9cbd330c8c619042b9e..3385567317013fa8ea186fa6af1c7e766f62d16b 100644 (file)
@@ -114,7 +114,7 @@ the remaining command-line args are in the variable `command-line-args-left'.")
 
 (defvaralias 'argv 'command-line-args-left
   "List of command-line args not yet processed.
-This is a convenience alias, so that one can write \(pop argv\)
+This is a convenience alias, so that one can write \(pop argv)
 inside of --eval command line arguments in order to access
 following arguments.")
 (internal-make-var-non-special 'argv)
@@ -803,19 +803,61 @@ to prepare for opening the first frame (e.g. open a connection to an X server)."
 (defvar server-name)
 (defvar server-process)
 
-(defun startup--setup-quote-display ()
-  "Display ASCII approximations on user request or if curved quotes don't work."
-  (when (memq text-quoting-style '(nil grave straight))
-    (dolist (char-repl '((?‘ . ?\`) (?’ . ?\') (?“ . ?\") (?” . ?\")))
-      (let ((char (car char-repl))
-            (repl (cdr char-repl)))
-        (when (or text-quoting-style (not (char-displayable-p char)))
-          (when (and (eq repl ?\`) (eq text-quoting-style 'straight))
-            (setq repl ?\'))
-          (unless standard-display-table
-            (setq standard-display-table (make-display-table)))
-          (aset standard-display-table char
-                (vector (make-glyph-code repl 'shadow))))))))
+(defun startup--setup-quote-display (&optional style)
+  "If needed, display ASCII approximations to curved quotes.
+Do this by modifying `standard-display-table'.  Optional STYLE
+specifies the desired quoting style, as in `text-quoting-style'.
+If STYLE is nil, display appropriately for the terminal."
+  (let ((repls (let ((style-repls (assq style '((grave . "`'\"\"")
+                                                (straight . "''\"\"")))))
+                 (if style-repls (cdr style-repls) (make-vector 4 nil))))
+        glyph-count)
+    ;; REPLS is a sequence of the four replacements for "‘’“”", respectively.
+    ;; If STYLE is nil, infer REPLS from terminal characteristics.
+    (unless style
+      ;; On a terminal that supports glyph codes,
+      ;; GLYPH-COUNT[i] is the number of times that glyph code I
+      ;; represents either an ASCII character or one of the 4
+      ;; quote characters.  This assumes glyph codes are valid
+      ;; Elisp characters, which is a safe assumption in practice.
+      (when (integerp (internal-char-font nil (max-char)))
+        (setq glyph-count (make-char-table nil 0))
+        (dotimes (i 132)
+          (let ((glyph (internal-char-font
+                        nil (if (< i 128) i (aref "‘’“”" (- i 128))))))
+            (when (<= 0 glyph)
+              (aset glyph-count glyph (1+ (aref glyph-count glyph)))))))
+      (dotimes (i 2)
+        (let ((lq (aref "‘“" i)) (rq (aref "’”" i))
+              (lr (aref "`\"" i)) (rr (aref "'\"" i))
+              (i2 (* i 2)))
+          (unless (if glyph-count
+                      ;; On a terminal that supports glyph codes, use
+                      ;; ASCII replacements unless both quotes are displayable.
+                      ;; If not using ASCII replacements, highlight
+                      ;; quotes unless they are both unique among the
+                      ;; 128 + 4 characters of concern.
+                      (let ((lglyph (internal-char-font nil lq))
+                            (rglyph (internal-char-font nil rq)))
+                        (when (and (<= 0 lglyph) (<= 0 rglyph))
+                          (setq lr lq rr rq)
+                          (and (= 1 (aref glyph-count lglyph))
+                               (= 1 (aref glyph-count rglyph)))))
+                    ;; On a terminal that does not support glyph codes, use
+                    ;; ASCII replacements unless both quotes are displayable.
+                    (and (char-displayable-p lq)
+                         (char-displayable-p rq)))
+            (aset repls i2 lr)
+            (aset repls (1+ i2) rr)))))
+    (dotimes (i 4)
+      (let ((char (aref "‘’“”" i))
+            (repl (aref repls i)))
+        (if repl
+            (aset (or standard-display-table
+                      (setq standard-display-table (make-display-table)))
+                  char (vector (make-glyph-code repl 'escape-glyph)))
+          (when standard-display-table
+            (aset standard-display-table char nil)))))))
 
 (defun command-line ()
   "A subroutine of `normal-top-level'.
@@ -1239,11 +1281,6 @@ the `--debug-init' option to view a complete error backtrace."
        ;; unibyte (display table, terminal coding system &c).
        (set-language-environment current-language-environment)))
 
-    ;; Setup quote display again, if the init file sets
-    ;; text-quoting-style to a non-nil value.
-    (when (and (not noninteractive) text-quoting-style)
-      (startup--setup-quote-display))
-
     ;; Do this here in case the init file sets mail-host-address.
     (if (equal user-mail-address "")
        (setq user-mail-address (or (getenv "EMAIL")
@@ -1933,7 +1970,7 @@ To quit a partially entered command, type Control-g.\n")
                 'action (lambda (_button) (info-emacs-manual))
                 'follow-link t)
   (insert "\tView the Emacs manual using Info\n")
-  (insert-button "\(Non)Warranty"
+  (insert-button "(Non)Warranty"
                 'action (lambda (_button) (describe-no-warranty))
                 'follow-link t)
   (insert "\t\tGNU Emacs comes with ABSOLUTELY NO WARRANTY\n")
index ce3011d4e46a6b1ed0f5f32fa0bda07ccbdefabb..b1b363864f9aae034cd392ba54804325e3cdc628 100644 (file)
@@ -1503,19 +1503,6 @@ All symbols are bound before the VALUEFORMs are evalled."
      ,@(mapcar (lambda (binder) `(setq ,@binder)) binders)
      ,@body))
 
-(defmacro let-when-compile (bindings &rest body)
-  "Like `let', but allow for compile time optimization.
-Use BINDINGS as in regular `let', but in BODY each usage should
-be wrapped in `eval-when-compile'.
-This will generate compile-time constants from BINDINGS."
-  (declare (indent 1) (debug let))
-  (cl-progv (mapcar #'car bindings)
-      (mapcar (lambda (x) (eval (cadr x))) bindings)
-    (macroexpand-all
-     (macroexp-progn
-      body)
-     macroexpand-all-environment)))
-
 (defmacro with-wrapper-hook (hook args &rest body)
   "Run BODY, using wrapper functions from HOOK with additional ARGS.
 HOOK is an abnormal hook.  Each hook function in HOOK \"wraps\"
index 06a44f29058454af523b8ca3eb3b8e87f25eb474..e5ae5530ce9b6630285066f22856998df1eb340a 100644 (file)
@@ -1919,7 +1919,7 @@ A useful command to bind to SPC.  See `term-replace-by-expanded-history'."
 (defun term-within-quotes (beg end)
   "Return t if the number of quotes between BEG and END is odd.
 Quotes are single and double."
-  (let ((countsq (term-how-many-region "\\(^\\|[^\\\\]\\)\'" beg end))
+  (let ((countsq (term-how-many-region "\\(^\\|[^\\\\]\\)'" beg end))
        (countdq (term-how-many-region "\\(^\\|[^\\\\]\\)\"" beg end)))
     (or (= (mod countsq 2) 1) (= (mod countdq 2) 1))))
 
index 35715d97bb435462aa4ece610949d5ab8d9ad36c..d01f133e5fb8ff5181cd2d544aad10afc3fbf6af 100644 (file)
@@ -7,22 +7,22 @@ terminal types.
 
    When Emacs opens a new terminal, it checks the TERM environment variable
 to see what type of terminal the user is running on.  (If there is an entry
-for TERM in the `term-file-aliases' variable, Emacs uses the associated value
+for TERM in the 'term-file-aliases' variable, Emacs uses the associated value
 in place of TERM in the following.)  Emacs searches for an elisp file named
 "term/${TERM}.el", and if one exists, loads it.  If Emacs finds no
 suitable file, then it strips the last hyphen and what follows it from TERM,
 and tries again.  If that still doesn't yield a file, then the previous hyphen
 is stripped, and so on until all hyphens are gone.  For example, if the
-terminal type is `aaa-48-foo', Emacs will try first `term/aaa-48-foo.el', then
-`term/aaa-48.el' and finally `term/aaa.el'.  Emacs stops searching at the
+terminal type is 'aaa-48-foo', Emacs will try first 'term/aaa-48-foo.el', then
+'term/aaa-48.el' and finally 'term/aaa.el'.  Emacs stops searching at the
 first file found, and will not load more than one file for any terminal.  Note
 that it is not an error if Emacs is unable to find a terminal initialization
 file; in that case, it will simply proceed with the next step without loading
 any files.
 
    Once the file has been loaded (or the search failed), Emacs tries to call a
-function named `terminal-init-TERMINALNAME' (eg `terminal-init-aaa-48' for the
-`aaa-48' terminal) in order to initialize the terminal.  Once again, if the
+function named 'terminal-init-TERMINALNAME' (eg 'terminal-init-aaa-48' for the
+'aaa-48' terminal) in order to initialize the terminal.  Once again, if the
 function is not found, Emacs strips the last component of the name and tries
 again using the shorter name.  This search is independent of the previous file
 search, so that you can have terminal initialization functions for a family of
@@ -40,7 +40,7 @@ declaration.  Simply loading the file should not have any side effect.
 given terminal, when the first frame is created on it.  The function is not
 called for subsequent frames on the same terminal.  Therefore, terminal-init-*
 functions should only modify terminal-local variables (such as
-`local-function-key-map') and terminal parameters.  For example, it is not
+'local-function-key-map') and terminal parameters.  For example, it is not
 correct to modify frame parameters, since the modifications will only be
 applied for the first frame opened on the terminal.
 
@@ -51,7 +51,7 @@ mind.
    First, about keycap names.  Your terminal package can create any keycap
 cookies it likes, but there are good reasons to stick to the set recognized by
 the X-windows code whenever possible.  The key symbols recognized by Emacs
-are listed in src/term.c; look for the string `keys' in that file.
+are listed in src/term.c; look for the string 'keys' in that file.
 
    For one thing, it means that you'll have the same Emacs key bindings on in
 terminal mode as on an X console.  If there are differences, you can bet
@@ -61,7 +61,7 @@ they'll frustrate you after you've forgotten about them.
 about.  It tries to bind many of them to useful things at startup, before your
 .emacs is read (so you can override them).  In some ways, the X keysym standard
 is a admittedly poor one; it's incomplete, and not well matched to the set of
-`virtual keys' that UNIX terminfo(3) provides.  But, trust us, the alternatives
+'virtual keys' that UNIX terminfo(3) provides.  But, trust us, the alternatives
 were worse.
 
    This doesn't mean that if your terminal has a "Cokebottle" key you shouldn't
@@ -70,7 +70,7 @@ that set, try to pattern them on the standard terminfo variable names for
 clarity; also, for a fighting chance that your binding may be useful to someone
 else someday.
 
-   For example, if your terminal has a `find' key, observe that terminfo
+   For example, if your terminal has a 'find' key, observe that terminfo
 supports a key_find capability and call your cookie [find].
 
 Here is a complete list, with corresponding X keysyms.
@@ -184,14 +184,14 @@ key_f36           FQ                      function key 36
 key_f64                k1                      function key 64
 
 (1) The terminfo documentation says this may be the 'insert character' or
-    `enter insert mode' key.  Accordingly, key_ic is mapped to the `insertchar'
-    keysym if there is also a key_dc key; otherwise it's mapped to `insert'.
-    The presumption is that keyboards with `insert character' keys usually
-    have `delete character' keys paired with them.
+    'enter insert mode' key.  Accordingly, key_ic is mapped to the 'insertchar'
+    keysym if there is also a key_dc key; otherwise it's mapped to 'insert'.
+    The presumption is that keyboards with 'insert character' keys usually
+    have 'delete character' keys paired with them.
 
 (2) If there is no key_next key but there is a key_npage key, key_npage
-    will be bound to the `next' keysym.  If there is no key_previous key but
-    there is a key_ppage key, key_ppage will be bound to the `previous' keysym.
+    will be bound to the 'next' keysym.  If there is no key_previous key but
+    there is a key_ppage key, key_ppage will be bound to the 'previous' keysym.
 
 (3) Sorry, these are not exact but they're the best we can do.
 
@@ -242,7 +242,7 @@ the setup code to bind anything else.
 
    If your terminal's arrow key sequences are so funky that they conflict with
 normal Emacs key bindings, the package should set up a function called
-(enable-foo-arrow-keys), where `foo' becomes the terminal name, and leave
+(enable-foo-arrow-keys), where 'foo' becomes the terminal name, and leave
 it up to the user's .emacs file whether to call it.
 
    Before writing a terminal-support package, it's a good idea to read the
index a21c105fb982fe97154e1557b1c7a67bba806562..373f81238a273384b8441877de2b949a5fa47cef 100644 (file)
@@ -243,7 +243,7 @@ The properties returned may include `top', `left', `height', and `width'."
         (insert ns-input-spi-arg))
        ((string-equal ns-input-spi-name "mail-to")
         (compose-mail ns-input-spi-arg))
-       (t (error (concat "Service " ns-input-spi-name " not recognized")))))
+       (t (error "Service %s not recognized" ns-input-spi-name))))
 
 
 ;; Composed key sequence handling for Nextstep system input methods.
index 98108ce63568821e3b80b6961475521c2d078357..3bc1aa0ee48d0daacfb921504f59139e57b3e5a4 100644 (file)
@@ -810,9 +810,11 @@ Value is the modified color alist for FRAME."
     (while colors
       (tty-color-define (car color) (cadr color) (cddr color))
       (setq colors (cdr colors) color (car colors)))
-    ;; Modifying color mappings means realized faces don't
-    ;; use the right colors, so clear them.
-    (clear-face-cache)))
+    ;; Modifying color mappings means realized faces don't use the
+    ;; right colors, so clear them, if we modified colors on a TTY
+    ;; frame.
+    (or (display-graphic-p)
+        (clear-face-cache))))
 
 (defun tty-color-canonicalize (color)
   "Return COLOR in canonical form.
index 279f657c0ecbb6918cd302598d0aa8781ad6868d..df8066ee2fc3b2222ed333d98ebdefc587af63c4 100644 (file)
@@ -433,7 +433,7 @@ is present; but these fields are required otherwise.
 OPTIONAL is a list of optional fields.
 
 Each element of these lists is a list of the form
-  \(FIELD COMMENT INIT ALTERNATIVE).
+  (FIELD COMMENT INIT ALTERNATIVE).
 COMMENT, INIT, and ALTERNATIVE are optional.
 
 FIELD is the name of the field.
@@ -2620,7 +2620,7 @@ is returned unchanged."
   "Get content of BibTeX field FIELD.  Return empty string if not found.
 Optional arg CHANGE-LIST is a list of substitution patterns that is
 applied to the content of FIELD.  It is an alist with pairs
-\(OLD-REGEXP . NEW-STRING\)."
+\(OLD-REGEXP . NEW-STRING)."
   (let* ((bibtex-expand-strings bibtex-autokey-expand-strings)
          (content (bibtex-text-in-field field bibtex-autokey-use-crossref))
         case-fold-search)
@@ -3647,7 +3647,7 @@ If optional arg CONTENT is non-nil extract content of text fields."
 (defun bibtex-autofill-entry ()
   "Try to fill fields of current BibTeX entry based on neighboring entries.
 The current entry must have a key.  Determine the neighboring entry
-\(previous or next\) whose key is more similar to the key of the current
+\(previous or next) whose key is more similar to the key of the current
 entry.  For all empty fields of the current entry insert the corresponding
 field contents of the neighboring entry.  Finally try to update the text
 based on the difference between the keys of the neighboring and the current
@@ -5111,7 +5111,7 @@ entries from minibuffer."
   "Browse a URL for the BibTeX entry at point.
 Optional POS is the location of the BibTeX entry.
 The URL is generated using the schemes defined in `bibtex-generate-url-list'
-\(see there\).  If multiple schemes match for this entry, or the same scheme
+\(see there).  If multiple schemes match for this entry, or the same scheme
 matches more than once, use the one for which the first step's match is the
 closest to POS.  The URL is passed to `browse-url' unless NO-BROWSE is t.
 Return the URL or nil if none can be generated."
index 267d23f38de2c38181a26c00c1ee17becbc91b9b..770571a264e4242b145f624ab3138cb8ba351d09 100644 (file)
@@ -434,7 +434,7 @@ For details see `conf-mode'.  Example:
 
 # Conf mode font-locks this right on Unix and with \\[conf-unix-mode]
 
-\[Desktop Entry]
+[Desktop Entry]
         Encoding=UTF-8
         Name=The GIMP
         Name[ca]=El GIMP
@@ -449,11 +449,11 @@ For details see `conf-mode'.  Example:
 
 ; Conf mode font-locks this right on Windows and with \\[conf-windows-mode]
 
-\[ExtShellFolderViews]
+[ExtShellFolderViews]
 Default={5984FFE0-28D4-11CF-AE66-08002B2E1262}
 {5984FFE0-28D4-11CF-AE66-08002B2E1262}={5984FFE0-28D4-11CF-AE66-08002B2E1262}
 
-\[{5984FFE0-28D4-11CF-AE66-08002B2E1262}]
+[{5984FFE0-28D4-11CF-AE66-08002B2E1262}]
 PersistMoniker=file://Folder.htt"
   (conf-mode-initialize ";"))
 
index 639456dc77ed42be480da13a04977d7dbb64b4f8..5f4eebdf9770bcf178a1ccc92dd7a76043adaf02 100644 (file)
@@ -78,8 +78,8 @@
     "list-style" "list-style-image" "list-style-position"
     "list-style-type" "margin" "margin-bottom" "margin-left"
     "margin-right" "margin-top" "max-height" "max-width" "min-height"
-    "min-width" "orphans" "overflow" "padding" "padding-bottom"
-    "padding-left" "padding-right" "padding-top" "page-break-after"
+    "min-width" "orphans" "padding" "padding-bottom" "padding-left"
+    "padding-right" "padding-top" "page-break-after"
     "page-break-before" "page-break-inside" "pause" "pause-after"
     "pause-before" "pitch" "pitch-range" "play-during" "position"
     "quotes" "richness" "right" "speak" "speak-header" "speak-numeral"
     "font-variant-east-asian" "font-variant-ligatures"
     "font-variant-numeric" "font-variant-position" "font-weight"
 
+    ;; CSS Overflow Module Level 3
+    ;; (http://www.w3.org/TR/css-overflow-3/#property-index)
+    "max-lines" "overflow" "overflow-x" "overflow-y"
+
     ;; CSS Text Decoration Module Level 3
     ;; (http://dev.w3.org/csswg/css-text-decor-3/#property-index)
     "text-decoration" "text-decoration-color" "text-decoration-line"
        "\\(?:\\(:" (regexp-opt (append css-pseudo-class-ids
                                        css-pseudo-element-ids) t)
        "\\|\\::" (regexp-opt css-pseudo-element-ids t) "\\)"
-       "\\(?:([^\)]+)\\)?"
+       "\\(?:([^)]+)\\)?"
        (if (not sassy)
            "[^:{}\n]*"
          (concat "[^:{}\n#]*\\(?:" scss--hash-re "[^:{}\n#]*\\)*"))
index 87c2a95da49991bb7fc7d9c063332f21b90bb9b1..fe27f0f158c138f5da0def7dd16a05c9bb4868c4 100644 (file)
@@ -699,8 +699,8 @@ re-start Emacs."
 
 Each element of this list is also a list:
 
-\(DICTIONARY-NAME CASECHARS NOT-CASECHARS OTHERCHARS MANY-OTHERCHARS-P
-        ISPELL-ARGS EXTENDED-CHARACTER-MODE CHARACTER-SET\)
+ (DICTIONARY-NAME CASECHARS NOT-CASECHARS OTHERCHARS MANY-OTHERCHARS-P
+        ISPELL-ARGS EXTENDED-CHARACTER-MODE CHARACTER-SET)
 
 DICTIONARY-NAME is a possible string value of variable `ispell-dictionary',
 nil means the default dictionary.
@@ -747,7 +747,7 @@ when the language uses non-ASCII characters.
 Note that with \"ispell\" as the speller, the CASECHARS and
 OTHERCHARS slots of the alist should contain the same character
 set as casechars and otherchars in the LANGUAGE.aff file \(e.g.,
-english.aff\).  Aspell and Hunspell don't have this limitation.")
+english.aff).  Aspell and Hunspell don't have this limitation.")
 
 (defvar ispell-really-aspell nil
   "Non-nil if we can use Aspell extensions.")
@@ -2024,7 +2024,7 @@ in a window allowing you to choose one.
 
 If optional argument FOLLOWING is non-nil or if `ispell-following-word'
 is non-nil when called interactively, then the following word
-\(rather than preceding\) is checked when the cursor is not over a word.
+\(rather than preceding) is checked when the cursor is not over a word.
 When the optional argument QUIETLY is non-nil or `ispell-quietly' is non-nil
 when called interactively, non-corrective messages are suppressed.
 
@@ -2044,7 +2044,7 @@ Return values:
 nil           word is correct or spelling is accepted.
 0             word is inserted into buffer-local definitions.
 \"word\"        word corrected from word list.
-\(\"word\" arg\)  word is hand entered.
+\(\"word\" arg)  word is hand entered.
 quit          spell session exited."
   (interactive (list ispell-following-word ispell-quietly current-prefix-arg t))
   (cond
@@ -2162,7 +2162,7 @@ quit          spell session exited."
   "Return the word for spell-checking according to ispell syntax.
 If optional argument FOLLOWING is non-nil or if `ispell-following-word'
 is non-nil when called interactively, then the following word
-\(rather than preceding\) is checked when the cursor is not over a word.
+\(rather than preceding) is checked when the cursor is not over a word.
 Optional second argument contains otherchars that can be included in word
 many times (see the doc string of `ispell-dictionary-alist' for details
 about otherchars).
index b9b72ea644ff71657e5499ac7cf4143bdd5a5daa..0ca4cbefe9306284cdd092f1c289c8ff28edfa5a 100644 (file)
@@ -228,7 +228,7 @@ nonsensical results."
   "Make Info file from current buffer.
 
 Use the \\[next-error] command to move to the next error
-\(if there are errors\)."
+\(if there are errors)."
 
   (interactive)
   (cond ((null buffer-file-name)
index 57134e06c19c5640e455d702c438d13e9896fe27..99962c75897a080d3961076df345978c536de046 100644 (file)
@@ -446,7 +446,7 @@ REVERSE (non-nil means reverse order), BEG and END (region to sort)."
 
 (defun sort-pages-buffer (&optional reverse)
   "Sort pages alphabetically in buffer.  Prefix arg means reverse order.
-\(Non-nil arg if not interactive.\)"
+\(Non-nil arg if not interactive.)"
 
   (interactive "P")
   (or reverse (setq reverse nil))
@@ -461,7 +461,7 @@ REVERSE (non-nil means reverse order), BEG and END (region to sort)."
 (defvar pages-directory-previous-regexp nil
   "Value of previous regexp used by `pages-directory'.
 \(This regular expression may be used to select only those pages that
-contain matches to the regexp.\)")
+contain matches to the regexp.)")
 
 (defvar pages-buffer nil
   "The buffer for which the pages-directory function creates the directory.")
index 8d824ebad35396eb22f9208d139c888fc13a85ba..22dc7dc9165df0d322fb8caa0beaebf65b9f81b8 100644 (file)
@@ -229,7 +229,7 @@ found on the last `refer-find-entry' or `refer-find-next-entry'."
                     (sit-for 1)
                     (setq files (cdr files))))))
        (ding)
-       (message "Keywords \"%s\" not found in any \.bib file" keywords))
+       (message "Keywords \"%s\" not found in any .bib file" keywords))
      (select-window old-window)))
 
 (defun refer-find-entry-in-file (keywords-list file &optional old-pos)
@@ -351,21 +351,21 @@ found on the last `refer-find-entry' or `refer-find-next-entry'."
                         (if (progn
                               (goto-char (point-min))
                               (re-search-forward (concat refer-bib-files-regexp
-                                                         "\\s-*\{") nil t))
+                                                         "\\s-*{") nil t))
                             (let ((files (list (buffer-substring
                                                 (point)
                                                 (progn
-                                                  (re-search-forward "[,\}]"
+                                                  (re-search-forward "[,}]"
                                                                      nil t)
                                                   (backward-char 1)
                                                   (point))))))
-                              (while (not (looking-at "\}"))
+                              (while (not (looking-at "}"))
                                 (setq files (append files
                                                     (list (buffer-substring
                                                            (progn (forward-char 1)
                                                                   (point))
                                                            (progn (re-search-forward
-                                                                   "[,\}]" nil t)
+                                                                   "[,}]" nil t)
                                                                   (backward-char 1)
                                                                   (point)))))))
                               files)
index 17e8cfdc83c957af404633226dee84f788023efc..8f3f2ccd0615139a2a182982a56b33edffa41011 100644 (file)
@@ -210,7 +210,9 @@ Return list with entries."
     (setq first-re (car re-list)    ; We'll use the first re to find things,
           rest-re  (cdr re-list))   ; the others to narrow down.
     (if (string-match "\\`[ \t]*\\'" (or first-re ""))
-        (error "Empty regular expression"))
+        (user-error "Empty regular expression"))
+    (if (string-match first-re "")
+        (user-error "Regular expression matches the empty string."))
 
     (save-excursion
       (save-window-excursion
@@ -385,7 +387,7 @@ The environment should be located in FILES."
                                               (buffer-substring-no-properties
                                                start end)
                                               "[ \t\n\r]*\\\\bibitem[ \t]*\
-\\(\\[[^]]*]\\)*\[ \t]*"))))))
+\\(\\[[^]]*]\\)*[ \t]*"))))))
              (goto-char end))))))
     (unless entries
       (error "No bibitems found"))
@@ -477,7 +479,7 @@ If RAW is non-nil, keep double quotes/curly braces delimiting fields."
         (goto-char (point-min))
 
         (if (re-search-forward "@\\(\\(?:\\w\\|\\s_\\)+\\)[ \t\n\r]*\
-\[{(][ \t\n\r]*\\([^ \t\n\r,]+\\)" nil t)
+[{(][ \t\n\r]*\\([^ \t\n\r,]+\\)" nil t)
             (setq alist
                   (list
                    (cons "&type" (downcase (reftex-match-string 1)))
@@ -1195,7 +1197,7 @@ created files in the variables `reftex-create-bibtex-header' or
              (widen)
              (goto-char (point-min))
              (while (re-search-forward "^[ \t]*@\\(?:\\w\\|\\s_\\)+[ \t\n\r]*\
-\[{(][ \t\n\r]*\\([^ \t\n\r,]+\\)" nil t)
+[{(][ \t\n\r]*\\([^ \t\n\r,]+\\)" nil t)
                (setq key (match-string 1)
                      beg (match-beginning 0)
                      end (progn
index 7f186afc27cfc53978e79ff5e4f20d91d1118295..f57113177c5909b3e29e68aa101c4c5ec7480931 100644 (file)
@@ -244,7 +244,7 @@ of master file."
                 (when (or (null reftex-label-ignored-macros-and-environments)
                           ;; \label{} defs should always be honored,
                           ;; just no keyval style [label=foo] defs.
-                          (string-equal "\label{" (substring (reftex-match-string 0) 0 7))
+                          (string-equal "\\label{" (substring (reftex-match-string 0) 0 7))
                            (if (and (fboundp 'TeX-current-macro)
                                     (fboundp 'LaTeX-current-environment))
                                (not (or (member (save-match-data (TeX-current-macro))
index 482dd4c63968b57d4d6d3ce20549e7f0bbfe3544..357a0938e6aafaa0955e13ce60b955d6ef88d2a1 100644 (file)
@@ -1991,7 +1991,8 @@ symbol indicating in what context the hook is called."
 
 (defcustom reftex-extra-bindings nil
   "Non-nil means, make additional key bindings on startup.
-These extra bindings are located in the users `C-c letter' map."
+These extra bindings are located in the users `C-c letter' map.
+Note that this variable needs to be set before reftex is loaded."
   :group 'reftex-miscellaneous-configurations
   :type 'boolean)
 
index 7dc91844583f685e8094c680f0c2cb202b2f23c0..fb96c6c551b3e6bd67d6665049340eaadd785359 100644 (file)
@@ -2354,7 +2354,7 @@ what in fact did happen.
 Check if the bug is reproducible with an up-to-date version of
 RefTeX available from http://www.gnu.org/software/auctex/.
 
-If the bug is triggered by a specific \(La\)TeX file, you should try
+If the bug is triggered by a specific \(La)TeX file, you should try
 to produce a minimal sample file showing the problem and include it
 in your report.
 
@@ -2446,7 +2446,7 @@ of ENTRY-LIST is a list of cons cells (\"MACRONAME\" . LEVEL).  See
 
 ;;;***
 \f
-;;;### (autoloads nil "reftex-cite" "reftex-cite.el" "83811ccf3471820f0ad0dc005ffc88d5")
+;;;### (autoloads nil "reftex-cite" "reftex-cite.el" "751df6ee674ea533b755e8cda4ad1cf8")
 ;;; Generated autoloads from reftex-cite.el
 
 (autoload 'reftex-default-bibliography "reftex-cite" "\
@@ -2774,7 +2774,7 @@ Here are all local bindings.
 
 ;;;***
 \f
-;;;### (autoloads nil "reftex-parse" "reftex-parse.el" "c327a848a6d168412b1a9be9f2e3dce8")
+;;;### (autoloads nil "reftex-parse" "reftex-parse.el" "7bfdcb2f040dbe9a08d2c38c005c8f21")
 ;;; Generated autoloads from reftex-parse.el
 
 (autoload 'reftex-parse-one "reftex-parse" "\
index 9625ec2c7cc6ad753b32a99c1f818f8500c28d64..4c234c9a31f837bcccce1d2696dcfb57e9266ac2 100644 (file)
@@ -296,7 +296,7 @@ in parentheses follows the development revision and the time stamp.")
 ;; syntax.
 (defconst rst-bullets
   ;; Sorted so they can form a character class when concatenated.
-  '(?- ?* ?+ ?\u2022 ?\u2023 ?\u2043)
+  '(?- ?* ?+ ?• ?‣ ?⁃)
   "List of all possible bullet characters for bulleted lists.")
 
 (defconst rst-uri-schemes
@@ -392,8 +392,8 @@ in parentheses follows the development revision and the time stamp.")
                                        ; item tag.
 
     ;; Inline markup (`ilm')
-    (ilm-pfx (:alt "^" hws-prt "[-'\"([{<\u2018\u201c\u00ab\u2019/:]"))
-    (ilm-sfx (:alt "$" hws-prt "[]-'\")}>\u2019\u201d\u00bb/:.,;!?\\]"))
+    (ilm-pfx (:alt "^" hws-prt "[-'\"([{<‘“«’/:]"))
+    (ilm-sfx (:alt "$" hws-prt "[]-'\")}>’”»/:.,;!?\\]"))
 
     ;; Inline markup content (`ilc')
     (ilcsgl-tag "\\S ") ; A single non-white character.
@@ -442,7 +442,7 @@ in parentheses follows the development revision and the time stamp.")
     (opt-tag (:shy optsta-tag optnam-tag optarg-tag "?")) ; A complete option.
 
     ;; Footnotes and citations (`fnc')
-    (fncnam-prt "[^\]\n]") ; Part of a footnote or citation name.
+    (fncnam-prt "[^]\n]") ; Part of a footnote or citation name.
     (fncnam-tag fncnam-prt "+") ; A footnote or citation name.
     (fnc-tag "\\[" fncnam-tag "]") ; A complete footnote or citation tag.
     (fncdef-tag-2 (:grp exm-sta)
@@ -512,7 +512,7 @@ in parentheses follows the development revision and the time stamp.")
                                   ; colon tag.
 
     ;; Comments (`cmt')
-    (cmt-sta-1 (:grp exm-sta) "[^\[|_\n]"
+    (cmt-sta-1 (:grp exm-sta) "[^[|_\n]"
               (:alt "[^:\n]" (:seq ":" (:alt "[^:\n]" "$")))
               "*$") ; Start of a comment block; first group is explicit markup
                     ; start.
@@ -778,12 +778,12 @@ This inherits from Text mode.")
     (modify-syntax-entry ?\\ "\\" st)
     (modify-syntax-entry ?_ "." st)
     (modify-syntax-entry ?| "." st)
-    (modify-syntax-entry ?\u00ab "." st)
-    (modify-syntax-entry ?\u00bb "." st)
-    (modify-syntax-entry ?\u2018 "." st)
-    (modify-syntax-entry ?\u2019 "." st)
-    (modify-syntax-entry ?\u201c "." st)
-    (modify-syntax-entry ?\u201d "." st)
+    (modify-syntax-entry ?« "." st)
+    (modify-syntax-entry ?» "." st)
+    (modify-syntax-entry ? "." st)
+    (modify-syntax-entry ? "." st)
+    (modify-syntax-entry ? "." st)
+    (modify-syntax-entry ? "." st)
     st)
   "Syntax table used while in `rst-mode'.")
 
@@ -4235,4 +4235,8 @@ column is used (fill-column vs. end of previous/next line)."
 
 (provide 'rst)
 
+;; Local Variables:
+;; coding: utf-8
+;; End:
+
 ;;; rst.el ends here
index cb65e5f1073f71ec713a4d2180a9eb99f6903690..55a1e6d26db69f57198be38b5e11845aec614c65 100644 (file)
@@ -525,7 +525,7 @@ Do \\[describe-key] on the following bindings to discover what they do.
   ;; This is desirable because SGML discards a newline that appears
   ;; immediately after a start tag or immediately before an end tag.
   (setq-local paragraph-start (concat "[ \t]*$\\|\
-\[ \t]*</?\\(" sgml-name-re sgml-attrs-re "\\)?>"))
+[ \t]*</?\\(" sgml-name-re sgml-attrs-re "\\)?>"))
   (setq-local paragraph-separate (concat paragraph-start "$"))
   (setq-local adaptive-fill-regexp "[ \t]*")
   (add-hook 'fill-nobreak-predicate 'sgml-fill-nobreak nil t)
index 5fdf9e3b2502bca150f7fc130835f989a21cfa15..bf15b2628f95281eab545a7e281562e92faafadb 100644 (file)
@@ -135,8 +135,8 @@ If nil, TeX runs with no options.  See the documentation of `tex-command'."
   "TeX commands to use when starting TeX.
 They are shell-quoted and precede the input file name, with a separating space.
 If nil, no commands are used.  See the documentation of `tex-command'."
-  :type '(radio (const :tag "Interactive \(nil\)" nil)
-               (const :tag "Nonstop \(\"\\nonstopmode\\input\"\)"
+  :type '(radio (const :tag "Interactive (nil)" nil)
+               (const :tag "Nonstop (\"\\nonstopmode\\input\")"
                       "\\nonstopmode\\input")
                (string :tag "String at your choice"))
   :group 'tex-run
@@ -266,8 +266,8 @@ tex shell terminates.")
 
 (defvar tex-command "tex"
   "Command to run TeX.
-If this string contains an asterisk \(`*'\), that is replaced by the file name;
-otherwise the value of `tex-start-options', the \(shell-quoted\)
+If this string contains an asterisk \(`*'), that is replaced by the file name;
+otherwise the value of `tex-start-options', the \(shell-quoted)
 value of `tex-start-commands', and the file name are added at the end
 with blanks as separators.
 
@@ -387,7 +387,7 @@ An alternative value is \" . \", if you use a font with a narrow period."
       (goto-char (point-min))
       (while (search-forward-regexp
              "\\\\\\(include\\|input\\|verbatiminput\\|bibliography\\)\
-\[ \t]*{\\([^}\n]+\\)}"
+[ \t]*{\\([^}\n]+\\)}"
              nil t)
        (push (cons (concat "<<" (buffer-substring-no-properties
                                  (match-beginning 2)
@@ -1550,7 +1550,7 @@ Puts point on a blank line between them."
   "\\end{" str "}" > \n)
 
 (define-skeleton latex-insert-item
-  "Insert a \item macro."
+  "Insert an \\item macro."
   nil
   \n "\\item " >)
 
@@ -2955,7 +2955,7 @@ There might be text before point."
     ("\\beta" . ?β)
     ("\\gamma" . ?γ)
     ("\\delta" . ?δ)
-    ("\\epsilon" . ?ε)
+    ("\\epsilon" . ?ϵ)
     ("\\zeta" . ?ζ)
     ("\\eta" . ?η)
     ("\\theta" . ?θ)
@@ -3272,7 +3272,8 @@ There might be text before point."
     ("\\prod" . ?∏)
     ("\\propto" . ?∝)
     ("\\qed" . ?∎)
-    ("\\quad" . ? )
+    ("\\qquad" . ?⧢)
+    ("\\quad" . ?␣)
     ("\\rangle" . 10217)            ; Literal ?⟩ breaks indentation.
     ("\\rbrace" . ?})
     ("\\rbrack" . ?\])
@@ -3357,8 +3358,10 @@ There might be text before point."
     ("\\urcorner" . ?⌝)
     ("\\u{i}" . ?ĭ)
     ("\\vDash" . ?⊨)
+    ("\\varepsilon" . ?ε)
     ("\\varprime" . ?′)
     ("\\varpropto" . ?∝)
+    ("\\varrho" . ?ϱ)
     ;; ("\\varsigma" ?ς)              ;FIXME: Looks reversed with the non\var.
     ("\\vartriangleleft" . ?⊲)
     ("\\vartriangleright" . ?⊳)
@@ -3406,16 +3409,17 @@ There might be text before point."
 
 (defun tex--prettify-symbols-compose-p (start end _match)
   (let* ((after-char (char-after end))
-         (after-syntax  (char-syntax after-char)))
+         (after-syntax (char-syntax after-char)))
     (not (or
           ;; Don't compose \alpha@foo.
-          (eq after-syntax ?_)
-          ;; Don't compose inside verbatim blocks!
-          (nth 8 (syntax-ppss))
-          ;; The \alpha in \alpha2 may be composed but of course \alphax may not.
+          (eq after-char ?@)
+          ;; The \alpha in \alpha2 or \alpha-\beta may be composed but
+          ;; of course \alphax may not.
           (and (eq after-syntax ?w)
-               (or (< after-char ?0)
-                   (> after-char ?9)))))))
+               (not (memq after-char
+                          '(?0 ?1 ?2 ?3 ?4 ?5 ?6 ?7 ?8 ?9 ?+ ?- ?' ?\"))))
+          ;; Don't compose inside verbatim blocks.
+         (eq 2 (nth 7 (syntax-ppss)))))))
 
 (run-hooks 'tex-mode-load-hook)
 
index 37f10a8e8717057b6d8f06c3bd5a8fa31604a3e1..500c1e383945c48f59404a4aec92702129aac8fc 100644 (file)
@@ -1043,7 +1043,7 @@ Leave point after argument."
            (setq texinfo-command-end (point)))
           (t
            (error
-            "Invalid `texinfo-optional-braces-discard' format \(need braces?\)")))
+            "Invalid `texinfo-optional-braces-discard' format (need braces?)")))
     (delete-region texinfo-command-start texinfo-command-end)))
 
 (defun texinfo-format-parse-line-args ()
@@ -2336,7 +2336,7 @@ Use only the FILENAME arg; for Info, ignore the other arguments to @image."
 ;; Write a `@definfoenclose' command on a line and follow it with three
 ;; arguments separated by commas (commas are used as separators in an
 ;; `@node' line in the same way).  The first argument to
-;; `@definfoenclose' is the @-command name \(without the `@'\); the
+;; `@definfoenclose' is the @-command name (without the `@'); the
 ;; second argument is the Info start delimiter string; and the third
 ;; argument is the Info end delimiter string.  The latter two arguments
 ;; enclose the highlighted text in the Info file.  A delimiter string
@@ -2491,8 +2491,8 @@ surrounded by in angle brackets."
 Enclose the verbatim text, including the delimiters, in braces.  Print
 text exactly as written (but not the delimiters) in a fixed-width.
 
-For example, @verb\{|@|\} results in @ and
-@verb\{+@\\='e?\\=`!\\=`+} results in @\\='e?\\=`!\\=`."
+For example, @verb{|@|} results in @ and
+@verb{+@\\='e?\\=`!\\=`+} results in @\\='e?\\=`!\\=`."
 
   (let ((delimiter (buffer-substring-no-properties
                    (1+ texinfo-command-end) (+ 2 texinfo-command-end))))
index 2c6d5b3827cba7cef9bf054bd3e4520733008336..57218177d7b48da1ebb020c7dc164329d010dce3 100644 (file)
@@ -86,7 +86,7 @@ command to gain use of `next-error'."
   "Make Info file from current buffer.
 
 Use the \\[next-error] command to move to the next error
-\(if there are errors\)."
+\(if there are errors)."
   t nil)
 
 (autoload 'kill-compilation
index 0508426619f5d7ba0744da5b21d540c7124f69b8..321967a3721db3b111f28893f2746239116fab96 100644 (file)
@@ -694,8 +694,8 @@ section titles are often too short to explain a node well.
 
 MENU-LIST has form:
 
-    \(\(\"node-name1\" . \"description\"\)
-    \(\"node-name2\" . \"description\"\) ... \)
+    ((\"node-name1\" . \"description\")
+     (\"node-name2\" . \"description\") ... )
 
 However, the description field might be nil.
 
@@ -1002,9 +1002,9 @@ following menu and the title of the node preceding that menu.
 
 The master menu list has this form:
 
-    \(\(\(... \"entry-1-2\"  \"entry-1\"\) \"title-1\"\)
-      \(\(... \"entry-2-2\"  \"entry-2-1\"\) \"title-2\"\)
-      ...\)
+    (((... \"entry-1-2\"  \"entry-1\") \"title-1\")
+     ((... \"entry-2-2\"  \"entry-2-1\") \"title-2\")
+     ...)
 
 However, there does not need to be a title field."
 
@@ -1018,7 +1018,7 @@ However, there does not need to be a title field."
   "Format and insert the master menu in the current buffer."
   (goto-char (point-min))
   ;; Insert a master menu only after `Top' node and before next node
-  ;; \(or include file if there is no next node\).
+  ;; (or include file if there is no next node).
   (unless (re-search-forward "^@node [ \t]*top[ \t]*\\(,\\|$\\)" nil t)
     (error "This buffer needs a Top node"))
   (let ((first-chapter
@@ -1407,7 +1407,7 @@ level in the Texinfo file; when looking for the `Previous' pointer,
 the section found will be at the same or higher hierarchical level in
 the Texinfo file; when looking for the `Up' pointer, the section found
 will be at some level higher in the Texinfo file.  The fourth argument
-\(one of `next', `previous', or `up'\) specifies whether to find the
+\(one of `next', `previous', or `up') specifies whether to find the
 `Next', `Previous', or `Up' pointer."
   (let ((case-fold-search t))
     (cond ((eq direction 'next)
@@ -1850,8 +1850,8 @@ chapters."
 
 ;; The menu-list has the form:
 ;;
-;;     \(\(\"node-name1\" . \"title1\"\)
-;;       \(\"node-name2\" . \"title2\"\) ... \)
+;;     ((\"node-name1\" . \"title1\")
+;;      (\"node-name2\" . \"title2\") ... )
 ;;
 ;; However, there does not need to be a title field and this function
 ;; does not fill it; however a comment tells you how to do so.
index a9c539b7b870d33ded25d5a490da35065fe19245..654bccd098895b46b3472f60aebfe6793a71ea35 100644 (file)
@@ -219,7 +219,7 @@ The bounds of THING are determined by `bounds-of-thing-at-point'."
 
 (defun thing-at-point-bounds-of-list-at-point ()
   "Return the bounds of the list at point.
-\[Internal function used by `bounds-of-thing-at-point'.]"
+[Internal function used by `bounds-of-thing-at-point'.]"
   (save-excursion
     (let ((opoint (point))
          (beg (ignore-errors
index f8660f55f6588eff82f43a2539bfb0f35ea12765..a4a422fbc4fd29e524fcd1dacd450849efaf86b1 100644 (file)
@@ -63,8 +63,8 @@ with default Emacs bindings information about this is shown.
 
 VALUE should have either of these formats:
 
-  \(cua-mode)
-  \(current-binding KEY-FUN DEF-FUN KEY WHERE)
+  (cua-mode)
+  (current-binding KEY-FUN DEF-FUN KEY WHERE)
 
 Where
   KEY         is a key sequence whose standard binding has been changed
@@ -135,7 +135,7 @@ options:
                            ;; then save this value in mapsym
                            (setq mapsym s)))))
             (insert
-             (format
+             (format-message
               "The default Emacs binding for the key %s is the command `%s'.  "
               (key-description key)
               db))
@@ -402,8 +402,8 @@ where
   REMARK      is a list with info about rebinding. It has either of
               these formats:
 
-                \(TEXT cua-mode)
-                \(TEXT current-binding KEY-FUN DEF-FUN KEY WHERE)
+                (TEXT cua-mode)
+                (TEXT current-binding KEY-FUN DEF-FUN KEY WHERE)
 
               Here TEXT is a link text to show to the user.  The
               rest of the list is used to show information when
index 850373640161bef1e8c3f3c0bfb193884e02be27..5f56956c52b44ee9fbe15c70ee14fe18642cce69 100644 (file)
@@ -677,7 +677,7 @@ INTERVAL is the full length of an interval (defaults to TIME)."
 (defun type-break-check ()
   "Ask to take a typing break if appropriate.
 This may be the case either because the scheduled time has come \(and the
-minimum keystroke threshold has been reached\) or because the maximum
+minimum keystroke threshold has been reached) or because the maximum
 keystroke threshold has been exceeded."
   (type-break-file-keystroke-count)
   (let* ((min-threshold (car type-break-keystroke-threshold))
index a7b3d16d46df7c5e9cda0b34d019afa54676df61..df9cf621037dd57c9f3cb67bfaa934ac0ba31a51 100644 (file)
@@ -264,7 +264,7 @@ telling Microsoft that."
     (and expires
         (string-match
          (concat "^[^,]+, +\\(..\\)-\\(...\\)-\\(..\\) +"
-                 "\\(..:..:..\\) +\\[*\\([^\]]+\\)\\]*$")
+                 "\\(..:..:..\\) +\\[*\\([^]]+\\)\\]*$")
          expires)
         (setq expires (concat (match-string 1 expires) " "
                               (match-string 2 expires) " "
@@ -356,7 +356,7 @@ to run the `url-cookie-setup-save-timer' function manually."
 
 (defun url-cookie-list ()
   "Display a buffer listing the current URL cookies, if there are any.
-Use \\<url-cookie-mode-map>\\\[url-cookie-delete] to remove cookies."
+Use \\<url-cookie-mode-map>\\[url-cookie-delete] to remove cookies."
   (interactive)
   (when (and (null url-cookie-secure-storage)
             (null url-cookie-storage))
index 61ca0885ec51eda75ed1f9687478f7e04717a09a..1cf6b8209f90637c7f2f61bd665008ffba419649 100644 (file)
@@ -495,7 +495,7 @@ make sure you are comfortable with it leaking to the outside world.")
 (defun url-dav-lock-resource (url exclusive &optional depth)
   "Request a lock on URL.  If EXCLUSIVE is non-nil, get an exclusive lock.
 Optional 3rd argument DEPTH says how deep the lock should go, default is 0
-\(lock only the resource and none of its children\).
+\(lock only the resource and none of its children).
 
 Returns a cons-cell of (SUCCESSFUL-RESULTS . FAILURE-RESULTS).
 SUCCESSFUL-RESULTS is a list of (URL STATUS locktoken).
index cc0e4f8f8d64320a0af1521b395b6af86ca65e51..ab61802a6bbc6d30708dc0e11ca72071ef8f1e8c 100644 (file)
@@ -39,7 +39,7 @@
   :group 'url-gateway)
 
 (defcustom url-gateway-prompt-pattern
-  "^[^#$%>;]*[#$%>;] *" ;; "bash\\|\$ *\r?$\\|> *\r?"
+  "^[^#$%>;]*[#$%>;] *" ;; "bash\\|[$>] *\r?$"
   "A regular expression matching a shell prompt."
   :type 'regexp
   :group 'url-gateway)
index 001a7831ad594727a7f400a143cb0aba970e2541..845195e7d4c56970f303eba76864fbbe29e7af25 100644 (file)
@@ -117,9 +117,9 @@ When URL Handler mode is enabled, this regular expression is
 added to `file-name-handler-alist'.
 
 Some valid URL protocols just do not make sense to visit
-interactively \(about, data, info, irc, mailto, etc\).  This
+interactively \(about, data, info, irc, mailto, etc.).  This
 regular expression avoids conflicts with local files that look
-like URLs \(Gnus is particularly bad at this\)."
+like URLs \(Gnus is particularly bad at this)."
   :group 'url
   :type 'regexp
   :version "25.1"
index 6a7d8e2c94716cbb23bf051e9e35337c6020346e..7367a1eb3e9ceb1298cec58e95dcbd660cc2bfd3 100644 (file)
@@ -25,8 +25,8 @@
 
 ;;; Code:
 
+(require 'cl-lib)
 (eval-when-compile
-  (require 'cl-lib)
   (require 'subr-x))
 
 (defvar url-callback-arguments)
@@ -646,6 +646,12 @@ should be shown to the user."
                ;; compute the redirection relative to the URL of the proxy.
               (setq redirect-uri
                     (url-expand-file-name redirect-uri url-http-target-url)))
+          ;; Do not automatically include an authorization header in the
+          ;; redirect.  If needed it will be regenerated by the relevant
+          ;; auth scheme when the new request happens.
+          (setq url-http-extra-headers
+                (cl-remove "Authorization"
+                           url-http-extra-headers :key 'car :test 'equal))
            (let ((url-request-method url-http-method)
                 (url-request-data url-http-data)
                 (url-request-extra-headers url-http-extra-headers))
index d120d05221500d0272bf966d7e458f105c859f22..9ab8d75fbb5614771429e64468133d02c76a2943 100644 (file)
@@ -158,7 +158,7 @@ use the file's name relative to the directory of the change log file."
   :group 'change-log)
 
 (defcustom change-log-version-number-regexp-list
-  (let ((re "\\([0-9]+\.[0-9.]+\\)"))
+  (let ((re "\\([0-9]+\\.[0-9.]+\\)"))
     (list
      ;;  (defconst ad-version "2.15"
      (concat "^(def[^ \t\n]+[ \t]+[^ \t\n][ \t]\"" re)
index 37ed4a53b44933108c632068f7b23de543a011dc..464e3754eb94b79557def8281e1e88758772da9b 100644 (file)
@@ -1427,8 +1427,8 @@ modified lines of the diff."
                   (diff-hunk-style)))))
     (set (make-local-variable 'whitespace-trailing-regexp)
         (if (eq style 'context)
-            "^[-\+!] .*?\\([\t ]+\\)$"
-          "^[-\+!<>].*?\\([\t ]+\\)$"))))
+            "^[-+!] .*?\\([\t ]+\\)$"
+          "^[-+!<>].*?\\([\t ]+\\)$"))))
 
 (defun diff-delete-if-empty ()
   ;; An empty diff file means there's no more diffs to integrate, so we
index 352892c945ad2f4270ad7e18df7571a42574e101..7647544d65dbb2a737db4623288a5e391e3d0070 100644 (file)
@@ -168,7 +168,7 @@ This variable can be set either in .emacs or toggled interactively.
 Use `setq-default' if setting it in .emacs")
 
 (ediff-defvar-local ediff-auto-refine-limit 14000
-  "Auto-refine only the regions of this size \(in bytes\) or less.")
+  "Auto-refine only the regions of this size (in bytes) or less.")
 
 ;;; General
 
index 8c935bfab1913aff50e568e231c489c769512e62..bf211599b9f105c1feee4487e3bb159fb9b0257d 100644 (file)
@@ -776,7 +776,7 @@ TYPE-OF-EMACS is either 'xemacs or 'emacs."
 
 ;; A var local to each control panel buffer.  Indicates highlighting style
 ;; in effect for this buffer: `face', `ascii',
-;; `off' -- turned off \(on a dumb terminal only\).
+;; `off' -- turned off (on a dumb terminal only).
 (ediff-defvar-local ediff-highlighting-style
   (if (and (ediff-has-face-support-p) ediff-use-faces) 'face 'ascii)
   "")
index b45d533caea96bc10781fdb1806c48830b9513f4..a3b8bf0a28a9055e906165fa339b50e1c8757cc6 100644 (file)
@@ -90,14 +90,14 @@ See also `ediff-backup-specs'."
           ;; traditional `patch'
           (format "-b %s" ediff-backup-extension))))
   "Backup directives to pass to the patch program.
-Ediff requires that the old version of the file \(before applying the patch\)
+Ediff requires that the old version of the file \(before applying the patch)
 be saved in a file named `the-patch-file.extension'.  Usually `extension' is
 `.orig', but this can be changed by the user and may depend on the system.
 Therefore, Ediff needs to know the backup extension used by the patch program.
 
 Some versions of the patch program let you specify `-b backup-extension'.
 Other versions only permit `-b', which assumes the extension `.orig'
-\(in which case ediff-backup-extension MUST be also `.orig'\).  The latest
+\(in which case ediff-backup-extension MUST be also `.orig').  The latest
 versions of GNU patch require `-b -z backup-extension'.
 
 Note that both `ediff-backup-extension' and `ediff-backup-specs'
@@ -333,7 +333,7 @@ program."
                      (ediff-with-current-buffer standard-output
                        (fundamental-mode))
                      (princ
-                      (format "
+                      (format-message "
 The patch file contains a context diff for
        %s
        %s
@@ -342,7 +342,7 @@ to be patched on your system.  If you know the correct file name,
 please enter it now.
 
 If you don't know and still would like to apply patches to
-other files, enter /dev/null
+other files, enter `/dev/null'.
 "
                               (substring (car proposed-file-names) 6)
                               (substring (cdr proposed-file-names) 6))))
index bf5bb5cd5da03f030eee3d6ab25f5341e08aa733..e664f9fdac38d0f24711915dced7b60643a6a1bd 100644 (file)
@@ -1500,7 +1500,7 @@ Used in ediff-windows/regions only."
     (select-window wind)))
 
 (defun ediff-scroll-vertically (&optional arg)
-  "Vertically scroll buffers A, B \(and C if appropriate\).
+  "Vertically scroll buffers A, B (and C if appropriate).
 With optional argument ARG, scroll ARG lines; otherwise scroll by nearly
 the one half of the height of window-A."
   (interactive "P")
@@ -1544,7 +1544,7 @@ the one half of the height of window-A."
 
 
 (defun ediff-scroll-horizontally (&optional arg)
-  "Horizontally scroll buffers A, B \(and C if appropriate\).
+  "Horizontally scroll buffers A, B (and C if appropriate).
 If an argument is given, that is how many columns are scrolled, else nearly
 the width of the A/B/C windows."
   (interactive "P")
@@ -1822,7 +1822,7 @@ If the prefix is negative, count differences from the end."
 
 (defun ediff-jump-to-difference-at-point (arg)
   "Go to difference closest to the point in buffer A, B, or C.
-The buffer depends on last command character \(a, b, or c\) that invoked this
+The buffer depends on last command character \(a, b, or c) that invoked this
 command.  For instance, if the command was `ga' then the point value in buffer
 A is used.
 With a prefix argument, synchronize all files around the current point position
@@ -1921,7 +1921,7 @@ in the specified buffer."
 ;;; Copying diffs.
 
 (defun ediff-diff-to-diff (arg &optional keys)
-  "Copy buffer-X'th difference region to buffer Y \(X,Y are A, B, or C\).
+  "Copy buffer-X'th difference region to buffer Y (X,Y are A, B, or C).
 If numerical prefix argument, copy the difference specified in the arg.
 Otherwise, copy the difference given by `ediff-current-difference'.
 This command assumes it is bound to a 2-character key sequence, `ab', `ba',
@@ -1986,7 +1986,7 @@ ARG is a prefix argument.  If nil, copy the current difference region."
 
 
 
-;; Copy diff N from FROM-BUF-TYPE \(given as A, B or C\) to TO-BUF-TYPE.
+;; Copy diff N from FROM-BUF-TYPE (given as A, B or C) to TO-BUF-TYPE.
 ;; If optional DO-NOT-SAVE is non-nil, do not save the old value of the
 ;; target diff.  This is used in merging, when constructing the merged
 ;; version.
@@ -2065,7 +2065,7 @@ ARG is a prefix argument.  If nil, copy the current difference region."
       (message "%s" messg))
     ))
 
-;; Save Nth diff of buffer BUF-TYPE \(A, B, or C\).
+;; Save Nth diff of buffer BUF-TYPE (A, B, or C).
 ;; That is to say, the Nth diff on the `ediff-killed-diffs-alist'.  REG
 ;; is the region to save.  It is redundant here, but is passed anyway, for
 ;; convenience.
@@ -2385,10 +2385,10 @@ the number seen by the user."
   "Finish an Ediff session and exit Ediff.
 Unselects the selected difference, if any, restores the read-only and modified
 flags of the compared file buffers, kills Ediff buffers for this session
-\(but not buffers A, B, C\).
+\(but not buffers A, B, C).
 
 If `ediff-keep-variants' is nil, the user will be asked whether the buffers
-containing the variants should be removed \(if they haven't been modified\).
+containing the variants should be removed \(if they haven't been modified).
 If it is t, they will be preserved unconditionally.  A prefix argument,
 temporarily reverses the meaning of this variable."
   (interactive "P")
@@ -3312,7 +3312,7 @@ and `wd' saves the diff output.
 
 With prefix argument, `wd' saves plain diff output.
 Without an argument, it saves customized diff argument, if available
-\(and plain output, if customized output was not generated\)."
+\(and plain output, if customized output was not generated)."
   (interactive "P")
   (ediff-barf-if-not-control-buffer)
   (ediff-compute-custom-diffs-maybe)
index c31df82499668d9b72cedbb9f5152867767b1974..e0887f03b6261a6d92b10a1f758e2665766366d4 100644 (file)
@@ -211,7 +211,7 @@ responsibility."
   "Function to call to determine the desired location for the control panel.
 Expects three parameters: the control buffer, the desired width and height
 of the control frame.  It returns an association list
-of the form \(\(top . <position>\) \(left . <position>\)\)"
+of the form \((top . <position>) \(left . <position>))"
   :type 'function
   :group 'ediff-window)
 
@@ -432,7 +432,7 @@ into icons, regardless of the window manager."
            three-way-comparison ediff-3way-comparison-job))
     ;; if in minibuffer go somewhere else
     (if (save-match-data
-         (string-match "\*Minibuf-" (buffer-name (window-buffer))))
+         (string-match "\\*Minibuf-" (buffer-name (window-buffer))))
        (select-window (next-window nil 'ignore-minibuf)))
     (delete-other-windows)
     (set-window-dedicated-p (selected-window) nil)
index 65ca0bd4408389609d5f9a6c8de1cb046fb2b9ac..3a2d1e48aaccb5709eefb28b01857a614707283b 100644 (file)
@@ -963,7 +963,7 @@ If WIND-B is nil, use window next to WIND-A."
 ;;;###autoload
 (defun ediff-regions-wordwise (buffer-A buffer-B &optional startup-hooks)
   "Run Ediff on a pair of regions in specified buffers.
-Regions \(i.e., point and mark\) can be set in advance or marked interactively.
+Regions (i.e., point and mark) can be set in advance or marked interactively.
 This function is effective only for relatively small regions, up to 200
 lines.  For large regions, use `ediff-regions-linewise'."
   (interactive
@@ -1003,7 +1003,7 @@ lines.  For large regions, use `ediff-regions-linewise'."
 ;;;###autoload
 (defun ediff-regions-linewise (buffer-A buffer-B &optional startup-hooks)
   "Run Ediff on a pair of regions in specified buffers.
-Regions \(i.e., point and mark\) can be set in advance or marked interactively.
+Regions (i.e., point and mark) can be set in advance or marked interactively.
 Each region is enlarged to contain full lines.
 This function is effective for large regions, over 100-200
 lines.  For small regions, use `ediff-regions-wordwise'."
index acbd9c0cd9fd28e0dc4a966439e0c6681c5d561b..9857116e2d47308068623720202ee82377e5b805 100644 (file)
@@ -905,7 +905,7 @@ Return non-nil if it is."
 The return value looks like this:
   (LOGBUFFER (ENTRYSTART ENTRYEND) ...)
 where LOGBUFFER is the name of the ChangeLog buffer, and each
-\(ENTRYSTART . ENTRYEND\) pair is a buffer region."
+\(ENTRYSTART . ENTRYEND) pair is a buffer region."
   (let ((changelog-file-name
          (let ((default-directory
                  (file-name-directory (expand-file-name file)))
index 3a50c9b6a2d1eaff8060bacda8498fa50fa4e1cc..ab3161e11e6a453d0a031901f0b9ebd8858a2bb1 100644 (file)
@@ -269,7 +269,7 @@ cover the range from the oldest annotation to the newest."
      (/ (- (if full newest current) oldest)
         (vc-annotate-oldest-in-map vc-annotate-color-map))
      (if full newest))
-    (message "Redisplaying annotation...done \(%s\)"
+    (message "Redisplaying annotation...done (%s)"
             (if full
                 (format "Spanned from %.1f to %.1f days old"
                         (- current oldest)
index 5f8dd0bf0e894448eb7970d0d725384d924a104f..9b2711d81469d9d314617f66d8ad2cddefe55a70 100644 (file)
@@ -649,7 +649,7 @@ or a superior directory.")
                                            "" (replace-regexp-in-string
                                                "\n[ \t]?" " " str)))))
 
-(defun vc-bzr-checkin (files comment)
+(defun vc-bzr-checkin (files comment &optional _rev)
   "Check FILES in to bzr with log message COMMENT."
   (apply 'vc-bzr-command "commit" nil 0 files
          (cons "-m" (log-edit-extract-headers
index 0aa9c5a1e22c341cb4df9efb13a019c8ce035be2..5f5807fb3c633915d0a156cd8ab89be341f36fcc 100644 (file)
@@ -107,7 +107,7 @@ switches."
   :version "25.1"
   :group 'vc-cvs)
 
-(defcustom vc-cvs-header '("\$Id\$")
+(defcustom vc-cvs-header '("$Id\ $")
   "Header keywords to be inserted by `vc-insert-headers'."
   :version "24.1"     ; no longer consult the obsolete vc-header-alist
   :type '(repeat string)
@@ -332,38 +332,20 @@ its parents."
                   (directory-file-name dir))))
     (eq dir t)))
 
-;; vc-cvs-checkin used to take a 'rev' second argument that allowed
-;; checking in onto a specified branch tip rather than the current
-;; default branch, but nothing in the entire rest of VC exercised
-;; this code.  Removing it simplifies the backend interface for all
-;; modes.
-;;
-;; Here's the setup code preserved in amber, in case the logic needs
-;; to be broken out into a method someday; (if rev (concat "-r" rev))
-;; used to be part of the switches passed to vc-cvs-command.
-;;
-;;  (unless (or (not rev) (vc-cvs-valid-revision-number-p rev))
-;;    (if (not (vc-cvs-valid-symbolic-tag-name-p rev))
-;;     (error "%s is not a valid symbolic tag name" rev)
-;;      ;; If the input revision is a valid symbolic tag name, we create it
-;;      ;; as a branch, commit and switch to it.
-;;      (apply 'vc-cvs-command nil 0 files "tag" "-b" (list rev))
-;;      (apply 'vc-cvs-command nil 0 files "update" "-r" (list rev))
-;;      (mapc (lambda (file) (vc-file-setprop file 'vc-cvs-sticky-tag rev))
-;;         files)))
-;;
-;; The following postamble cleaned up after the branch change:
-;;
-;;    ;; if this was an explicit check-in (does not include creation of
-;;    ;; a branch), remove the sticky tag.
-;;    (if (and rev (not (vc-cvs-valid-symbolic-tag-name-p rev)))
-;;     (vc-cvs-command nil 0 files "update" "-A"))))
-;;       files)))
-;;
-(defun vc-cvs-checkin (files comment)
+(defun vc-cvs-checkin (files comment &optional rev)
   "CVS-specific version of `vc-backend-checkin'."
+ (unless (or (not rev) (vc-cvs-valid-revision-number-p rev))
+   (if (not (vc-cvs-valid-symbolic-tag-name-p rev))
+       (error "%s is not a valid symbolic tag name" rev)
+     ;; If the input revision is a valid symbolic tag name, we create it
+     ;; as a branch, commit and switch to it.
+     (apply 'vc-cvs-command nil 0 files "tag" "-b" (list rev))
+     (apply 'vc-cvs-command nil 0 files "update" "-r" (list rev))
+     (mapc (lambda (file) (vc-file-setprop file 'vc-cvs-sticky-tag rev))
+           files)))
   (let ((status (apply 'vc-cvs-command nil 1 files
-                      "ci" (concat "-m" comment)
+                      "ci" (if rev (concat "-r" rev))
+                       (concat "-m" comment)
                       (vc-switches 'CVS 'checkin))))
     (set-buffer "*vc*")
     (goto-char (point-min))
@@ -394,7 +376,11 @@ its parents."
     ;; tell it from the permissions of the file (see
     ;; vc-cvs-checkout-model).
     (mapc (lambda (file) (vc-file-setprop file 'vc-checkout-model nil))
-         files)))
+         files)
+    ;; if this was an explicit check-in (does not include creation of
+    ;; a branch), remove the sticky tag.
+    (if (and rev (not (vc-cvs-valid-symbolic-tag-name-p rev)))
+       (vc-cvs-command nil 0 files "update" "-A"))))
 
 (defun vc-cvs-find-revision (file rev buffer)
   (apply 'vc-cvs-command
@@ -932,7 +918,7 @@ state."
        (when (and full
                   (re-search-forward
                    "\\(RCS Version\\|RCS Revision\\|Repository revision\\):\
-\[\t ]+\\([0-9.]+\\)"
+[\t ]+\\([0-9.]+\\)"
                    nil t))
            (vc-file-setprop file 'vc-latest-revision (match-string 2)))
        (vc-file-setprop
index 3326f2964c9d8f1c41fd786d7ca64418e4a1d698..880e14be63e52e3e7c8966066206864417823ddc 100644 (file)
@@ -82,7 +82,7 @@ See `vc-checkout-model' for a list of possible values."
   ;; Do we need to do anything here?  FIXME?
   )
 
-(defun vc-dav-checkin (url comment)
+(defun vc-dav-checkin (url comment &optional _rev)
   "Commit changes in URL to WebDAV. COMMENT is used as a check-in comment."
   ;; This should PUT the resource and release any locks that we hold.
   )
index 8a0f5547c4d6094d038855dedebd52a6e4172a51..2f0439365e844221580d12ec99c2927900f7f96b 100644 (file)
@@ -674,7 +674,7 @@ If toggling on, also insert its message into the buffer."
   "Major mode for editing Git log messages.
 It is based on `log-edit-mode', and has Git-specific extensions.")
 
-(defun vc-git-checkin (files comment)
+(defun vc-git-checkin (files comment &optional _rev)
   (let* ((file1 (or (car files) default-directory))
          (root (vc-git-root file1))
          (default-directory (expand-file-name root))
index f634e2eac53fcafe5264144876edb593e6947784..49573986125bc0dabc5ba7f83fdece967b75b3be 100644 (file)
@@ -465,7 +465,7 @@ Optional arg REVISION is a revision to annotate from."
 
 (declare-function log-edit-extract-headers "log-edit" (headers string))
 
-(defun vc-hg-checkin (files comment)
+(defun vc-hg-checkin (files comment &optional _rev)
   "Hg-specific version of `vc-backend-checkin'.
 REV is ignored."
   (apply 'vc-hg-command nil 0 files
index 685ef3b6742cd6f5ebfdccbd886d62d5b52ace98..b56a08f2a9ec8f31be8adbb6823590c39b874d6f 100644 (file)
@@ -199,7 +199,7 @@ switches."
 
 (declare-function log-edit-extract-headers "log-edit" (headers string))
 
-(defun vc-mtn-checkin (files comment)
+(defun vc-mtn-checkin (files comment &optional _rev)
   (apply 'vc-mtn-command nil 0 files
         (nconc (list "commit" "-m")
                (log-edit-extract-headers '(("Author" . "--author")
index 71ffa55a6e96697729bc4b51a991432f5e7bf6c1..ba1336424ea019a9674c279bb73bd96b4764513e 100644 (file)
@@ -76,7 +76,7 @@ If nil, use the value of `vc-diff-switches'.  If t, use no switches."
   :version "21.1"
   :group 'vc-rcs)
 
-(defcustom vc-rcs-header '("\$Id\$")
+(defcustom vc-rcs-header '("$Id\ $")
   "Header keywords to be inserted by `vc-insert-headers'."
   :type '(repeat string)
   :version "24.1"     ; no longer consult the obsolete vc-header-alist
@@ -306,27 +306,23 @@ whether to remove it."
           (yes-or-no-p (format "Directory %s is empty; remove it? " dir))
           (delete-directory dir)))))
 
-;; It used to be possible to pass in a value for the variable rev, but
-;; nothing in the rest of VC used this capability.  Removing it makes the
-;; backend interface simpler for all modes.
-;;
-(defun vc-rcs-checkin (files comment)
+(defun vc-rcs-checkin (files comment &optional rev)
   "RCS-specific version of `vc-backend-checkin'."
-  (let (rev (switches (vc-switches 'RCS 'checkin)))
+  (let ((switches (vc-switches 'RCS 'checkin)))
     ;; Now operate on the files
     (dolist (file (vc-expand-dirs files 'RCS))
       (let ((old-version (vc-working-revision file)) new-version
            (default-branch (vc-file-getprop file 'vc-rcs-default-branch)))
        ;; Force branch creation if an appropriate
        ;; default branch has been set.
-       (and default-branch
+       (and (not rev)
+             default-branch
             (string-match (concat "^" (regexp-quote old-version) "\\.")
                           default-branch)
             (setq rev default-branch)
             (setq switches (cons "-f" switches)))
-       (if old-version
-           (setq rev (vc-branch-part old-version))
-         (error "can't find current branch"))
+       (if (and (not rev) old-version)
+           (setq rev (vc-branch-part old-version)))
        (apply #'vc-do-command "*vc*" 0 "ci" (vc-master-name file)
               ;; if available, use the secure check-in option
               (and (vc-rcs-release-p "5.6.4") "-j")
@@ -1118,12 +1114,12 @@ Returns: nil            if no headers were found
 (defun vc-release-greater-or-equal (r1 r2)
   "Compare release numbers, represented as strings.
 Release components are assumed cardinal numbers, not decimal fractions
-\(5.10 is a higher release than 5.9\).  Omitted fields are considered
-lower \(5.6.7 is earlier than 5.6.7.1\).  Comparison runs till the end
+\(5.10 is a higher release than 5.9).  Omitted fields are considered
+lower \(5.6.7 is earlier than 5.6.7.1).  Comparison runs till the end
 of the string is found, or a non-numeric component shows up \(5.6.7 is
 earlier than \"5.6.7 beta\", which is probably not what you want in
-some cases\).  This code is suitable for existing RCS release numbers.
-CVS releases are handled reasonably, too \(1.3 < 1.4* < 1.5\)."
+some cases).  This code is suitable for existing RCS release numbers.
+CVS releases are handled reasonably, too \(1.3 < 1.4* < 1.5)."
   (let (v1 v2 i1 i2)
     (catch 'done
       (or (and (string-match "^\\.?\\([0-9]+\\)" r1)
index 8d8d9e844edd3214affccfb46fcef3cd8b8b7944..a3facc56d5dd24c9908f509ecf013a08a0fcc0b8 100644 (file)
@@ -222,10 +222,11 @@ to the SCCS command."
       (stringp (vc-sccs-search-project-dir (or (file-name-directory file) "")
                                           (file-name-nondirectory file)))))
 
-(defun vc-sccs-checkin (files comment)
+(defun vc-sccs-checkin (files comment &optional rev)
   "SCCS-specific version of `vc-backend-checkin'."
   (dolist (file (vc-expand-dirs files 'SCCS))
     (apply 'vc-sccs-do-command nil 0 "delta" (vc-master-name file)
+           (if rev (concat "-r" rev))
           (concat "-y" comment)
           (vc-switches 'SCCS 'checkin))
        (vc-sccs-do-command nil 0 "get" (vc-master-name file))))
index d9aa1b13e88e1df631c996a9a12c388589adfdcd..69e403668b15243c1d1ecc1999fe9c22439c299a 100644 (file)
@@ -227,7 +227,7 @@ This function differs from vc-do-command in that it invokes `vc-src-program'."
                                           file
                                         (file-name-directory file)))))
 
-(defun vc-src-checkin (files comment)
+(defun vc-src-checkin (files comment &optional _rev)
   "SRC-specific version of `vc-backend-checkin'.
 REV is ignored."
   (vc-src-command nil files "commit" "-m" comment))
index 755dbc1ca3bc112e49c3d43ea50a912d104320a2..4ef63a23db55eacb319e61f5c10a4c8830aaabda 100644 (file)
@@ -106,7 +106,7 @@ switches."
   :version "25.1"
   :group 'vc-svn)
 
-(defcustom vc-svn-header '("\$Id\$")
+(defcustom vc-svn-header '("$Id\ $")
   "Header keywords to be inserted by `vc-insert-headers'."
   :version "24.1"     ; no longer consult the obsolete vc-header-alist
   :type '(repeat string)
index 3b9e788b7ab6b9ae776e05772acd719a28424824..f08e562efe5a3e2a0365d394ffc4f2b6279fb234 100644 (file)
 ;;   Unregister FILE from this backend.  This is only needed if this
 ;;   backend may be used as a "more local" backend for temporary editing.
 ;;
-;; * checkin (files comment)
+;; * checkin (files comment &optional rev)
 ;;
 ;;   Commit changes in FILES to this backend. COMMENT is used as a
 ;;   check-in comment.  The implementation should pass the value of
-;;   vc-checkin-switches to the backend command.  The revision argument
-;;   of some older VC versions is no longer supported.
+;;   vc-checkin-switches to the backend command.  The optional REV
+;;   revision argument is only supported with some older VCSes, like
+;;   RCS and CVS, and is otherwise silently ignored.
 ;;
 ;; * find-revision (file rev buffer)
 ;;
@@ -850,9 +851,9 @@ See `run-hooks'."
 
 (defcustom vc-static-header-alist
   '(("\\.c\\'" .
-     "\n#ifndef lint\nstatic char vcid[] = \"\%s\";\n#endif /* lint */\n"))
+     "\n#ifndef lint\nstatic char vcid[] = \"%s\";\n#endif /* lint */\n"))
   "Associate static header string templates with file types.
-A \%s in the template is replaced with the first string associated with
+A %s in the template is replaced with the first string associated with
 the file's version control type in `vc-BACKEND-header'."
   :type '(repeat (cons :format "%v"
                       (regexp :tag "File Type")
@@ -1221,10 +1222,15 @@ For old-style locking-based version control systems, like RCS:
            (message "No files remain to be committed")
          (if (not verbose)
              (vc-checkin ready-for-commit backend)
-            (let ((new-backend (vc-read-backend "New backend: ")))
-             (if new-backend
-                  (dolist (file files)
-                    (vc-transfer-file file new-backend))))))))
+           (let* ((revision (read-string "New revision or backend: "))
+                   (revision-downcase (downcase revision)))
+             (if (member
+                  revision-downcase
+                  (mapcar (lambda (arg) (downcase (symbol-name arg)))
+                          vc-handled-backends))
+                 (let ((vsym (intern revision-downcase)))
+                   (dolist (file files) (vc-transfer-file file vsym)))
+               (vc-checkin ready-for-commit backend nil nil revision)))))))
      ;; locked by somebody else (locking VCSes only)
      ((stringp state)
       ;; In the old days, we computed the revision once and used it on
@@ -1522,11 +1528,13 @@ Type \\[vc-next-action] to check in changes.")
      ".\n")
     (message "Please explain why you stole the lock.  Type C-c C-c when done.")))
 
-(defun vc-checkin (files backend &optional comment initial-contents)
+(defun vc-checkin (files backend &optional comment initial-contents rev)
   "Check in FILES. COMMENT is a comment string; if omitted, a
 buffer is popped up to accept a comment.  If INITIAL-CONTENTS is
 non-nil, then COMMENT is used as the initial contents of the log
 entry buffer.
+The optional argument REV may be a string specifying the new revision
+level (only supported for some older VCSes, like RCS and CVS).
 
 Runs the normal hooks `vc-before-checkin-hook' and `vc-checkin-hook'."
   (when vc-before-checkin-hook
@@ -1549,7 +1557,7 @@ Runs the normal hooks `vc-before-checkin-hook' and `vc-checkin-hook'."
        ;; vc-checkin-switches, but 'the' local buffer is
        ;; not a well-defined concept for filesets.
        (progn
-         (vc-call-backend backend 'checkin files comment)
+         (vc-call-backend backend 'checkin files comment rev)
          (mapc 'vc-delete-automatic-version-backups files))
        `((vc-state . up-to-date)
          (vc-checkout-time . ,(nth 5 (file-attributes file)))
@@ -2093,7 +2101,7 @@ changes from the current branch."
 (defun vc-tag-precondition (dir)
   "Scan the tree below DIR, looking for files not up-to-date.
 If any file is not up-to-date, return the name of the first such file.
-\(This means, neither tag creation nor retrieval is allowed.\)
+\(This means, neither tag creation nor retrieval is allowed.)
 If one or more of the files are currently visited, return `visited'.
 Otherwise, return nil."
   (let ((status nil))
index 440a2786551a24941b639b9c3d306a5afe4be998..7e503269a8a385d4e8bb8dd1f4ae5efbc1c4cdb8 100644 (file)
@@ -573,11 +573,11 @@ With optional NOT-THIS non-nil never return the current window.
 
 With NEW-WIN non-nil, display the virtual cursor buffer in another
 window if the virtual cursor is not currently visible \(note, however,
-that this function never changes `window-point'\).
+that this function never changes `window-point').
 
 With THIS-FRAME non-nil, don't search other frames for a new window
 \(though if the vcursor is already off-frame then its current window is
-always considered, and the value of `pop-up-frames' is always respected\).
+always considered, and the value of `pop-up-frames' is always respected).
 
 Returns nil if the virtual cursor is not visible anywhere suitable.
 Set `vcursor-window' to the returned value as a side effect."
index 0c208502c34c9e27ae540c2d892a22608e34a0e3..839ca8c3ac584a47567f82a1792b701654ed19e1 100644 (file)
@@ -891,22 +891,22 @@ Used when `whitespace-style' includes `lines' or `lines-tail'."
 ;; Hacked from `visible-whitespace-mappings' in visws.el
 (defcustom whitespace-display-mappings
   '(
-    (space-mark   ?\     [?\u00B7]     [?.])           ; space - centered dot
-    (space-mark   ?\xA0  [?\u00A4]     [?_])           ; hard space - currency
+    (space-mark   ?\     [?·]     [?.])               ; space - middle dot
+    (space-mark   ?\xA0  [?¤]     [?_])               ; hard space - currency sign
     ;; NEWLINE is displayed using the face `whitespace-newline'
     (newline-mark ?\n    [?$ ?\n])                     ; eol - dollar sign
-    ;; (newline-mark ?\n    [?\u21B5 ?\n] [?$ ?\n])    ; eol - downwards arrow
-    ;; (newline-mark ?\n    [?\u00B6 ?\n] [?$ ?\n])    ; eol - pilcrow
-    ;; (newline-mark ?\n    [?\u00AF ?\n]  [?$ ?\n])   ; eol - overscore
-    ;; (newline-mark ?\n    [?\u00AC ?\n]  [?$ ?\n])   ; eol - negation
-    ;; (newline-mark ?\n    [?\u00B0 ?\n]  [?$ ?\n])   ; eol - degrees
+    ;; (newline-mark ?\n    [?↵ ?\n] [?$ ?\n])       ; eol - downwards arrow
+    ;; (newline-mark ?\n    [?¶ ?\n] [?$ ?\n])        ; eol - pilcrow
+    ;; (newline-mark ?\n    [?¯ ?\n]  [?$ ?\n])       ; eol - overscore
+    ;; (newline-mark ?\n    [?¬ ?\n]  [?$ ?\n])       ; eol - negation
+    ;; (newline-mark ?\n    [?° ?\n]  [?$ ?\n])       ; eol - degrees
     ;;
     ;; WARNING: the mapping below has a problem.
     ;; When a TAB occupies exactly one column, it will display the
     ;; character ?\xBB at that column followed by a TAB which goes to
     ;; the next TAB column.
     ;; If this is a problem for you, please, comment the line below.
-    (tab-mark     ?\t    [?\u00BB ?\t] [?\\ ?\t])      ; tab - left quote mark
+    (tab-mark     ?\t    [?» ?\t] [?\\ ?\t])  ; tab - right guillemet
     )
   "Specify an alist of mappings for displaying characters.
 
@@ -2581,5 +2581,8 @@ It should be added buffer-locally to `write-file-functions'."
 
 (run-hooks 'whitespace-load-hook)
 
+;; Local Variables:
+;; coding: utf-8
+;; End:
 
 ;;; whitespace.el ends here
index b64de4759d704807a72d8fc3f65052dd8e796081..0d9157a557598b7bae70cfbd2d06ed441c4de1e1 100644 (file)
@@ -2654,8 +2654,7 @@ Return an alist of (TYPE MATCH)."
   (save-excursion
     (let ((children (widget-get widget :children))
          (inhibit-read-only t)
-         before-change-functions
-         after-change-functions)
+         (inhibit-modification-hooks t))
       (cond (before
             (goto-char (widget-get before :entry-from)))
            (t
@@ -2679,8 +2678,7 @@ Return an alist of (TYPE MATCH)."
     (let ((buttons (copy-sequence (widget-get widget :buttons)))
          button
          (inhibit-read-only t)
-         before-change-functions
-         after-change-functions)
+         (inhibit-modification-hooks t))
       (while buttons
        (setq button (car buttons)
              buttons (cdr buttons))
@@ -2691,8 +2689,7 @@ Return an alist of (TYPE MATCH)."
     (let ((entry-from (widget-get child :entry-from))
          (entry-to (widget-get child :entry-to))
          (inhibit-read-only t)
-         before-change-functions
-         after-change-functions)
+         (inhibit-modification-hooks t))
       (widget-delete child)
       (delete-region entry-from entry-to)
       (set-marker entry-from nil)
index fdf62137514fc47071a094ff649d5c6b39c0314f..a05f4ba867eaf457430d8536bd534ca3b3142d86 100644 (file)
@@ -177,6 +177,11 @@ You may want to include buffer names such as *Help*, *Apropos*,
 ;; Called whenever the window configuration changes
 ;; (a `window-configuration-change-hook').
 (defun winner-change-fun ()
+
+  ;; Cull dead frames.
+  (setq winner-modified-list
+        (cl-remove-if-not 'frame-live-p winner-modified-list))
+
   (unless (or (memq (selected-frame) winner-modified-list)
               (/= 0 (minibuffer-depth)))
     (push (selected-frame) winner-modified-list)))
index f2e59e50bcad840a455f437cb5161d87486751ac..8fe1bfa0446db8dc9d47a31f5e0e3cb610e2a7b8 100644 (file)
@@ -2716,7 +2716,7 @@ If DELETE is non-nil then delete from point."
 
 (defsubst woman-unescape (macro)
   "Replace escape sequences in the body of MACRO.
-Replaces || by |, but | by \, where | denotes the internal escape."
+Replaces || by |, but | by \\, where | denotes the internal escape."
   (let (start)
     (while (setq start (string-match woman-unescape-regex macro start))
       (setq macro
@@ -2838,7 +2838,7 @@ special characters."
 (defun woman-strings (&optional to)
   "Process ?roff string requests and escape sequences up to buffer position TO.
 Strings are defined/updated by `.ds xx string' requests and
-interpolated by `\*x' and `\*(xx' escapes."
+interpolated by `\\*x' and `\\*(xx' escapes."
   ;; Add support for .as and .rm?
   (while
       ;; Find .ds requests and \* escapes:
@@ -3549,7 +3549,7 @@ The expression may be an argument in quotes."
                       (if (> (woman-parse-numeric-value) 0) 1 0))
                     )))
            ))
-;    (if (looking-at "[ \t\nRC\)\"]")  ; R, C are tab types
+;    (if (looking-at "[ \t\nRC)\"]")   ; R, C are tab types
 ;      ()
 ;      (WoMan-warn "Unimplemented numerical operator `%c' in %s"
 ;                (following-char)
@@ -3583,7 +3583,7 @@ expression in parentheses.  Leaves point after the value."
                    ;; string-to-number returns 0 if number not parsed.
                    (string-to-number (match-string 0)))
                   ((looking-at "\\\\n\\([-+]\\)?\\(?:\
-\\[\\([^]]+\\)\\]\\|\(\\(..\\)\\|\\(.\\)\\)")
+\\[\\([^]]+\\)\\]\\|(\\(..\\)\\|\\(.\\)\\)")
                    ;; interpolate number register, maybe auto-incremented
                    (let* ((pm (match-string-no-properties 1))
                           (name (or (match-string-no-properties 2)
@@ -3761,7 +3761,7 @@ Round to whole lines, default 1 line.  Format paragraphs upto TO.
 
 (defun woman2-TH (to)
   ".TH n c x v m -- Begin a man page.  Format paragraphs upto TO.
-n is the name of the page in chapter c\; x is extra commentary\;
+n is the name of the page in chapter c; x is extra commentary;
 v alters page foot left; m alters page head center.
 \(Should set prevailing indent and tabs to 5.)"
   (woman-forward-arg 'unquote 'concat)
@@ -4349,7 +4349,7 @@ Format paragraphs upto TO."
 
 (defun woman2-ta (to)
   ".ta Nt ... -- Set tabs, left type, unless t=R(right), C(centered).
-\(Breaks, but should not.)  The tab stops are separated by spaces\;
+\(Breaks, but should not.)  The tab stops are separated by spaces;
 a value preceded by + represents an increment to the previous stop value.
 Format paragraphs upto TO."
   (setq tab-stop-list nil)
index 3cf56dd975d3a3c7998d49743b3dcfca5bae5077..57ce3337c555422653c44cb89ef7d3ebd1d2a709 100644 (file)
   </trustInfo>
     <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1"> 
       <application> 
-         <!-- Windows 8.1 -->
-         <supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}"/>
-         <!-- Windows Vista -->
-         <supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/> 
-         <!-- Windows 7 -->
-         <supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>
-         <!-- Windows 8 -->
-         <supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"/>
+        <!-- Windows Vista -->
+        <supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/>
+        <!-- Windows 7 -->
+        <supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>
+        <!-- Windows 8 -->
+        <supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"/>
+        <!-- Windows 8.1 -->
+        <supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}"/>
+        <!-- Windows 10 -->
+        <supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}"/>
       </application> 
     </compatibility>
   <asmv3:application>
index d7053be07eca75115e1373417a06e03f8cf7b61c..1be75b106293739b4eb293aab8628ee0b957a16c 100644 (file)
   </trustInfo>
     <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1"> 
       <application> 
-        <!-- Windows 8.1 -->
-        <supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}"/>
         <!-- Windows Vista -->
-        <supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/> 
+        <supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/>
         <!-- Windows 7 -->
         <supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>
         <!-- Windows 8 -->
         <supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"/>
+        <!-- Windows 8.1 -->
+        <supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}"/>
+        <!-- Windows 10 -->
+        <supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}"/>
       </application> 
     </compatibility>
   <asmv3:application>
diff --git a/nt/subdirs.el b/nt/subdirs.el
deleted file mode 100644 (file)
index ee1c123..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-;; -*- no-byte-compile: t -*-
-(if (fboundp 'normal-top-level-add-subdirs-to-load-path)
-    (normal-top-level-add-subdirs-to-load-path))
index ef08d14d075b5848c784901ae1ab59e6491e2c90..adc782c10fc88a73d560f9247bab92c73aa575f2 100644 (file)
@@ -4,16 +4,15 @@ See the end of the file for license conditions.
 
 This directory contains the source files for the C component of GNU Emacs.
 Nothing in this directory is needed for using Emacs once it is built
-and installed, if the dumped Emacs (on Unix systems) is copied elsewhere.
+and installed, if the dumped Emacs is copied elsewhere.
 
 See the files ../README and then ../INSTALL for installation instructions.
 
-Under GNU and Unix systems, the file `Makefile.in' is used as a
-template by the script `../configure' to produce `Makefile'.  This
-is the file which actually controls the compilation of Emacs.
-All of this should work transparently to the user; you should only
-need to run `../configure', and then type `make'.
-
+The file 'Makefile.in' is used as a template by the script
+'../configure' to produce 'Makefile'.  This is the file which actually
+controls the compilation of Emacs C source files.  All of this should
+work transparently; you should only need to change to the parent
+directory, run './configure', and then run 'make'.
 \f
 This file is part of GNU Emacs.
 
index 33f7996a8c1a0bb633f4da8b2e8c2a842f9d4d11..530fe114cc8b2e75f6d44c6a394d7f635fcaefd1 100644 (file)
@@ -1042,7 +1042,7 @@ DEFUN ("generate-new-buffer-name", Fgenerate_new_buffer_name,
        doc: /* Return a string that is the name of no existing buffer based on NAME.
 If there is no live buffer named NAME, then return NAME.
 Otherwise modify name by appending `<NUMBER>', incrementing NUMBER
-\(starting at 2) until an unused name is found, and then return that name.
+(starting at 2) until an unused name is found, and then return that name.
 Optional second argument IGNORE specifies a name that is okay to use (if
 it is in the sequence to be tried) even if a buffer with that name exists.
 
@@ -1385,7 +1385,7 @@ DEFUN ("buffer-chars-modified-tick", Fbuffer_chars_modified_tick,
        Sbuffer_chars_modified_tick, 0, 1, 0,
        doc: /* Return BUFFER's character-change tick counter.
 Each buffer has a character-change tick counter, which is set to the
-value of the buffer's tick counter \(see `buffer-modified-tick'), each
+value of the buffer's tick counter (see `buffer-modified-tick'), each
 time text in that buffer is inserted or deleted.  By comparing the
 values returned by two individual calls of `buffer-chars-modified-tick',
 you can tell whether a character change occurred in that buffer in
@@ -3791,10 +3791,10 @@ If omitted, BUFFER defaults to the current buffer.
 BEG and END may be integers or markers.
 The fourth arg FRONT-ADVANCE, if non-nil, makes the marker
 for the front of the overlay advance when text is inserted there
-\(which means the text *is not* included in the overlay).
+(which means the text *is not* included in the overlay).
 The fifth arg REAR-ADVANCE, if non-nil, makes the marker
 for the rear of the overlay advance when text is inserted there
-\(which means the text *is* included in the overlay).  */)
+(which means the text *is* included in the overlay).  */)
   (Lisp_Object beg, Lisp_Object end, Lisp_Object buffer,
    Lisp_Object front_advance, Lisp_Object rear_advance)
 {
@@ -6014,7 +6014,7 @@ between 0.0 and 1.0, inclusive.  */);
               doc: /* List of functions to call before each text change.
 Two arguments are passed to each function: the positions of
 the beginning and end of the range of old text to be changed.
-\(For an insertion, the beginning and end are at the same place.)
+(For an insertion, the beginning and end are at the same place.)
 No information is given about the length of the text after the change.
 
 Buffer changes made while executing the `before-change-functions'
@@ -6031,7 +6031,7 @@ from happening repeatedly and making Emacs nonfunctional.  */);
 Three arguments are passed to each function: the positions of
 the beginning and end of the range of changed text,
 and the length in chars of the pre-change text replaced by that range.
-\(For an insertion, the pre-change length is zero;
+(For an insertion, the pre-change length is zero;
 for a deletion, that length is the number of chars deleted,
 and the post-change beginning and end are at the same place.)
 
@@ -6076,7 +6076,7 @@ was modified between BEG and END.  PROPERTY is the property name,
 and VALUE is the old value.
 
 An entry (apply FUN-NAME . ARGS) means undo the change with
-\(apply FUN-NAME ARGS).
+(apply FUN-NAME ARGS).
 
 An entry (apply DELTA BEG END FUN-NAME . ARGS) supports selective undo
 in the active region.  BEG and END is the range affected by this entry
@@ -6236,7 +6236,7 @@ to the default frame line height.  A value of nil means add no extra space.  */)
                     doc: /* Non-nil means show a cursor in non-selected windows.
 If nil, only shows a cursor in the selected window.
 If t, displays a cursor related to the usual cursor type
-\(a solid box becomes hollow, a bar becomes a narrower bar).
+(a solid box becomes hollow, a bar becomes a narrower bar).
 You can also specify the cursor type as in the `cursor-type' variable.
 Use Custom to set this variable and update the display."  */);
 
index 86d44aba46b8e07d08a270bf8af110f267d486d2..864db1a0bed394da04297e739b1f9a4ee05d910c 100644 (file)
@@ -2000,9 +2000,9 @@ syms_of_bytecode (void)
 
   DEFVAR_LISP ("byte-code-meter", Vbyte_code_meter,
               doc: /* A vector of vectors which holds a histogram of byte-code usage.
-\(aref (aref byte-code-meter 0) CODE) indicates how many times the byte
+(aref (aref byte-code-meter 0) CODE) indicates how many times the byte
 opcode CODE has been executed.
-\(aref (aref byte-code-meter CODE1) CODE2), where CODE1 is not 0,
+(aref (aref byte-code-meter CODE1) CODE2), where CODE1 is not 0,
 indicates how many times the byte opcodes CODE1 and CODE2 have been
 executed in succession.  */);
 
index 39f0eb6265ebb4329cf1bc91d5d7862d3628eac9..e38844e2da65e87a6674f667e9b19291d2c52cad 100644 (file)
@@ -226,7 +226,7 @@ The program's input comes from file INFILE (nil means `/dev/null').
 Insert output in DESTINATION before point; t means current buffer; nil for DESTINATION
  means discard it; 0 means discard and don't wait; and `(:file FILE)', where
  FILE is a file name string, means that it should be written to that file
\(if the file already exists it is overwritten).
+ (if the file already exists it is overwritten).
 DESTINATION can also have the form (REAL-BUFFER STDERR-FILE); in that case,
 REAL-BUFFER says what to do with standard output, as above,
 while STDERR-FILE says what to do with standard error in the child.
@@ -1462,7 +1462,7 @@ This function searches `process-environment' for VARIABLE.
 
 If optional parameter ENV is a list, then search this list instead of
 `process-environment', and return t when encountering a negative entry
-\(an entry for a variable with no value).  */)
+(an entry for a variable with no value).  */)
   (Lisp_Object variable, Lisp_Object env)
 {
   char *value;
index bb4a75d3a4da68ac95a898ef36a14e3496dae250..400116f6e0370b98aa1e33dcc7add2fa8124e6f7 100644 (file)
@@ -464,7 +464,7 @@ Emacs treats a sequence of word constituent characters as a single
 word (i.e. finds no word boundary between them) only if they belong to
 the same script.  But, exceptions are allowed in the following cases.
 
-\(1) The case that characters are in different scripts is controlled
+(1) The case that characters are in different scripts is controlled
 by the variable `word-combining-categories'.
 
 Emacs finds no word boundary between characters of different scripts
@@ -478,7 +478,7 @@ For instance, to tell that Han characters followed by Hiragana
 characters can form a single word, the element `(?C . ?H)' should be
 in this list.
 
-\(2) The case that character are in the same script is controlled by
+(2) The case that character are in the same script is controlled by
 the variable `word-separating-categories'.
 
 Emacs finds a word boundary between characters of the same script
index bd14c4d172bd3e7543e79f33325ac14c411ef796..274bb60727c95ad09c1db29b10c10fa7ed204be8 100644 (file)
@@ -534,7 +534,7 @@ DEFUN ("char-table-parent", Fchar_table_parent, Schar_table_parent,
 The value is either nil or another char-table.
 If CHAR-TABLE holds nil for a given character,
 then the actual applicable value is inherited from the parent char-table
-\(or from its parents, if necessary).  */)
+(or from its parents, if necessary).  */)
   (Lisp_Object char_table)
 {
   CHECK_CHAR_TABLE (char_table);
index a975a8ed4e0ca2e553c126bb9b796844b8f6f5e2..7a575ae734820277b199902ac48500fd92a1bfe2 100644 (file)
@@ -108,7 +108,7 @@ right or to the left on the screen.  This is in contrast with
 DEFUN ("forward-line", Fforward_line, Sforward_line, 0, 1, "^p",
        doc: /* Move N lines forward (backward if N is negative).
 Precisely, if point is on line I, move to the start of line I + N
-\("start of line" in the logical order).
+("start of line" in the logical order).
 If there isn't room, go as far as possible (no error).
 
 Returns the count of lines left to move.  If moving forward,
index 1544f319b00dcf5899b4fcef53e578966a7b2993..3fc6fb684c6e195fad441e6a30c9764a1fe70e50 100644 (file)
@@ -4295,6 +4295,9 @@ encode_invocation_designation (struct charset *charset,
          else
            ENCODE_LOCKING_SHIFT_3;
          break;
+
+       default:
+         break;
        }
     }
 
@@ -7292,6 +7295,8 @@ produce_annotation (struct coding_system *coding, ptrdiff_t pos)
              case CODING_ANNOTATE_CHARSET_MASK:
                produce_charset (coding, charbuf, pos);
                break;
+             default:
+               break;
              }
          charbuf += len;
        }
@@ -9795,7 +9800,7 @@ DEFUN ("find-operation-coding-system", Ffind_operation_coding_system,
        doc: /* Choose a coding system for an operation based on the target name.
 The value names a pair of coding systems: (DECODING-SYSTEM . ENCODING-SYSTEM).
 DECODING-SYSTEM is the coding system to use for decoding
-\(in case OPERATION does decoding), and ENCODING-SYSTEM is the coding system
+(in case OPERATION does decoding), and ENCODING-SYSTEM is the coding system
 for encoding (in case OPERATION does encoding).
 
 The first argument OPERATION specifies an I/O primitive:
@@ -11170,7 +11175,7 @@ the cdr part is used for encoding a text to be sent to a process.  */);
 Table of extra Latin codes in the range 128..159 (inclusive).
 This is a vector of length 256.
 If Nth element is non-nil, the existence of code N in a file
-\(or output of subprocess) doesn't prevent it to be detected as
+(or output of subprocess) doesn't prevent it to be detected as
 a coding system of ISO 2022 variant which has a flag
 `accept-latin-extra-code' t (e.g. iso-latin-1) on reading a file
 or reading output of a subprocess.
index 88c5a30985912073657c95d864190e77ef2c19ca..eda611055d8544c1052bd2edeea3c2b90bf7c5e6 100644 (file)
@@ -226,8 +226,9 @@ for example, (type-of 1) returns `integer'.  */)
           return Qfloat;
         case Lisp_Misc_Finalizer:
           return Qfinalizer;
+       default:
+         emacs_abort ();
        }
-      emacs_abort ();
 
     case Lisp_Vectorlike:
       if (WINDOW_CONFIGURATIONP (object))
@@ -790,7 +791,7 @@ SUBR must be a built-in function.  */)
 DEFUN ("interactive-form", Finteractive_form, Sinteractive_form, 1, 1, 0,
        doc: /* Return the interactive form of CMD or nil if none.
 If CMD is not a command, the return value is nil.
-Value, if non-nil, is a list \(interactive SPEC).  */)
+Value, if non-nil, is a list (interactive SPEC).  */)
   (Lisp_Object cmd)
 {
   Lisp_Object fun = indirect_function (cmd); /* Check cycles.  */
@@ -1659,8 +1660,8 @@ DEFUN ("make-local-variable", Fmake_local_variable, Smake_local_variable,
        1, 1, "vMake Local Variable: ",
        doc: /* Make VARIABLE have a separate value in the current buffer.
 Other buffers will continue to share a common default value.
-\(The buffer-local value of VARIABLE starts out as the same value
-VARIABLE previously had.  If VARIABLE was void, it remains void.\)
+(The buffer-local value of VARIABLE starts out as the same value
+VARIABLE previously had.  If VARIABLE was void, it remains void.)
 Return VARIABLE.
 
 If the variable is already arranged to become local when set,
index e5318fd51a1d740d6f4e2176c46badcb4e1fc6ac..181c7d016fdab6a0fa3868184edda3044d0de262 100644 (file)
@@ -1233,20 +1233,20 @@ This is an internal function, it shall not be used outside dbus.el.
 The following usages are expected:
 
 `dbus-call-method', `dbus-call-method-asynchronously':
-  \(dbus-message-internal
+  (dbus-message-internal
     dbus-message-type-method-call BUS SERVICE PATH INTERFACE METHOD HANDLER
     &optional :timeout TIMEOUT &rest ARGS)
 
 `dbus-send-signal':
-  \(dbus-message-internal
+  (dbus-message-internal
     dbus-message-type-signal BUS SERVICE PATH INTERFACE SIGNAL &rest ARGS)
 
 `dbus-method-return-internal':
-  \(dbus-message-internal
+  (dbus-message-internal
     dbus-message-type-method-return BUS SERVICE SERIAL &rest ARGS)
 
 `dbus-method-error-internal':
-  \(dbus-message-internal
+  (dbus-message-internal
     dbus-message-type-error BUS SERVICE SERIAL &rest ARGS)
 
 usage: (dbus-message-internal &rest REST)  */)
@@ -1796,7 +1796,7 @@ string which denotes a D-Bus interface, and MEMBER, also a string, is
 either a method, a signal or a property INTERFACE is offering.  All
 arguments but BUS must not be nil.
 
-The value in the hash table is a list of quadruple lists \((UNAME
+The value in the hash table is a list of quadruple lists ((UNAME
 SERVICE PATH OBJECT [RULE]) ...).  SERVICE is the service name as
 registered, UNAME is the corresponding unique name.  In case of
 registered methods and properties, UNAME is nil.  PATH is the object
index e5adeab0dc02fc8334f7c0e3ee4722fafedf1f33..e44b70bf562f7b124142af8e051b0b3d9b96439e 100644 (file)
@@ -2378,10 +2378,6 @@ struct it
        struct it_slice slice;
        ptrdiff_t image_id;
       } image;
-      /* method == GET_FROM_COMPOSITION */
-      struct {
-       Lisp_Object object;
-      } comp;
       /* method == GET_FROM_STRETCH */
       struct {
        Lisp_Object object;
index 18afe50dd9b70e18e2844bf4096942f0e3df560f..00d086e4161032d83093b0f8a6c512cd12cd4eca 100644 (file)
@@ -3004,7 +3004,7 @@ redraw_frame (struct frame *f)
   clear_frame (f);
   clear_current_matrices (f);
   update_end (f);
-  windows_or_buffers_changed = 13;
+  fset_redisplay (f);
   /* Mark all windows as inaccurate, so that every window will have
      its redisplay done.  */
   mark_window_display_accurate (FRAME_ROOT_WINDOW (f), 0);
@@ -5665,7 +5665,7 @@ DEFUN ("sleep-for", Fsleep_for, Ssleep_for, 1, 2, 0,
 SECONDS may be a floating-point value, meaning that you can wait for a
 fraction of a second.  Optional second arg MILLISECONDS specifies an
 additional wait period, in milliseconds; this is for backwards compatibility.
-\(Not all operating systems support waiting for a fraction of a second.)  */)
+(Not all operating systems support waiting for a fraction of a second.)  */)
   (Lisp_Object seconds, Lisp_Object milliseconds)
 {
   double duration = extract_float (seconds);
index b6963d2ab0b646f3be33563927271db1f234b9f5..68d4367182d4124c2111aa10d63e45515017a391 100644 (file)
--- a/src/doc.c
+++ b/src/doc.c
@@ -716,7 +716,7 @@ is not on any keys.
 Each substring of the form \\=\\{MAPVAR} is replaced by a summary of
 the value of MAPVAR as a keymap.  This summary is similar to the one
 produced by `describe-bindings'.  The summary ends in two newlines
-\(used by the helper function `help-make-xrefs' to find the end of the
+(used by the helper function `help-make-xrefs' to find the end of the
 summary).
 
 Each substring of the form \\=\\<MAPVAR> specifies the use of MAPVAR
index 7c5a6afb94b989f4ced5cf4fbe86e73059e4011d..51f8fd72ba026cede785c7d81c136ffdce79d1e5 100644 (file)
@@ -1,4 +1,4 @@
-/* Output like sprintf to a buffer of specified size.
+/* Output like sprintf to a buffer of specified size.    -*- coding: utf-8 -*-
    Also takes args differently: pass one pointer to the end
    of the format string in addition to the format string itself.
    Copyright (C) 1985, 2001-2015 Free Software Foundation, Inc.
index 831edb4c171aed4640dc7638d5f7cba5a2df771c..12e5ca8c001163a826cf2db04c2856cfb7562d17 100644 (file)
@@ -1,4 +1,4 @@
-/* Lisp functions pertaining to editing.
+/* Lisp functions pertaining to editing.                 -*- coding: utf-8 -*-
 
 Copyright (C) 1985-1987, 1989, 1993-2015 Free Software Foundation, Inc.
 
@@ -3627,7 +3627,7 @@ save_restriction_restore (Lisp_Object data)
 DEFUN ("save-restriction", Fsave_restriction, Ssave_restriction, 0, UNEVALLED, 0,
        doc: /* Execute BODY, saving and restoring current buffer's restrictions.
 The buffer's restrictions make parts of the beginning and end invisible.
-\(They are set up with `narrow-to-region' and eliminated with `widen'.)
+(They are set up with `narrow-to-region' and eliminated with `widen'.)
 This special form, `save-restriction', saves the current buffer's restrictions
 when it is entered, and restores them when it is exited.
 So any `narrow-to-region' within BODY lasts only until the end of the form.
@@ -4154,7 +4154,7 @@ styled_format (ptrdiff_t nargs, Lisp_Object *args, bool message)
                      || conversion == 'X'))
            error ("Invalid format operation %%%c",
                   STRING_CHAR ((unsigned char *) format - 1));
-         else if (! (INTEGERP (args[n]) || FLOATP (args[n])))
+         else if (! NUMBERP (args[n]))
            error ("Format specifier doesn't match argument type");
          else
            {
index 77d435acbe6a3da3a3b9cc0e99f9e73b1186d947..ac98ca11bd432ad42561825002384ef6fbebff59 100644 (file)
@@ -596,6 +596,11 @@ The return value is BASE-VARIABLE.  */)
       error ("Cannot make an internal variable an alias");
     case SYMBOL_LOCALIZED:
       error ("Don't know how to make a localized variable an alias");
+    case SYMBOL_PLAINVAL:
+    case SYMBOL_VARALIAS:
+      break;
+    default:
+      emacs_abort ();
     }
 
   /* http://lists.gnu.org/archive/html/emacs-devel/2008-04/msg00834.html
@@ -640,6 +645,17 @@ default_toplevel_binding (Lisp_Object symbol)
          if (EQ (specpdl_symbol (pdl), symbol))
            binding = pdl;
          break;
+
+       case SPECPDL_UNWIND:
+       case SPECPDL_UNWIND_PTR:
+       case SPECPDL_UNWIND_INT:
+       case SPECPDL_UNWIND_VOID:
+       case SPECPDL_BACKTRACE:
+       case SPECPDL_LET_LOCAL:
+         break;
+
+       default:
+         emacs_abort ();
        }
     }
   return binding;
@@ -689,7 +705,7 @@ If SYMBOL has a local binding, then this form affects the local
 binding.  This is usually not what you want.  Thus, if you need to
 load a file defining variables, with this form or with `defconst' or
 `defcustom', you should always load that file _outside_ any bindings
-for these variables.  \(`defconst' and `defcustom' behave similarly in
+for these variables.  (`defconst' and `defcustom' behave similarly in
 this respect.)
 
 The optional argument DOCSTRING is a documentation string for the
@@ -1172,7 +1188,7 @@ suppresses the debugger).
 When a handler handles an error, control returns to the `condition-case'
 and it executes the handler's BODY...
 with VAR bound to (ERROR-SYMBOL . SIGNAL-DATA) from the error.
-\(If VAR is nil, the handler can't access that information.)
+(If VAR is nil, the handler can't access that information.)
 Then the value of the last BODY form is returned from the `condition-case'
 expression.
 
@@ -2350,7 +2366,7 @@ may be nil, a function, or a list of functions.  Call each
 function in order with arguments ARGS, stopping at the first
 one that returns nil, and return nil.  Otherwise (if all functions
 return non-nil, or if there are no functions to call), return non-nil
-\(do not rely on the precise return value in this case).
+(do not rely on the precise return value in this case).
 
 Do not use `make-local-variable' to make a hook variable buffer-local.
 Instead, use `add-hook' and specify t for the LOCAL argument.
@@ -3462,6 +3478,17 @@ NFRAMES and BASE specify the activation frame to use, as in `backtrace-frame'.
              else
                result = Fcons (Fcons (sym, val), result);
            }
+           break;
+
+         case SPECPDL_UNWIND:
+         case SPECPDL_UNWIND_PTR:
+         case SPECPDL_UNWIND_INT:
+         case SPECPDL_UNWIND_VOID:
+         case SPECPDL_BACKTRACE:
+           break;
+
+         default:
+           emacs_abort ();
          }
       }
   }
@@ -3504,6 +3531,14 @@ mark_specpdl (void)
          mark_object (specpdl_symbol (pdl));
          mark_object (specpdl_old_value (pdl));
          break;
+
+       case SPECPDL_UNWIND_PTR:
+       case SPECPDL_UNWIND_INT:
+       case SPECPDL_UNWIND_VOID:
+         break;
+
+       default:
+         emacs_abort ();
        }
     }
 }
index d4341f8fa5951a6575172dbaba1b543da5134b1e..e4b255a53ac67ec2da728445d33db8d9abb11b22 100644 (file)
@@ -210,6 +210,22 @@ report_file_error (char const *string, Lisp_Object name)
   report_file_errno (string, name, errno);
 }
 
+/* Like report_file_error, but reports a file-notify-error instead.  */
+
+void
+report_file_notify_error (const char *string, Lisp_Object name)
+{
+  Lisp_Object data = CONSP (name) || NILP (name) ? name : list1 (name);
+  synchronize_system_messages_locale ();
+  char *str = strerror (errno);
+  Lisp_Object errstring
+    = code_convert_string_norecord (build_unibyte_string (str),
+                                   Vlocale_coding_system, 0);
+  Lisp_Object errdata = Fcons (errstring, data);
+
+  xsignal (Qfile_notify_error, Fcons (build_string (string), errdata));
+}
+
 void
 close_file_unwind (int fd)
 {
@@ -435,7 +451,7 @@ DEFUN ("unhandled-file-name-directory", Funhandled_file_name_directory,
 A `directly usable' directory name is one that may be used without the
 intervention of any file handler.
 If FILENAME is a directly usable file itself, return
-\(file-name-directory FILENAME).
+(file-name-directory FILENAME).
 If FILENAME refers to a file which is not accessible from a local process,
 then this should return nil.
 The `call-process' and `start-process' functions use this function to
@@ -726,7 +742,7 @@ DEFUN ("make-temp-name", Fmake_temp_name, Smake_temp_name, 1, 1, 0,
        doc: /* Generate temporary file name (string) starting with PREFIX (a string).
 The Emacs process number forms part of the result, so there is no
 danger of generating a name being used by another Emacs process
-\(so long as only a single host can access the containing directory...).
+(so long as only a single host can access the containing directory...).
 
 This function tries to choose a name that has no existing file.
 For this to work, PREFIX should be an absolute file name.
@@ -742,7 +758,7 @@ normally use `make-temp-file' instead.  */)
 DEFUN ("expand-file-name", Fexpand_file_name, Sexpand_file_name, 1, 2, 0,
        doc: /* Convert filename NAME to absolute, and canonicalize it.
 Second arg DEFAULT-DIRECTORY is directory to start with if NAME is relative
-\(does not start with slash or tilde); both the directory name and
+(does not start with slash or tilde); both the directory name and
 a directory's file name are accepted.  If DEFAULT-DIRECTORY is nil or
 missing, the current buffer's value of `default-directory' is used.
 NAME should be a string that is a valid file name for the underlying
@@ -760,8 +776,8 @@ See also the function `substitute-in-file-name'.
 
 For technical reasons, this function can return correct but
 non-intuitive results for the root directory; for instance,
-\(expand-file-name ".." "/") returns "/..".  For this reason, use
-\(directory-file-name (file-name-directory dirname)) to traverse a
+(expand-file-name ".." "/") returns "/..".  For this reason, use
+(directory-file-name (file-name-directory dirname)) to traverse a
 filesystem tree, not (expand-file-name ".."  dirname).  */)
   (Lisp_Object name, Lisp_Object default_directory)
 {
@@ -1444,7 +1460,7 @@ filesystem tree, not (expand-file-name ".."  dirname).  */)
 DEAFUN ("expand-file-name", Fexpand_file_name, Sexpand_file_name, 1, 2, 0,
   "Convert FILENAME to absolute, and canonicalize it.\n\
 Second arg DEFAULT is directory to start with if FILENAME is relative\n\
-\(does not start with slash); if DEFAULT is nil or missing,\n\
+(does not start with slash); if DEFAULT is nil or missing,\n\
 the current buffer's value of default-directory is used.\n\
 Filenames containing `.' or `..' as components are simplified;\n\
 initial `~/' expands to your home directory.\n\
@@ -2453,7 +2469,7 @@ Use `file-symlink-p' to test for such links.  */)
 DEFUN ("file-executable-p", Ffile_executable_p, Sfile_executable_p, 1, 1, 0,
        doc: /* Return t if FILENAME can be executed by you.
 For a directory, this means you can access files in that directory.
-\(It is generally better to use `file-accessible-directory-p' for that
+(It is generally better to use `file-accessible-directory-p' for that
 purpose, though.)  */)
   (Lisp_Object filename)
 {
@@ -5290,8 +5306,8 @@ DEFUN ("set-visited-file-modtime", Fset_visited_file_modtime,
 Useful if the buffer was not read from the file normally
 or if the file itself has been changed for some known benign reason.
 An argument specifies the modification time value to use
-\(instead of that of the visited file), in the form of a list
-\(HIGH LOW USEC PSEC) or an integer flag as returned by
+(instead of that of the visited file), in the form of a list
+(HIGH LOW USEC PSEC) or an integer flag as returned by
 `visited-file-modtime'.  */)
   (Lisp_Object time_flag)
 {
index 63d35b8ad6b11a067b068c4c5a301ed867ad8ca4..46eb85ff8ca7f6227ad5c4981ec1dfc68a66ae0d 100644 (file)
@@ -170,7 +170,7 @@ Cause an error if X1 or X2 is not a float.  */)
 DEFUN ("frexp", Ffrexp, Sfrexp, 1, 1, 0,
        doc: /* Get significand and exponent of a floating point number.
 Breaks the floating point number X into its binary significand SGNFCAND
-\(a floating point value between 0.5 (included) and 1.0 (excluded))
+(a floating point value between 0.5 (included) and 1.0 (excluded))
 and an integral exponent EXP for 2, such that:
 
   X = SGNFCAND * 2^EXP
@@ -454,7 +454,7 @@ With optional DIVISOR, return the nearest integer to ARG/DIVISOR.
 
 Rounding a value equidistant between two integers may choose the
 integer closer to zero, or it may prefer an even integer, depending on
-your machine.  For example, \(round 2.5\) can return 3 on some
+your machine.  For example, (round 2.5) can return 3 on some
 systems, but 2 on others.  */)
   (Lisp_Object arg, Lisp_Object divisor)
 {
@@ -491,7 +491,7 @@ fmod_float (Lisp_Object x, Lisp_Object y)
 \f
 DEFUN ("fceiling", Ffceiling, Sfceiling, 1, 1, 0,
        doc: /* Return the smallest integer no less than ARG, as a float.
-\(Round toward +inf.\)  */)
+(Round toward +inf.)  */)
   (Lisp_Object arg)
 {
   double d = extract_float (arg);
@@ -501,7 +501,7 @@ DEFUN ("fceiling", Ffceiling, Sfceiling, 1, 1, 0,
 
 DEFUN ("ffloor", Fffloor, Sffloor, 1, 1, 0,
        doc: /* Return the largest integer no greater than ARG, as a float.
-\(Round towards -inf.\)  */)
+(Round towards -inf.)  */)
   (Lisp_Object arg)
 {
   double d = extract_float (arg);
index aa917ac6ec9c88b4be83ec5e66adf134e5024f03..b31bd817c44ccc08ccfa2d20ed943ced76558be1 100644 (file)
--- a/src/fns.c
+++ b/src/fns.c
@@ -224,7 +224,7 @@ DEFUN ("compare-strings", Fcompare_strings, Scompare_strings, 6, 7, 0,
 The arguments START1, END1, START2, and END2, if non-nil, are
 positions specifying which parts of STR1 or STR2 to compare.  In
 string STR1, compare the part between START1 (inclusive) and END1
-\(exclusive).  If START1 is nil, it defaults to 0, the beginning of
+(exclusive).  If START1 is nil, it defaults to 0, the beginning of
 the string; if END1 is nil, it defaults to the length of the string.
 Likewise, in string STR2, compare the part between START2 and END2.
 Like in `substring', negative values are counted from the end.
@@ -347,8 +347,8 @@ This function obeys the conventions for collation order in your
 locale settings.  For example, punctuation and whitespace characters
 might be considered less significant for sorting:
 
-\(sort '\("11" "12" "1 1" "1 2" "1.1" "1.2") \\='string-collate-lessp)
-  => \("11" "1 1" "1.1" "12" "1 2" "1.2")
+(sort '("11" "12" "1 1" "1 2" "1.1" "1.2") \\='string-collate-lessp)
+  => ("11" "1 1" "1.1" "12" "1 2" "1.2")
 
 The optional argument LOCALE, a string, overrides the setting of your
 current locale identifier for collation.  The value is system
@@ -393,7 +393,7 @@ settings.  For example, characters with different coding points but
 the same meaning might be considered as equal, like different grave
 accent Unicode characters:
 
-\(string-collate-equalp \(string ?\\uFF40) \(string ?\\u1FEF))
+(string-collate-equalp (string ?\\uFF40) (string ?\\u1FEF))
   => t
 
 The optional argument LOCALE, a string, overrides the setting of your
@@ -1026,7 +1026,7 @@ to a multibyte character.  In this case, the returned string is a
 newly created string with no text properties.  If STRING is multibyte
 or entirely ASCII, it is returned unchanged.  In particular, when
 STRING is unibyte and entirely ASCII, the returned string is unibyte.
-\(When the characters are all ASCII, Emacs primitives will treat the
+(When the characters are all ASCII, Emacs primitives will treat the
 string the same way whether it is unibyte or multibyte.)  */)
   (Lisp_Object string)
 {
@@ -1225,14 +1225,14 @@ validate_subarray (Lisp_Object array, Lisp_Object from, Lisp_Object to,
 DEFUN ("substring", Fsubstring, Ssubstring, 1, 3, 0,
        doc: /* Return a new string whose contents are a substring of STRING.
 The returned string consists of the characters between index FROM
-\(inclusive) and index TO (exclusive) of STRING.  FROM and TO are
+(inclusive) and index TO (exclusive) of STRING.  FROM and TO are
 zero-indexed: 0 means the first character of STRING.  Negative values
 are counted from the end of STRING.  If TO is nil, the substring runs
 to the end of STRING.
 
 The STRING argument may also be a vector.  In that case, the return
 value is a new vector that contains the elements between index FROM
-\(inclusive) and index TO (exclusive) of that vector argument.
+(inclusive) and index TO (exclusive) of that vector argument.
 
 With one argument, just copy STRING (with properties, if any).  */)
   (Lisp_Object string, Lisp_Object from, Lisp_Object to)
@@ -2051,7 +2051,7 @@ merge (Lisp_Object org_l1, Lisp_Object org_l2, Lisp_Object pred)
 DEFUN ("plist-get", Fplist_get, Splist_get, 2, 2, 0,
        doc: /* Extract a value from a property list.
 PLIST is a property list, which is a list of the form
-\(PROP1 VALUE1 PROP2 VALUE2...).  This function returns the value
+(PROP1 VALUE1 PROP2 VALUE2...).  This function returns the value
 corresponding to the given PROP, or nil if PROP is not one of the
 properties on the list.  This function never signals an error.  */)
   (Lisp_Object plist, Lisp_Object prop)
@@ -2086,7 +2086,7 @@ This is the last value stored with `(put SYMBOL PROPNAME VALUE)'.  */)
 DEFUN ("plist-put", Fplist_put, Splist_put, 3, 3, 0,
        doc: /* Change value in PLIST of PROP to VAL.
 PLIST is a property list, which is a list of the form
-\(PROP1 VALUE1 PROP2 VALUE2 ...).  PROP is a symbol and VAL is any object.
+(PROP1 VALUE1 PROP2 VALUE2 ...).  PROP is a symbol and VAL is any object.
 If PROP is already a property on the list, its value is set to VAL,
 otherwise the new PROP VAL pair is added.  The new plist is returned;
 use `(setq x (plist-put x prop val))' to be sure to use the new value.
@@ -2130,7 +2130,7 @@ It can be retrieved with `(get SYMBOL PROPNAME)'.  */)
 DEFUN ("lax-plist-get", Flax_plist_get, Slax_plist_get, 2, 2, 0,
        doc: /* Extract a value from a property list, comparing with `equal'.
 PLIST is a property list, which is a list of the form
-\(PROP1 VALUE1 PROP2 VALUE2...).  This function returns the value
+(PROP1 VALUE1 PROP2 VALUE2...).  This function returns the value
 corresponding to the given PROP, or nil if PROP is not
 one of the properties on the list.  */)
   (Lisp_Object plist, Lisp_Object prop)
@@ -2155,7 +2155,7 @@ one of the properties on the list.  */)
 DEFUN ("lax-plist-put", Flax_plist_put, Slax_plist_put, 3, 3, 0,
        doc: /* Change value in PLIST of PROP to VAL, comparing with `equal'.
 PLIST is a property list, which is a list of the form
-\(PROP1 VALUE1 PROP2 VALUE2 ...).  PROP and VAL are any objects.
+(PROP1 VALUE1 PROP2 VALUE2 ...).  PROP and VAL are any objects.
 If PROP is already a property on the list, its value is set to VAL,
 otherwise the new PROP VAL pair is added.  The new plist is returned;
 use `(setq x (lax-plist-put x prop val))' to be sure to use the new value.
@@ -2867,7 +2867,7 @@ The normal messages at start and end of loading FILENAME are suppressed.  */)
 DEFUN ("plist-member", Fplist_member, Splist_member, 2, 2, 0,
        doc: /* Return non-nil if PLIST has the property PROP.
 PLIST is a property list, which is a list of the form
-\(PROP1 VALUE1 PROP2 VALUE2 ...\).  PROP is a symbol.
+(PROP1 VALUE1 PROP2 VALUE2 ...).  PROP is a symbol.
 Unlike `plist-get', this allows you to distinguish between a missing
 property and a property with the value nil.
 The value is actually the tail of PLIST whose car is PROP.  */)
index 50b966ec83ee5d692bd1dd5f0b3cb9c1eedb3278..ce144e78a08620636f6f4d272202f34f6068e7d9 100644 (file)
@@ -4068,7 +4068,7 @@ DEFUN ("font-face-attributes", Ffont_face_attributes, Sfont_face_attributes, 1,
 FONT is a font name, a font-spec, a font-entity, or a font-object.
 The return value is a list of the form
 
-\(:family FAMILY :height HEIGHT :weight WEIGHT :slant SLANT :width WIDTH)
+(:family FAMILY :height HEIGHT :weight WEIGHT :slant SLANT :width WIDTH)
 
 where FAMILY, HEIGHT, WEIGHT, SLANT, and WIDTH are face attribute values
 compatible with `set-face-attribute'.  Some of these key-attribute pairs
@@ -4472,6 +4472,106 @@ where
   return val;
 }
 
+/* Return a description of the font at POSITION in the current buffer.
+   If the 2nd optional arg CH is non-nil, it is a character to check
+   the font instead of the character at POSITION.
+
+   For a graphical display, return a cons (FONT-OBJECT . GLYPH-CODE).
+   FONT-OBJECT is the font for the character at POSITION in the current
+   buffer.  This is computed from all the text properties and overlays
+   that apply to POSITION.  POSITION may be nil, in which case,
+   FONT-SPEC is the font for displaying the character CH with the
+   default face.  GLYPH-CODE is the glyph code in the font to use for
+   the character.
+
+   For a text terminal, return a nonnegative integer glyph code for
+   the character, or a negative integer if the character is not
+   displayable.  Terminal glyph codes are system-dependent integers
+   that represent displayable characters: for example, on a Linux x86
+   console they represent VGA code points.
+
+   It returns nil in the following cases:
+
+   (1) The window system doesn't have a font for the character (thus
+   it is displayed by an empty box).
+
+   (2) The character code is invalid.
+
+   (3) If POSITION is not nil, and the current buffer is not displayed
+   in any window.
+
+   (4) For a text terminal, the terminal does not report glyph codes.
+
+   In addition, the returned font name may not take into account of
+   such redisplay engine hooks as what used in jit-lock-mode if
+   POSITION is currently not visible.  */
+
+
+DEFUN ("internal-char-font", Finternal_char_font, Sinternal_char_font, 1, 2, 0,
+       doc: /* For internal use only.  */)
+  (Lisp_Object position, Lisp_Object ch)
+{
+  ptrdiff_t pos, pos_byte, dummy;
+  int face_id;
+  int c;
+  struct frame *f;
+
+  if (NILP (position))
+    {
+      CHECK_CHARACTER (ch);
+      c = XINT (ch);
+      f = XFRAME (selected_frame);
+      face_id = lookup_basic_face (f, DEFAULT_FACE_ID);
+      pos = -1;
+    }
+  else
+    {
+      Lisp_Object window;
+      struct window *w;
+
+      CHECK_NUMBER_COERCE_MARKER (position);
+      if (! (BEGV <= XINT (position) && XINT (position) < ZV))
+       args_out_of_range_3 (position, make_number (BEGV), make_number (ZV));
+      pos = XINT (position);
+      pos_byte = CHAR_TO_BYTE (pos);
+      if (NILP (ch))
+       c = FETCH_CHAR (pos_byte);
+      else
+       {
+         CHECK_NATNUM (ch);
+         c = XINT (ch);
+       }
+      window = Fget_buffer_window (Fcurrent_buffer (), Qnil);
+      if (NILP (window))
+       return Qnil;
+      w = XWINDOW (window);
+      f = XFRAME (w->frame);
+      face_id = face_at_buffer_position (w, pos, &dummy,
+                                        pos + 100, false, -1);
+    }
+  if (! CHAR_VALID_P (c))
+    return Qnil;
+
+  if (! FRAME_WINDOW_P (f))
+    return terminal_glyph_code (FRAME_TERMINAL (f), c);
+
+  /* We need the basic faces to be valid below, so recompute them if
+     some code just happened to clear the face cache.  */
+  if (FRAME_FACE_CACHE (f)->used == 0)
+    recompute_basic_faces (f);
+
+  face_id = FACE_FOR_CHAR (f, FACE_FROM_ID (f, face_id), c, pos, Qnil);
+  struct face *face = FACE_FROM_ID (f, face_id);
+  if (! face->font)
+    return Qnil;
+  unsigned code = face->font->driver->encode_char (face->font, c);
+  if (code == FONT_INVALID_CODE)
+    return Qnil;
+  Lisp_Object font_object;
+  XSETFONT (font_object, face->font);
+  return Fcons (font_object, INTEGER_TO_CONS (code));
+}
+
 #if 0
 
 DEFUN ("font-drive-otf", Ffont_drive_otf, Sfont_drive_otf, 6, 6, 0,
@@ -4649,15 +4749,15 @@ ASCENT, DESCENT, SPACE-WIDTH, AVERAGE-WIDTH are metrics of the font in
 pixels.
 
 CAPABILITY is a list whose first element is a symbol representing the
-font format \(x, opentype, truetype, type1, pcf, or bdf) and the
+font format (x, opentype, truetype, type1, pcf, or bdf) and the
 remaining elements describe the details of the font capability.
 
 If the font is OpenType font, the form of the list is
-  \(opentype GSUB GPOS)
+  (opentype GSUB GPOS)
 where GSUB shows which "GSUB" features the font supports, and GPOS
 shows which "GPOS" features the font supports.  Both GSUB and GPOS are
 lists of the format:
-  \((SCRIPT (LANGSYS FEATURE ...) ...) ...)
+  ((SCRIPT (LANGSYS FEATURE ...) ...) ...)
 
 If the font is not OpenType font, currently the length of the form is
 one.
@@ -4943,11 +5043,11 @@ where
     as follows:
 
       If the font is OpenType font, the form of the list is
-        \(opentype GSUB GPOS)
+        (opentype GSUB GPOS)
       where GSUB shows which "GSUB" features the font supports, and GPOS
       shows which "GPOS" features the font supports.  Both GSUB and GPOS are
       lists of the form:
-       \((SCRIPT (LANGSYS FEATURE ...) ...) ...)
+       ((SCRIPT (LANGSYS FEATURE ...) ...) ...)
 
       where
         SCRIPT is a symbol representing OpenType script tag.
@@ -5229,6 +5329,7 @@ syms_of_font (void)
   defsubr (&Sclear_font_cache);
   defsubr (&Sfont_shape_gstring);
   defsubr (&Sfont_variation_glyphs);
+  defsubr (&Sinternal_char_font);
 #if 0
   defsubr (&Sfont_drive_otf);
   defsubr (&Sfont_otf_alternates);
@@ -5258,7 +5359,7 @@ where ENCODING is a charset or a char-table,
 and REPERTORY is a charset, a char-table, or nil.
 
 If ENCODING and REPERTORY are the same, the element can have the form
-\(REGEXP . ENCODING).
+(REGEXP . ENCODING).
 
 ENCODING is for converting a character to a glyph code of the font.
 If ENCODING is a charset, encoding a character by the charset gives
index 50fcc64854803daa06168aac67e86b689be92d11..e735989bcbfce571ce89552677ba7bae3e6d0e8e 100644 (file)
@@ -1787,100 +1787,6 @@ update_auto_fontset_alist (Lisp_Object font_object, Lisp_Object fontset)
 }
 
 
-/* Return a cons (FONT-OBJECT . GLYPH-CODE).
-   FONT-OBJECT is the font for the character at POSITION in the current
-   buffer.  This is computed from all the text properties and overlays
-   that apply to POSITION.  POSITION may be nil, in which case,
-   FONT-SPEC is the font for displaying the character CH with the
-   default face.
-
-   GLYPH-CODE is the glyph code in the font to use for the character.
-
-   If the 2nd optional arg CH is non-nil, it is a character to check
-   the font instead of the character at POSITION.
-
-   It returns nil in the following cases:
-
-   (1) The window system doesn't have a font for the character (thus
-   it is displayed by an empty box).
-
-   (2) The character code is invalid.
-
-   (3) If POSITION is not nil, and the current buffer is not displayed
-   in any window.
-
-   In addition, the returned font name may not take into account of
-   such redisplay engine hooks as what used in jit-lock-mode if
-   POSITION is currently not visible.  */
-
-
-DEFUN ("internal-char-font", Finternal_char_font, Sinternal_char_font, 1, 2, 0,
-       doc: /* For internal use only.  */)
-  (Lisp_Object position, Lisp_Object ch)
-{
-  ptrdiff_t pos, pos_byte, dummy;
-  int face_id;
-  int c;
-  struct frame *f;
-  struct face *face;
-
-  if (NILP (position))
-    {
-      CHECK_CHARACTER (ch);
-      c = XINT (ch);
-      f = XFRAME (selected_frame);
-      face_id = lookup_basic_face (f, DEFAULT_FACE_ID);
-      pos = -1;
-    }
-  else
-    {
-      Lisp_Object window;
-      struct window *w;
-
-      CHECK_NUMBER_COERCE_MARKER (position);
-      if (! (BEGV <= XINT (position) && XINT (position) < ZV))
-       args_out_of_range_3 (position, make_number (BEGV), make_number (ZV));
-      pos = XINT (position);
-      pos_byte = CHAR_TO_BYTE (pos);
-      if (NILP (ch))
-       c = FETCH_CHAR (pos_byte);
-      else
-       {
-         CHECK_NATNUM (ch);
-         c = XINT (ch);
-       }
-      window = Fget_buffer_window (Fcurrent_buffer (), Qnil);
-      if (NILP (window))
-       return Qnil;
-      w = XWINDOW (window);
-      f = XFRAME (w->frame);
-      face_id = face_at_buffer_position (w, pos, &dummy,
-                                        pos + 100, false, -1);
-    }
-  if (! CHAR_VALID_P (c))
-    return Qnil;
-  if (!FRAME_WINDOW_P (f))
-    return Qnil;
-  /* We need the basic faces to be valid below, so recompute them if
-     some code just happened to clear the face cache.  */
-  if (FRAME_FACE_CACHE (f)->used == 0)
-    recompute_basic_faces (f);
-  face_id = FACE_FOR_CHAR (f, FACE_FROM_ID (f, face_id), c, pos, Qnil);
-  face = FACE_FROM_ID (f, face_id);
-  if (face->font)
-    {
-      unsigned code = face->font->driver->encode_char (face->font, c);
-      Lisp_Object font_object;
-
-      if (code == FONT_INVALID_CODE)
-       return Qnil;
-      XSETFONT (font_object, face->font);
-      return Fcons (font_object, INTEGER_TO_CONS (code));
-    }
-  return Qnil;
-}
-
-
 DEFUN ("fontset-info", Ffontset_info, Sfontset_info, 1, 2, 0,
        doc: /* Return information about a fontset FONTSET on frame FRAME.
 
@@ -2247,7 +2153,6 @@ at the vertical center of lines.  */);
   defsubr (&Squery_fontset);
   defsubr (&Snew_fontset);
   defsubr (&Sset_fontset_font);
-  defsubr (&Sinternal_char_font);
   defsubr (&Sfontset_info);
   defsubr (&Sfontset_font);
   defsubr (&Sfontset_list);
index 6debcb8e7bc68e9ef1fa1b20a80c79720718805d..121c55fdb20f105a4725a86039c0914b82639597 100644 (file)
@@ -634,7 +634,6 @@ make_frame (bool mini_p)
   f->garbaged = true;
   f->can_x_set_window_size = false;
   f->after_make_frame = false;
-  f->tool_bar_redisplayed_once = false;
   f->column_width = 1;  /* !FRAME_WINDOW_P value.  */
   f->line_height = 1;  /* !FRAME_WINDOW_P value.  */
 #ifdef HAVE_WINDOW_SYSTEM
@@ -3540,7 +3539,8 @@ x_set_screen_gamma (struct frame *f, Lisp_Object new_value, Lisp_Object old_valu
            (f, bgcolor, Qnil);
     }
 
-  Fclear_face_cache (Qnil);
+  clear_face_cache (true);
+  windows_or_buffers_changed = 70;
 }
 
 
@@ -3634,7 +3634,6 @@ x_set_font (struct frame *f, Lisp_Object arg, Lisp_Object oldval)
 #endif
   /* Recalculate toolbar height.  */
   f->n_tool_bar_rows = 0;
-  f->tool_bar_redisplayed_once = false;
 
   /* Ensure we redraw it.  */
   clear_current_matrices (f);
@@ -5177,7 +5176,7 @@ keep it unchanged if this option is either t or a list containing
 `vertical-scroll-bars'.
 
 The default value is \\='(tool-bar-lines) on Lucid, Motif and Windows
-\(which means that adding/removing a tool bar does not change the frame
+(which means that adding/removing a tool bar does not change the frame
 height), nil on all other window systems including GTK+ (which means
 that changing any of the parameters listed above may change the size of
 the frame), and t otherwise (which means the frame size never changes
index 8ee37dfd695e808417eebe8e96f11b8563849ce4..af0dadb3d99db2a7f5315b0f1a74ec6793c2ecb5 100644 (file)
@@ -335,9 +335,8 @@ struct frame
   /* Set to true after this frame was made by `make-frame'.  */
   bool_bf after_make_frame : 1;
 
-  /* True means tool bar has been redisplayed at least once in current
-     session.  */
-  bool_bf tool_bar_redisplayed_once : 1;
+  /* Non-zero if this frame's faces need to be recomputed.  */
+  bool_bf face_change : 1;
 
   /* Bitfield area ends here.  */
 
@@ -618,7 +617,7 @@ fset_desired_tool_bar_string (struct frame *f, Lisp_Object val)
 }
 #endif /* HAVE_WINDOW_SYSTEM && !USE_GTK && !HAVE_NS */
 
-#define NUMVAL(X) ((INTEGERP (X) || FLOATP (X)) ? XFLOATINT (X) : -1)
+#define NUMVAL(X) (NUMBERP (X) ? XFLOATINT (X) : -1)
 
 INLINE double
 default_pixels_per_inch_x (void)
index 5c6ebe65d870971c67338548dc8fbf9fb7f79f1d..8b6b0a0cd2dc41bff6f26fe4296928d5873dc487 100644 (file)
@@ -29,6 +29,7 @@ along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.  */
 #include "process.h"
 
 \f
+/* This is a list, elements are triples (DESCRIPTOR FILE FLAGS CALLBACK)  */
 static Lisp_Object watch_list;
 
 /* This is the callback function for arriving signals from
@@ -41,7 +42,7 @@ dir_monitor_callback (GFileMonitor *monitor,
                      GFileMonitorEvent event_type,
                      gpointer user_data)
 {
-  Lisp_Object symbol, monitor_object, watch_object;
+  Lisp_Object symbol, monitor_object, watch_object, flags;
   char *name = g_file_get_parse_name (file);
   char *oname = other_file ? g_file_get_parse_name (other_file) : NULL;
 
@@ -83,20 +84,36 @@ dir_monitor_callback (GFileMonitor *monitor,
 
   if (CONSP (watch_object))
     {
-      /* Construct an event.  */
       struct input_event event;
       Lisp_Object otail = oname ? list1 (build_string (oname)) : Qnil;
-      EVENT_INIT (event);
-      event.kind = FILE_NOTIFY_EVENT;
-      event.frame_or_window = Qnil;
-      event.arg = list2 (Fcons (monitor_object,
-                               Fcons (symbol,
-                                      Fcons (build_string (name),
-                                             otail))),
-                        XCDR (watch_object));
-
-      /* Store it into the input event queue.  */
-      kbd_buffer_store_event (&event);
+
+      /* Check, whether event_type is expected.  */
+      flags = XCAR (XCDR (XCDR (watch_object)));
+      if ((!NILP (Fmember (Qchange, flags)) &&
+          !NILP (Fmember (symbol, list5 (Qchanged, Qchanges_done_hint,
+                                         Qdeleted, Qcreated, Qmoved)))) ||
+         (!NILP (Fmember (Qattribute_change, flags)) &&
+          ((EQ (symbol, Qattribute_changed)))))
+       {
+         /* Construct an event.  */
+         EVENT_INIT (event);
+         event.kind = FILE_NOTIFY_EVENT;
+         event.frame_or_window = Qnil;
+         event.arg = list2 (Fcons (monitor_object,
+                                   Fcons (symbol,
+                                          Fcons (build_string (name),
+                                                 otail))),
+                            XCAR (XCDR (XCDR (XCDR (watch_object)))));
+
+         /* Store it into the input event queue.  */
+         kbd_buffer_store_event (&event);
+         // XD_DEBUG_MESSAGE ("%s", XD_OBJECT_TO_STRING (event.arg));
+       }
+
+      /* Cancel monitor if file or directory is deleted.  */
+      if (!NILP (Fmember (symbol, list2 (Qdeleted, Qmoved))) &&
+         !g_file_monitor_is_cancelled (monitor))
+       g_file_monitor_cancel (monitor);
     }
 
   /* Cleanup.  */
@@ -119,9 +136,13 @@ watched for some reason, this function signals a `file-notify-error' error.
 FLAGS is a list of conditions to set what will be watched for.  It can
 include the following symbols:
 
-  `watch-mounts' -- watch for mount events
-  `send-moved'   -- pair `deleted' and `created' events caused by file
-                    renames and send a single `renamed' event instead
+  `change'           -- watch for file changes
+  `attribute-change' -- watch for file attributes changes, like
+                        permissions or modification time
+  `watch-mounts'     -- watch for mount events
+  `send-moved'       -- pair `deleted' and `created' events caused by
+                        file renames and send a single `renamed' event
+                        instead
 
 When any event happens, Emacs will call the CALLBACK function passing
 it a single argument EVENT, which is of the form
@@ -194,11 +215,15 @@ will be reported only in case of the `moved' event.  */)
                file);
     }
 
+  /* The default rate limit is 800 msec.  We adapt this.  */
+  g_file_monitor_set_rate_limit (monitor, 100);
+
+  /* Subscribe to the "changed" signal.  */
   g_signal_connect (monitor, "changed",
                    (GCallback) dir_monitor_callback, NULL);
 
   /* Store watch object in watch list.  */
-  watch_object = Fcons (watch_descriptor, callback);
+  watch_object = list4 (watch_descriptor, file, flags, callback);
   watch_list = Fcons (watch_object, watch_list);
 
   return watch_descriptor;
@@ -218,11 +243,12 @@ WATCH-DESCRIPTOR should be an object returned by `gfile-add-watch'.  */)
 
   eassert (INTEGERP (watch_descriptor));
   GFileMonitor *monitor = XINTPTR (watch_descriptor);
-  if (!g_file_monitor_cancel (monitor))
-    xsignal2 (Qfile_notify_error, build_string ("Could not rm watch"),
-             watch_descriptor);
+  if (!g_file_monitor_is_cancelled (monitor) &&
+      !g_file_monitor_cancel (monitor))
+      xsignal2 (Qfile_notify_error, build_string ("Could not rm watch"),
+               watch_descriptor);
 
-  /* Remove watch descriptor from watch list. */
+  /* Remove watch descriptor from watch list.  */
   watch_list = Fdelq (watch_object, watch_list);
 
   /* Cleanup.  */
@@ -231,6 +257,27 @@ WATCH-DESCRIPTOR should be an object returned by `gfile-add-watch'.  */)
   return Qt;
 }
 
+DEFUN ("gfile-valid-p", Fgfile_valid_p, Sgfile_valid_p, 1, 1, 0,
+       doc: /* "Check a watch specified by its WATCH-DESCRIPTOR.
+
+WATCH-DESCRIPTOR should be an object returned by `gfile-add-watch'.
+
+A watch can become invalid if the file or directory it watches is
+deleted, or if the watcher thread exits abnormally for any other
+reason.  Removing the watch by calling `gfile-rm-watch' also makes it
+invalid.  */)
+     (Lisp_Object watch_descriptor)
+{
+  Lisp_Object watch_object = Fassoc (watch_descriptor, watch_list);
+  if (NILP (watch_object))
+    return Qnil;
+  else
+    {
+      GFileMonitor *monitor = XINTPTR (watch_descriptor);
+      return g_file_monitor_is_cancelled (monitor) ? Qnil : Qt;
+    }
+}
+
 \f
 void
 globals_of_gfilenotify (void)
@@ -246,8 +293,11 @@ syms_of_gfilenotify (void)
 {
   defsubr (&Sgfile_add_watch);
   defsubr (&Sgfile_rm_watch);
+  defsubr (&Sgfile_valid_p);
 
   /* Filter objects.  */
+  DEFSYM (Qchange, "change");
+  DEFSYM (Qattribute_change, "attribute-change");
   DEFSYM (Qwatch_mounts, "watch-mounts"); /* G_FILE_MONITOR_WATCH_MOUNTS  */
   DEFSYM (Qsend_moved, "send-moved");  /* G_FILE_MONITOR_SEND_MOVED  */
 
index 85cf801f6a94c2dc738da77b38f59d36e8c6e49a..b586c5341d72bd93a659ad0a456c13947956fc41 100644 (file)
@@ -797,7 +797,7 @@ parse_image_spec (Lisp_Object spec, struct image_keyword *keywords,
          return 0;
 
        case IMAGE_NUMBER_VALUE:
-         if (!INTEGERP (value) && !FLOATP (value))
+         if (! NUMBERP (value))
            return 0;
          break;
 
@@ -7499,6 +7499,12 @@ gif_image_p (Lisp_Object object)
 #  define GIFLIB_MAJOR 4
 # endif
 
+/* GifErrorString is declared to return char const * when GIFLIB_MAJOR
+   and GIFLIB_MINOR indicate 5.1 or later.  Do not bother using it in
+   earlier releases, where either it returns char * or GIFLIB_MINOR
+   may be incorrect.  */
+# define HAVE_GIFERRORSTRING (5 < GIFLIB_MAJOR + (1 <= GIFLIB_MINOR))
+
 # ifdef WINDOWSNT
 
 /* GIF library details.  */
@@ -7514,7 +7520,9 @@ DEF_DLL_FN (GifFileType *, DGifOpenFileName, (const char *));
 #  else
 DEF_DLL_FN (GifFileType *, DGifOpen, (void *, InputFunc, int *));
 DEF_DLL_FN (GifFileType *, DGifOpenFileName, (const char *, int *));
-DEF_DLL_FN (char *, GifErrorString, (int));
+#  endif
+#  if HAVE_GIFERRORSTRING
+DEF_DLL_FN (char const *, GifErrorString, (int));
 #  endif
 
 static bool
@@ -7529,7 +7537,7 @@ init_gif_functions (void)
   LOAD_DLL_FN (library, DGifSlurp);
   LOAD_DLL_FN (library, DGifOpen);
   LOAD_DLL_FN (library, DGifOpenFileName);
-#  if GIFLIB_MAJOR >= 5
+#  if HAVE_GIFERRORSTRING
   LOAD_DLL_FN (library, GifErrorString);
 #  endif
   return 1;
@@ -7641,20 +7649,19 @@ gif_load (struct frame *f, struct image *img)
       /* Open the GIF file.  */
 #if GIFLIB_MAJOR < 5
       gif = DGifOpenFileName (SSDATA (encoded_file));
-      if (gif == NULL)
-       {
-         image_error ("Cannot open `%s'", file);
-         return 0;
-       }
 #else
       gif = DGifOpenFileName (SSDATA (encoded_file), &gif_err);
+#endif
       if (gif == NULL)
        {
+#if HAVE_GIFERRORSTRING
          image_error ("Cannot open `%s': %s",
                       file, build_string (GifErrorString (gif_err)));
+#else
+         image_error ("Cannot open `%s'", file);
+#endif
          return 0;
        }
-#endif
     }
   else
     {
@@ -7672,20 +7679,19 @@ gif_load (struct frame *f, struct image *img)
 
 #if GIFLIB_MAJOR < 5
       gif = DGifOpen (&memsrc, gif_read_from_memory);
-      if (!gif)
-       {
-         image_error ("Cannot open memory source `%s'", img->spec);
-         return 0;
-       }
 #else
       gif = DGifOpen (&memsrc, gif_read_from_memory, &gif_err);
+#endif
       if (!gif)
        {
+#if HAVE_GIFERRORSTRING
          image_error ("Cannot open memory source `%s': %s",
                       img->spec, build_string (GifErrorString (gif_err)));
+#else
+         image_error ("Cannot open memory source `%s'", img->spec);
+#endif
          return 0;
        }
-#endif
     }
 
   /* Before reading entire contents, check the declared image size. */
@@ -7980,8 +7986,8 @@ gif_load (struct frame *f, struct image *img)
 
   if (gif_close (gif, &gif_err) == GIF_ERROR)
     {
-#if 5 <= GIFLIB_MAJOR
-      char *error_text = GifErrorString (gif_err);
+#if HAVE_GIFERRORSTRING
+      char const *error_text = GifErrorString (gif_err);
 
       if (error_text)
        image_error ("Error closing `%s': %s",
index 7e8f0a573a30c5c76de54d01ec69cc599aa9079f..584f2179bc5ce1c0fcb78aa2997858b163606168 100644 (file)
@@ -485,7 +485,9 @@ check_display_width (ptrdiff_t pos, ptrdiff_t col, ptrdiff_t *endpos)
         : MOST_POSITIVE_FIXNUM);
 
       if ((prop = Fplist_get (plist, QCwidth),
-          RANGED_INTEGERP (0, prop, INT_MAX)))
+          RANGED_INTEGERP (0, prop, INT_MAX))
+         || (prop = Fplist_get (plist, QCrelative_width),
+             RANGED_INTEGERP (0, prop, INT_MAX)))
        width = XINT (prop);
       else if (FLOATP (prop) && 0 <= XFLOAT_DATA (prop)
               && XFLOAT_DATA (prop) <= INT_MAX)
@@ -504,6 +506,18 @@ check_display_width (ptrdiff_t pos, ptrdiff_t col, ptrdiff_t *endpos)
            *endpos = OVERLAY_POSITION (OVERLAY_END (overlay));
          else
            get_property_and_range (pos, Qdisplay, &val, &start, endpos, Qnil);
+
+         /* For :relative-width, we need to multiply by the column
+            width of the character at POS, if it is greater than 1.  */
+         if (!NILP (Fplist_get (plist, QCrelative_width))
+             && !NILP (BVAR (current_buffer, enable_multibyte_characters)))
+           {
+             int b, wd;
+             unsigned char *p = BYTE_POS_ADDR (CHAR_TO_BYTE (pos));
+
+             MULTIBYTE_BYTES_WIDTH (p, buffer_display_table (), b, wd);
+             width *= wd;
+           }
          return width;
        }
     }
@@ -2195,7 +2209,27 @@ whether or not it is currently displayed in some window.  */)
         was originally hscrolled, the goal column is interpreted as
         an addition to the hscroll amount.  */
       if (lcols_given)
-       move_it_in_display_line (&it, ZV, first_x + to_x, MOVE_TO_X);
+       {
+         move_it_in_display_line (&it, ZV, first_x + to_x, MOVE_TO_X);
+         /* If we find ourselves in the middle of an overlay string
+            which includes a newline after current string position,
+            we need to move by lines until we get out of the string,
+            and then reposition point at the requested X coordinate;
+            if we don't, the cursor will be placed just after the
+            string, which might not be the requested column.  */
+         if (nlines > 0 && it.area == TEXT_AREA)
+           {
+             while (it.method == GET_FROM_STRING
+                    && !it.string_from_display_prop_p
+                    && memchr (SSDATA (it.string) + IT_STRING_BYTEPOS (it),
+                               '\n',
+                               SBYTES (it.string) - IT_STRING_BYTEPOS (it)))
+               {
+                 move_it_by_lines (&it, 1);
+                 move_it_in_display_line (&it, ZV, first_x + to_x, MOVE_TO_X);
+               }
+           }
+       }
 
       SET_PT_BOTH (IT_CHARPOS (it), IT_BYTEPOS (it));
       bidi_unshelve_cache (itdata, 0);
index eddad73e8f748d9dc4f50074868630ffcf64aa9e..be8c1dd7553f024af559d5ef2c781564ed92f07d 100644 (file)
@@ -29,6 +29,7 @@ along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.  */
 #include "frame.h" /* Required for termhooks.h.  */
 #include "termhooks.h"
 
+#include <errno.h>
 #include <sys/inotify.h>
 #include <sys/ioctl.h>
 
@@ -129,17 +130,14 @@ inotify_callback (int fd, void *_)
 
   to_read = 0;
   if (ioctl (fd, FIONREAD, &to_read) == -1)
-    xsignal1
-      (Qfile_notify_error,
-       build_string ("Error while trying to retrieve file system events"));
+    report_file_notify_error ("Error while retrieving file system events",
+                             Qnil);
   buffer = xmalloc (to_read);
   n = read (fd, buffer, to_read);
   if (n < 0)
     {
       xfree (buffer);
-      xsignal1
-      (Qfile_notify_error,
-       build_string ("Error while trying to read file system events"));
+      report_file_notify_error ("Error while reading file system events", Qnil);
     }
 
   EVENT_INIT (event);
@@ -215,7 +213,10 @@ symbol_to_inotifymask (Lisp_Object symb)
   else if (EQ (symb, Qt) || EQ (symb, Qall_events))
     return IN_ALL_EVENTS;
   else
-      xsignal2 (Qfile_notify_error, build_string ("Unknown aspect"), symb);
+    {
+      errno = EINVAL;
+      report_file_notify_error ("Unknown aspect", symb);
+    }
 }
 
 static uint32_t
@@ -307,9 +308,7 @@ is managed internally and there is no corresponding inotify_init.  Use
     {
       inotifyfd = inotify_init1 (IN_NONBLOCK|IN_CLOEXEC);
       if (inotifyfd < 0)
-       xsignal1
-         (Qfile_notify_error,
-          build_string ("File watching feature (inotify) is not available"));
+       report_file_notify_error ("File watching is not available", Qnil);
       watch_list = Qnil;
       add_read_fd (inotifyfd, &inotify_callback, NULL);
     }
@@ -318,17 +317,16 @@ is managed internally and there is no corresponding inotify_init.  Use
   encoded_file_name = ENCODE_FILE (file_name);
   watchdesc = inotify_add_watch (inotifyfd, SSDATA (encoded_file_name), mask);
   if (watchdesc == -1)
-    xsignal2 (Qfile_notify_error,
-             build_string ("Could not add watch for file"), file_name);
+    report_file_notify_error ("Could not add watch for file", file_name);
 
   watch_descriptor = make_watch_descriptor (watchdesc);
 
-  /* Delete existing watch object. */
+  /* Delete existing watch object.  */
   watch_object = Fassoc (watch_descriptor, watch_list);
   if (!NILP (watch_object))
       watch_list = Fdelete (watch_object, watch_list);
 
-  /* Store watch object in watch list. */
+  /* Store watch object in watch list.  */
   watch_object = Fcons (watch_descriptor, callback);
   watch_list = Fcons (watch_object, watch_list);
 
@@ -348,15 +346,14 @@ See inotify_rm_watch(2) for more information.
   int wd = XINT (watch_descriptor);
 
   if (inotify_rm_watch (inotifyfd, wd) == -1)
-    xsignal2 (Qfile_notify_error,
-             build_string ("Could not rm watch"), watch_descriptor);
+    report_file_notify_error ("Could not rm watch", watch_descriptor);
 
-  /* Remove watch descriptor from watch list. */
+  /* Remove watch descriptor from watch list.  */
   watch_object = Fassoc (watch_descriptor, watch_list);
   if (!NILP (watch_object))
     watch_list = Fdelete (watch_object, watch_list);
 
-  /* Cleanup if no more files are watched. */
+  /* Cleanup if no more files are watched.  */
   if (NILP (watch_list))
     {
       emacs_close (inotifyfd);
@@ -367,6 +364,21 @@ See inotify_rm_watch(2) for more information.
   return Qt;
 }
 
+DEFUN ("inotify-valid-p", Finotify_valid_p, Sinotify_valid_p, 1, 1, 0,
+       doc: /* "Check a watch specified by its WATCH-DESCRIPTOR.
+
+WATCH-DESCRIPTOR should be an object returned by `inotify-add-watch'.
+
+A watch can become invalid if the file or directory it watches is
+deleted, or if the watcher thread exits abnormally for any other
+reason.  Removing the watch by calling `inotify-rm-watch' also makes
+it invalid.  */)
+     (Lisp_Object watch_descriptor)
+{
+  Lisp_Object watch_object = Fassoc (watch_descriptor, watch_list);
+  return NILP (watch_object) ? Qnil : Qt;
+}
+
 void
 syms_of_inotify (void)
 {
@@ -401,6 +413,7 @@ syms_of_inotify (void)
 
   defsubr (&Sinotify_add_watch);
   defsubr (&Sinotify_rm_watch);
+  defsubr (&Sinotify_valid_p);
 
   staticpro (&watch_list);
 
index ccd340557dda47dd87f819c1236cbd440ccd0173..966af69c97b9d75c18147e392425be87bb1c4e5c 100644 (file)
@@ -11332,7 +11332,7 @@ See Info node `(elisp)Multiple Terminals'.  */);
 
   DEFVAR_BOOL ("cannot-suspend", cannot_suspend,
               doc: /* Non-nil means to always spawn a subshell instead of suspending.
-\(Even if the operating system has support for stopping a process.\)  */);
+(Even if the operating system has support for stopping a process.)  */);
   cannot_suspend = false;
 
   DEFVAR_BOOL ("menu-prompting", menu_prompting,
@@ -11538,7 +11538,7 @@ immediately after running `post-command-hook'.  */);
   DEFVAR_LISP ("input-method-function", Vinput_method_function,
               doc: /* If non-nil, the function that implements the current input method.
 It's called with one argument, a printing character that was just read.
-\(That means a character with code 040...0176.)
+(That means a character with code 040...0176.)
 Typically this function uses `read-event' to read additional events.
 When it does so, it should first bind `input-method-function' to nil
 so it will not be called recursively.
index 3668d4b24e2dbdd951dfe4be4b65afa37e1098a2..6a8d129ce2b108c2deff44d02ce77a00bacd5d30 100644 (file)
@@ -1687,7 +1687,7 @@ DEFUN ("global-key-binding", Fglobal_key_binding, Sglobal_key_binding, 1, 2, 0,
 KEYS is a string or vector, a sequence of keystrokes.
 The binding is probably a symbol with a function definition.
 This function's return values are the same as those of `lookup-key'
-\(which see).
+(which see).
 
 If optional argument ACCEPT-DEFAULT is non-nil, recognize default
 bindings; see the description of `lookup-key' for more details about this.  */)
@@ -2492,7 +2492,7 @@ If FIRSTONLY is the symbol `non-ascii', return the first binding found,
 no matter what it is.
 If FIRSTONLY has another non-nil value, prefer bindings
 that use the modifier key specified in `where-is-preferred-modifier'
-\(or their meta variants) and entirely reject menu bindings.
+(or their meta variants) and entirely reject menu bindings.
 
 If optional 4th arg NOINDIRECT is non-nil, don't extract the commands inside
 menu-items.  This makes it possible to search for a menu-item itself.
@@ -2723,7 +2723,7 @@ looked up in BUFFER.
 The optional argument PREFIX, if non-nil, should be a key sequence;
 then we display only bindings that start with that prefix.
 The optional argument MENUS, if non-nil, says to mention menu bindings.
-\(Ordinarily these are omitted from the output.)  */)
+(Ordinarily these are omitted from the output.)  */)
   (Lisp_Object buffer, Lisp_Object prefix, Lisp_Object menus)
 {
   Lisp_Object outbuf, shadow;
index d2d385605cef0ff698d6e52e8eaa1f88100459b4..2d6661787cf494d325511b9027c9ab031d23a407 100644 (file)
@@ -1,4 +1,4 @@
-/* Fundamental definitions for GNU Emacs Lisp interpreter.
+/* Fundamental definitions for GNU Emacs Lisp interpreter. -*- coding: utf-8 -*-
 
 Copyright (C) 1985-1987, 1993-1995, 1997-2015 Free Software Foundation,
 Inc.
@@ -2736,7 +2736,7 @@ XFLOATINT (Lisp_Object n)
 INLINE void
 CHECK_NUMBER_OR_FLOAT (Lisp_Object x)
 {
-  CHECK_TYPE (FLOATP (x) || INTEGERP (x), Qnumberp, x);
+  CHECK_TYPE (NUMBERP (x), Qnumberp, x);
 }
 
 #define CHECK_NUMBER_OR_FLOAT_COERCE_MARKER(x)                         \
@@ -2744,7 +2744,7 @@ CHECK_NUMBER_OR_FLOAT (Lisp_Object x)
     if (MARKERP (x))                                                   \
       XSETFASTINT (x, marker_position (x));                            \
     else                                                               \
-      CHECK_TYPE (INTEGERP (x) || FLOATP (x), Qnumber_or_marker_p, x); \
+      CHECK_TYPE (NUMBERP (x), Qnumber_or_marker_p, x);                        \
   } while (false)
 
 /* Since we can't assign directly to the CAR or CDR fields of a cons
@@ -3840,6 +3840,7 @@ extern void fclose_unwind (void *);
 extern void restore_point_unwind (Lisp_Object);
 extern _Noreturn void report_file_errno (const char *, Lisp_Object, int);
 extern _Noreturn void report_file_error (const char *, Lisp_Object);
+extern _Noreturn void report_file_notify_error (const char *, Lisp_Object);
 extern bool internal_delete_file (Lisp_Object);
 extern Lisp_Object emacs_readlinkat (int, const char *);
 extern bool file_directory_p (const char *);
@@ -4352,12 +4353,13 @@ INLINE ptrdiff_t
 lisp_word_count (ptrdiff_t nbytes)
 {
   if (-1 >> 1 == -1)
-    switch (word_size)
+    switch (word_size + 0)
       {
       case 2: return nbytes >> 1;
       case 4: return nbytes >> 2;
       case 8: return nbytes >> 3;
       case 16: return nbytes >> 4;
+      default: break;
       }
   return nbytes / word_size - (nbytes % word_size < 0);
 }
index 6099545a808a78713137247b54f931ff19cfe841..bceec4bb6447d30ffa437a4f72ab2a3c796e42fb 100644 (file)
@@ -4512,7 +4512,7 @@ customize `jka-compr-load-suffixes' rather than the present variable.  */);
 Each element looks like (REGEXP-OR-FEATURE FUNCS...).
 
 REGEXP-OR-FEATURE is either a regular expression to match file names, or
-a symbol \(a feature name).
+a symbol (a feature name).
 
 When `load' is run and the file-name argument matches an element's
 REGEXP-OR-FEATURE, or when `provide' is run and provides the symbol
index 23d272c91298ced6a76c12c9a6dfe072e6c89c81..97a255bf018395806f44a7728071d285a8b6a7c2 100644 (file)
@@ -945,13 +945,7 @@ macfont_set_family_cache (Lisp_Object symbol, CFStringRef string)
   Lisp_Object value;
 
   if (!HASH_TABLE_P (macfont_family_cache))
-    {
-      Lisp_Object args[2];
-
-      args[0] = QCtest;
-      args[1] = Qeq;
-      macfont_family_cache = Fmake_hash_table (2, args);
-    }
+    macfont_family_cache = CALLN (Fmake_hash_table, QCtest, Qeq);
 
   h = XHASH_TABLE (macfont_family_cache);
   i = hash_lookup (h, symbol, &hash);
index e36fe260f24b658cad1fd5113807bf14bcbb042e..dc82809629a7e22d14336cf69352e0546ec16b18 100644 (file)
@@ -1129,7 +1129,7 @@ If POSITION is t, it means to use the current mouse position.
 MENU is a specifier for a menu.  For the simplest case, MENU is a keymap.
 The menu items come from key bindings that have a menu string as well as
 a definition; actually, the "definition" in such a key binding looks like
-\(STRING . REAL-DEFINITION).  To give the menu a title, put a string into
+(STRING . REAL-DEFINITION).  To give the menu a title, put a string into
 the keymap as a top-level element.
 
 If REAL-DEFINITION is nil, that puts a nonselectable string in the menu.
@@ -1491,7 +1491,7 @@ The return value is VALUE from the chosen item.
 An ITEM may also be just a string--that makes a nonselectable item.
 An ITEM may also be nil--that means to put all preceding items
 on the left of the dialog box and all following items on the right.
-\(By default, approximately half appear on each side.)
+(By default, approximately half appear on each side.)
 
 If HEADER is non-nil, the frame title for the box is "Information",
 otherwise it is "Question".
index cf0cbca77c1961135a852a3c674b271d2cd33795..4e5c17d074cd9fb04c09d949bc255cb8de3fec6a 100644 (file)
@@ -916,7 +916,7 @@ INITIAL-CONTENTS argument in more detail.  It is only relevant when
 studying existing code, or when HIST is a cons.  If non-nil,
 INITIAL-CONTENTS is a string to be inserted into the minibuffer before
 reading input.  Normally, point is put at the end of that string.
-However, if INITIAL-CONTENTS is \(STRING . POSITION), the initial
+However, if INITIAL-CONTENTS is (STRING . POSITION), the initial
 input is STRING, but point is placed at _one-indexed_ position
 POSITION in the minibuffer.  Any integer value less than or equal to
 one puts point at the beginning of the string.  *Note* that this
@@ -996,7 +996,7 @@ DEFUN ("read-no-blanks-input", Fread_no_blanks_input, Sread_no_blanks_input, 1,
 Prompt with PROMPT.  Whitespace terminates the input.  If INITIAL is
 non-nil, it should be a string, which is used as initial input, with
 point positioned at the end, so that SPACE will accept the input.
-\(Actually, INITIAL can also be a cons of a string and an integer.
+(Actually, INITIAL can also be a cons of a string and an integer.
 Such values are treated as in `read-from-minibuffer', but are normally
 not useful in this function.)
 Third arg INHERIT-INPUT-METHOD, if non-nil, means the minibuffer inherits
index 89b9f7c4b62244ba67122c4da0a03c13e11d8ac5..ad71a508248a120ea1b9f5bb2d5bce7d26d0ebd8 100644 (file)
@@ -1009,7 +1009,7 @@ unwind_create_frame (Lisp_Object frame)
       x_free_frame_resources (f);
       free_glyphs (f);
 
-#ifdef GLYPH_DEBUG
+#if defined GLYPH_DEBUG && defined ENABLE_CHECKING
       /* Check that reference counts are indeed correct.  */
       eassert (dpyinfo->terminal->image_cache->refcount == image_cache_refcount);
 #endif
@@ -1639,7 +1639,7 @@ DEFUN ("x-server-max-request-size", Fx_server_max_request_size,
 
 DEFUN ("x-server-vendor", Fx_server_vendor, Sx_server_vendor, 0, 1, 0,
        doc: /* Return the "vendor ID" string of Nextstep display server TERMINAL.
-\(Labeling every distributor as a "vendor" embodies the false assumption
+(Labeling every distributor as a "vendor" embodies the false assumption
 that operating systems cannot be developed and distributed noncommercially.)
 The optional argument TERMINAL specifies which display to ask about.
 TERMINAL should be a terminal object, a frame or a display name (a string).
@@ -1816,7 +1816,7 @@ DISPLAY is the name of the display to connect to.
 Optional second arg XRM-STRING is a string of resources in xrdb format.
 If the optional third arg MUST-SUCCEED is non-nil,
 terminate Emacs if we can't open the connection.
-\(In the Nextstep version, the last two arguments are currently ignored.)  */)
+(In the Nextstep version, the last two arguments are currently ignored.)  */)
      (Lisp_Object display, Lisp_Object resource_string, Lisp_Object must_succeed)
 {
   struct ns_display_info *dpyinfo;
@@ -2289,7 +2289,7 @@ x_get_focus_frame (struct frame *frame)
 
 DEFUN ("xw-color-defined-p", Fxw_color_defined_p, Sxw_color_defined_p, 1, 2, 0,
        doc: /* Internal function called by `color-defined-p', which see.
-\(Note that the Nextstep version of this function ignores FRAME.)  */)
+(Note that the Nextstep version of this function ignores FRAME.)  */)
      (Lisp_Object color, Lisp_Object frame)
 {
   NSColor * col;
index 918fb55fb22380b3b546a0a160d2b346e804b471..5579cc5a767b2e920d805aa3cd5a50d1cef54747 100644 (file)
@@ -316,7 +316,7 @@ DEFUN ("ns-own-selection-internal", Fns_own_selection_internal,
        Sns_own_selection_internal, 2, 2, 0,
        doc: /* Assert an X selection of type SELECTION and value VALUE.
 SELECTION is a symbol, typically `PRIMARY', `SECONDARY', or `CLIPBOARD'.
-\(Those are literal upper-case symbol names, since that's what X expects.)
+(Those are literal upper-case symbol names, since that's what X expects.)
 VALUE is typically a string, or a cons of two markers, but may be
 anything that the functions on `selection-converter-alist' know about.  */)
      (Lisp_Object selection, Lisp_Object value)
@@ -414,7 +414,7 @@ DEFUN ("ns-selection-owner-p", Fns_selection_owner_p, Sns_selection_owner_p,
        doc: /* Whether the current Emacs process owns the given X Selection.
 The arg should be the name of the selection in question, typically one of
 the symbols `PRIMARY', `SECONDARY', or `CLIPBOARD'.
-\(Those are literal upper-case symbol names, since that's what X expects.)
+(Those are literal upper-case symbol names, since that's what X expects.)
 For convenience, the symbol nil is the same as `PRIMARY',
 and t is the same as `SECONDARY'.  */)
      (Lisp_Object selection)
@@ -433,7 +433,7 @@ DEFUN ("ns-get-selection", Fns_get_selection,
        Sns_get_selection, 2, 2, 0,
        doc: /* Return text selected from some X window.
 SELECTION-SYMBOL is typically `PRIMARY', `SECONDARY', or `CLIPBOARD'.
-\(Those are literal upper-case symbol names, since that's what X expects.)
+(Those are literal upper-case symbol names, since that's what X expects.)
 TARGET-TYPE is the type of data desired, typically `STRING'.  */)
      (Lisp_Object selection_name, Lisp_Object target_type)
 {
index 2806f31155df94c0be99a5c1f639d8a9293ea713..a5bf06a70aff10b964932d14bb496c82845e83b5 100644 (file)
@@ -1,4 +1,4 @@
-/* NeXT/Open/GNUstep / MacOSX communication module.
+/* NeXT/Open/GNUstep / MacOSX communication module.      -*- coding: utf-8 -*-
 
 Copyright (C) 1989, 1993-1994, 2005-2006, 2008-2015 Free Software
 Foundation, Inc.
@@ -440,10 +440,7 @@ append2 (Lisp_Object list, Lisp_Object item)
    Utility to append to a list
    -------------------------------------------------------------------------- */
 {
-  Lisp_Object array[2];
-  array[0] = list;
-  array[1] = list1 (item);
-  return Fnconc (2, &array[0]);
+  return CALLN (Fnconc, list, list1 (item));
 }
 
 
@@ -1333,6 +1330,7 @@ x_set_window_size (struct frame *f,
   int tb = FRAME_EXTERNAL_TOOL_BAR (f);
   int pixelwidth, pixelheight;
   int rows, cols;
+  int orig_height = wr.size.height;
 
   NSTRACE (x_set_window_size);
 
@@ -1386,7 +1384,7 @@ x_set_window_size (struct frame *f,
  if (f->output_data.ns->zooming)
    f->output_data.ns->zooming = 0;
  else
-   wr.origin.y += FRAME_PIXEL_HEIGHT (f) - pixelheight;
+   wr.origin.y += orig_height - wr.size.height;
 
   [view setRows: rows andColumns: cols];
   [window setFrame: wr display: YES];
index 94f3fcd7db1ea5b1c2c5061ae323df6a09ce3541..3c3dca770009e1f06b96f29cea8501ea3acc9324 100644 (file)
@@ -2198,7 +2198,7 @@ Also print formfeeds as `\\f'.  */);
 
   DEFVAR_BOOL ("print-escape-nonascii", print_escape_nonascii,
               doc: /* Non-nil means print unibyte non-ASCII chars in strings as \\OOO.
-\(OOO is the octal representation of the character code.)
+(OOO is the octal representation of the character code.)
 Only single-byte characters are affected, and only in `prin1'.
 When the output goes in a multibyte buffer, this feature is
 enabled regardless of the value of the variable.  */);
@@ -2206,7 +2206,7 @@ enabled regardless of the value of the variable.  */);
 
   DEFVAR_BOOL ("print-escape-multibyte", print_escape_multibyte,
               doc: /* Non-nil means print multibyte characters in strings as \\xXXXX.
-\(XXXX is the hex representation of the character code.)
+(XXXX is the hex representation of the character code.)
 This affects only `prin1'.  */);
   print_escape_multibyte = 0;
 
index f4613be28edf8c6edcad5b88007433933145d186..42dd17c57e07990368cc75eba869c74d95bc6f25 100644 (file)
@@ -957,7 +957,7 @@ DEFUN ("process-command", Fprocess_command, Sprocess_command, 1, 1, 0,
 This is a list of strings, the first string being the program executed
 and the rest of the strings being the arguments given to it.
 For a network or serial process, this is nil (process is running) or t
-\(process is stopped).  */)
+(process is stopped).  */)
   (register Lisp_Object process)
 {
   CHECK_PROCESS (process);
@@ -2674,7 +2674,7 @@ is not given or nil, 1 stopbit is used.
 :flowcontrol FLOWCONTROL -- FLOWCONTROL determines the type of
 flowcontrol to be used, which is either nil (don't use flowcontrol),
 the symbol `hw' (use RTS/CTS hardware flowcontrol), or the symbol `sw'
-\(use XON/XOFF software flowcontrol).  If FLOWCONTROL is not given, no
+(use XON/XOFF software flowcontrol).  If FLOWCONTROL is not given, no
 flowcontrol is used.
 
 `serial-process-configure' is called by `make-serial-process' for the
@@ -2682,12 +2682,12 @@ initial configuration of the serial port.
 
 Examples:
 
-\(serial-process-configure :process "/dev/ttyS0" :speed 1200)
+(serial-process-configure :process "/dev/ttyS0" :speed 1200)
 
-\(serial-process-configure
+(serial-process-configure
     :buffer "COM1" :stopbits 1 :parity \\='odd :flowcontrol \\='hw)
 
-\(serial-process-configure :port "\\\\.\\COM13" :bytesize 7)
+(serial-process-configure :port "\\\\.\\COM13" :bytesize 7)
 
 usage: (serial-process-configure &rest ARGS)  */)
   (ptrdiff_t nargs, Lisp_Object *args)
@@ -2781,13 +2781,13 @@ is available via the function `process-contact'.
 
 Examples:
 
-\(make-serial-process :port "/dev/ttyS0" :speed 9600)
+(make-serial-process :port "/dev/ttyS0" :speed 9600)
 
-\(make-serial-process :port "COM1" :speed 115200 :stopbits 2)
+(make-serial-process :port "COM1" :speed 115200 :stopbits 2)
 
-\(make-serial-process :port "\\\\.\\COM13" :speed 1200 :bytesize 7 :parity \\='odd)
+(make-serial-process :port "\\\\.\\COM13" :speed 1200 :bytesize 7 :parity \\='odd)
 
-\(make-serial-process :port "/dev/tty.BlueConsole-SPP-1" :speed nil)
+(make-serial-process :port "/dev/tty.BlueConsole-SPP-1" :speed nil)
 
 usage:  (make-serial-process &rest ARGS)  */)
   (ptrdiff_t nargs, Lisp_Object *args)
@@ -5031,12 +5031,18 @@ wait_reading_process_output (intmax_t time_limit, int nsecs, int read_kbd,
       for (channel = 0; channel <= max_input_desc; ++channel)
         {
           struct fd_callback_data *d = &fd_callback_info[channel];
-          if (d->func
-             && ((d->condition & FOR_READ
-                  && FD_ISSET (channel, &Available))
-                 || (d->condition & FOR_WRITE
-                     && FD_ISSET (channel, &write_mask))))
-            d->func (channel, d->data);
+          if (d->func)
+           {
+             if (d->condition & FOR_READ
+                 && FD_ISSET (channel, &Available))
+               {
+                 d->func (channel, d->data);
+                 FD_CLR (channel, &Available);
+               }
+             else if (d->condition & FOR_WRITE
+                      && FD_ISSET (channel, &write_mask))
+               d->func (channel, d->data);
+           }
        }
 
       for (channel = 0; channel <= max_process_desc; channel++)
@@ -6269,7 +6275,7 @@ SIGCODE may be an integer, or a symbol whose name is a signal name.  */)
        {
          Lisp_Object process_number
            = string_to_number (SSDATA (process), 10, 1);
-         if (INTEGERP (process_number) || FLOATP (process_number))
+         if (NUMBERP (process_number))
            tem = process_number;
        }
       process = tem;
@@ -6694,10 +6700,12 @@ status_notify (struct Lisp_Process *deleting_process,
          p->update_tick = p->tick;
          /* Now output the message suitably.  */
          exec_sentinel (proc, msg);
+         if (BUFFERP (p->buffer))
+           /* In case it uses %s in mode-line-format.  */
+           bset_update_mode_line (XBUFFER (p->buffer));
        }
     } /* end for */
 
-  update_mode_lines = 24;  /* In case buffers use %s in mode-line-format.  */
   return got_some_output;
 }
 
@@ -7294,7 +7302,7 @@ DEFUN ("process-attributes", Fprocess_attributes,
 
 Value is an alist where each element is a cons cell of the form
 
-    \(KEY . VALUE)
+    (KEY . VALUE)
 
 If this functionality is unsupported, the value is nil.
 
index e889055dc2388977c16e1379147f69d7c4ba7d50..24bad45a24ba8e2c9a43ced9e0c630154d67bea3 100644 (file)
@@ -43,25 +43,25 @@ struct Lisp_Process
     /* Name of subprocess terminal.  */
     Lisp_Object tty_name;
 
-    /* Name of this process */
+    /* Name of this process */
     Lisp_Object name;
 
     /* List of command arguments that this process was run with.
-       Is set to t for a stopped network process; nil otherwise. */
+       Is set to t for a stopped network process; nil otherwise.  */
     Lisp_Object command;
 
     /* (funcall FILTER PROC STRING)  (if FILTER is non-nil)
-       to dispose of a bunch of chars from the process all at once */
+       to dispose of a bunch of chars from the process all at once */
     Lisp_Object filter;
 
-    /* (funcall SENTINEL PROCESS) when process state changes */
+    /* (funcall SENTINEL PROCESS) when process state changes */
     Lisp_Object sentinel;
 
     /* (funcall LOG SERVER CLIENT MESSAGE) when a server process
        accepts a connection from a client.  */
     Lisp_Object log;
 
-    /* Buffer that output is going to */
+    /* Buffer that output is going to */
     Lisp_Object buffer;
 
     /* t if this is a real child process.  For a network or serial
@@ -73,10 +73,10 @@ struct Lisp_Process
     /* Plist for programs to keep per-process state information, parameters, etc.  */
     Lisp_Object plist;
 
-    /* Symbol indicating the type of process: real, network, serial  */
+    /* Symbol indicating the type of process: real, network, serial.  */
     Lisp_Object type;
 
-    /* Marker set to end of last buffer-inserted output from this process */
+    /* Marker set to end of last buffer-inserted output from this process */
     Lisp_Object mark;
 
     /* Symbol indicating status of process.
@@ -98,7 +98,7 @@ struct Lisp_Process
     /* Working buffer for encoding.  */
     Lisp_Object encoding_buf;
 
-    /* Queue for storing waiting writes */
+    /* Queue for storing waiting writes */
     Lisp_Object write_queue;
 
 #ifdef HAVE_GNUTLS
@@ -116,9 +116,9 @@ struct Lisp_Process
        A value 0 is used for pseudo-processes such as network or serial
        connections.  */
     pid_t pid;
-    /* Descriptor by which we read from this process */
+    /* Descriptor by which we read from this process */
     int infd;
-    /* Descriptor by which we write to this process */
+    /* Descriptor by which we write to this process */
     int outfd;
     /* Descriptors that were created for this process and that need
        closing.  Unused entries are negative.  */
index 106a462f80492dc460106c78216b89395aa9414a..8c9714eb6faff2f5f9fdbfb02e8184ec9927726b 100644 (file)
@@ -2784,7 +2784,7 @@ if the last match was on a buffer; integers or nil if a string was matched.
 Use `set-match-data' to reinstate the data in this list.
 
 If INTEGERS (the optional first argument) is non-nil, always use
-integers \(rather than markers) to represent buffer positions.  In
+integers (rather than markers) to represent buffer positions.  In
 this case, and if the last match was in a buffer, the buffer will get
 stored as one additional element at the end of the list.
 
index dc82210e79d3e08f964ca57f0cca953f3bd0e8b1..cacdf18c2a2c151740e8d6545582f34ea3a00d8e 100644 (file)
@@ -181,6 +181,7 @@ static void scan_sexps_forward (struct lisp_parse_state *,
                                 ptrdiff_t, ptrdiff_t, ptrdiff_t, EMACS_INT,
                                 bool, Lisp_Object, int);
 static bool in_classes (int, Lisp_Object);
+static void parse_sexp_propertize (ptrdiff_t charpos);
 
 /* This setter is used only in this file, so it can be private.  */
 static void
@@ -246,8 +247,15 @@ SETUP_SYNTAX_TABLE (ptrdiff_t from, ptrdiff_t count)
   gl_state.object = Qnil;
   gl_state.offset = 0;
   if (parse_sexp_lookup_properties)
-    if (count > 0 || from > BEGV)
-      update_syntax_table (count > 0 ? from : from - 1, count, 1, Qnil);
+    {
+      if (count > 0)
+       update_syntax_table_forward (from, true, Qnil);
+      else if (from > BEGV)
+       {
+         update_syntax_table (from - 1, count, true, Qnil);
+         parse_sexp_propertize (from - 1);
+       }
+    }
 }
 
 /* Same as above, but in OBJECT.  If OBJECT is nil, use current buffer.
@@ -313,7 +321,7 @@ update_syntax_table (ptrdiff_t charpos, EMACS_INT count, bool init,
 {
   Lisp_Object tmp_table;
   int cnt = 0;
-  bool invalidate = 1;
+  bool invalidate = true;
   INTERVAL i;
 
   if (init)
@@ -323,7 +331,7 @@ update_syntax_table (ptrdiff_t charpos, EMACS_INT count, bool init,
       gl_state.stop = gl_state.e_property;
       i = interval_of (charpos, object);
       gl_state.backward_i = gl_state.forward_i = i;
-      invalidate = 0;
+      invalidate = false;
       if (!i)
        return;
       /* interval_of updates only ->position of the return value, so
@@ -359,7 +367,7 @@ update_syntax_table (ptrdiff_t charpos, EMACS_INT count, bool init,
       i = update_interval (i, charpos);
       if (INTERVAL_LAST_POS (i) != gl_state.b_property)
        {
-         invalidate = 0;
+         invalidate = false;
          gl_state.forward_i = i;
          gl_state.e_property = INTERVAL_LAST_POS (i) - gl_state.offset;
        }
@@ -372,7 +380,7 @@ update_syntax_table (ptrdiff_t charpos, EMACS_INT count, bool init,
       i = update_interval (i, charpos);
       if (i->position != gl_state.e_property)
        {
-         invalidate = 0;
+         invalidate = false;
          gl_state.backward_i = i;
          gl_state.b_property = i->position - gl_state.offset;
        }
@@ -460,14 +468,69 @@ update_syntax_table (ptrdiff_t charpos, EMACS_INT count, bool init,
     }
   eassert (i == NULL); /* This property goes to the end.  */
   if (count > 0)
-    gl_state.e_property = gl_state.stop;
+    {
+      gl_state.e_property = gl_state.stop;
+      gl_state.forward_i = i;
+    }
   else
     gl_state.b_property = gl_state.start;
 }
+
+static void
+parse_sexp_propertize (ptrdiff_t charpos)
+{
+  EMACS_INT zv = ZV;
+  if (syntax_propertize__done <= charpos
+      && syntax_propertize__done < zv)
+    {
+      EMACS_INT modiffs = CHARS_MODIFF;
+      safe_call1 (Qinternal__syntax_propertize,
+                 make_number (min (zv, 1 + charpos)));
+      if (modiffs != CHARS_MODIFF)
+       error ("parse-sexp-propertize-function modified the buffer!");
+      if (syntax_propertize__done <= charpos
+         && syntax_propertize__done < zv)
+       error ("parse-sexp-propertize-function did not move"
+              " syntax-propertize--done");
+      SETUP_SYNTAX_TABLE (charpos, 1);
+    }
+  else if (gl_state.e_property > syntax_propertize__done)
+    {
+      gl_state.e_property = syntax_propertize__done;
+      gl_state.e_property_truncated = true;
+    }
+  else if (gl_state.e_property_truncated
+          && gl_state.e_property < syntax_propertize__done)
+    { /* When moving backward, e_property might be set without resetting
+        e_property_truncated, so the e_property_truncated flag may
+        occasionally be left raised spuriously.  This should be rare.  */
+      gl_state.e_property_truncated = false;
+      update_syntax_table_forward (charpos, false, Qnil);
+    }
+}
+
+void
+update_syntax_table_forward (ptrdiff_t charpos, bool init,
+                            Lisp_Object object)
+{
+  if (gl_state.e_property_truncated)
+    {
+      eassert (NILP (object));
+      eassert (charpos >= gl_state.e_property);
+      parse_sexp_propertize (charpos);
+    }
+  else
+    {
+      update_syntax_table (charpos, 1, init, object);
+      if (gl_state.e_property > syntax_propertize__done
+         && NILP (object))
+       parse_sexp_propertize (charpos);
+    }
+}
 \f
 /* Returns true if char at CHARPOS is quoted.
    Global syntax-table data should be set up already to be good at CHARPOS
-   or after.  On return global syntax data is good for lookup at CHARPOS. */
+   or after.  On return global syntax data is good for lookup at CHARPOS.  */
 
 static bool
 char_quoted (ptrdiff_t charpos, ptrdiff_t bytepos)
@@ -628,7 +691,7 @@ back_comment (ptrdiff_t from, ptrdiff_t from_byte, ptrdiff_t stop,
      OFROM[I] is position of the earliest comment-starter seen
      which is I+2X quotes from the comment-end.
      PARITY is current parity of quotes from the comment end.  */
-  int string_style = -1;       /* Presumed outside of any string. */
+  int string_style = -1;       /* Presumed outside of any string.  */
   bool string_lossage = 0;
   /* Not a real lossage: indicates that we have passed a matching comment
      starter plus a non-matching comment-ender, meaning that any matching
@@ -645,7 +708,7 @@ back_comment (ptrdiff_t from, ptrdiff_t from_byte, ptrdiff_t stop,
   ptrdiff_t defun_start = 0;
   ptrdiff_t defun_start_byte = 0;
   enum syntaxcode code;
-  ptrdiff_t nesting = 1;               /* current comment nesting */
+  ptrdiff_t nesting = 1;               /* Current comment nesting.  */
   int c;
   int syntax = 0;
 
@@ -876,7 +939,7 @@ back_comment (ptrdiff_t from, ptrdiff_t from_byte, ptrdiff_t stop,
                   is nested, so we need to try again from within the
                   surrounding comment.  Example: { a (* " *)  */
                {
-                 /* FIXME: We should advance by one or two chars. */
+                 /* FIXME: We should advance by one or two chars.  */
                  defun_start = state.comstr_start + 2;
                  defun_start_byte = CHAR_TO_BYTE (defun_start);
                }
@@ -1042,7 +1105,7 @@ DEFUN ("string-to-syntax", Fstring_to_syntax, Sstring_to_syntax, 1, 1, 0,
        doc: /* Convert a syntax descriptor STRING into a raw syntax descriptor.
 STRING should be a string of the form allowed as argument of
 `modify-syntax-entry'.  The return value is a raw syntax descriptor: a
-cons cell \(CODE . MATCHING-CHAR) which can be used, for example, as
+cons cell (CODE . MATCHING-CHAR) which can be used, for example, as
 the value of a `syntax-table' text property.  */)
   (Lisp_Object string)
 {
@@ -2288,13 +2351,13 @@ forw_comment (ptrdiff_t from, ptrdiff_t from_byte, ptrdiff_t stop,
          && SYNTAX_FLAGS_COMMENT_STYLE (syntax, 0) == style
          && (SYNTAX_FLAGS_COMMENT_NESTED (syntax) ?
              (nesting > 0 && --nesting == 0) : nesting < 0))
-       /* we have encountered a comment end of the same style
+       /* We have encountered a comment end of the same style
           as the comment sequence which began this comment
-          section */
+          section */
        break;
       if (code == Scomment_fence
          && style == ST_COMMENT_STYLE)
-       /* we have encountered a comment end of the same style
+       /* We have encountered a comment end of the same style
           as the comment sequence which began this comment
           section.  */
        break;
@@ -2302,8 +2365,8 @@ forw_comment (ptrdiff_t from, ptrdiff_t from_byte, ptrdiff_t stop,
          && code == Scomment
          && SYNTAX_FLAGS_COMMENT_NESTED (syntax)
          && SYNTAX_FLAGS_COMMENT_STYLE (syntax, 0) == style)
-       /* we have encountered a nested comment of the same style
-          as the comment sequence which began this comment section */
+       /* We have encountered a nested comment of the same style
+          as the comment sequence which began this comment section */
        nesting++;
       INC_BOTH (from, from_byte);
       UPDATE_SYNTAX_TABLE_FORWARD (from);
@@ -2319,9 +2382,8 @@ forw_comment (ptrdiff_t from, ptrdiff_t from_byte, ptrdiff_t stop,
              ? nesting > 0 : nesting < 0))
        {
          if (--nesting <= 0)
-           /* we have encountered a comment end of the same style
-              as the comment sequence which began this comment
-              section */
+           /* We have encountered a comment end of the same style
+              as the comment sequence which began this comment section.  */
            break;
          else
            {
@@ -2338,9 +2400,8 @@ forw_comment (ptrdiff_t from, ptrdiff_t from_byte, ptrdiff_t stop,
              && SYNTAX_FLAGS_COMSTART_SECOND (other_syntax))
          && (SYNTAX_FLAGS_COMMENT_NESTED (syntax) ||
              SYNTAX_FLAGS_COMMENT_NESTED (other_syntax)))
-       /* we have encountered a nested comment of the same style
-          as the comment sequence which began this comment
-          section */
+       /* We have encountered a nested comment of the same style
+          as the comment sequence which began this comment section.  */
        {
          INC_BOTH (from, from_byte);
          UPDATE_SYNTAX_TABLE_FORWARD (from);
@@ -2584,9 +2645,9 @@ scan_lists (EMACS_INT from, EMACS_INT count, EMACS_INT depth, bool sexpflag)
   bool quoted;
   bool mathexit = 0;
   enum syntaxcode code;
-  EMACS_INT min_depth = depth;    /* Err out if depth gets less than this.  */
-  int comstyle = 0;        /* style of comment encountered */
-  bool comnested = 0;      /* whether the comment is nestable or not */
+  EMACS_INT min_depth = depth;  /* Err out if depth gets less than this.  */
+  int comstyle = 0;            /* Style of comment encountered.  */
+  bool comnested = 0;          /* Whether the comment is nestable or not.  */
   ptrdiff_t temp_pos;
   EMACS_INT last_good = from;
   bool found;
@@ -2630,11 +2691,11 @@ scan_lists (EMACS_INT from, EMACS_INT count, EMACS_INT depth, bool sexpflag)
                  SYNTAX_FLAGS_COMSTART_SECOND (other_syntax))
              && parse_sexp_ignore_comments)
            {
-             /* we have encountered a comment start sequence and we
+             /* We have encountered a comment start sequence and we
                 are ignoring all text inside comments.  We must record
                 the comment style this sequence begins so that later,
                 only a comment end of the same style actually ends
-                the comment section */
+                the comment section */
              code = Scomment;
              comstyle = SYNTAX_FLAGS_COMMENT_STYLE (other_syntax, syntax);
              comnested |= SYNTAX_FLAGS_COMMENT_NESTED (other_syntax);
@@ -2652,7 +2713,7 @@ scan_lists (EMACS_INT from, EMACS_INT count, EMACS_INT depth, bool sexpflag)
              if (from == stop)
                goto lose;
              INC_BOTH (from, from_byte);
-             /* treat following character as a word constituent */
+             /* Treat following character as a word constituent.  */
            case Sword:
            case Ssymbol:
              if (depth || !sexpflag) break;
@@ -2745,12 +2806,8 @@ scan_lists (EMACS_INT from, EMACS_INT count, EMACS_INT depth, bool sexpflag)
                      : c_code == Sstring_fence)
                    break;
 
-                 switch (c_code)
-                   {
-                   case Scharquote:
-                   case Sescape:
-                     INC_BOTH (from, from_byte);
-                   }
+                 if (c_code == Scharquote || c_code == Sescape)
+                   INC_BOTH (from, from_byte);
                  INC_BOTH (from, from_byte);
                }
              INC_BOTH (from, from_byte);
@@ -3365,11 +3422,16 @@ do { prev_from = from;                          \
                  case Sstring_fence:
                    if (!nofence) goto string_end;
                    break;
+
                  case Scharquote:
                  case Sescape:
                    INC_FROM;
                  startquotedinstring:
                    if (from >= end) goto endquoted;
+                   break;
+
+                 default:
+                   break;
                  }
                INC_FROM;
              }
@@ -3457,7 +3519,7 @@ Sixth arg COMMENTSTOP non-nil means stop at the start of a comment.
       target = XINT (targetdepth);
     }
   else
-    target = TYPE_MINIMUM (EMACS_INT); /* We won't reach this depth */
+    target = TYPE_MINIMUM (EMACS_INT); /* We won't reach this depth */
 
   validate_region (&from, &to);
   scan_sexps_forward (&state, XINT (from), CHAR_TO_BYTE (XINT (from)),
@@ -3588,7 +3650,7 @@ syms_of_syntax (void)
   staticpro (&gl_state.current_syntax_table);
   staticpro (&gl_state.old_prop);
 
-  /* Defined in regex.c */
+  /* Defined in regex.c */
   staticpro (&re_match_object);
 
   DEFSYM (Qscan_error, "scan-error");
@@ -3606,6 +3668,11 @@ Otherwise, that text property is simply ignored.
 See the info node `(elisp)Syntax Properties' for a description of the
 `syntax-table' property.  */);
 
+  DEFVAR_INT ("syntax-propertize--done", syntax_propertize__done,
+             doc: /* Position up to which syntax-table properties have been set.  */);
+  syntax_propertize__done = -1;
+  DEFSYM (Qinternal__syntax_propertize, "internal--syntax-propertize");
+
   words_include_escapes = 0;
   DEFVAR_BOOL ("words-include-escapes", words_include_escapes,
               doc: /* Non-nil means `forward-word', etc., should treat escape chars part of words.  */);
index bfcb87168ba87a6115c1ca4b4d803055cf07a652..34b652ba9c8604b81e217d161cd00b642e62fd2a 100644 (file)
@@ -21,6 +21,7 @@ along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.  */
 INLINE_HEADER_BEGIN
 
 extern void update_syntax_table (ptrdiff_t, EMACS_INT, bool, Lisp_Object);
+extern void update_syntax_table_forward (ptrdiff_t, bool, Lisp_Object);
 
 /* The standard syntax table is stored where it will automatically
    be used in all new buffers.  */
@@ -52,30 +53,32 @@ enum syntaxcode
                       other side by any char with the same syntaxcode.  */
     Sstring_fence,  /* Starts/ends string which is delimited on the
                       other side by any char with the same syntaxcode.  */
-    Smax        /* Upper bound on codes that are meaningful */
+    Smax        /* Upper bound on codes that are meaningful */
   };
 
 
 struct gl_state_s
 {
-  Lisp_Object object;                  /* The object we are scanning. */
-  ptrdiff_t start;                     /* Where to stop. */
-  ptrdiff_t stop;                      /* Where to stop. */
+  Lisp_Object object;                  /* The object we are scanning.  */
+  ptrdiff_t start;                     /* Where to stop.  */
+  ptrdiff_t stop;                      /* Where to stop.  */
   bool use_global;                     /* Whether to use global_code
-                                          or c_s_t. */
-  Lisp_Object global_code;             /* Syntax code of current char. */
-  Lisp_Object current_syntax_table;    /* Syntax table for current pos. */
-  Lisp_Object old_prop;                        /* Syntax-table prop at prev pos. */
-  ptrdiff_t b_property;                        /* First index where c_s_t is valid. */
+                                          or c_s_t.  */
+  Lisp_Object global_code;             /* Syntax code of current char.  */
+  Lisp_Object current_syntax_table;    /* Syntax table for current pos.  */
+  Lisp_Object old_prop;                        /* Syntax-table prop at prev pos.  */
+  ptrdiff_t b_property;                        /* First index where c_s_t is valid.  */
   ptrdiff_t e_property;                        /* First index where c_s_t is
-                                          not valid. */
-  INTERVAL forward_i;                  /* Where to start lookup on forward */
+                                          not valid.  */
+  bool e_property_truncated;           /* true if e_property if was truncated
+                                          by parse_sexp_propertize_done.  */
+  INTERVAL forward_i;                  /* Where to start lookup on forward.  */
   INTERVAL backward_i;                 /* or backward movement.  The
                                           data in c_s_t is valid
                                           between these intervals,
                                           and possibly at the
                                           intervals too, depending
-                                          on: */
+                                          on:  */
   /* Offset for positions specified to UPDATE_SYNTAX_TABLE.  */
   ptrdiff_t offset;
 };
@@ -171,9 +174,10 @@ SYNTAX_TABLE_BYTE_TO_CHAR (ptrdiff_t bytepos)
 
 INLINE void
 UPDATE_SYNTAX_TABLE_FORWARD (ptrdiff_t charpos)
-{
+{ /* Performs just-in-time syntax-propertization.  */
   if (parse_sexp_lookup_properties && charpos >= gl_state.e_property)
-    update_syntax_table (charpos + gl_state.offset, 1, false, gl_state.object);
+    update_syntax_table_forward (charpos + gl_state.offset,
+                                false, gl_state.object);
 }
 
 /* Make syntax table state (gl_state) good for CHARPOS, assuming it is
@@ -201,6 +205,7 @@ INLINE void
 SETUP_BUFFER_SYNTAX_TABLE (void)
 {
   gl_state.use_global = false;
+  gl_state.e_property_truncated = false;
   gl_state.current_syntax_table = BVAR (current_buffer, syntax_table);
 }
 
index 8ebb620dd9b26ef04ecb4bfee779315f94cd72c9..5acc47395dbe0e4dd165fd12bdc3b48e7c5cf63c 100644 (file)
@@ -3117,6 +3117,7 @@ tty_menu_activate (tty_menu *menu, int *pane, int *selidx,
   Lisp_Object selectface;
   int first_item = 0;
   int col, row;
+  Lisp_Object prev_inhibit_redisplay = Vinhibit_redisplay;
   USE_SAFE_ALLOCA;
 
   /* Don't allow non-positive x0 and y0, lest the menu will wrap
@@ -3159,6 +3160,11 @@ tty_menu_activate (tty_menu *menu, int *pane, int *selidx,
       buffers_num_deleted = 1;
     }
 
+  /* Inhibit redisplay for as long as the menu is active, to avoid
+     messing the screen if some timer calls sit-for or a similar
+     function.  */
+  Vinhibit_redisplay = Qt;
+
   /* Force update of the current frame, so that the desired and the
      current matrices are identical.  */
   update_frame_with_menu (sf, -1, -1);
@@ -3349,6 +3355,7 @@ tty_menu_activate (tty_menu *menu, int *pane, int *selidx,
   if (!kbd_buffer_events_waiting ())
     clear_input_pending ();
   SAFE_FREE ();
+  Vinhibit_redisplay = prev_inhibit_redisplay;
   return result;
 }
 
index 168bc3510fac3a57b113f7b1113e9dd1b022bbe7..88c62df7205397785489125a6ff2291239b4201f 100644 (file)
@@ -383,6 +383,11 @@ struct terminal
     the selection-values.  */
   Lisp_Object Vselection_alist;
 
+  /* If a char-table, this maps characters to terminal glyph codes.
+     If t, the mapping is not available.  If nil, it is not known
+     whether the mapping is available.  */
+  Lisp_Object glyph_code_table;
+
   /* All fields before `next_terminal' should be Lisp_Object and are traced
      by the GC.  All fields afterwards are ignored by the GC.  */
 
@@ -690,6 +695,7 @@ extern struct terminal *get_named_terminal (const char *);
 extern struct terminal *create_terminal (enum output_method,
                                         struct redisplay_interface *);
 extern void delete_terminal (struct terminal *);
+extern Lisp_Object terminal_glyph_code (struct terminal *, int);
 
 /* The initial terminal device, created by initial_term_init.  */
 extern struct terminal *initial_terminal;
index b48d0623e126822ec197cb8859eacfe2c253361a..80c6aa20beef7ad54bb81b7fa45bb438b8849b37 100644 (file)
@@ -28,6 +28,12 @@ along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.  */
 #include "coding.h"
 #include "keyboard.h"
 
+#if HAVE_STRUCT_UNIPAIR_UNICODE
+# include <errno.h>
+# include <linux/kd.h>
+# include <sys/ioctl.h>
+#endif
+
 /* Chain of all terminals currently in use.  */
 struct terminal *terminal_list;
 
@@ -526,6 +532,65 @@ selected frame's terminal).  */)
   return store_terminal_param (decode_live_terminal (terminal), parameter, value);
 }
 
+#if HAVE_STRUCT_UNIPAIR_UNICODE
+
+/* Compute the glyph code table for T.  */
+
+static void
+calculate_glyph_code_table (struct terminal *t)
+{
+  Lisp_Object glyphtab = Qt;
+  enum { initial_unipairs = 1000 };
+  int entry_ct = initial_unipairs;
+  struct unipair unipair_buffer[initial_unipairs];
+  struct unipair *entries = unipair_buffer;
+  struct unipair *alloced = 0;
+
+  while (true)
+    {
+      int fd = fileno (t->display_info.tty->output);
+      struct unimapdesc unimapdesc = { entry_ct, entries };
+      if (ioctl (fd, GIO_UNIMAP, &unimapdesc) == 0)
+       {
+         glyphtab = Fmake_char_table (Qnil, make_number (-1));
+         for (int i = 0; i < unimapdesc.entry_ct; i++)
+           char_table_set (glyphtab, entries[i].unicode,
+                           make_number (entries[i].fontpos));
+         break;
+       }
+      if (errno != ENOMEM)
+       break;
+      entry_ct = unimapdesc.entry_ct;
+      entries = alloced = xrealloc (alloced, entry_ct * sizeof *alloced);
+    }
+
+  xfree (alloced);
+  t->glyph_code_table = glyphtab;
+}
+#endif
+
+/* Return the glyph code in T of character CH, or -1 if CH does not
+   have a font position in T, or nil if T does not report glyph codes.  */
+
+Lisp_Object
+terminal_glyph_code (struct terminal *t, int ch)
+{
+#if HAVE_STRUCT_UNIPAIR_UNICODE
+  if (t->type == output_termcap)
+    {
+      /* As a hack, recompute the table when CH is the maximum
+        character.  */
+      if (NILP (t->glyph_code_table) || ch == MAX_CHAR)
+       calculate_glyph_code_table (t);
+
+      if (! EQ (t->glyph_code_table, Qt))
+       return char_table_ref (t->glyph_code_table, ch);
+    }
+#endif
+
+  return Qnil;
+}
+
 /* Initial frame has no device-dependent output data, but has
    face cache which should be freed when the frame is deleted.  */
 
index 3f7c8d106395e9b446946eec56a880a83ab647a7..6758d4dfee2b0398f2751b85b6ba036359125e69 100644 (file)
@@ -1494,7 +1494,7 @@ DEFUN ("remove-text-properties", Fremove_text_properties,
        doc: /* Remove some properties from text from START to END.
 The third argument PROPERTIES is a property list
 whose property names specify the properties to remove.
-\(The values stored in PROPERTIES are ignored.)
+(The values stored in PROPERTIES are ignored.)
 If the optional fourth argument OBJECT is a buffer (or nil, which means
 the current buffer), START and END are buffer positions (integers or
 markers).  If OBJECT is a string, START and END are 0-based indices into it.
index ab102e32623321ca3d2a12bf36eb4a51d61635f1..503aaaebf8a1667739b81bf64aca810f99630173 100644 (file)
@@ -170,19 +170,13 @@ check_memory_limits (void)
   if (new_warnlevel > warnlevel || new_warnlevel == warned_95)
     {
       warnlevel = new_warnlevel;
-      switch (warnlevel)
+      static char const *const warn_diagnostic[] =
        {
-       case warned_75:
-         (*warn_function) ("Warning: past 75% of memory limit");
-         break;
-
-       case warned_85:
-         (*warn_function) ("Warning: past 85% of memory limit");
-         break;
-
-       case warned_95:
-         (*warn_function) ("Warning: past 95% of memory limit");
-       }
+         "Warning: past 75% of memory limit",
+         "Warning: past 85% of memory limit",
+         "Warning: past 95% of memory limit"
+       };
+      warn_function (warn_diagnostic[warnlevel - 1]);
     }
   /* Handle going down in usage levels, with some hysteresis.  */
   else
index 96f8437b4b14ccc2e8f3605e163e58f63fa52dad..70b9dd01f093b6424433d1c7ce1239978130742e 100644 (file)
@@ -686,7 +686,7 @@ For MS-Windows and MS-DOS:
 When sending or receiving text via selection and clipboard, the text
 is encoded or decoded by this coding system.  The default value is
 the current system default encoding on 9x/Me, `utf-16le-dos'
-\(Unicode) on NT/W2K/XP, and `iso-latin-1-dos' on MS-DOS.
+(Unicode) on NT/W2K/XP, and `iso-latin-1-dos' on MS-DOS.
 
 For X Windows:
 When sending text via selection and clipboard, if the target
index d8e22e2aa9c8eb4cb54498c6ac0f649af0283c1f..99fd3ba33fdd2411a35cb4d0567bb834bcdf1afe 100644 (file)
@@ -1763,10 +1763,8 @@ x_change_tool_bar_height (struct frame *f, int height)
   f->n_tool_bar_rows = 0;
 
   adjust_frame_size (f, -1, -1,
-                    ((!f->tool_bar_redisplayed_once
-                      && (NILP (fullscreen =
-                                get_frame_param (f, Qfullscreen))
-                          || EQ (fullscreen, Qfullwidth))) ? 1
+                    ((NILP (fullscreen = get_frame_param (f, Qfullscreen))
+                      || EQ (fullscreen, Qfullwidth)) ? 1
                      : (old_height == 0 || height == 0) ? 2
                      : 4),
                     false, Qtool_bar_lines);
@@ -5307,7 +5305,7 @@ x_get_focus_frame (struct frame *frame)
 
 DEFUN ("xw-color-defined-p", Fxw_color_defined_p, Sxw_color_defined_p, 1, 2, 0,
        doc: /* Internal function called by `color-defined-p', which see.
-\(Note that the Nextstep version of this function ignores FRAME.)  */)
+(Note that the Nextstep version of this function ignores FRAME.)  */)
   (Lisp_Object color, Lisp_Object frame)
 {
   XColor foo;
@@ -5449,7 +5447,7 @@ If omitted or nil, that stands for the selected frame's display.  */)
 DEFUN ("x-server-vendor", Fx_server_vendor, Sx_server_vendor, 0, 1, 0,
        doc: /* Return the "vendor ID" string of the GUI software on TERMINAL.
 
-\(Labeling every distributor as a "vendor" embodies the false assumption
+(Labeling every distributor as a "vendor" embodies the false assumption
 that operating systems cannot be developed and distributed noncommercially.)
 
 For GNU and Unix systems, this queries the X server software; for
@@ -5852,7 +5850,7 @@ DISPLAY is the name of the display to connect to.
 Optional second arg XRM-STRING is a string of resources in xrdb format.
 If the optional third arg MUST-SUCCEED is non-nil,
 terminate Emacs if we can't open the connection.
-\(In the Nextstep version, the last two arguments are currently ignored.)  */)
+(In the Nextstep version, the last two arguments are currently ignored.)  */)
   (Lisp_Object display, Lisp_Object xrm_string, Lisp_Object must_succeed)
 {
   unsigned char *xrm_option;
index ab6cd12ab938e6305e811aadf3fe43609f76e4b4..e822d9502632222411dfb3b79dd03e9070571e6e 100644 (file)
@@ -528,8 +528,8 @@ generate notifications correctly, though.  */)
       || (w32_major_version == 5 && w32_major_version < 1))
     {
       errno = ENOSYS;
-      report_file_error ("Watching filesystem events is not supported",
-                        Qnil);
+      report_file_notify_error ("Watching filesystem events is not supported",
+                               Qnil);
     }
 
   /* filenotify.el always passes us a directory, either the parent
@@ -573,11 +573,11 @@ generate notifications correctly, though.  */)
                                              Vlocale_coding_system, 0);
          else
            lisp_errstr = build_string (errstr);
-         report_file_error ("Cannot watch file",
-                            Fcons (lisp_errstr, Fcons (file, Qnil)));
+         report_file_notify_error ("Cannot watch file",
+                                   Fcons (lisp_errstr, Fcons (file, Qnil)));
        }
       else
-       report_file_error ("Cannot watch file", Fcons (file, Qnil));
+       report_file_notify_error ("Cannot watch file", Fcons (file, Qnil));
     }
   /* Store watch object in watch list. */
   watch_descriptor = make_pointer_integer (dirwatch);
@@ -611,8 +611,8 @@ WATCH-DESCRIPTOR should be an object returned by `w32notify-add-watch'.  */)
     }
 
   if (status == -1)
-    report_file_error ("Invalid watch descriptor", Fcons (watch_descriptor,
-                                                         Qnil));
+    report_file_notify_error ("Invalid watch descriptor",
+                             Fcons (watch_descriptor, Qnil));
 
   return Qnil;
 }
@@ -628,6 +628,30 @@ w32_get_watch_object (void *desc)
   return NILP (watch_list) ? Qnil : assoc_no_quit (descriptor, watch_list);
 }
 
+DEFUN ("w32notify-valid-p", Fw32notify_valid_p, Sw32notify_valid_p, 1, 1, 0,
+       doc: /* "Check a watch specified by its WATCH-DESCRIPTOR for validity.
+
+WATCH-DESCRIPTOR should be an object returned by `w32notify-add-watch'.
+
+A watch can become invalid if the directory it watches is deleted, or if
+the watcher thread exits abnormally for any other reason.  Removing the
+watch by calling `w32notify-rm-watch' also makes it invalid.  */)
+     (Lisp_Object watch_descriptor)
+{
+  Lisp_Object watch_object = Fassoc (watch_descriptor, watch_list);
+
+  if (!NILP (watch_object))
+    {
+      struct notification *dirwatch =
+       (struct notification *)XINTPTR (watch_descriptor);
+      if (w32_valid_pointer_p (dirwatch, sizeof(struct notification))
+         && dirwatch->dir != NULL)
+       return Qt;
+    }
+
+  return Qnil;
+}
+
 void
 globals_of_w32notify (void)
 {
@@ -648,6 +672,7 @@ syms_of_w32notify (void)
 
   defsubr (&Sw32notify_add_watch);
   defsubr (&Sw32notify_rm_watch);
+  defsubr (&Sw32notify_valid_p);
 
   staticpro (&watch_list);
 
index f6fe0cdb05989406f9ffa0e5efff3e4e65c930fc..42a2ca68f143ff414232077cd23fdf3322058e22 100644 (file)
@@ -641,7 +641,7 @@ DEFUN ("window-combination-limit", Fwindow_combination_limit, Swindow_combinatio
 WINDOW must be a valid window used in horizontal or vertical combination.
 If the return value is nil, child windows of WINDOW can be recombined with
 WINDOW's siblings.  A return value of t means that child windows of
-WINDOW are never \(re-)combined with WINDOW's siblings.  */)
+WINDOW are never (re-)combined with WINDOW's siblings.  */)
   (Lisp_Object window)
 {
   struct window *w;
@@ -658,7 +658,7 @@ DEFUN ("set-window-combination-limit", Fset_window_combination_limit, Sset_windo
 WINDOW must be a valid window used in horizontal or vertical combination.
 If LIMIT is nil, child windows of WINDOW can be recombined with WINDOW's
 siblings.  LIMIT t means that child windows of WINDOW are never
-\(re-)combined with WINDOW's siblings.  Other values are reserved for
+(re-)combined with WINDOW's siblings.  Other values are reserved for
 future use.  */)
   (Lisp_Object window, Lisp_Object limit)
 {
@@ -1291,10 +1291,18 @@ window_relative_x_coord (struct window *w, enum window_part part, int x)
              + window_box_width (w, RIGHT_MARGIN_AREA)
              + ((WINDOW_HAS_FRINGES_OUTSIDE_MARGINS (w))
                 ? WINDOW_RIGHT_FRINGE_WIDTH (w) : 0));
-    }
 
-  /* ON_SCROLL_BAR, ON_NOTHING, and ON_VERTICAL_BORDER:  */
-  return 0;
+    case ON_NOTHING:
+    case ON_VERTICAL_BORDER:
+    case ON_VERTICAL_SCROLL_BAR:
+    case ON_HORIZONTAL_SCROLL_BAR:
+    case ON_RIGHT_DIVIDER:
+    case ON_BOTTOM_DIVIDER:
+      return 0;
+
+    default:
+      emacs_abort ();
+    }
 }
 
 
@@ -1304,7 +1312,7 @@ DEFUN ("coordinates-in-window-p", Fcoordinates_in_window_p,
 WINDOW must be a live window and defaults to the selected one.
 COORDINATES is a cons of the form (X . Y), X and Y being distances
 measured in characters from the upper-left corner of the frame.
-\(0 . 0) denotes the character in the upper left corner of the
+(0 . 0) denotes the character in the upper left corner of the
 frame.
 If COORDINATES are in the text portion of WINDOW,
    the coordinates relative to the window are returned.
@@ -1688,7 +1696,7 @@ of the window.  The remaining elements are omitted if the character after
 POS is fully visible; otherwise, RTOP and RBOT are the number of pixels
 off-window at the top and bottom of the screen line ("row") containing
 POS, ROWH is the visible height of that row, and VPOS is the row number
-\(zero-based).  */)
+(zero-based).  */)
   (Lisp_Object pos, Lisp_Object window, Lisp_Object partially)
 {
   struct window *w;
index 82931b88e1c12c23ec2022f2d7b48ff5c4fce532..2c38aa9ccff578d40bff57a0584042fd9744b027 100644 (file)
@@ -768,7 +768,7 @@ static void push_it (struct it *, struct text_pos *);
 static void iterate_out_of_display_property (struct it *);
 static void pop_it (struct it *);
 static void redisplay_internal (void);
-static bool echo_area_display (bool);
+static void echo_area_display (bool);
 static void redisplay_windows (Lisp_Object);
 static void redisplay_window (Lisp_Object, bool);
 static Lisp_Object redisplay_window_error (Lisp_Object);
@@ -2661,10 +2661,18 @@ init_iterator (struct it *it, struct window *w,
      free realized faces now because they depend on face definitions
      that might have changed.  Don't free faces while there might be
      desired matrices pending which reference these faces.  */
-  if (face_change && !inhibit_free_realized_faces)
+  if (!inhibit_free_realized_faces)
     {
-      face_change = false;
-      free_all_realized_faces (Qnil);
+      if (face_change)
+       {
+         face_change = false;
+         free_all_realized_faces (Qnil);
+       }
+      else if (XFRAME (w->frame)->face_change)
+       {
+         XFRAME (w->frame)->face_change = 0;
+         free_all_realized_faces (w->frame);
+       }
     }
 
   /* Perhaps remap BASE_FACE_ID to a user-specified alternative.  */
@@ -4014,21 +4022,26 @@ face_before_or_after_it_pos (struct it *it, bool before_p)
              /* With bidi iteration, the character before the current
                 in the visual order cannot be found by simple
                 iteration, because "reverse" reordering is not
-                supported.  Instead, we need to use the move_it_*
-                family of functions.  */
+                supported.  Instead, we need to start from the string
+                beginning and go all the way to the current string
+                position, remembering the previous position.  */
              /* Ignore face changes before the first visible
                 character on this display line.  */
              if (it->current_x <= it->first_visible_x)
                return it->face_id;
              SAVE_IT (it_copy, *it, it_copy_data);
-             /* Implementation note: Since move_it_in_display_line
-                works in the iterator geometry, and thinks the first
-                character is always the leftmost, even in R2L lines,
-                we don't need to distinguish between the R2L and L2R
-                cases here.  */
-             move_it_in_display_line (&it_copy, SCHARS (it_copy.string),
-                                      it_copy.current_x - 1, MOVE_TO_X);
-             charpos = IT_STRING_CHARPOS (it_copy);
+             IT_STRING_CHARPOS (it_copy) = 0;
+             bidi_init_it (0, 0, FRAME_WINDOW_P (it_copy.f), &it_copy.bidi_it);
+
+             do
+               {
+                 charpos = IT_STRING_CHARPOS (it_copy);
+                 if (charpos >= SCHARS (it->string))
+                   break;
+                 bidi_move_to_visually_next (&it_copy.bidi_it);
+               }
+             while (IT_STRING_CHARPOS (it_copy) != IT_STRING_CHARPOS (*it));
+
              RESTORE_IT (it, it, it_copy_data);
            }
          else
@@ -4108,11 +4121,15 @@ face_before_or_after_it_pos (struct it *it, bool before_p)
        {
          if (before_p)
            {
+             int current_x;
+
              /* With bidi iteration, the character before the current
                 in the visual order cannot be found by simple
                 iteration, because "reverse" reordering is not
                 supported.  Instead, we need to use the move_it_*
-                family of functions.  */
+                family of functions, and move to the previous
+                character starting from the beginning of the visual
+                line.  */
              /* Ignore face changes before the first visible
                 character on this display line.  */
              if (it->current_x <= it->first_visible_x)
@@ -4123,8 +4140,9 @@ face_before_or_after_it_pos (struct it *it, bool before_p)
                 character is always the leftmost, even in R2L lines,
                 we don't need to distinguish between the R2L and L2R
                 cases here.  */
-             move_it_in_display_line (&it_copy, ZV,
-                                      it_copy.current_x - 1, MOVE_TO_X);
+             current_x = it_copy.current_x;
+             move_it_vertically_backward (&it_copy, 0);
+             move_it_in_display_line (&it_copy, ZV, current_x - 1, MOVE_TO_X);
              pos = it_copy.current.pos;
              RESTORE_IT (it, it, it_copy_data);
            }
@@ -5895,6 +5913,13 @@ push_it (struct it *it, struct text_pos *position)
     case GET_FROM_STRETCH:
       p->u.stretch.object = it->object;
       break;
+    case GET_FROM_BUFFER:
+    case GET_FROM_DISPLAY_VECTOR:
+    case GET_FROM_STRING:
+    case GET_FROM_C_STRING:
+      break;
+    default:
+      emacs_abort ();
     }
   p->position = position ? *position : it->position;
   p->current = it->current;
@@ -6017,6 +6042,11 @@ pop_it (struct it *it)
          it->method = GET_FROM_BUFFER;
          it->object = it->w->contents;
        }
+      break;
+    case GET_FROM_C_STRING:
+      break;
+    default:
+      emacs_abort ();
     }
   it->end_charpos = p->end_charpos;
   it->string_nchars = p->string_nchars;
@@ -11119,11 +11149,10 @@ clear_garbaged_frames (void)
 }
 
 
-/* Redisplay the echo area of the selected frame.  If UPDATE_FRAME_P,
-   update selected_frame.  Value is true if the mini-windows height
-   has been changed.  */
+/* Redisplay the echo area of the selected frame.  If UPDATE_FRAME_P, update
+   selected_frame.  */
 
-static bool
+static void
 echo_area_display (bool update_frame_p)
 {
   Lisp_Object mini_window;
@@ -11138,14 +11167,14 @@ echo_area_display (bool update_frame_p)
 
   /* Don't display if frame is invisible or not yet initialized.  */
   if (!FRAME_VISIBLE_P (f) || !f->glyphs_initialized_p)
-    return false;
+    return;
 
 #ifdef HAVE_WINDOW_SYSTEM
   /* When Emacs starts, selected_frame may be the initial terminal
      frame.  If we let this through, a message would be displayed on
      the terminal.  */
   if (FRAME_INITIAL_P (XFRAME (selected_frame)))
-    return false;
+    return;
 #endif /* HAVE_WINDOW_SYSTEM */
 
   /* Redraw garbaged frames.  */
@@ -11183,7 +11212,7 @@ echo_area_display (bool update_frame_p)
                 pending input.  */
              ptrdiff_t count = SPECPDL_INDEX ();
              specbind (Qredisplay_dont_pause, Qt);
-             windows_or_buffers_changed = 44;
+             fset_redisplay (f);
              redisplay_internal ();
              unbind_to (count, Qnil);
            }
@@ -11219,7 +11248,16 @@ echo_area_display (bool update_frame_p)
   if (EQ (mini_window, selected_window))
     CHARPOS (this_line_start_pos) = 0;
 
-  return window_height_changed_p;
+  if (window_height_changed_p)
+    {
+      fset_redisplay (f);
+
+      /* If window configuration was changed, frames may have been
+        marked garbaged.  Clear them or we will experience
+        surprises wrt scrolling.
+        FIXME: How/why/when?  */
+      clear_garbaged_frames ();
+    }
 }
 
 /* True if W's buffer was changed but not saved.  */
@@ -13445,7 +13483,7 @@ redisplay_internal (void)
             echo-area doesn't show through.  */
          && !MINI_WINDOW_P (XWINDOW (selected_window))))
     {
-      bool window_height_changed_p = echo_area_display (false);
+      echo_area_display (false);
 
       if (message_cleared_p)
        update_miniwindow_p = true;
@@ -13458,16 +13496,6 @@ redisplay_internal (void)
         the echo area.  */
       if (!display_last_displayed_message_p)
        message_cleared_p = false;
-
-      if (window_height_changed_p)
-       {
-         windows_or_buffers_changed = 50;
-
-         /* If window configuration was changed, frames may have been
-            marked garbaged.  Clear them or we will experience
-            surprises wrt scrolling.  */
-         clear_garbaged_frames ();
-       }
     }
   else if (EQ (selected_window, minibuf_window)
           && (current_buffer->clip_changed || window_outdated (w))
@@ -13521,6 +13549,7 @@ redisplay_internal (void)
       && FRAME_VISIBLE_P (XFRAME (w->frame))
       && !FRAME_OBSCURED_P (XFRAME (w->frame))
       && !XFRAME (w->frame)->cursor_type_changed
+      && !XFRAME (w->frame)->face_change
       /* Make sure recorded data applies to current buffer, etc.  */
       && this_line_buffer == current_buffer
       && match_p
@@ -13737,18 +13766,6 @@ redisplay_internal (void)
            continue;
 
        retry_frame:
-
-#if defined (HAVE_WINDOW_SYSTEM) && !defined (USE_GTK) && !defined (HAVE_NS)
-         /* Redisplay internal tool bar if this is the first time so we
-            can adjust the frame height right now, if necessary.  */
-         if (!f->tool_bar_redisplayed_once)
-           {
-             if (redisplay_tool_bar (f))
-               adjust_frame_glyphs (f);
-             f->tool_bar_redisplayed_once = true;
-           }
-#endif
-
          if (FRAME_WINDOW_P (f) || FRAME_TERMCAP_P (f) || f == sf)
            {
              bool gcscrollbars
@@ -15879,6 +15896,7 @@ redisplay_window (Lisp_Object window, bool just_this_one_p)
       && REDISPLAY_SOME_P ()
       && !w->redisplay
       && !w->update_mode_line
+      && !f->face_change
       && !f->redisplay
       && !buffer->text->redisplay
       && BUF_PT (buffer) == w->last_point)
@@ -21040,7 +21058,7 @@ window-specific overlays, which can affect the results.
 
 Strong directional characters `L', `R', and `AL' can have their
 intrinsic directionality overridden by directional override
-control characters RLO \(u+202e) and LRO \(u+202d).  See the
+control characters RLO (u+202e) and LRO (u+202d).  See the
 function `get-char-code-property' for a way to inquire about
 the `bidi-class' property of a character.  */)
   (Lisp_Object from, Lisp_Object to, Lisp_Object object)
@@ -24065,7 +24083,7 @@ calc_pixel_width_or_height (double *res, struct it *it, Lisp_Object prop,
        prop = Qnil;
     }
 
-  if (INTEGERP (prop) || FLOATP (prop))
+  if (NUMBERP (prop))
     {
       int base_unit = (width_p
                       ? FRAME_COLUMN_WIDTH (it->f)
@@ -24117,7 +24135,7 @@ calc_pixel_width_or_height (double *res, struct it *it, Lisp_Object prop,
            car = Qnil;
        }
 
-      if (INTEGERP (car) || FLOATP (car))
+      if (NUMBERP (car))
        {
          double fact;
          pixels = XFLOATINT (car);
@@ -25948,9 +25966,7 @@ produce_stretch_glyph (struct it *it)
       zero_width_ok_p = true;
       width = (int)tem;
     }
-#ifdef HAVE_WINDOW_SYSTEM
-  else if (FRAME_WINDOW_P (it->f)
-          && (prop = Fplist_get (plist, QCrelative_width), NUMVAL (prop) > 0))
+  else if (prop = Fplist_get (plist, QCrelative_width), NUMVAL (prop) > 0)
     {
       /* Relative width `:relative-width FACTOR' specified and valid.
         Compute the width of the characters having the `glyph'
@@ -25970,10 +25986,9 @@ produce_stretch_glyph (struct it *it)
 
       it2.glyph_row = NULL;
       it2.what = IT_CHARACTER;
-      x_produce_glyphs (&it2);
+      PRODUCE_GLYPHS (&it2);
       width = NUMVAL (prop) * it2.pixel_width;
     }
-#endif /* HAVE_WINDOW_SYSTEM */
   else if ((prop = Fplist_get (plist, QCalign_to), !NILP (prop))
           && calc_pixel_width_or_height (&tem, it, prop, font, true,
                                          &align_to))
@@ -29064,7 +29079,7 @@ on_hot_spot_p (Lisp_Object hot_spot, int x, int y)
       Lisp_Object lr, lx0, ly0;
       if (CONSP (circ)
          && CONSP (XCAR (circ))
-         && (lr = XCDR (circ), INTEGERP (lr) || FLOATP (lr))
+         && (lr = XCDR (circ), NUMBERP (lr))
          && (lx0 = XCAR (XCAR (circ)), INTEGERP (lx0))
          && (ly0 = XCDR (XCAR (circ)), INTEGERP (ly0)))
        {
@@ -30996,18 +31011,18 @@ This variable is not guaranteed to be accurate except while processing
 
   DEFVAR_LISP ("frame-title-format", Vframe_title_format,
     doc: /* Template for displaying the title bar of visible frames.
-\(Assuming the window manager supports this feature.)
+(Assuming the window manager supports this feature.)
 
 This variable has the same structure as `mode-line-format', except that
 the %c and %l constructs are ignored.  It is used only on frames for
-which no explicit name has been set \(see `modify-frame-parameters').  */);
+which no explicit name has been set (see `modify-frame-parameters').  */);
 
   DEFVAR_LISP ("icon-title-format", Vicon_title_format,
     doc: /* Template for displaying the title bar of an iconified frame.
-\(Assuming the window manager supports this feature.)
+(Assuming the window manager supports this feature.)
 This variable has the same structure as `mode-line-format' (which see),
 and is used only on frames for which no explicit name has been set
-\(see `modify-frame-parameters').  */);
+(see `modify-frame-parameters').  */);
   Vicon_title_format
     = Vframe_title_format
     = listn (CONSTYPE_PURE, 3,
@@ -31066,9 +31081,9 @@ A positive number means delay autoselection by that many seconds: a
 window is autoselected only after the mouse has remained in that
 window for the duration of the delay.
 A negative number has a similar effect, but causes windows to be
-autoselected only after the mouse has stopped moving.  \(Because of
+autoselected only after the mouse has stopped moving.  (Because of
 the way Emacs compares mouse events, you will occasionally wait twice
-that time before the window gets selected.\)
+that time before the window gets selected.)
 Any other value means to autoselect window instantaneously when the
 mouse pointer enters it.
 
index 030324963814a2493dfd426857ed22ad9a19aba6..40713f167ffc5e4a62b29cfd6a81c3c4286391e9 100644 (file)
@@ -687,7 +687,6 @@ clear_face_cache (bool clear_fonts_p)
 #endif /* HAVE_WINDOW_SYSTEM */
 }
 
-
 DEFUN ("clear-face-cache", Fclear_face_cache, Sclear_face_cache, 0, 1, 0,
        doc: /* Clear face caches on all frames.
 Optional THOROUGHLY non-nil means try to free unused fonts, too.  */)
@@ -709,10 +708,10 @@ Optional THOROUGHLY non-nil means try to free unused fonts, too.  */)
 DEFUN ("bitmap-spec-p", Fbitmap_spec_p, Sbitmap_spec_p, 1, 1, 0,
        doc: /* Value is non-nil if OBJECT is a valid bitmap specification.
 A bitmap specification is either a string, a file name, or a list
-\(WIDTH HEIGHT DATA) where WIDTH is the pixel width of the bitmap,
+(WIDTH HEIGHT DATA) where WIDTH is the pixel width of the bitmap,
 HEIGHT is its height, and DATA is a string containing the bits of
 the pixmap.  Bits are stored row by row, each row occupies
-\(WIDTH + 7)/8 bytes.  */)
+(WIDTH + 7)/8 bytes.  */)
   (Lisp_Object object)
 {
   bool pixmap_p = false;
@@ -1669,8 +1668,7 @@ check_lface_attrs (Lisp_Object attrs[LFACE_VECTOR_SIZE])
           || SYMBOLP (attrs[LFACE_SWIDTH_INDEX]));
   eassert (UNSPECIFIEDP (attrs[LFACE_HEIGHT_INDEX])
           || IGNORE_DEFFACE_P (attrs[LFACE_HEIGHT_INDEX])
-          || INTEGERP (attrs[LFACE_HEIGHT_INDEX])
-          || FLOATP (attrs[LFACE_HEIGHT_INDEX])
+          || NUMBERP (attrs[LFACE_HEIGHT_INDEX])
           || FUNCTIONP (attrs[LFACE_HEIGHT_INDEX]));
   eassert (UNSPECIFIEDP (attrs[LFACE_WEIGHT_INDEX])
           || IGNORE_DEFFACE_P (attrs[LFACE_WEIGHT_INDEX])
@@ -2529,7 +2527,10 @@ Value is a vector of face attributes.  */)
      free realized faces.  */
   if (NILP (Fget (face, Qface_no_inherit)))
     {
-      face_change = true;
+      if (f)
+       f->face_change = 1;
+      else
+       face_change = true;
       windows_or_buffers_changed = 54;
     }
 
@@ -2577,6 +2578,7 @@ The value is TO.  */)
   (Lisp_Object from, Lisp_Object to, Lisp_Object frame, Lisp_Object new_frame)
 {
   Lisp_Object lface, copy;
+  struct frame *f;
 
   CHECK_SYMBOL (from);
   CHECK_SYMBOL (to);
@@ -2587,6 +2589,7 @@ The value is TO.  */)
         strings etc. because 20.2 didn't do it either.  */
       lface = lface_from_face_name (NULL, from, true);
       copy = Finternal_make_lisp_face (to, Qnil);
+      f = NULL;
     }
   else
     {
@@ -2597,6 +2600,7 @@ The value is TO.  */)
       CHECK_LIVE_FRAME (new_frame);
       lface = lface_from_face_name (XFRAME (frame), from, true);
       copy = Finternal_make_lisp_face (to, new_frame);
+      f = XFRAME (new_frame);
     }
 
   vcopy (copy, 0, XVECTOR (lface)->contents, LFACE_VECTOR_SIZE);
@@ -2608,7 +2612,10 @@ The value is TO.  */)
      free realized faces.  */
   if (NILP (Fget (to, Qface_no_inherit)))
     {
-      face_change = true;
+      if (f)
+       f->face_change = 1;
+      else
+       face_change = true;
       windows_or_buffers_changed = 55;
     }
 
@@ -2631,6 +2638,7 @@ FRAME 0 means change the face on all frames, and change the default
   /* Set one of enum font_property_index (> 0) if ATTR is one of
      font-related attributes other than QCfont and QCfontset.  */
   enum font_property_index prop_index = 0;
+  struct frame *f;
 
   CHECK_SYMBOL (face);
   CHECK_SYMBOL (attr);
@@ -2651,6 +2659,7 @@ FRAME 0 means change the face on all frames, and change the default
   /* Set lface to the Lisp attribute vector of FACE.  */
   if (EQ (frame, Qt))
     {
+      f = NULL;
       lface = lface_from_face_name (NULL, face, true);
 
       /* When updating face-new-frame-defaults, we put :ignore-defface
@@ -2666,9 +2675,10 @@ FRAME 0 means change the face on all frames, and change the default
     {
       if (NILP (frame))
        frame = selected_frame;
+      f = XFRAME (frame);
 
       CHECK_LIVE_FRAME (frame);
-      lface = lface_from_face_name (XFRAME (frame), face, false);
+      lface = lface_from_face_name (f, face, false);
 
       /* If a frame-local face doesn't exist yet, create one.  */
       if (NILP (lface))
@@ -2990,11 +3000,11 @@ FRAME 0 means change the face on all frames, and change the default
   else if (EQ (attr, QCfont))
     {
 #ifdef HAVE_WINDOW_SYSTEM
-      if (EQ (frame, Qt) || FRAME_WINDOW_P (XFRAME (frame)))
+      if (EQ (frame, Qt) || FRAME_WINDOW_P (f))
        {
          if (!UNSPECIFIEDP (value) && !IGNORE_DEFFACE_P (value))
            {
-             struct frame *f;
+             struct frame *f1;
 
              old_value = LFACE_FONT (lface);
              if (! FONTP (value))
@@ -3014,28 +3024,29 @@ FRAME 0 means change the face on all frames, and change the default
                    signal_error ("Invalid font or font-spec", value);
                }
              if (EQ (frame, Qt))
-               f = XFRAME (selected_frame);
+               f1 = XFRAME (selected_frame);
              else
-               f = XFRAME (frame);
+               f1 = XFRAME (frame);
 
               /* FIXME:
                  If frame is t, and selected frame is a tty frame, the font
                  can't be realized.  An improvement would be to loop over frames
                  for a non-tty frame and use that.  See discussion in Bug#18573.
                  For a daemon, frame may be an initial frame (Bug#18869).  */
-              if (FRAME_WINDOW_P (f))
+              if (FRAME_WINDOW_P (f1))
                 {
                   if (! FONT_OBJECT_P (value))
                     {
                       Lisp_Object *attrs = XVECTOR (lface)->contents;
                       Lisp_Object font_object;
 
-                      font_object = font_load_for_lface (f, attrs, value);
+                      font_object = font_load_for_lface (f1, attrs, value);
                       if (NILP (font_object))
                         signal_error ("Font not available", value);
                       value = font_object;
                     }
-                  set_lface_from_font (f, lface, value, true);
+                  set_lface_from_font (f1, lface, value, true);
+                 f1->face_change = 1;
                 }
            }
          else
@@ -3046,7 +3057,7 @@ FRAME 0 means change the face on all frames, and change the default
   else if (EQ (attr, QCfontset))
     {
 #ifdef HAVE_WINDOW_SYSTEM
-      if (EQ (frame, Qt) || FRAME_WINDOW_P (XFRAME (frame)))
+      if (EQ (frame, Qt) || FRAME_WINDOW_P (f))
        {
          Lisp_Object tmp;
 
@@ -3108,7 +3119,7 @@ FRAME 0 means change the face on all frames, and change the default
       && NILP (Fget (face, Qface_no_inherit))
       && NILP (Fequal (old_value, value)))
     {
-      face_change = true;
+      f->face_change = true;
       windows_or_buffers_changed = 56;
     }
 
@@ -3281,7 +3292,7 @@ update_face_from_frame_parameter (struct frame *f, Lisp_Object param,
   if (!NILP (face)
       && NILP (Fget (face, Qface_no_inherit)))
     {
-      face_change = true;
+      f->face_change = true;
       windows_or_buffers_changed = 57;
     }
 }
@@ -4186,7 +4197,7 @@ free_realized_faces (struct face_cache *c)
       if (WINDOWP (f->root_window))
        {
          clear_current_matrices (f);
-         windows_or_buffers_changed = 58;
+         fset_redisplay (f);
        }
 
       unblock_input ();
@@ -4206,6 +4217,7 @@ free_all_realized_faces (Lisp_Object frame)
       Lisp_Object rest;
       FOR_EACH_FRAME (rest, frame)
        free_realized_faces (FRAME_FACE_CACHE (XFRAME (frame)));
+      windows_or_buffers_changed = 58;
     }
   else
     free_realized_faces (FRAME_FACE_CACHE (XFRAME (frame)));
@@ -4631,8 +4643,8 @@ DEFUN ("face-attributes-as-vector", Fface_attributes_as_vector,
    that a face containing all the attributes in ATTRS, when merged with the
    default face for display, can be represented in a way that's
 
-    \(1) different in appearance than the default face, and
-    \(2) `close in spirit' to what the attributes specify, if not exact.  */
+    (1) different in appearance than the default face, and
+    (2) `close in spirit' to what the attributes specify, if not exact.  */
 
 static bool
 x_supports_face_attributes_p (struct frame *f,
@@ -4731,8 +4743,8 @@ x_supports_face_attributes_p (struct frame *f,
    that a face containing all the attributes in ATTRS, when merged
    with the default face for display, can be represented in a way that's
 
-    \(1) different in appearance than the default face, and
-    \(2) `close in spirit' to what the attributes specify, if not exact.
+    (1) different in appearance than the default face, and
+    (2) `close in spirit' to what the attributes specify, if not exact.
 
    Point (2) implies that a `:weight black' attribute will be satisfied
    by any terminal that can display bold, and a `:foreground "yellow"' as
@@ -4914,8 +4926,8 @@ The definition of `supported' is somewhat heuristic, but basically means
 that a face containing all the attributes in ATTRIBUTES, when merged
 with the default face for display, can be represented in a way that's
 
\(1) different in appearance than the default face, and
\(2) `close in spirit' to what the attributes specify, if not exact.
+ (1) different in appearance than the default face, and
+ (2) `close in spirit' to what the attributes specify, if not exact.
 
 Point (2) implies that a `:weight black' attribute will be satisfied by
 any display that can display bold, and a `:foreground \"yellow\"' as long
@@ -6521,7 +6533,7 @@ changing this variable for it to take effect.  */);
 Each element is a cons (FONT-PATTERN . RESCALE-RATIO), where
 FONT-PATTERN is a font-spec or a regular expression matching a font name, and
 RESCALE-RATIO is a floating point number to specify how much larger
-\(or smaller) font we should use.  For instance, if a face requests
+(or smaller) font we should use.  For instance, if a face requests
 a font of 10 point, we actually use a font of 10 * RESCALE-RATIO point.  */);
   Vface_font_rescale_alist = Qnil;
 
index 0079e7b435776f0676e341d29b701082a1d5538d..d6a3d76e9483e22ba32d3e5fea365c4e55b98350 100644 (file)
@@ -1189,10 +1189,8 @@ x_change_tool_bar_height (struct frame *f, int height)
   f->n_tool_bar_rows = 0;
 
   adjust_frame_size (f, -1, -1,
-                    ((!f->tool_bar_redisplayed_once
-                      && (NILP (fullscreen =
-                                get_frame_param (f, Qfullscreen))
-                          || EQ (fullscreen, Qfullwidth))) ? 1
+                    ((NILP (fullscreen = get_frame_param (f, Qfullscreen))
+                      || EQ (fullscreen, Qfullwidth)) ? 1
                      : (old_height == 0 || height == 0) ? 2
                      : 4),
                     false, Qtool_bar_lines);
@@ -3446,8 +3444,8 @@ x_focus_frame (struct frame *f)
 
 \f
 DEFUN ("xw-color-defined-p", Fxw_color_defined_p, Sxw_color_defined_p, 1, 2, 0,
-       doc: /* Internal function called by `color-defined-p', which see
-.\(Note that the Nextstep version of this function ignores FRAME.)  */)
+       doc: /* Internal function called by `color-defined-p', which see.
+(Note that the Nextstep version of this function ignores FRAME.)  */)
   (Lisp_Object color, Lisp_Object frame)
 {
   XColor foo;
@@ -3614,7 +3612,7 @@ If omitted or nil, that stands for the selected frame's display.  */)
 DEFUN ("x-server-vendor", Fx_server_vendor, Sx_server_vendor, 0, 1, 0,
        doc: /* Return the "vendor ID" string of the GUI software on TERMINAL.
 
-\(Labeling every distributor as a "vendor" embodies the false assumption
+(Labeling every distributor as a "vendor" embodies the false assumption
 that operating systems cannot be developed and distributed noncommercially.)
 The optional argument TERMINAL specifies which display to ask about.
 
@@ -4712,7 +4710,7 @@ DISPLAY is the name of the display to connect to.
 Optional second arg XRM-STRING is a string of resources in xrdb format.
 If the optional third arg MUST-SUCCEED is non-nil,
 terminate Emacs if we can't open the connection.
-\(In the Nextstep version, the last two arguments are currently ignored.)  */)
+(In the Nextstep version, the last two arguments are currently ignored.)  */)
   (Lisp_Object display, Lisp_Object xrm_string, Lisp_Object must_succeed)
 {
   char *xrm_option;
index 94a5584214f12425b46a3bf7efdff642de0c0d5f..9aaa10c6efa877c2822078c731ac91e77d3acb77 100644 (file)
@@ -1915,7 +1915,7 @@ DEFUN ("x-own-selection-internal", Fx_own_selection_internal,
        Sx_own_selection_internal, 2, 3, 0,
        doc: /* Assert an X selection of type SELECTION and value VALUE.
 SELECTION is a symbol, typically `PRIMARY', `SECONDARY', or `CLIPBOARD'.
-\(Those are literal upper-case symbol names, since that's what X expects.)
+(Those are literal upper-case symbol names, since that's what X expects.)
 VALUE is typically a string, or a cons of two markers, but may be
 anything that the functions on `selection-converter-alist' know about.
 
@@ -1944,7 +1944,7 @@ DEFUN ("x-get-selection-internal", Fx_get_selection_internal,
        Sx_get_selection_internal, 2, 4, 0,
        doc: /* Return text selected from some X window.
 SELECTION-SYMBOL is typically `PRIMARY', `SECONDARY', or `CLIPBOARD'.
-\(Those are literal upper-case symbol names, since that's what X expects.)
+(Those are literal upper-case symbol names, since that's what X expects.)
 TARGET-TYPE is the type of data desired, typically `STRING'.
 
 TIME-STAMP is the time to use in the XConvertSelection call for foreign
@@ -2048,7 +2048,7 @@ DEFUN ("x-selection-owner-p", Fx_selection_owner_p, Sx_selection_owner_p,
        doc: /* Whether the current Emacs process owns the given X Selection.
 The arg should be the name of the selection in question, typically one of
 the symbols `PRIMARY', `SECONDARY', or `CLIPBOARD'.
-\(Those are literal upper-case symbol names, since that's what X expects.)
+(Those are literal upper-case symbol names, since that's what X expects.)
 For convenience, the symbol nil is the same as `PRIMARY',
 and t is the same as `SECONDARY'.
 
@@ -2271,7 +2271,7 @@ x_fill_property_data (Display *dpy, Lisp_Object data, void *ret, int format)
     {
       Lisp_Object o = XCAR (iter);
 
-      if (INTEGERP (o) || FLOATP (o) || CONSP (o))
+      if (NUMBERP (o) || CONSP (o))
         {
           if (CONSP (o)
              && RANGED_INTEGERP (X_LONG_MIN >> 16, XCAR (o), X_LONG_MAX >> 16)
@@ -2547,7 +2547,7 @@ x_send_client_event (Lisp_Object display, Lisp_Object dest, Lisp_Object from,
       else
         error ("DEST as a string must be one of PointerWindow or InputFocus");
     }
-  else if (INTEGERP (dest) || FLOATP (dest) || CONSP (dest))
+  else if (NUMBERP (dest) || CONSP (dest))
     CONS_TO_INTEGER (dest, Window, wdest);
   else
     error ("DEST must be a frame, nil, string, number or cons");
@@ -2623,7 +2623,7 @@ and the local selection value (whatever was given to
 `x-own-selection-internal').
 
 The function should return the value to send to the X server
-\(typically a string).  A return value of nil
+(typically a string).  A return value of nil
 means that the conversion could not be done.
 A return value which is the symbol `NULL'
 means that a side-effect was executed,
@@ -2632,10 +2632,10 @@ and there is no meaningful selection value.  */);
 
   DEFVAR_LISP ("x-lost-selection-functions", Vx_lost_selection_functions,
               doc: /* A list of functions to be called when Emacs loses an X selection.
-\(This happens when some other X client makes its own selection
+(This happens when some other X client makes its own selection
 or when a Lisp program explicitly clears the selection.)
 The functions are called with one argument, the selection type
-\(a symbol, typically `PRIMARY', `SECONDARY', or `CLIPBOARD').  */);
+(a symbol, typically `PRIMARY', `SECONDARY', or `CLIPBOARD').  */);
   Vx_lost_selection_functions = Qnil;
 
   DEFVAR_LISP ("x-sent-selection-functions", Vx_sent_selection_functions,
index 9ee76e967e124734688892b576076178169658d7..dd54552510c9b336e88fdbbaac53b32eeaeed46c 100644 (file)
@@ -575,7 +575,7 @@ x_cr_export_frames (Lisp_Object frames, cairo_surface_type_t surface_type)
   cairo_t *cr;
   int width, height;
   void (*surface_set_size_func) (cairo_surface_t *, double, double) = NULL;
-  Lisp_Object acc = Qnil, args[2];
+  Lisp_Object acc = Qnil;
   int count = SPECPDL_INDEX ();
 
   Fredisplay (Qt);
@@ -659,9 +659,7 @@ x_cr_export_frames (Lisp_Object frames, cairo_surface_type_t surface_type)
 #endif
   unbind_to (count, Qnil);
 
-  args[0] = intern ("concat");
-  args[1] = Fnreverse (acc);
-  return Fapply (2, args);
+  return CALLN (Fapply, intern ("concat"), Fnreverse (acc));
 }
 
 #endif /* USE_CAIRO */
@@ -5407,6 +5405,8 @@ xg_scroll_callback (GtkRange     *range,
              ? scroll_bar_after_handle : scroll_bar_below_handle);
       bar->dragging = -1;
       break;
+    default:
+      break;
     }
 
   if (part != scroll_bar_nowhere)
@@ -10193,6 +10193,9 @@ x_check_fullscreen (struct frame *f)
         case FULLSCREEN_HEIGHT:
           lval = Qfullheight;
           height = x_display_pixel_height (dpyinfo);
+         break;
+       default:
+         emacs_abort ();
         }
 
       frame_size_history_add
index 59a88663e2a6defe3df25f95de998bd331c3b41d..41f54f8aa69a061b4f32bbfc593d90c4d9cd825a 100644 (file)
@@ -86,7 +86,7 @@ WRITE_LOG = > $@ 2>&1 || { stat=ERROR; cat $@; }; echo $$stat: $@
 ## -l ./basename treats basename as a literal file (it would be nice
 ## to change this; bug#17848 - if that gets done, this can be simplified).
 ##
-## Beware: it approximates `no-byte-compile', so watch out for false-positives!
+## Beware: it approximates 'no-byte-compile', so watch out for false-positives!
 %.log: ${srcdir}/%.el
        @if grep '^;.*no-byte-compile: t' $< > /dev/null; then \
          loadfile=$<; \
index 204e03d423df95e4d54216bcc19828a43b0479e5..86184d613fc5f028994c85a43260b02f55bd6d42 100644 (file)
 (setq auto-revert-notify-exclude-dir-regexp "nothing-to-be-excluded"
       auto-revert-stop-on-user-input nil)
 
-(defvar auto-revert--timeout 10)
+(defconst auto-revert--timeout 10
+  "Time to wait until a message appears in the *Messages* buffer.")
+
+(defun auto-revert--wait-for-revert (buffer)
+  "Wait until the *Messages* buffer reports reversion of BUFFER."
+  (with-timeout (auto-revert--timeout nil)
+    (with-current-buffer "*Messages*"
+      (while
+          (null (string-match
+                 (format-message "Reverting buffer `%s'." (buffer-name buffer))
+                 (buffer-string)))
+        (read-event nil nil 0.1)))))
 
 (ert-deftest auto-revert-test00-auto-revert-mode ()
   "Check autorevert for a file."
             (write-region "another text" nil tmpfile nil 'no-message)
 
            ;; Check, that the buffer has been reverted.
-            (with-timeout (auto-revert--timeout nil)
-              (with-current-buffer "*Messages*"
-                (while
-                    (null (string-match
-                           (format "Reverting buffer `%s'." (buffer-name buf))
-                           (buffer-string)))
-                  (read-event nil nil 0.1))))
+            (auto-revert--wait-for-revert buf)
             (should (string-match "another text" (buffer-string)))
 
             ;; When the buffer is modified, it shall not be reverted.
            (sleep-for 1)
             (write-region "any text" nil tmpfile nil 'no-message)
 
-           ;; Check, whether the buffer has been reverted.
-            (with-timeout (auto-revert--timeout nil)
-              (with-current-buffer "*Messages*"
-                (while
-                    (null (string-match
-                           (format "Reverting buffer `%s'." (buffer-name buf))
-                           (buffer-string)))
-                  (read-event nil nil 0.1))))
+           ;; Check, that the buffer hasn't been reverted.
+            (auto-revert--wait-for-revert buf)
             (should-not (string-match "any text" (buffer-string)))))
 
       ;; Exit.
             (write-region "another text" nil tmpfile 'append 'no-message)
 
            ;; Check, that the buffer has been reverted.
-            (with-timeout (auto-revert--timeout nil)
-              (with-current-buffer "*Messages*"
-                (while
-                    (null (string-match
-                           (format "Reverting buffer `%s'." (buffer-name buf))
-                           (buffer-string)))
-                  (read-event nil nil 0.1))))
+            (auto-revert--wait-for-revert buf)
             (should
              (string-match "modified text\nanother text" (buffer-string)))))
 
             (delete-file tmpfile)
 
            ;; Check, that the buffer has been reverted.
-            (with-timeout (auto-revert--timeout nil)
-              (with-current-buffer "*Messages*"
-                (while
-                    (null (string-match
-                           (format "Reverting buffer `%s'." (buffer-name buf))
-                           (buffer-string)))
-                  (read-event nil nil 0.1))))
-            (should
-             (null
-              (string-match name (substring-no-properties (buffer-string)))))
+            (auto-revert--wait-for-revert buf)
+            (should-not
+             (string-match name (substring-no-properties (buffer-string))))
 
             ;; Make dired buffer modified.  Check, that the buffer has
             ;; been still reverted.
            (sleep-for 1)
             (write-region "any text" nil tmpfile nil 'no-message)
 
-           ;; Check, that the buffer hasn't been reverted.
-            (with-timeout (auto-revert--timeout nil)
-              (with-current-buffer "*Messages*"
-                (while
-                    (null (string-match
-                           (format "Reverting buffer `%s'." (buffer-name buf))
-                           (buffer-string)))
-                  (read-event nil nil 0.1))))
+           ;; Check, that the buffer has been reverted.
+            (auto-revert--wait-for-revert buf)
             (should
              (string-match name (substring-no-properties (buffer-string))))))
 
index 0c383f7c7b630cacfe6ecdc1111bbf22980389bc..0974a78e073507639377e0588d482b57b7c89889 100644 (file)
     ("1>test_main.cpp(29): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int"
      3 nil 29 "test_main.cpp")
     ;; watcom
-    ("..\src\ctrl\lister.c(109): Error! E1009: Expecting ';' but found '{'"
-     1 nil 109 "..\src\ctrl\lister.c")
-    ("..\src\ctrl\lister.c(120): Warning! W201: Unreachable code"
-     1 nil 120 "..\src\ctrl\lister.c")
+    ("..\\src\\ctrl\\lister.c(109): Error! E1009: Expecting ';' but found '{'"
+     1 nil 109 "..\\src\\ctrl\\lister.c")
+    ("..\\src\\ctrl\\lister.c(120): Warning! W201: Unreachable code"
+     1 nil 120 "..\\src\\ctrl\\lister.c")
     ;; oracle
     ("Semantic error at line 528, column 5, file erosacqdb.pc:"
      1 5 528 "erosacqdb.pc")
index 7886b557141007ecc6ca2c7c87e9c744a88aae5c..2f6675a28045ce140bd01e3c5075075f967986a3 100644 (file)
@@ -258,7 +258,7 @@ to (xref-elisp-test-descr-to-target xref)."
 (cl-defstruct (xref-elisp-root-type)
   slot-1)
 
-(cl-defgeneric xref-elisp-generic-no-methods ()
+(cl-defgeneric xref-elisp-generic-no-methods (arg1 arg2)
   "doc string generic no-methods"
   ;; No default implementation, no methods, but fboundp is true for
   ;; this symbol; it calls cl-no-applicable-method
@@ -269,44 +269,44 @@ to (xref-elisp-test-descr-to-target xref)."
 ;; causes the batch mode test to fail; the symbol shows up as
 ;; ‘this’. It passes in interactive tests, so I haven't been able to
 ;; track down the problem.
-(cl-defmethod xref-elisp-generic-no-default ((this xref-elisp-root-type))
+(cl-defmethod xref-elisp-generic-no-default ((this xref-elisp-root-type) arg2)
   "doc string generic no-default xref-elisp-root-type"
   "non-default for no-default")
 
 ;; defgeneric after defmethod in file to ensure the fallback search
 ;; method of just looking for the function name will fail.
-(cl-defgeneric xref-elisp-generic-no-default ()
+(cl-defgeneric xref-elisp-generic-no-default (arg1 arg2)
   "doc string generic no-default generic"
   ;; No default implementation; this function calls the cl-generic
   ;; dispatching code.
   )
 
-(cl-defgeneric xref-elisp-generic-co-located-default ()
+(cl-defgeneric xref-elisp-generic-co-located-default (arg1 arg2)
   "doc string generic co-located-default"
   "co-located default")
 
-(cl-defmethod xref-elisp-generic-co-located-default ((this xref-elisp-root-type))
+(cl-defmethod xref-elisp-generic-co-located-default ((this xref-elisp-root-type) arg2)
   "doc string generic co-located-default xref-elisp-root-type"
   "non-default for co-located-default")
 
-(cl-defgeneric xref-elisp-generic-separate-default ()
+(cl-defgeneric xref-elisp-generic-separate-default (arg1 arg2)
   "doc string generic separate-default"
   ;; default implementation provided separately
   )
 
-(cl-defmethod xref-elisp-generic-separate-default ()
+(cl-defmethod xref-elisp-generic-separate-default (arg1 arg2)
   "doc string generic separate-default default"
   "separate default")
 
-(cl-defmethod xref-elisp-generic-separate-default ((this xref-elisp-root-type))
+(cl-defmethod xref-elisp-generic-separate-default ((this xref-elisp-root-type) arg2)
   "doc string generic separate-default xref-elisp-root-type"
   "non-default for separate-default")
 
-(cl-defmethod xref-elisp-generic-implicit-generic ()
+(cl-defmethod xref-elisp-generic-implicit-generic (arg1 arg2)
   "doc string generic implicit-generic default"
   "default for implicit generic")
 
-(cl-defmethod xref-elisp-generic-implicit-generic ((this xref-elisp-root-type))
+(cl-defmethod xref-elisp-generic-implicit-generic ((this xref-elisp-root-type) arg2)
   "doc string generic implicit-generic xref-elisp-root-type"
   "non-default for implicit generic")
 
@@ -327,9 +327,9 @@ to (xref-elisp-test-descr-to-target xref)."
              (xref-make-elisp-location
               'xref-elisp-generic-no-default 'cl-defgeneric
               (expand-file-name "elisp-mode-tests.el" emacs-test-dir)))
-   (xref-make "(cl-defmethod xref-elisp-generic-no-default ((this xref-elisp-root-type)))"
+   (xref-make "(cl-defmethod xref-elisp-generic-no-default ((this xref-elisp-root-type) arg2))"
              (xref-make-elisp-location
-              '(xref-elisp-generic-no-default xref-elisp-root-type) 'cl-defmethod
+              '(xref-elisp-generic-no-default xref-elisp-root-type t) 'cl-defmethod
               (expand-file-name "elisp-mode-tests.el" emacs-test-dir)))
    ))
 
@@ -340,9 +340,9 @@ to (xref-elisp-test-descr-to-target xref)."
              (xref-make-elisp-location
               'xref-elisp-generic-co-located-default 'cl-defgeneric
               (expand-file-name "elisp-mode-tests.el" emacs-test-dir)))
-   (xref-make "(cl-defmethod xref-elisp-generic-co-located-default ((this xref-elisp-root-type)))"
+   (xref-make "(cl-defmethod xref-elisp-generic-co-located-default ((this xref-elisp-root-type) arg2))"
              (xref-make-elisp-location
-              '(xref-elisp-generic-co-located-default xref-elisp-root-type) 'cl-defmethod
+              '(xref-elisp-generic-co-located-default xref-elisp-root-type t) 'cl-defmethod
               (expand-file-name "elisp-mode-tests.el" emacs-test-dir)))
    ))
 
@@ -353,26 +353,26 @@ to (xref-elisp-test-descr-to-target xref)."
              (xref-make-elisp-location
               'xref-elisp-generic-separate-default 'cl-defgeneric
               (expand-file-name "elisp-mode-tests.el" emacs-test-dir)))
-   (xref-make "(cl-defmethod xref-elisp-generic-separate-default ())"
+   (xref-make "(cl-defmethod xref-elisp-generic-separate-default (arg1 arg2))"
               (xref-make-elisp-location
-               '(xref-elisp-generic-separate-default) 'cl-defmethod
+               '(xref-elisp-generic-separate-default t t) 'cl-defmethod
                (expand-file-name "elisp-mode-tests.el" emacs-test-dir)))
-   (xref-make "(cl-defmethod xref-elisp-generic-separate-default ((this xref-elisp-root-type)))"
+   (xref-make "(cl-defmethod xref-elisp-generic-separate-default ((this xref-elisp-root-type) arg2))"
              (xref-make-elisp-location
-              '(xref-elisp-generic-separate-default xref-elisp-root-type) 'cl-defmethod
+              '(xref-elisp-generic-separate-default xref-elisp-root-type t) 'cl-defmethod
               (expand-file-name "elisp-mode-tests.el" emacs-test-dir)))
    ))
 
 (xref-elisp-deftest find-defs-defgeneric-implicit-generic
   (elisp--xref-find-definitions 'xref-elisp-generic-implicit-generic)
   (list
-   (xref-make "(cl-defmethod xref-elisp-generic-implicit-generic ())"
+   (xref-make "(cl-defmethod xref-elisp-generic-implicit-generic (arg1 arg2))"
              (xref-make-elisp-location
-              '(xref-elisp-generic-implicit-generic) 'cl-defmethod
+              '(xref-elisp-generic-implicit-generic t t) 'cl-defmethod
               (expand-file-name "elisp-mode-tests.el" emacs-test-dir)))
-   (xref-make "(cl-defmethod xref-elisp-generic-implicit-generic ((this xref-elisp-root-type)))"
+   (xref-make "(cl-defmethod xref-elisp-generic-implicit-generic ((this xref-elisp-root-type) arg2))"
              (xref-make-elisp-location
-              '(xref-elisp-generic-implicit-generic xref-elisp-root-type) 'cl-defmethod
+              '(xref-elisp-generic-implicit-generic xref-elisp-root-type t) 'cl-defmethod
               (expand-file-name "elisp-mode-tests.el" emacs-test-dir)))
    ))
 
index 11b7ed4da7f43b94c776219e6f47f3fe64059ba9..660a1cb218e1ecfd4299f9636751fa7ca8a726df 100644 (file)
   "This test attempts to demonstrate that there is no way to
 force immediate truncation of the *Messages* buffer from Lisp
 \(and hence justifies the existence of
-`ert--force-message-log-buffer-truncation'\): The only way that
-came to my mind was \(message \"\"\), which doesn't have the
+`ert--force-message-log-buffer-truncation'): The only way that
+came to my mind was \(message \"\"), which doesn't have the
 desired effect."
   :tags '(:causes-redisplay)
   (ert-with-buffer-renamed ("*Messages*")
index 11589b99295c214ab63a9257907fde4870f41e18..03946dd8acf428d96f26dec545c6d50383799d76 100644 (file)
@@ -1,4 +1,4 @@
-;;; file-notify-tests.el --- Tests of file notifications
+;;; file-notify-tests.el --- Tests of file notifications  -*- lexical-binding: t; -*-
 
 ;; Copyright (C) 2013-2015 Free Software Foundation, Inc.
 
 (defvar file-notify--test-desc nil)
 (defvar file-notify--test-results nil)
 (defvar file-notify--test-event nil)
+(defvar file-notify--test-events nil)
+(defun file-notify--test-timeout ()
+  (if (file-remote-p temporary-file-directory) 6 3))
+
+(defun file-notify--test-cleanup ()
+  "Cleanup after a test."
+  (file-notify-rm-watch file-notify--test-desc)
+
+  (when (and file-notify--test-tmpfile
+             (file-exists-p file-notify--test-tmpfile))
+    (if (directory-name-p file-notify--test-tmpfile)
+        (delete-directory file-notify--test-tmpfile 'recursive)
+      (delete-file file-notify--test-tmpfile)))
+  (when (and file-notify--test-tmpfile1
+             (file-exists-p file-notify--test-tmpfile1))
+    (if (directory-name-p file-notify--test-tmpfile1)
+        (delete-directory file-notify--test-tmpfile1 'recursive)
+      (delete-file file-notify--test-tmpfile1)))
+  (when (file-remote-p temporary-file-directory)
+    (tramp-cleanup-connection
+     (tramp-dissect-file-name temporary-file-directory) nil 'keep-password))
+
+  (setq file-notify--test-tmpfile nil)
+  (setq file-notify--test-tmpfile1 nil)
+  (setq file-notify--test-desc nil)
+  (setq file-notify--test-results nil)
+  (setq file-notify--test-events nil)
+  (when file-notify--test-event
+    (error "file-notify--test-event should not be set but bound dynamically")))
 
 (setq password-cache-expiry nil
       tramp-verbose 0
@@ -116,10 +145,19 @@ being the result.")
 (ert-deftest file-notify-test00-availability ()
   "Test availability of `file-notify'."
   (skip-unless (file-notify--test-local-enabled))
+  ;; Report the native library which has been used.
+  (if (null (file-remote-p temporary-file-directory))
+      (message "Local library: `%s'" file-notify--library)
+    (message "Remote command: `%s'"
+             (replace-regexp-in-string
+              "<[[:digit:]]+>\\'" ""
+              (process-name (cdr file-notify--test-remote-enabled-checked)))))
   (should
    (setq file-notify--test-desc
          (file-notify-add-watch temporary-file-directory '(change) 'ignore)))
-  (file-notify-rm-watch file-notify--test-desc))
+
+  ;; Cleanup.
+  (file-notify--test-cleanup))
 
 (file-notify--deftest-remote file-notify-test00-availability
   "Test availability of `file-notify' for remote files.")
@@ -157,7 +195,10 @@ being the result.")
   (should
    (equal (should-error
            (file-notify-add-watch temporary-file-directory '(change) 3))
-          '(wrong-type-argument 3))))
+          '(wrong-type-argument 3)))
+
+  ;; Cleanup.
+  (file-notify--test-cleanup))
 
 (file-notify--deftest-remote file-notify-test01-add-watch
   "Check `file-notify-add-watch' for remote files.")
@@ -166,7 +207,7 @@ being the result.")
   "Ert test function to be called by `file-notify--test-event-handler'.
 We cannot pass arguments, so we assume that `file-notify--test-event'
 is bound somewhere."
-  ;(message "Event %S" file-notify--test-event)
+  ;;(message "Event %S" file-notify--test-event)
   ;; Check the descriptor.
   (should (equal (car file-notify--test-event) file-notify--test-desc))
   ;; Check the file name.
@@ -180,11 +221,15 @@ is bound somewhere."
       (file-notify--event-file1-name file-notify--test-event)
       file-notify--test-tmpfile1))))
 
-(defun file-notify--test-event-handler (file-notify--test-event)
+(defun file-notify--test-event-handler (event)
   "Run a test over FILE-NOTIFY--TEST-EVENT.
-Save the result in `file-notify--test-results', for later analysis."
-  (let ((result
-        (ert-run-test (make-ert-test :body 'file-notify--test-event-test))))
+For later analysis, append the test result to `file-notify--test-results'
+and the event to `file-notify--test-events'."
+  (let* ((file-notify--test-event event)
+         (result
+          (ert-run-test (make-ert-test :body 'file-notify--test-event-test))))
+    (setq file-notify--test-events
+          (append file-notify--test-events `(,file-notify--test-event)))
     (setq file-notify--test-results
          (append file-notify--test-results `(,result)))))
 
@@ -194,60 +239,123 @@ Save the result in `file-notify--test-results', for later analysis."
    (make-temp-name "file-notify-test") temporary-file-directory))
 
 (defmacro file-notify--wait-for-events (timeout until)
-  "Wait for file notification events until form UNTIL is true.
+  "Wait for and return file notification events until form UNTIL is true.
 TIMEOUT is the maximum time to wait for, in seconds."
   `(with-timeout (,timeout (ignore))
      (while (null ,until)
        (read-event nil nil 0.1))))
 
+(defmacro file-notify--test-with-events (timeout events &rest body)
+  "Run BODY collecting events and then compare with EVENTS.
+Don't wait longer than TIMEOUT seconds for the events to be delivered."
+  (declare (indent 2))
+  (let ((outer (make-symbol "outer")))
+    `(let ((,outer file-notify--test-events))
+       (let (file-notify--test-events)
+         ,@body
+         (file-notify--wait-for-events
+          ,timeout (= (length ,events) (length file-notify--test-events)))
+         (should (equal ,events (mapcar #'cadr file-notify--test-events)))
+         (setq ,outer (append ,outer file-notify--test-events)))
+       (setq file-notify--test-events ,outer))))
+
 (ert-deftest file-notify-test02-events ()
-  "Check file creation/removal notifications."
+  "Check file creation/change/removal notifications."
   (skip-unless (file-notify--test-local-enabled))
   (unwind-protect
       (progn
-        (setq file-notify--test-results nil
-              file-notify--test-tmpfile (file-notify--test-make-temp-name)
+        ;; Check creation, change, and deletion.
+        (setq file-notify--test-tmpfile (file-notify--test-make-temp-name)
               file-notify--test-tmpfile1 (file-notify--test-make-temp-name)
               file-notify--test-desc
               (file-notify-add-watch
                file-notify--test-tmpfile
                '(change) 'file-notify--test-event-handler))
+        (file-notify--test-with-events
+            (file-notify--test-timeout) '(created changed deleted)
+          (write-region
+           "any text" nil file-notify--test-tmpfile nil 'no-message)
+          (delete-file file-notify--test-tmpfile))
+        (file-notify-rm-watch file-notify--test-desc)
+
+        ;; Check copy.
+        (setq file-notify--test-desc
+              (file-notify-add-watch
+               file-notify--test-tmpfile
+               '(change) 'file-notify--test-event-handler))
         (should file-notify--test-desc)
-
-        ;; Check creation and removal.
-        (write-region
-         "any text" nil file-notify--test-tmpfile nil 'no-message)
-        (delete-file file-notify--test-tmpfile)
-        (sleep-for 0.1)
-
-        ;; Check copy and rename.
-        (write-region
-         "any text" nil file-notify--test-tmpfile nil 'no-message)
-        (copy-file file-notify--test-tmpfile file-notify--test-tmpfile1)
-        (delete-file file-notify--test-tmpfile)
-        (delete-file file-notify--test-tmpfile1)
-        (sleep-for 0.1)
-
-        (write-region
-         "any text" nil file-notify--test-tmpfile nil 'no-message)
-        (rename-file file-notify--test-tmpfile file-notify--test-tmpfile1)
-        (delete-file file-notify--test-tmpfile1)
-        (sleep-for 0.1))
-
-    ;; Wait for events, and exit.
-    (file-notify--wait-for-events 5 file-notify--test-results)
-    (file-notify-rm-watch file-notify--test-desc)
-    (ignore-errors (delete-file file-notify--test-tmpfile))
-    (ignore-errors (delete-file file-notify--test-tmpfile1)))
-
-  (should file-notify--test-results)
-  (dolist (result file-notify--test-results)
-    ;(message "%s" (ert-test-result-messages result))
-    (when (ert-test-failed-p result)
-      (ert-fail (cadr (ert-test-result-with-condition-condition result))))))
+        (file-notify--test-with-events
+            (file-notify--test-timeout)
+            ;; w32notify does not distinguish between `changed' and
+            ;; `attribute-changed'.
+            (if (eq file-notify--library 'w32notify)
+                '(created changed changed deleted)
+              '(created changed deleted))
+          (write-region
+           "any text" nil file-notify--test-tmpfile nil 'no-message)
+          (copy-file file-notify--test-tmpfile file-notify--test-tmpfile1)
+          ;; The next two events shall not be visible.
+          (set-file-modes file-notify--test-tmpfile 000)
+          (read-event nil nil 0.1) ; In order to distinguish the events.
+          (set-file-times file-notify--test-tmpfile '(0 0))
+          (delete-file file-notify--test-tmpfile)
+          (delete-file file-notify--test-tmpfile1))
+        (file-notify-rm-watch file-notify--test-desc)
+
+        ;; Check rename.
+        (setq file-notify--test-desc
+              (file-notify-add-watch
+               file-notify--test-tmpfile
+               '(change) 'file-notify--test-event-handler))
+        (should file-notify--test-desc)
+        (file-notify--test-with-events
+            (file-notify--test-timeout) '(created changed renamed)
+          (write-region
+           "any text" nil file-notify--test-tmpfile nil 'no-message)
+          (rename-file file-notify--test-tmpfile file-notify--test-tmpfile1)
+          ;; After the rename, we won't get events anymore.
+          (delete-file file-notify--test-tmpfile1))
+        (file-notify-rm-watch file-notify--test-desc)
+
+        ;; Check attribute change.  It doesn't work for w32notify.
+        (unless (eq file-notify--library 'w32notify)
+          (setq file-notify--test-desc
+                (file-notify-add-watch
+                 file-notify--test-tmpfile
+                 '(attribute-change) 'file-notify--test-event-handler))
+          (file-notify--test-with-events
+              (file-notify--test-timeout) '(attribute-changed attribute-changed)
+            (write-region
+             "any text" nil file-notify--test-tmpfile nil 'no-message)
+            (set-file-modes file-notify--test-tmpfile 000)
+            (read-event nil nil 0.1) ; In order to distinguish the events.
+            (set-file-times file-notify--test-tmpfile '(0 0))
+            (delete-file file-notify--test-tmpfile))
+          (file-notify-rm-watch file-notify--test-desc))
+
+        ;; Check the global sequence again just to make sure that
+        ;; `file-notify--test-events' has been set correctly.
+        (should (equal (mapcar #'cadr file-notify--test-events)
+                       (if (eq file-notify--library 'w32notify)
+                           '(created changed deleted
+                                     created changed changed deleted
+                                     created changed renamed)
+                         '(created changed deleted
+                                   created changed deleted
+                                   created changed renamed
+                                   attribute-changed attribute-changed))))
+        (should file-notify--test-results)
+        (dolist (result file-notify--test-results)
+          ;;(message "%s" (ert-test-result-messages result))
+          (when (ert-test-failed-p result)
+            (ert-fail
+             (cadr (ert-test-result-with-condition-condition result))))))
+
+    ;; Cleanup.
+    (file-notify--test-cleanup)))
 
 (file-notify--deftest-remote file-notify-test02-events
-  "Check file creation/removal notifications for remote files.")
+  "Check file creation/change/removal notifications for remote files.")
 
 (require 'autorevert)
 (setq auto-revert-notify-exclude-dir-regexp "nothing-to-be-excluded"
@@ -255,8 +363,7 @@ TIMEOUT is the maximum time to wait for, in seconds."
       auto-revert-stop-on-user-input nil)
 
 (ert-deftest file-notify-test03-autorevert ()
-  "Check autorevert via file notification.
-This test is skipped in batch mode."
+  "Check autorevert via file notification."
   (skip-unless (file-notify--test-local-enabled))
   ;; `auto-revert-buffers' runs every 5".  And we must wait, until the
   ;; file has been reverted.
@@ -297,17 +404,121 @@ This test is skipped in batch mode."
            (with-current-buffer (get-buffer-create "*Messages*")
              (file-notify--wait-for-events
               timeout
-              (string-match (format "Reverting buffer `%s'." (buffer-name buf))
-                            (buffer-string))))
+              (string-match
+                (format-message "Reverting buffer `%s'." (buffer-name buf))
+                (buffer-string))))
            (should (string-match "another text" (buffer-string)))))
 
-      ;; Exit.
+      ;; Cleanup.
       (ignore-errors (kill-buffer buf))
-      (ignore-errors (delete-file file-notify--test-tmpfile)))))
+      (file-notify--test-cleanup))))
 
 (file-notify--deftest-remote file-notify-test03-autorevert
-  "Check autorevert via file notification for remote files.
-This test is skipped in batch mode.")
+  "Check autorevert via file notification for remote files.")
+
+(ert-deftest file-notify-test04-file-validity ()
+  "Check `file-notify-valid-p' for files."
+  (skip-unless (file-notify--test-local-enabled))
+
+  (unwind-protect
+      (progn
+        (setq file-notify--test-tmpfile (file-notify--test-make-temp-name))
+        (setq file-notify--test-desc
+              (file-notify-add-watch
+               file-notify--test-tmpfile
+               '(change) #'file-notify--test-event-handler))
+        (file-notify--test-with-events
+            (file-notify--test-timeout) '(created changed)
+          (should (file-notify-valid-p file-notify--test-desc))
+          (write-region
+           "any text" nil file-notify--test-tmpfile nil 'no-message)
+          (should (file-notify-valid-p file-notify--test-desc)))
+        ;; After removing the watch, the descriptor must not be valid
+        ;; anymore.
+        (file-notify-rm-watch file-notify--test-desc)
+        (should-not (file-notify-valid-p file-notify--test-desc)))
+
+    ;; Cleanup.
+    (file-notify--test-cleanup))
+
+  (unwind-protect
+      ;; The batch-mode operation of w32notify is fragile (there's no
+      ;; input threads to send the message to).
+      (unless (and noninteractive (eq file-notify--library 'w32notify))
+        (let ((temporary-file-directory (make-temp-file
+                                         "file-notify-test-parent" t)))
+          (setq file-notify--test-tmpfile (file-notify--test-make-temp-name))
+          (setq file-notify--test-desc
+                (file-notify-add-watch
+                 file-notify--test-tmpfile
+                 '(change) #'file-notify--test-event-handler))
+          (file-notify--test-with-events
+              (file-notify--test-timeout) '(created changed)
+            (should (file-notify-valid-p file-notify--test-desc))
+            (write-region
+             "any text" nil file-notify--test-tmpfile nil 'no-message)
+            (should (file-notify-valid-p file-notify--test-desc)))
+          ;; After deleting the parent, the descriptor must not be valid
+          ;; anymore.
+          (delete-directory temporary-file-directory t)
+          (file-notify--wait-for-events
+           (file-notify--test-timeout)
+           (not (file-notify-valid-p file-notify--test-desc)))
+          (should-not (file-notify-valid-p file-notify--test-desc))))
+
+    ;; Cleanup.
+    (file-notify--test-cleanup)))
+
+(file-notify--deftest-remote file-notify-test04-file-validity
+  "Check `file-notify-valid-p' via file notification for remote files.")
+
+(ert-deftest file-notify-test05-dir-validity ()
+  "Check `file-notify-valid-p' for directories."
+  (skip-unless (file-notify--test-local-enabled))
+
+  (unwind-protect
+      (progn
+        (setq file-notify--test-tmpfile (file-name-as-directory
+                                         (file-notify--test-make-temp-name)))
+        (make-directory file-notify--test-tmpfile)
+        (setq file-notify--test-desc
+              (file-notify-add-watch
+               file-notify--test-tmpfile
+               '(change) #'file-notify--test-event-handler))
+        (should (file-notify-valid-p file-notify--test-desc))
+        ;; After removing the watch, the descriptor must not be valid
+        ;; anymore.
+        (file-notify-rm-watch file-notify--test-desc)
+        (should-not (file-notify-valid-p file-notify--test-desc)))
+
+    ;; Cleanup.
+    (file-notify--test-cleanup))
+
+  (unwind-protect
+      ;; The batch-mode operation of w32notify is fragile (there's no
+      ;; input threads to send the message to).
+      (unless (and noninteractive (eq file-notify--library 'w32notify))
+        (setq file-notify--test-tmpfile (file-name-as-directory
+                                         (file-notify--test-make-temp-name)))
+        (make-directory file-notify--test-tmpfile)
+        (setq file-notify--test-desc
+              (file-notify-add-watch
+               file-notify--test-tmpfile
+               '(change) #'file-notify--test-event-handler))
+        (should (file-notify-valid-p file-notify--test-desc))
+        ;; After deleting the directory, the descriptor must not be
+        ;; valid anymore.
+        (delete-directory file-notify--test-tmpfile t)
+        (file-notify--wait-for-events
+         (file-notify--test-timeout)
+        (not (file-notify-valid-p file-notify--test-desc)))
+        (should-not (file-notify-valid-p file-notify--test-desc)))
+
+    ;; Cleanup.
+    (file-notify--test-cleanup)))
+
+(file-notify--deftest-remote file-notify-test05-dir-validity
+  "Check `file-notify-valid-p' via file notification for remote directories.")
 
 (defun file-notify-test-all (&optional interactive)
   "Run all tests for \\[file-notify]."
index c83044c719ed46808a0e300120c360c1cf2b36dc..7e05d49883ea669359e3f9bdee79ab9d4993b928 100644 (file)
@@ -213,7 +213,7 @@ END:VTIMEZONE
     (should (string= "STD-02:00DST-03:00,M3.5.0/03:00:00,M10.5.0/04:00:00"
                      (cdr result)))
     (setq vtimezone (icalendar-tests--get-ical-event "BEGIN:VTIMEZONE
-TZID:anothername\, with a comma
+TZID:anothername, with a comma
 BEGIN:STANDARD
 DTSTART:16010101T040000
 TZOFFSETFROM:+0300
@@ -235,7 +235,7 @@ END:VTIMEZONE
                      (cdr result)))
     ;; offsetfrom = offsetto
     (setq vtimezone (icalendar-tests--get-ical-event "BEGIN:VTIMEZONE
-TZID:Kolkata\, Chennai\, Mumbai\, New Delhi
+TZID:Kolkata, Chennai, Mumbai, New Delhi
 X-MICROSOFT-CDO-TZID:23
 BEGIN:STANDARD
 DTSTART:16010101T000000
@@ -1327,7 +1327,7 @@ DTEND;VALUE=DATE-TIME:20030919T113000"
   (icalendar-tests--test-import
    "BEGIN:VCALENDAR
 BEGIN:VTIMEZONE
-TZID:fictional\, nonexistent\, arbitrary
+TZID:fictional, nonexistent, arbitrary
 BEGIN:STANDARD
 DTSTART:20100101T000000
 TZOFFSETFROM:+0200
@@ -1463,7 +1463,7 @@ METHOD:REQUEST
 PRODID:Microsoft CDO for Microsoft Exchange
 VERSION:2.0
 BEGIN:VTIMEZONE
-TZID:Kolkata\, Chennai\, Mumbai\, New Delhi
+TZID:Kolkata, Chennai, Mumbai, New Delhi
 X-MICROSOFT-CDO-TZID:23
 BEGIN:STANDARD
 DTSTART:16010101T000000
@@ -2174,7 +2174,7 @@ METHOD:REQUEST
 PRODID:Microsoft Exchange Server 2007
 VERSION:2.0
 BEGIN:VTIMEZONE
-TZID:(UTC+01:00) Amsterdam\, Berlin\, Bern\, Rome\, Stockholm\, Vienna
+TZID:(UTC+01:00) Amsterdam, Berlin, Bern, Rome, Stockholm, Vienna
 BEGIN:STANDARD
 DTSTART:16010101T030000
 TZOFFSETFROM:+0200
index 98d24e1f093eaf869a625cb612b2b0004220c3ca..67f963beb00c43afc5b6782b927b228a7388ad61 100644 (file)
@@ -64,7 +64,7 @@ RESULT is a list (NBAD NGOOD NUNAVAIL)."
   "Write BODY to texi FILE."
   (with-temp-buffer
     (insert "\
-\input texinfo
+\\input texinfo
 @setfilename "
             (format "%s.info\n" (file-name-sans-extension file))
             "\
index 07a183d024e9643a287be04af17b06f41b7174ee..7023c94c0c76b706362c534e06c2c06c9e886283 100644 (file)
@@ -138,6 +138,16 @@ Evaluate BODY for each created sequence.
     (should-not (seq-some #'test-sequences-oddp seq)))
   (should (seq-some #'null '(1 nil 2))))
 
+(ert-deftest test-seq-find ()
+  (with-test-sequences (seq '(4 3 2 1))
+    (should (= 4 (seq-find #'test-sequences-evenp seq)))
+    (should (= 3 (seq-find #'test-sequences-oddp seq)))
+    (should-not (seq-find (lambda (elt) (> elt 10)) seq)))
+  (should-not (seq-find #'null '(1 nil 2)))
+  (should-not (seq-find #'null '(1 nil 2) t))
+  (should-not (seq-find #'null '(1 2 3)))
+  (should (seq-find #'null '(1 2 3) 'sentinel)))
+
 (ert-deftest test-seq-contains ()
   (with-test-sequences (seq '(3 4 5 6))
     (should (seq-contains seq 3))
index 6acafdbaba0bb88c38ca1acfcb4259ef18936f76..4e079200ee01c3f76461dc351e33474a2b2d1fa8 100644 (file)
@@ -1766,7 +1766,7 @@ if the file was newly read in, the value is the filename."
                "No \\[tags-search] or \\[tags-query-replace] in progress"))
   "Form for `tags-loop-continue' to eval to scan one file.
 If it returns non-nil, this file needs processing by evalling
-\`tags-loop-operate'.  Otherwise, move on to the next file.")
+`tags-loop-operate'.  Otherwise, move on to the next file.")
 
 (defun tags-loop-eval (form)
   "Evaluate FORM and return its result.
index 5b5d272c579721f2a0d6ab3c1862473d98980d01..6bf9437b8836e196b882b65d580b7d71a0eb64a5 100644 (file)
@@ -1,5 +1,26 @@
 %% -*- mode: prolog; coding: utf-8; fill-column: 78 -*-
 
+%% bug#21526
+test1 :-
+    (   a ->
+            (   a ->
+                b
+            ;   c
+            )
+    ;   c
+    ).
+
+test2 :-
+    (    a
+    ->   (   a,
+             b
+         ;   c
+         ),
+         b2
+    ;    c1,
+         c2
+    )
+
 %% Testing correct tokenizing.
 foo(X) :- 0'= = X.
 foo(X) :- 8'234 = X.
@@ -50,9 +71,9 @@ subst(X, V, FV, lambda(Y, Ti, Bi), lambda(Y1, To, Bo)) :-
      %% Perform substitution on the body.
      subst(X, V, FV, Bi1, Bo)),
     (  X = Y
-     %% If X is equal to Y, X is shadowed, so no subst can take place.
-     ->        Y1 = Y, Bo = Bi
-     ; (member((Y, _), FV)
+    %% If X is equal to Y, X is shadowed, so no subst can take place.
+    -> Y1 = Y, Bo = Bi
+     (member((Y, _), FV)
         %% If Y appears in FV, it can appear in V, so we need to
         %% rename it to avoid name capture.
         -> new_atom(Y, Y1),