]> code.delx.au - gnu-emacs/commitdiff
Merge from trunk.
authorPaul Eggert <eggert@cs.ucla.edu>
Sat, 25 Feb 2012 06:41:40 +0000 (22:41 -0800)
committerPaul Eggert <eggert@cs.ucla.edu>
Sat, 25 Feb 2012 06:41:40 +0000 (22:41 -0800)
218 files changed:
admin/ChangeLog
admin/FOR-RELEASE
admin/admin.el
admin/unidata/unidata-gen.el
doc/emacs/ChangeLog
doc/emacs/ack.texi
doc/emacs/buffers.texi
doc/emacs/building.texi
doc/emacs/cal-xtra.texi
doc/emacs/calendar.texi
doc/emacs/dired-xtra.texi
doc/emacs/display.texi
doc/emacs/emacs-xtra.texi
doc/emacs/emacs.texi
doc/emacs/emerge-xtra.texi
doc/emacs/files.texi
doc/emacs/fortran-xtra.texi
doc/emacs/frames.texi
doc/emacs/kmacro.texi
doc/emacs/macos.texi
doc/emacs/maintaining.texi
doc/emacs/mini.texi
doc/emacs/msdog-xtra.texi
doc/emacs/msdog.texi
doc/emacs/picture-xtra.texi
doc/emacs/programs.texi
doc/emacs/rmail.texi
doc/emacs/sending.texi
doc/emacs/text.texi
doc/emacs/vc1-xtra.texi
doc/lispintro/ChangeLog
doc/lispintro/emacs-lisp-intro.texi
doc/lispref/ChangeLog
doc/lispref/commands.texi
doc/lispref/compile.texi
doc/lispref/debugging.texi
doc/lispref/display.texi
doc/lispref/elisp.texi
doc/lispref/errors.texi
doc/lispref/files.texi
doc/lispref/help.texi
doc/lispref/hooks.texi
doc/lispref/keymaps.texi
doc/lispref/macros.texi
doc/lispref/minibuf.texi
doc/lispref/modes.texi
doc/lispref/objects.texi
doc/lispref/processes.texi
doc/lispref/searching.texi
doc/lispref/streams.texi
doc/lispref/syntax.texi
doc/lispref/tips.texi
doc/lispref/variables.texi
doc/lispref/vol1.texi
doc/lispref/vol2.texi
doc/misc/ChangeLog
doc/misc/gnus.texi
doc/misc/remember.texi
doc/misc/smtpmail.texi
etc/ChangeLog
etc/NEWS
etc/PROBLEMS
etc/emacs-buffer.gdb
lisp/ChangeLog
lisp/ChangeLog.11
lisp/ChangeLog.14
lisp/ChangeLog.15
lisp/ChangeLog.5
lisp/ChangeLog.7
lisp/ChangeLog.8
lisp/ChangeLog.9
lisp/allout-widgets.el
lisp/allout.el
lisp/ansi-color.el
lisp/arc-mode.el
lisp/battery.el
lisp/calc/calc.el
lisp/calendar/cal-hebrew.el
lisp/calendar/cal-menu.el
lisp/calendar/calendar.el
lisp/calendar/diary-lib.el
lisp/calendar/holidays.el
lisp/comint.el
lisp/cus-theme.el
lisp/custom.el
lisp/dired-aux.el
lisp/dired-x.el
lisp/dired.el
lisp/doc-view.el
lisp/emacs-lisp/authors.el
lisp/emacs-lisp/cl-indent.el
lisp/emacs-lisp/easy-mmode.el
lisp/emacs-lisp/lisp.el
lisp/eshell/em-ls.el
lisp/ffap.el
lisp/files.el
lisp/font-core.el
lisp/font-lock.el
lisp/gnus/ChangeLog
lisp/gnus/auth-source.el
lisp/gnus/gnus-art.el
lisp/gnus/gnus-async.el
lisp/gnus/gnus-demon.el
lisp/gnus/gnus-int.el
lisp/gnus/gnus-msg.el
lisp/gnus/gnus-picon.el
lisp/gnus/gnus-registry.el
lisp/gnus/gnus-start.el
lisp/gnus/gnus-sum.el
lisp/gnus/gravatar.el
lisp/gnus/gssapi.el
lisp/gnus/message.el
lisp/gnus/mm-decode.el
lisp/gnus/mml1991.el
lisp/gnus/nnimap.el
lisp/gnus/nnir.el
lisp/gnus/nnml.el
lisp/gnus/nntp.el
lisp/gnus/shr.el
lisp/gnus/sieve-manage.el
lisp/icomplete.el
lisp/international/characters.el
lisp/international/charprop.el
lisp/international/mule-cmds.el
lisp/international/titdic-cnv.el
lisp/international/uni-comment.el
lisp/international/uni-name.el
lisp/international/uni-old-name.el
lisp/isearch.el
lisp/language/cham.el
lisp/language/tai-viet.el
lisp/mail/feedmail.el
lisp/mail/rmail.el
lisp/mail/smtpmail.el
lisp/mail/undigest.el
lisp/man.el
lisp/minibuffer.el
lisp/net/ange-ftp.el
lisp/net/gnutls.el
lisp/net/netrc.el
lisp/net/rcirc.el
lisp/net/rcompile.el
lisp/net/soap-client.el
lisp/net/socks.el
lisp/net/tramp.el
lisp/newcomment.el
lisp/org/ChangeLog
lisp/org/org-footnote.el
lisp/org/org-protocol.el
lisp/progmodes/cc-engine.el
lisp/progmodes/cc-mode.el
lisp/progmodes/cc-vars.el
lisp/progmodes/octave-inf.el
lisp/progmodes/octave-mod.el
lisp/progmodes/prolog.el
lisp/progmodes/python.el
lisp/progmodes/sql.el
lisp/progmodes/verilog-mode.el
lisp/replace.el
lisp/saveplace.el
lisp/select.el
lisp/ses.el
lisp/shell.el
lisp/simple.el
lisp/term/pc-win.el
lisp/term/x-win.el
lisp/term/xterm.el
lisp/textmodes/picture.el
lisp/tool-bar.el
lisp/url/ChangeLog
lisp/url/url-future.el
lisp/url/url-queue.el
lisp/url/url.el
lisp/vc/ediff-init.el
lisp/vc/emerge.el
lisp/vc/log-view.el
lisp/vc/vc-arch.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-svn.el
lisp/window.el
lisp/x-dnd.el
nt/ChangeLog
nt/cmdproxy.c
nt/makefile.w32-in
src/.gdbinit
src/ChangeLog
src/ChangeLog.10
src/ChangeLog.11
src/ChangeLog.7
src/buffer.c
src/eval.c
src/fileio.c
src/gnutls.c
src/gtkutil.c
src/image.c
src/keyboard.c
src/keymap.c
src/lisp.h
src/mem-limits.h
src/nsselect.m
src/syntax.c
src/w16select.c
src/w32select.c
src/window.c
src/window.h
src/xdisp.c
src/xfns.c
src/xselect.c
src/xterm.c
test/ChangeLog
test/automated/url-future-tests.el [new file with mode: 0644]

index 2178df6caf029049c6ffbf3c484e25cacdcadaf4..c7bfc0ddc6e714bd94eecdaf6282544773631361 100644 (file)
@@ -1,3 +1,14 @@
+2012-02-16  Kenichi Handa  <handa@m17n.org>
+
+       * unidata/unidata-gen.el (unidata-prop-alist): Change the default
+       values of name and old-name to nil.
+       (unidata-get-name): Return nil for the default value.
+
+2012-02-11  Glenn Morris  <rgm@gnu.org>
+
+       * admin.el (cusver-find-files, cusver-scan, cusver-goto-xref)
+       (cusver-check): New functions.
+
 2012-01-19  Glenn Morris  <rgm@gnu.org>
 
        * bzrmerge.el (bzrmerge-missing): Allow a definitive "no" answer to the
index abe53ad0b0d075ee3dd2816b344d94529e60fc61..12b99e49688e77d030a04712e0104e40b0b75650 100644 (file)
@@ -7,7 +7,7 @@ Check cross-references between the manuals (eg from emacs to elisp)
 are correct.  You can use something like the following in the info
 directory in the Emacs build tree:
 
-emacs -Q --eval "(setq Info-default-directory-list '(\".\"))" \
+emacs -Q --eval "(progn (require 'info) (setq Info-directory-list '(\".\")))" \
   -f info-xref-check-all
 
 make emacs.dvi, elisp.dvi, and deal with any errors (undefined
@@ -61,11 +61,6 @@ sk   Miroslav VaÅ¡ko
 
 * BUGS
 
-** rms: gnus-dired.el is a mistake.  Those features should not
-be part of Gnus.  They should be moved to some other part of Emacs.
-rsteib: Gnus dependencies in `gnus-dired.el' (and `mailcap.el') have been
-minimized.  I don't know what is left to do here.
-
 ** 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:
 
@@ -83,9 +78,10 @@ and change key bindings where necessary.  The current list of modes:
    `log-edit-comment-search-forward'.  Perhaps search commands
    on the global key binding `M-s' are useless in these modes.
 
-* DOCUMENTATION
+5. Rmail binds `\es' to `rmail-search'/`rmail-summary-search'.
+
 
-** Document XEmbed support
+* DOCUMENTATION
 
 ** Check the Emacs Tutorial.
 
@@ -125,48 +121,53 @@ TUTORIAL.zh
 ** Check the manual.
 
 abbrevs.texi      cyd
-ack.texi          
+ack.texi          rgm
 anti.texi         cyd
 arevert-xtra.texi cyd
 basic.texi        cyd
 buffers.texi      cyd
 building.texi     cyd
-calendar.texi     
-cal-xtra.texi     
+calendar.texi     rgm
+cal-xtra.texi     rgm
 cmdargs.texi      cyd
 commands.texi     cyd
 custom.texi       cyd
 dired.texi        cyd
-dired-xtra.texi
+dired-xtra.texi   rgm
 display.texi      cyd
-emacs.texi        
-emacs-xtra.texi
-emerge-xtra.texi
+emacs.texi        rgm
+emacs-xtra.texi   rgm
+emerge-xtra.texi  rgm
 entering.texi     cyd
 files.texi        cyd
 fixit.texi        cyd
-fortran-xtra.texi 
+fortran-xtra.texi rgm
 frames.texi       cyd
 glossary.texi
 help.texi         cyd
 indent.texi       cyd
 killing.texi      cyd
 kmacro.texi       cyd
-macos.texi        
+macos.texi        rgm  (can't actually test any of it though)
 maintaining.texi  cyd
 mark.texi         cyd
-mini.texi         
+mini.texi         rgm
 misc.texi         cyd
 modes.texi        cyd
-msdog.texi        
-msdog-xtra.texi   
+msdog.texi        rgm  (can't actually test any of it though)
+  It was not obvious to me that the following is true (it could well be though):
+
+   Emacs on Windows automatically determines your default printer and
+   sets the variable `printer-name' to that printer's name.
+
+msdog-xtra.texi   rgm  (can't actually test any of it though)
 mule.texi         
 m-x.texi          cyd
 package.texi      cyd
-picture-xtra.texi
+picture-xtra.texi rgm
 programs.texi     cyd
 regs.texi         cyd
-rmail.texi        
+rmail.texi        rgm
 screen.texi       cyd
 search.texi       cyd
 sending.texi      cyd
@@ -185,26 +186,26 @@ anti.texi
 back.texi
 backups.texi      
 buffers.texi      
-commands.texi     
+commands.texi     cyd
 compile.texi      cyd
 control.texi      cyd
 customize.texi    cyd
-debugging.texi    
+debugging.texi    cyd
 display.texi      
 edebug.texi
 elisp.texi
 errors.texi       
 eval.texi         cyd
-files.texi        
+files.texi        cyd
 frames.texi       
 functions.texi    cyd
 hash.texi         cyd
-help.texi         
+help.texi         cyd
 hooks.texi        
 index.texi
 internals.texi    
 intro.texi        cyd
-keymaps.texi      
+keymaps.texi      cyd
 lists.texi        cyd
 loading.texi      cyd
 locals.texi       
@@ -212,7 +213,7 @@ macros.texi       cyd
 maps.texi         
 markers.texi      
 minibuf.texi      
-modes.texi        
+modes.texi        cyd
 nonascii.texi     
 numbers.texi      cyd
 objects.texi      cyd
@@ -222,19 +223,15 @@ positions.texi
 processes.texi
 searching.texi    
 sequences.texi    cyd
-streams.texi      
+streams.texi      cyd
 strings.texi      cyd
 symbols.texi      cyd
-syntax.texi       
+syntax.texi       cyd
 text.texi         
 tips.texi         
 variables.texi    cyd
 windows.texi      
 
-* PLANNED ADDITIONS
-* pov-mode (probably not for Emacs-23: waiting for a Free POV-Ray).
-** gas-mode ?
-
 \f
 Local variables:
 mode: outline
index 2ca838fdff9451de2fbbea6d193da53e6dc30a73..27b2b3ab64860af7e34978ddde967ad9c80ab8f8 100644 (file)
@@ -442,6 +442,129 @@ Also generate PostScript output in PS-DEST."
          (setq done t))))
       (forward-line 1))))
 
+\f
+;; Stuff to check new defcustoms got :version tags.
+;; Adapted from check-declare.el.
+
+(defun cusver-find-files (root &optional old)
+  "Find .el files beneath directory ROOT that contain defcustoms.
+If optional OLD is non-nil, also include defvars."
+  (process-lines find-program root
+                "-name" "*.el"
+                "-exec" grep-program
+                "-l" "-E" (format "^[ \\t]*\\(def%s"
+                                  (if old "(custom|var)"
+                                    "custom"
+                                    ))
+                "{}" "+"))
+
+;; TODO if a defgroup with a version tag, apply to all customs in that
+;; group (eg for new files).
+(defun cusver-scan (file &optional old)
+  "Scan FILE for `defcustom' calls.
+Return a list with elements of the form (VAR . VER),
+This means that FILE contains a defcustom for variable VAR, with
+a :version tag having value VER (may be nil).
+If optional argument OLD is non-nil, also scan for defvars."
+  (let ((m (format "Scanning %s..." file))
+       (re (format "^[ \t]*\\((def%s\\)[ \t\n]"
+                   (if old "\\(?:custom\\|var\\)" "custom")))
+        alist var ver)
+    (message "%s" m)
+    (with-temp-buffer
+      (insert-file-contents file)
+      ;; FIXME we could theoretically be inside a string.
+      (while (re-search-forward re nil t)
+        (goto-char (match-beginning 1))
+        (if (and (setq form (ignore-errors (read (current-buffer))))
+                 (setq var (car-safe (cdr-safe form)))
+                ;; Exclude macros, eg (defcustom ,varname ...).
+                (symbolp var))
+            (setq ver (car (cdr-safe (memq :version form)))
+                  alist (cons (cons var ver) alist))
+          (if form (message "Malformed defcustom: `%s'" form)))))
+    (message "%sdone" m)
+    alist))
+
+(define-button-type 'cusver-xref 'action #'cusver-goto-xref)
+
+(defun cusver-goto-xref (button)
+  "Jump to a lisp file for the BUTTON at point."
+  (let ((file (button-get button 'file))
+       (var (button-get button 'var)))
+    (if (not (file-readable-p file))
+       (message "Cannot read `%s'" file)
+      (with-current-buffer (find-file-noselect file)
+       (goto-char (point-min))
+       (or (re-search-forward (format "^[ \t]*(defcustom[ \t]*%s" var) nil t)
+           (message "Unable to locate defcustom"))
+       (pop-to-buffer (current-buffer))))))
+
+;; You should probably at least do a grep over the old directory
+;; to check the results of this look sensible.  Eg cus-start if
+;; something moved from C to Lisp.
+;; TODO handle renamed things with aliases to the old names.
+;; What to do about new files?  Does everything in there need a :version,
+;; or eg just the defgroup?
+(defun cusver-check (newdir olddir)
+  "Check that defcustoms have :version tags where needed.
+NEWDIR is the current lisp/ directory, OLDDIR is that from the previous
+release.  A defcustom that is only in NEWDIR should have a :version
+tag.  We exclude cases where a defvar exists in OLDDIR, since
+just converting a defvar to a defcustom does not require a :version bump.
+
+Note that a :version tag should also be added if the value of a defcustom
+changes (in a non-trivial way).  This function does not check for that."
+  (interactive "DNew Lisp directory: \nDOld Lisp directory: ")
+  (or (file-directory-p (setq newdir (expand-file-name newdir)))
+      (error "Directory `%s' not found" newdir))
+  (or (file-directory-p (setq olddir (expand-file-name olddir)))
+      (error "Directory `%s' not found" olddir))
+  (let* ((newfiles (progn (message "Finding new files with defcustoms...")
+                         (cusver-find-files newdir)))
+        (oldfiles (progn (message "Finding old files with defcustoms...")
+                         (cusver-find-files olddir t)))
+        (newcus (progn (message "Reading new defcustoms...")
+                       (mapcar
+                        (lambda (file)
+                          (cons file (cusver-scan file))) newfiles)))
+        oldcus result thisfile)
+    (message "Reading old defcustoms...")
+    (dolist (file oldfiles)
+      (setq oldcus (append oldcus (cusver-scan file t))))
+    ;; newcus has elements (FILE (VAR VER) ... ).
+    ;; oldcus just (VAR . VER).
+    (message "Checking for version tags...")
+    (dolist (new newcus)
+      (setq file (car new)
+           thisfile
+           (let (missing var)
+             (dolist (cons (cdr new))
+               (or (cdr cons)
+                   (assq (setq var (car cons)) oldcus)
+                   (push var missing)))
+             (if missing
+                 (cons file missing))))
+      (if thisfile
+         (setq result (cons thisfile result))))
+    (message "Checking for version tags... done")
+    (if (not result)
+       (message "No missing :version tags")
+      (pop-to-buffer "*cusver*")
+      (erase-buffer)
+      (insert "These defcustoms might be missing :version tags:\n\n")
+      (dolist (elem result)
+       (let* ((str (file-relative-name (car elem) newdir))
+              (strlen (length str)))
+         (dolist (var (cdr elem))
+           (insert (format "%s: %s\n" str var))
+           (make-text-button (+ (line-beginning-position 0) strlen 2)
+                             (line-end-position 0)
+                             'file (car elem)
+                             'var var
+                             'help-echo "Mouse-2: visit this definition"
+                             :type 'cusver-xref)))))))
+
 (provide 'admin)
 
 ;;; admin.el ends here
index 713b0512e092414a395a16c1d4238b26cb782088..d9277217f0e30688b98c96c411b3f1d856c15d2c 100644 (file)
   '((name
      1 unidata-gen-table-name "uni-name.el"
      "Unicode character name.
-Property value is a string."
+Property value is a string or nil.
+The value nil stands for the default value \"null string\")."
      nil
-     "")
+     nil)
     (general-category
      2 unidata-gen-table-symbol "uni-category.el"
      "Unicode general category.
@@ -235,7 +236,8 @@ Property value is a symbol `Y' or `N'.  See also the property `mirroring'."
     (old-name
      10 unidata-gen-table-name "uni-old-name.el"
      "Unicode old names as published in Unicode 1.0.
-Property value is a string.")
+Property value is a string or nil.
+The value nil stands for the default value \"null string\").")
     (iso-10646-comment
      11 unidata-gen-table-name "uni-comment.el"
      "Unicode ISO 10646 comment.
@@ -712,7 +714,7 @@ is the character itself.")))
            (aset table c name)
            (if (= c char)
                (setq val name))))
-       (or val ""))))
+       val)))
 
    ((and (integerp val) (> val 0))
     (let* ((symbol-table (aref (char-table-extra-slot table 4) 1))
@@ -738,9 +740,7 @@ is the character itself.")))
            ((eq sym 'CJK\ COMPATIBILITY\ IDEOGRAPH)
             (format "%s-%04X" sym char))
            ((eq sym 'VARIATION\ SELECTOR)
-            (format "%s-%d" sym (+ (- char #xe0100) 17))))))
-
-   (t "")))
+            (format "%s-%d" sym (+ (- char #xe0100) 17))))))))
 
 ;; Store VAL as the name of CHAR in TABLE.
 
index 004911faf57ec610f5f065a41431d918f0f784ac..3d3c8f003cb1f6260251bfe818b5a372a664bad5 100644 (file)
@@ -1,3 +1,108 @@
+2012-02-25  Dani Moncayo  <dmoncayo@gmail.com>  (tiny change)
+
+       * buffers.texi (Select Buffer): Mention that saving in a new file
+       name can switch to a different major mode.
+
+2012-02-23  Glenn Morris  <rgm@gnu.org>
+
+       * mini.texi (Minibuffer File, Completion Options, Repetition):
+       Copyedits.
+       (Completion Example): Other M-x au* commands may be defined.
+       (Completion Styles): Mention emacs21 and completion-category-overrides.
+
+       * msdog.texi (Text and Binary, ls in Lisp, Windows HOME)
+       (Windows Keyboard, Windows Mouse, Windows Processes)
+       (Windows Printing, Windows Misc): Copyedits.
+       (ls in Lisp): Update switches list.
+
+       * msdog-xtra.texi (MS-DOS Display): Update list-colors-display xref.
+       Update dos-mode* function names.
+       (MS-DOS Printing, MS-DOS and MULE): Copyedits.
+       (MS-DOS Processes): Add xref to main ls-lisp section.
+
+       * ack.texi (Acknowledgments): Mention smie.
+
+2012-02-22  Glenn Morris  <rgm@gnu.org>
+
+       * macos.texi: Copyedits.  Fix @key/@kbd usage.
+       (Mac / GNUstep Basics): Don't mention the panels, since the next
+       section covers them.
+       (Mac / GNUstep Customization): Merge some panel info from previous.
+
+2012-02-21  Glenn Morris  <rgm@gnu.org>
+
+       * emerge-xtra.texi (Emerge, Submodes of Emerge, Combining in Emerge):
+       Small fixes.
+
+       * emacs-xtra.texi: Picture mode is no longer a chapter.
+
+       * picture-xtra.texi (Basic Picture): C-a does get remapped.
+
+       * ack.texi (Acknowledgments): Small changes, including resorting,
+       and removal of things no longer distributed.
+
+2012-02-20  Glenn Morris  <rgm@gnu.org>
+
+       * emacs.texi (Top, Preface): Small rephrasings.
+       (menu, detailmenu): Update entries, and reformat some descriptions.
+       * building.texi, display.texi, emacs-xtra.texi, files.texi:
+       * frames.texi, kmacro.texi, msdog.texi, programs.texi, text.texi:
+       Reformat some menu descriptions.
+
+       * ack.texi (Acknowledgments): More updates.
+
+       * emacs.texi (Acknowledgments): Add several names from ack.texi,
+       and from Author: headers.
+       (Distrib): Small updates.
+
+2012-02-18  Glenn Morris  <rgm@gnu.org>
+
+       * ack.texi (Acknowledgments): Add xref to Org manual.
+
+       * rmail.texi: Copyedits.  Use 'mail composition buffer' in place
+       of '*mail*', since Message does not call it that.
+       (Rmail Reply): Rename rmail-dont-reply-to-names.
+       \\`info- no longer handled specially.
+       Update for rmail-enable-mime-composing.
+       Don't mention 'm' for replies.
+       Don't mention rmail-mail-new-frame and cancelling, since it does
+       not work for Message at the moment.
+
+       * cal-xtra.texi: Copyedits.
+
+       * emacs-xtra.texi: Set encoding to ISO-8859-1.
+
+2012-02-17  Glenn Morris  <rgm@gnu.org>
+
+       * maintaining.texi (Old Revisions): Fix cross-refs to Ediff manual.
+
+       * ack.texi (Acknowledgments): Mention Gnulib.
+
+       * ack.texi, calendar.texi, cal-xtra.texi: Use "Bahá'í".
+
+       * calendar.texi: Misc small changes, including updating the dates
+       of examples.
+
+2012-02-16  Glenn Morris  <rgm@gnu.org>
+
+       * calendar.texi: Misc small changes.
+
+       * vc1-xtra.texi (VC Delete/Rename, CVS Options):
+       * cal-xtra.texi (Diary Display): Fix TeX cross-refs to other manuals.
+
+       * dired-xtra.texi (Subdir Switches): Small fixes.
+
+       * fortran-xtra.texi: Tiny changes and some adjustments to line breaks.
+
+2012-02-15  Glenn Morris  <rgm@gnu.org>
+
+       * sending.texi (Mail Sending): smtpmail-auth-credentials was removed.
+
+2012-02-12  Glenn Morris  <rgm@gnu.org>
+
+       * ack.texi (Acknowledgments):
+       * emacs.texi (Acknowledgments): Updates for new files in 24.1.
+
 2012-02-10  Glenn Morris  <rgm@gnu.org>
 
        * mini.texi (Minibuffer Edit): Mention minibuffer-inactive-mode.
index 13bc327fbab896bdb3a0a82e62dba64bf6f69289..0a14f5119d16bedc555d05b1587fde2a256059fa 100644 (file)
@@ -1,6 +1,6 @@
 @c -*- coding: iso-latin-1 -*-
 @c This is part of the Emacs manual.
-@c Copyright (C) 1994-1997, 1999-2012  Free Software Foundation, Inc.
+@c Copyright (C) 1994-1997, 1999-2012 Free Software Foundation, Inc.
 @c See file emacs.texi for copying conditions.
 @c
 @node Acknowledgments, Screen, Concept Index, Top
@@ -33,7 +33,7 @@ Per Abrahamsen wrote the customization facilities, as well as
 from the keyboard; @file{xt-mouse.el}, which allows mouse commands
 through Xterm; @file{gnus-cus.el}, which implements customization
 commands for Gnus; @file{gnus-cite.el}, a citation-parsing facility for
-news articles); @file{gnus-score.el}, scoring for Gnus; @file{cpp.el},
+news articles; @file{gnus-score.el}, scoring for Gnus; @file{cpp.el},
 which hides or highlights parts of C programs according to preprocessor
 conditionals; and the widget library files @file{wid-browse.el},
 @file{wid-edit.el}, @file{widget.el}.  He also co-wrote
@@ -51,8 +51,9 @@ files.
 @item
 Michael Albinus wrote @file{dbus.el}, a package that implements the
 D-Bus message bus protocol; @file{zeroconf.el}, a mode for browsing
-Avahi services; and @file{xesam.el}, a Xesam-based search engine
-interface.  He and Kai Großjohann wrote the Tramp package, which
+Avahi services; @file{xesam.el}, a Xesam-based search engine
+interface; and @file{secrets.el}, an interface to keyring daemons for
+storing confidential data.  He and Kai Großjohann wrote the Tramp package, which
 provides transparent remote file editing using rcp, ssh, ftp, and
 other network protocols.  He and Daniel Pittman wrote
 @file{tramp-cache.el}.
@@ -66,6 +67,10 @@ in the buffer.
 Joe Arceneaux wrote the original text property implementation, and
 implemented support for X11.
 
+@item
+Emil Ã…ström, Milan Zamaza, and Stefan Bruda wrote @file{prolog.el},
+a mode for editing Prolog (and Mercury) code.
+
 @item
 Miles Bader wrote @file{image-file.el}, support code for visiting image
 files; @file{minibuf-eldef.el}, a minor mode that hides the minibuffer
@@ -73,7 +78,8 @@ default value when appropriate; @file{rfn-eshadow.el}, shadowing of
 @code{read-file-name} input; @file{mb-depth.el}, display of minibuffer
 depth; @file{button.el}, the library that implements clickable buttons;
 @file{face-remap.el}, a package for changing the default face in
-individual buffers; and @file{macroexp.el} for macro-expansion.
+individual buffers; and @file{macroexp.el} for macro-expansion.  He
+also worked on an early version of the lexical binding code.
 
 @item
 David Bakhash wrote @file{strokes.el}, a mode for controlling Emacs by
@@ -184,7 +190,8 @@ for editing IDL and WAVE CL.
 @item
 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.
+and @file{page-ext.el}, commands for extended page handling.  He also
+wrote the ``Introduction to programming in Emacs Lisp'' manual.
 
 @item
 Jihyun Cho wrote @file{hanja-util.el} and @file{hangul.el}, utilities
@@ -195,8 +202,10 @@ Andrew Choi and Yamamoto Mitsuharu wrote the Carbon support, used
 prior to Emacs 23 for Mac OS.
 
 @item
-Chong Yidong was the Emacs co-maintainer for Emacs 23.  He made many
-improvements to the Emacs display engine.
+Chong Yidong was the Emacs co-maintainer from Emacs 23 onwards.  He made many
+improvements to the Emacs display engine.  He also wrote
+@file{tabulated-list.el}, a generic major mode for lists of data;
+and improved support for themes and packages.
 
 @item
 James Clark wrote SGML mode, a mode for editing SGML documents; and
@@ -214,6 +223,10 @@ use it, Snake and Tetris.
 Andrew Cohen wrote @file{spam-wash.el}, to decode and clean email before
 it is analyzed for spam.
 
+@item
+Edward O'Connor wrote @file{json.el}, a file for parsing and
+generating JSON files.
+
 @item
 Georges Brun-Cottan and Stefan Monnier wrote @file{easy-mmode.el}, a
 package for easy definition of major and minor modes.
@@ -231,16 +244,13 @@ files as ``thumbnails.''
 
 @item
 Julien Danjou wrote an implementation of ``Desktop Notifications''
-(@file{notifications.el}).
+(@file{notifications.el}); and @file{color.el}, a library for general
+color manipulation.  He also made various contributions to Gnus.
 
 @item
 Vivek Dasmohapatra wrote @file{htmlfontify.el}, to convert a buffer or
 source tree to HTML.
 
-@item
-Michael DeCorte wrote @file{emacs.csh}, a C-shell script that starts a
-new Emacs job, or restarts a paused Emacs if one exists.
-
 @item
 Gary Delp wrote @file{mailpost.el}, an interface between RMAIL and the
 @file{/usr/uci/post} mailer.
@@ -254,16 +264,19 @@ Eric Ding wrote @file{goto-addr.el},
 
 @item
 Jan Djärv added support for the GTK+ toolkit and X drag-and-drop.
+He also wrote @file{dynamic-setting.el}.
 
 @item
 Carsten Dominik wrote Ref@TeX{}, a package for setting up labels and
 cross-references in La@TeX{} documents; and co-wrote IDLWAVE mode
-(q.v.@:).  He was the main author of Org mode, for maintaining notes,
-todo lists, and project planning.  Thomas Baumann, Jan Böcker, Lennart
-Borgman, Baoqiu Cui, Daniel German, Bastien Guerry, Tassilo Horn, Philip
-Jackson, Tokuya Kameshima, Ross Patterson, Sebastian Rose, Eric Schulte,
-Paul Sexton, Ulf Stegemann, Andy Stewart, David O'Toole, John Wiegley,
-and Piotr Zielinski also wrote various Org mode components.
+(q.v.@:).  He was the original author of Org mode, for maintaining notes,
+todo lists, and project planning.  Bastien Guerry subsequently took
+over maintainership.  Benjamin Andresen, Thomas Baumann, Joel Boehland, Jan Böcker, Lennart
+Borgman, Baoqiu Cui, Dan Davison, Christian Egli, Eric S.@: Fraga, Daniel German, Chris Gray, Konrad Hinsen, Tassilo Horn, Philip
+Jackson, Martyn Jago, Thorsten Jolitz, Jambunathan K, Tokuya Kameshima, Sergey Litvinov, David Maus, Ross Patterson, Juan Pechiar, Sebastian Rose, Eric Schulte,
+Paul Sexton, Ulf Stegemann, Andy Stewart, Christopher Suckling, David O'Toole, John Wiegley, Zhang Weize,
+Piotr Zielinski, and others also wrote various Org mode components.
+For more information, @pxref{History and Acknowledgments,,, org, The Org Manual}.
 
 @item
 Scott Draves wrote @file{tq.el}, help functions for maintaining
@@ -280,7 +293,12 @@ Viktor Dukhovni wrote support for dumping under SunOS version 4.
 John Eaton and Kurt Hornik wrote Octave mode.
 
 @item
-Rolf Ebert co-wrote Ada mode.
+Rolf Ebert, Markus Heritsch, and Emmanuel Briot wrote Ada mode.
+
+@item
+Paul Eggert integrated the Gnulib portability library, and made many
+other portability fixes to the C code; as well as his contributions
+to VC and the calendar.
 
 @item
 Stephen Eglen wrote @file{mspools.el}, which tells you which Procmail
@@ -410,7 +428,7 @@ characters used by @TeX{} and net tradition.
 
 @item
 Bastien Guerry wrote @file{gnus-bookmark.el}, bookmark support for Gnus;
-as well as contributing to Org mode (q.v.@:).
+as well as helping to maintain Org mode (q.v.@:).
 
 @item
 Henry Guillaume wrote @file{find-file.el}, a package to visit files
@@ -434,7 +452,10 @@ non-@acronym{ASCII} text from an @acronym{ASCII} keyboard.
 Jesper Harder wrote @file{yenc.el}, for decoding yenc encoded messages.
 
 @item
-K. Shane Hartman wrote @file{chistory.el} and @file{echistory.el},
+Alexandru Harsanyi wrote a library for accessing SOAP web services.
+
+@item
+K.@: Shane Hartman wrote @file{chistory.el} and @file{echistory.el},
 packages for browsing command history lists; @file{electric.el} and
 @file{helper.el}, which provide an alternative command loop and
 appropriate help facilities; @file{emacsbug.el}, a package for
@@ -450,9 +471,6 @@ which provide alternative mouse-based editing and scrolling features.
 Jon K Hellan wrote @file{utf7.el}, support for mail-safe transformation
 format of Unicode.
 
-@item
-Markus Heritsch co-wrote Ada mode.
-
 @item
 Karl Heuer wrote the original blessmail script, implemented the
 @code{intangible} text property, and rearranged the structure of the
@@ -483,15 +501,20 @@ browser to display a URL.
 @item
 Lars Magne Ingebrigtsen did a major redesign of the Gnus news-reader and
 wrote many of its parts.  Several of these are now general components of
-Emacs: @file{dns.el} for Domain Name Service lookups;
+Emacs, including: @file{dns.el} for Domain Name Service lookups;
 @file{format-spec.el} for formatting arbitrary format strings;
 @file{netrc.el} for parsing of @file{.netrc} files; and
-@file{time-date.el} for general date and time handling.  Components of
-Gnus have also been written by: Nagy Andras, David Blacka, Scott Byer,
-Kevin Greiner, Kai Großjohann, Joe Hildebrand, Paul Jarc, Sascha
+@file{time-date.el} for general date and time handling.
+He also wrote @file{network-stream.el}, for opening network processes;
+@file{url-queue.el}, for controlling parallel downloads of URLs;
+and implemented libxml2 support.
+Components of Gnus have also been written by: Nagy Andras, David
+Blacka, Scott Byer, Ludovic Courtès, Julien Danjou, Kevin Greiner, Kai
+Großjohann, Joe Hildebrand, Paul Jarc, Simon Josefsson, Sascha
 Lüdecke, David Moore, Jim Radford, Benjamin Rutt, Raymond Scholz,
-Thomas Steffen, Reiner Steib, Didier Verna, Ilja Weis, Katsumi Yamaoka,
-Teodor Zlatanov, and others (@pxref{Contributors,,,gnus, the Gnus Manual}).
+Thomas Steffen, Reiner Steib, Didier Verna, Ilja Weis, Katsumi
+Yamaoka, Teodor Zlatanov, and others (@pxref{Contributors,,,gnus, the
+Gnus Manual}).
 
 @item
 Andrew Innes contributed extensively to the MS-Windows support.
@@ -566,7 +589,7 @@ buffers.
 @item
 Michael Kifer wrote @code{ediff}, an interactive interface to the
 @command{diff}, @command{patch}, and @command{merge} programs; and
-Viper, the newest emulation for VI.
+Viper, another emulator of the VI editor.
 
 @item
 Richard King wrote the first version of @file{userlock.el} and
@@ -586,8 +609,7 @@ Security-Enhanced Linux context of files on backup and copy.
 
 @item
 Shuhei Kobayashi wrote @file{hex-util.el}, for operating on hexadecimal
-strings; support for HMAC (Keyed-Hashing for Message Authentication);
-and a Lisp implementation of the SHA1 Secure Hash Algorithm.
+strings; and support for HMAC (Keyed-Hashing for Message Authentication).
 
 @item
 Pavel Kobyakov wrote @file{flymake.el}, a minor mode for performing
@@ -608,16 +630,17 @@ menu support.
 @item
 Sebastian Kremer wrote @code{dired-mode}, with contributions by Lawrence
 R.@: Dodd.  He also wrote @file{ls-lisp.el}, a Lisp emulation of the
-@code{ls} command for platforms which don't have @code{ls} as a standard
+@code{ls} command for platforms that don't have @code{ls} as a standard
 program.
 
-@item
-Ken Stevens wrote @file{ispell.el}, a spell-checker interface.
-
 @item
 David K@ringaccent{a}gedal wrote @file{tempo.el}, providing support for
 easy insertion of boilerplate text and other common constructions.
 
+@item
+Igor Kuzmin wrote @file{cconv.el}, providing closure conversion for
+statically scoped Emacs lisp.
+
 @item
 Daniel LaLiberte wrote @file{edebug.el}, a source-level debugger for
 Emacs Lisp; @file{cl-specs.el}, specifications to help @code{edebug}
@@ -638,8 +661,7 @@ a package for pretty-printing Emacs buffers to PostScript printers;
 @file{ebnf2ps.el}, a package that translates EBNF grammar to a syntactic
 chart that can be printed to a PostScript printer; and
 @file{whitespace.el}, a package that detects and cleans up excess
-whitespace in a file.  The previous version of @file{whitespace.el},
-used prior to Emacs 23, was written by Rajesh Vaidheeswarran.
+whitespace in a file (building on an earlier version by Rajesh Vaidheeswarran).
 
 @item
 Frederic Lepied wrote @file{expand.el}, which uses the abbrev
@@ -710,10 +732,25 @@ package.  He was also the main author of the CEDET (Collection of Emacs
 Development Environment Tools) package.  Portions were also written by
 Jan Moringen, David Ponce, and Joakim Verona.
 
+@item
+Roland McGrath wrote @file{compile.el} (since updated by Daniel
+Pfeiffer), a package for running compilations in a buffer, and then
+visiting the locations reported in error messages; @file{etags.el}, a
+package for jumping to function definitions and searching or replacing
+in all the files mentioned in a @file{TAGS} file; with Sebastian
+Kremer @file{find-dired.el}, for using @code{dired} commands on output
+from the @code{find} program; @file{grep.el} for running the
+@code{grep} command; @file{map-ynp.el}, a general purpose boolean
+question-asker; @file{autoload.el}, providing semi-automatic
+maintenance of autoload files.
+
 @item
 Alan Mackenzie wrote the integrated AWK support in CC Mode, and
 maintained CC Mode from Emacs 22 onwards.
 
+@item
+Michael McNamara and Wilson Snyder wrote Verilog mode.
+
 @item
 Christopher J.@: Madsen wrote @file{decipher.el}, a package for cracking
 simple substitution ciphers.
@@ -757,21 +794,6 @@ Yukihiro Matsumoto and Nobuyoshi Nakada wrote Ruby-mode.
 Thomas May wrote @file{blackbox.el}, a version of the traditional
 blackbox game.
 
-@item
-Roland McGrath wrote @file{compile.el} (since updated by Daniel
-Pfeiffer), a package for running compilations in a buffer, and then
-visiting the locations reported in error messages; @file{etags.el}, a
-package for jumping to function definitions and searching or replacing
-in all the files mentioned in a @file{TAGS} file; @file{find-dired.el},
-for using @code{dired} commands on output from the @code{find} program,
-with Sebastian Kremer; @file{grep.el} for running the @code{grep}
-command; @file{map-ynp.el}, a general purpose boolean question-asker;
-@file{autoload.el}, providing semi-automatic maintenance of autoload
-files.
-
-@item
-Michael McNamara and Wilson Snyder wrote Verilog mode.
-
 @item
 David Megginson wrote @file{derived.el}, which allows one to define new
 major modes by inheriting key bindings and commands from existing major
@@ -801,7 +823,7 @@ facility.  He also wrote @code{ebrowse}, the C@t{++} browser;
 and @file{rx.el}, a regular expression constructor.
 
 @item
-Stefan Monnier was the Emacs co-maintainer for Emacs 23.  He added
+Stefan Monnier was the Emacs co-maintainer from Emacs 23 onwards.  He added
 support for Arch and Subversion to VC, re-wrote much of the Emacs server
 to use the built-in networking primitives, and re-wrote the abbrev and
 minibuffer completion code for Emacs 23.  He also wrote @code{PCL-CVS},
@@ -810,17 +832,15 @@ a directory-level front end to the CVS version control system;
 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 BibTeX Style files; and @file{mpc.el}, a
-client for the ``Music Player Daemon''.
+@file{bibtex-style.el} for BibTeX Style files; @file{mpc.el}, a
+client for the ``Music Player Daemon''; @file{smie.el}, a generic
+indentation engine; and @file{pcase.el}, implementing ML-style pattern
+matching.  He integrated the lexical binding code in Emacs 24.
 
 @item
 Morioka Tomohiko wrote several packages for MIME support in Gnus and
 elsewhere.
 
-@item
-Takahashi Naoto co-wrote @file{quail.el} (q.v.@:), and wrote
-@file{robin.el}, another input method.
-
 @item
 Sen Nagata wrote @file{crm.el}, a package for reading multiple strings
 with completion, and @file{rfc2368.el}, support for @code{mailto:}
@@ -828,9 +848,13 @@ URLs.
 
 @item
 Erik Naggum wrote the time-conversion functions.  He also wrote
-@file{disp-table.el}, a package for dealing with display tables;
-@file{mailheader.el}, a package for parsing email headers; and
-@file{parse-time.el}, a package for parsing time strings.
+@file{disp-table.el}, for dealing with display tables;
+@file{mailheader.el}, for parsing email headers; and
+@file{parse-time.el}, for parsing time strings.
+
+@item
+Takahashi Naoto co-wrote @file{quail.el} (q.v.@:), and wrote
+@file{robin.el}, another input method.
 
 @item
 Thomas Neumann and Eric Raymond wrote @file{make-mode.el},
@@ -840,6 +864,9 @@ a mode for editing makefiles.
 Thien-Thi Nguyen and Dan Nicolaescu wrote @file{hideshow.el}, a minor
 mode for selectively displaying blocks of text.
 
+@item
+Jurgen Nickelsen wrote @file{ws-mode.el}, providing WordStar emulation.
+
 @item
 Dan Nicolaescu added support for running Emacs as a daemon.  He also
 wrote @file{romanian.el}, support for editing Romanian text;
@@ -847,9 +874,6 @@ wrote @file{romanian.el}, support for editing Romanian text;
 and @code{winterm} terminal emulators; and @file{vc-dir.el}, displaying
 the status of version-controlled directories.
 
-@item
-Jurgen Nickelsen wrote @file{ws-mode.el}, providing WordStar emulation.
-
 @item
 Hrvoje Niksic wrote @file{savehist.el}, for saving the minibuffer
 history between Emacs sessions.
@@ -862,10 +886,6 @@ dialup communications program run comfortably in an Emacs shell buffer.
 Andrew Norman wrote @file{ange-ftp.el}, providing transparent FTP
 support.
 
-@item
-Edward O'Connor wrote @file{json.el}, a file for parsing and
-generating JSON files.
-
 @item
 Kentaro Ohkouchi created the Emacs icons used beginning with Emacs 23.
 
@@ -979,7 +999,7 @@ used in Emacs Lisp library files; and code to set and make use of the
 which each lisp function loaded into Emacs came.
 
 @item
-Edward M.@: Reingold wrote the extensive calendar and diary support,
+Edward M.@: Reingold wrote the calendar and diary support,
 with contributions from Stewart Clamen (@file{cal-mayan.el}), Nachum
 Dershowitz (@file{cal-hebrew.el}), Paul Eggert (@file{cal-dst.el}),
 Steve Fisk (@file{cal-tex.el}), Michael Kifer (@file{cal-x.el}), Lara
@@ -1020,6 +1040,9 @@ Markus Rost wrote @file{cus-test.el}, a testing framework for customize.
 Guillermo J.@: Rozas wrote @file{scheme.el}, a mode for editing Scheme and
 DSSSL code.
 
+@item
+Martin Rudalics implemented improved display-buffer handling in Emacs 24.
+
 @item
 Ivar Rummelhoff wrote @file{winner.el}, which records recent window
 configurations so you can move back to them.
@@ -1172,8 +1195,7 @@ 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 the initial version of @file{ispell.el} and maintains
-that package since Ispell 3.1 release.
+Ken Stevens wrote @file{ispell.el}, a spell-checker interface.
 
 @item
 Kim F.@: Storm made many improvements to the Emacs display engine,
@@ -1224,11 +1246,9 @@ numbers in the left margin.
 @item
 Tom Tromey and Chris Lindblad wrote @file{tcl.el}, a mode for editing
 Tcl/Tk source files and running a Tcl interpreter as an Emacs
-subprocess.
-
-@item
-Tom Tromey wrote @file{bug-reference.el}, providing clickable links to
-bug reports.
+subprocess.  Tom Tromey also wrote @file{bug-reference.el}, providing
+clickable links to bug reports; and the first version of the Emacs
+package system.
 
 @item
 Eli Tziperman wrote @file{rmail-spam-filter.el}, a spam filter for RMAIL.
@@ -1237,7 +1257,8 @@ Eli Tziperman wrote @file{rmail-spam-filter.el}, a spam filter for RMAIL.
 Daiki Ueno wrote @file{starttls.el}, support for Transport Layer
 Security protocol; @file{sasl-cram.el} and @file{sasl-digest.el} (with
 Kenichi Okada), and @file{sasl.el}, support for Simple Authentication
-and Security Layer (SASL); and the EasyPG (and its predecessor PGG)
+and Security Layer (SASL); @file{plstore.el} for secure storage of
+property lists; and the EasyPG (and its predecessor PGG)
 package, for GnuPG and PGP support.
 
 @item
@@ -1258,6 +1279,9 @@ Didier Verna wrote @file{rect.el}, a package of functions for
 operations on rectangle regions of text.  He also contributed to Gnus
 (q.v.@:).
 
+@item
+Joakim Verona implemented ImageMagick support.
+
 @item
 Ulrik Vieth implemented @file{meta-mode.el}, for editing MetaFont code.
 
@@ -1317,7 +1341,7 @@ mode for editing VHDL source code.
 John Wiegley wrote @file{align.el}, a set of commands for aligning text
 according to regular-expression based rules; @file{isearchb.el} for fast
 buffer switching; @file{timeclock.el}, a package for keeping track of
-time spent on projects; the Baha'i calendar support;
+time spent on projects; the Bahá'í calendar support;
 @file{pcomplete.el}, a programmable completion facility;
 @file{remember.el}, a mode for jotting down things to remember;
 @file{eudcb-mab.el}, an address book backend for the Emacs Unified
@@ -1348,7 +1372,8 @@ 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 in CC mode.
+linker scripts, and contributed subword handling and style
+``guessing'' in CC mode.
 
 @item
 Jonathan Yavner wrote @file{testcover.el}, a package for keeping track
@@ -1378,7 +1403,7 @@ zone out in front of Emacs.
 Eli Zaretskii made many standard Emacs features work on MS-DOS and
 Microsoft Windows.  He also wrote @file{tty-colors.el}, which
 implements transparent mapping of X colors to tty colors; and
-@file{rxvt.el}.
+@file{rxvt.el}.  He implemented support for bidirectional text.
 
 @item
 Jamie Zawinski wrote much of the support for faces and X selections.
@@ -1409,6 +1434,11 @@ Reto Zimmermann wrote @file{vera-mode.el}.
 Neal Ziring and Felix S.@: T.@: Wu wrote @file{vi.el}, an emulation of the
 VI text editor.
 
+@item
+Ted Zlatanov (as well as his contributions to the Gnus newsreader)
+wrote an interface to the GnuTLS library, for secure network
+connections; and a futures facility for the URL library.
+
 @item
 Detlev Zundel wrote @file{re-builder.el}, a package for building regexps
 with visual feedback.
index c3a778dd202f8fb130278c2c93f9f47da87514a1..d0ec1103580db48dde3d4d9d234b5247c80b4b25 100644 (file)
@@ -106,7 +106,9 @@ editing.  The default value of the variable @code{major-mode}
 determines the new buffer's major mode; the default value is
 Fundamental mode.  @xref{Major Modes}.  One reason to create a new
 buffer is to use it for making temporary notes.  If you try to save
-it, Emacs asks for the file name to use.
+it, Emacs asks for the file name to use, and the buffer's major mode
+is re-established taking that file name into account (@pxref{Choosing
+Modes}).
 
 @kindex C-x @key{LEFT}
 @kindex C-x @key{RIGHT}
index 7a94ba56052a30887fab32e6249e56b8ef8dfc15..2f977c7d9234f8e9629d0a0d62827cb91262a1c1 100644 (file)
@@ -471,8 +471,7 @@ Manual}.
 * Commands of GUD::     Key bindings for common commands.
 * GUD Customization::   Defining your own commands for GUD.
 * GDB Graphical Interface::  An enhanced mode that uses GDB features to
-                        implement a graphical debugging environment through
-                        Emacs.
+                        implement a graphical debugging environment.
 @end menu
 
 @node Starting GUD
index 4d37672b6cad840a1ca54ec0ae3359e2e49b3862..45760afd7a6832a174c1ecf889c8ce8f3dd98416 100644 (file)
@@ -1,5 +1,5 @@
-@c This is part of the Emacs manual.
-@c Copyright (C) 2004-2012  Free Software Foundation, Inc.
+@c This is part of the Emacs manual.  -*- coding: iso-latin-1 -*-
+@c Copyright (C) 2004-2012 Free Software Foundation, Inc.
 @c See file emacs.texi for copying conditions.
 @c
 @c This file is included either in emacs-xtra.texi (when producing the
@@ -9,8 +9,8 @@
 @node Advanced Calendar/Diary Usage
 @section Customizing the Calendar and Diary
 
-  There are many customizations that you can use to make the calendar and
-diary suit your personal tastes.
+  There are many ways in which you can customize the calendar and
+diary to suit your personal tastes.
 
 @menu
 * Calendar Customizing::   Calendar layout and hooks.
@@ -43,12 +43,12 @@ customize the variables @code{calendar-intermonth-header} and
 @vindex diary-entry-marker
 @vindex calendar-today-marker
   The variable @code{calendar-holiday-marker} specifies how to mark a
-date as being a holiday.  Its value may be a single-character string to
+date that is a holiday.  Its value may be a single-character string to
 insert next to the date, or a face name to use for displaying the date.
 Likewise, the variable @code{diary-entry-marker} specifies how to mark a
-date that has diary entries, and @code{calendar-today-marker} is used by
-the function @code{calendar-mark-today} to mark today's date.  By
-default, the calendar uses faces named @code{holiday}, @code{diary}, and
+date that has diary entries.  The function @code{calendar-mark-today}
+uses @code{calendar-today-marker} to mark today's date.  By default,
+the calendar uses faces named @code{holiday}, @code{diary}, and
 @code{calendar-today} for these purposes.
 
 @vindex calendar-load-hook
@@ -65,7 +65,7 @@ display does not run this hook.  But if you leave the calendar with the
 @vindex calendar-today-visible-hook
 @findex calendar-star-date
   The variable @code{calendar-today-visible-hook} is a normal hook run
-after the calendar buffer has been prepared with the calendar when the
+after the calendar buffer has been prepared with the calendar, when the
 current date is visible in the window.  One use of this hook is to
 mark today's date; to do that use either of the functions
 @code{calendar-mark-today} or @code{calendar-star-date}:
@@ -90,28 +90,27 @@ the current date is @emph{not} visible in the window.
 @vindex calendar-holidays
 @vindex holiday-oriental-holidays
 @vindex holiday-solar-holidays
-  Emacs knows about holidays defined by entries on one of several lists.
-The lists of holidays that Emacs uses are for
-general holidays (@code{holiday-general-holidays}),
-local holidays (@code{holiday-local-holidays}),
-sun- and moon-related holidays (@code{holiday-solar-holidays}),
-Baha'i holidays (@code{holiday-bahai-holidays}),
-Christian holidays (@code{holiday-christian-holidays}),
-Hebrew (Jewish) holidays (@code{holiday-hebrew-holidays}),
-Islamic (Muslim) holidays (@code{holiday-islamic-holidays}),
-Oriental holidays (@code{holiday-oriental-holidays}),
-and other holidays (@code{holiday-other-holidays}).
+  There are several variables listing the default holidays that Emacs
+knows about.  These are: @code{holiday-general-holidays},
+@code{holiday-local-holidays}, @code{holiday-solar-holidays},
+@code{holiday-bahai-holidays}, @code{holiday-christian-holidays},
+@code{holiday-hebrew-holidays}, @code{holiday-islamic-holidays},
+@code{holiday-oriental-holidays}, and @code{holiday-other-holidays}.
+The names should be self-explanatory; e.g.@: @code{holiday-solar-holidays}
+lists sun- and moon-related holidays.
 
 You can customize these lists of holidays to your own needs, deleting or
 adding holidays as described below.  Set any of them to @code{nil} to
-eliminate the associated holidays.
+not show the associated holidays.
 
 @vindex holiday-general-holidays
-  The general holidays are, by default, holidays common throughout the
-United States.
-
 @vindex holiday-local-holidays
-  There are no default local holidays, but your site may supply some.
+@vindex holiday-other-holidays
+  The general holidays are, by default, holidays common throughout the
+United States.  In contrast, @code{holiday-local-holidays} and
+@code{holiday-other-holidays} are both empty by default.  These are
+intended for system-wide settings and your individual use,
+respectively.
 
 @vindex holiday-bahai-holidays
 @vindex holiday-christian-holidays
@@ -129,18 +128,13 @@ all) of the variables @code{calendar-bahai-all-holidays-flag},
 @code{calendar-hebrew-all-holidays-flag}, or
 @code{calendar-islamic-all-holidays-flag} to @code{t}.
 
-@vindex holiday-other-holidays
-  You can set the variable @code{holiday-other-holidays} to any list of
-holidays.  This list, normally empty, is intended for individual use.
-
 @cindex holiday forms
   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 0.  The element @var{string} is always the
-description of the holiday, as a string.
+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
+0.  The argument @var{string} is always the description of the
+holiday, as a string.
 
 @table @code
 @item (holiday-fixed @var{month} @var{day} @var{string})
@@ -202,7 +196,7 @@ the month (1 specifies the first occurrence, 2 the second occurrence,
 @minus{}1 the last occurrence, @minus{}2 the second-to-last occurrence, and
 so on).
 
-  You can specify holidays that occur on fixed days of the Baha'i,
+  You can specify holidays that occur on fixed days of the Bahá'í,
 Chinese, Hebrew, Islamic, and Julian calendars too.  For example,
 
 @smallexample
@@ -256,15 +250,15 @@ and write an Emacs Lisp function @code{eclipses} that returns a
 visible in the calendar window, with descriptive strings, like this:
 
 @smallexample
-(((6 27 1991) "Lunar Eclipse") ((7 11 1991) "Solar Eclipse") ... )
+(((6 4 2012) "Lunar Eclipse") ((11 13 2012) "Solar Eclipse") ... )
 @end smallexample
 
 @node Date Display Format
 @subsection Date Display Format
 @vindex calendar-date-display-form
 
-  You can customize the manner of displaying dates in the diary, in mode
-lines, and in messages by setting @code{calendar-date-display-form}.
+  You can customize the way dates are displayed in the diary, mode
+lines, and messages by setting @code{calendar-date-display-form}.
 This variable holds a list of expressions that can involve the variables
 @code{month}, @code{day}, and @code{year}, which are all numbers in
 string form, and @code{monthname} and @code{dayname}, which are both
@@ -291,7 +285,7 @@ The default ISO date representation is:
 @end smallexample
 
 @noindent
-This specifies a typical American format:
+Another typical American format is:
 
 @smallexample
 (month "/" day "/" (substring year -2))
@@ -358,7 +352,7 @@ be regular expressions (@pxref{Regular Expressions,,, elisp, the Emacs
 Lisp Reference Manual}) or the symbols @code{month}, @code{day},
 @code{year}, @code{monthname}, and @code{dayname}.  All these elements
 serve as patterns that match certain kinds of text in the diary file.
-In order for the date pattern, as a whole, to match, all of its elements
+In order for the date pattern as a whole to match, all of its elements
 must match consecutively.
 
   A regular expression in a date pattern matches in its usual fashion,
@@ -387,8 +381,8 @@ provided by @code{diary-american-date-forms}:
 @end example
 
 @noindent
-Other default styles are provided by @code{diary-european-date-forms}
-and @code{diary-iso-date-forms}.
+The variables @code{diary-european-date-forms} and
+@code{diary-iso-date-forms} provide other default styles.
 
   The date patterns in the list must be @emph{mutually exclusive} and
 must not match any portion of the diary entry itself, just the date and
@@ -419,7 +413,7 @@ the fourth pattern.
 @subsection Diary Entries Using non-Gregorian Calendars
 
   As well as entries based on the standard Gregorian calendar, your
-diary can have entries based on Baha'i, Hebrew, or Islamic dates.
+diary can have entries based on Bahá'í, Hebrew, or Islamic dates.
 Recognition of such entries can be time-consuming, however, and since
 most people don't use them, you must explicitly enable their use.  If
 you want the diary to recognize Hebrew-date diary entries, for example,
@@ -439,7 +433,7 @@ you must do this:
 @end smallexample
 
 @noindent
-Similarly, for Islamic and Baha'i entries, add
+Similarly, for Islamic and Bahá'í entries, add
 @code{diary-islamic-list-entries} and @code{diary-islamic-mark-entries}, or
 @code{diary-bahai-list-entries} and @code{diary-bahai-mark-entries}.
 
@@ -448,7 +442,7 @@ Similarly, for Islamic and Baha'i entries, add
 @vindex diary-islamic-entry-symbol
   These diary entries have the same formats as Gregorian-date diary
 entries; except that @code{diary-bahai-entry-symbol} (default @samp{B})
-must precede a Baha'i date, @code{diary-hebrew-entry-symbol} (default
+must precede a Bahá'í date, @code{diary-hebrew-entry-symbol} (default
 @samp{H}) a Hebrew date, and @code{diary-islamic-entry-symbol} (default
 @samp{I}) an Islamic date.  Moreover, non-Gregorian month names may not
 be abbreviated (because the first three letters are often not unique).
@@ -475,7 +469,7 @@ nonmarking if preceded by @code{diary-nonmarking-symbol} (default
 
   Here is a table of commands used in the calendar to create diary
 entries that match the selected date and other dates that are similar in
-the Baha'i, Hebrew, or Islamic calendars:
+the Bahá'í, Hebrew, or Islamic calendars:
 
 @table @kbd
 @item i h d
@@ -538,7 +532,13 @@ are no diary entries, even if that day is a holiday.  If you want such
 days to be shown in the fancy diary buffer, set the variable
 @code{diary-list-include-blanks} to @code{t}.@refill
 
-  The fancy diary buffer enables View mode (@pxref{View Mode}).
+  The fancy diary buffer enables View mode
+@iftex
+(@pxref{View Mode,,, emacs, the Emacs Manual}).
+@end iftex
+@ifnottex
+(@pxref{View Mode}).
+@end ifnottex
 
   The alternative display method @code{diary-simple-display} shows the
 actual diary buffer, and uses invisible text to hide entries that don't
@@ -569,7 +569,13 @@ display, the other irrelevant entries are really absent, not just
 hidden.  After preparing the buffer, it runs the hook
 @code{diary-print-entries-hook}.  The default value of this hook sends
 the data directly to the printer with the command @code{lpr-buffer}
-(@pxref{Printing}).  If you want to use a different command to do the
+@iftex
+(@pxref{Printing,,, emacs, the Emacs Manual}).
+@end iftex
+@ifnottex
+(@pxref{Printing}).
+@end ifnottex
+If you want to use a different command to do the
 printing, just change the value of this hook.  Other uses might include,
 for example, rearranging the lines into order by day and time.
 
@@ -615,7 +621,7 @@ of the diary entries, or add items.
 variables @code{diary-comment-start} and @code{diary-comment-end} to
 strings that delimit comments.  The fancy display does not print
 comments.  You might want to put meta-data for the use of other packages
-(e.g. the appointment package,
+(e.g.@: the appointment package,
 @iftex
 @pxref{Appointments,,,emacs, the Emacs Manual})
 @end iftex
@@ -699,7 +705,7 @@ that have occurred:
 
 @findex diary-cyclic
 @smallexample
-%%(diary-cyclic 50 1 1 1990) Renew medication (%d%s time)
+%%(diary-cyclic 50 1 1 2012) Renew medication (%d%s time)
 @end smallexample
 
 @noindent
@@ -710,9 +716,9 @@ Renew medication (5th time)
 @end smallexample
 
 @noindent
-in the fancy diary display on September 8, 1990.
+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
@@ -838,7 +844,7 @@ Make a diary entry with today's equivalent Julian calendar date.
 @item %%(diary-astro-day-number)
 Make a diary entry with today's equivalent astronomical (Julian) day number.
 @item %%(diary-bahai-date)
-Make a diary entry with today's equivalent Baha'i calendar date.
+Make a diary entry with today's equivalent Bahá'í calendar date.
 @item %%(diary-chinese-date)
 Make a diary entry with today's equivalent Chinese calendar date.
 @item %%(diary-coptic-date)
index 495828d6d8aaf0a061a2c7c4f0ef353bfadcc6de..c2851d4abd3eb6edf099f4782723dd4eb7aaaf08 100644 (file)
@@ -1,4 +1,4 @@
-@c This is part of the Emacs manual.
+@c This is part of the Emacs manual.  -*- coding: iso-latin-1 -*-
 @c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2012
 @c   Free Software Foundation, Inc.
 @c See file emacs.texi for copying conditions.
@@ -143,8 +143,7 @@ arguments in Calendar mode even without the Meta modifier.  For example,
 
   A week (or month, or year) is not just a quantity of days; we think of
 weeks (months, years) as starting on particular dates.  So Calendar mode
-provides commands to move to the beginning or end of a week, month or
-year:
+provides commands to move to the start or end of a week, month or year:
 
 @table @kbd
 @kindex C-a @r{(Calendar mode)}
@@ -246,12 +245,10 @@ Scroll calendar one month forward (@code{calendar-scroll-left}).
 Scroll calendar one month backward (@code{calendar-scroll-right}).
 @item C-v
 @itemx @key{next}
-Scroll calendar three months forward
-(@code{calendar-scroll-left-three-months}).
+Scroll three months forward (@code{calendar-scroll-left-three-months}).
 @item M-v
 @itemx @key{prior}
-Scroll calendar three months backward
-(@code{calendar-scroll-right-three-months}).
+Scroll three months backward (@code{calendar-scroll-right-three-months}).
 @end table
 
 @kindex > @r{(Calendar mode)}
@@ -290,7 +287,8 @@ Display the number of days in the current region
 
 @kindex M-= @r{(Calendar mode)}
 @findex calendar-count-days-region
-  To determine the number of days in the region, type @kbd{M-=}
+  To determine the number of days in a range, set the mark on one
+date using @kbd{C-SPC}, move point to another date, and type @kbd{M-=}
 (@code{calendar-count-days-region}).  The numbers of days shown is
 @emph{inclusive}; that is, it includes the days specified by mark and
 point.
@@ -342,6 +340,8 @@ buries all buffers related to the calendar, selecting other buffers.
 calendar deletes or iconifies that frame depending on the value of
 @code{calendar-remove-frame-by-deleting}.)
 
+@c FIXME this mentions holidays and diary entries, albeit briefly, so
+@c should it be moved after those sections?  Or at least xref them.
 @node Writing Calendar Files
 @section Writing Calendar Files
 
@@ -427,7 +427,7 @@ Generate a Filofax-style calendar for one year
   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
+argument, which specifies how many days, weeks, months or years to print
 (starting always with the selected one).
 
   If the variable @code{cal-tex-holidays} is non-@code{nil} (the default),
@@ -452,11 +452,10 @@ to.
 and can display them.  You can add your own holidays to the default list.
 
 @table @kbd
-@item h
+@item Mouse-3 Holidays
+@itemx h
 Display holidays for the selected date
 (@code{calendar-cursor-holidays}).
-@item Mouse-3 Holidays
-Display any holidays for the date you click on.
 @item x
 Mark holidays in the calendar window (@code{calendar-mark-holidays}).
 @item u
@@ -519,7 +518,7 @@ holidays centered around a different month, use @kbd{C-u M-x
 holidays}, which prompts for the month and year.
 
   The holidays known to Emacs include United States holidays and the
-major Baha'i, Chinese, Christian, Islamic, and Jewish holidays; also the
+major Bahá'í, Chinese, Christian, Islamic, and Jewish holidays; also the
 solstices and equinoxes.
 
 @findex list-holidays
@@ -541,11 +540,10 @@ practice}, not historical fact.  For example Veteran's Day began in
 times of sunrise and sunset for any date.
 
 @table @kbd
-@item S
+@item Mouse-3 Sunrise/sunset
+@itemx S
 Display times of sunrise and sunset for the selected date
 (@code{calendar-sunrise-sunset}).
-@item Mouse-3 Sunrise/sunset
-Display times of sunrise and sunset for the date you click on.
 @item M-x sunrise-sunset
 Display times of sunrise and sunset for today's date.
 @item C-u M-x sunrise-sunset
@@ -615,9 +613,8 @@ for how daylight saving time is determined.
 
   As a user, you might find it convenient to set the calendar location
 variables for your usual physical location in your @file{.emacs} file.
-And when you install Emacs on a machine, you can create a
-@file{default.el} file which sets them properly for the typical location
-of most users of that machine.  @xref{Init File}.
+If you are a system administrator, you may want to set these variables
+for all users in a @file{default.el} file.  @xref{Init File}.
 
 @node Lunar Phases
 @section Phases of the Moon
@@ -666,8 +663,8 @@ sixteenth century and was not widely used before the eighteenth century;
 it did not fully displace the Julian calendar and gain universal
 acceptance until the early twentieth century.  The Emacs calendar can
 display any month since January, year 1 of the current era, but the
-calendar displayed is the Gregorian, even for a date at which the
-Gregorian calendar did not exist.
+calendar displayed is always the Gregorian, even for a date at which
+the Gregorian calendar did not exist.
 
   While Emacs cannot display other calendars, it can convert dates to
 and from several other calendars.
@@ -680,11 +677,13 @@ and from several other calendars.
 * Mayan Calendar::         Moving to a date specified in a Mayan calendar.
 @end menu
 
+@c FIXME perhaps most of the details should be moved to cal-xtra.
+@c Just list the major supported systems here?
 @node Calendar Systems
 @subsection Supported Calendar Systems
 
 @cindex ISO commercial calendar
-  The ISO commercial calendar is used largely in Europe.
+  The ISO commercial calendar is often used in business.
 
 @cindex Julian calendar
   The Julian calendar, named after Julius Caesar, was the one used in Europe
@@ -745,7 +744,8 @@ championed by Birashk, based on a 2,820-year cycle.  It differs from
 the astronomical Persian calendar, which is based on astronomical
 events.  As of this writing the first future discrepancy is projected
 to occur on March 20, 2025.  It is currently not clear what the
-official calendar of Iran will be that far into the future.
+official calendar of Iran will be at that time.
+@c FIXME not so far in the future now.
 
 @cindex Chinese calendar
   The Chinese calendar is a complicated system of lunar months arranged
@@ -756,8 +756,8 @@ days are named by combining one of ten ``celestial stems'' with one of
 twelve ``terrestrial branches'' for a total of sixty names that are
 repeated in a cycle of sixty.
 
-@cindex Baha'i calendar
-  The Baha'i calendar system is based on a solar cycle of 19 months with
+@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
 between the 18th and 19th months.
 
@@ -768,11 +768,10 @@ between the 18th and 19th months.
 in various other calendar systems:
 
 @table @kbd
-@item Mouse-3  Other calendars
-Display the date that you click on, expressed in various other calendars.
 @kindex p @r{(Calendar mode)}
 @findex calendar-print-other-dates
-@item p o
+@item Mouse-3  Other calendars
+@itemx p o
 Display the selected date in various other calendars.
 (@code{calendar-print-other-dates}).
 @findex calendar-iso-print-date
@@ -798,7 +797,7 @@ Display French Revolutionary date for selected day
 (@code{calendar-french-print-date}).
 @findex calendar-bahai-print-date
 @item p b
-Display Baha'i date for selected day
+Display Bahá'í date for selected day
 (@code{calendar-bahai-print-date}).
 @findex calendar-chinese-print-date
 @item p C
@@ -821,18 +820,16 @@ Display Persian date for selected day
 Display Mayan date for selected day (@code{calendar-mayan-print-date}).
 @end table
 
-  If you are using a graphic display, the easiest way to translate a
-date into other calendars is to click on it with @kbd{Mouse-3}, then
-choose @kbd{Other calendars} from the menu that appears.  This displays
-the equivalent forms of the date in all the calendars Emacs understands,
-in the form of a menu.  (Choosing an alternative from this menu doesn't
-actually do anything---the menu is used only for display.)
-
   Otherwise, move point to the date you want to convert, then type the
 appropriate command starting with @kbd{p} from the table above.  The
 prefix @kbd{p} is a mnemonic for ``print,'' since Emacs ``prints'' the
 equivalent date in the echo area. @kbd{p o} displays the
-date in all forms known to Emacs.
+date in all forms known to Emacs.  You can also use @kbd{Mouse-3} and
+then choose @kbd{Other calendars} from the menu that appears.  This
+displays the equivalent forms of the date in all the calendars Emacs
+understands, in the form of a menu.  (Choosing an alternative from
+this menu doesn't actually do anything---the menu is used only for
+display.)
 
 @node From Other Calendar
 @subsection Converting From Other Calendars
@@ -868,7 +865,7 @@ Move to a date specified in the Julian calendar
 Move to a date specified with an astronomical (Julian) day number
 (@code{calendar-astro-goto-day-number}).
 @item g b
-Move to a date specified in the Baha'i calendar
+Move to a date specified in the Bahá'í calendar
 (@code{calendar-bahai-goto-date}).
 @item g h
 Move to a date specified in the Hebrew calendar
@@ -903,7 +900,7 @@ Islamic, or French names.
 @c FIXME move?
 @findex calendar-hebrew-list-yahrzeits
 @cindex yahrzeits
-  One common question concerning the Hebrew calendar is the computation
+  One common issue concerning the Hebrew calendar is the computation
 of the anniversary of a date of death, called a ``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
@@ -912,6 +909,7 @@ years for the date given by point.  If you are not in the calendar,
 this command first asks you for the date of death and the range of
 years, and then displays the list of yahrzeit dates.
 
+@c FIXME move to emacs-xtra.
 @node Mayan Calendar
 @subsection Converting from the Mayan Calendar
 
@@ -974,7 +972,7 @@ to go to the next occurrence of a tzolkin date.
 @findex calendar-mayan-next-haab-date
 @cindex Mayan haab calendar
   The Mayan haab calendar is a cycle of 365 days arranged as 18 months
-of 20 days each, followed a 5-day monthless period.  Like the tzolkin
+of 20 days each, followed by a 5-day monthless period.  Like the tzolkin
 cycle, this cycle repeats endlessly, and there are commands to move
 backward and forward to the previous or next point in the cycle.  Type
 @kbd{g m p h} to go to the previous haab date; Emacs asks you for a haab
@@ -1014,7 +1012,7 @@ date.
 showing what that file looks like:
 
 @example
-12/22/1988  Twentieth wedding anniversary!!
+12/22/2012  Twentieth wedding anniversary!!
 &1/1.       Happy New Year!
 10/22       Ruth's birthday.
 * 21, *:    Payday
@@ -1023,15 +1021,15 @@ Tuesday--weekly meeting with grad students at 10am
 1/13/89     Friday the thirteenth!!
 &thu 4pm    squash game with Lloyd.
 mar 16      Dad's birthday
-April 15, 1989 Income tax due.
+April 15, 2013 Income tax due.
 &* 15       time cards due.
 @end example
 
 @noindent
-This format is essentially the same as the one used by the system's
-@command{calendar} utility.  This example uses extra spaces to align
-the event descriptions of most of the entries.  Such formatting is
-purely a matter of taste.
+This format is essentially the same as the one used by the separate
+@command{calendar} utility that is present on some Unix systems.  This
+example uses extra spaces to align the event descriptions of most of
+the entries.  Such formatting is purely a matter of taste.
 
   Although you probably will start by creating a diary manually, Emacs
 provides a number of commands to let you view, add, and change diary
@@ -1053,11 +1051,10 @@ it.  You can also view today's events outside of Calendar mode.  In the
 following, key bindings refer to the Calendar buffer.
 
 @table @kbd
-@item d
+@item Mouse-3 Diary
+@itemx d
 Display all diary entries for the selected date
 (@code{diary-view-entries}).
-@item Mouse-3 Diary
-Display all diary entries for the date you click on.
 @item s
 Display the entire diary file (@code{diary-show-all-entries}).
 @item m
@@ -1111,8 +1108,8 @@ a different face.
 @xref{Calendar Customizing, diary-entry-marker}.
 @end ifnottex
 
-  The command applies both to the currently visible months and to
-other months that subsequently become visible by scrolling.  To turn
+  This command applies both to the months that are currently visible
+and to those that subsequently become visible after scrolling.  To turn
 marking off and erase the current marks, type @kbd{u}, which also
 turns off holiday marks (@pxref{Holidays}).  If the variable
 @code{calendar-mark-diary-entries-flag} is non-@code{nil}, creating or
@@ -1136,13 +1133,13 @@ how many days to include.
 @end ifnottex
 
   If you put @code{(diary)} in your @file{.emacs} file, this
-automatically displays a window with the day's diary entries, when you
-enter Emacs.
+automatically displays a window with the day's diary entries when you
+start Emacs.
 
 @findex diary-mail-entries
 @vindex diary-mail-days
-  Many users like to receive notice of events in their diary as email.
-To send such mail to yourself, use the command @kbd{M-x
+  Some people like to receive email notifications of events in their
+diary.  To send such mail to yourself, use the command @kbd{M-x
 diary-mail-entries}.  A prefix argument specifies how many days
 (starting with today) to check; otherwise, the variable
 @code{diary-mail-days} says how many days.
@@ -1173,7 +1170,7 @@ consists only of the date or day name (with no following blanks or
 punctuation).  For example:
 
 @example
-02/11/1989
+02/11/2012
       Bill B. visits Princeton today
       2pm Cognitive Studies Committee meeting
       2:30-5:30 Liz at Lawrenceville
@@ -1198,10 +1195,11 @@ for more than one day's entries.
 
 @vindex diary-nonmarking-symbol
   You can inhibit the marking of certain diary entries in the calendar
-window; to do this, insert an ampersand @code{diary-nonmarking-symbol}
-(default @samp{&}) at the beginning of the entry, before the date.  This
-has no effect on display of the entry in the diary window; it affects
-only marks on dates in the calendar window.  Nonmarking entries are
+window; to do this, insert the string that
+@code{diary-nonmarking-symbol} specifies (default @samp{&}) at the
+beginning of the entry, before the date.  This
+has no effect on display of the entry in the diary window; it only
+affects marks on dates in the calendar window.  Nonmarking entries are
 especially useful for generic entries that would otherwise mark many
 different dates.
 
@@ -1214,14 +1212,14 @@ formatting a date.  The examples all show dates in American order
 month, year) and ISO order (year, month, day) as options.
 
 @example
-4/20/93  Switch-over to new tabulation system
+4/20/12  Switch-over to new tabulation system
 apr. 25  Start tabulating annual results
 4/30  Results for April are due
 */25  Monthly cycle finishes
 Friday  Don't leave without backing up files
 @end example
 
-  The first entry appears only once, on April 20, 1993.  The second and
+  The first entry appears only once, on April 20, 2012.  The second and
 third appear every year on the specified dates, and the fourth uses a
 wildcard (asterisk) for the month, so it appears on the 25th of every
 month.  The final entry appears every week on Friday.
@@ -1231,7 +1229,7 @@ month.  The final entry appears every week on Friday.
 This must be followed by a nondigit.  In the date itself, @var{month}
 and @var{day} are numbers of one or two digits.  The optional @var{year}
 is also a number, and may be abbreviated to the last two digits; that
-is, you can use @samp{11/12/1989} or @samp{11/12/89}.
+is, you can use @samp{11/12/2012} or @samp{11/12/12}.
 
   Dates can also have the form @samp{@var{monthname} @var{day}} or
 @samp{@var{monthname} @var{day}, @var{year}}, where the month's name can
@@ -1245,7 +1243,7 @@ letters of a name as its abbreviation.  Case is not significant.
   A date may be @dfn{generic}; that is, partially unspecified.  Then the
 entry applies to all dates that match the specification.  If the date
 does not contain a year, it is generic and applies to any year.
-Alternatively, @var{month}, @var{day}, or @var{year} can be @samp{*};
+Alternatively, @var{month}, @var{day}, or @var{year} can be @samp{*};
 this matches any month, day, or year, respectively.  Thus, a diary entry
 @samp{3/*/*} matches any day in March of any year; so does @samp{march
 *}.
@@ -1311,7 +1309,7 @@ command, and type the rest of the entry.  Similarly, you can insert a
 yearly diary entry with the @kbd{i y} command.
 
   All of the above commands make marking diary entries by default.  To
-make a nonmarking diary entry, give a numeric argument to the command.
+make a nonmarking diary entry, give a prefix argument to the command.
 For example, @kbd{C-u i w} makes a nonmarking weekly diary entry.
 
   When you modify the diary file, be sure to save the file before
@@ -1368,15 +1366,15 @@ diary functions can use it to calculate the number of elapsed years.
 
   A @dfn{block} diary entry applies to a specified range of consecutive
 dates.  Here is a block diary entry that applies to all dates from June
-24, 1990 through July 10, 1990:
+24, 2012 through July 10, 2012:
 
 @findex diary-block
 @example
-%%(diary-block 6 24 1990 7 10 1990) Vacation
+%%(diary-block 6 24 2012 7 10 2012) Vacation
 @end example
 
 @noindent
-The @samp{6 24 1990} indicates the starting date and the @samp{7 10 1990}
+The @samp{6 24 2012} indicates the starting date and the @samp{7 10 2012}
 indicates the stopping date.  (Again, if you are using the European or ISO
 calendar style, the input order of month, day and year is different.)
 
@@ -1396,23 +1394,23 @@ which looks like this:
 
 @findex diary-cyclic
 @example
-%%(diary-cyclic 50 3 1 1990) Renew medication
+%%(diary-cyclic 50 3 1 2012) Renew medication
 @end example
 
 @noindent
-This entry applies to March 1, 1990 and every 50th day following;
-@samp{3 1 1990} specifies the starting date.  (If you are using the
+This entry applies to March 1, 2012 and every 50th day following;
+@samp{3 1 2012} specifies the starting date.  (If you are using the
 European or ISO calendar style, the input order of month, day and year
 is different.)
 
   All three of these commands make marking diary entries.  To insert a
-nonmarking entry, give a numeric argument to the command.  For example,
+nonmarking entry, give a prefix argument to the command.  For example,
 @kbd{C-u i a} makes a nonmarking anniversary diary entry.
 
-  Marking sexp diary entries in the calendar is @emph{extremely}
-time-consuming, since every date visible in the calendar window must be
-individually checked.  So it's a good idea to make sexp diary entries
-nonmarking (with @samp{&}) when possible.
+  Marking sexp diary entries in the calendar can be time-consuming,
+since every date visible in the calendar window must be individually
+checked.  So it's a good idea to make sexp diary entries nonmarking
+(with @samp{&}) when possible.
 
   Another sophisticated kind of sexp entry, a @dfn{floating} diary entry,
 specifies a regularly occurring event by offsets specified in days,
@@ -1454,8 +1452,8 @@ can perform arbitrary computations to determine when they apply.
 @vindex appt-audible
 @vindex appt-display-mode-line
   If you have a diary entry for an appointment, and that diary entry
-begins with a recognizable time of day, Emacs can warn you several
-minutes beforehand that that appointment is pending.  Emacs alerts you
+begins with a recognizable time of day, Emacs can warn you in advance
+that an appointment is pending.  Emacs alerts you
 to the appointment by displaying a message in your chosen format, as
 specified by the variable @code{appt-display-format}.  If the value of
 @code{appt-audible} is non-@code{nil}, the warning includes an audible
@@ -1542,6 +1540,7 @@ diary-from-outlook} to import the entry.  You can make this command
 recognize additional appointment message formats by customizing the
 variable @code{diary-outlook-formats}.
 
+@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
@@ -1556,7 +1555,7 @@ diary file and iCalendar files, which are defined in ``RFC
 
 @findex icalendar-import-buffer
   The command @code{icalendar-import-buffer} extracts
-iCalendar data from the current buffer and adds it to your (default)
+iCalendar data from the current buffer and adds it to your
 diary file.  This function is also suitable for automatic extraction of
 iCalendar data; for example with the Rmail mail client one could use:
 
@@ -1588,7 +1587,7 @@ to the main diary file, if these are different files.
   Use @code{icalendar-export-file} to interactively export an entire
 Emacs diary file to iCalendar format.  To export only a part of a diary
 file, mark the relevant area, and call @code{icalendar-export-region}.
-In both cases the result is appended to the target file.
+In both cases, Emacs appends the result to the target file.
 
 @node Daylight Saving
 @section Daylight Saving Time
@@ -1694,7 +1693,7 @@ workday in the mode line, either customize the
 @vindex timeclock-ask-before-exiting
   Terminating the current Emacs session might or might not mean that
 you have stopped working on the project and, by default, Emacs asks
-you.  You can, however, set customize the value of the variable
+you.  You can, however, customize the value of the variable
 @code{timeclock-ask-before-exiting} to @code{nil} to avoid the question;
 then, only an explicit @kbd{M-x timeclock-out} or @kbd{M-x
 timeclock-change} will tell Emacs that the current interval is over.
index bc141650b4a0839bea09f1a6b6f697322f94f781..81de9a800f95f05515db50df2db789d4e71fd678 100644 (file)
@@ -1,5 +1,5 @@
 @c This is part of the Emacs manual.
-@c Copyright (C) 2004-2012  Free Software Foundation, Inc.
+@c Copyright (C) 2004-2012 Free Software Foundation, Inc.
 @c See file emacs.texi for copying conditions.
 @c
 @c This file is included either in emacs-xtra.texi (when producing the
@@ -9,12 +9,19 @@
 
 You can insert subdirectories with specified @command{ls} switches in
 Dired buffers using @kbd{C-u i}.  You can change the @command{ls}
-switches of an already inserted subdirectory using @kbd{C-u l}.
+switches of an already inserted subdirectory at point using @kbd{C-u l}.
 
 Dired preserves the switches if you revert the buffer.  Deleting a
 subdirectory forgets about its switches.
 
-Using @code{dired-undo} (@pxref{Marks vs Flags}) to reinsert or delete
+Using @code{dired-undo}
+@iftex
+(@pxref{Marks vs Flags,,, emacs, the Emacs Manual})
+@end iftex
+@ifnottex
+(@pxref{Marks vs Flags})
+@end ifnottex
+to reinsert or delete
 subdirectories that were inserted with explicit switches can bypass
 Dired's machinery for remembering (or forgetting) switches.  Deleting
 a subdirectory using @code{dired-undo} does not forget its switches.
index 8159b8cc6aa70fbbf996c38ca49fe6c8b7ac1229..d86e0049fb5ea85f3890e9d9c289b46c4cb0c2ec 100644 (file)
@@ -28,7 +28,7 @@ the text is displayed.
 * Highlight Interactively:: Tell Emacs what text to highlight.
 * Fringes::                Enabling or disabling window fringes.
 * Displaying Boundaries::  Displaying top and bottom of the buffer.
-* Useless Whitespace::     Showing possibly-spurious trailing whitespace.
+* Useless Whitespace::     Showing possibly spurious trailing whitespace.
 * Selective Display::      Hiding lines with lots of indentation.
 * Optional Mode Line::     Optional mode line display features.
 * Text Display::           How text characters are normally displayed.
index 596cc13abf5e31129ccd3794227863b4c098bb2b..78cac7d8a10bc3a388c7a3a1da8c5f1b8877a73a 100644 (file)
@@ -11,8 +11,7 @@
 @copying
 This manual describes specialized features of Emacs.
 
-Copyright @copyright{} 2004-2012
-Free Software Foundation, Inc.
+Copyright @copyright{} 2004-2012 Free Software Foundation, Inc.
 
 @quotation
 Permission is granted to copy, distribute and/or modify this document
@@ -34,6 +33,8 @@ license to the document, as described in section 6 of the license.
 @end quotation
 @end copying
 
+@documentencoding ISO-8859-1
+
 @dircategory Emacs
 @direntry
 * Emacs-Xtra: (emacs-xtra).    Specialized Emacs features.
@@ -68,7 +69,7 @@ license to the document, as described in section 6 of the license.
 * Emerge::              A convenient way of merging two versions of a program.
 * Advanced VC Usage::   Advanced VC (version control) features.
 * Fortran::             Fortran mode and its special features.
-* MS-DOS::              Using Emacs on MS-DOS (otherwise known as @dfn{MS-DOG}).
+* MS-DOS::              Using Emacs on MS-DOS.
 @end iftex
 * Index::
 @end menu
@@ -109,10 +110,10 @@ style of the Elisp manual.  Other sections should follow the style of
 the Emacs manual.
 
 @iftex
-@c ``Picture Mode'' is a chapter, not a section, so it's outside @raisesections.
-@include picture-xtra.texi
 
 @raisesections
+@include picture-xtra.texi
+
 @include arevert-xtra.texi
 
 @include dired-xtra.texi
index 1f7fecb8b6a8de3e0b06cb765eab8f3ae0d0ceab..ef438cd3067a67bd511dfcbb9091087d13b4f4b5 100644 (file)
@@ -11,7 +11,7 @@
 This is the @value{EDITION} edition of the @cite{GNU Emacs Manual},@*
 updated for Emacs version @value{EMACSVER}.
 
-Copyright @copyright{} 1985-1987, 1993-2012  Free Software Foundation, Inc.
+Copyright @copyright{} 1985-1987, 1993-2012 Free Software Foundation, Inc.
 
 @quotation
 Permission is granted to copy, distribute and/or modify this document
@@ -99,12 +99,12 @@ Cover art by Etienne Suvasa.
 
 Emacs is the extensible, customizable, self-documenting real-time
 display editor.  This Info file describes how to edit with Emacs and
-some of how to customize it; it corresponds to GNU Emacs version
+some of the ways to customize it; it corresponds to GNU Emacs version
 @value{EMACSVER}.
 
 @ifinfo
-To learn more about the Info documentation system, type @kbd{h},
-to visit a programmed instruction sequence for the Info commands.
+If you are reading this in Emacs, type @kbd{h} to read a basic
+introduction to the Info documentation system.
 @end ifinfo
 
 For information on extending Emacs, see @ref{Top, Emacs Lisp,, elisp, The
@@ -113,6 +113,8 @@ Emacs Lisp Reference Manual}.
 @insertcopying
 @end ifnottex
 
+@c Note that the TeX version generates its own TOC, so the ifnottex's
+@c here are not really necessary.
 @menu
 * Distrib::             How to get the latest Emacs distribution.
 * Intro::               An introduction to Emacs concepts.
@@ -146,12 +148,7 @@ Fundamental Editing Commands
 
 Important Text-Changing Commands
 * Mark::                The mark: how to delimit a "region" of text.
-* Killing::             Killing (cutting) text.
-* Yanking::             Recovering killed text.  Moving text. (Pasting.)
-* Cut and Paste::       Clipboard and selections on graphical displays.
-* Accumulating Text::   Other ways of copying text.
-* Rectangles::          Operating on text in rectangular areas.
-* CUA Bindings::        Using @kbd{C-x}, @kbd{C-c}, @kbd{C-v} to kill and yank.
+* Killing::             Killing (cutting) and yanking (copying) text.
 * Registers::           Saving a text string or a location in the buffer.
 * Display::             Controlling what text is displayed.
 * Search::              Finding or replacing occurrences of a string.
@@ -161,8 +158,8 @@ Important Text-Changing Commands
 Major Structures of Emacs
 * Files::               All about handling files.
 * Buffers::             Multiple buffers; editing several files at once.
-* Windows::             Viewing two pieces of text at once.
-* Frames::              Running the same Emacs session in multiple X windows.
+* Windows::             Viewing multiple pieces of text in one frame.
+* Frames::              Using multiple ``windows'' on your display.
 * International::       Using non-@acronym{ASCII} character sets.
 
 Advanced Features
@@ -172,8 +169,7 @@ Advanced Features
 * Programs::            Commands and modes for editing programs.
 * Building::            Compiling, running and debugging programs.
 * Maintaining::         Features for maintaining large programs.
-* Abbrevs::             Defining text abbreviations to reduce
-                          the number of characters you must type.
+* Abbrevs::             Defining text abbreviations to reduce typing.
 * Dired::               Directory and file manager.
 * Calendar/Diary::      Calendar and diary facilities.
 * Sending Mail::        Sending mail in Emacs.
@@ -187,7 +183,7 @@ Advanced Features
 @ifnottex
 * Picture Mode::        Editing pictures made up of text characters.
 @end ifnottex
-* Editing Binary Files:: Editing binary files with Hexl mode.
+* 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".
 * Emulation::           Emulating some other editors with Emacs.
@@ -291,6 +287,15 @@ The Mark and the Region
 
 Killing and Moving Text
 
+* Deletion and Killing:: Commands that remove text.
+* Yanking::             Recovering killed text.  Moving text. (Pasting.)
+* Cut and Paste::       Clipboard and selections on graphical displays.
+* Accumulating Text::   Other ways of copying text.
+* Rectangles::          Operating on text in rectangular areas.
+* CUA Bindings::        Using @kbd{C-x}, @kbd{C-c}, @kbd{C-v} to kill and yank.
+
+Deletion and Killing
+
 * Deletion::            Commands for deleting small amounts of text and
                           blank areas.
 * Killing by Lines::    How to kill entire lines of text at one time.
@@ -338,7 +343,7 @@ Controlling the Display
 * Highlight Interactively:: Tell Emacs what text to highlight.
 * Fringes::                Enabling or disabling window fringes.
 * Displaying Boundaries::  Displaying top and bottom of the buffer.
-* Useless Whitespace::     Showing possibly-spurious trailing whitespace.
+* Useless Whitespace::     Showing possibly spurious trailing whitespace.
 * Selective Display::      Hiding lines with lots of indentation.
 * Optional Mode Line::     Optional mode line display features.
 * Text Display::           How text characters are normally displayed.
@@ -391,8 +396,10 @@ Keyboard Macros
 * Basic Keyboard Macro::     Defining and running keyboard macros.
 * Keyboard Macro Ring::      Where previous keyboard macros are saved.
 * Keyboard Macro Counter::   Inserting incrementing numbers in macros.
-* Keyboard Macro Query::     Making keyboard macros do different things each time.
-* Save Keyboard Macro::      Giving keyboard macros names; saving them in files.
+* Keyboard Macro Query::     Making keyboard macros do different things each
+                                time.
+* Save Keyboard Macro::      Giving keyboard macros names; saving them in
+                                files.
 * Edit Keyboard Macro::      Editing keyboard macros.
 * Keyboard Macro Step-Edit:: Interactively executing and editing a keyboard
                                 macro.
@@ -403,7 +410,9 @@ File Handling
 * Visiting::            Visiting a file prepares Emacs to edit the file.
 * Saving::              Saving makes your changes permanent.
 * Reverting::           Reverting cancels all the changes not saved.
+@ifnottex
 * Autorevert::          Auto Reverting non-file buffers.
+@end ifnottex
 * Auto Save::           Auto Save periodically protects against loss of data.
 * File Aliases::        Handling multiple names for one file.
 * Directories::         Creating, deleting, and listing file directories.
@@ -412,7 +421,7 @@ File Handling
 * Misc File Ops::       Other things you can do on files.
 * Compressed Files::    Accessing compressed files.
 * File Archives::       Operating on tar, zip, jar etc. archive files.
-* Remote Files::        Accessing files on other sites.
+* Remote Files::        Accessing files on other machines.
 * Quoted File Names::   Quoting special characters in file names.
 * File Name Cache::     Completion against a list of files you often use.
 * File Conveniences::   Convenience Features for Finding Files.
@@ -434,11 +443,13 @@ Backup Files
 * Backup Deletion::     Emacs deletes excess numbered backups.
 * Backup Copying::      Backups can be made by copying or renaming.
 
+@ifnottex
 Auto Reverting Non-File Buffers
 
 * Auto Reverting the Buffer Menu:: Auto Revert of the Buffer Menu.
 * Auto Reverting Dired::           Auto Revert of Dired buffers.
 * Supporting additional buffers::  How to add more Auto Revert support.
+@end ifnottex
 
 Auto-Saving: Protection Against Disasters
 
@@ -475,6 +486,10 @@ Multiple Windows
 * Displaying Buffers::  How Emacs picks a window for displaying a buffer.
 * Window Convenience::  Convenience functions for window handling.
 
+Displaying Buffers
+
+* Window Choice::       How @code{display-buffer} works.
+
 Frames and Graphical Displays
 
 * Mouse Commands::      Moving, cutting, and pasting, with the mouse.
@@ -486,7 +501,7 @@ Frames and Graphical Displays
 * Frame Commands::      Iconifying, deleting, and switching frames.
 * Fonts::               Changing the frame font.
 * Speedbar::            How to make and use a speedbar frame.
-* Multiple Displays::   How one Emacs job can talk to several displays.
+* Multiple Displays::   How one Emacs instance can talk to several displays.
 * Frame Parameters::    Changing the colors and other modes of frames.
 * Scroll Bars::         How to enable and disable scroll bars; how to use them.
 * Drag and Drop::       Using drag and drop to open files and insert text.
@@ -523,6 +538,7 @@ International Character Set Support
 * Unibyte Mode::            You can pick one European character set
                               to use without multibyte characters.
 * Charsets::                How Emacs groups its internal character codes.
+* Bidirectional Editing::   Support for right-to-left scripts.
 
 Modes
 
@@ -549,9 +565,9 @@ Commands for Human Languages
 * Text Mode::           The major modes for editing text files.
 * Outline Mode::        Editing outlines.
 * Org Mode::            The Emacs organizer.
-* TeX Mode::            Editing input to the formatter TeX.
+* TeX Mode::            Editing TeX and LaTeX files.
 * HTML Mode::           Editing HTML and SGML files.
-* Nroff Mode::          Editing input to the formatter nroff.
+* Nroff Mode::          Editing input to the nroff formatter.
 * 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.
@@ -567,12 +583,16 @@ Filling Text
 Outline Mode
 
 * Outline Format::      What the text of an outline looks like.
-* Outline Motion::      Special commands for moving through
-                          outlines.
+* Outline Motion::      Special commands for moving through outlines.
 * Outline Visibility::  Commands to control what is visible.
 * Outline Views::       Outlines and multiple views.
 * Foldout::             Folding means zooming in on outlines.
 
+Org Mode
+
+* Org Organizer::       Managing TODO lists and agendas.
+* Org Authoring::       Exporting Org buffers to various formats.
+
 @TeX{} Mode
 
 * TeX Editing::         Special commands for editing in TeX mode.
@@ -622,9 +642,11 @@ Editing Programs
 * Semantic::            Suite of editing tools based on source code parsing.
 * Misc for Programs::   Other Emacs features useful for editing programs.
 * C Modes::             Special commands of C, C++, Objective-C,
-                          Java, and Pike modes.
+                          Java, IDL, Pike and AWK modes.
 * Asm Mode::            Asm mode and its special features.
+@ifnottex
 * Fortran::             Fortran mode and its special features.
+@end ifnottex
 
 Top-Level Definitions, or Defuns
 
@@ -657,10 +679,9 @@ Manipulating Comments
 
 Documentation Lookup
 
-* Info Lookup::         Looking up library functions and commands
-                          in Info files.
-* Man Page::            Looking up man pages of library functions and commands.
-* Lisp Doc::            Looking up Emacs Lisp functions, etc.
+* Info Lookup::        Looking up library functions and commands in Info files.
+* Man Page::           Looking up man pages of library functions and commands.
+* Lisp Doc::           Looking up Emacs Lisp functions, etc.
 
 C and Related Modes
 
@@ -670,6 +691,7 @@ C and Related Modes
 * Other C Commands::    Filling comments, viewing expansion of macros,
                           and other neat features.
 
+@ifnottex
 Fortran Mode
 
 * Fortran Motion::      Moving point by statements or subprograms.
@@ -686,6 +708,7 @@ Fortran Indentation
 * ForIndent Num::       How line numbers auto-indent.
 * ForIndent Conv::      Conventions you must obey to avoid trouble.
 * ForIndent Vars::      Variables controlling Fortran indent style.
+@end ifnottex
 
 Compiling and Testing Programs
 
@@ -712,8 +735,7 @@ Running Debuggers Under Emacs
 * Commands of GUD::     Key bindings for common commands.
 * GUD Customization::   Defining your own commands for GUD.
 * GDB Graphical Interface::  An enhanced mode that uses GDB features to
-                          implement a graphical debugging environment through
-                          Emacs.
+                          implement a graphical debugging environment.
 
 GDB Graphical Interface
 
@@ -734,7 +756,9 @@ Maintaining Large Programs
 * Tags::                Go directly to any function in your program in one
                           command.  Tags remembers which file it is in.
 * EDE::                 An integrated development environment for Emacs.
+@ifnottex
 * Emerge::              A convenient way of merging two versions of a program.
+@end ifnottex
 
 Version Control
 
@@ -748,9 +772,10 @@ Version Control
 * VC Undo::             Canceling changes before or after committing.
 * VC Directory Mode::   Listing files managed by version control.
 * Branches::            Multiple lines of development.
-* Revision Tags::       Symbolic names for revisions.
+@ifnottex
 * Miscellaneous VC::    Various other commands and features of VC.
 * Customizing VC::      Variables that change VC's behavior.
+@end ifnottex
 
 Introduction to Version Control
 
@@ -780,6 +805,7 @@ Multiple Branches of a File
 * Merging::               Transferring changes between branches.
 * Creating Branches::     How to start a new branch.
 
+@ifnottex
 Miscellaneous Commands and Features of VC
 
 * Change Logs and VC::    Generating a change log file from log entries.
@@ -792,6 +818,7 @@ Customizing VC
 * General VC Options::    Options that apply to multiple back ends.
 * RCS and SCCS::          Options for RCS and SCCS.
 * CVS Options::           Options for CVS.
+@end ifnottex
 
 Change Logs
 
@@ -808,6 +835,7 @@ Tags Tables
 * Tags Search::         Using a tags table for searching and replacing.
 * List Tags::           Listing and finding tags defined in a file.
 
+@ifnottex
 Merging Files with Emerge
 
 * Overview of Emerge::  How to start Emerge.  Basic concepts.
@@ -820,6 +848,7 @@ Merging Files with Emerge
 * Exiting Emerge::      What to do when you've finished the merge.
 * Combining in Emerge::     How to keep both alternatives for a difference.
 * Fine Points of Emerge::   Miscellaneous issues.
+@end ifnottex
 
 Abbrevs
 
@@ -855,7 +884,9 @@ Dired, the Directory Editor
 * Transforming File Names::  Using patterns to rename multiple files.
 * Comparison in Dired::      Running `diff' by way of Dired.
 * Subdirectories in Dired::  Adding subdirectories to the Dired buffer.
+@ifnottex
 * Subdir Switches::          Subdirectory switches in Dired.
+@end ifnottex
 * Subdirectory Motion::      Moving across subdirectories, and up and down.
 * Hiding Subdirectories::    Making subdirectories visible or invisible.
 * Dired Updating::           Discarding lines for files of no interest.
@@ -878,9 +909,11 @@ The Calendar and the Diary
 * Diary::               Displaying events from your diary.
 * Appointments::        Reminders when it's time to do something.
 * Importing Diary::     Converting diary events to/from other formats.
-* Daylight Saving::    How to specify when daylight saving time is active.
+* Daylight Saving::     How to specify when daylight saving time is active.
 * Time Intervals::      Keeping track of time intervals.
+@ifnottex
 * Advanced Calendar/Diary Usage:: Advanced Calendar/Diary customization.
+@end ifnottex
 
 Movement in the Calendar
 
@@ -905,6 +938,7 @@ The Diary
 * Adding to Diary::        Commands to create diary entries.
 * Special Diary Entries::  Anniversaries, blocks of dates, cyclic entries, etc.
 
+@ifnottex
 Customizing the Calendar and Diary
 
 * Calendar Customizing::   Calendar layout and hooks.
@@ -916,6 +950,7 @@ Customizing the Calendar and Diary
 * Diary Display::          A choice of ways to display the diary.
 * Fancy Diary Display::    Sorting diary entries, using included diary files.
 * Sexp Diary Entries::     More flexible diary entries.
+@end ifnottex
 
 Document Viewing
 
@@ -967,8 +1002,8 @@ Reading Mail with Rmail
 
 Rmail Summaries
 
-* Rmail Make Summary::       Making various sorts of summaries.
-* Rmail Summary Edit::       Manipulating messages from the summary.
+* Rmail Make Summary::  Making various sorts of summaries.
+* Rmail Summary Edit::  Manipulating messages from the summary.
 
 Gnus
 
@@ -1155,7 +1190,8 @@ Emacs and Microsoft Windows/MS-DOS
 * Windows Printing::    How to specify the printer on MS-Windows.
 * Windows Fonts::       Specifying fonts on MS-Windows.
 * Windows Misc::        Miscellaneous Windows features.
-* MS-DOS::              Using Emacs on MS-DOS (otherwise known as @dfn{MS-DOG}).
+@ifnottex
+* MS-DOS::              Using Emacs on MS-DOS.
 
 Emacs and MS-DOS
 
@@ -1166,6 +1202,7 @@ Emacs and MS-DOS
 * MS-DOS Printing::     Printing specifics on MS-DOS.
 * MS-DOS and MULE::     Support for internationalization on MS-DOS.
 * MS-DOS Processes::    Running subprocesses on MS-DOS.
+@end ifnottex
 
 @end detailmenu
 @end menu
@@ -1183,7 +1220,7 @@ primer.  If you are new to Emacs, we recommend you start with
 the integrated, learn-by-doing tutorial, before reading the manual.  To
 run the tutorial, start Emacs and type @kbd{C-h t}.  The tutorial
 describes commands, tells you when to try them, and explains the
-results.
+results.  The tutorial is available in several languages.
 
   On first reading, just skim chapters 1 and 2, which describe the
 notational conventions of the manual and the general appearance of the
@@ -1201,20 +1238,19 @@ need them.
 
   Read the Common Problems chapter if Emacs does not seem to be
 working properly.  It explains how to cope with several common
-problems (@pxref{Lossage}), as well as when and how to report Emacs
-bugs (@pxref{Bugs}).
+problems (@pxref{Lossage,, Dealing with Emacs Trouble}), as well as
+when and how to report Emacs bugs (@pxref{Bugs}).
 
   To find the documentation of a particular command, look in the index.
 Keys (character commands) and command names have separate indexes.
 There is also a glossary, with a cross reference for each term.
 
   This manual is available as a printed book and also as an Info file.
-The Info file is for use with the Info program, which is the principal
-means of accessing on-line documentation in the GNU system.  Both the
-Emacs Info file and an Info reader are included with GNU Emacs.  The
-Info file and the printed book contain substantially the same text and
-are generated from the same source files, which are also distributed
-with GNU Emacs.
+The Info file is for reading from Emacs itself, or with the Info program.
+Info is the principal format for documentation in the GNU system.
+The Info file and the printed book contain substantially the same text
+and are generated from the same source files, which are also
+distributed with GNU Emacs.
 
   GNU Emacs is a member of the Emacs editor family.  There are many
 Emacs editors, all sharing common principles of organization.  For
@@ -1223,21 +1259,22 @@ learned from its development, see @cite{Emacs, the Extensible,
 Customizable Self-Documenting Display Editor}, available from
 @url{ftp://publications.ai.mit.edu/ai-publications/pdf/AIM-519A.pdf}.
 
-This edition of the manual is intended for use with GNU Emacs
+This version of the manual is mainly intended for use with GNU Emacs
 installed on GNU and Unix systems.  GNU Emacs can also be used on
-MS-DOS (also called MS-DOG), Microsoft Windows, and Macintosh systems.
-Those systems use different file name syntax; in addition
-MS-DOS does not support all GNU Emacs features.  @xref{Microsoft
-Windows}, for information about using Emacs on Windows.
-@xref{Mac OS / GNUstep}, for information about using Emacs on
-Macintosh (and GNUstep).
+MS-DOS, Microsoft Windows, and Macintosh systems.  The Info file
+version of this manual contains some more information about using
+Emacs on those systems.  Those systems use different file name syntax;
+in addition MS-DOS does not support all GNU Emacs features.
+@xref{Microsoft Windows}, for information about using Emacs on
+Windows.  @xref{Mac OS / GNUstep}, for information about using Emacs
+on Macintosh (and GNUstep).
 @end iftex
 
 @node Distrib, Intro, Top, Top
 @unnumbered Distribution
 
 GNU Emacs is @dfn{free software}; this means that everyone is free to
-use it and free to redistribute it on certain conditions.  GNU Emacs
+use it and free to redistribute it under certain conditions.  GNU Emacs
 is not in the public domain; it is copyrighted and there are
 restrictions on its distribution, but these restrictions are designed
 to permit everything that a good cooperating citizen would want to do.
@@ -1245,11 +1282,10 @@ What is not allowed is to try to prevent others from further sharing
 any version of GNU Emacs that they might get from you.  The precise
 conditions are found in the GNU General Public License that comes with
 Emacs and also appears in this manual@footnote{This manual is itself
-covered by the GNU Free Documentation License (see the reverse title
-page in the printed manual or view the full source for online formats
-to see the precise conditions).  This license is similar in spirit to
-the General Public License, but is more suitable for documentation.
-@xref{GNU Free Documentation License}.}.  @xref{Copying}.
+covered by the GNU Free Documentation License.  This license is
+similar in spirit to the General Public License, but is more suitable
+for documentation.  @xref{GNU Free Documentation License}.}.
+@xref{Copying}.
 
 One way to get a copy of GNU Emacs is from someone else who has it.
 You need not ask for our permission to do so, or tell any one else;
@@ -1266,14 +1302,22 @@ redistribute the GNU Emacs received from them under the usual terms of the
 General Public License.  In other words, the program must be free for you
 when you get it, not just free for the manufacturer.
 
-@c FIXME no longer true?
-You can also order copies of GNU Emacs from the Free Software
-Foundation.  This is a convenient and reliable way to get a copy; it is
-also a good way to help fund our work.  We also sell hardcopy versions
-of this manual and @cite{An Introduction to Programming in Emacs Lisp},
-by Robert J. Chassell.  You can visit our online store at
-@url{http://shop.fsf.org/}.  For further information,
-write to
+If you find GNU Emacs useful, please @strong{send a donation} to the
+Free Software Foundation to support our work.  Donations to the Free
+Software Foundation are tax deductible in the US.  If you use GNU Emacs
+at your workplace, please suggest that the company make a donation. 
+For more information on how you can help, see
+@url{http://www.gnu.org/help/help.html}.
+
+We also sell hardcopy versions of this manual and @cite{An
+Introduction to Programming in Emacs Lisp}, by Robert J.@: Chassell.
+You can visit our online store at @url{http://shop.fsf.org/}.
+The income from sales goes to support the foundation's purpose: the
+development of new free software, and improvements to our existing
+programs including GNU Emacs.
+
+If you need to contact the Free Software Foundation, see
+@url{http://www.fsf.org/about/contact/}, or write to
 
 @display
 Free Software Foundation
@@ -1282,103 +1326,110 @@ Boston, MA 02110-1301
 USA
 @end display
 
-The income from sales goes to support the foundation's purpose: the
-development of new free software, and improvements to our existing
-programs including GNU Emacs.
-
-@c FIXME you can't order a CD any more.
-If you find GNU Emacs useful, please @strong{send a donation} to the
-Free Software Foundation to support our work.  Donations to the Free
-Software Foundation are tax deductible in the US.  If you use GNU Emacs
-at your workplace, please suggest that the company make a donation.  If
-company policy is unsympathetic to the idea of donating to charity, you
-might instead suggest ordering a CD-ROM from the Foundation
-occasionally, or subscribing to periodic updates.
-
 @iftex
 @node Acknowledgments, Intro, Distrib, Top
 @unnumberedsec Acknowledgments
 
 Contributors to GNU Emacs include Jari Aalto, Per Abrahamsen, Tomas
-Abrahamsson, Jay K.@: Adams, Michael Albinus, Nagy Andras, Ralf Angeli,
-Joe Arceneaux, Miles Bader, David Bakhash, Juanma Barranquero, Eli
-Barzilay, Thomas Baumann, Steven L.@: Baur, Jay Belanger, Alexander L.@:
-Belikoff, Boaz Ben-Zvi, Karl Berry, Anna M.@: Bigatti, Ray Blaak, Jim
-Blandy, Johan BockgÃ¥rd, Jan Böcker, Lennart Borgman, Per Bothner,
+Abrahamsson, Jay K.@: Adams, Alon Albert, Michael Albinus, Nagy
+Andras, Benjamin Andresen, Ralf Angeli, Joe Arceneaux, Emil Ã…ström,
+Miles Bader, David Bakhash, Juanma Barranquero, Eli Barzilay, Thomas
+Baumann, Steven L.@: Baur, Jay Belanger, Alexander L.@: Belikoff,
+Thomas Bellman, Scott Bender, Boaz Ben-Zvi, Sergey Berezin, Karl
+Berry, Anna M.@: Bigatti, Ray Blaak, Martin Blais, Jim Blandy, Johan
+BockgÃ¥rd, Jan Böcker, Joel Boehland, Lennart Borgman, Per Bothner,
 Terrence Brannon, Frank Bresz, Peter Breton, Emmanuel Briot, Kevin
-Broadey, Vincent Broman, David M.@: Brown, Georges Brun-Cottan, Joe
-Buehler, W@l{}odek Bzyl, Bill Carpenter, Per Cederqvist, Hans Chalupsky,
-Chong Yidong, Chris Chase, Bob Chassell, Andrew Choi, Sacha Chua, James
-Clark, Mike Clarkson, Glynn Clements, Daniel Colascione, Andrew Csillag,
-Baoqiu Cui, Doug Cutting, Mathias Dahl, Julien Danjou, Satyaki Das,
-Vivek Dasmohapatra, Michael DeCorte, Gary Delp, Matthieu Devin, Eri
-Ding, Jan Djärv, Carsten Dominik, Scott Draves, Benjamin Drieu,
-Viktor Dukhovni, Dmitry Dzhus, John Eaton, Rolf Ebert, Paul Eggert,
-Stephen Eglen, Torbjörn Einarsson, Tsugutomo Enami, Hans Henrik
-Eriksen, Michael Ernst, Ata Etemadi, Frederick Farnbach, Oscar
-Figueiredo, Fred Fish, Karl Fogel, Gary Foster, Romain Francoise, Noah
-Friedman, Andreas Fuchs, Hallvard Furuseth, Keith Gabryelski, Peter S.@:
-Galbraith, Kevin Gallagher, Kevin Gallo, Juan León Lahoz
-García, Howard Gayle, Daniel German, Stephen Gildea,
-Julien Gilles, David Gillespie, Bob Glickstein, Deepak Goel, Boris
-Goldowsky, Michelangelo Grigni, Odd Gripenstam, Kai Großjohann,
-Michael Gschwind, Bastien Guerry, Henry Guillaume, Doug Gwyn, Ken'ichi
-Handa, Lars Hansen, Chris Hanson, K. Shane Hartman, John Heidemann, Jon
-K.@: Hellan, Jesper Harder, Magnus Henoch, Markus Heritsch, Karl Heuer,
-Manabu Higashida, Anders Holst, Jeffrey C.@: Honig, Tassilo Horn, Kurt
-Hornik, Tom Houlder, Joakim Hove, Denis Howe, Lars Ingebrigtsen, Andrew
-Innes, Seiichiro Inoue, Philip Jackson, Pavel Janik, Paul Jarc, Ulf
-Jasper, Michael K. Johnson, Kyle Jones, Terry Jones, Simon Josefsson,
-Arne Jørgensen, Tomoji Kagatani, Brewster Kahle, Tokuya Kameshima,
-Lute Kamstra, David Kastrup, David Kaufman, Henry Kautz, Taichi
-Kawabata, Howard Kaye, Michael Kifer, Richard King, Peter Kleiweg, Karel
-Klí@v{c}, Shuhei Kobayashi, Pavel Kobiakov, Larry K.@:
-Kolodney, David M.@: Koppelman, Koseki Yoshinori, Robert Krawitz,
-Sebastian Kremer, Ryszard Kubiak, David KÃ¥gedal, Daniel LaLiberte,
-Karl Landstrom, Mario Lang, Aaron Larson, James R.@: Larus, Vinicius
-Jose Latorre, Werner Lemberg, Frederic Lepied, Peter Liljenberg, Lars
-Lindberg, Chris Lindblad, Anders Lindgren, Thomas Link, Juri Linkov,
-Francis Litterio, Emilio C. Lopes, Károly L@H{o}rentey, Dave Love,
-Sascha Lüdecke, Eric Ludlam, Alan Mackenzie, Christopher J.@:
-Madsen, Neil M.@: Mager, Ken Manheimer, Bill Mann, Brian Marick, Simon
-Marshall, Bengt Martensson, Charlie Martin, Thomas May, Roland McGrath,
-Will Mengarini, David Megginson, Ben A. Mesander, Wayne Mesard, Brad
+Broadey, Vincent Broman, Michael Brouwer, David M.@: Brown, Stefan Bruda,
+Georges Brun-Cottan, Joe Buehler, Scott Byer, W@l{}odek Bzyl,
+Bill Carpenter, Per Cederqvist, Hans Chalupsky, Chris Chase, Bob
+Chassell, Andrew Choi, Chong Yidong, Sacha Chua, Stewart Clamen, James
+Clark, Mike Clarkson, Glynn Clements, Andrew Cohen, Daniel Colascione,
+Edward O'Connor, Christoph Conrad, Ludovic Courtès, Andrew Csillag,
+Toby Cubitt, Baoqiu Cui, Doug Cutting, Mathias Dahl, Julien Danjou, Satyaki
+Das, Vivek Dasmohapatra, Dan Davison, Michael DeCorte, Gary Delp, Nachum
+Dershowitz, Dave Detlefs, Matthieu Devin, Christophe de Dinechin, Eri
+Ding, Jan Djärv, Lawrence R.@: Dodd, Carsten Dominik, Scott Draves,
+Benjamin Drieu, Viktor Dukhovni, Jacques Duthen, Dmitry Dzhus, John
+Eaton, Rolf Ebert, Carl Edman, David Edmondson, Paul Eggert, Stephen
+Eglen, Christian Egli, Torbjörn Einarsson, Tsugutomo Enami, David
+Engster, Hans Henrik Eriksen, Michael Ernst, Ata Etemadi, Frederick
+Farnbach, Oscar Figueiredo, Fred Fish, Steve Fisk, Karl Fogel, Gary
+Foster, Eric S.@: Fraga, Romain Francoise, Noah Friedman, Andreas
+Fuchs, Shigeru Fukaya, Hallvard Furuseth, Keith Gabryelski, Peter S.@:
+Galbraith, Kevin Gallagher, Kevin Gallo, Juan León Lahoz García,
+Howard Gayle, Daniel German, Stephen Gildea, Julien Gilles, David
+Gillespie, Bob Glickstein, Deepak Goel, David De La Harpe Golden, Boris
+Goldowsky, David Goodger, Chris Gray, Kevin Greiner, Michelangelo Grigni, Odd
+Gripenstam, Kai Großjohann, Michael Gschwind, Bastien Guerry, Henry
+Guillaume, Doug Gwyn, Bruno Haible, Ken'ichi Handa, Lars Hansen, Chris
+Hanson, Jesper Harder, Alexandru Harsanyi, K.@: Shane Hartman, John
+Heidemann, Jon K.@: Hellan, Magnus Henoch, Markus Heritsch, Dirk
+Herrmann, Karl Heuer, Manabu Higashida, Konrad Hinsen, Anders Holst,
+Jeffrey C.@: Honig, Tassilo Horn, Kurt Hornik, Tom Houlder, Joakim
+Hove, Denis Howe, Lars Ingebrigtsen, Andrew Innes, Seiichiro Inoue,
+Philip Jackson, Martyn Jago, Pavel Janik, Paul Jarc, Ulf Jasper,
+Thorsten Jolitz, Michael K.@: Johnson, Kyle Jones, Terry Jones, Simon
+Josefsson, Alexandre Julliard, Arne Jørgensen, Tomoji Kagatani,
+Brewster Kahle, Tokuya Kameshima, Lute Kamstra, Ivan Kanis, David
+Kastrup, David Kaufman, Henry Kautz, Taichi Kawabata, Taro Kawagishi,
+Howard Kaye, Michael Kifer, Richard King, Peter Kleiweg, Karel
+Klí@v{c}, Shuhei Kobayashi, Pavel Kobyakov, Larry K.@: Kolodney, David
+M.@: Koppelman, Koseki Yoshinori, Robert Krawitz, Sebastian Kremer,
+Ryszard Kubiak, Igor Kuzmin, David KÃ¥gedal, Daniel LaLiberte, Karl
+Landstrom, Mario Lang, Aaron Larson, James R.@: Larus, Vinicius Jose
+Latorre, Werner Lemberg, Frederic Lepied, Peter Liljenberg, Christian
+Limpach, Lars Lindberg, Chris Lindblad, Anders Lindgren, Thomas Link,
+Juri Linkov, Francis Litterio, Sergey Litvinov, Emilio C.@: Lopes,
+Martin Lorentzon, Dave Love, Eric Ludlam, Károly L@H{o}rentey, Sascha
+Lüdecke, Greg McGary, Roland McGrath, Michael McNamara, Alan Mackenzie,
+Christopher J.@: Madsen, Neil M.@: Mager, Ken Manheimer, Bill Mann,
+Brian Marick, Simon Marshall, Bengt Martensson, Charlie Martin,
+Yukihiro Matsumoto, David Maus, Thomas May, Will Mengarini, David
+Megginson, Stefan Merten, Ben A.@: Mesander, Wayne Mesard, Brad
 Miller, Lawrence Mitchell, Richard Mlynarik, Gerd Moellmann, Stefan
-Monnier, Morioka Tomohiko, Keith Moore, Jan Moringen, Glenn Morris,
-Diane Murray, Sen Nagata, Erik Naggum, Thomas Neumann, Thien-Thi Nguyen,
-Mike Newton, Jurgen Nickelsen, Dan Nicolaescu, Hrvoje Niksic, Jeff
-Norden, Andrew Norman, Christian Ohler, Alexandre Oliva, Bob Olson,
-Michael Olson, Takaaki Ota, Pieter E.@: J.@: Pareit, Ross Patterson,
-David Pearson, Jeff Peck, Damon Anton Permezel, Tom Perrine, William
-M.@: Perry, Per Persson, Jens Petersen, Daniel Pfeiffer, Richard L.@:
-Pieri, Fred Pierresteguy, Christian Plaunt, David Ponce, Francesco A.@:
-Potorti, Michael D. Prange, Mukesh Prasad, Ken Raeburn, Marko Rahamaa,
-Ashwin Ram, Eric S. Raymond, Paul Reilly, Edward M. Reingold, Alex
-Rezinsky, Rob Riepel, David Reitter, Adrian Robert, Nick Roberts, Roland
-B.@: Roberts, John Robinson, Danny Roozendaal, Sebastian Rose, William
-Rosenblatt, Guillermo J.@: Rozas, Martin Rudalics, Ivar Rummelhoff,
-Jason Rumney, Wolfgang Rupprecht, Kevin Ryde, James B. Salem, Masahiko
-Sato, Jorgen Schaefer, Holger Schauer, William Schelter, Ralph
-Schleicher, Gregor Schmid, Michael Schmidt, Ronald S. Schnell, Philippe
-Schnoebelen, Jan Schormann, Alex Schroeder, Stephen Schoef, Raymond
-Scholz, Eric Schulte, Andreas Schwab, Randal Schwartz, Oliver Seidel,
-Manuel Serrano, Paul Sexton, Hovav Shacham, Stanislav Shalunov, Marc
-Shapiro, Richard Sharman, Olin Shivers, Espen Skoglund, Rick Sladkey,
-Lynn Slater, Chris Smith, David Smith, Paul D.@: Smith, William
-Sommerfeld, Andre Spiegel, Michael Staats, Ulf Stegemann, Reiner Steib,
-Sam Steingold, Ake Stenhoff, Peter Stephenson, Ken Stevens, Andy Stewart,
-Jonathan Stigelman, Martin Stjernholm, Kim F.@: Storm, Steve Strassmann,
-Olaf Sylvester, Naoto Takahashi, Steven Tamm, Jean-Philippe Theberge,
-Jens T.@: Berger Thielemann, Spencer Thomas, Jim Thompson, Luc
-Teirlinck, David O'Toole, Tom Tromey, Enami Tsugutomo, Eli Tziperman,
-Daiki Ueno, Masanobu Umeda, Rajesh Vaidheeswarran, Neil W.@: Van Dyke,
-Didier Verna, Joakim Verona, Ulrik Vieth, Geoffrey Voelker, Johan
-Vromans, Inge Wallin, John Paul Wallington, Colin Walters, Barry Warsaw,
-Morten Welinder, Joseph Brian Wells, Rodney Whitby, John Wiegley, Ed
-Wilkinson, Mike Williams, Bill Wohler, Steven A. Wood, Dale R.@: Worley,
-Francis J.@: Wright, Felix S. T. Wu, Tom Wurgler, Katsumi Yamaoka,
-Yamamoto Mitsuharu, Masatake Yamato, Jonathan Yavner, Ryan Yeske, Ilya
-Zakharevich, Milan Zamazal, Victor Zandy, Eli Zaretskii, Jamie Zawinski,
+Monnier, Keith Moore, Jan Moringen, Morioka Tomohiko, Glenn Morris,
+Don Morrison, Diane Murray, Riccardo Murri, Sen Nagata, Erik Naggum,
+Gergely Nagy, Nobuyoshi Nakada, Thomas Neumann, Mike Newton, Thien-Thi Nguyen,
+Jurgen Nickelsen, Dan Nicolaescu, Hrvoje Niksic, Jeff Norden,
+Andrew Norman, Kentaro Ohkouchi, Christian Ohler,
+Kenichi Okada, Alexandre Oliva, Bob Olson, Michael Olson, Takaaki Ota,
+Pieter E.@: J.@: Pareit, Ross Patterson, David Pearson, Juan Pechiar,
+Jeff Peck, Damon Anton Permezel, Tom Perrine, William M.@: Perry, Per
+Persson, Jens Petersen, Daniel Pfeiffer, Justus Piater, Richard L.@:
+Pieri, Fred Pierresteguy, François Pinard, Daniel Pittman, Christian
+Plaunt, Alexander Pohoyda, David Ponce, Francesco A.@: Potorti,
+Michael D.@: Prange, Mukesh Prasad, Ken Raeburn, Marko Rahamaa, Ashwin
+Ram, Eric S.@: Raymond, Paul Reilly, Edward M.@: Reingold, David
+Reitter, Alex Rezinsky, Rob Riepel, Lara Rios, Adrian Robert, Nick
+Roberts, Roland B.@: Roberts, John Robinson, Denis B.@: Roegel, Danny
+Roozendaal, Sebastian Rose, William Rosenblatt, Markus Rost, Guillermo
+J.@: Rozas, Martin Rudalics, Ivar Rummelhoff, Jason Rumney, Wolfgang
+Rupprecht, Benjamin Rutt, Kevin Ryde, James B.@: Salem, Masahiko Sato,
+Timo Savola, Jorgen Schaefer, Holger Schauer, William Schelter, Ralph
+Schleicher, Gregor Schmid, Michael Schmidt, Ronald S.@: Schnell,
+Philippe Schnoebelen, Jan Schormann, Alex Schroeder, Stefan Schoef,
+Rainer Schoepf, Raymond Scholz, Eric Schulte, Andreas Schwab, Randal
+Schwartz, Oliver Seidel, Manuel Serrano, Paul Sexton, Hovav Shacham,
+Stanislav Shalunov, Marc Shapiro, Richard Sharman, Olin Shivers, Tibor
+@v{S}imko, Espen Skoglund, Rick Sladkey, Lynn Slater, Chris Smith,
+David Smith, Paul D.@: Smith, Wilson Snyder, William Sommerfeld, Simon
+South, Andre Spiegel, Michael Staats, Thomas Steffen, Ulf Stegemann,
+Reiner Steib, Sam Steingold, Ake Stenhoff, Peter Stephenson, Ken
+Stevens, Andy Stewart, Jonathan Stigelman, Martin Stjernholm, Kim F.@:
+Storm, Steve Strassmann, Christopher Suckling, Olaf Sylvester, Naoto
+Takahashi, Steven Tamm, Luc Teirlinck, Jean-Philippe Theberge, Jens
+T.@: Berger Thielemann, Spencer Thomas, Jim Thompson, Toru Tomabechi,
+David O'Toole, Markus Triska, Tom Tromey, Enami Tsugutomo, Eli
+Tziperman, Daiki Ueno, Masanobu Umeda, Rajesh Vaidheeswarran, Neil
+W.@: Van Dyke, Didier Verna, Joakim Verona, Ulrik Vieth, Geoffrey
+Voelker, Johan Vromans, Inge Wallin, John Paul Wallington, Colin
+Walters, Barry Warsaw, Christoph Wedler, Ilja Weis, Zhang Weize,
+Morten Welinder, Joseph Brian Wells, Rodney Whitby, John Wiegley,
+Sascha Wilde, Ed Wilkinson, Mike Williams, Roland Winkler, Bill
+Wohler, Steven A.@: Wood, Dale R.@: Worley, Francis J.@: Wright, Felix
+S.@: T.@: Wu, Tom Wurgler, Yamamoto Mitsuharu, Katsumi Yamaoka,
+Masatake Yamato, Jonathan Yavner, Ryan Yeske, Ilya Zakharevich, Milan
+Zamazal, Victor Zandy, Eli Zaretskii, Jamie Zawinski, Andrew Zhilin,
 Shenghuo Zhu, Piotr Zielinski, Ian T.@: Zimmermann, Reto Zimmermann,
 Neal Ziring, Teodor Zlatanov, and Detlev Zundel.
 @end iftex
index d9f0b4a2741acc5e96a4ff337f9400f727482c28..72e0b36b7040da91e0214aac64c50052eab5d068 100644 (file)
@@ -1,5 +1,5 @@
 @c This is part of the Emacs manual.
-@c Copyright (C) 2004-2012  Free Software Foundation, Inc.
+@c Copyright (C) 2004-2012 Free Software Foundation, Inc.
 @c See file emacs.texi for copying conditions.
 @c
 @c This file is included either in emacs-xtra.texi (when producing the
@@ -19,7 +19,7 @@ easier.  For other ways to compare files, see
 @ifnottex
 @ref{Comparing Files},
 @end ifnottex
-and @ref{Top, Ediff,, ediff, The Ediff Manual}.
+and @ref{Top,, Ediff, ediff, The Ediff Manual}.
 
 @menu
 * Overview of Emerge::     How to start Emerge.  Basic concepts.
@@ -155,13 +155,13 @@ 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.
 
-@findex emerge-auto-advance-mode
-@findex emerge-skip-prefers-mode
-  Use the command @kbd{s a} (@code{emerge-auto-advance-mode}) to set or
-clear Auto Advance mode.  Use @kbd{s s}
-(@code{emerge-skip-prefers-mode}) to set or clear Skip Prefers mode.
-These commands turn on the mode with a positive argument, turn it off
-with a negative or zero argument, and toggle the mode with no argument.
+@findex emerge-auto-advance
+@findex emerge-skip-prefers
+  Use the command @kbd{s a} (@code{emerge-auto-advance}) to set or clear
+Auto Advance mode.  Use @kbd{s s} (@code{emerge-skip-prefers}) to set or
+clear Skip Prefers mode.  These commands turn on the mode with a
+positive argument, turn it off with a negative or zero argument, and
+toggle the mode with no argument.
 
 @node State of Difference
 @subsection State of a Difference
@@ -362,9 +362,9 @@ like this:
 @example
 @group
 #ifdef NEW
-@var{version from A buffer}
-#else /* not NEW */
 @var{version from B buffer}
+#else /* not NEW */
+@var{version from A buffer}
 #endif /* not NEW */
 @end group
 @end example
@@ -380,7 +380,7 @@ produces the results shown above, looks like this:
 
 @example
 @group
-"#ifdef NEW\n%a#else /* not NEW */\n%b#endif /* not NEW */\n"
+"#ifdef NEW\n%b#else /* not NEW */\n%a#endif /* not NEW */\n"
 @end group
 @end example
 
index b34b96126adaf9b862efb09d2f4453768b83d73c..3adc735154b835569bdbae2ed9fc1158b9f17e2d 100644 (file)
@@ -36,7 +36,7 @@ on file directories.
 * Misc File Ops::       Other things you can do on files.
 * Compressed Files::    Accessing compressed files.
 * File Archives::       Operating on tar, zip, jar etc. archive files.
-* Remote Files::        Accessing files on other sites.
+* Remote Files::        Accessing files on other machines.
 * Quoted File Names::   Quoting special characters in file names.
 * File Name Cache::     Completion against a list of files you often use.
 * File Conveniences::   Convenience Features for Finding Files.
index 5fc20fae8a3fceaedcb98dd345b82bc099401832..0dc99034ae6a51ecd4e87696032a134591fb025b 100644 (file)
@@ -1,5 +1,5 @@
 @c This is part of the Emacs manual.
-@c Copyright (C) 2004-2012  Free Software Foundation, Inc.
+@c Copyright (C) 2004-2012 Free Software Foundation, Inc.
 @c See file emacs.texi for copying conditions.
 @c
 @c This file is included either in emacs-xtra.texi (when producing the
@@ -70,11 +70,10 @@ 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, using the
-commands @code{fortran-beginning-of-subprogram} and
-@code{fortran-end-of-subprogram}; as well as modules for F90 mode),
-Fortran mode provides special commands to move by statements and other
-program units.
+``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.
 
 @table @kbd
 @kindex C-c C-n @r{(Fortran mode)}
@@ -97,16 +96,15 @@ statement in the buffer), move to the start of the buffer.
 @findex f90-next-block
 @item C-c C-e
 Move point forward to the start of the next code block, or the end of
-the current block, whichever is encountered first.
-(@code{f90-next-block}).  A code block is a subroutine,
-@code{if}--@code{endif} statement, and so forth.  This command exists
-for F90 mode only, not Fortran mode.  With a numeric argument, this
-moves forward that many blocks.
+the current one, whichever comes first (@code{f90-next-block}).
+A code block is a subroutine, @code{if}--@code{endif} statement, and
+so forth.  This command exists for F90 mode only, not Fortran mode.
+With a numeric argument, it moves forward that many blocks.
 
 @kindex C-c C-a @r{(F90 mode)}
 @findex f90-previous-block
 @item C-c C-a
-Move point backward to the previous code block
+Move point backward to the previous block
 (@code{f90-previous-block}).  This is like @code{f90-next-block}, but
 moves backwards.
 
@@ -163,7 +161,7 @@ Break the current line at point and set up a continuation line
 @item M-^
 Join this line to the previous line (@code{fortran-join-line}).
 @item C-M-q
-Indent all the lines of the subprogram point is in
+Indent all the lines of the subprogram that point is in
 (@code{fortran-indent-subprogram}).
 @item M-q
 Fill a comment block or statement (using @code{fortran-fill-paragraph}
@@ -239,17 +237,17 @@ to the continuation style.
   The setting of continuation style affects several other aspects of
 editing in Fortran mode.  In fixed form mode, the minimum column
 number for the body of a statement is 6.  Lines inside of Fortran
-blocks that are indented to larger column numbers always use only the
+blocks that are indented to larger column numbers must use only the
 space character for whitespace.  In tab format mode, the minimum
 column number for the statement body is 8, and the whitespace before
-column 8 must always consist of one tab character.
+column 8 must consist of one tab character.
 
 @node ForIndent Num
 @subsubsection Line Numbers
 
   If a number is the first non-whitespace in the line, Fortran
 indentation assumes it is a line number and moves it to columns 0
-through 4.  (Columns always count from 0 in GNU Emacs.)
+through 4.  (Columns always count from 0 in Emacs.)
 
 @vindex fortran-line-number-indent
   Line numbers of four digits or less are normally indented one space.
@@ -329,7 +327,7 @@ non-@code{nil} value, indenting any numbered statement must check for a
 @samp{do} that ends there.  If you always end @samp{do} statements with
 a @samp{continue} line (or if you use the more modern @samp{enddo}),
 then you can speed up indentation by setting this variable to
-@code{nil}.  The default is @code{nil}.
+@code{nil} (the default).
 
 @item fortran-blink-matching-if
 If this is @code{t}, indenting an @samp{endif} (or @samp{enddo}
@@ -338,17 +336,17 @@ statement moves the cursor momentarily to the matching @samp{if} (or
 
 @item fortran-minimum-statement-indent-fixed
 Minimum indentation for Fortran statements when using fixed form
-continuation line style.  Statement bodies are never indented less than
-this much.  The default is 6.
+continuation line style.  Statement bodies are never indented by less than
+this.  The default is 6.
 
 @item fortran-minimum-statement-indent-tab
 Minimum indentation for Fortran statements for tab format continuation line
-style.  Statement bodies are never indented less than this much.  The
+style.  Statement bodies are never indented by less than this.  The
 default is 8.
 @end table
 
-The variables controlling the indentation of comments are described in
-the following section.
+The following section describes the variables controlling the
+indentation of comments.
 
 @node Fortran Comments
 @subsection Fortran Comments
@@ -364,7 +362,7 @@ comments start with @samp{!} and can follow other text.  Because only
 some Fortran 77 compilers accept this syntax, Fortran mode will not
 insert such comments unless you have said in advance to do so.  To do
 this, set the variable @code{fortran-comment-line-start} to @samp{"!"}.
-If you use an unusual value, you may also need to adjust
+If you use an unusual value, you may need to change
 @code{fortran-comment-line-start-skip}.
 
 
@@ -373,7 +371,7 @@ If you use an unusual value, you may also need to adjust
 Align comment or insert new comment (@code{comment-dwim}).
 
 @item C-x ;
-Applies to nonstandard @samp{!} comments only.
+Applies to nonstandard @samp{!} comments only (@code{comment-set-column}).
 
 @item C-c ;
 Turn all lines of the region into comments, or (with argument) turn them back
@@ -406,10 +404,10 @@ Align the text at a fixed column, which is the sum of
 @code{fortran-comment-line-extra-indent} and the minimum statement
 indentation.  This is the default.
 
-The minimum statement indentation is
-@code{fortran-minimum-statement-indent-fixed} for fixed form
-continuation line style and @code{fortran-minimum-statement-indent-tab}
-for tab format style.
+The minimum indentation is
+@code{fortran-minimum-statement-indent-tab} for tab format
+continuation line style and @code{fortran-minimum-statement-indent-fixed}
+for fixed form style.
 
 @item relative
 Align the text as if it were a line of code, but with an additional
@@ -434,17 +432,17 @@ never be indented at all, no matter what the value of
 lines are directives.  Matching lines are never indented, and receive
 distinctive font-locking.
 
-  The normal Emacs comment command @kbd{C-x ;} has not been redefined.  If
-you use @samp{!} comments, this command can be used with them.  Otherwise
-it is useless in Fortran mode.
+  The normal Emacs comment command @kbd{C-x ;} (@code{comment-set-column})
+has not been redefined.  If you use @samp{!} comments, this command
+can be used with them.  Otherwise it is useless in Fortran mode.
 
 @kindex C-c ; @r{(Fortran mode)}
 @findex fortran-comment-region
 @vindex fortran-comment-region
   The command @kbd{C-c ;} (@code{fortran-comment-region}) turns all the
-lines of the region into comments by inserting the string @samp{C$$$} at
+lines of the region into comments by inserting the string @samp{c$$$} at
 the front of each one.  With a numeric argument, it turns the region
-back into live code by deleting @samp{C$$$} from the front of each line
+back into live code by deleting @samp{c$$$} from the front of each line
 in it.  The string used for these comments can be controlled by setting
 the variable @code{fortran-comment-region}.  Note that here we have an
 example of a command and a variable with the same name; these two uses
@@ -507,8 +505,7 @@ Display a ``column ruler'' momentarily above the current line
 Split the current window horizontally temporarily so that it is
 @code{fortran-line-length} columns wide
 (@code{fortran-window-create-momentarily}).  This may help you avoid
-making lines longer than the character limit imposed by your Fortran
-compiler.
+making lines longer than the limit imposed by your Fortran compiler.
 @item C-u C-c C-w
 Split the current window horizontally so that it is
 @code{fortran-line-length} columns wide (@code{fortran-window-create}).
index 38ee620dbd519558aba0c92b720f65ef1e134b38..4cfaffdadb814fb3ccf5038a84adff56c0573051 100644 (file)
@@ -52,7 +52,7 @@ for doing so on MS-DOS).
 * Frame Commands::      Iconifying, deleting, and switching frames.
 * Fonts::               Changing the frame font.
 * Speedbar::            How to make and use a speedbar frame.
-* Multiple Displays::   How one Emacs job can talk to several displays.
+* Multiple Displays::   How one Emacs instance can talk to several displays.
 * Frame Parameters::    Changing the colors and other modes of frames.
 * Scroll Bars::         How to enable and disable scroll bars; how to use them.
 * Drag and Drop::       Using drag and drop to open files and insert text.
index a767a312ed31cceabaab453e966f30cecba1787d..766470e514be9106bda6bbea94947e053b167407 100644 (file)
@@ -35,8 +35,10 @@ intelligent or general.  For such things, Lisp must be used.
 * Basic Keyboard Macro::     Defining and running keyboard macros.
 * Keyboard Macro Ring::      Where previous keyboard macros are saved.
 * Keyboard Macro Counter::   Inserting incrementing numbers in macros.
-* Keyboard Macro Query::     Making keyboard macros do different things each time.
-* Save Keyboard Macro::      Giving keyboard macros names; saving them in files.
+* Keyboard Macro Query::     Making keyboard macros do different things each
+                               time.
+* Save Keyboard Macro::      Giving keyboard macros names; saving them in
+                               files.
 * Edit Keyboard Macro::      Editing keyboard macros.
 * Keyboard Macro Step-Edit:: Interactively executing and editing a keyboard
                                macro.
index e6d936e8e9f386051b8884e1edef14b72fd71daa..fb70a462bd1c37dbb1ee24adabf287e4034597de 100644 (file)
@@ -1,5 +1,5 @@
 @c This is part of the Emacs manual.
-@c Copyright (C) 2000-2012  Free Software Foundation, Inc.
+@c Copyright (C) 2000-2012 Free Software Foundation, Inc.
 @c See file emacs.texi for copying conditions.
 @node Mac OS / GNUstep, Microsoft Windows, Antinews, Top
 @appendix Emacs and Mac OS / GNUstep
@@ -11,8 +11,8 @@
 the GNUstep libraries on GNU/Linux or other operating systems, or on
 Mac OS X with native window system support.  On Mac OS X, Emacs can be
 built either without window system support, with X11, or with the
-Cocoa interface; this section only applies to the Cocoa build.  Emacs
-does not support earlier versions of Mac OS.
+Cocoa interface; this section only applies to the Cocoa build.  This
+does not support versions of Mac OS X earlier than 10.4.
 
   For various historical and technical reasons, Emacs uses the term
 @samp{Nextstep} internally, instead of ``Cocoa'' or ``Mac OS X''; for
@@ -21,7 +21,7 @@ begin with @samp{ns-}, which is short for @samp{Nextstep}.  NeXTstep
 was an application interface released by NeXT Inc during the 1980s, of
 which Cocoa is a direct descendant.  Apart from Cocoa, there is
 another NeXTstep-style system: GNUstep, which is free software.  As of
-this writing, the GNUstep support is alpha status (@pxref{GNUstep
+this writing, Emacs GNUstep support is alpha status (@pxref{GNUstep
 Support}), but we hope to improve it in the future.
 
 @menu
@@ -40,6 +40,7 @@ Emacs provides a set of key bindings using this modifier key that mimic
 other Mac / GNUstep applications (@pxref{Mac / GNUstep Events}).  You
 can change these bindings in the usual way (@pxref{Key Bindings}).
 
+@c FIXME mention ns-alternate-modifier?
   The variable @code{ns-right-alternate-modifier} controls the
 behavior of the right @key{alt} and @key{option} keys.  These keys
 behave like the left-hand keys if the value is @code{left} (the
@@ -47,30 +48,22 @@ default).  A value of @code{control}, @code{meta}, @code{alt},
 @code{super}, or @code{hyper} makes them behave like the corresponding
 modifier keys; a value of @code{none} tells Emacs to ignore them.
 
-  The standard Mac / GNUstep font and color panels are accessible via
-Lisp commands.  To use the color panel, drag from it to an Emacs frame
-to change the foreground color of the face at that position (if the
-@key{shift} key is held down, it changes the background color
-instead). To discard the settings, create a new frame and close the
-altered one.
-
-  @key{S-Mouse-1} (i.e., clicking the left mouse button while holding
-down the @key{Shift} key) adjusts the region to the click position,
-just like @key{Mouse-3} (@code{mouse-save-then-kill}); it does not pop
-up a menu for changing the default face, as @key{S-Mouse-1} normally
+  @kbd{S-Mouse-1} adjusts the region to the click position,
+just like @kbd{Mouse-3} (@code{mouse-save-then-kill}); it does not pop
+up a menu for changing the default face, as @kbd{S-Mouse-1} normally
 does (@pxref{Text Scale}).  This change makes Emacs behave more like
 other Mac / GNUstep applications.
 
   When you open or save files using the menus, or using the
-@key{Cmd-o} and @key{Cmd-S} bindings, Emacs uses graphical file
+@kbd{Cmd-o} and @kbd{Cmd-S} bindings, Emacs uses graphical file
 dialogs to read file names.  However, if you use the regular Emacs key
-sequences, such as @key{C-x C-f}, Emacs uses the minibuffer to read
+sequences, such as @kbd{C-x C-f}, Emacs uses the minibuffer to read
 file names.
 
-  On GNUstep, in an X-windows environment you need to use @key{Cmd-c}
-instead of one of the @key{C-w} or @key{M-w} commands to transfer text
+  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, @key{Cmd-y} (instead of @key{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.
 
@@ -100,23 +93,25 @@ customization buffers and the Options menu.
 
 @subsection Font and Color Panels
 
-The Font Panel may be accessed with M-x ns-popup-font-panel.  It
-will set the default font in the frame most recently used or clicked
-on.
+The standard Mac / GNUstep font and color panels are accessible via
+Lisp commands.  The Font Panel may be accessed with @kbd{M-x
+ns-popup-font-panel}.  It will set the default font in the frame most
+recently used or clicked on.
 
 @c  To make the setting permanent, use @samp{Save Options} in the
 @c Options menu, or run @code{menu-bar-options-save}.
 
-You can bring up a color panel with M-x ns-popup-color-panel. and
-drag the color you want over the emacs face you want to change.  Normal
+You can bring up a color panel with @kbd{M-x ns-popup-color-panel} and
+drag the color you want over the Emacs face you want to change.  Normal
 dragging will alter the foreground color.  Shift dragging will alter the
-background color.
+background color.  To discard the settings, create a new frame and
+close the altered one.
 
 @c To make the changes permanent select the "Save Options"
 @c item in the "Options" menu, or run @code{menu-bar-options-save}.
 
-Useful in this context is the listing of all faces obtained by @key{M-x}
-@code{list-faces-display}.
+Useful in this context is the listing of all faces obtained by
+@kbd{M-x list-faces-display}.
 
 @subsection Open files by dragging to an Emacs window
 
@@ -137,7 +132,7 @@ The following customization options are specific to the Nextstep port.
 @table @code
 @item ns-auto-hide-menu-bar
 Non-nil means the menu-bar is hidden by default, but appears if you
-move the mouse pointer over it.  (Requires OS X 10.6 or later.)
+move the mouse pointer over it.  (Requires Mac OS X 10.6 or later.)
 
 @end table
 
@@ -162,9 +157,9 @@ that frame (@code{ns-find-file}).  As an exception, if the selected
 buffer is the @samp{*scratch*} buffer, Emacs visits the file in the
 selected frame.
 
-You can change how Emacs responds to @key{ns-open-file} by changing
-the variable @code{ns-pop-up-frames}.  Its default value,
-@code{'fresh}, is what we have just described.  A value of @code{t}
+You can change how Emacs responds to a @code{ns-open-file} event by
+changing the variable @code{ns-pop-up-frames}.  Its default value,
+@samp{fresh}, is what we have just described.  A value of @code{t}
 means to always visit the file in a new frame.  A value of @code{nil}
 means to always visit the file in an existing frame.
 
@@ -211,7 +206,7 @@ The default behavior is to save all file-visiting buffers.
 
   Emacs also allows users to make use of Nextstep services, via a set
 of commands whose names begin with @samp{ns-service-} and end with the
-name of the service.  Type @kbd{M-x ns-service-@key{TAB}@key{TAB}} to
+name of the service.  Type @kbd{M-x ns-service-@key{TAB}} to
 see a list of these commands.  These functions either operate on
 marked text (replacing it with the result) or take a string argument
 and return the result as a string.  You can also use the Lisp function
@@ -222,6 +217,6 @@ restart Emacs to access newly-available services.
 @node GNUstep Support, , Mac / GNUstep Events, Mac OS / GNUstep
 @section GNUstep Support
 
-Emacs can be built and run under GNUstep, but there are still some
+Emacs can be built and run under GNUstep, but there are still
 issues to be addressed.  Interested developers should contact
 @email{emacs-devel@@gnu.org}.
index d2f92bf0da5007a88b793dafc6f2b4135c2a2685..e812c9112df44bbed07307e36ff38f53ec204287 100644 (file)
@@ -725,7 +725,7 @@ call this command from a Dired buffer (@pxref{Dired}).
 
 @ifnottex
 @item M-x vc-ediff
-Like @kbd{C-x v =}, but using Ediff.  @xref{Top, Ediff, ediff, The
+Like @kbd{C-x v =}, but using Ediff.  @xref{Top,, Ediff, ediff, The
 Ediff Manual}.
 @end ifnottex
 
@@ -777,7 +777,7 @@ current VC fileset.
 @ifnottex
 @findex vc-ediff
   @kbd{M-x vc-ediff} works like @kbd{C-x v =}, except that it uses an
-Ediff session.  @xref{Top, Ediff, ediff, The Ediff Manual}.
+Ediff session.  @xref{Top,, Ediff, ediff, The Ediff Manual}.
 @end ifnottex
 
 @findex vc-root-diff
index ca8e8f705b4a96906adac8670dc1f956adbde8c4..e20d5a347cd20d3aca599abcf976d137b5a7959f 100644 (file)
@@ -58,11 +58,11 @@ some initial text ending in a slash.  This is the @dfn{default
 directory}.  For example, it may start out like this:
 
 @example
-Find File: /u2/emacs/src/
+Find file: /u2/emacs/src/
 @end example
 
 @noindent
-Here, @samp{Find File:@: } is the prompt and @samp{/u2/emacs/src/} is
+Here, @samp{Find file:@: } is the prompt and @samp{/u2/emacs/src/} is
 the default directory.  If you now type @kbd{buffer.c} as input, that
 specifies the file @file{/u2/emacs/src/buffer.c}.  @xref{File Names},
 for information about the default directory.
@@ -79,7 +79,7 @@ name starting with a slash or a tilde after the default directory.
 For example, you can specify @file{/etc/termcap} as follows:
 
 @example
-Find File: /u2/emacs/src//etc/termcap
+Find file: /u2/emacs/src//etc/termcap
 @end example
 
 @noindent
@@ -247,7 +247,10 @@ completion.
 completion alternatives (in this case, command names) that start with
 @samp{au}.  There are several, including @code{auto-fill-mode} and
 @code{autoconf-mode}, but they all begin with @code{auto}, so the
-@samp{au} in the minibuffer completes to @samp{auto}.
+@samp{au} in the minibuffer completes to @samp{auto}.  (More commands
+may be defined in your Emacs session.  For example, if a command
+called @code{authorize-me} was defined, Emacs could only complete
+as far as @samp{aut}.)
 
   If you type @key{TAB} again immediately, it cannot determine the
 next character; it could be @samp{-}, @samp{a}, or @samp{c}.  So it
@@ -385,7 +388,7 @@ it just submits the argument as you have entered it.
 @item
 @dfn{Permissive completion with confirmation} is like permissive
 completion, with an exception: if you typed @key{TAB} and this
-completed the text up to some intermediate state (i.e. one that is not
+completed the text up to some intermediate state (i.e., one that is not
 yet an exact completion match), typing @key{RET} right afterward does
 not submit the argument.  Instead, Emacs asks for confirmation by
 momentarily displaying @samp{[Confirm]} after the text; type @key{RET}
@@ -450,8 +453,7 @@ position in the completion alternative.
 @item emacs22
 This completion style is similar to @code{basic}, except that it
 ignores the text in the minibuffer after point.  It is so-named
-because it corresponds to the completion behavior in Emacs 22 and
-earlier.
+because it corresponds to the completion behavior in Emacs 22.
 @end table
 
 @noindent
@@ -476,6 +478,18 @@ and initialisms.  For example, when completing command names, it
 matches @samp{lch} to @samp{list-command-history}.
 @end table
 
+@noindent
+There is also a very simple completion style called @code{emacs21}.
+In this style, if the text in the minibuffer is @samp{foobar},
+only matches starting with @samp{foobar} are considered.
+
+@vindex completion-category-overrides
+You can use different completion styles in different situations,
+by setting the variable @code{completion-category-overrides}.
+For example, the default setting says to use only @code{basic}
+and @code{substring} completion for buffer names.
+
+
 @node Completion Options
 @subsection Completion Options
 
@@ -521,7 +535,7 @@ commands never display the completion list buffer; you must type
 @kbd{?}  to display the list.  If the value is @code{lazy}, Emacs only
 shows the completion list buffer on the second attempt to complete.
 In other words, if there is nothing to complete, the first @key{TAB}
-echoes @samp{Next char not unique}; the second @key{TAB} does the
+echoes @samp{Next char not unique}; the second @key{TAB} shows the
 completion list buffer.
 
 @vindex completion-cycle-threshold
@@ -688,7 +702,7 @@ value.  @xref{Incremental Search}.
 @vindex command-history
   The list of previous minibuffer-using commands is stored as a Lisp
 list in the variable @code{command-history}.  Each element is a Lisp
-expression which describes one command and its arguments.  Lisp programs
+expression that describes one command and its arguments.  Lisp programs
 can re-execute a command by calling @code{eval} with the
 @code{command-history} element.
 
index dc50b3d248fcee6f6fcfddb5dd2b71fe5d6f26b7..509b9de754d71b6192e2cd3590048840f194359c 100644 (file)
@@ -199,10 +199,10 @@ of Emacs packages that use fonts (such as @code{font-lock}, Enriched
 Text mode, and others) by defining the relevant faces to use different
 colors.  Use the @code{list-colors-display} command
 @iftex
-(@pxref{Frame Parameters,,,emacs, the Emacs Manual})
+(@pxref{Colors,,,emacs, the Emacs Manual})
 @end iftex
 @ifnottex
-(@pxref{Frame Parameters})
+(@pxref{Colors})
 @end ifnottex
 and the @code{list-faces-display} command
 @iftex
@@ -260,10 +260,10 @@ visible frame smaller than the full screen, but Emacs still cannot
 display more than a single frame at a time.
 
 @cindex frame size under MS-DOS
-@findex mode4350
-@findex mode25
-  The @code{mode4350} command switches the display to 43 or 50
-lines, depending on your hardware; the @code{mode25} command switches
+@findex dos-mode4350
+@findex dos-mode25
+  The @code{dos-mode4350} command switches the display to 43 or 50
+lines, depending on your hardware; the @code{dos-mode25} command switches
 to the default 80x25 screen size.
 
   By default, Emacs only knows how to set screen sizes of 80 columns by
@@ -394,7 +394,7 @@ different default values on MS-DOS.
 for details about setting up printing to a networked printer.
 
   Some printers expect DOS codepage encoding of non-@acronym{ASCII} text, even
-though they are connected to a Windows machine which uses a different
+though they are connected to a Windows machine that uses a different
 encoding for the same locale.  For example, in the Latin-1 locale, DOS
 uses codepage 850 whereas Windows uses codepage 1252.  @xref{MS-DOS and
 MULE}.  When you print to such printers from Windows, you can use the
@@ -483,7 +483,7 @@ appropriate terminal coding system that is supported by the codepage.
 The special features described in the rest of this section mostly
 pertain to codepages that encode ISO 8859 character sets.
 
-  For the codepages which correspond to one of the ISO character sets,
+  For the codepages that correspond to one of the ISO character sets,
 Emacs knows the character set based on the codepage number.  Emacs
 automatically creates a coding system to support reading and writing
 files that use the current codepage, and uses this coding system by
@@ -607,9 +607,14 @@ MS-DOS with some network redirector.
 
 @cindex directory listing on MS-DOS
 @vindex dired-listing-switches @r{(MS-DOS)}
-  Dired on MS-DOS uses the @code{ls-lisp} package where other
-platforms use the system @code{ls} command.  Therefore, Dired on
-MS-DOS supports only some of the possible options you can mention in
-the @code{dired-listing-switches} variable.  The options that work are
-@samp{-A}, @samp{-a}, @samp{-c}, @samp{-i}, @samp{-r}, @samp{-S},
-@samp{-s}, @samp{-t}, and @samp{-u}.
+  Dired on MS-DOS uses the @code{ls-lisp} package
+@iftex
+(@pxref{ls in Lisp,,,emacs, the Emacs Manual}).
+@end iftex
+@ifnottex
+(@pxref{ls in Lisp}).
+@end ifnottex
+Therefore, Dired on MS-DOS supports only some of the possible options
+you can mention in the @code{dired-listing-switches} variable.  The
+options that work are @samp{-A}, @samp{-a}, @samp{-c}, @samp{-i},
+@samp{-r}, @samp{-S}, @samp{-s}, @samp{-t}, and @samp{-u}.
index d31906d9b04e9a5eae04ca7d1d3ea9816d7de392..93bc5f0e4b17363b2e374820b6f5d9920cee6145 100644 (file)
@@ -40,7 +40,7 @@ here.
 * Windows Fonts::       Specifying fonts on MS-Windows.
 * Windows Misc::        Miscellaneous Windows features.
 @ifnottex
-* MS-DOS::              Using Emacs on MS-DOS (otherwise known as @dfn{MS-DOG}).
+* MS-DOS::              Using Emacs on MS-DOS.
 @end ifnottex
 @end menu
 
@@ -159,7 +159,8 @@ save a buffer in a specified EOL format with the @kbd{C-x @key{RET} f}
 command.  For example, to save a buffer with Unix EOL format, type
 @kbd{C-x @key{RET} f unix @key{RET} C-x C-s}.  If you visit a file
 with DOS EOL conversion, then save it with Unix EOL format, that
-effectively converts the file to Unix EOL style, like @code{dos2unix}.
+effectively converts the file to Unix EOL style, like the
+@code{dos2unix} program.
 
 @cindex untranslated file system
 @findex add-untranslated-filesystem
@@ -221,7 +222,7 @@ for files which are known to be Windows-style text files with
 carriage-return linefeed EOL format, such as @file{CONFIG.SYS}; Emacs
 always writes those files with Windows-style EOLs.
 
-  If a file which belongs to an untranslated file system matches one of
+  If a file that belongs to an untranslated file system matches one of
 the file-name patterns in @code{file-name-buffer-file-type-alist}, the
 EOL conversion is determined by @code{file-name-buffer-file-type-alist}.
 
@@ -263,8 +264,8 @@ FAT32, and XFAT volumes.
 @cindex Dired, and MS-Windows/MS-DOS
 @cindex @code{ls} emulation
 
-  Dired normally uses the external program @code{ls} (or its close
-work-alike) to produce the directory listing displayed in Dired
+  Dired normally uses the external program @code{ls}
+to produce the directory listing displayed in Dired
 buffers (@pxref{Dired}).  However, MS-Windows and MS-DOS systems don't
 come with such a program, although several ports of @sc{gnu} @code{ls}
 are available.  Therefore, Emacs on those systems @emph{emulates}
@@ -281,8 +282,8 @@ they are described in this section.
   The @code{ls} emulation supports many of the @code{ls} switches, but
 it doesn't support all of them.  Here's the list of the switches it
 does support: @option{-A}, @option{-a}, @option{-B}, @option{-C},
-@option{-c}, @option{-i}, @option{-G}, @option{-g}, @option{-R},
-@option{-r}, @option{-S}, @option{-s}, @option{-t}, @option{-U},
+@option{-c}, @option{-G}, @option{-g}, @option{-h}, @option{-i}, @option{-n},
+@option{-R}, @option{-r}, @option{-S}, @option{-s}, @option{-t}, @option{-U},
 @option{-u}, and @option{-X}.  The @option{-F} switch is partially
 supported (it appends the character that classifies the file, but does
 not prevent symlink following).
@@ -413,9 +414,9 @@ value of @code{HOME}.
   You can override this default value of @code{HOME} by explicitly
 setting the environment variable @env{HOME} to point to any directory
 on your system.  @env{HOME} can be set either from the command shell
-prompt or from the @samp{My Computer}s @samp{Properties} dialog.
-@code{HOME} can also be set in the system registry, for details see
-@ref{MS-Windows Registry}.
+prompt or from @samp{Properties} dialog of @samp{My Computer}.
+@code{HOME} can also be set in the system registry,
+@pxref{MS-Windows Registry}.
 
   For compatibility with older versions of Emacs@footnote{
 Older versions of Emacs didn't check the application data directory.
@@ -431,9 +432,9 @@ deprecated.
   Whatever the final place is, Emacs sets the internal value of the
 @env{HOME} environment variable to point to it, and it will use that
 location for other files and directories it normally looks for or
-creates in the user's home directory.
+creates in your home directory.
 
-  You can always find out where Emacs thinks is your home directory's
+  You can always find out what Emacs thinks is your home directory's
 location by typing @kbd{C-x d ~/ @key{RET}}.  This should present the
 list of files in the home directory, and show its full name on the
 first line.  Likewise, to visit your init file, type @kbd{C-x C-f
@@ -510,7 +511,7 @@ otherwise it returns @code{nil}.
 @cindex @kbd{M-@key{TAB}} vs @kbd{Alt-@key{TAB}} (MS-Windows)
 @cindex @kbd{Alt-@key{TAB}} vs @kbd{M-@key{TAB}} (MS-Windows)
   For example, @code{(w32-register-hot-key [M-tab])} lets you use
-@kbd{M-TAB} normally in Emacs, for instance, to complete the word or
+@kbd{M-TAB} normally in Emacs; for instance, to complete the word or
 symbol at point at top level, or to complete the current search string
 against previously sought strings during incremental search.
 
@@ -589,7 +590,7 @@ of these variables.  Passing each of these keys to Windows produces
 its normal effect: for example, @kbd{@key{Lwindow}} opens the
 @code{Start} menu, etc.@footnote{
 Some combinations of the ``Windows'' keys with other keys are caught
-by Windows at low level in a way that Emacs currently cannot prevent.
+by Windows at low level in a way that Emacs currently cannot prevent.
 For example, @kbd{@key{Lwindow} r} always pops up the Windows
 @samp{Run} dialog.  Customizing the value of
 @code{w32-phantom-key-code} might help in some cases, though.}
@@ -612,7 +613,7 @@ modifiers.
 @cindex mouse, and MS-Windows
 
   This section describes the Windows-specific variables related to
-mouse.
+the mouse.
 
 @vindex w32-mouse-button-tolerance
 @cindex simulation of middle mouse button
@@ -689,8 +690,8 @@ to do its job.
 @vindex w32-quote-process-args
   The variable @code{w32-quote-process-args} controls how Emacs quotes
 the process arguments.  Non-@code{nil} means quote with the @code{"}
-character.  If the value is a character, use that character to escape
-any quote characters that appear; otherwise chose a suitable escape
+character.  If the value is a character, Emacs uses that character to escape
+any quote characters that appear; otherwise it chooses a suitable escape
 character based on the type of the program.
 
 @ifnottex
@@ -723,7 +724,7 @@ tell Emacs which printer to use.
   If you want to use your local printer, then set the Lisp variable
 @code{lpr-command} to @code{""} (its default value on Windows) and
 @code{printer-name} to the name of the printer port---for example,
-@code{"PRN"}, the usual local printer port or @code{"LPT2"}, or
+@code{"PRN"}, the usual local printer port, or @code{"LPT2"}, or
 @code{"COM1"} for a serial printer.  You can also set
 @code{printer-name} to a file name, in which case ``printed'' output
 is actually appended to that file.  If you set @code{printer-name} to
@@ -738,7 +739,7 @@ printers, run the command @samp{net view} from the command prompt to
 obtain a list of servers, and @samp{net view @var{server-name}} to see
 the names of printers (and directories) shared by that server.
 Alternatively, click the @samp{Network Neighborhood} icon on your
-desktop, and look for machines which share their printers via the
+desktop, and look for machines that share their printers via the
 network.
 
 @cindex @samp{net use}, and printing on MS-Windows
@@ -797,8 +798,8 @@ specified by @code{printer-name}.
   Finally, if you do have an @code{lpr} work-alike, you can set the
 variable @code{lpr-command} to @code{"lpr"}.  Then Emacs will use
 @code{lpr} for printing, as on other systems.  (If the name of the
-program isn't @code{lpr}, set @code{lpr-command} to specify where to
-find it.)  The variable @code{lpr-switches} has its standard meaning
+program isn't @code{lpr}, set @code{lpr-command} to the appropriate value.)
+The variable @code{lpr-switches} has its standard meaning
 when @code{lpr-command} is not @code{""}.  If the variable
 @code{printer-name} has a string value, it is used as the value for the
 @code{-P} option to @code{lpr}, as on Unix.
@@ -822,7 +823,7 @@ ports, and only one of them is a PostScript printer.)
 @cindex Ghostscript, use for PostScript printing
   The default value of the variable @code{ps-lpr-command} is @code{""},
 which causes PostScript output to be sent to the printer port specified
-by @code{ps-printer-name}, but @code{ps-lpr-command} can also be set to
+by @code{ps-printer-name}; but @code{ps-lpr-command} can also be set to
 the name of a program which will accept PostScript files.  Thus, if you
 have a non-PostScript printer, you can set this variable to the name of
 a PostScript interpreter program (such as Ghostscript).  Any switches
@@ -980,7 +981,7 @@ the system default antialiasing.
 determines whether to make the system caret visible.  The default when
 no screen reader software is in use is @code{nil}, which means Emacs
 draws its own cursor to indicate the position of point.  A
-non-@code{nil} value means Emacs will indicate point location by the
+non-@code{nil} value means Emacs will indicate point location with the
 system caret; this facilitates use of screen reader software, and is
 the default when such software is detected when running Emacs.
 When this variable is non-@code{nil}, other variables affecting the
index 629baaf9c52a57aaceea695ed4616bcd47c5fc09..5a10bf2c31c5e022e08addb0725b2ac878959de4 100644 (file)
@@ -78,9 +78,10 @@ column, converting a tab to multiple spaces if necessary.  @kbd{C-n} and
 @code{picture-move-up}, which can either insert spaces or convert tabs
 as necessary to make sure that point stays in exactly the same column.
 @kbd{C-e} runs @code{picture-end-of-line}, which moves to after the last
-nonblank character on the line.  There is no need to change @kbd{C-a},
-as the choice of screen model does not affect beginnings of
-lines.
+nonblank character on the line.  @kbd{C-a} runs
+@code{picture-beginning-of-line}.  (The choice of screen model does not
+affect beginnings of lines; the only extra thing this command does is
+update the current picture column to 0.)
 
 @findex picture-newline
   Insertion of text is adapted to the quarter-plane screen model
index 346e2fff5ff49a5509cd1da2aa7231180aeb928d..8217400663f888e849ad8190ee3661d2322b123c 100644 (file)
@@ -1084,8 +1084,7 @@ documentation of functions, variables and commands that you plan to
 use in your program.
 
 @menu
-* Info Lookup::         Looking up library functions and commands
-                          in Info files.
+* Info Lookup::         Looking up library functions and commands in Info files.
 * Man Page::            Looking up man pages of library functions and commands.
 * Lisp Doc::            Looking up Emacs Lisp functions, etc.
 @end menu
index 18556d4a5ef8cd9aa054826f15011d75393ea565..3b3605f800c6da76619e5292c53b8332e10849a1 100644 (file)
@@ -87,8 +87,7 @@ 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
 Commands}).  The Rmail command @kbd{b}, @code{rmail-bury}, buries the
-Rmail buffer and its summary buffer without expunging and saving the
-Rmail file.
+Rmail buffer and its summary without expunging and saving the Rmail file.
 
 @node Rmail Scrolling
 @section Scrolling Within a Message
@@ -276,7 +275,7 @@ Expunge the Rmail file (@code{rmail-expunge}).
 @findex rmail-delete-forward
 @findex rmail-delete-backward
   There are two Rmail commands for deleting messages.  Both delete the
-current message and select another message.  @kbd{d}
+current message and select another.  @kbd{d}
 (@code{rmail-delete-forward}) moves to the following message, skipping
 messages already deleted, while @kbd{C-d} (@code{rmail-delete-backward})
 moves to the previous nondeleted message.  If there is no nondeleted
@@ -337,7 +336,7 @@ any time in Rmail by typing @kbd{g}.
 @vindex rmail-primary-inbox-list
 @cindex @env{MAIL} environment variable
   The variable @code{rmail-primary-inbox-list} contains a list of the
-files which are inboxes for your primary Rmail file.  If you don't set
+files that are inboxes for your primary Rmail file.  If you don't set
 this variable explicitly, Rmail uses the @env{MAIL} environment
 variable, or, as a last resort, a default inbox based on
 @code{rmail-spool-directory}.  The default inbox file depends on your
@@ -367,6 +366,7 @@ all into a separate Rmail file avoids the need for interlocking in all
 the rest of Rmail, since only Rmail operates on the Rmail file.
 @end enumerate
 
+@c FIXME remove this in Emacs 25; won't be relevant any more.
   Rmail was originally written to use the Babyl format as its internal
 format.  Since then, we have recognized that the usual inbox format
 (@samp{mbox}) on Unix and GNU systems is adequate for the job, and so
@@ -454,6 +454,7 @@ second says which files in that directory to offer (all those that match
 the regular expression).  If no files match, you cannot select this menu
 item.  These variables also apply to choosing a file for output
 (@pxref{Rmail Output}).
+@c FIXME matches only checked when Rmail file first visited?
 
 @ignore
 @findex set-rmail-inbox-list
@@ -516,6 +517,7 @@ currently displayed and no more.  @xref{Rmail Display}.  In addition,
 @kbd{o} converts the message to Babyl format (used by Rmail in Emacs
 version 22 and before) if the file is in Babyl format; @kbd{C-o}
 cannot output to Babyl files at all.
+@c FIXME remove BABYL mention in Emacs 25?
 
   If the output file is currently visited in an Emacs buffer, the
 output commands append the message to that buffer.  It is up to you to
@@ -727,7 +729,7 @@ Try sending a bounced message a second time (@code{rmail-retry-failure}).
 @cindex reply to a message
   The most common reason to send a message while in Rmail is to reply
 to the message you are reading.  To do this, type @kbd{r}
-(@code{rmail-reply}).  This displays the @samp{*mail*} buffer in
+(@code{rmail-reply}).  This displays a mail composition buffer in
 another window, much like @kbd{C-x 4 m}, but preinitializes the
 @samp{Subject}, @samp{To}, @samp{CC}, @samp{In-reply-to} and
 @samp{References} header fields based on the message you are replying
@@ -735,23 +737,20 @@ to.  The @samp{To} field starts out as the address of the person who
 sent the message you received, and the @samp{CC} field starts out with
 all the other recipients of that message.
 
-@vindex rmail-dont-reply-to-names
+@vindex mail-dont-reply-to-names
   You can exclude certain recipients from being included automatically
-in replies, using the variable @code{rmail-dont-reply-to-names}.  Its
+in replies, using the variable @code{mail-dont-reply-to-names}.  Its
 value should be a regular expression; any recipients that match are
 excluded from the @samp{CC} field.  They are also excluded from the
 @samp{To} field, unless this would leave the field empty.  If this
 variable is nil, then the first time you compose a reply it is
-initialized to a default value that matches your own address, and any
-name starting with @samp{info-}.  (Those names are excluded because
-there is a convention of using them for large mailing lists to broadcast
-announcements.)
+initialized to a default value that matches your own address.
 
   To omit the @samp{CC} field completely for a particular reply, enter
 the reply command with a numeric argument: @kbd{C-u r} or @kbd{1 r}.
 This means to reply only to the sender of the original message.
 
-  Once the @samp{*mail*} buffer has been initialized, editing and
+  Once the mail composition buffer has been initialized, editing and
 sending the mail goes as usual (@pxref{Sending Mail}).  You can edit
 the presupplied header fields if they are not what you want.  You can
 also use commands such as @kbd{C-c C-y}, which yanks in the message
@@ -767,7 +766,7 @@ and yank the new current message.
 send the failed message back to you, enclosed in a @dfn{failure
 message}.  The Rmail command @kbd{M-m} (@code{rmail-retry-failure})
 prepares to send the same message a second time: it sets up a
-@samp{*mail*} buffer with the same text and header fields as before.  If
+mail composition buffer with the same text and header fields as before.  If
 you type @kbd{C-c C-c} right away, you send the message again exactly
 the same as the first time.  Alternatively, you can edit the text or
 headers and then send it.  The variable
@@ -780,23 +779,31 @@ headers are stripped from the failed message when retrying it.
 @cindex forwarding a message
   Another frequent reason to send mail in Rmail is to @dfn{forward} the
 current message to other users.  @kbd{f} (@code{rmail-forward}) makes
-this easy by preinitializing the @samp{*mail*} buffer with the current
-message as the text, and a subject designating a forwarded 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 its contents.
-
+this easy by preinitializing the mail composition buffer with the current
+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
+its contents.
+
+@vindex rmail-enable-mime-composing
 @findex unforward-rmail-message
-  Forwarding a message encloses it between two delimiter lines.  It also
-modifies every line that starts with a dash, by inserting @w{@samp{- }}
-at the start of the line.  When you receive a forwarded message, if it
+  Rmail offers two formats for forwarded messages.  The default is to
+use MIME (@pxref{Rmail Display}) format.  This includes the original
+message as a separate part.  You can use a simpler format if you
+prefer, by setting the variable @code{rmail-enable-mime-composing} to
+@code{nil}.  In this case, Rmail just includes the original message
+enclosed between two delimiter lines.  It also modifies every line
+that starts with a dash, by inserting @w{@samp{- }} at the start of
+the line.  When you receive a forwarded message in this format, if it
 contains something besides ordinary text---for example, program source
-code---you might find it useful to undo that transformation.  You can do
-this by selecting the forwarded message and typing @kbd{M-x
-unforward-rmail-message}.  This command extracts the original forwarded
-message, deleting the inserted @w{@samp{- }} strings, and inserts it
-into the Rmail file as a separate message immediately following the
-current one.
+code---you might find it useful to undo that transformation.  You can
+do this by selecting the forwarded message and typing @kbd{M-x
+unforward-rmail-message}.  This command extracts the original
+forwarded message, deleting the inserted @w{@samp{- }} strings, and
+inserts it into the Rmail file as a separate message immediately
+following the current one.
 
 @findex rmail-resend
   @dfn{Resending} is an alternative similar to forwarding; the
@@ -812,22 +819,28 @@ numeric argument.)
   Use the @kbd{m} (@code{rmail-mail}) command to start editing an
 outgoing message that is not a reply.  It leaves the header fields empty.
 Its only difference from @kbd{C-x 4 m} is that it makes the Rmail buffer
-accessible for @kbd{C-c C-y}, just as @kbd{r} does.  Thus, @kbd{m} can be
-used to reply to or forward a message; it can do anything @kbd{r} or @kbd{f}
-can do.
+accessible for @kbd{C-c C-y}, just as @kbd{r} does.
+@ignore
+@c Not a good idea, because it does not include Reply-To etc.
+Thus, @kbd{m} can be used to reply to or forward a message; it can do
+anything @kbd{r} or @kbd{f} can do.
+@end ignore
 
 @kindex c @r{(Rmail)}
 @findex rmail-continue
   The @kbd{c} (@code{rmail-continue}) command resumes editing the
-@samp{*mail*} buffer, to finish editing an outgoing message you were
+mail composition buffer, to finish editing an outgoing message you were
 already composing, or to alter a message you have sent.
 
 @vindex rmail-mail-new-frame
   If you set the variable @code{rmail-mail-new-frame} to a
 non-@code{nil} value, then all the Rmail commands to start sending a
 message create a new frame to edit it in.  This frame is deleted when
-you send the message, or when you use the @samp{Cancel} item in the
-@samp{Mail} menu.
+you send the message.
+@ignore
+@c FIXME does not work with Message -> Kill Message
+, or when you use the @samp{Cancel} item in the @samp{Mail} menu.
+@end ignore
 
   All the Rmail commands to send a message use the mail-composition
 method that you have chosen (@pxref{Mail Methods}).
@@ -905,8 +918,8 @@ commas.
 makes a partial summary mentioning only the messages that have one or
 more recipients matching the regular expression @var{rcpts}.  You can
 use commas to separate multiple regular expressions.  These are matched
-against the @samp{To}, @samp{From}, and @samp{CC} headers (with a prefix
-argument, this header is not included).
+against the @samp{To}, @samp{From}, and @samp{CC} headers (supply a prefix
+argument to exclude this header).
 
 @kindex C-M-t @r{(Rmail)}
 @findex rmail-summary-by-topic
@@ -1178,7 +1191,7 @@ Move point to the next @acronym{MIME} tagline button.
 (@code{rmail-mime-next-item}).
 
 @findex rmail-mime-previous-item
-@item @key{BackTab}
+@item S-@key{TAB}
 Move point to the previous @acronym{MIME} part
 (@code{rmail-mime-previous-item}).
 
@@ -1195,7 +1208,7 @@ immediately after its tagline, as part of the Rmail buffer, while
 taglines, with their actual contents hidden.  In either case, you can
 toggle a @acronym{MIME} part between its ``displayed'' and ``hidden''
 states by typing @key{RET} anywhere in the part---or anywhere in its
-tagline, apart from a tagline button for some other action.  Type
+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.
 
@@ -1213,7 +1226,7 @@ temporary buffer to display the current @acronym{MIME} message.
 @cindex encrypted mails (reading in Rmail)
   If the current message is an encrypted one, use the command @kbd{M-x
 rmail-epa-decrypt} to decrypt it, using the EasyPG library
-(@pxref{Top,,, epa, EasyPG Assistant User's Manual}).
+(@pxref{Top,, EasyPG, epa, EasyPG Assistant User's Manual}).
 
   You can highlight and activate URLs in the Rmail buffer using Goto
 Address mode:
@@ -1300,13 +1313,13 @@ the message, if you have made any changes in it.
 @cindex undigestify
 
   A @dfn{digest message} is a message which exists to contain and carry
-several other messages.  Digests are used on some moderated mailing
+several other messages.  Digests are used on some mailing
 lists; all the messages that arrive for the list during a period of time
 such as one day are put inside a single digest which is then sent to the
-subscribers.  Transmitting the single digest uses much less computer
+subscribers.  Transmitting the single digest uses less computer
 time than transmitting the individual messages even though the total
-size is the same, because the per-message overhead in network mail
-transmission is considerable.
+size is the same, because of the per-message overhead in network mail
+transmission.
 
 @findex undigestify-rmail-message
   When you receive a digest message, the most convenient way to read it is
@@ -1321,14 +1334,15 @@ message itself is flagged as deleted.
 @section Reading Rot13 Messages
 @cindex rot13 code
 
-  Mailing list messages that might offend some readers are sometimes
+  Mailing list messages that might offend or annoy some readers are sometimes
 encoded in a simple code called @dfn{rot13}---so named because it
 rotates the alphabet by 13 letters.  This code is not for secrecy, as it
-provides none; rather, it enables those who might be offended to avoid
-seeing the real text of the message.
+provides none; rather, it enables those who wish to to avoid
+seeing the real text of the message.  For example, a review of a film
+might use rot13 to hide important plot points.
 
 @findex rot13-other-window
-  To view a buffer which uses the rot13 code, use the command @kbd{M-x
+  To view a buffer that uses the rot13 code, use the command @kbd{M-x
 rot13-other-window}.  This displays the current buffer in another window
 which applies the code when displaying the text.
 
index 6f154ce2af639aa3ba21515221a17749aa1c8c1e..a2cb5d9f8f297fe2f5fdf4d35db6a84610d77014 100644 (file)
@@ -377,8 +377,8 @@ sending mail via @code{smtpmail-send-it} (see below).
 Send mail using the through an external mail host, such as your
 Internet service provider's outgoing SMTP mail server.  If you have
 not told Emacs how to contact the SMTP server, it prompts for this
-information, which is saved in the variables
-@code{smtpmail-smtp-server} and @code{smtpmail-auth-credentials}.
+information, which is saved in the @code{smtpmail-smtp-server} variable
+and the file @file{~/.authinfo}.
 @xref{Top,,Emacs SMTP Library, smtpmail, Sending mail via SMTP}.
 
 @item sendmail-send-it
index 027138811cac631f3517b39eea4e616cfb69ca21..5753c256c5d92882fb450b1b7aba98bceee8918b 100644 (file)
@@ -74,9 +74,9 @@ for editing such pictures.
 * Text Mode::           The major modes for editing text files.
 * Outline Mode::        Editing outlines.
 * Org Mode::            The Emacs organizer.
-* TeX Mode::            Editing input to the formatter TeX.
+* TeX Mode::            Editing TeX and LaTeX files.
 * HTML Mode::           Editing HTML and SGML files.
-* Nroff Mode::          Editing input to the formatter nroff.
+* Nroff Mode::          Editing input to the nroff formatter.
 * 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.
index 48b902f18c1e167d58755cf6176107495c2b470c..cd5ed206dd61a39a17ceb413ecabf9bcf0eb094a 100644 (file)
@@ -123,7 +123,7 @@ working tree, and schedule the renaming for committing.
 it via the version control system.  The file is removed from the
 working tree, and in the VC Directory buffer
 @iftex
-(@pxref{VC Directory Mode}),
+(@pxref{VC Directory Mode,,, emacs, the Emacs Manual}),
 @end iftex
 @ifnottex
 (@pxref{VC Directory Mode}),
@@ -438,4 +438,10 @@ difference is that the ``manual'' version backups made by @kbd{C-x v
 locking-like behavior using its @env{CVSREAD} or @dfn{watch} feature;
 see the CVS documentation for details.  If that case, you can use
 @kbd{C-x v v} in Emacs to toggle locking, as you would for a
-locking-based version control system (@pxref{VC With A Locking VCS}).
+locking-based version control system
+@iftex
+(@pxref{VC With A Locking VCS,,,emacs, the Emacs Manual}).
+@end iftex
+@ifnottex
+(@pxref{VC With A Locking VCS}).
+@end ifnottex
index bf08571f6fb7dd6327732b728b28aeaeee6d92ff..f3a95ab85ffaa2b8d5fab26b0aad679c60cbdf17 100644 (file)
@@ -1,3 +1,8 @@
+2012-02-17  Glenn Morris  <rgm@gnu.org>
+
+       * emacs-lisp-intro.texi (Design @value{COUNT-WORDS}, Syntax)
+       (count-words-in-defun): Fix cross-refs to Emacs manual.
+
 2012-01-28  Andreas Schwab  <schwab@linux-m68k.org>
 
        * emacs-lisp-intro.texi (Top): Move setting of COUNT-WORDS outside
index a72fd253bc82725b7596845e99befd1833481227..ae1e2bf0b6d057b63088f52d6edd94a415246f3b 100644 (file)
@@ -13972,10 +13972,9 @@ this is:
 
 @noindent
 The buffer's syntax table determines which characters are and are not
-word constituents.  (@xref{Syntax, , What Constitutes a Word or
-Symbol?}, for more about syntax.  Also, see @ref{Syntax, Syntax, The
-Syntax Table, emacs, The GNU Emacs Manual}, and @ref{Syntax Tables, ,
-Syntax Tables, elisp, The GNU Emacs Lisp Reference Manual}.)
+word constituents.  For more information about syntax,
+@pxref{Syntax Tables, , Syntax Tables, elisp, The GNU Emacs Lisp
+Reference Manual}.
 
 @need 800
 The search expression looks like this:
@@ -14836,8 +14835,7 @@ constituent} characters.  Word constituent characters are members of
 one syntax category.  Other syntax categories include the class of
 punctuation characters, such as the period and the comma, and the
 class of whitespace characters, such as the blank space and the tab
-character.  (For more information, see @ref{Syntax, Syntax, The Syntax
-Table, emacs, The GNU Emacs Manual}, and @ref{Syntax Tables, , Syntax
+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.
@@ -15007,7 +15005,7 @@ word and symbol by symbol, and another expression that counts the
 jumps.  The true-or-false-test for the @code{while} loop should test
 true so long as point should jump forward, and false when point is at
 the end of the definition.  We have already redefined the regular
-expression for this (@pxref{Syntax}), so the loop is straightforward:
+expression for this, so the loop is straightforward:
 
 @smallexample
 @group
index d8e322790e779c8182bf73365650155bb377d5c6..089aa8ba09612d845319327d9e2be185e692bd90 100644 (file)
@@ -1,3 +1,152 @@
+2012-02-25  Chong Yidong  <cyd@gnu.org>
+
+       * searching.texi (Regexp Backslash): Add index entry (Bug#10869).
+
+2012-02-24  Glenn Morris  <rgm@gnu.org>
+
+       * errors.texi (Standard Errors): Mention dbus-error.
+       For arith-error sub-classes, just use one cross-ref.
+
+2012-02-23  Alan Mackenzie  <acm@muc.de>
+
+       * modes.texi (Defining Minor Modes): Document the new keyword
+       :after-hook.
+
+2012-02-21  Chong Yidong  <cyd@gnu.org>
+
+       * files.texi (Files): Mention magic file names as arguments.
+       (Reading from Files): Copyedits.
+       (File Attributes): Mention how to change file modes.
+       (Changing Files): Use standard "file permissions" terminology.
+       Add xref to File Attributes node.
+       (Locating Files): Document locate-user-emacs-file.
+       (Unique File Names): Recommend against using make-temp-name.
+
+2012-02-19  Chong Yidong  <cyd@gnu.org>
+
+       * help.texi (Documentation, Documentation Basics, Help Functions):
+       Minor clarifications.
+       (Accessing Documentation): Clarify what documentation-property is
+       for.  Add xref to Keys in Documentation.
+
+       * tips.texi (Documentation Tips): Don't recommend using * in
+       docstrings.
+
+       * macros.texi (Defining Macros):
+       * modes.texi (Derived Modes): Say "documentation string" instead
+       of docstring.
+
+2012-02-18  Chong Yidong  <cyd@gnu.org>
+
+       * modes.texi (Tabulated List Mode): New node.
+       (Basic Major Modes): Add xref to it.
+
+       * processes.texi (Process Information): Mention Process Menu mode.
+
+2012-02-17  Chong Yidong  <cyd@gnu.org>
+
+       * syntax.texi (Motion via Parsing): Doc fix for scan-lists.
+
+2012-02-17  Glenn Morris  <rgm@gnu.org>
+
+       * hooks.texi (Standard Hooks): Fix cross-ref to Emacs manual.
+
+2012-02-16  Chong Yidong  <cyd@gnu.org>
+
+       * syntax.texi (Syntax Tables, Syntax Descriptors)
+       (Syntax Table Functions): Copyedits.
+       (Syntax Basics): Don't repeat the material in the preceding node.
+       (Syntax Class Table): Use a table.
+       (Syntax Properties): Document syntax-propertize-function and
+       syntax-propertize-extend-region-functions.
+       (Motion via Parsing): Clarify scan-lists. Fix indentation.
+       (Parser State): Update for the new "c" comment style.  Fix
+       description of item 7 (comment style).
+
+       * modes.texi (Minor Modes): Update how mode commands should treat
+       arguments now.
+       (Mode Line Basics): Clarify force-mode-line-update.
+       (Mode Line Top): Note that the example is not realistic.
+       (Mode Line Variables, Mode Line Data, %-Constructs, Header Lines)
+       (Emulating Mode Line): Use "mode line" instead of "mode-line", and
+       "mode line construct" instead of "mode line specification".
+       (Syntactic Font Lock): Remove mention of obsolete variable
+       font-lock-syntactic-keywords.
+       (Setting Syntax Properties): Node deleted.
+       (Font Lock Mode): Note that Font Lock mode is a minor mode.
+       (Font Lock Basics): Note that syntactic fontification falls back
+       on `syntax-table'.
+       (Search-based Fontification): Emphasize that font-lock-keywords
+       should not be set directly.
+       (Faces for Font Lock): Avoid some confusing terminology.
+       (Syntactic Font Lock): Minor clarifications.  Add xref to
+       Syntactic Font Lock node.
+
+2012-02-15  Chong Yidong  <cyd@gnu.org>
+
+       * minibuf.texi (Basic Completion): Define "completion table".
+       Move completion-in-region to Completion in Buffers node.
+       (Completion Commands): Use "completion table" terminology.
+       (Completion in Buffers): New node.
+
+       * modes.texi (Hooks): add-hook can be used for abnormal hooks too.
+       (Setting Hooks): Update minor mode usage example.
+       (Major Mode Conventions): Note that completion-at-point-functions
+       should be altered locally.  Add xref to Completion in Buffers.
+       Remove duplicate tip about auto-mode-alist.
+       (Minor Modes): Rewrite introduction.
+       (Minor Mode Conventions): Copyedits.  Don't recommend
+       variable-only minor modes since few minor modes are like that.
+
+2012-02-15  Glenn Morris  <rgm@gnu.org>
+
+       * processes.texi (Network): Document open-network-stream :parameters.
+
+2012-02-14  Chong Yidong  <cyd@gnu.org>
+
+       * keymaps.texi (Format of Keymaps): The CACHE component of keymaps
+       was removed on 2009-09-10.  Update lisp-mode-map example.
+       (Inheritance and Keymaps): Minor clarification.
+       (Searching Keymaps): Remove out-of-place enumeration.
+       (Key Lookup): Remove unnecessary example (one was already given in
+       Format of Keymaps).
+       (Changing Key Bindings): Update suppress-keymap example.
+       (Menu Bar, Tool Bar): Copyedits.
+       (Tool Bar): Update tool-bar-map example.
+
+2012-02-12  Chong Yidong  <cyd@gnu.org>
+
+       * debugging.texi (Debugger Commands): Continuing is now allowed
+       for errors.
+
+2012-02-11  Chong Yidong  <cyd@gnu.org>
+
+       * display.texi (Fringe Indicators): Add xref to Fringe Bitmaps.
+       Move the list of standard bitmaps there.
+       (Fringe Cursors): Rewrite for clarity.
+       (Fringe Bitmaps): Consolidate the list of standard bitmaps here.
+
+       * commands.texi (Command Overview): Mention read-key.
+       (Using Interactive, Interactive Call): Minor clarifications.
+       (Function Keys, Click Events): Avoid "input stream" terminology.
+       (Click Events): Add xref to Window Sizes and Accessing Mouse.
+       Clarify column and row components.
+       (Accessing Mouse): Add xref to Click Events.  Minor fixes.
+       (Special Events): Copyedits.
+
+       * streams.texi (Input Streams): De-document get-file-char.
+       (Output Variables): Don't refer to old backquote syntax.
+
+       * debugging.texi (Debugging): Copyedits.  Describe testcover, ERT.
+       (Error Debugging): Note that debug-ignored-errors overrides list
+       values of debug-on-error too.  Add xref to Signaling Errors.  Note
+       that debug-on-signal is not customizable.  Mention
+       condition-case-unless-debug.
+       (Compilation Errors): Node deleted.
+
+       * compile.texi (Compiler Errors): Move a paragraph here from
+       deleted node Compilation Errors.
+
 2012-02-10  Leo Liu  <sdl.web@gmail.com>
 
        * control.texi (Handling Errors): Change condition-case-no-debug
index 91e224a439fcfcc47dac8abd424222002e8a2885..f4e7c9223318c2c2ecb15eb726475aed695e3171 100644 (file)
@@ -37,13 +37,13 @@ are done, and the subroutines that allow Lisp programs to do them.
 @node Command Overview
 @section Command Loop Overview
 
-  The first thing the command loop must do is read a key sequence, which
-is a sequence of events that translates into a command.  It does this by
-calling the function @code{read-key-sequence}.  Your Lisp code can also
-call this function (@pxref{Key Sequence Input}).  Lisp programs can also
-do input at a lower level with @code{read-event} (@pxref{Reading One
-Event}) or discard pending input with @code{discard-input}
-(@pxref{Event Input Misc}).
+  The first thing the command loop must do is read a key sequence,
+which is a sequence of input events that translates into a command.
+It does this by calling the function @code{read-key-sequence}.  Lisp
+programs can also call this function (@pxref{Key Sequence Input}).
+They can also read input at a lower level with @code{read-key} or
+@code{read-event} (@pxref{Reading One Event}), or discard pending
+input with @code{discard-input} (@pxref{Event Input Misc}).
 
   The key sequence is translated into a command through the currently
 active keymaps.  @xref{Key Lookup}, for information on how this is done.
@@ -67,12 +67,9 @@ use the minibuffer, so if you call @code{find-file} as a function from
 Lisp code, you must supply the file name string as an ordinary Lisp
 function argument.
 
-  If the command is a string or vector (i.e., a keyboard macro) then
-@code{execute-kbd-macro} is used to execute it.  You can call this
-function yourself (@pxref{Keyboard Macros}).
-
-  To terminate the execution of a running command, type @kbd{C-g}.  This
-character causes @dfn{quitting} (@pxref{Quitting}).
+  If the command is a keyboard macro (i.e.@: a string or vector),
+Emacs executes it using @code{execute-kbd-macro} (@pxref{Keyboard
+Macros}).
 
 @defvar pre-command-hook
 This normal hook is run by the editor command loop before it executes
@@ -175,8 +172,8 @@ or more arguments.
 
 @item
 It may be a string; its contents are a sequence of elements separated
-by newlines, one for each parameter@footnote{Some elements actually
-supply two parameters.}.  Each element consists of a code character
+by newlines, one for each argument@footnote{Some elements actually
+supply two arguments.}.  Each element consists of a code character
 (@pxref{Interactive Codes}) optionally followed by a prompt (which
 some code characters use and some ignore).  Here is an example:
 
@@ -575,21 +572,24 @@ the command is a function, @code{command-execute} calls
 @code{call-interactively}, which reads the arguments and calls the
 command.  You can also call these functions yourself.
 
-@defun commandp object &optional for-call-interactively
-Returns @code{t} if @var{object} is suitable for calling interactively;
-that is, if @var{object} is a command.  Otherwise, returns @code{nil}.
-
-Interactively-callable objects include strings and vectors (which are
-treated as keyboard macros), lambda expressions that contain a
-top-level @code{interactive} form (@pxref{Using Interactive}),
-byte-code function objects made from such lambda expressions, autoload
-objects that are declared as interactive (non-@code{nil} fourth
-argument to @code{autoload}), and some primitive functions.
+  Note that the term ``command'', in this context, refers to an
+interactively callable function (or function-like object), or a
+keyboard macro.  It does not refer to the key sequence used to invoke
+a command (@pxref{Keymaps}).
 
-A symbol satisfies @code{commandp} if it has a non-@code{nil}
+@defun commandp object &optional for-call-interactively
+This function returns @code{t} if @var{object} is a command.
+Otherwise, it returns @code{nil}.
+
+Commands include strings and vectors (which are treated as keyboard
+macros), lambda expressions that contain a top-level
+@code{interactive} form (@pxref{Using Interactive}), byte-code
+function objects made from such lambda expressions, autoload objects
+that are declared as interactive (non-@code{nil} fourth argument to
+@code{autoload}), and some primitive functions.  Also, a symbol is
+considered a command if it has a non-@code{nil}
 @code{interactive-form} property, or if its function definition
-satisfies @code{commandp}.  Keys and keymaps are not commands.
-Rather, they are used to look up commands (@pxref{Keymaps}).
+satisfies @code{commandp}.
 
 If @var{for-call-interactively} is non-@code{nil}, then
 @code{commandp} returns @code{t} only for objects that
@@ -649,14 +649,14 @@ callable function or a keyboard macro.
 
 A string or vector as @var{command} is executed with
 @code{execute-kbd-macro}.  A function is passed to
-@code{call-interactively}, along with the optional @var{record-flag}
-and @var{keys}.
+@code{call-interactively} (see above), along with the
+@var{record-flag} and @var{keys} arguments.
 
-A symbol is handled by using its function definition in its place.  A
-symbol with an @code{autoload} definition counts as a command if it was
-declared to stand for an interactively callable function.  Such a
-definition is handled by loading the specified library and then
-rechecking the definition of the symbol.
+If @var{command} is a symbol, its function definition is used in its
+place.  A symbol with an @code{autoload} definition counts as a
+command if it was declared to stand for an interactively callable
+function.  Such a definition is handled by loading the specified
+library and then rechecking the definition of the symbol.
 
 The argument @var{special}, if given, means to ignore the prefix
 argument and not clear it.  This is used for executing special events
@@ -1131,9 +1131,9 @@ The
 @ifnottex
 2**22
 @end ifnottex
-bit in the character code indicates a character typed with
-the alt key held down.  (On some terminals, the key labeled @key{ALT}
-is actually the meta key.)
+bit in the character code indicates a character typed with the alt key
+held down.  (The key labeled @key{Alt} on most keyboards is actually
+treated as the meta key, not this.)
 @end table
 
   It is best to avoid mentioning specific bit numbers in your program.
@@ -1151,10 +1151,10 @@ specify the characters (@pxref{Changing Key Bindings}).  The function
 
 @cindex function keys
 Most keyboards also have @dfn{function keys}---keys that have names or
-symbols that are not characters.  Function keys are represented in Emacs
-Lisp as symbols; the symbol's name is the function key's label, in lower
-case.  For example, pressing a key labeled @key{F1} places the symbol
-@code{f1} in the input stream.
+symbols that are not characters.  Function keys are represented in
+Emacs Lisp as symbols; the symbol's name is the function key's label,
+in lower case.  For example, pressing a key labeled @key{F1} generates
+an input event represented by the symbol @code{f1}.
 
 The event type of a function key event is the event symbol itself.
 @xref{Classifying Events}.
@@ -1287,6 +1287,11 @@ the marginal areas, @var{position} has this form:
  @var{image} (@var{dx} . @var{dy}) (@var{width} . @var{height}))
 @end example
 
+@noindent
+The meanings of these list elements are documented below.
+@xref{Accessing Mouse}, for functions that let you easily access these
+elements.
+
 @table @asis
 @item @var{window}
 This is the window in which the click occurred.
@@ -1298,39 +1303,36 @@ which the click occurred.  It is one of the symbols @code{mode-line},
 @code{header-line}, @code{vertical-line}, @code{left-margin},
 @code{right-margin}, @code{left-fringe}, or @code{right-fringe}.
 
-In one special case, @var{pos-or-area} is a list containing a symbol (one
-of the symbols listed above) instead of just the symbol.  This happens
-after the imaginary prefix keys for the event are inserted into the
-input stream.  @xref{Key Sequence Input}.
-
+In one special case, @var{pos-or-area} is a list containing a symbol
+(one of the symbols listed above) instead of just the symbol.  This
+happens after the imaginary prefix keys for the event are registered
+by Emacs.  @xref{Key Sequence Input}.
 
 @item @var{x}, @var{y}
-These are the pixel coordinates of the click, relative to
-the top left corner of @var{window}, which is @code{(0 . 0)}.
-For a click on text, these are relative to the top left corner of
-the window's text area.  For the mode or header line, they are
-relative to the top left window edge.  For fringes, margins, and the
-vertical border, @var{x} does not have meaningful data.  For fringes
-and margins, @var{y} is relative to the bottom edge of the header
-line.
+These are the relative pixel coordinates of the click.  For clicks in
+the text area of a window, the coordinate origin @code{(0 . 0)} is
+taken to be the top left corner of the text area.  @xref{Window
+Sizes}.  For clicks in a mode line or header line, the coordinate
+origin is the top left corner of the window itself.  For fringes,
+margins, and the vertical border, @var{x} does not have meaningful
+data.  For fringes and margins, @var{y} is relative to the bottom edge
+of the header line.  In all cases, the @var{x} and @var{y} coordinates
+increase rightward and downward respectively.
 
 @item @var{timestamp}
 This is the time at which the event occurred, in milliseconds.
 
 @item @var{object}
-This is the object on which the click occurred.  It is either
-@code{nil} if there is no string property, or it has the form
-(@var{string} . @var{string-pos}) when there is a string-type text
-property at the click position.
+This is either @code{nil} if there is no string-type text property at
+the click position, or a cons cell of the form (@var{string}
+. @var{string-pos}) if there is one:
 
 @table @asis
 @item @var{string}
-This is the string on which the click occurred, including any
-properties.
+The string which was clicked on, including any properties.
 
 @item @var{string-pos}
-This is the position in the string on which the click occurred,
-relevant if properties at the click need to be looked up.
+The position in the string where the click occurred.
 @end table
 
 @item @var{text-pos}
@@ -1340,14 +1342,17 @@ the window.  For other events, it is the current buffer position in
 the window.
 
 @item @var{col}, @var{row}
-These are the actual coordinates of the glyph under the @var{x},
-@var{y} position, possibly padded with default character width
-glyphs if @var{x} is beyond the last glyph on the line.  For clicks on
-the header or mode line, these are measured from the top left edge of
-the header or mode line.  For clicks on the fringes and on the
-vertical border, these have no meaningful data.  For clicks on the
-margins, @var{col} is measured from the left edge of the margin area
-and @var{row} is measured from the top of the margin area.
+These are the actual column and row coordinate numbers of the glyph
+under the @var{x}, @var{y} position.  If @var{x} lies beyond the last
+column of actual text on its line, @var{col} is reported by adding
+fictional extra columns that have the default character width.  Row 0
+is taken to be the header line if the window has one, or the topmost
+row of the text area otherwise.  Column 0 is taken to be the leftmost
+column of the text area for clicks on a window text area, or the
+leftmost mode line or header line column for clicks there.  For clicks
+on fringes or vertical borders, these have no meaningful data.  For
+clicks on margins, @var{col} is measured from the left edge of the
+margin area and @var{row} is measured from the top of the margin area.
 
 @item @var{image}
 This is the image object on which the click occurred.  It is either
@@ -1885,7 +1890,7 @@ must be the last element of the list.  For example,
 a mouse button or motion event.
 
   These two functions return the starting or ending position of a
-mouse-button event, as a list of this form:
+mouse-button event, as a list of this form (@pxref{Click Events}):
 
 @example
 (@var{window} @var{pos-or-area} (@var{x} . @var{y}) @var{timestamp}
@@ -1936,12 +1941,13 @@ Return the pixel-based x and y coordinates in @var{position}, as a
 cons cell @code{(@var{x} . @var{y})}.  These coordinates are relative
 to the window given by @code{posn-window}.
 
-This example shows how to convert these window-relative coordinates
-into frame-relative coordinates:
+This example shows how to convert the window-relative coordinates in
+the text area of a window into frame-relative coordinates:
 
 @example
 (defun frame-relative-coordinates (position)
-  "Return frame-relative coordinates from POSITION."
+  "Return frame-relative coordinates from POSITION.
+POSITION is assumed to lie in a window text area."
   (let* ((x-y (posn-x-y position))
          (window (posn-window position))
          (edges (window-inside-pixel-edges window)))
@@ -1966,10 +1972,10 @@ window possesses a header line (@pxref{Header Lines}), it is
 
 @defun posn-actual-col-row position
 Return the actual row and column in @var{position}, as a cons cell
-@code{(@var{col} . @var{row})}.  The values are the actual row number
-in the window, and the actual character number in that row.  It returns
-@code{nil} if @var{position} does not include actual positions values.
-You can use @code{posn-col-row} to get approximate values.
+@code{(@var{col} . @var{row})}.  The values are the actual row and
+column numbers in the window.  @xref{Click Events}, for details.  It
+returns @code{nil} if @var{position} does not include actual positions
+values.
 @end defun
 
 @defun posn-string position
@@ -2680,9 +2686,9 @@ Likewise, incremental search uses this feature to unread events with no
 special meaning in a search, because these events should exit the search
 and then execute normally.
 
-The reliable and easy way to extract events from a key sequence so as to
-put them in @code{unread-command-events} is to use
-@code{listify-key-sequence} (@pxref{Strings of Events}).
+The reliable and easy way to extract events from a key sequence so as
+to put them in @code{unread-command-events} is to use
+@code{listify-key-sequence} (see below).
 
 Normally you add events to the front of this list, so that the events
 most recently unread will be reread first.
@@ -2787,28 +2793,29 @@ during the sleep.
 @section Special Events
 
 @cindex special events
-Special events are handled at a very low level---as soon as they are
-read.  The @code{read-event} function processes these events itself, and
-never returns them.  Instead, it keeps waiting for the first event
-that is not special and returns that one.
+Certain @dfn{special events} are handled at a very low level---as soon
+as they are read.  The @code{read-event} function processes these
+events itself, and never returns them.  Instead, it keeps waiting for
+the first event that is not special and returns that one.
 
-Events that are handled in this way do not echo, they are never grouped
-into key sequences, and they never appear in the value of
+  Special events do not echo, they are never grouped into key
+sequences, and they never appear in the value of
 @code{last-command-event} or @code{(this-command-keys)}.  They do not
 discard a numeric argument, they cannot be unread with
 @code{unread-command-events}, they may not appear in a keyboard macro,
 and they are not recorded in a keyboard macro while you are defining
 one.
 
-These events do, however, appear in @code{last-input-event} immediately
-after they are read, and this is the way for the event's definition to
-find the actual event.
+  Special events do, however, appear in @code{last-input-event}
+immediately after they are read, and this is the way for the event's
+definition to find the actual event.
 
-The events types @code{iconify-frame}, @code{make-frame-visible},
+  The events types @code{iconify-frame}, @code{make-frame-visible},
 @code{delete-frame}, @code{drag-n-drop}, and user signals like
 @code{sigusr1} are normally handled in this way.  The keymap which
-defines how to handle special events---and which events are special---is
-in the variable @code{special-event-map} (@pxref{Active Keymaps}).
+defines how to handle special events---and which events are
+special---is in the variable @code{special-event-map} (@pxref{Active
+Keymaps}).
 
 @node Waiting
 @section Waiting for Elapsed Time or Input
index 545f05d9d57cfe7755ba3f9dfeb0689001f77e1b..90d038c29d6656e0727b44d66ab04d035ec496b0 100644 (file)
@@ -445,13 +445,22 @@ to what @code{eval-when-compile} does.
   Byte compilation outputs all errors and warnings into the buffer
 @samp{*Compile-Log*}.  The messages include file names and line
 numbers that identify the location of the problem.  The usual Emacs
-commands for operating on compiler diagnostics work properly on
-these messages.
-
-  However, the warnings about functions that were used but not
-defined are always ``located'' at the end of the file, so these
-commands won't find the places they are really used.  To do that,
-you must search for the function names.
+commands for operating on compiler diagnostics work properly on these
+messages.
+
+  When an error is due to invalid syntax in the program, the byte
+compiler might get confused about the errors' exact location.  One way
+to investigate is to switch to the buffer @w{@samp{*Compiler Input*}}.
+(This buffer name starts with a space, so it does not show up in
+@kbd{M-x list-buffers}.)  This buffer contains the program being
+compiled, and point shows how far the byte compiler was able to read;
+the cause of the error might be nearby.  @xref{Syntax Errors}, for
+some tips for locating syntax errors.
+
+  When the byte compiler warns about functions that were used but not
+defined, it always reports the line number for the end of the file,
+not the locations where the missing functions were called.  To find
+the latter, you must search for the function names.
 
   You can suppress the compiler warning for calling an undefined
 function @var{func} by conditionalizing the function call on an
index cc92fc225f9958d80eccb499fa9ad1156ebeba46..6e7d0078e07ac028b893bdc8f7c0ad40c9ac7d0e 100644 (file)
@@ -6,41 +6,46 @@
 @node Debugging, Read and Print, Advising Functions, Top
 @chapter Debugging Lisp Programs
 
-  There are three ways to investigate a problem in an Emacs Lisp program,
-depending on what you are doing with the program when the problem appears.
+  There are several ways to find and investigate problems in an Emacs
+Lisp program.
 
 @itemize @bullet
 @item
-If the problem occurs when you run the program, you can use a Lisp
-debugger to investigate what is happening during execution.  In addition
-to the ordinary debugger, Emacs comes with a source-level debugger,
-Edebug.  This chapter describes both of them.
+If a problem occurs when you run the program, you can use the built-in
+Emacs Lisp debugger to suspend the Lisp evaluator, and examine and/or
+alter its internal state.
 
 @item
-If the problem is syntactic, so that Lisp cannot even read the program,
-you can use the Emacs facilities for editing Lisp to localize it.
+You can use Edebug, a source-level debugger for Emacs Lisp.
 
 @item
-If the problem occurs when trying to compile the program with the byte
-compiler, you need to know how to examine the compiler's input buffer.
+If a syntactic problem is preventing Lisp from even reading the
+program, you can locate it using Lisp editing commands.
+
+@item
+You can look at the error and warning messages produced by the byte
+compiler when it compiles the program.  @xref{Compiler Errors}.
+
+@item
+You can use the Testcover package to perform coverage testing on the
+program.
+
+@item
+You can use the ERT package to write regression tests for the program.
+@xref{Top,the ERT manual,, ERT, ERT: Emacs Lisp Regression Testing}.
 @end itemize
 
+  Other useful tools for debugging input and output problems are the
+dribble file (@pxref{Terminal Input}) and the @code{open-termscript}
+function (@pxref{Terminal Output}).
+
 @menu
-* Debugger::            How the Emacs Lisp debugger is implemented.
+* Debugger::            A debugger for the Emacs Lisp evaluator.
 * Edebug::              A source-level Emacs Lisp debugger.
 * Syntax Errors::       How to find syntax errors.
 * Test Coverage::       Ensuring you have tested all branches in your code.
-* Compilation Errors::  How to find errors that show up in byte compilation.
 @end menu
 
-  Another useful debugging tool is the dribble file.  When a dribble
-file is open, Emacs copies all keyboard input characters to that file.
-Afterward, you can examine the file to find out what input was used.
-@xref{Terminal Input}.
-
-  For debugging problems in terminal descriptions, the
-@code{open-termscript} function can be useful.  @xref{Terminal Output}.
-
 @node Debugger
 @section The Lisp Debugger
 @cindex debugger for Emacs Lisp
@@ -76,25 +81,29 @@ happens.  This allows you to investigate the immediate causes of the
 error.
 
   However, entry to the debugger is not a normal consequence of an
-error.  Many commands frequently cause Lisp errors when invoked
-inappropriately, and during ordinary editing it would be very
-inconvenient to enter the debugger each time this happens.  So if you
-want errors to enter the debugger, set the variable
-@code{debug-on-error} to non-@code{nil}.  (The command
-@code{toggle-debug-on-error} provides an easy way to do this.)
+error.  Many commands signal Lisp errors when invoked inappropriately,
+and during ordinary editing it would be very inconvenient to enter the
+debugger each time this happens.  So if you want errors to enter the
+debugger, set the variable @code{debug-on-error} to non-@code{nil}.
+(The command @code{toggle-debug-on-error} provides an easy way to do
+this.)
 
 @defopt debug-on-error
 This variable determines whether the debugger is called when an error
 is signaled and not handled.  If @code{debug-on-error} is @code{t},
 all kinds of errors call the debugger, except those listed in
 @code{debug-ignored-errors} (see below).  If it is @code{nil}, none
-call the debugger.  (Note that @code{eval-expression-debug-on-error}
-affects the setting of this variable in some cases; see below.)
+call the debugger.
 
-The value can also be a list of error conditions that should call the
-debugger.  For example, if you set it to the list
-@code{(void-variable)}, then only errors about a variable that has no
-value invoke the debugger.
+The value can also be a list of error conditions (@pxref{Signaling
+Errors}).  Then the debugger is called only for error conditions in
+this list (except those also listed in @code{debug-ignored-errors}).
+For example, if you set @code{debug-on-error} to the list
+@code{(void-variable)}, the debugger is only called for errors about a
+variable that has no value.
+
+Note that @code{eval-expression-debug-on-error} overrides this
+variable in some cases; see below.
 
 When this variable is non-@code{nil}, Emacs does not create an error
 handler around process filter functions and sentinels.  Therefore,
@@ -102,52 +111,50 @@ errors in these functions also invoke the debugger.  @xref{Processes}.
 @end defopt
 
 @defopt debug-ignored-errors
-This variable specifies certain kinds of errors that should not enter
-the debugger.  Its value is a list of error condition symbols and/or
-regular expressions.  If the error has any of those condition symbols,
-or if the error message matches any of the regular expressions, then
-that error does not enter the debugger, regardless of the value of
-@code{debug-on-error}.
-
-The normal value of this variable lists several errors that happen often
-during editing but rarely result from bugs in Lisp programs.  However,
-``rarely'' is not ``never''; if your program fails with an error that
-matches this list, you will need to change this list in order to debug
+This variable specifies errors which should not enter the debugger,
+regardless of the value of @code{debug-on-error}.  Its value is a list
+of error condition symbols and/or regular expressions.  If the error
+has any of those condition symbols, or if the error message matches
+any of the regular expressions, then that error does not enter the
+debugger.
+
+The normal value of this variable lists several errors that happen
+often during editing but rarely result from bugs in Lisp programs.
+However, ``rarely'' is not ``never''; if your program fails with an
+error that matches this list, you may try changing this list to debug
 the error.  The easiest way is usually to set
 @code{debug-ignored-errors} to @code{nil}.
 @end defopt
 
 @defopt eval-expression-debug-on-error
-If this variable has a non-@code{nil} value, then
-@code{debug-on-error} is set to @code{t} when evaluating with the
-command @code{eval-expression}.  If
-@code{eval-expression-debug-on-error} is @code{nil}, then the value of
-@code{debug-on-error} is not changed.  @xref{Lisp Eval,, Evaluating
+If this variable has a non-@code{nil} value (the default), running the
+command @code{eval-expression} causes @code{debug-on-error} to be
+temporarily bound to to @code{t}.  @xref{Lisp Eval,, Evaluating
 Emacs-Lisp Expressions, emacs, The GNU Emacs Manual}.
-@end defopt
 
-@defopt debug-on-signal
-Normally, errors that are caught by @code{condition-case} never run the
-debugger, even if @code{debug-on-error} is non-@code{nil}.  In other
-words, @code{condition-case} gets a chance to handle the error before
-the debugger gets a chance.
-
-If you set @code{debug-on-signal} to a non-@code{nil} value, then the
-debugger gets the first chance at every error; an error will invoke the
-debugger regardless of any @code{condition-case}, if it fits the
-criteria specified by the values of @code{debug-on-error} and
-@code{debug-ignored-errors}.
-
-@strong{Warning:} This variable is strong medicine!  Various parts of
-Emacs handle errors in the normal course of affairs, and you may not
-even realize that errors happen there.  If you set
-@code{debug-on-signal} to a non-@code{nil} value, those errors will
-enter the debugger.
-
-@strong{Warning:} @code{debug-on-signal} has no effect when
-@code{debug-on-error} is @code{nil}.
+If @code{eval-expression-debug-on-error} is @code{nil}, then the value
+of @code{debug-on-error} is not changed during @code{eval-expression}.
 @end defopt
 
+@defvar debug-on-signal
+Normally, errors caught by @code{condition-case} never invoke the
+debugger.  The @code{condition-case} gets a chance to handle the error
+before the debugger gets a chance.
+
+If you change @code{debug-on-signal} to a non-@code{nil} value, the
+debugger gets the first chance at every error, regardless of the
+presence of @code{condition-case}.  (To invoke the debugger, the error
+must still fulfill the criteria specified by @code{debug-on-error} and
+@code{debug-ignored-errors}.)
+
+@strong{Warning:} Setting this variable to non-@code{nil} may have
+annoying effects.  Various parts of Emacs catch errors in the normal
+course of affairs, and you may not even realize that errors happen
+there.  If you need to debug code wrapped in @code{condition-case},
+consider using @code{condition-case-unless-debug} (@pxref{Handling
+Errors}).
+@end defvar
+
 @defopt debug-on-event
 If you set @code{debug-on-event} to a special event (@pxref{Special
 Events}), Emacs will try to enter the debugger as soon as it receives
@@ -171,27 +178,26 @@ init file.
 @cindex stopping an infinite loop
 
   When a program loops infinitely and fails to return, your first
-problem is to stop the loop.  On most operating systems, you can do this
-with @kbd{C-g}, which causes a @dfn{quit}.
+problem is to stop the loop.  On most operating systems, you can do
+this with @kbd{C-g}, which causes a @dfn{quit}.  @xref{Quitting}.
 
   Ordinary quitting gives no information about why the program was
 looping.  To get more information, you can set the variable
-@code{debug-on-quit} to non-@code{nil}.  Quitting with @kbd{C-g} is not
-considered an error, and @code{debug-on-error} has no effect on the
-handling of @kbd{C-g}.  Likewise, @code{debug-on-quit} has no effect on
-errors.
+@code{debug-on-quit} to non-@code{nil}.  Once you have the debugger
+running in the middle of the infinite loop, you can proceed from the
+debugger using the stepping commands.  If you step through the entire
+loop, you may get enough information to solve the problem.
 
-  Once you have the debugger running in the middle of the infinite loop,
-you can proceed from the debugger using the stepping commands.  If you
-step through the entire loop, you will probably get enough information
-to solve the problem.
+  Quitting with @kbd{C-g} is not considered an error, and
+@code{debug-on-error} has no effect on the handling of @kbd{C-g}.
+Likewise, @code{debug-on-quit} has no effect on errors.
 
 @defopt debug-on-quit
-This variable determines whether the debugger is called when @code{quit}
-is signaled and not handled.  If @code{debug-on-quit} is non-@code{nil},
-then the debugger is called whenever you quit (that is, type @kbd{C-g}).
-If @code{debug-on-quit} is @code{nil}, then the debugger is not called
-when you quit.  @xref{Quitting}.
+This variable determines whether the debugger is called when
+@code{quit} is signaled and not handled.  If @code{debug-on-quit} is
+non-@code{nil}, then the debugger is called whenever you quit (that
+is, type @kbd{C-g}).  If @code{debug-on-quit} is @code{nil} (the
+default), then the debugger is not called when you quit.
 @end defopt
 
 @node Function Debugging
@@ -337,8 +343,8 @@ that exiting that frame will call the debugger again.  This is useful
 for examining the return value of a function.
 
   If a function name is underlined, that means the debugger knows
-where its source code is located.  You can click @kbd{Mouse-2} on that
-name, or move to it and type @key{RET}, to visit the source code.
+where its source code is located.  You can click with the mouse on
+that name, or move to it and type @key{RET}, to visit the source code.
 
   The debugger itself must be run byte-compiled, since it makes
 assumptions about how many stack frames are used for the debugger
@@ -364,14 +370,10 @@ to step through a primitive function.
 
 @table @kbd
 @item c
-Exit the debugger and continue execution.  When continuing is possible,
-it resumes execution of the program as if the debugger had never been
-entered (aside from any side-effects that you caused by changing
-variable values or data structures while inside the debugger).
-
-Continuing is possible after entry to the debugger due to function entry
-or exit, explicit invocation, or quitting.  You cannot continue if the
-debugger was entered because of an error.
+Exit the debugger and continue execution.  This resumes execution of
+the program as if the debugger had never been entered (aside from any
+side-effects that you caused by changing variable values or data
+structures while inside the debugger).
 
 @item d
 Continue execution, but enter the debugger the next time any Lisp
@@ -790,29 +792,3 @@ never return.  If it ever does return, you get a run-time error.
   Edebug also has a coverage testing feature (@pxref{Coverage
 Testing}).  These features partly duplicate each other, and it would
 be cleaner to combine them.
-
-@node Compilation Errors
-@section Debugging Problems in Compilation
-@cindex debugging byte compilation problems
-
-  When an error happens during byte compilation, it is normally due to
-invalid syntax in the program you are compiling.  The compiler prints a
-suitable error message in the @samp{*Compile-Log*} buffer, and then
-stops.  The message may state a function name in which the error was
-found, or it may not.  Either way, here is how to find out where in the
-file the error occurred.
-
-  What you should do is switch to the buffer @w{@samp{ *Compiler Input*}}.
-(Note that the buffer name starts with a space, so it does not show
-up in @kbd{M-x list-buffers}.)  This buffer contains the program being
-compiled, and point shows how far the byte compiler was able to read.
-
-  If the error was due to invalid Lisp syntax, point shows exactly where
-the invalid syntax was @emph{detected}.  The cause of the error is not
-necessarily near by!  Use the techniques in the previous section to find
-the error.
-
-  If the error was detected while compiling a form that had been read
-successfully, then point is located at the end of the form.  In this
-case, this technique can't localize the error precisely, but can still
-show you which function to check.
index d5870fd3abb015ca13f601966cdb4da672834c10..ae8a5fde29f895fbd4ccbb389378821b75054e50 100644 (file)
@@ -3380,12 +3380,11 @@ indicator.
 Used for truncation and continuation lines.
 
 @item @code{up}, @code{down}, @code{top}, @code{bottom}, @code{top-bottom}
-Used to indicate buffer boundaries when
-@code{indicate-buffer-boundaries} is non-@code{nil}: @code{up} and
-@code{down} indicate a buffer boundary lying above or below the window
-edge; @code{top} and @code{bottom} indicate the topmost and bottommost
-buffer text line; and @code{top-bottom} indicates where there is just
-one line of text in the buffer.
+Used when @code{indicate-buffer-boundaries} is non-@code{nil}:
+@code{up} and @code{down} indicate a buffer boundary lying above or
+below the window edge; @code{top} and @code{bottom} indicate the
+topmost and bottommost buffer text line; and @code{top-bottom}
+indicates where there is just one line of text in the buffer.
 
 @item @code{empty-line}
 Used to indicate empty lines when @code{indicate-empty-lines} is
@@ -3407,24 +3406,9 @@ are used to indicate that the last text line has no final newline.
 Alternatively, @var{bitmaps} may be a single symbol which is used in
 both left and right fringes.
 
-  The standard symbols for fringe bitmaps are:
-
-@example
-left-arrow right-arrow up-arrow down-arrow
-left-curly-arrow right-curly-arrow
-left-triangle right-triangle
-top-left-angle top-right-angle
-bottom-left-angle bottom-right-angle
-left-bracket right-bracket
-filled-rectangle hollow-rectangle
-filled-square hollow-square
-vertical-bar horizontal-bar
-empty-line question-mark
-@end example
-
-@noindent
-In addition, @code{nil} represents the empty bitmap (i.e.@: an
-indicator that is not shown).
+  @xref{Fringe Bitmaps}, for a list of standard bitmap symbols and how
+to define your own.  In addition, @code{nil} represents the empty
+bitmap (i.e.@: an indicator that is not shown).
 
   When @code{fringe-indicator-alist} has a buffer-local value, and
 there is no bitmap defined for a logical indicator, or the bitmap is
@@ -3442,16 +3426,6 @@ cursor in the right fringe instead of using two lines.  Different
 bitmaps are used to represent the cursor in the fringe depending on
 the current buffer's cursor type.
 
-@table @asis
-@item Logical cursor types:
-@code{box} , @code{hollow}, @code{bar},
-@code{hbar}, @code{hollow-small}.
-@end table
-
-The @code{hollow-small} type is used instead of @code{hollow} when the
-normal @code{hollow-rectangle} bitmap is too tall to fit on a specific
-display line.
-
 @defopt overflow-newline-into-fringe
 If this is non-@code{nil}, lines exactly as wide as the window (not
 counting the final newline character) are not continued.  Instead,
@@ -3462,24 +3436,31 @@ fringe.
 @defvar fringe-cursor-alist
 This variable specifies the mapping from logical cursor type to the
 actual fringe bitmaps displayed in the right fringe.  The value is an
-alist where each element @code{(@var{cursor} . @var{bitmap})} specifies
-the fringe bitmaps used to display a specific logical cursor type in
-the fringe.  Here, @var{cursor} specifies the logical cursor type and
-@var{bitmap} is a symbol specifying the fringe bitmap to be displayed
-for that logical cursor type.
+alist where each element has the form @code{(@var{cursor-type}
+. @var{bitmap})}, which means to use the fringe bitmap @var{bitmap} to
+display cursors of type @var{cursor-type}.
+
+Each @var{cursor-type} should be one of @code{box}, @code{hollow},
+@code{bar}, @code{hbar}, or @code{hollow-small}.  The first four have
+the same meanings as in the @code{cursor-type} frame parameter
+(@pxref{Cursor Parameters}).  The @code{hollow-small} type is used
+instead of @code{hollow} when the normal @code{hollow-rectangle}
+bitmap is too tall to fit on a specific display line.
+
+Each @var{bitmap} should be a symbol specifying the fringe bitmap to
+be displayed for that logical cursor type.
+@iftex
+See the next subsection for details.
+@end iftex
+@ifnottex
+@xref{Fringe Bitmaps}.
+@end ifnottex
 
 When @code{fringe-cursor-alist} has a buffer-local value, and there is
 no bitmap defined for a cursor type, the corresponding value from the
 default value of @code{fringes-indicator-alist} is used.
 @end defvar
 
-Standard bitmaps for displaying the cursor in right fringe:
-@example
-filled-rectangle hollow-rectangle filled-square hollow-square
-vertical-bar horizontal-bar
-@end example
-
-
 @node Fringe Bitmaps
 @subsection Fringe Bitmaps
 @cindex fringe bitmaps
@@ -3487,22 +3468,74 @@ vertical-bar horizontal-bar
 
   The @dfn{fringe bitmaps} are the actual bitmaps which represent the
 logical fringe indicators for truncated or continued lines, buffer
-boundaries, overlay arrow, etc.  Fringe bitmap symbols have their own
-name space.  The fringe bitmaps are shared by all frames and windows.
-You can redefine the built-in fringe bitmaps, and you can define new
-fringe bitmaps.
-
-  The way to display a bitmap in the left or right fringes for a given
-line in a window is by specifying the @code{display} property for one
-of the characters that appears in it.  Use a display specification of
-the form @code{(left-fringe @var{bitmap} [@var{face}])} or
-@code{(right-fringe @var{bitmap} [@var{face}])} (@pxref{Display
-Property}).  Here, @var{bitmap} is a symbol identifying the bitmap you
-want, and @var{face} (which is optional) is the name of the face whose
-colors should be used for displaying the bitmap, instead of the
-default @code{fringe} face.  @var{face} is automatically merged with
-the @code{fringe} face, so normally @var{face} need only specify the
-foreground color for the bitmap.
+boundaries, overlay arrows, etc.  Each bitmap is represented by a
+symbol.
+@iftex
+These symbols are referred to by the variables
+@code{fringe-indicator-alist} and @code{fringe-cursor-alist},
+described in the previous subsections.
+@end iftex
+@ifnottex
+These symbols are referred to by the variable
+@code{fringe-indicator-alist}, which maps fringe indicators to bitmaps
+(@pxref{Fringe Indicators}), and the variable
+@code{fringe-cursor-alist}, which maps fringe cursors to bitmaps
+(@pxref{Fringe Cursors}).
+@end ifnottex
+
+  Lisp programs can also directly display a bitmap in the left or
+right fringe, by using a @code{display} property for one of the
+characters appearing in the line (@pxref{Other Display Specs}).  Such
+a display specification has the form
+
+@example
+(left-fringe @var{bitmap} [@var{face}])
+@end example
+
+@noindent
+or
+
+@example
+(right-fringe @var{bitmap} [@var{face}])
+@end example
+
+@noindent
+The symbol @var{bitmap} identifies the bitmap to display.  The
+optional @var{face} names a face whose foreground color is used to
+display the bitmap; this face is automatically merged with the
+@code{fringe} face.
+
+  Here is a list of the standard fringe bitmaps defined in Emacs, and
+how they are currently used in Emacs (via
+@code{fringe-indicator-alist} and @code{fringe-cursor-alist}):
+
+@table @asis
+@item @code{left-arrow}, @code{right-arrow}
+Used to indicate truncated lines.
+
+@item @code{left-curly-arrow}, @code{right-curly-arrow}
+Used to indicate continued lines.
+
+@item @code{right-triangle}, @code{left-triangle}
+The former is used by overlay arrows.  The latter is unused.
+
+@item @code{up-arrow}, @code{down-arrow}, @code{top-left-angle} @code{top-right-angle}
+@itemx @code{bottom-left-angle}, @code{bottom-right-angle}
+@itemx @code{top-right-angle}, @code{top-left-angle}
+@itemx @code{left-bracket}, @code{right-bracket}, @code{top-right-angle}, @code{top-left-angle}
+Used to indicate buffer boundaries.
+
+@item @code{filled-rectangle}, @code{hollow-rectangle}
+@itemx @code{filled-square}, @code{hollow-square}
+@itemx @code{vertical-bar}, @code{horizontal-bar}
+Used for different types of fringe cursors.
+
+@item @code{empty-line}, @code{question-mark}
+Unused.
+@end table
+
+@noindent
+The next subsection describes how to define your own fringe bitmaps.
 
 @defun fringe-bitmaps-at-pos &optional pos window
 This function returns the fringe bitmaps of the display line
index a925f3865a4675042da3ee4071d3d575b493c3c4..05245331af26dfcc542e370649260f23eea073e8 100644 (file)
@@ -552,12 +552,10 @@ Advising Emacs Lisp Functions
 
 Debugging Lisp Programs
 
-* Debugger::                How the Emacs Lisp debugger is implemented.
+* Debugger::                A debugger for the Emacs Lisp evaluator.
 * Edebug::                  A source-level Emacs Lisp debugger.
 * Syntax Errors::           How to find syntax errors.
 * Test Coverage::           Ensuring you have tested all branches in your code.
-* Compilation Errors::      How to find errors that show up in
-                              byte compilation.
 
 The Lisp Debugger
 
@@ -656,6 +654,7 @@ Completion
                               shell commands.
 * Completion Styles::       Specifying rules for performing completion.
 * Programmed Completion::   Writing your own completion-function.
+* Completion in Buffers::   Completing text in ordinary buffers.
 
 Command Loop
 
@@ -765,6 +764,7 @@ Major and Minor Modes
 * Mode Line Format::   Customizing the text that appears in the mode line.
 * Imenu::              Providing a menu of definitions made in a buffer.
 * Font Lock Mode::     How modes can highlight text according to syntax.
+* Auto-Indentation::   How to teach Emacs to indent for a major mode.
 * Desktop Save Mode::  How modes can have buffer state saved between
                          Emacs sessions.
 
@@ -781,9 +781,10 @@ Major Modes
 * Derived Modes::           Defining a new major mode based on another major
                               mode.
 * Basic Major Modes::       Modes that other modes are often derived from.
+* Mode Hooks::              Hooks run at the end of major mode functions.
+* Tabulated List Mode::     Parent mode for buffers containing tabulated data.
 * Generic Modes::           Defining a simple major mode that supports
                               comment syntax and Font Lock mode.
-* Mode Hooks::              Hooks run at the end of major mode functions.
 * Example Major Modes::     Text mode and Lisp modes.
 
 Minor Modes
@@ -815,8 +816,6 @@ Font Lock Mode
                                   contents can also specify how to fontify it.
 * Faces for Font Lock::     Special faces specifically for Font Lock.
 * Syntactic Font Lock::     Fontification based on syntax tables.
-* Setting Syntax Properties::   Defining character syntax based on context
-                                  using the Font Lock mechanism.
 * Multiline Font Lock::     How to coerce Font Lock into properly
                               highlighting multiline constructs.
 
@@ -828,8 +827,7 @@ Multiline Font Lock Constructs
 
 Documentation
 
-* Documentation Basics::    Good style for doc strings.
-                              Where to put them.  How Emacs stores them.
+* Documentation Basics::    Where doc strings are defined and stored.
 * Accessing Documentation:: How Lisp programs can access doc strings.
 * Keys in Documentation::   Substituting current key bindings.
 * Describing Characters::   Making printable descriptions of
@@ -845,12 +843,11 @@ Files
 * File Locks::              Locking and unlocking files, to prevent
                               simultaneous editing by two people.
 * Information about Files:: Testing existence, accessibility, size of files.
-* Changing Files::          Renaming files, changing protection, etc.
+* Changing Files::          Renaming files, changing permissions, etc.
 * File Names::              Decomposing and expanding file names.
 * Contents of Directories:: Getting a list of the files in a directory.
 * Create/Delete Dirs::      Creating and Deleting Directories.
-* Magic File Names::        Defining "magic" special handling
-                              for certain file names.
+* Magic File Names::        Special handling for certain file names.
 * Format Conversion::       Conversion to and from various file formats.
 
 Visiting Files
index 56ff3636750cec758392ec099b44ac9d55531f94..fcf4ec24af7d5cbac8706ed6ffbfc9578012b128 100644 (file)
@@ -1,6 +1,6 @@
 @c -*-texinfo-*-
 @c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 1990-1993, 1999, 2001-2012  Free Software Foundation, Inc.
+@c Copyright (C) 1990-1993, 1999, 2001-2012 Free Software Foundation, Inc.
 @c See the file elisp.texi for copying conditions.
 @setfilename ../../info/errors
 @node Standard Errors, Standard Buffer-Local Variables, GNU Emacs Internals, Top
@@ -54,6 +54,11 @@ sequence or buffer.@*
 @code{"Buffer is read-only"}@*
 @xref{Read Only Buffers}.
 
+@ignore
+@item circular-list
+@code{"List contains a loop"}@*
+@end ignore
+
 @item coding-system-error
 @code{"Invalid coding system"}@*
 @xref{Lisp and Coding Systems}.
@@ -66,6 +71,11 @@ sequence or buffer.@*
 @code{"Symbol's chain of variable indirections contains a loop"}@*
 @xref{Variable Aliases}.
 
+@item dbus-error
+@code{"D-Bus error"}@*
+This is only defined if Emacs was compiled with D-Bus support.@*
+@xref{Errors and Events,,, dbus, D-Bus integration in Emacs}.
+
 @item end-of-buffer
 @code{"End of buffer"}@*
 @xref{Character Motion}.
@@ -128,6 +138,11 @@ in accessing a remote file using ftp.@*
 @code{"No catch for tag"}@*
 @xref{Catch and Throw}.
 
+@ignore
+@item protected-field
+@code{"Attempt to modify a protected field"}
+@end ignore
+
 @item scan-error
 @code{"Scan error"}@*
 This happens when certain syntax-parsing functions
@@ -171,31 +186,26 @@ This is a subcategory of @code{buffer-read-only}.@*
 @xref{Type Predicates}.
 @end table
 
-  These kinds of error, which are classified as special cases of
+  The following kinds of error, which are classified as special cases of
 @code{arith-error}, can occur on certain systems for invalid use of
-mathematical functions.
+mathematical functions.  @xref{Math Functions}.
 
 @table @code
 @item domain-error
-@code{"Arithmetic domain error"}@*
-@xref{Math Functions}.
+@code{"Arithmetic domain error"}
 
 @item overflow-error
 @code{"Arithmetic overflow error"}@*
-This is a subcategory of @code{domain-error}.@*
-@xref{Math Functions}.
+This is a subcategory of @code{domain-error}.
 
 @item range-error
-@code{"Arithmetic range error"}@*
-@xref{Math Functions}.
+@code{"Arithmetic range error"}
 
 @item singularity-error
 @code{"Arithmetic singularity error"}@*
-This is a subcategory of @code{domain-error}.@*
-@xref{Math Functions}.
+This is a subcategory of @code{domain-error}.
 
 @item underflow-error
 @code{"Arithmetic underflow error"}@*
-This is a subcategory of @code{domain-error}.@*
-@xref{Math Functions}.
+This is a subcategory of @code{domain-error}.
 @end table
index cf093ba36cb2905face185a57b5f5879fe240556..69e0003a46b8626632dffe37aea68feaa65189d0 100644 (file)
@@ -8,9 +8,9 @@
 @comment  node-name,  next,  previous,  up
 @chapter Files
 
-  In Emacs, you can find, create, view, save, and otherwise work with
-files and file directories.  This chapter describes most of the
-file-related functions of Emacs Lisp, but a few others are described in
+  This chapter describes the Emacs Lisp functions and variables to
+find, create, view, save, and otherwise work with files and file
+directories.  A few other file-related functions are described in
 @ref{Buffers}, and those related to backups and auto-saving are
 described in @ref{Backups and Auto-Saving}.
 
@@ -18,8 +18,15 @@ described in @ref{Backups and Auto-Saving}.
 names.  A file name is actually a string.  Most of these functions
 expand file name arguments by calling @code{expand-file-name}, so that
 @file{~} is handled correctly, as are relative file names (including
-@samp{../}).  These functions don't recognize environment variable
-substitutions such as @samp{$HOME}.  @xref{File Name Expansion}.
+@samp{../}).  @xref{File Name Expansion}.
+
+  In addition, certain @dfn{magic} file names are handled specially.
+For example, when a remote file name is specified, Emacs accesses the
+file over the network via an appropriate protocol (@pxref{Remote
+Files,, Remote Files, emacs, The GNU Emacs Manual}).  This handling is
+done at a very low level, so you may assume that all the functions
+described in this chapter accept magic file names as file name
+arguments, except where noted.  @xref{Magic File Names}, for details.
 
   When file I/O functions signal Lisp errors, they usually use the
 condition @code{file-error} (@pxref{Handling Errors}).  The error
@@ -35,12 +42,11 @@ to locale @code{system-message-locale}, and decoded using coding system
 * File Locks::               Locking and unlocking files, to prevent
                                simultaneous editing by two people.
 * Information about Files::  Testing existence, accessibility, size of files.
-* Changing Files::           Renaming files, changing protection, etc.
+* Changing Files::           Renaming files, changing permissions, etc.
 * File Names::               Decomposing and expanding file names.
 * Contents of Directories::  Getting a list of the files in a directory.
 * Create/Delete Dirs::       Creating and Deleting Directories.
-* Magic File Names::         Defining "magic" special handling
-                               for certain file names.
+* Magic File Names::         Special handling for certain file names.
 * Format Conversion::        Conversion to and from various file formats.
 @end menu
 
@@ -513,17 +519,15 @@ current buffer after point.  It returns a list of the absolute file name
 and the length of the data inserted.  An error is signaled if
 @var{filename} is not the name of a file that can be read.
 
-The function @code{insert-file-contents} checks the file contents
-against the defined file formats, and converts the file contents if
-appropriate and also calls the functions in
-the list @code{after-insert-file-functions}.  @xref{Format Conversion}.
-Normally, one of the functions in the
+This function checks the file contents against the defined file
+formats, and converts the file contents if appropriate and also calls
+the functions in the list @code{after-insert-file-functions}.
+@xref{Format Conversion}.  Normally, one of the functions in the
 @code{after-insert-file-functions} list determines the coding system
 (@pxref{Coding Systems}) used for decoding the file's contents,
 including end-of-line conversion.  However, if the file contains null
-bytes, it is by default visited without any code conversions; see
-@ref{Lisp and Coding Systems, inhibit-null-byte-detection}, for how to
-control this behavior.
+bytes, it is by default visited without any code conversions.
+@xref{Lisp and Coding Systems, inhibit-null-byte-detection}.
 
 If @var{visit} is non-@code{nil}, this function additionally marks the
 buffer as unmodified and sets up various fields in the buffer so that it
@@ -554,11 +558,9 @@ with @code{insert-file-contents}, as long as @var{replace} and
 @end defun
 
 @defun insert-file-contents-literally filename &optional visit beg end replace
-This function works like @code{insert-file-contents} except that it does
-not do format decoding (@pxref{Format Conversion}), does not do
-character code conversion (@pxref{Coding Systems}), does not run
-@code{find-file-hook}, does not perform automatic uncompression, and so
-on.
+This function works like @code{insert-file-contents} except that it
+does not run @code{find-file-hook}, and does not do format decoding,
+character code conversion, automatic uncompression, and so on.
 @end defun
 
 If you want to pass a file name to another process so that another
@@ -796,7 +798,7 @@ This function returns @code{t} if a file named @var{filename} appears
 to exist.  This does not mean you can necessarily read the file, only
 that you can find out its attributes.  (On Unix and GNU/Linux, this is
 true if the file exists and you have execute permission on the
-containing directories, regardless of the protection of the file
+containing directories, regardless of the permissions of the file
 itself.)
 
 If the file does not exist, or if fascist access control policies
@@ -1020,7 +1022,6 @@ other I/O device).
 @subsection Truenames
 @cindex truename (of file)
 
-@c Emacs 19 features
   The @dfn{truename} of a file is the name that you get by following
 symbolic links at all levels until none remain, then simplifying away
 @samp{.}@: and @samp{..}@: appearing as name components.  This results
@@ -1030,9 +1031,9 @@ the number of hard links to the file.  However, truenames are useful
 because they eliminate symbolic links as a cause of name variation.
 
 @defun file-truename filename
-The function @code{file-truename} returns the truename of the file
-@var{filename}.  If the argument is not an absolute file name,
-this function first expands it against @code{default-directory}.
+This function returns the truename of the file @var{filename}.  If the
+argument is not an absolute file name, this function first expands it
+against @code{default-directory}.
 
 This function does not expand environment variables.  Only
 @code{substitute-in-file-name} does that.  @xref{Definition of
@@ -1081,28 +1082,29 @@ we would have:
 @comment  node-name,  next,  previous,  up
 @subsection Other Information about Files
 
-  This section describes the functions for getting detailed information
-about a file, other than its contents.  This information includes the
-mode bits that control access permission, the owner and group numbers,
-the number of names, the inode number, the size, and the times of access
-and modification.
+  This section describes the functions for getting detailed
+information about a file, other than its contents.  This information
+includes the mode bits that control access permissions, the owner and
+group numbers, the number of names, the inode number, the size, and
+the times of access and modification.
 
 @defun file-modes filename
-@cindex permission
+@cindex file permissions
+@cindex permissions, file
 @cindex file attributes
-This function returns the mode bits of @var{filename}, as an integer.
-The mode bits are also called the file permissions, and they specify
-access control in the usual Unix fashion.  If the low-order bit is 1,
-then the file is executable by all users, if the second-lowest-order bit
-is 1, then the file is writable by all users, etc.
-
-The highest value returnable is 4095 (7777 octal), meaning that
-everyone has read, write, and execute permission, that the @acronym{SUID} bit
-is set for both others and group, and that the sticky bit is set.
-
-If @var{filename} does not exist, @code{file-modes} returns @code{nil}.
-
-This function recursively follows symbolic links at all levels.
+@cindex file modes
+This function returns the @dfn{mode bits} describing the @dfn{file
+permissions} of @var{filename}, as an integer.  It recursively follows
+symbolic links in @var{filename} at all levels.  If @var{filename}
+does not exist, the return value is @code{nil}.
+
+@xref{File Permissions,,, coreutils, The @sc{gnu} @code{Coreutils}
+Manual}, for a description of mode bits.  If the low-order bit is 1,
+then the file is executable by all users, if the second-lowest-order
+bit is 1, then the file is writable by all users, etc.  The highest
+value returnable is 4095 (7777 octal), meaning that everyone has read,
+write, and execute permission, that the @acronym{SUID} bit is set for
+both others and group, and that the sticky bit is set.
 
 @example
 @group
@@ -1124,12 +1126,15 @@ This function recursively follows symbolic links at all levels.
   -rw-rw-rw-  1 lewis 0 3063 Oct 30 16:00 diffs
 @end group
 @end example
+
+@xref{Changing Files}, for functions that change file permissions,
+such as @code{set-file-modes}.
 @end defun
 
-If the @var{filename} argument to the next two functions is a symbolic
-link, then these function do @emph{not} replace it with its target.
-However, they both recursively follow symbolic links at all levels of
-parent directories.
+  If the @var{filename} argument to the next two functions is a
+symbolic link, then these function do @emph{not} replace it with its
+target.  However, they both recursively follow symbolic links at all
+levels of parent directories.
 
 @defun file-nlinks filename
 This functions returns the number of names (i.e., hard links) that
@@ -1316,20 +1321,16 @@ reported with executable bit set, for compatibility with Unix.
 @cindex find file in path
 
   This section explains how to search for a file in a list of
-directories (a @dfn{path}).  One example is when you need to look for
-a program's executable file, e.g., to find out whether a given program
-is installed on the user's system.  Another example is the search for
-Lisp libraries (@pxref{Library Search}).  Such searches generally need
-to try various possible file name extensions, in addition to various
-possible directories.  Emacs provides a function for such a
-generalized search for a file.
+directories (a @dfn{path}), or for an executable file in the standard
+list of executable file directories, or for an Emacs-specific user
+configuration file.
 
 @defun locate-file filename path &optional suffixes predicate
 This function searches for a file whose name is @var{filename} in a
 list of directories given by @var{path}, trying the suffixes in
-@var{suffixes}.  If it finds such a file, it returns the full
-@dfn{absolute file name} of the file (@pxref{Relative File Names});
-otherwise it returns @code{nil}.
+@var{suffixes}.  If it finds such a file, it returns the file's
+absolute file name (@pxref{Relative File Names}); otherwise it returns
+@code{nil}.
 
 The optional argument @var{suffixes} gives the list of file-name
 suffixes to append to @var{filename} when searching.
@@ -1337,24 +1338,23 @@ suffixes to append to @var{filename} when searching.
 suffixes.  If @var{suffixes} is @code{nil}, or @code{("")}, then there
 are no suffixes, and @var{filename} is used only as-is.  Typical
 values of @var{suffixes} are @code{exec-suffixes} (@pxref{Subprocess
-Creation, exec-suffixes}), @code{load-suffixes},
-@code{load-file-rep-suffixes} and the return value of the function
-@code{get-load-suffixes} (@pxref{Load Suffixes}).
+Creation}), @code{load-suffixes}, @code{load-file-rep-suffixes} and
+the return value of the function @code{get-load-suffixes} (@pxref{Load
+Suffixes}).
 
 Typical values for @var{path} are @code{exec-path} (@pxref{Subprocess
-Creation, exec-path}) when looking for executable programs or
-@code{load-path} (@pxref{Library Search, load-path}) when looking for
-Lisp files.  If @var{filename} is absolute, @var{path} has no effect,
-but the suffixes in @var{suffixes} are still tried.
-
-The optional argument @var{predicate}, if non-@code{nil}, specifies
-the predicate function to use for testing whether a candidate file is
-suitable.  The predicate function is passed the candidate file name as
-its single argument.  If @var{predicate} is @code{nil} or unspecified,
-@code{locate-file} uses @code{file-readable-p} as the default
-predicate.  Useful non-default predicates include
-@code{file-executable-p}, @code{file-directory-p}, and other
-predicates described in @ref{Kinds of Files}.
+Creation}) when looking for executable programs, or @code{load-path}
+(@pxref{Library Search}) when looking for Lisp files.  If
+@var{filename} is absolute, @var{path} has no effect, but the suffixes
+in @var{suffixes} are still tried.
+
+The optional argument @var{predicate}, if non-@code{nil}, specifies a
+predicate function for testing whether a candidate file is suitable.
+The predicate is passed the candidate file name as its single
+argument.  If @var{predicate} is @code{nil} or omitted,
+@code{locate-file} uses @code{file-readable-p} as the predicate.
+@xref{Kinds of Files}, for other useful predicates, e.g.@:
+@code{file-executable-p} and @code{file-directory-p}.
 
 For compatibility, @var{predicate} can also be one of the symbols
 @code{executable}, @code{readable}, @code{writable}, @code{exists}, or
@@ -1363,11 +1363,37 @@ a list of one or more of these symbols.
 
 @defun executable-find program
 This function searches for the executable file of the named
-@var{program} and returns the full absolute name of the executable,
+@var{program} and returns the absolute file name of the executable,
 including its file-name extensions, if any.  It returns @code{nil} if
 the file is not found.  The functions searches in all the directories
-in @code{exec-path} and tries all the file-name extensions in
-@code{exec-suffixes}.
+in @code{exec-path}, and tries all the file-name extensions in
+@code{exec-suffixes} (@pxref{Subprocess Creation}).
+@end defun
+
+@defun locate-user-emacs-file base-name &optional old-name
+This function returns an absolute file name for an Emacs-specific
+configuration or data file.  The argument @file{base-name} should be a
+relative file name.  The return value is the absolute name of a file
+in the directory specified by @code{user-emacs-directory}; if that
+directory does not exist, this function creates it.
+
+If the optional argument @var{old-name} is non-@code{nil}, it
+specifies a file in the user's home directory,
+@file{~/@var{old-name}}.  If such a file exists, the return value is
+the absolute name of that file, instead of the file specified by
+@var{base-name}.  This argument is intended to be used by Emacs
+packages to provide backward compatibility.  For instance, prior to
+the introduction of @code{user-emacs-directory}, the abbrev file was
+located in @file{~/.abbrev_defs}, so the definition of
+@code{abbrev-file-name} is
+
+@example
+(defcustom abbrev-file-name
+  (locate-user-emacs-file "abbrev_defs" ".abbrev_defs")
+  "Default name of file from which to read abbrevs."
+  @dots{}
+  :type 'file)
+@end example
 @end defun
 
 @node Changing Files
@@ -1378,8 +1404,8 @@ in @code{exec-path} and tries all the file-name extensions in
 @cindex linking files
 @cindex setting modes of files
 
-  The functions in this section rename, copy, delete, link, and set the
-modes of files.
+  The functions in this section rename, copy, delete, link, and set
+the modes (permissions) of files.
 
   In the functions that have an argument @var{newname}, if a file by the
 name of @var{newname} already exists, the actions taken depend on the
@@ -1548,54 +1574,67 @@ no prefix argument is given, and @code{nil} otherwise.
 See also @code{delete-directory} in @ref{Create/Delete Dirs}.
 @end deffn
 
+@cindex file permissions, setting
+@cindex permissions, file
+@cindex file modes, setting
 @deffn Command set-file-modes filename mode
-This function sets mode bits of @var{filename} to @var{mode} (which
-must be an integer when the function is called non-interactively).
-Only the low 12 bits of @var{mode} are used.
+This function sets the @dfn{file mode} (or @dfn{file permissions}) of
+@var{filename} to @var{mode}.  It recursively follows symbolic links
+at all levels for @var{filename}.
+
+If called non-interactively, @var{mode} must be an integer.  Only the
+lowest 12 bits of the integer are used; on most systems, only the
+lowest 9 bits are meaningful.  You can use the Lisp construct for
+octal numbers to enter @var{mode}.  For example,
+
+@example
+(set-file-modes #o644)
+@end example
+
+@noindent
+specifies that the file should be readable and writable for its owner,
+readable for group members, and readable for all other users.
+@xref{File Permissions,,, coreutils, The @sc{gnu} @code{Coreutils}
+Manual}, for a description of mode bit specifications.
 
 Interactively, @var{mode} is read from the minibuffer using
-@code{read-file-modes}, which accepts mode bits either as a number or
-as a character string representing the mode bits symbolically.  See
-the description of @code{read-file-modes} below for the supported
-forms of symbolic notation for mode bits.
+@code{read-file-modes} (see below), which lets the user type in either
+an integer or a string representing the permissions symbolically.
 
-This function recursively follows symbolic links at all levels for
-@var{filename}.
+@xref{File Attributes}, for the function @code{file-modes}, which
+returns the permissions of a file.
 @end deffn
 
-@c Emacs 19 feature
 @defun set-default-file-modes mode
 @cindex umask
-This function sets the default file protection for new files created by
-Emacs and its subprocesses.  Every file created with Emacs initially has
-this protection, or a subset of it (@code{write-region} will not give a
-file execute permission even if the default file protection allows
-execute permission).  On Unix and GNU/Linux, the default protection is
-the bitwise complement of the ``umask'' value.
-
-The argument @var{mode} must be an integer.  On most systems, only the
-low 9 bits of @var{mode} are meaningful.  You can use the Lisp construct
-for octal numbers to enter @var{mode}; for example,
-
-@example
-(set-default-file-modes #o644)
-@end example
-
-Saving a modified version of an existing file does not count as creating
-the file; it preserves the existing file's mode, whatever that is.  So
-the default file protection has no effect.
+This function sets the default file permissions for new files created
+by 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.
+
+The argument @var{mode} should be an integer which specifies the
+permissions, similar to @code{set-file-modes} above.  Only the lowest
+9 bits are meaningful.
+
+The default file permissions have no effect when you save a modified
+version of an existing file; saving a file preserves its existing
+permissions.
 @end defun
 
 @defun default-file-modes
-This function returns the current default protection value.
+This function returns the default file permissions, as an integer.
 @end defun
 
 @defun read-file-modes &optional prompt base-file
-This function reads file mode bits from the minibuffer.  The optional
-argument @var{prompt} specifies a non-default prompt.  Second optional
-argument @var{base-file} is the name of a file on whose permissions to
-base the mode bits that this function returns, if what the user types
-specifies mode bits relative to permissions of an existing file.
+This function reads a set of file mode bits from the minibuffer.  The
+first optional argument @var{prompt} specifies a non-default prompt.
+Second second optional argument @var{base-file} is the name of a file
+on whose permissions to base the mode bits that this function returns,
+if what the user types specifies mode bits relative to permissions of
+an existing file.
 
 If user input represents an octal number, this function returns that
 number.  If it is a complete symbolic specification of mode bits, as
@@ -1607,16 +1646,16 @@ mode bits of @var{base-file}.  If @var{base-file} is omitted or
 @code{nil}, the function uses @code{0} as the base mode bits.  The
 complete and relative specifications can be combined, as in
 @code{"u+r,g+rx,o+r,g-w"}.  @xref{File Permissions,,, coreutils, The
-@sc{gnu} @code{Coreutils} Manual}, for detailed description of
-symbolic mode bits specifications.
+@sc{gnu} @code{Coreutils} Manual}, for a description of file mode
+specifications.
 @end defun
 
 @defun file-modes-symbolic-to-number modes &optional base-modes
-This subroutine converts a symbolic specification of file mode bits in
-@var{modes} into the equivalent numeric value.  If the symbolic
+This function converts a symbolic file mode specification in
+@var{modes} into the equivalent integer value.  If the symbolic
 specification is based on an existing file, that file's mode bits are
 taken from the optional argument @var{base-modes}; if that argument is
-omitted or @code{nil}, it defaults to zero, i.e.@: no access rights at
+omitted or @code{nil}, it defaults to 0, i.e.@: no access rights at
 all.
 @end defun
 
@@ -2175,25 +2214,6 @@ programs use @code{small-temporary-file-directory} instead, if that is
 non-@code{nil}.  To use it, you should expand the prefix against
 the proper directory before calling @code{make-temp-file}.
 
-  In older Emacs versions where @code{make-temp-file} does not exist,
-you should use @code{make-temp-name} instead:
-
-@example
-(make-temp-name
- (expand-file-name @var{name-of-application}
-                   temporary-file-directory))
-@end example
-
-@defun make-temp-name string
-This function generates a string that can be used as a unique file
-name.  The name starts with @var{string}, and has several random
-characters appended to it, which are different in each Emacs job.  It
-is like @code{make-temp-file} except that it just constructs a name,
-and does not create a file.  Another difference is that @var{string}
-should be an absolute file name.  On MS-DOS, this function can
-truncate the @var{string} prefix to fit into the 8+3 file-name limits.
-@end defun
-
 @defopt temporary-file-directory
 @cindex @code{TMPDIR} environment variable
 @cindex @code{TMP} environment variable
@@ -2231,6 +2251,21 @@ should compute the directory like this:
 @end example
 @end defopt
 
+@defun make-temp-name base-name
+This function generates a string that can be used as a unique file
+name.  The name starts with @var{base-name}, and has several random
+characters appended to it, which are different in each Emacs job.  It
+is like @code{make-temp-file} except that (i) it just constructs a
+name, and does not create a file, and (ii) @var{base-name} should be
+an absolute file name (on MS-DOS, this function can truncate
+@var{base-name} to fit into the 8+3 file-name limits).
+
+@strong{Warning:} In most cases, you should not use this function; use
+@code{make-temp-file} instead!  This function is susceptible to a race
+condition, between the @code{make-temp-name} call and the creation of
+the file, which in some cases may cause a security hole.
+@end defun
+
 @node File Name Completion
 @subsection File Name Completion
 @cindex file name completion subroutines
@@ -2555,7 +2590,6 @@ no prefix argument is given, and @code{nil} otherwise.
 @section Making Certain File Names ``Magic''
 @cindex magic file names
 
-@c Emacs 19 feature
   You can implement special handling for certain file names.  This is
 called making those names @dfn{magic}.  The principal use for this
 feature is in implementing remote file names (@pxref{Remote Files,,
@@ -2564,7 +2598,7 @@ Remote Files, emacs, The GNU Emacs Manual}).
   To define a kind of magic file name, you must supply a regular
 expression to define the class of names (all those that match the
 regular expression), plus a handler that implements all the primitive
-Emacs file operations for file names that do match.
+Emacs file operations for file names that match.
 
 @vindex file-name-handler-alist
   The variable @code{file-name-handler-alist} holds a list of handlers,
index f6556639e98eb5e749769f544524d937ce5c58ca..a98797f361855d92d637da7a3eab0c67806705f1 100644 (file)
@@ -8,11 +8,11 @@
 @chapter Documentation
 @cindex documentation strings
 
-  GNU Emacs Lisp has convenient on-line help facilities, most of which
-derive their information from the documentation strings associated with
-functions and variables.  This chapter describes how to write good
-documentation strings for your Lisp programs, as well as how to write
-programs to access documentation.
+  GNU Emacs has convenient built-in help facilities, most of which
+derive their information from documentation strings associated with
+functions and variables.  This chapter describes how to access
+documentation strings in Lisp programs.  @xref{Documentation Tips},
+for how to write good documentation strings.
 
   Note that the documentation strings for Emacs are not the same thing
 as the Emacs manual.  Manuals have their own source files, written in
@@ -23,12 +23,10 @@ manual is not organized in that fashion; it is organized in terms of
 topics of discussion.
 
   For commands to display documentation strings, see @ref{Help, ,
-Help, emacs, The GNU Emacs Manual}.  For the conventions for writing
-documentation strings, see @ref{Documentation Tips}.
+Help, emacs, The GNU Emacs Manual}.
 
 @menu
-* Documentation Basics::      Good style for doc strings.
-                                Where to put them.  How Emacs stores them.
+* Documentation Basics::      Where doc strings are defined and stored.
 * Accessing Documentation::   How Lisp programs can access doc strings.
 * Keys in Documentation::     Substituting current key bindings.
 * Describing Characters::     Making printable descriptions of
@@ -52,14 +50,15 @@ string follows the argument list.  In a variable definition, the
 documentation string follows the initial value of the variable.
 
   When you write a documentation string, make the first line a
-complete sentence (or two complete sentences) since some commands,
-such as @code{apropos}, show only the first line of a multi-line
-documentation string.  Also, you should not indent the second line of
-a documentation string, if it has one, because that looks odd when you
+complete sentence (or two complete sentences) that briefly describes
+what the function or variable does.  Some commands, such as
+@code{apropos}, show only the first line of a multi-line documentation
+string.  Also, you should not indent the second line of a
+documentation string, if it has one, because that looks odd when you
 use @kbd{C-h f} (@code{describe-function}) or @kbd{C-h v}
 (@code{describe-variable}) to view the documentation string.  There
-are many other conventions for doc strings; see @ref{Documentation
-Tips}.
+are many other conventions for documentation strings; see
+@ref{Documentation Tips}.
 
   Documentation strings can contain several special substrings, which
 stand for key bindings to be looked up in the current keymaps when the
@@ -71,55 +70,67 @@ rearranges the key bindings.  (@xref{Keys in Documentation}.)
   Emacs Lisp mode fills documentation strings to the width
 specified by @code{emacs-lisp-docstring-fill-column}.
 
-  In Emacs Lisp, a documentation string is accessible through the
-function or variable that it describes:
+  Exactly where a documentation string is stored depends on how its
+function or variable was defined or loaded into memory:
 
 @itemize @bullet
 @item
 @kindex function-documentation
-The documentation for a function is usually stored in the function
-definition itself (@pxref{Lambda Expressions} and @pxref{Function
-Documentation}).  The function @code{documentation} knows how to
-extract it.  You can also put function documentation in the
-@code{function-documentation} property of the function name.  That is
-useful with definitions such as keyboard macros that can't hold a
-documentation string.
+When you define a function (@pxref{Lambda Expressions}, and
+@pxref{Function Documentation}), the documentation string is stored in
+the function definition itself.  You can also put function
+documentation in the @code{function-documentation} property of a
+function name.  That is useful for function definitions which can't
+hold a documentation string, such as keyboard macros.
 
 @item
 @kindex variable-documentation
-The documentation for a variable is stored in the variable's property
-list under the property name @code{variable-documentation}.  The
-function @code{documentation-property} knows how to retrieve it.
-@end itemize
+When you define a variable with a @code{defvar} or related form
+(@pxref{Defining Variables}), the documentation is stored in the
+variable's @code{variable-documentation} property.
 
 @cindex @file{DOC-@var{version}} (documentation) file
-To save space, the documentation for preloaded functions and variables
-(including primitive functions and autoloaded functions) is stored in
-the file @file{emacs/etc/DOC-@var{version}}---not inside Emacs.  The
-documentation strings for functions and variables loaded during the
-Emacs session from byte-compiled files are stored in those files
-(@pxref{Docs and Compilation}).
-
-The data structure inside Emacs has an integer offset into the file, or
-a list containing a file name and an integer, in place of the
-documentation string.  The functions @code{documentation} and
-@code{documentation-property} use that information to fetch the
-documentation string from the appropriate file; this is transparent to
-the user.
+@item
+To save memory, the documentation for preloaded functions and
+variables (including primitive functions and autoloaded functions) is
+not kept in memory, but in the file
+@file{emacs/etc/DOC-@var{version}}, where @var{version} is the Emacs
+version number (@pxref{Version Info}).
+
+@item
+When a function or variable is loaded from a byte-compiled file during
+the Emacs session, its documentation string is not loaded into memory.
+Instead, Emacs looks it up in the byte-compiled file as needed.
+@xref{Docs and Compilation}.
+@end itemize
+
+@noindent
+Regardless of where the documentation string is stored, you can
+retrieve it using the @code{documentation} or
+@code{documentation-property} function, described in the next section.
 
 @node Accessing Documentation
 @section Access to Documentation Strings
 
 @defun documentation-property symbol property &optional verbatim
-This function returns the documentation string that is recorded in
-@var{symbol}'s property list under property @var{property}.  It
-retrieves the text from a file if the value calls for that.  If the
-property value isn't @code{nil}, isn't a string, and doesn't refer to
-text in a file, then it is evaluated to obtain a string.
+This function returns the documentation string recorded in
+@var{symbol}'s property list under property @var{property}.  It is
+most often used to look up the documentation strings of variables, for
+which @var{property} is @code{variable-documentation}.  However, it
+can also be used to look up other kinds of documentation, such as for
+customization groups (but for function documentation, use the
+@code{documentation} command, below).
+
+If the value recorded in the property list refers to a documentation
+string stored in a @file{DOC-@var{version}} file or a byte-compiled
+file, it looks up that string and returns it.  If the property value
+isn't @code{nil}, isn't a string, and doesn't refer to text in a file,
+then it is evaluated as a Lisp expression to obtain a string.
 
 The last thing this function does is pass the string through
-@code{substitute-command-keys} to substitute actual key bindings,
-unless @var{verbatim} is non-@code{nil}.
+@code{substitute-command-keys} to substitute actual key bindings
+(@pxref{Keys in Documentation}).  However, it skips this step if
+@var{verbatim} is non-@code{nil}.
 
 @smallexample
 @group
@@ -270,13 +281,13 @@ When the `track-eol' feature is doing its job, the value is 9999.
 @end group
 @end smallexample
 
-@defun Snarf-documentation filename
 @anchor{Definition of Snarf-documentation}
-This function is used only during Emacs initialization, just before
-the runnable Emacs is dumped.  It finds the file offsets of the
-documentation strings stored in the file @var{filename}, and records
-them in the in-core function definitions and variable property lists in
-place of the actual strings.  @xref{Building Emacs}.
+@defun Snarf-documentation filename
+This function is used when building Emacs, just before the runnable
+Emacs is dumped.  It finds the positions of the documentation strings
+stored in the file @var{filename}, and records those positions into
+memory in the function definitions and variable property lists.
+@xref{Building Emacs}.
 
 Emacs reads the file @var{filename} from the @file{emacs/etc} directory.
 When the dumped Emacs is later executed, the same file will be looked
@@ -515,13 +526,14 @@ definition as a function, variable, or face, or has properties.
 The function returns a list of elements that look like this:
 
 @example
-(@var{symbol} @var{score} @var{fn-doc} @var{var-doc}
+(@var{symbol} @var{score} @var{function-doc} @var{variable-doc}
  @var{plist-doc} @var{widget-doc} @var{face-doc} @var{group-doc})
 @end example
 
 Here, @var{score} is an integer measure of how important the symbol
-seems to be as a match, and the remaining elements are documentation
-strings for @var{symbol}'s various roles (or @code{nil}).
+seems to be as a match.  Each of the remaining elements is a
+documentation string, or @code{nil}, for @var{symbol} as a function,
+variable, etc.
 
 It also displays the symbols in a buffer named @samp{*Apropos*}, each
 with a one-line description taken from the beginning of its
index ef3ebc4be3523df2605391d10a42f1b200776301..551d91415744291c5fa9e099025cb688ecaf8cfc 100644 (file)
@@ -275,8 +275,7 @@ for appointment notification.
 @item lisp-indent-function
 
 @item mail-setup-hook
-@xref{Mail Mode Misc,, Mail Mode Miscellany, emacs, the GNU Emacs
-Manual}.
+@xref{Mail Misc,, Mail Miscellany, emacs, the GNU Emacs Manual}.
 
 @item menu-bar-update-hook
 @xref{Menu Bar}.
index a8528a548fcf1313ef8b42ce96b80dd688626f9b..5652d94114e9c45afa2a1e9111fb16f255c0f68b 100644 (file)
@@ -173,13 +173,11 @@ ordinary binding applies to events of a particular @dfn{event type},
 which is always a character or a symbol.  @xref{Classifying Events}.
 In this kind of binding, @var{binding} is a command.
 
-@item (@var{type} @var{item-name} @r{[}@var{cache}@r{]} .@: @var{binding})
+@item (@var{type} @var{item-name} .@: @var{binding})
 This specifies a binding which is also a simple menu item that
-displays as @var{item-name} in the menu.  @var{cache}, if present,
-caches certain information for display in the menu.  @xref{Simple Menu
-Items}.
+displays as @var{item-name} in the menu.  @xref{Simple Menu Items}.
 
-@item (@var{type} @var{item-name} @var{help-string} @r{[}@var{cache}@r{]} .@: @var{binding})
+@item (@var{type} @var{item-name} @var{help-string} .@: @var{binding})
 This is a simple menu item with help string @var{help-string}.
 
 @item (@var{type} menu-item .@: @var{details})
@@ -234,8 +232,9 @@ other input events; thus, @kbd{M-@key{end}} has nothing to do with
 @kbd{@key{ESC} @key{end}}.
 
   Here as an example is the local keymap for Lisp mode, a sparse
-keymap.  It defines bindings for @key{DEL} and @key{TAB}, plus @kbd{C-c
-C-l}, @kbd{M-C-q}, and @kbd{M-C-x}.
+keymap.  It defines bindings for @key{DEL}, @kbd{C-c C-z},
+@kbd{C-M-q}, and @kbd{C-M-x} (the actual value also contains a menu
+binding, which is omitted here for the sake of brevity).
 
 @example
 @group
@@ -250,11 +249,8 @@ lisp-mode-map
 @end group
 @group
  (27 keymap
-     ;; @r{@kbd{M-C-x}, treated as @kbd{@key{ESC} C-x}}
-     (24 . lisp-send-defun)
-     keymap
-     ;; @r{@kbd{M-C-q}, treated as @kbd{@key{ESC} C-q}}
-     (17 . indent-sexp))
+     ;; @r{@kbd{C-M-x}, treated as @kbd{@key{ESC} C-x}}
+     (24 . lisp-send-defun))
 @end group
 @group
  ;; @r{This part is inherited from @code{lisp-mode-shared-map}.}
@@ -264,9 +260,8 @@ lisp-mode-map
 @end group
 @group
  (27 keymap
-     ;; @r{@kbd{M-C-q}, treated as @kbd{@key{ESC} C-q}}
-     (17 . indent-sexp))
- (9 . lisp-indent-line))
+     ;; @r{@kbd{C-M-q}, treated as @kbd{@key{ESC} C-q}}
+     (17 . indent-sexp)))
 @end group
 @end example
 
@@ -441,10 +436,10 @@ This function returns a new keymap composed of the existing keymap(s)
 @var{maps}, and optionally inheriting from a parent keymap
 @var{parent}.  @var{maps} can be a single keymap or a list of more
 than one.  When looking up a key in the resulting new map, Emacs
-searches in each of the @var{maps}, and then in @var{parent}, stopping
-at the first match.  A @code{nil} binding in any one of @var{maps}
-overrides any binding in @var{parent}, but not a non-@code{nil} binding
-in any other of the @var{maps}.
+searches in each of the @var{maps} in turn, and then in @var{parent},
+stopping at the first match.  A @code{nil} binding in any one of
+@var{maps} overrides any binding in @var{parent}, but it does not
+override any non-@code{nil} binding in any other of the @var{maps}.
 @end defun
 
 @noindent For example, here is how Emacs sets the parent of
@@ -762,35 +757,23 @@ them:
 @end lisp
 
 @noindent
-The @var{find-in} and @var{find-in-any} are pseudo functions that
-search in one keymap and in an alist of keymaps, respectively.
-(Searching a single keymap for a binding is called @dfn{key lookup};
-see @ref{Key Lookup}.)  If the key sequence starts with a mouse event,
-or a symbolic prefix event followed by a mouse event, that event's
-position is used instead of point and the current buffer.  Mouse
-events on an embedded string use non-@code{nil} text properties from
-that string instead of the buffer.
-
-@enumerate
-@item
-The function finally found may be remapped
-(@pxref{Remapping Commands}).
-
-@item
-Characters that are bound to @code{self-insert-command} are translated
-according to @code{translation-table-for-input} before insertion.
-
-@item
-@code{current-active-maps} returns a list of the
-currently active keymaps at point.
-
-@item
-When a match is found (@pxref{Key Lookup}), if the binding in the
+@var{find-in} and @var{find-in-any} are pseudo functions that search
+in one keymap and in an alist of keymaps, respectively.  (Searching a
+single keymap for a binding is called @dfn{key lookup}; see @ref{Key
+Lookup}.)  If the key sequence starts with a mouse event, or a
+symbolic prefix event followed by a mouse event, that event's position
+is used instead of point and the current buffer.  Mouse events on an
+embedded string use non-@code{nil} text properties from that string
+instead of the buffer.
+
+  When a match is found (@pxref{Key Lookup}), if the binding in the
 keymap is a function, the search is over.  However if the keymap entry
 is a symbol with a value or a string, Emacs replaces the input key
 sequences with the variable's value or the string, and restarts the
 search of the active keymaps.
-@end enumerate
+
+  The function finally found might also be remapped.  @xref{Remapping
+Commands}.
 
 @node Controlling Active Maps
 @section Controlling the Active Keymaps
@@ -1088,21 +1071,9 @@ lookup form a complete key, and the object is its binding, but the
 binding is not executable as a command.
 @end table
 
-  In short, a keymap entry may be a keymap, a command, a keyboard macro,
-a symbol that leads to one of them, or an indirection or @code{nil}.
-Here is an example of a sparse keymap with two characters bound to
-commands and one bound to another keymap.  This map is the normal value
-of @code{emacs-lisp-mode-map}.  Note that 9 is the code for @key{TAB},
-127 for @key{DEL}, 27 for @key{ESC}, 17 for @kbd{C-q} and 24 for
-@kbd{C-x}.
-
-@example
-@group
-(keymap (9 . lisp-indent-line)
-        (127 . backward-delete-char-untabify)
-        (27 keymap (17 . indent-sexp) (24 . eval-defun)))
-@end group
-@end example
+  In short, a keymap entry may be a keymap, a command, a keyboard
+macro, a symbol that leads to one of them, or an indirection or
+@code{nil}.
 
 @node Functions for Key Lookup
 @section Functions for Key Lookup
@@ -1472,23 +1443,21 @@ that is used for some other purpose is likely to cause trouble; for
 example, suppressing @code{global-map} would make it impossible to use
 most of Emacs.
 
-Most often, @code{suppress-keymap} is used to initialize local
-keymaps of modes such as Rmail and Dired where insertion of text is not
-desirable and the buffer is read-only.  Here is an example taken from
-the file @file{emacs/lisp/dired.el}, showing how the local keymap for
-Dired mode is set up:
+This function can be used to initialize the local keymap of a major
+mode for which insertion of text is not desirable.  But usually such a
+mode should be derived from @code{special-mode} (@pxref{Basic Major
+Modes}); then its keymap will automatically inherit from
+@code{special-mode-map}, which is already suppressed.  Here is how
+@code{special-mode-map} is defined:
 
 @smallexample
 @group
-(setq dired-mode-map (make-keymap))
-(suppress-keymap dired-mode-map)
-(define-key dired-mode-map "r" 'dired-rename-file)
-(define-key dired-mode-map "\C-d" 'dired-flag-file-deleted)
-(define-key dired-mode-map "d" 'dired-flag-file-deleted)
-(define-key dired-mode-map "v" 'dired-view-file)
-(define-key dired-mode-map "e" 'dired-find-file)
-(define-key dired-mode-map "f" 'dired-find-file)
-@dots{}
+(defvar special-mode-map
+  (let ((map (make-sparse-keymap)))
+    (suppress-keymap map)
+    (define-key map "q" 'quit-window)
+    @dots{}
+    map))
 @end group
 @end smallexample
 @end defun
@@ -2064,12 +2033,10 @@ event type (it doesn't matter what event type) to a binding like this:
 @noindent
 The @sc{car}, @var{item-string}, is the string to be displayed in the
 menu.  It should be short---preferably one to three words.  It should
-describe the action of the command it corresponds to.  Note that it is
-not generally possible to display non-@acronym{ASCII} text in menus.  It will
-work for keyboard menus and will work to a large extent when Emacs is
-built with the Gtk+ toolkit.@footnote{In this case, the text is first
-encoded using the @code{utf-8} coding system and then rendered by the
-toolkit as it sees fit.}
+describe the action of the command it corresponds to.  Note that not
+all graphical toolkits can display non-@acronym{ASCII} text in menus
+(it will work for keyboard menus and will work to a large extent with
+the GTK+ toolkit).
 
   You can also supply a second string, called the help string, as follows:
 
@@ -2418,18 +2385,6 @@ this; @key{SPC} is the default.)
 she should type the corresponding character---the one whose binding is
 that alternative.
 
-@ignore
-In a menu intended for keyboard use, each menu item must clearly
-indicate what character to type.  The best convention to use is to make
-the character the first letter of the item string---that is something
-users will understand without being told.  We plan to change this; by
-the time you read this manual, keyboard menus may explicitly name the
-key for each alternative.
-@end ignore
-
-  This way of using menus in an Emacs-like editor was inspired by the
-Hierarkey system.
-
 @defvar menu-prompt-more-char
 This variable specifies the character to use to ask to see
 the next line of a menu.  Its initial value is 32, the code
@@ -2512,21 +2467,17 @@ can do it this way:
 @subsection The Menu Bar
 @cindex menu bar
 
-  Most window systems allow each frame to have a @dfn{menu bar}---a
-permanently displayed menu stretching horizontally across the top of
-the frame.  (In order for a frame to display a menu bar, its
-@code{menu-bar-lines} parameter must be greater than zero.
-@xref{Layout Parameters}.)
-
-  The items of the menu bar are the subcommands of the fake ``function
-key'' @code{menu-bar}, as defined in the active keymaps.
+  On graphical displays, there is usually 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 in the active keymaps.
 
   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 fake 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
@@ -2540,11 +2491,6 @@ were @code{nil}.  @xref{Active Keymaps}.
   Here's an example of setting up a menu bar item:
 
 @example
-@group
-(modify-frame-parameters (selected-frame)
-                         '((menu-bar-lines . 2)))
-@end group
-
 @group
 ;; @r{Make a menu keymap (with a prompt string)}
 ;; @r{and make it the menu bar item's definition.}
@@ -2618,20 +2564,17 @@ that the command does not actually have, it is ignored.
 @subsection Tool bars
 @cindex tool bar
 
-  A @dfn{tool bar} is a row of icons at the top of a frame, that execute
-commands when you click on them---in effect, a kind of graphical menu
-bar.
-
-  The frame parameter @code{tool-bar-lines} (X resource @samp{toolBar})
-controls how many lines' worth of height to reserve for the tool bar.  A
-zero value suppresses the tool bar.  If the value is nonzero, and
-@code{auto-resize-tool-bars} is non-@code{nil}, the tool bar expands and
-contracts automatically as needed to hold the specified contents.
+  A @dfn{tool bar} is a row of clickable icons at the top of a frame,
+just below the menu bar.  @xref{Tool Bars,,,emacs, The GNU Emacs
+Manual}.
 
-  If the value of @code{auto-resize-tool-bars} is @code{grow-only},
-the tool bar expands automatically, but does not contract automatically.
-To contract the tool bar, the user has to redraw the frame by entering
-@kbd{C-l}.
+  On each frame, the frame parameter @code{tool-bar-lines} controls
+how many lines' worth of height to reserve for the tool bar.  A zero
+value suppresses the tool bar.  If the value is nonzero, and
+@code{auto-resize-tool-bars} is non-@code{nil}, the tool bar expands
+and contracts automatically as needed to hold the specified contents.
+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
@@ -2683,17 +2626,17 @@ button in disabled state by applying an edge-detection algorithm to the
 image.
 
 The @code{:rtl} property specifies an alternative image to use for
-right-to-left languages.  Only the Gtk+ version of Emacs supports this
+right-to-left languages.  Only the GTK+ version of Emacs supports this
 at present.
 
 Like the menu bar, the tool bar can display separators (@pxref{Menu
 Separators}).  Tool bar separators are vertical rather than
-horizontal, though, and only a single style is supported.  Separators
-are represented in the tool bar keymap in the same way as for the
-menu bar, i.e. using a @code{(menu-item "--"}) entry.  The Gtk+ and
-Nextstep tool bars render separators natively, otherwise Emacs selects
-a separator image that is appropriate for the display.  Note that tool
-bar separators do not support any properties, such as @code{:visible}.
+horizontal, though, and only a single style is supported.  They are
+represented in the tool bar keymap by @code{(menu-item "--")} entries;
+properties like @code{:visible} are not supported for tool bar
+separators.  Separators are rendered natively in GTK+ and Nextstep
+tool bars; in the other cases, they are rendered using an image of a
+vertical line.
 
 The default tool bar is defined so that items specific to editing do not
 appear for major modes whose command symbol has a @code{mode-class}
@@ -2706,18 +2649,20 @@ using an indirection through @code{tool-bar-map}.
 
 @defvar tool-bar-map
 By default, the global map binds @code{[tool-bar]} as follows:
+
 @example
 (global-set-key [tool-bar]
-  '(menu-item "tool bar" ignore
-              :filter (lambda (ignore) tool-bar-map)))
+               `(menu-item ,(purecopy "tool bar") ignore
+                           :filter tool-bar-make-keymap))
 @end example
+
 @noindent
-Thus the tool bar map is derived dynamically from the value of variable
-@code{tool-bar-map} and you should normally adjust the default (global)
-tool bar by changing that map.  Major modes may replace the global bar
-completely by making @code{tool-bar-map} buffer-local and set to a
-keymap containing only the desired items.  Info mode provides an
-example.
+The function @code{tool-bar-make-keymap}, in turn, derives the actual
+tool bar map dynamically from the value of the variable
+@code{tool-bar-map}.  Hence, you should normally adjust the default
+(global) tool bar by changing that map.  Some major modes, such as
+Info mode, completely replace the global tool bar by making
+@code{tool-bar-map} buffer-local and setting it to a different keymap.
 @end defvar
 
 There are two convenience functions for defining tool bar items, as
index dca88d2b7c7bd465da0ee781199d0f4a70c77032..a71d3379b8030e61ba9d194ad2115a7dd1efe5a8 100644 (file)
@@ -258,7 +258,8 @@ Specify how to indent calls to this macro.  @xref{Indenting Macros},
 for more details.
 
 @item (doc-string @var{number})
-Specify which element of the macro is the doc string, if any.
+Specify which element of the macro is the documentation string, if
+any.
 @end table
 
 A @code{declare} form only has its special effect in the body of a
@@ -605,7 +606,7 @@ either.
 
   Within a macro definition, you can use the @code{declare} form
 (@pxref{Defining Macros}) to specify how to @key{TAB} should indent
-calls to the macro.  An indentation specifiction is written like this:
+calls to the macro.  An indentation specification is written like this:
 
 @example
 (declare (indent @var{indent-spec}))
index a71138f52689d1eba28fef41274225af51532ec9..1224d80fdf89394dfcd6b22876669cb86e29977f 100644 (file)
@@ -633,6 +633,7 @@ for reading certain kinds of names with completion.
                              shell commands.
 * Completion Styles::      Specifying rules for performing completion.
 * Programmed Completion::  Writing your own completion-function.
+* Completion in Buffers::  Completing text in ordinary buffers.
 @end menu
 
 @node Basic Completion
@@ -644,10 +645,12 @@ higher-level completion features that do use the minibuffer.
 
 @defun try-completion string collection &optional predicate
 This function returns the longest common substring of all possible
-completions of @var{string} in @var{collection}.  The value of
-@var{collection} must be a list of strings, an alist whose keys are
-strings or symbols, an obarray, a hash table, or a completion function
-(@pxref{Programmed Completion}).
+completions of @var{string} in @var{collection}.
+
+@cindex completion table
+The @var{collection} argument is called the @dfn{completion table}.
+Its value must be a list of strings, an alist whose keys are strings
+or symbols, an obarray, a hash table, or a completion function.
 
 Completion compares @var{string} against each of the permissible
 completions specified by @var{collection}.  If no permissible
@@ -678,13 +681,13 @@ Also, you cannot intern a given symbol in more than one obarray.
 If @var{collection} is a hash table, then the keys that are strings
 are the possible completions.  Other keys are ignored.
 
-You can also use a function as @var{collection}.
-Then the function is solely responsible for performing completion;
-@code{try-completion} returns whatever this function returns.  The
-function is called with three arguments: @var{string}, @var{predicate}
-and @code{nil} (the reason for the third argument is so that the same
-function can be used in @code{all-completions} and do the appropriate
-thing in either case).  @xref{Programmed Completion}.
+You can also use a function as @var{collection}.  Then the function is
+solely responsible for performing completion; @code{try-completion}
+returns whatever this function returns.  The function is called with
+three arguments: @var{string}, @var{predicate} and @code{nil} (the
+reason for the third argument is so that the same function can be used
+in @code{all-completions} and do the appropriate thing in either
+case).  @xref{Programmed Completion}.
 
 If the argument @var{predicate} is non-@code{nil}, then it must be a
 function of one argument, unless @var{collection} is a hash table, in
@@ -862,30 +865,13 @@ proper value is done the first time you do completion using @var{var}.
 It is done by calling @var{fun} with no arguments.  The
 value @var{fun} returns becomes the permanent value of @var{var}.
 
-Here is an example of use:
+Here is a usage example:
 
 @smallexample
 (defvar foo (lazy-completion-table foo make-my-alist))
 @end smallexample
 @end defmac
 
-The function @code{completion-in-region} provides a convenient way to
-perform completion on an arbitrary stretch of text in an Emacs buffer:
-
-@defun completion-in-region start end collection &optional predicate
-This function completes the text in the current buffer between the
-positions @var{start} and @var{end}, using @var{collection}.  The
-argument @var{collection} has the same meaning as in
-@code{try-completion} (@pxref{Basic Completion}).
-
-This function inserts the completion text directly into the current
-buffer.  Unlike @code{completing-read} (@pxref{Minibuffer
-Completion}), it does not activate the minibuffer.
-
-For this function to work, point must be somewhere between @var{start}
-and @var{end}.
-@end defun
-
 @node Minibuffer Completion
 @subsection Completion and the Minibuffer
 @cindex minibuffer completion
@@ -899,13 +885,14 @@ This function reads a string in the minibuffer, assisting the user by
 providing completion.  It activates the minibuffer with prompt
 @var{prompt}, which must be a string.
 
-The actual completion is done by passing @var{collection} and
-@var{predicate} to the function @code{try-completion} (@pxref{Basic
-Completion}).  This happens in certain commands bound in the local
-keymaps used for completion.  Some of these commands also call
-@code{test-completion}.  Thus, if @var{predicate} is non-@code{nil},
-it should be compatible with @var{collection} and
-@code{completion-ignore-case}.  @xref{Definition of test-completion}.
+The actual completion is done by passing the completion table
+@var{collection} and the completion predicate @var{predicate} to the
+function @code{try-completion} (@pxref{Basic Completion}).  This
+happens in certain commands bound in the local keymaps used for
+completion.  Some of these commands also call @code{test-completion}.
+Thus, if @var{predicate} is non-@code{nil}, it should be compatible
+with @var{collection} and @code{completion-ignore-case}.
+@xref{Definition of test-completion}.
 
 The value of the optional argument @var{require-match} determines how
 the user may exit the minibuffer:
@@ -1005,10 +992,11 @@ They are described in the following section.
 in the minibuffer to do completion.
 
 @defvar minibuffer-completion-table
-The value of this variable is the collection used for completion in
-the minibuffer.  This is the global variable that contains what
+The value of this variable is the completion table used for completion
+in the minibuffer.  This is the global variable that contains what
 @code{completing-read} passes to @code{try-completion}.  It is used by
-minibuffer completion commands such as @code{minibuffer-complete-word}.
+minibuffer completion commands such as
+@code{minibuffer-complete-word}.
 @end defvar
 
 @defvar minibuffer-completion-predicate
@@ -1717,6 +1705,87 @@ completion via the variable @code{minibuffer-completion-table}
 (@pxref{Completion Commands}).
 @end defvar
 
+@node Completion in Buffers
+@subsection Completion in Ordinary Buffers
+@cindex inline completion
+
+@findex completion-at-point
+  Although completion is usually done in the minibuffer, the
+completion facility can also be used on the text in ordinary Emacs
+buffers.  In many major modes, in-buffer completion is performed by
+the @kbd{C-M-i} or @kbd{M-@key{TAB}} command, bound to
+@code{completion-at-point}.  @xref{Symbol Completion,,, emacs, The GNU
+Emacs Manual}.  This command uses the abnormal hook variable
+@code{completion-at-point-functions}:
+
+@defvar completion-at-point-functions
+The value of this abnormal hook should be a list of functions, which
+are used to compute a completion table for completing the text at
+point.  It can be used by major modes to provide mode-specific
+completion tables (@pxref{Major Mode Conventions}).
+
+When the command @code{completion-at-point} runs, it calls the
+functions in the list one by one, without any argument.  Each function
+should return @code{nil} if it is unable to produce a completion table
+for the text at point.  Otherwise it should return a list of the form
+
+@example
+(@var{start} @var{end} @var{collection} . @var{props})
+@end example
+
+@noindent
+@var{start} and @var{end} delimit the text to complete (which should
+enclose point).  @var{collection} is a completion table for completing
+that text, in a form suitable for passing as the second argument to
+@code{try-completion} (@pxref{Basic Completion}); completion
+alternatives will be generated from this completion table in the usual
+way, via the completion styles defined in @code{completion-styles}
+(@pxref{Completion Styles}).  @var{props} is a property list for
+additional information; the following optional properties are
+recognized:
+
+@table @code
+@item :predicate
+The value should be a predicate that completion candidates need to
+satisfy.
+
+@item :exclusive
+If the value is @code{no}, then if the completion table fails to match
+the text at point, then @code{completion-at-point} moves on to the
+next function in @code{completion-at-point-functions} instead of
+reporting a completion failure.
+@end table
+
+A function in @code{completion-at-point-functions} may also return a
+function.  In that case, that returned function is called, with no
+argument, and it is entirely responsible for performing the
+completion.  We discourage this usage; it is intended to help convert
+old code to using @code{completion-at-point}.
+
+The first function in @code{completion-at-point-functions} to return a
+non-@code{nil} value is used by @code{completion-at-point}.  The
+remaining functions are not called.  The exception to this is when
+there is a @code{:exclusive} specification, as described above.
+@end defvar
+
+  The following function provides a convenient way to perform
+completion on an arbitrary stretch of text in an Emacs buffer:
+
+@defun completion-in-region start end collection &optional predicate
+This function completes the text in the current buffer between the
+positions @var{start} and @var{end}, using @var{collection}.  The
+argument @var{collection} has the same meaning as in
+@code{try-completion} (@pxref{Basic Completion}).
+
+This function inserts the completion text directly into the current
+buffer.  Unlike @code{completing-read} (@pxref{Minibuffer
+Completion}), it does not activate the minibuffer.
+
+For this function to work, point must be somewhere between @var{start}
+and @var{end}.
+@end defun
+
+
 @node Yes-or-No Queries
 @section Yes-or-No Queries
 @cindex asking the user questions
index 0b020bee0b0f7346669c5773071905619c7699ed..a4ee6f8327f88096af4df09d8de20399bae6b8a9 100644 (file)
@@ -48,17 +48,16 @@ you it is normal.  We try to make all hooks normal, as much as
 possible, so that you can use them in a uniform way.
 
   Every major mode command is supposed to run a normal hook called the
-@dfn{mode hook} as the one of the last steps of initialization.  This
-makes it easy for a user to customize the behavior of the mode, by
-overriding the buffer-local variable assignments already made by the
-mode.  Most minor mode functions also run a mode hook at the end.  But
-hooks are used in other contexts too.  For example, the hook
-@code{suspend-hook} runs just before Emacs suspends itself
-(@pxref{Suspending Emacs}).
-
-  The recommended way to add a hook function to a normal hook is by
-calling @code{add-hook} (see below).  The hook functions may be any of
-the valid kinds of functions that @code{funcall} accepts (@pxref{What
+@dfn{mode hook} as one of the last steps of initialization.  This makes
+it easy for a user to customize the behavior of the mode, by overriding
+the buffer-local variable assignments already made by the mode.  Most
+minor mode functions also run a mode hook at the end.  But hooks are
+used in other contexts too.  For example, the hook @code{suspend-hook}
+runs just before Emacs suspends itself (@pxref{Suspending Emacs}).
+
+  The recommended way to add a hook function to a hook is by calling
+@code{add-hook} (@pxref{Setting Hooks}).  The hook functions may be any
+of the valid kinds of functions that @code{funcall} accepts (@pxref{What
 Is a Function}).  Most normal hook variables are initially void;
 @code{add-hook} knows how to deal with this.  You can add hooks either
 globally or buffer-locally with @code{add-hook}.
@@ -178,7 +177,7 @@ calls @code{wrap-function} with arguments @code{fun} and @code{args}.
 in Lisp Interaction mode:
 
 @example
-(add-hook 'lisp-interaction-mode-hook 'turn-on-auto-fill)
+(add-hook 'lisp-interaction-mode-hook 'auto-fill-mode)
 @end example
 
 @defun add-hook hook function &optional append local
@@ -202,13 +201,13 @@ If @var{function} has a non-@code{nil} property
 changing major modes) won't delete it from the hook variable's local
 value.
 
-It is best to design your hook functions so that the order in which
-they are executed does not matter.  Any dependence on the order is
-asking for trouble.  However, the order is predictable: normally,
-@var{function} goes at the front of the hook list, so it will be
-executed first (barring another @code{add-hook} call).  If the
-optional argument @var{append} is non-@code{nil}, the new hook
-function goes at the end of the hook list and will be executed last.
+For a normal hook, hook functions should be designed so that the order
+in which they are executed does not matter.  Any dependence on the order
+is asking for trouble.  However, the order is predictable: normally,
+@var{function} goes at the front of the hook list, so it is executed
+first (barring another @code{add-hook} call).  If the optional argument
+@var{append} is non-@code{nil}, the new hook function goes at the end of
+the hook list and is executed last.
 
 @code{add-hook} can handle the cases where @var{hook} is void or its
 value is a single function; it sets or changes the value to a list of
@@ -285,9 +284,10 @@ buffer is put in Fundamental mode (@pxref{Major Mode Conventions}).
 * Derived Modes::           Defining a new major mode based on another major
                               mode.
 * Basic Major Modes::       Modes that other modes are often derived from.
+* Mode Hooks::              Hooks run at the end of major mode commands.
+* Tabulated List Mode::     Parent mode for buffers containing tabulated data.
 * Generic Modes::           Defining a simple major mode that supports
                               comment syntax and Font Lock mode.
-* Mode Hooks::              Hooks run at the end of major mode commands.
 * Example Major Modes::     Text mode and Lisp modes.
 @end menu
 
@@ -302,8 +302,8 @@ initialization, function and variable names, and hooks.
 
   If you use the @code{define-derived-mode} macro, it will take care of
 many of these conventions automatically.  @xref{Derived Modes}.  Note
-also that fundamental mode is an exception to many of these conventions,
-because its definition is to present the global state of Emacs.
+also that Fundamental mode is an exception to many of these conventions,
+because it represents the default state of Emacs.
 
   The following list of conventions is only partial.  Each major mode
 should aim for consistency in general with other Emacs major modes, as
@@ -460,13 +460,9 @@ The mode can specify a local value for
 this mode.
 
 @item
-The mode can specify how to complete various keywords by adding
-to the special hook @code{completion-at-point-functions}.
-
-@item
-Use @code{defvar} or @code{defcustom} to set mode-related variables, so
-that they are not reinitialized if they already have a value.  (Such
-reinitialization could discard customizations made by the user.)
+The mode can specify how to complete various keywords by adding one or
+more buffer-local entries to the special hook
+@code{completion-at-point-functions}.  @xref{Completion in Buffers}.
 
 @item
 @cindex buffer-local variables in modes
@@ -545,26 +541,23 @@ the form that adds the element (@pxref{autoload cookie}).  If you do
 not autoload the mode command, it is sufficient to add the element in
 the file that contains the mode definition.
 
-@item
-In the comments that document the file, you should provide a sample
-@code{autoload} form and an example of how to add to
-@code{auto-mode-alist}, that users can include in their init files
-(@pxref{Init File}).
-
 @item
 @cindex mode loading
 The top-level forms in the file defining the mode should be written so
 that they may be evaluated more than once without adverse consequences.
-Even if you never load the file more than once, someone else will.
+For instance, use @code{defvar} or @code{defcustom} to set mode-related
+variables, so that they are not reinitialized if they already have a
+value (@pxref{Defining Variables}).
+
 @end itemize
 
 @node Auto Major Mode
 @subsection How Emacs Chooses a Major Mode
 @cindex major mode, automatic selection
 
-  Based on information in the file name or in the file itself, Emacs
-automatically selects a major mode for the new buffer when a file is
-visited.  It also processes local variables specified in the file text.
+  When Emacs visits a file, it automatically selects a major mode for
+the buffer based on information in the file name or in the file itself.
+It also processes local variables specified in the file text.
 
 @deffn Command normal-mode &optional find-file
 This function establishes the proper major mode and buffer-local variable
@@ -807,10 +800,10 @@ You can also specify @code{nil} for @var{parent}.  This gives the new
 mode no parent.  Then @code{define-derived-mode} behaves as described
 above, but, of course, omits all actions connected with @var{parent}.
 
-The argument @var{docstring} specifies the documentation string for
-the new mode.  @code{define-derived-mode} adds some general
-information about the mode's hook, followed by the mode's keymap, at
-the end of this docstring.  If you omit @var{docstring},
+The argument @var{docstring} specifies the documentation string for the
+new mode.  @code{define-derived-mode} adds some general information
+about the mode's hook, followed by the mode's keymap, at the end of this
+documentation string.  If you omit @var{docstring},
 @code{define-derived-mode} generates a documentation string.
 
 The @var{keyword-args} are pairs of keywords and values.  The values
@@ -901,9 +894,9 @@ Prog mode binds @code{parse-sexp-ignore-comments} to @code{t}
 
 @deffn Command special-mode
 Special mode is a basic major mode for buffers containing text that is
-produced specially by Emacs, rather than from a file.  Major modes
-derived from Special mode are given a @code{mode-class} property of
-@code{special} (@pxref{Major Mode Conventions}).
+produced specially by Emacs, rather than directly from a file.  Major
+modes derived from Special mode are given a @code{mode-class} property
+of @code{special} (@pxref{Major Mode Conventions}).
 
 Special mode sets the buffer to read-only.  Its keymap defines several
 common bindings, including @kbd{q} for @code{quit-window}, @kbd{z} for
@@ -915,60 +908,9 @@ mode, which is used by the @samp{*Buffer List*} buffer.  @xref{List
 Buffers,,Listing Existing Buffers, emacs, The GNU Emacs Manual}.
 @end deffn
 
-@cindex tables of data
-@deffn Command tabulated-list-mode
-Tabulated List mode is another mode that derives from Special mode.  It
-displays tabulated data, i.e. a series of rows and columns, where each
-row represents a particular entry, whose properties are displayed in the
-various columns.  It provides a general mechanism for sorting on
-columns.  You can use Tabulated List mode as the basis for other modes
-that need to display lists.  For example, the @samp{*Packages*} buffer
-uses this (@pxref{Packages,,, emacs, The GNU Emacs Manual}). The
-documentation of the @code{tabulated-list-mode} function explains what
-you need to do to use it.  At a minimum, specify the column format via
-the @code{tabulated-list-format} variable.
-@end deffn
-
-@node Generic Modes
-@subsection Generic Modes
-@cindex generic mode
-
-  @dfn{Generic modes} are simple major modes with basic support for
-comment syntax and Font Lock mode.  To define a generic mode, use the
-macro @code{define-generic-mode}.  See the file @file{generic-x.el}
-for some examples of the use of @code{define-generic-mode}.
-
-@defmac define-generic-mode mode comment-list keyword-list font-lock-list auto-mode-list function-list &optional docstring
-This macro defines a generic mode command named @var{mode} (a symbol,
-not quoted).  The optional argument @var{docstring} is the
-documentation for the mode command.  If you do not supply it,
-@code{define-generic-mode} generates one by default.
-
-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.''
-(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.
-@xref{Syntax Tables}.
-
-The argument @var{keyword-list} is a list of keywords to highlight
-with @code{font-lock-keyword-face}.  Each keyword should be a string.
-Meanwhile, @var{font-lock-list} is a list of additional expressions to
-highlight.  Each element of this list should have the same form as an
-element of @code{font-lock-keywords}.  @xref{Search-based
-Fontification}.
-
-The argument @var{auto-mode-list} is a list of regular expressions to
-add to the variable @code{auto-mode-alist}.  They are added by the execution
-of the @code{define-generic-mode} form, not by expanding the macro call.
-
-Finally, @var{function-list} is a list of functions for the mode
-command to call for additional setup.  It calls these functions just
-before it runs the mode hook variable @code{@var{mode}-hook}.
-@end defmac
+  In addition, modes for buffers of tabulated data can inherit from
+Tabulated List mode, which is in turn derived from Special mode.
+@xref{Tabulated List Mode}.
 
 @node Mode Hooks
 @subsection Mode Hooks
@@ -1029,6 +971,177 @@ This is a normal hook run by @code{run-mode-hooks}.  It is run at the
 very end of every properly-written major mode command.
 @end defvar
 
+@node Tabulated List Mode
+@subsection Tabulated List mode
+@cindex Tabulated List mode
+
+  Tabulated List mode is a major mode for displaying tabulated data,
+i.e.@: data consisting of @dfn{entries}, each entry occupying one row of
+text with its contents divided into columns.  Tabulated List mode
+provides facilities for pretty-printing rows and columns, and sorting
+the rows according to the values in each column.  It is derived from
+Special mode (@pxref{Basic Major Modes}).
+
+  Tabulated List mode is intended to be used as a parent mode by a more
+specialized major mode.  Examples include Process Menu mode
+(@pxref{Process Information}) and Package Menu mode (@pxref{Package
+Menu,,, emacs, The GNU Emacs Manual}).
+
+@findex tabulated-list-mode
+  Such a derived mode should use @code{define-derived-mode} in the usual
+way, specifying @code{tabulated-list-mode} as the second argument
+(@pxref{Derived Modes}).  The body of the @code{define-derived-mode}
+form should specify the format of the tabulated data, by assigning
+values to the variables documented below; then, it should call the
+function @code{tabulated-list-init-header} to initialize the header
+line.
+
+  The derived mode should also define a @dfn{listing command}.  This,
+not the mode command, is what the user calls (e.g.@: @kbd{M-x
+list-processes}).  The listing command should create or switch to a
+buffer, turn on the derived mode, specify the tabulated data, and
+finally call @code{tabulated-list-print} to populate the buffer.
+
+@defvar tabulated-list-format
+This buffer-local variable specifies the format of the Tabulated List
+data.  Its value should be a vector.  Each element of the vector
+represents a data column, and should be a list @code{(@var{name}
+@var{width} @var{sort})}, where
+
+@itemize
+@item
+@var{name} is the column's name (a string).
+
+@item
+@var{width} is the width to reserve for the column (an integer).  This
+is meaningless for the last column, which runs to the end of each line.
+
+@item
+@var{sort} specifies how to sort entries by the column.  If @code{nil},
+the column cannot be used for sorting.  If @code{t}, the column is
+sorted by comparing string values.  Otherwise, this should be a
+predicate function for @code{sort} (@pxref{Rearrangement}), which
+accepts two arguments with the same form as the elements of
+@code{tabulated-list-entries} (see below).
+@end itemize
+@end defvar
+
+@defvar tabulated-list-entries
+This buffer-local variable specifies the entries displayed in the
+Tabulated List buffer.  Its value should be either a list, or a
+function.
+
+If the value is a list, each list element corresponds to one entry, and
+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
+re-sorting entries.  Comparison is done with @code{equal}.
+
+@item
+@var{contents} is a vector with the same number of elements as
+@code{tabulated-list-format}.  Each vector element is either a string,
+which is inserted into the buffer as-is, or a list @code{(@var{label}
+. @var{properties})}, which means to insert a text button by calling
+@code{insert-text-button} with @var{label} and @var{properties} as
+arguments (@pxref{Making Buttons}).
+
+There should be no newlines in any of these strings.
+@end itemize
+
+Otherwise, the value should be a function which returns a list of the
+above form when called with no arguments.
+@end defvar
+
+@defvar tabulated-list-revert-hook
+This normal hook is run prior to reverting a Tabulated List buffer.  A
+derived mode can add a function to this hook to recompute
+@code{tabulated-list-entries}.
+@end defvar
+
+@defvar tabulated-list-printer
+The value of this variable is the function called to insert an entry at
+point, including its terminating newline.  The function should accept
+two arguments, @var{id} and @var{contents}, having the same meanings as
+in @code{tabulated-list-entries}.  The default value is a function which
+inserts an entry in a straightforward way; a mode which uses Tabulated
+List mode in a more complex way can specify another function.
+@end defvar
+
+@defvar tabulated-list-sort-key
+The value of this variable specifies the current sort key for the
+Tabulated List buffer.  If it is @code{nil}, no sorting is done.
+Otherwise, it should have the form @code{(@var{name} . @var{flip})},
+where @var{name} is a string matching one of the column names in
+@code{tabulated-list-format}, and @var{flip}, if non-@code{nil}, means
+to invert the sort order.
+@end defvar
+
+@defun tabulated-list-init-header
+This function computes and sets @code{header-line-format} for the
+Tabulated List buffer (@pxref{Header Lines}), and assigns a keymap to
+the header line to allow sort entries by clicking on column headers.
+
+Modes derived from Tabulated List mode should call this after setting
+the above variables (in particular, only after setting
+@code{tabulated-list-format}).
+@end defun
+
+@defun tabulated-list-print &optional remember-pos
+This function populates the current buffer with entries.  It should be
+called by the listing command.  It erases the buffer, sorts the entries
+specified by @code{tabulated-list-entries} according to
+@code{tabulated-list-sort-key}, then calls the function specified by
+@code{tabulated-list-printer} to insert each entry.
+
+If the optional argument @var{remember-pos} is non-@code{nil}, this
+function looks for the @var{id} element on the current line, if any, and
+tries to move to that entry after all the entries are (re)inserted.
+@end defun
+
+@node Generic Modes
+@subsection Generic Modes
+@cindex generic mode
+
+  @dfn{Generic modes} are simple major modes with basic support for
+comment syntax and Font Lock mode.  To define a generic mode, use the
+macro @code{define-generic-mode}.  See the file @file{generic-x.el}
+for some examples of the use of @code{define-generic-mode}.
+
+@defmac define-generic-mode mode comment-list keyword-list font-lock-list auto-mode-list function-list &optional docstring
+This macro defines a generic mode command named @var{mode} (a symbol,
+not quoted).  The optional argument @var{docstring} is the
+documentation for the mode command.  If you do not supply it,
+@code{define-generic-mode} generates one by default.
+
+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.''
+(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.
+@xref{Syntax Tables}.
+
+The argument @var{keyword-list} is a list of keywords to highlight
+with @code{font-lock-keyword-face}.  Each keyword should be a string.
+Meanwhile, @var{font-lock-list} is a list of additional expressions to
+highlight.  Each element of this list should have the same form as an
+element of @code{font-lock-keywords}.  @xref{Search-based
+Fontification}.
+
+The argument @var{auto-mode-list} is a list of regular expressions to
+add to the variable @code{auto-mode-alist}.  They are added by the execution
+of the @code{define-generic-mode} form, not by expanding the macro call.
+
+Finally, @var{function-list} is a list of functions for the mode
+command to call for additional setup.  It calls these functions just
+before it runs the mode hook variable @code{@var{mode}-hook}.
+@end defmac
+
 @node Example Major Modes
 @subsection Major Mode Examples
 
@@ -1202,27 +1315,20 @@ if that value is non-nil."
 @section Minor Modes
 @cindex minor mode
 
-  A @dfn{minor mode} provides features that users may enable or disable
-independently of the choice of major mode.  Minor modes can be enabled
-individually or in combination.  Minor modes would be better named
-``generally available, optional feature modes,'' except that such a name
-would be unwieldy.
+  A @dfn{minor mode} provides optional features that users may enable or
+disable independently of the choice of major mode.  Minor modes can be
+enabled individually or in combination.
 
-  A minor mode is not usually meant as a variation of a single major mode.
-Usually they are general and can apply to many major modes.  For
-example, Auto Fill mode works with any major mode that permits text
-insertion.  To be general, a minor mode must be effectively independent
-of the things major modes do.
+  Most minor modes implement features that are independent of the major
+mode, and can thus be used with most major modes.  For example, Auto
+Fill mode works with any major mode that permits text insertion.  A few
+minor modes, however, are specific to a particular major mode.  For
+example, Diff Auto Refine mode is a minor mode that is intended to be
+used only with Diff mode.
 
-  A minor mode is often much more difficult to implement than a major
-mode.  One reason is that you should be able to activate and deactivate
-minor modes in any order.  A minor mode should be able to have its
-desired effect regardless of the major mode and regardless of the other
-minor modes in effect.
-
-  Often the biggest problem in implementing a minor mode is finding a
-way to insert the necessary hook into the rest of Emacs.  Minor mode
-keymaps make this easier than it used to be.
+  Ideally, a minor mode should have its desired effect regardless of the
+other minor modes in effect.  It should be possible to activate and
+deactivate minor modes in any order.
 
 @defvar minor-mode-list
 The value of this variable is a list of all minor mode commands.
@@ -1240,60 +1346,76 @@ The value of this variable is a list of all minor mode commands.
 @cindex conventions for writing minor modes
 
   There are conventions for writing minor modes just as there are for
-major modes.  Several of the major mode conventions apply to minor
-modes as well: those regarding the name of the mode initialization
-function, the names of global symbols, the use of a hook at the end of
-the initialization function, and the use of keymaps and other tables.
-
-  In addition, there are several conventions that are specific to
-minor modes.  (The easiest way to follow all the conventions is to use
-the macro @code{define-minor-mode}; @ref{Defining Minor Modes}.)
+major modes.  These conventions are described below.  The easiest way to
+follow them is to use the macro @code{define-minor-mode}.
+@xref{Defining Minor Modes}.
 
 @itemize @bullet
 @item
 @cindex mode variable
-Make a variable whose name ends in @samp{-mode} to control the minor
-mode.  We call this the @dfn{mode variable}.  The minor mode command
-should set this variable (@code{nil} to disable; anything else to
-enable).
-
-If possible, implement the mode so that setting the variable
-automatically enables or disables the mode.  Then the minor mode command
-does not need to do anything except set the variable.
+Define a variable whose name ends in @samp{-mode}.  We call this the
+@dfn{mode variable}.  The minor mode command should set this variable.
+The value will be @code{nil} is the mode is disabled, and non-@code{nil}
+if the mode is enabled.  The variable should be buffer-local if the
+minor mode is buffer-local.
 
 This variable is used in conjunction with the @code{minor-mode-alist} to
-display the minor mode name in the mode line.  It can also enable
-or disable a minor mode keymap.  Individual commands or hooks can also
-check the variable's value.
-
-If you want the minor mode to be enabled separately in each buffer,
-make the variable buffer-local.
+display the minor mode name in the mode line.  It also determines
+whether the minor mode keymap is active, via @code{minor-mode-map-alist}
+(@pxref{Controlling Active Maps}).  Individual commands or hooks can
+also check its value.
 
 @item
-Define a command whose name is the same as the mode variable.
-Its job is to enable and disable the mode by setting the variable.
+Define a command, called the @dfn{mode command}, whose name is the same
+as the mode variable.  Its job is to set the value of the mode variable,
+plus anything else that needs to be done to actually enable or disable
+the mode's features.
 
-The command should accept one optional argument.  If the argument is
-@code{nil}, it should toggle the mode (turn it on if it is off, and
-off if it is on).  It should turn the mode on if the argument is a
-positive integer, the symbol @code{t}, or a list whose @sc{car} is one
-of those.  It should turn the mode off if the argument is a negative
-integer or zero, the symbol @code{-}, or a list whose @sc{car} is a
-negative integer or zero.  The meaning of other arguments is not
-specified.
+The mode command should accept one optional argument.  If called
+interactively with no prefix argument, it should toggle the mode
+(i.e.@: enable if it is disabled, and disable if it is enabled).  If
+called interactively with a prefix argument, it should enable the mode
+if the argument is positive and disable it otherwise.
 
-Here is an example taken from the definition of @code{transient-mark-mode}.
-It shows the use of @code{transient-mark-mode} as a variable that enables or
-disables the mode's behavior, and also shows the proper way to toggle,
-enable or disable the minor mode based on the raw prefix argument value.
+If the mode command is called from Lisp (i.e.@: non-interactively), it
+should enable the mode if the argument is omitted or @code{nil}; it
+should toggle the mode if the argument is the symbol @code{toggle};
+otherwise it should treat the argument in the same way as for an
+interactive call with a numeric prefix argument, as described above.
 
-@smallexample
-@group
-(setq transient-mark-mode
-      (if (null arg) (not transient-mark-mode)
-        (> (prefix-numeric-value arg) 0)))
-@end group
-@end smallexample
+The following example shows how to implement this behavior (it is
+similar to the code generated by the @code{define-minor-mode} macro):
+
+@example
+(interactive (list (or current-prefix-arg 'toggle)))
+(let ((enable (if (eq arg 'toggle)
+                  (not foo-mode) ; @r{this mode's mode variable}
+                (> (prefix-numeric-value arg) 0))))
+  (if enable
+      @var{do-enable}
+    @var{do-disable}))
+@end example
+
+The reason for this somewhat complex behavior is that it lets users
+easily toggle the minor mode interactively, and also lets the minor mode
+be easily enabled in a mode hook, like this:
+
+@example
+(add-hook 'text-mode-hook 'foo-mode)
+@end example
+
+@noindent
+This behaves correctly whether or not @code{foo-mode} was already
+enabled, since the @code{foo-mode} mode command unconditionally enables
+the minor mode when it is called from Lisp with no argument.  Disabling
+a minor mode in a mode hook is a little uglier:
+
+@example
+(add-hook 'text-mode-hook (lambda () (foo-mode -1)))
+@end example
+
+@noindent
+However, this is not very commonly done.
 
 @item
 Add an element to @code{minor-mode-alist} for each minor mode
@@ -1316,8 +1438,7 @@ check for an existing element, to avoid duplication.  For example:
 @smallexample
 @group
 (unless (assq 'leif-mode minor-mode-alist)
-  (setq minor-mode-alist
-        (cons '(leif-mode " Leif") minor-mode-alist)))
+  (push '(leif-mode " Leif") minor-mode-alist))
 @end group
 @end smallexample
 
@@ -1331,25 +1452,24 @@ or like this, using @code{add-to-list} (@pxref{List Variables}):
 @end smallexample
 @end itemize
 
-  Global minor modes distributed with Emacs should if possible support
-enabling and disabling via Custom (@pxref{Customization}).  To do this,
-the first step is to define the mode variable with @code{defcustom}, and
-specify @code{:type 'boolean}.
+  In addition, several major mode conventions apply to minor modes as
+well: those regarding the names of global symbols, the use of a hook at
+the end of the initialization function, and the use of keymaps and other
+tables.
 
-  If just setting the variable is not sufficient to enable the mode, you
+  The minor mode should, if possible, support enabling and disabling via
+Custom (@pxref{Customization}).  To do this, the mode variable should be
+defined with @code{defcustom}, usually with @code{:type 'boolean}.  If
+just setting the variable is not sufficient to enable the mode, you
 should also specify a @code{:set} method which enables the mode by
-invoking the mode command.  Note in the variable's documentation string that
-setting the variable other than via Custom may not take effect.
-
-  Also mark the definition with an autoload cookie (@pxref{autoload cookie}),
-and specify a @code{:require} so that customizing the variable will load
-the library that defines the mode.  This will copy suitable definitions
-into @file{loaddefs.el} so that users can use @code{customize-option} to
-enable the mode.  For example:
+invoking the mode command.  Note in the variable's documentation string
+that setting the variable other than via Custom may not take effect.
+Also, mark the definition with an autoload cookie (@pxref{autoload
+cookie}), and specify a @code{:require} so that customizing the variable
+will load the library that defines the mode.  For example:
 
 @smallexample
 @group
-
 ;;;###autoload
 (defcustom msb-mode nil
   "Toggle msb-mode.
@@ -1474,15 +1594,20 @@ anything that can be used with the @code{setf} function
 @var{place} can also be a cons @code{(@var{get} . @var{set})},
 where @var{get} is an expression that returns the current state,
 and @var{set} is a function of one argument (a state) that sets it.
+
+@item :after-hook @var{after-hook}
+This defines a single lisp form which is evaluated after the mode hooks
+have run.  It should not be quoted.
 @end table
 
 Any other keyword arguments are passed directly to the
 @code{defcustom} generated for the variable @var{mode}.
 
-The command named @var{mode} first performs the standard actions such
-as setting the variable named @var{mode} and then executes the
-@var{body} forms, if any.  It finishes by running the mode hook
-variable @code{@var{mode}-hook}.
+The command named @var{mode} first performs the standard actions such as
+setting the variable named @var{mode} and then executes the @var{body}
+forms, if any.  It then runs the mode hook variable
+@code{@var{mode}-hook} and finishes by evaluating any form in
+@code{:after-hook}.
 @end defmac
 
   The initial value must be @code{nil} except in cases where (1) the
@@ -1579,7 +1704,7 @@ mode's hook.
 
 
 @node Mode Line Format
-@section Mode-Line Format
+@section Mode Line Format
 @cindex mode line
 
   Each Emacs window (aside from minibuffer windows) typically has a mode
@@ -1609,61 +1734,59 @@ minor modes.
 @node Mode Line Basics
 @subsection Mode Line Basics
 
-  @code{mode-line-format} is a buffer-local variable that holds a
-@dfn{mode line construct}, a kind of template, which controls what is
-displayed on the mode line of the current buffer.  The value of
-@code{header-line-format} specifies the buffer's header line in the
-same way.  All windows for the same buffer use the same
+  The contents of each mode line are specified by the buffer-local
+variable @code{mode-line-format} (@pxref{Mode Line Top}).  This variable
+holds a @dfn{mode line construct}: a template that controls what is
+displayed on the buffer's mode line.  The value of
+@code{header-line-format} specifies the buffer's header line in the same
+way.  All windows for the same buffer use the same
 @code{mode-line-format} and @code{header-line-format}.
 
-  For efficiency, Emacs does not continuously recompute the mode
-line and header line of a window.  It does so when circumstances
-appear to call for it---for instance, if you change the window
-configuration, switch buffers, narrow or widen the buffer, scroll, or
-change the buffer's modification status.  If you modify any of the
-variables referenced by @code{mode-line-format} (@pxref{Mode Line
-Variables}), or any other variables and data structures that affect
-how text is displayed (@pxref{Display}), you may want to force an
-update of the mode line so as to display the new information or
-display it in the new way.
+  For efficiency, Emacs does not continuously recompute each window's
+mode line and header line.  It does so when circumstances appear to call
+for it---for instance, if you change the window configuration, switch
+buffers, narrow or widen the buffer, scroll, or modify the buffer.  If
+you alter any of the variables referenced by @code{mode-line-format} or
+@code{header-line-format} (@pxref{Mode Line Variables}), or any other
+data structures that affect how text is displayed (@pxref{Display}), you
+should use the function @code{force-mode-line-update} to update the
+display.
 
 @defun force-mode-line-update &optional all
-Force redisplay of the current buffer's mode line and header line.
-The next redisplay will update the mode line and header line based on
-the latest values of all relevant variables.  With optional
-non-@code{nil} @var{all}, force redisplay of all mode lines and header
-lines.
-
-This function also forces recomputation of the menu bar menus
-and the frame title.
+This function forces Emacs to update the current buffer's mode line and
+header line, based on the latest values of all relevant variables,
+during its next redisplay cycle.  If the optional argument @var{all} is
+non-@code{nil}, it forces an update for all mode lines and header lines.
+
+This function also forces an update of the menu bar and frame title.
 @end defun
 
   The selected window's mode line is usually displayed in a different
-color using the face @code{mode-line}.  Other windows' mode lines
-appear in the face @code{mode-line-inactive} instead.  @xref{Faces}.
+color using the face @code{mode-line}.  Other windows' mode lines appear
+in the face @code{mode-line-inactive} instead.  @xref{Faces}.
 
 @node Mode Line Data
 @subsection The Data Structure of the Mode Line
-@cindex mode-line construct
+@cindex mode line construct
 
-  The mode-line contents are controlled by a data structure called a
-@dfn{mode-line construct}, made up of lists, strings, symbols, and
+  The mode line contents are controlled by a data structure called a
+@dfn{mode line construct}, made up of lists, strings, symbols, and
 numbers kept in buffer-local variables.  Each data type has a specific
-meaning for the mode-line appearance, as described below.  The same
-data structure is used for constructing frame titles (@pxref{Frame
-Titles}) and header lines (@pxref{Header Lines}).
+meaning for the mode line appearance, as described below.  The same data
+structure is used for constructing frame titles (@pxref{Frame Titles})
+and header lines (@pxref{Header Lines}).
 
-  A mode-line construct may be as simple as a fixed string of text,
+  A mode line construct may be as simple as a fixed string of text,
 but it usually specifies how to combine fixed strings with variables'
 values to construct the text.  Many of these variables are themselves
-defined to have mode-line constructs as their values.
+defined to have mode line constructs as their values.
 
-  Here are the meanings of various data types as mode-line constructs:
+  Here are the meanings of various data types as mode line constructs:
 
 @table @code
 @cindex percent symbol in mode line
 @item @var{string}
-A string as a mode-line construct appears verbatim except for
+A string as a mode line construct appears verbatim except for
 @dfn{@code{%}-constructs} in it.  These stand for substitution of
 other data; see @ref{%-Constructs}.
 
@@ -1676,8 +1799,8 @@ default, in the face @code{mode-line} or @code{mode-line-inactive}
 special meanings.  @xref{Properties in Mode}.
 
 @item @var{symbol}
-A symbol as a mode-line construct stands for its value.  The value of
-@var{symbol} is used as a mode-line construct, in place of @var{symbol}.
+A symbol as a mode line construct stands for its value.  The value of
+@var{symbol} is used as a mode line construct, in place of @var{symbol}.
 However, the symbols @code{t} and @code{nil} are ignored, as is any
 symbol whose value is void.
 
@@ -1686,17 +1809,17 @@ displayed verbatim: the @code{%}-constructs are not recognized.
 
 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 @code{:eval} and @code{:propertize} forms in it.  (The
-reason for this is security: non-risky variables could be set
-automatically from file variables without prompting the user.)
+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
+@code{:eval} and @code{:propertize} forms in it.  (The reason for this
+is security: non-risky variables could be set automatically from file
+variables without prompting the user.)
 
 @item (@var{string} @var{rest}@dots{})
 @itemx (@var{list} @var{rest}@dots{})
 A list whose first element is a string or list means to process all the
 elements recursively and concatenate the results.  This is the most
-common form of mode-line construct.
+common form of mode line construct.
 
 @item (:eval @var{form})
 A list whose first element is the symbol @code{:eval} says to evaluate
@@ -1706,24 +1829,24 @@ recursion.
 
 @item (:propertize @var{elt} @var{props}@dots{})
 A list whose first element is the symbol @code{:propertize} says to
-process the mode-line construct @var{elt} recursively, then add the text
+process the mode line construct @var{elt} recursively, then add the text
 properties specified by @var{props} to the result.  The argument
 @var{props} should consist of zero or more pairs @var{text-property}
-@var{value}.  (This feature is new as of Emacs 22.1.)
+@var{value}.
 
 @item (@var{symbol} @var{then} @var{else})
 A list whose first element is a symbol that is not a keyword specifies
 a conditional.  Its meaning depends on the value of @var{symbol}.  If
 @var{symbol} has a non-@code{nil} value, the second element,
-@var{then}, is processed recursively as a mode-line element.
+@var{then}, is processed recursively as a mode line element.
 Otherwise, the third element, @var{else}, is processed recursively.
-You may omit @var{else}; then the mode-line element displays nothing
+You may omit @var{else}; then the mode line element displays nothing
 if the value of @var{symbol} is @code{nil} or void.
 
 @item (@var{width} @var{rest}@dots{})
 A list whose first element is an integer specifies truncation or
 padding of the results of @var{rest}.  The remaining elements
-@var{rest} are processed recursively as mode-line constructs and
+@var{rest} are processed recursively as mode line constructs and
 concatenated together.  When @var{width} is positive, the result is
 space filled on the right if its width is less than @var{width}.  When
 @var{width} is negative, the result is truncated on the right to
@@ -1740,12 +1863,12 @@ the top of the window is to use a list like this: @code{(-3 "%p")}.
 @code{mode-line-format}.
 
 @defopt mode-line-format
-The value of this variable is a mode-line construct that controls the
+The value of this variable is a mode line construct that controls the
 contents of the mode-line.  It is always buffer-local in all buffers.
 
-If you set this variable to @code{nil} in a buffer, that buffer does
-not have a mode line.  (A window that is just one line tall never
-displays a mode line.)
+If you set this variable to @code{nil} in a buffer, that buffer does not
+have a mode line.  (A window that is just one line tall also does not
+display a mode line.)
 @end defopt
 
   The default value of @code{mode-line-format} is designed to use the
@@ -1763,9 +1886,9 @@ the information in another fashion.  This way, customizations made by
 the user or by Lisp programs (such as @code{display-time} and major
 modes) via changes to those variables remain effective.
 
-  Here is an example of a @code{mode-line-format} that might be
-useful for @code{shell-mode}, since it contains the host name and default
-directory.
+  Here is a hypothetical example of a @code{mode-line-format} that might
+be useful for Shell mode (in reality, Shell mode does not set
+@code{mode-line-format}):
 
 @example
 @group
@@ -1778,7 +1901,7 @@ directory.
 @end group
 @group
    ;; @r{Note that this is evaluated while making the list.}
-   ;; @r{It makes a mode-line construct which is just a string.}
+   ;; @r{It makes a mode line construct which is just a string.}
    (getenv "HOST")
 @end group
    ":"
@@ -1795,8 +1918,7 @@ directory.
    '(which-func-mode ("" which-func-format "--"))
    '(line-number-mode "L%l--")
    '(column-number-mode "C%c--")
-   '(-3 "%p")
-   "-%-"))
+   '(-3 "%p")))
 @end group
 @end example
 
@@ -1808,23 +1930,23 @@ these variable names are also the minor mode command names.)
 @node Mode Line Variables
 @subsection Variables Used in the Mode Line
 
-  This section describes variables incorporated by the standard value
-of @code{mode-line-format} into the text of the mode line.  There is
+  This section describes variables incorporated by the standard value of
+@code{mode-line-format} into the text of the mode line.  There is
 nothing inherently special about these variables; any other variables
-could have the same effects on the mode line if
-@code{mode-line-format}'s value were changed to use them.  However,
-various parts of Emacs set these variables on the understanding that
-they will control parts of the mode line; therefore, practically
-speaking, it is essential for the mode line to use them.
+could have the same effects on the mode line if the value of
+@code{mode-line-format} is changed to use them.  However, various parts
+of Emacs set these variables on the understanding that they will control
+parts of the mode line; therefore, practically speaking, it is essential
+for the mode line to use them.
 
 @defvar mode-line-mule-info
-This variable holds the value of the mode-line construct that displays
+This variable holds the value of the mode line construct that displays
 information about the language environment, buffer coding system, and
 current input method.  @xref{Non-ASCII Characters}.
 @end defvar
 
 @defvar mode-line-modified
-This variable holds the value of the mode-line construct that displays
+This variable holds the value of the mode line construct that displays
 whether the current buffer is modified.  Its default value displays
 @samp{**} if the buffer is modified, @samp{--} if the buffer is not
 modified, @samp{%%} if the buffer is read only, and @samp{%*} if the
@@ -1887,7 +2009,7 @@ identify the mode name in the mode line, use @code{format-mode-line}
 @end defvar
 
 @defvar mode-line-process
-This buffer-local variable contains the mode-line information on process
+This buffer-local variable contains the mode line information on process
 status in modes used for communicating with subprocesses.  It is
 displayed immediately following the major mode name, with no intervening
 space.  For example, its value in the @samp{*shell*} buffer is
@@ -1906,12 +2028,12 @@ the @code{minor-mode-alist} should be a two-element list:
 (@var{minor-mode-variable} @var{mode-line-string})
 @end example
 
-More generally, @var{mode-line-string} can be any mode-line spec.  It
-appears in the mode line when the value of @var{minor-mode-variable}
+More generally, @var{mode-line-string} can be any mode line construct.
+It appears in the mode line when the value of @var{minor-mode-variable}
 is non-@code{nil}, and not otherwise.  These strings should begin with
 spaces so that they don't run together.  Conventionally, the
-@var{minor-mode-variable} for a specific mode is set to a
-non-@code{nil} value when that minor mode is activated.
+@var{minor-mode-variable} for a specific mode is set to a non-@code{nil}
+value when that minor mode is activated.
 
 @code{minor-mode-alist} itself is not buffer-local.  Each variable
 mentioned in the alist should be buffer-local if its minor mode can be
@@ -1919,12 +2041,12 @@ enabled separately in each buffer.
 @end defvar
 
 @defvar global-mode-string
-This variable holds a mode-line spec that, by default, appears in the
-mode line just after the @code{which-func-mode} minor mode if set,
-else after @code{mode-line-modes}.  The command @code{display-time}
-sets @code{global-mode-string} to refer to the variable
-@code{display-time-string}, which holds a string containing the time
-and load information.
+This variable holds a mode line construct that, by default, appears in
+the mode line just after the @code{which-func-mode} minor mode if set,
+else after @code{mode-line-modes}.  The command @code{display-time} sets
+@code{global-mode-string} to refer to the variable
+@code{display-time-string}, which holds a string containing the time and
+load information.
 
 The @samp{%M} construct substitutes the value of
 @code{global-mode-string}, but that is obsolete, since the variable is
@@ -1958,7 +2080,7 @@ specifies addition of text properties.
 @node %-Constructs
 @subsection @code{%}-Constructs in the Mode Line
 
-  Strings used as mode-line constructs can use certain
+  Strings used as mode line constructs can use certain
 @code{%}-constructs to substitute various kinds of data.  Here is a
 list of the defined @code{%}-constructs, and what they mean.  In any
 construct except @samp{%%}, you can add a decimal integer after the
@@ -2004,8 +2126,8 @@ of the buffer.
 
 @item %p
 The percentage of the buffer text above the @strong{top} of window, or
-@samp{Top}, @samp{Bottom} or @samp{All}.  Note that the default
-mode-line specification truncates this to three characters.
+@samp{Top}, @samp{Bottom} or @samp{All}.  Note that the default mode
+line construct truncates this to three characters.
 
 @item %P
 The percentage of the buffer text that is above the @strong{bottom} of
@@ -2085,11 +2207,11 @@ line:
 
 @enumerate
 @item
-Put a string with a text property directly into the mode-line data
+Put a string with a text property directly into the mode line data
 structure.
 
 @item
-Put a text property on a mode-line %-construct such as @samp{%12b}; then
+Put a text property on a mode line %-construct such as @samp{%12b}; then
 the expansion of the %-construct will have that same text property.
 
 @item
@@ -2097,7 +2219,7 @@ Use a @code{(:propertize @var{elt} @var{props}@dots{})} construct to
 give @var{elt} a text property specified by @var{props}.
 
 @item
-Use a list containing @code{:eval @var{form}} in the mode-line data
+Use a list containing @code{:eval @var{form}} in the mode line data
 structure, and make @var{form} evaluate to a string that has a text
 property.
 @end enumerate
@@ -2119,10 +2241,10 @@ local variables.
 @cindex header line (of a window)
 @cindex window header line
 
-  A window can have a @dfn{header line} at the
-top, just as it can have a mode line at the bottom.  The header line
-feature works just like the mode-line feature, except that it's
-controlled by different variables.
+  A window can have a @dfn{header line} at the top, just as it can have
+a mode line at the bottom.  The header line feature works just like the
+mode line feature, except that it's controlled by
+@code{header-line-format}:
 
 @defvar header-line-format
 This variable, local in every buffer, specifies how to display the
@@ -2137,11 +2259,11 @@ header line at once; if it has a mode line, then it does not display a
 header line.
 
 @node Emulating Mode Line
-@subsection Emulating Mode-Line Formatting
+@subsection Emulating Mode Line Formatting
 
-  You can use the function @code{format-mode-line} to compute
-the text that would appear in a mode line or header line
-based on a certain mode-line specification.
+  You can use the function @code{format-mode-line} to compute the text
+that would appear in a mode line or header line based on a certain
+mode line construct.
 
 @defun format-mode-line format &optional face window buffer
 This function formats a line of text according to @var{format} as if it
@@ -2375,12 +2497,12 @@ Setting this variable makes it buffer-local in the current buffer.
 @section Font Lock Mode
 @cindex Font Lock mode
 
-  @dfn{Font Lock mode} is a feature that automatically attaches
-@code{face} properties to certain parts of the buffer based on their
-syntactic role.  How it parses the buffer depends on the major mode;
-most major modes define syntactic criteria for which faces to use in
-which contexts.  This section explains how to customize Font Lock for a
-particular major mode.
+  @dfn{Font Lock mode} is a buffer-local minor mode that automatically
+attaches @code{face} properties to certain parts of the buffer based on
+their syntactic role.  How it parses the buffer depends on the major
+mode; most major modes define syntactic criteria for which faces to use
+in which contexts.  This section explains how to customize Font Lock for
+particular major mode.
 
   Font Lock mode finds text to highlight in two ways: through
 syntactic parsing based on the syntax table, and through searching
@@ -2399,8 +2521,6 @@ Search-based fontification happens second.
                                   contents can also specify how to fontify it.
 * Faces for Font Lock::         Special faces specifically for Font Lock.
 * Syntactic Font Lock::         Fontification based on syntax tables.
-* Setting Syntax Properties::   Defining character syntax based on context
-                                  using the Font Lock mechanism.
 * Multiline Font Lock::         How to coerce Font Lock into properly
                                   highlighting multiline constructs.
 @end menu
@@ -2415,12 +2535,12 @@ variable.  The value assigned to this variable is used, if and when Font
 Lock mode is enabled, to set all the other variables.
 
 @defvar font-lock-defaults
-This variable is set by major modes, as a buffer-local variable, to
-specify how to fontify text in that mode.  It automatically becomes
-buffer-local when you set it.  If its value is @code{nil}, Font-Lock
-mode does no highlighting, and you can use the @samp{Faces} menu
-(under @samp{Edit} and then @samp{Text Properties} in the menu bar) to
-assign faces explicitly to text in the buffer.
+This variable is set by major modes to specify how to fontify text in
+that mode.  It automatically becomes buffer-local when set.  If its
+value is @code{nil}, Font Lock mode does no highlighting, and you can
+use the @samp{Faces} menu (under @samp{Edit} and then @samp{Text
+Properties} in the menu bar) to assign faces explicitly to text in the
+buffer.
 
 If non-@code{nil}, the value should look like this:
 
@@ -2443,19 +2563,20 @@ value.  @xref{Levels of Font Lock}.
 The second element, @var{keywords-only}, specifies the value of the
 variable @code{font-lock-keywords-only}.  If this is omitted or
 @code{nil}, syntactic fontification (of strings and comments) is also
-performed.  If this is non-@code{nil}, such fontification is not
+performed.  If this is non-@code{nil}, syntactic fontification is not
 performed.  @xref{Syntactic Font Lock}.
 
 The third element, @var{case-fold}, specifies the value of
 @code{font-lock-keywords-case-fold-search}.  If it is non-@code{nil},
-Font Lock mode ignores case when searching as directed by
-@code{font-lock-keywords}.
+Font Lock mode ignores case during search-based fontification.
 
-If the fourth element, @var{syntax-alist}, is non-@code{nil}, it
-should be a list of cons cells of the form @code{(@var{char-or-string}
-. @var{string})}.  These are used to set up a syntax table for
-syntactic fontification (@pxref{Syntax Table Functions}).  The
-resulting syntax table is stored in @code{font-lock-syntax-table}.
+If the fourth element, @var{syntax-alist}, is non-@code{nil}, it should
+be a list of cons cells of the form @code{(@var{char-or-string}
+. @var{string})}.  These are used to set up a syntax table for syntactic
+fontification; the resulting syntax table is stored in
+@code{font-lock-syntax-table}.  If @var{syntax-alist} is omitted or
+@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
@@ -2481,15 +2602,17 @@ fontification for other parts of the text.
 @node Search-based Fontification
 @subsection Search-based Fontification
 
-  The most important variable for customizing Font Lock mode is
-@code{font-lock-keywords}.  It specifies the search criteria for
-search-based fontification.  You should specify the value of this
-variable with @var{keywords} in @code{font-lock-defaults}.
+  The variable which directly controls search-based fontification is
+@code{font-lock-keywords}, which is typically specified via the
+@var{keywords} element in @code{font-lock-defaults}.
 
 @defvar font-lock-keywords
-This variable's value is a list of the keywords to highlight.  Be
-careful when composing regular expressions for this list; a poorly
-written pattern can dramatically slow things down!
+The value of this variable is a list of the keywords to highlight.  Lisp
+programs should not set this variable directly.  Normally, the value is
+automatically set by Font Lock mode, using the @var{keywords} element in
+@code{font-lock-defaults}.  The value can also be altered using the
+functions @code{font-lock-add-keywords} and
+@code{font-lock-remove-keywords} (@pxref{Customizing Keywords}).
 @end defvar
 
   Each element of @code{font-lock-keywords} specifies how to find
@@ -2514,9 +2637,10 @@ Highlight all matches for @var{regexp} using
 "\\<foo\\>"
 @end example
 
-The function @code{regexp-opt} (@pxref{Regexp Functions}) is useful
-for calculating optimal regular expressions to match a number of
-different keywords.
+Be careful when composing these regular expressions; a poorly written
+pattern can dramatically slow things down!  The function
+@code{regexp-opt} (@pxref{Regexp Functions}) is useful for calculating
+optimal regular expressions to match several keywords.
 
 @item @var{function}
 Find text by calling @var{function}, and highlight the matches
@@ -2741,7 +2865,7 @@ highlighting patterns.  See the variables
 @code{c-font-lock-extra-types}, @code{c++-font-lock-extra-types},
 and @code{java-font-lock-extra-types}, for example.
 
-@strong{Warning:} major mode commands must not call
+@strong{Warning:} Major mode commands must not call
 @code{font-lock-add-keywords} under any circumstances, either directly
 or indirectly, except through their mode hooks.  (Doing so would lead to
 incorrect behavior for some minor modes.)  They should set up their
@@ -2757,7 +2881,10 @@ command name or @code{nil}.  All the caveats and requirements for
 @code{font-lock-add-keywords} apply here too.
 @end defun
 
-  For example, this code
+  For example, the following code adds two fontification patterns for C
+mode: one to fontify the word @samp{FIXME}, even in comments, and
+another to fontify the words @samp{and}, @samp{or} and @samp{not} as
+keywords.
 
 @smallexample
 (font-lock-add-keywords 'c-mode
@@ -2766,13 +2893,8 @@ command name or @code{nil}.  All the caveats and requirements for
 @end smallexample
 
 @noindent
-adds two fontification patterns for C mode: one to fontify the word
-@samp{FIXME}, even in comments, and another to fontify the words
-@samp{and}, @samp{or} and @samp{not} as keywords.
-
-@noindent
-That example affects only C mode proper.  To add the same patterns to
-C mode @emph{and} all modes derived from it, do this instead:
+This example affects only C mode proper.  To add the same patterns to C
+mode @emph{and} all modes derived from it, do this instead:
 
 @smallexample
 (add-hook 'c-mode-hook
@@ -2859,13 +2981,13 @@ function using @code{jit-lock-register}, this function unregisters it.
 @node Levels of Font Lock
 @subsection Levels of Font Lock
 
-  Many major modes offer three different levels of fontification.  You
+  Some major modes offer three different levels of fontification.  You
 can define multiple levels by using a list of symbols for @var{keywords}
 in @code{font-lock-defaults}.  Each symbol specifies one level of
 fontification; it is up to the user to choose one of these levels,
 normally by setting @code{font-lock-maximum-decoration} (@pxref{Font
-Lock,,, emacs, the GNU Emacs Manual}).  The chosen level's symbol
-value is used to initialize @code{font-lock-keywords}.
+Lock,,, emacs, the GNU Emacs Manual}).  The chosen level's symbol value
+is used to initialize @code{font-lock-keywords}.
 
   Here are the conventions for how to define the levels of
 fontification:
@@ -2913,10 +3035,10 @@ the normal Font Lock machinery, it should not set the variable
 @cindex font lock faces
 
   Font Lock mode can highlight using any face, but Emacs defines several
-faces specifically for syntactic highlighting.  These @dfn{Font Lock
-faces} are listed below.  They can also be used by major modes for
-syntactic highlighting outside of Font Lock mode (@pxref{Major Mode
-Conventions}).
+faces specifically for Font Lock to use to highlight text.  These
+@dfn{Font Lock faces} are listed below.  They can also be used by major
+modes for syntactic highlighting outside of Font Lock mode (@pxref{Major
+Mode Conventions}).
 
   Each of these symbols is both a face name, and a variable whose
 default value is the symbol itself.  Thus, the default value of
@@ -2991,128 +3113,66 @@ for easily-overlooked negation characters.
 @subsection Syntactic Font Lock
 @cindex syntactic font lock
 
-Syntactic fontification uses the syntax table to find comments and
-string constants (@pxref{Syntax Tables}).  It highlights them using
-@code{font-lock-comment-face} and @code{font-lock-string-face}
-(@pxref{Faces for Font Lock}), or whatever
-@code{font-lock-syntactic-face-function} chooses.  There are several
-variables that affect syntactic fontification; you should set them by
-means of @code{font-lock-defaults} (@pxref{Font Lock Basics}).
+Syntactic fontification uses a syntax table (@pxref{Syntax Tables}) to
+find and highlight syntactically relevant text.  If enabled, it runs
+prior to search-based fontification.  The variable
+@code{font-lock-syntactic-face-function}, documented below, determines
+which syntactic constructs to highlight.  There are several variables
+that affect syntactic fontification; you should set them by means of
+@code{font-lock-defaults} (@pxref{Font Lock Basics}).
+
+  Whenever Font Lock mode performs syntactic fontification on a stretch
+of text, it first calls the function specified by
+@code{syntax-propertize-function}.  Major modes can use this to apply
+@code{syntax-table} text properties to override the buffer's syntax
+table in special cases.  @xref{Syntax Properties}.
 
 @defvar font-lock-keywords-only
-Non-@code{nil} means Font Lock should not do syntactic fontification;
-it should only fontify based on @code{font-lock-keywords}.  The normal
-way for a mode to set this variable to @code{t} is with
-@var{keywords-only} in @code{font-lock-defaults}.
+If the value of this variable is non-@code{nil}, Font Lock does not do
+syntactic fontification, only search-based fontification based on
+@code{font-lock-keywords}.  It is normally set by Font Lock mode based
+on the @var{keywords-only} element in @code{font-lock-defaults}.
 @end defvar
 
 @defvar font-lock-syntax-table
 This variable holds the syntax table to use for fontification of
-comments and strings.  Specify it using @var{syntax-alist} in
-@code{font-lock-defaults}.  If this is @code{nil}, fontification uses
-the buffer's syntax table.
+comments and strings.  It is normally set by Font Lock mode based on the
+@var{syntax-alist} element in @code{font-lock-defaults}.  If this value
+is @code{nil}, syntactic fontification uses the buffer's syntax table
+(the value returned by the function @code{syntax-table}; @pxref{Syntax
+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.  Font Lock uses this when necessary
-to get the right results for syntactic fontification.
-
-This 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
+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.
-
-If the value is @code{nil}, Font Lock uses
-@code{syntax-begin-function} to move back outside of any comment,
-string, or sexp.  This variable is semi-obsolete; we recommend setting
-@code{syntax-begin-function} instead.
-
-Specify this variable using @var{syntax-begin} in
-@code{font-lock-defaults}.
 @end defvar
 
 @defvar font-lock-syntactic-face-function
-A function to determine which face to use for a given syntactic
-element (a string or a comment).  The function is called with one
-argument, the parse state at point returned by
-@code{parse-partial-sexp}, and should return a face.  The default
-value returns @code{font-lock-comment-face} for comments and
-@code{font-lock-string-face} for strings.
-
-This can be used to highlighting different kinds of strings or
-comments differently.  It is also sometimes abused together with
-@code{font-lock-syntactic-keywords} to highlight constructs that span
-multiple lines, but this is too esoteric to document here.
-
-Specify this variable using @var{other-vars} in
+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).
+The value is normally set through an @var{other-vars} element in
 @code{font-lock-defaults}.
-@end defvar
 
-@node Setting Syntax Properties
-@subsection Setting Syntax Properties
-
-  Font Lock mode can be used to update @code{syntax-table} properties
-automatically (@pxref{Syntax Properties}).  This is useful in
-languages for which a single syntax table by itself is not sufficient.
-
-@defvar font-lock-syntactic-keywords
-This variable enables and controls updating @code{syntax-table}
-properties by Font Lock.  Its value should be a list of elements of
-this form:
-
-@example
-(@var{matcher} @var{subexp} @var{syntax} @var{override} @var{laxmatch})
-@end example
-
-The parts of this element have the same meanings as in the corresponding
-sort of element of @code{font-lock-keywords},
-
-@example
-(@var{matcher} @var{subexp} @var{facespec} @var{override} @var{laxmatch})
-@end example
-
-However, instead of specifying the value @var{facespec} to use for the
-@code{face} property, it specifies the value @var{syntax} to use for
-the @code{syntax-table} property.  Here, @var{syntax} can be a string
-(as taken by @code{modify-syntax-entry}), a syntax table, a cons cell
-(as returned by @code{string-to-syntax}), or an expression whose value
-is one of those two types.  @var{override} cannot be @code{prepend} or
-@code{append}.
-
-For example, an element of the form:
-
-@example
-("\\$\\(#\\)" 1 ".")
-@end example
-
-highlights syntactically a hash character when following a dollar
-character, with a SYNTAX of @code{"."} (meaning punctuation syntax).
-Assuming that the buffer syntax table specifies hash characters to
-have comment start syntax, the element will only highlight hash
-characters that do not follow dollar characters as comments
-syntactically.
-
-An element of the form:
-
-@example
- ("\\('\\).\\('\\)"
-  (1 "\"")
-  (2 "\""))
-@end example
-
-highlights syntactically both single quotes which surround a single
-character, with a SYNTAX of @code{"\""} (meaning string quote syntax).
-Assuming that the buffer syntax table does not specify single quotes
-to have quote syntax, the element will only highlight single quotes of
-the form @samp{'@var{c}'} as strings syntactically.  Other forms, such
-as @samp{foo'bar} or @samp{'fubar'}, will not be highlighted as
-strings.
-
-Major modes normally set this variable with @var{other-vars} in
-@code{font-lock-defaults}.
+The function is called with one argument, the parse state at point
+returned by @code{parse-partial-sexp}, and should return a face.  The
+default value returns @code{font-lock-comment-face} for comments and
+@code{font-lock-string-face} for strings (@pxref{Faces for Font Lock}).
 @end defvar
 
 @node Multiline Font Lock
@@ -3221,18 +3281,17 @@ easy to add the @code{font-lock-multiline} property by hand.
 
   The @code{font-lock-multiline} property is meant to ensure proper
 refontification; it does not automatically identify new multiline
-constructs.  Identifying the requires that Font-Lock operate on large
-enough chunks at a time.  This will happen by accident on many cases,
-which may give the impression that multiline constructs magically work.
-If you set the @code{font-lock-multiline} variable non-@code{nil},
-this impression will be even stronger, since the highlighting of those
-constructs which are found will be properly updated from then on.
-But that does not work reliably.
-
-  To find multiline constructs reliably, you must either manually
-place the @code{font-lock-multiline} property on the text before
-Font-Lock looks at it, or use
-@code{font-lock-fontify-region-function}.
+constructs.  Identifying the requires that Font Lock mode operate on
+large enough chunks at a time.  This will happen by accident on many
+cases, which may give the impression that multiline constructs magically
+work.  If you set the @code{font-lock-multiline} variable
+non-@code{nil}, this impression will be even stronger, since the
+highlighting of those constructs which are found will be properly
+updated from then on.  But that does not work reliably.
+
+  To find multiline constructs reliably, you must either manually place
+the @code{font-lock-multiline} property on the text before Font Lock
+mode looks at it, or use @code{font-lock-fontify-region-function}.
 
 @node Region to Refontify
 @subsubsection Region to Fontify after a Buffer Change
@@ -3247,8 +3306,8 @@ earlier line.
 the following variable:
 
 @defvar font-lock-extend-after-change-region-function
-This buffer-local variable is either @code{nil} or a function for
-Font-Lock to call to determine the region to scan and fontify.
+This buffer-local variable is either @code{nil} or a function for Font
+Lock mode to call to determine the region to scan and fontify.
 
 The function is given three parameters, the standard @var{beg},
 @var{end}, and @var{old-len} from @code{after-change-functions}
@@ -3264,7 +3323,7 @@ reasonably fast.
 @end defvar
 
 @node Auto-Indentation
-@section Auto-indentation of code
+@section Automatic Indentation of code
 
 For programming languages, an important feature of a major mode is to
 provide automatic indentation.  This is controlled in Emacs by
@@ -3287,7 +3346,7 @@ for a compiler, but on the other hand, the parser embedded in the
 indentation code will want to be somewhat friendly to syntactically
 incorrect code.
 
-Good maintainable indentation functions usually fall into 2 categories:
+Good maintainable indentation functions usually fall into two categories:
 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
index 995a4d89352e868d07e349c12f72a2c90c6bd8b5..ba4803c73f26d96b007f1e68600a1ed4c28afc4e 100644 (file)
@@ -370,7 +370,7 @@ with other programming languages.  Unlike some other languages, Emacs
 Lisp supports this syntax only in character literals and strings.
 
 @cindex @samp{\} in character constant
-@cindex backslash in character constant
+@cindex backslash in character constants
 @cindex octal character code
   The most general read syntax for a character represents the
 character code in either octal or hex.  To use octal, write a question
index 4cfc954cd1fb5bb04d17277319f273cb1cea715c..8b25868cfe9145bdd64034cdf1bdc844aeafab87 100644 (file)
@@ -714,6 +714,9 @@ This command displays a listing of all living processes.  In addition,
 it finally deletes any process whose status was @samp{Exited} or
 @samp{Signaled}.  It returns @code{nil}.
 
+The processes are shown in a buffer named @samp{*Process List*}, whose
+major mode is named Process Menu mode.
+
 If @var{query-only} is non-@code{nil} then it lists only processes
 whose query flag is non-@code{nil}.  @xref{Query Before Exit}.
 @end deffn
@@ -1939,9 +1942,13 @@ queued but input may be lost.  You can use the function
 @code{process-command} to determine whether a network connection or
 server is stopped; a non-@code{nil} value means yes.
 
-@defun open-network-stream name buffer-or-name host service
-This function opens a TCP connection, and returns a process object
-that represents the connection.
+@cindex network connection, encrypted
+@cindex encrypted network connections
+@cindex TLS network connections
+@cindex STARTTLS network connections
+@defun open-network-stream name buffer-or-name host service &rest parameters
+This function opens a TCP connection, with optional encryption, and
+returns a process object that represents the connection.
 
 The @var{name} argument specifies the name for the process object.  It
 is modified as necessary to make it unique.
@@ -1955,6 +1962,83 @@ associated with any buffer.
 The arguments @var{host} and @var{service} specify where to connect to;
 @var{host} is the host name (a string), and @var{service} is the name of
 a defined network service (a string) or a port number (an integer).
+
+@c FIXME?  Is this too lengthy for the printed manual?
+The remaining arguments @var{parameters} are keyword/argument pairs
+that are mainly relevant to encrypted connections:
+
+@table @code
+
+@item :nowait @var{boolean}
+If non-@code{nil}, try to make an asynchronous connection.
+
+@item :type @var{type}
+The type of connection.  Options are:
+
+@table @code
+@item plain
+An ordinary, unencrypted connection.
+@item tls
+@itemx ssl
+A TLS (``Transport Layer Security'') connection.
+@item nil
+@itemx network
+Start with a plain connection, and if parameters @samp{:success}
+and @samp{:capability-command} are supplied, try to upgrade to an encrypted
+connection via STARTTLS.  If that fails, retain the unencrypted connection.
+@item starttls
+As for @code{nil}, but if STARTTLS fails drop the connection.
+@item shell
+A shell connection.
+@end table
+
+@item :always-query-capabilities @var{boolean}
+If non-@code{nil}, always ask for the server's capabilities, even when
+doing a @samp{plain} connection.
+
+@item :capability-command @var{capability-command}
+Command string to query the host capabilities.
+
+@item :end-of-command @var{regexp}
+@itemx :end-of-capability @var{regexp}
+Regular expression matching the end of a command, or the end of the
+command @var{capability-command}.  The latter defaults to the former.
+
+@item :starttls-function @var{function}
+Function of one argument (the response to @var{capability-command}),
+which returns either @code{nil}, or the command to activate STARTTLS
+if supported.
+
+@item :success @var{regexp}
+Regular expression matching a successful STARTTLS negotiation.
+
+@item :use-starttls-if-possible @var{boolean}
+If non-@code{nil}, do opportunistic STARTTLS upgrades even if Emacs
+doesn't have built-in TLS support.
+
+@item :client-certificate @var{list-or-t}
+Either a list of the form @code{(@var{key-file} @var{cert-file})},
+naming the certificate key file and certificate file itself, or
+@code{t}, meaning to query @code{auth-source} for this information
+(@pxref{Top,,auth-source, auth, Emacs auth-source Library}).
+Only used for TLS or STARTTLS.
+
+@item :return-list @var{cons-or-nil}
+The return value of this function.  If omitted or @code{nil}, return a
+process object.  Otherwise, a cons of the form @code{(@var{process-object}
+. @var{plist})}, where @var{plist} has keywords:
+
+@table @code
+@item :greeting @var{string-or-nil}
+If non-@code{nil}, the greeting string returned by the host.
+@item :capabilities @var{string-or-nil}
+If non-@code{nil}, the host's capability string.
+@item :type @var{symbol}
+The connection type: @samp{plain} or @samp{tls}.
+@end table
+
+@end table
+
 @end defun
 
 @node Network Servers
index 3dc777897c1604fc804bec606494298a134e6235..5bda1940b511dfc10d06d59444830fbc7600d8f5 100644 (file)
@@ -559,6 +559,7 @@ through @samp{f} and @samp{A} through @samp{F}.
 
 @node Regexp Backslash
 @subsubsection Backslash Constructs in Regular Expressions
+@cindex backslash in regular expressions
 
   For the most part, @samp{\} followed by any character matches only
 that character.  However, there are several exceptions: certain
index 36691624405bcc4b48126758ff007a03cff0b200..1628f32aa296ddc03a312d85f3551968f8a9a718 100644 (file)
@@ -266,12 +266,6 @@ reader encountered the open parenthesis, decided that it ended the
 input, and unread it.  Another attempt to read from the stream at this
 point would read @samp{()} and return @code{nil}.
 
-@defun get-file-char
-This function is used internally as an input stream to read from the
-input file opened by the function @code{load}.  Don't use this function
-yourself.
-@end defun
-
 @node Input Functions
 @section Input Functions
 
@@ -702,9 +696,8 @@ The default is @code{t}, meaning display in the echo area.
 
 @defvar print-quoted
 If this is non-@code{nil}, that means to print quoted forms using
-abbreviated reader syntax.  @code{(quote foo)} prints as @code{'foo},
-@code{(function foo)} as @code{#'foo}, and backquoted forms print
-using modern backquote syntax.
+abbreviated reader syntax, e.g.@: @code{(quote foo)} prints as
+@code{'foo}, and @code{(function foo)} as @code{#'foo}.
 @end defvar
 
 @defvar print-escape-newlines
index 3d153e43b2d810c57d7e58abd36d054a7b5e7d58..e2fb3238642121c586c4e8362d8b9b031b925f30 100644 (file)
 @cindex syntax table
 @cindex text parsing
 
-  A @dfn{syntax table} specifies the syntactic textual function of each
-character.  This information is used by the @dfn{parsing functions}, the
-complex movement commands, and others to determine where words, symbols,
-and other syntactic constructs begin and end.  The current syntax table
-controls the meaning of the word motion functions (@pxref{Word Motion})
-and the list motion functions (@pxref{List Motion}), as well as the
-functions in this chapter.
+  A @dfn{syntax table} specifies the syntactic role of each character
+in a buffer.  It can be used to determine where words, symbols, and
+other syntactic constructs begin and end.  This information is used by
+many Emacs facilities, including Font Lock mode (@pxref{Font Lock
+Mode}) and the various complex movement commands (@pxref{Motion}).
 
 @menu
 * Basics: Syntax Basics.     Basic concepts of syntax tables.
-* Desc: Syntax Descriptors.  How characters are classified.
+* Syntax Descriptors::       How characters are classified.
 * Syntax Table Functions::   How to create, examine and alter syntax tables.
 * Syntax Properties::        Overriding syntax with text properties.
 * Motion and Syntax::        Moving over characters with certain syntaxes.
@@ -34,17 +32,6 @@ functions in this chapter.
 @node Syntax Basics
 @section Syntax Table Concepts
 
-@ifnottex
-  A @dfn{syntax table} provides Emacs with the information that
-determines the syntactic use of each character in a buffer.  This
-information is used by the parsing commands, the complex movement
-commands, and others to determine where words, symbols, and other
-syntactic constructs begin and end.  The current syntax table controls
-the meaning of the word motion functions (@pxref{Word Motion}) and the
-list motion functions (@pxref{List Motion}) as well as the functions in
-this chapter.
-@end ifnottex
-
   A syntax table is a char-table (@pxref{Char-Tables}).  The element at
 index @var{c} describes the character with code @var{c}.  The element's
 value should be a list that encodes the syntax of the character in
@@ -57,16 +44,15 @@ provide ways to redefine the read syntax, but we decided to leave this
 feature out of Emacs Lisp for simplicity.)
 
   Each buffer has its own major mode, and each major mode has its own
-idea of the syntactic class of various characters.  For example, in Lisp
-mode, the character @samp{;} begins a comment, but in C mode, it
+idea of the syntactic class of various characters.  For example, in
+Lisp mode, the character @samp{;} begins a comment, but in C mode, it
 terminates a statement.  To support these variations, Emacs makes the
-choice of syntax table local to each buffer.  Typically, each major
-mode has its own syntax table and installs that table in each buffer
-that uses that mode.  Changing this table alters the syntax in all
-those buffers as well as in any buffers subsequently put in that mode.
-Occasionally several similar modes share one syntax table.
-@xref{Example Major Modes}, for an example of how to set up a syntax
-table.
+syntax table local to each buffer.  Typically, each major mode has its
+own syntax table and installs that table in each buffer that uses that
+mode.  Changing this table alters the syntax in all those buffers as
+well as in any buffers subsequently put in that mode.  Occasionally
+several similar modes share one syntax table.  @xref{Example Major
+Modes}, for an example of how to set up a syntax table.
 
 A syntax table can inherit the data for some characters from the
 standard syntax table, while specifying other characters itself.  The
@@ -82,30 +68,38 @@ This function returns @code{t} if @var{object} is a syntax table.
 @section Syntax Descriptors
 @cindex syntax class
 
-  This section describes the syntax classes and flags that denote the
-syntax of a character, and how they are represented as a @dfn{syntax
-descriptor}, which is a Lisp string that you pass to
-@code{modify-syntax-entry} to specify the syntax you want.
-
-  The syntax table specifies a syntax class for each character.  There
+  The syntactic role of a character is called its @dfn{syntax class}.
+Each syntax table specifies the syntax class of each character.  There
 is no necessary relationship between the class of a character in one
 syntax table and its class in any other table.
 
-  Each class is designated by a mnemonic character, which serves as the
-name of the class when you need to specify a class.  Usually the
-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 gives ``escape character'' syntax, regardless of what syntax
-@samp{\} currently has.
+  Each syntax class is designated by a mnemonic character, which
+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''
+syntax, regardless of whether the @samp{\} character actually has that
+syntax in the current syntax table.
+@ifnottex
+@xref{Syntax Class Table}, for a list of syntax classes.
+@end ifnottex
 
 @cindex syntax descriptor
-  A syntax descriptor is a Lisp string that specifies a syntax class, a
-matching character (used only for the parenthesis classes) and flags.
-The first character is the designator for a syntax class.  The second
-character is the character to match; if it is unused, put a space there.
-Then come the characters for any desired flags.  If no matching
-character or flags are needed, one character is sufficient.
+  A @dfn{syntax descriptor} is a Lisp string that describes the syntax
+classes and other syntactic properties of a character.  When you want
+to modify the syntax of a character, that is done by calling the
+function @code{modify-syntax-entry} and passing a syntax descriptor as
+one of its arguments (@pxref{Syntax Table Functions}).
+
+  The first character in a syntax descriptor designates the syntax
+class.  The second character specifies a matching character (e.g.@: in
+Lisp, the matching character for @samp{(} is @samp{)}); if there is no
+matching character, put a space there.  Then come the characters for
+any desired flags.
+
+  If no matching character or flags are needed, only one character
+(specifying the syntax class) is sufficient.
 
   For example, the syntax descriptor for the character @samp{*} in C
 mode is @code{". 23"} (i.e., punctuation, matching character slot
@@ -122,70 +116,58 @@ comment-starter, second character of a comment-ender).
 @node Syntax Class Table
 @subsection Table of Syntax Classes
 
-  Here is a table of syntax classes, the characters that stand for them,
-their meanings, and examples of their use.
-
-@deffn {Syntax class} @w{whitespace character}
-@dfn{Whitespace characters} (designated by @w{@samp{@ }} or @samp{-})
-separate symbols and words from each other.  Typically, whitespace
-characters have no other syntactic significance, and multiple
-whitespace characters are syntactically equivalent to a single one.
-Space, tab, and formfeed are classified as whitespace in almost all
-major modes.
-@end deffn
-
-@deffn {Syntax class} @w{word constituent}
-@dfn{Word constituents} (designated by @samp{w}) are parts of words in
-human languages, and are typically used in variable and command names
-in programs.  All upper- and lower-case letters, and the digits, are
-typically word constituents.
-@end deffn
+  Here is a table of syntax classes, the characters that designate
+them, their meanings, and examples of their use.
 
-@deffn {Syntax class} @w{symbol constituent}
-@dfn{Symbol constituents} (designated by @samp{_}) are the extra
-characters that are used in variable and command names along with word
-constituents.  For example, the symbol constituents class is used in
-Lisp mode to indicate that certain characters may be part of symbol
-names even though they are not part of English words.  These characters
-are @samp{$&*+-_<>}.  In standard C, the only non-word-constituent
+@table @asis
+@item Whitespace characters: @samp{@ } or @samp{-}
+Characters that separate symbols and words from each other.
+Typically, whitespace characters have no other syntactic significance,
+and multiple whitespace characters are syntactically equivalent to a
+single one.  Space, tab, and formfeed are classified as whitespace in
+almost all major modes.
+
+This syntax class can be designated by either @w{@samp{@ }} or
+@samp{-}.  Both designators are equivalent.
+
+@item Word constituents: @samp{w}
+Parts of words in human languages.  These are typically used in
+variable and command names in programs.  All upper- and lower-case
+letters, and the digits, are typically word constituents.
+
+@item Symbol constituents: @samp{_}
+Extra characters used in variable and command names along with word
+constituents.  Examples include the characters @samp{$&*+-_<>} in Lisp
+mode, which may be part of a symbol name even though they are not part
+of English words.  In standard C, the only non-word-constituent
 character that is valid in symbols is underscore (@samp{_}).
-@end deffn
-
-@deffn {Syntax class} @w{punctuation character}
-@dfn{Punctuation characters} (designated by @samp{.}) are those
-characters that are used as punctuation in English, or are used in some
-way in a programming language to separate symbols from one another.
-Some programming language modes, such as Emacs Lisp mode, have no
-characters in this class since the few characters that are not symbol or
-word constituents all have other uses.  Other programming language modes,
-such as C mode, use punctuation syntax for operators.
-@end deffn
 
-@deffn {Syntax class} @w{open parenthesis character}
-@deffnx {Syntax class} @w{close parenthesis character}
-@cindex parenthesis syntax
-Open and close @dfn{parenthesis characters} are characters used in
-dissimilar pairs to surround sentences or expressions.  Such a grouping
-is begun with an open parenthesis character and terminated with a close.
-Each open parenthesis character matches a particular close parenthesis
-character, and vice versa.  Normally, Emacs indicates momentarily the
-matching open parenthesis when you insert a close parenthesis.
-@xref{Blinking}.
-
-The class of open parentheses is designated by @samp{(}, and that of
-close parentheses by @samp{)}.
-
-In English text, and in C code, the parenthesis pairs are @samp{()},
-@samp{[]}, and @samp{@{@}}.  In Emacs Lisp, the delimiters for lists and
-vectors (@samp{()} and @samp{[]}) are classified as parenthesis
-characters.
-@end deffn
-
-@deffn {Syntax class} @w{string quote}
-@dfn{String quote characters} (designated by @samp{"}) are used in
-many languages, including Lisp and C, to delimit string constants.  The
-same string quote character appears at the beginning and the end of a
-string.  Such quoted strings do not nest.
+@item Punctuation characters: @samp{.}
+Characters used as punctuation in a human language, or used in a
+programming language to separate symbols from one another.  Some
+programming language modes, such as Emacs Lisp mode, have no
+characters in this class since the few characters that are not symbol
+or word constituents all have other uses.  Other programming language
+modes, such as C mode, use punctuation syntax for operators.
+
+@item Open parenthesis characters: @samp{(}
+@itemx Close parenthesis characters: @samp{)}
+Characters used in dissimilar pairs to surround sentences or
+expressions.  Such a grouping is begun with an open parenthesis
+character and terminated with a close.  Each open parenthesis
+character matches a particular close parenthesis character, and vice
+versa.  Normally, Emacs indicates momentarily the matching open
+parenthesis when you insert a close parenthesis.  @xref{Blinking}.
+
+In human languages, and in C code, the parenthesis pairs are
+@samp{()}, @samp{[]}, and @samp{@{@}}.  In Emacs Lisp, the delimiters
+for lists and vectors (@samp{()} and @samp{[]}) are classified as
+parenthesis characters.
+
+@item String quotes: @samp{"}
+Characters used to delimit string constants.  The same string quote
+character appears at the beginning and the end of a string.  Such
+quoted strings do not nest.
 
 The parsing facilities of Emacs consider a string as a single token.
 The usual syntactic meanings of the characters in the string are
@@ -197,94 +179,79 @@ is used in Common Lisp.  C also has two string quote characters:
 double-quote for strings, and single-quote (@samp{'}) for character
 constants.
 
-English text has no string quote characters because English is not a
-programming language.  Although quotation marks are used in English,
-we do not want them to turn off the usual syntactic properties of
-other characters in the quotation.
-@end deffn
+Human text has no string quote characters.  We do not want quotation
+marks to turn off the usual syntactic properties of other characters
+in the quotation.
 
-@deffn {Syntax class} @w{escape-syntax character}
-An @dfn{escape character} (designated by @samp{\}) starts an escape
-sequence such as is used in C string and character constants.  The
-character @samp{\} belongs to this class in both C and Lisp.  (In C, it
-is used thus only inside strings, but it turns out to cause no trouble
-to treat it this way throughout C code.)
+@item Escape-syntax characters: @samp{\}
+Characters that start an escape sequence, such as is used in string
+and character constants.  The character @samp{\} belongs to this class
+in both C and Lisp.  (In C, it is used thus only inside strings, but
+it turns out to cause no trouble to treat it this way throughout C
+code.)
 
 Characters in this class count as part of words if
 @code{words-include-escapes} is non-@code{nil}.  @xref{Word Motion}.
-@end deffn
 
-@deffn {Syntax class} @w{character quote}
-A @dfn{character quote character} (designated by @samp{/}) quotes the
-following character so that it loses its normal syntactic meaning.  This
-differs from an escape character in that only the character immediately
-following is ever affected.
+@item Character quotes: @samp{/}
+Characters used to quote the following character so that it loses its
+normal syntactic meaning.  This differs from an escape character in
+that only the character immediately following is ever affected.
 
 Characters in this class count as part of words if
 @code{words-include-escapes} is non-@code{nil}.  @xref{Word Motion}.
 
 This class is used for backslash in @TeX{} mode.
-@end deffn
-
-@deffn {Syntax class} @w{paired delimiter}
-@dfn{Paired delimiter characters} (designated by @samp{$}) are like
-string quote characters except that the syntactic properties of the
-characters between the delimiters are not suppressed.  Only @TeX{} mode
-uses a paired delimiter presently---the @samp{$} that both enters and
-leaves math mode.
-@end deffn
-
-@deffn {Syntax class} @w{expression prefix}
-An @dfn{expression prefix operator} (designated by @samp{'}) is used for
-syntactic operators that are considered as part of an expression if they
-appear next to one.  In Lisp modes, these characters include the
-apostrophe, @samp{'} (used for quoting), the comma, @samp{,} (used in
-macros), and @samp{#} (used in the read syntax for certain data types).
-@end deffn
 
-@deffn {Syntax class} @w{comment starter}
-@deffnx {Syntax class} @w{comment ender}
+@item Paired delimiters: @samp{$}
+Similar to string quote characters, except that the syntactic
+properties of the characters between the delimiters are not
+suppressed.  Only @TeX{} mode uses a paired delimiter presently---the
+@samp{$} that both enters and leaves math mode.
+
+@item Expression prefixes: @samp{'}
+Characters used for syntactic operators that are considered as part of
+an expression if they appear next to one.  In Lisp modes, these
+characters include the apostrophe, @samp{'} (used for quoting), the
+comma, @samp{,} (used in macros), and @samp{#} (used in the read
+syntax for certain data types).
+
+@item Comment starters: @samp{<}
+@itemx Comment enders: @samp{>}
 @cindex comment syntax
-The @dfn{comment starter} and @dfn{comment ender} characters are used in
-various languages to delimit comments.  These classes are designated
-by @samp{<} and @samp{>}, respectively.
+Characters used in various languages to delimit comments.  Human text
+has no comment characters.  In Lisp, the semicolon (@samp{;}) starts a
+comment and a newline or formfeed ends one.
 
-English text has no comment characters.  In Lisp, the semicolon
-(@samp{;}) starts a comment and a newline or formfeed ends one.
-@end deffn
-
-@deffn {Syntax class} @w{inherit standard syntax}
-This syntax class does not specify a particular syntax.  It says to look
-in the standard syntax table to find the syntax of this character.  The
-designator for this syntax class is @samp{@@}.
-@end deffn
+@item Inherit standard syntax: @samp{@@}
+This syntax class does not specify a particular syntax.  It says to
+look in the standard syntax table to find the syntax of this
+character.
 
-@deffn {Syntax class} @w{generic comment delimiter}
-A @dfn{generic comment delimiter} (designated by @samp{!}) starts
-or ends a special kind of comment.  @emph{Any} generic comment delimiter
-matches @emph{any} generic comment delimiter, but they cannot match
-a comment starter or comment ender; generic comment delimiters can only
-match each other.
+@item Generic comment delimiters: @samp{!}
+Characters that start or end a special kind of comment.  @emph{Any}
+generic comment delimiter matches @emph{any} generic comment
+delimiter, but they cannot match a comment starter or comment ender;
+generic comment delimiters can only match each other.
 
 This syntax class is primarily meant for use with the
-@code{syntax-table} text property (@pxref{Syntax Properties}).  You can
-mark any range of characters as forming a comment, by giving the first
-and last characters of the range @code{syntax-table} properties
+@code{syntax-table} text property (@pxref{Syntax Properties}).  You
+can mark any range of characters as forming a comment, by giving the
+first and last characters of the range @code{syntax-table} properties
 identifying them as generic comment delimiters.
-@end deffn
 
-@deffn {Syntax class} @w{generic string delimiter}
-A @dfn{generic string delimiter} (designated by @samp{|}) starts or ends
-a string.  This class differs from the string quote class in that @emph{any}
-generic string delimiter can match any other generic string delimiter; but
-they do not match ordinary string quote characters.
+@item Generic string delimiters: @samp{|}
+Characters that start or end a string.  This class differs from the
+string quote class in that @emph{any} generic string delimiter can
+match any other generic string delimiter; but they do not match
+ordinary string quote characters.
 
 This syntax class is primarily meant for use with the
-@code{syntax-table} text property (@pxref{Syntax Properties}).  You can
-mark any range of characters as forming a string constant, by giving the
-first and last characters of the range @code{syntax-table} properties
-identifying them as generic string delimiters.
-@end deffn
+@code{syntax-table} text property (@pxref{Syntax Properties}).  You
+can mark any range of characters as forming a string constant, by
+giving the first and last characters of the range @code{syntax-table}
+properties identifying them as generic string delimiters.
+@end table
 
 @node Syntax Flags
 @subsection Syntax Flags
@@ -419,25 +386,23 @@ not a syntax table.
 
 @deffn Command modify-syntax-entry char syntax-descriptor  &optional table
 This function sets the syntax entry for @var{char} according to
-@var{syntax-descriptor}.  @var{char} can be a character, or a cons
+@var{syntax-descriptor}.  @var{char} must be a character, or a cons
 cell of the form @code{(@var{min} . @var{max})}; in the latter case,
 the function sets the syntax entries for all characters in the range
 between @var{min} and @var{max}, inclusive.
 
 The syntax is changed only for @var{table}, which defaults to the
-current buffer's syntax table, and not in any other syntax table.  The
-argument @var{syntax-descriptor} specifies the desired syntax; this is
-a string beginning with a class designator character, and optionally
-containing a matching character and flags as well.  @xref{Syntax
-Descriptors}.
+current buffer's syntax table, and not in any other syntax table.
+
+The argument @var{syntax-descriptor} is a syntax descriptor for the
+desired syntax (i.e.@: a string beginning with a class designator
+character, and optionally containing a matching character and syntax
+flags).  An error is signaled if the first character is not one of the
+seventeen syntax class designators.  @xref{Syntax Descriptors}.
 
 This function always returns @code{nil}.  The old syntax information in
 the table for this character is discarded.
 
-An error is signaled if the first character of the syntax descriptor is not
-one of the seventeen syntax class designator characters.  An error is also
-signaled if @var{char} is not a character.
-
 @example
 @group
 @exdent @r{Examples:}
@@ -534,23 +499,21 @@ execution starts.  Other buffers are not affected.
 @kindex syntax-table @r{(text property)}
 
 When the syntax table is not flexible enough to specify the syntax of
-a language, you can use @code{syntax-table} text properties to
-override the syntax table for specific character occurrences in the
-buffer.  @xref{Text Properties}.  You can use Font Lock mode to set
-@code{syntax-table} text properties.  @xref{Setting Syntax
-Properties}.
+a language, you can override the syntax table for specific character
+occurrences in the buffer, by applying a @code{syntax-table} text
+property.  @xref{Text Properties}, for how to apply text properties.
 
-The valid values of @code{syntax-table} text property are:
+  The valid values of @code{syntax-table} text property are:
 
 @table @asis
 @item @var{syntax-table}
 If the property value is a syntax table, that table is used instead of
-the current buffer's syntax table to determine the syntax for this
-occurrence of the character.
+the current buffer's syntax table to determine the syntax for the
+underlying text character.
 
 @item @code{(@var{syntax-code} . @var{matching-char})}
-A cons cell of this format specifies the syntax for this
-occurrence of the character.  (@pxref{Syntax Table Internals})
+A cons cell of this format specifies the syntax for the underlying
+text character.  (@pxref{Syntax Table Internals})
 
 @item @code{nil}
 If the property is @code{nil}, the character's syntax is determined from
@@ -558,9 +521,41 @@ the current syntax table in the usual way.
 @end table
 
 @defvar parse-sexp-lookup-properties
-If this is non-@code{nil}, the syntax scanning functions pay attention
-to syntax text properties.  Otherwise they use only the current syntax
-table.
+If this is non-@code{nil}, the syntax scanning functions, like
+@code{forward-sexp}, pay attention to syntax text properties.
+Otherwise they use only the current syntax table.
+@end defvar
+
+@defvar syntax-propertize-function
+This variable, if non-@code{nil}, should store a function for applying
+@code{syntax-table} properties to a specified stretch of text.  It is
+intended to be used by major modes to install a function which applies
+@code{syntax-table} properties in some mode-appropriate way.
+
+The function is called by @code{syntax-ppss} (@pxref{Position Parse}),
+and by Font Lock mode during syntactic fontification (@pxref{Syntactic
+Font Lock}).  It is called with two arguments, @var{start} and
+@var{end}, which are the starting and ending positions of the text on
+which it should act.  It is allowed to call @code{syntax-ppss} on any
+position before @var{end}.  However, it should not call
+@code{syntax-ppss-flush-cache}; so, it is not allowed to call
+@code{syntax-ppss} on some position and later modify the buffer at an
+earlier position.
+@end defvar
+
+@defvar syntax-propertize-extend-region-functions
+This abnormal hook is run by the syntax parsing code prior to calling
+@code{syntax-propertize-function}.  Its role is to help locate safe
+starting and ending buffer positions for passing to
+@code{syntax-propertize-function}.  For example, a major mode can add
+a function to this hook to identify multi-line syntactic constructs,
+and ensure that the boundaries do not fall in the middle of one.
+
+Each function in this hook should accept two arguments, @var{start}
+and @var{end}.  It should return either a cons cell of two adjusted
+buffer positions, @code{(@var{new-start} . @var{new-end})}, or
+@code{nil} if no adjustment is necessary.  The hook functions are run
+in turn, repeatedly, until they all return @code{nil}.
 @end defvar
 
 @node Motion and Syntax
@@ -611,8 +606,9 @@ 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
 of characters whose syntax is either word constituent or symbol
-constituent).  However, characters whose syntax is expression prefix
-are treated as part of the sexp if they appear next to it.
+constituent).  However, characters in the expression prefix syntax
+class (@pxref{Syntax Class Table}) are treated as part of the sexp if
+they appear next to it.
 
   The syntax table controls the interpretation of characters, so these
 functions can be used for Lisp expressions when in Lisp mode and for C
@@ -650,23 +646,25 @@ result, Emacs treats them as four consecutive empty string constants.
 based on parsing expressions.
 
 @defun scan-lists from count depth
-This function scans forward @var{count} balanced parenthetical groupings
-from position @var{from}.  It returns the position where the scan stops.
-If @var{count} is negative, the scan moves backwards.
-
-If @var{depth} is nonzero, parenthesis depth counting begins from that
-value.  The only candidates for stopping are places where the depth in
-parentheses becomes zero; @code{scan-lists} counts @var{count} such
-places and then stops.  Thus, a positive value for @var{depth} means go
-out @var{depth} levels of parenthesis.
+This function scans forward @var{count} balanced parenthetical
+groupings from position @var{from}.  It returns the position where the
+scan stops.  If @var{count} is negative, the scan moves backwards.
+
+If @var{depth} is nonzero, treat the starting position as being
+@var{depth} parentheses deep.  The scanner moves forward or backward
+through the buffer until the depth changes to zero @var{count} times.
+Hence, a positive value for @var{depth} has the effect of moving out
+@var{depth} levels of parenthesis from the starting position, while a
+negative @var{depth} has the effect of moving deeper by @var{-depth}
+levels of parenthesis.
 
 Scanning ignores comments if @code{parse-sexp-ignore-comments} is
 non-@code{nil}.
 
-If the scan reaches the beginning or end of the buffer (or its
-accessible portion), and the depth is not zero, an error is signaled.
-If the depth is zero but the count is not used up, @code{nil} is
-returned.
+If the scan reaches the beginning or end of the accessible part of the
+buffer before it has scanned over @var{count} parenthetical groupings,
+the return value is @code{nil} if the depth at that point is zero; if
+the depth is non-zero, a @code{scan-error} error is signaled.
 @end defun
 
 @defun scan-sexps from count
@@ -699,12 +697,12 @@ expected, with nothing except whitespace between them, it returns
 This function cannot tell whether the ``comments'' it traverses are
 embedded within a string.  If they look like comments, it treats them
 as comments.
-@end defun
 
 To move forward over all comments and whitespace following point, use
-@code{(forward-comment (buffer-size))}.  @code{(buffer-size)} is a good
-argument to use, because the number of comments in the buffer cannot
-exceed that many.
+@code{(forward-comment (buffer-size))}.  @code{(buffer-size)} is a
+good argument to use, because the number of comments in the buffer
+cannot exceed that many.
+@end defun
 
 @node Position Parse
 @subsection Finding the Parse State for a Position
@@ -714,22 +712,34 @@ thing is to compute the syntactic state corresponding to a given buffer
 position.  This function does that conveniently.
 
 @defun syntax-ppss &optional pos
-This function returns the parser state (see next section) that the
-parser would reach at position @var{pos} starting from the beginning
-of the buffer.  This is equivalent to @code{(parse-partial-sexp
-(point-min) @var{pos})}, except that @code{syntax-ppss} uses a cache
-to speed up the computation.  Due to this optimization, the 2nd value
-(previous complete subexpression) and 6th value (minimum parenthesis
-depth) of the returned parser state are not meaningful.
-@end defun
-
-   @code{syntax-ppss} automatically hooks itself to
-@code{before-change-functions} to keep its cache consistent.  But
-updating can fail if @code{syntax-ppss} is called while
+This function returns the parser state that the parser would reach at
+position @var{pos} starting from the beginning of the buffer.
+@iftex
+See the next section for
+@end iftex
+@ifnottex
+@xref{Parser State},
+@end ifnottex
+for a description of the parser state.
+
+The return value is the same as if you call the low-level parsing
+function @code{parse-partial-sexp} to parse from the beginning of the
+buffer to @var{pos} (@pxref{Low-Level Parsing}).  However,
+@code{syntax-ppss} uses a cache to speed up the computation.  Due to
+this optimization, the second value (previous complete subexpression)
+and sixth value (minimum parenthesis depth) in the returned parser
+state are not meaningful.
+
+This function has a side effect: it adds a buffer-local entry to
+@code{before-change-functions} (@pxref{Change Hooks}) for
+@code{syntax-ppss-flush-cache} (see below).  This entry keeps the
+cache consistent as the buffer is modified.  However, the cache might
+not be updated if @code{syntax-ppss} is called while
 @code{before-change-functions} is temporarily let-bound, or if the
-buffer is modified without obeying the hook, such as when using
-@code{inhibit-modification-hooks}.  For this reason, it is sometimes
-necessary to flush the cache manually.
+buffer is modified without running the hook, such as when using
+@code{inhibit-modification-hooks}.  In those cases, it is necessary to
+call @code{syntax-ppss-flush-cache} explicitly.
+@end defun
 
 @defun syntax-ppss-flush-cache beg &rest ignored-args
 This function flushes the cache used by @code{syntax-ppss}, starting
@@ -754,18 +764,23 @@ optimize its computations, when the cache gives no help.
 @subsection Parser State
 @cindex parser state
 
-  A @dfn{parser state} is a list of ten elements describing the final
-state of parsing text syntactically as part of an expression.  The
-parsing functions in the following sections return a parser state as
-the value, and in some cases accept one as an argument also, so that
-you can resume parsing after it stops.  Here are the meanings of the
-elements of the parser state:
+  A @dfn{parser state} is a list of ten elements describing the state
+of the syntactic parser, after it parses the text between a specified
+starting point and a specified end point in the buffer.  Parsing
+functions such as @code{syntax-ppss}
+@ifnottex
+(@pxref{Position Parse})
+@end ifnottex
+return a parser state as the value.  Some parsing functions accept a
+parser state as an argument, for resuming parsing.
+
+  Here are the meanings of the elements of the parser state:
 
 @enumerate 0
 @item
 The depth in parentheses, counting from 0.  @strong{Warning:} this can
 be negative if there are more close parens than open parens between
-the start of the defun and point.
+the parser's starting point and end point.
 
 @item
 @cindex innermost containing parentheses
@@ -785,22 +800,22 @@ string delimiter character should terminate it.
 
 @item
 @cindex inside comment
-@code{t} if inside a comment (of either style),
-or the comment nesting level if inside a kind of comment
-that can be nested.
+@code{t} if inside a non-nestable comment (of any comment style;
+@pxref{Syntax Flags}); or the comment nesting level if inside a
+comment that can be nested.
 
 @item
 @cindex quote character
-@code{t} if point is just after a quote character.
+@code{t} if the end point is just after a quote character.
 
 @item
 The minimum parenthesis depth encountered during this scan.
 
 @item
-What kind of comment is active: @code{nil} for a comment of style
-``a'' or when not inside a comment, @code{t} for a comment of style
-``b,'' and @code{syntax-table} for a comment that should be ended by a
-generic comment delimiter character.
+What kind of comment is active: @code{nil} if not in a comment or in a
+comment of style @samp{a}; 1 for a comment of style @samp{b}; 2 for a
+comment of style @samp{c}; and @code{syntax-table} for a comment that
+should be ended by a generic comment delimiter character.
 
 @item
 The string or comment start position.  While inside a comment, this is
@@ -816,8 +831,8 @@ as the @var{state} argument to another call.
 
   Elements 1, 2, and 6 are ignored in a state which you pass as an
 argument to continue parsing, and elements 8 and 9 are used only in
-trivial cases.  Those elements serve primarily to convey information
-to the Lisp program which does the parsing.
+trivial cases.  Those elements are mainly used internally by the
+parser code.
 
   One additional piece of useful information is available from a
 parser state using this function:
index c0f6c0355e51d08c2201dc5bff3fb02fd970c55e..ad1f622bfacee23ecf8c63e96e192f202f9f2834 100644 (file)
@@ -826,9 +826,7 @@ In Dired, visit the file or directory named on this line.
 
 @item
 When you define a variable that users ought to set interactively, you
-normally should use @code{defcustom}.  However, if for some reason you
-use @code{defvar} instead, start the doc string with a @samp{*}.
-@xref{Defining Variables}.
+should use @code{defcustom}.  @xref{Defining Variables}.
 
 @item
 The documentation string for a variable that is a yes-or-no flag should
index ab3a4edc0ac00d5dcd11402da8d4e64ea69b6b40..94e71c96d0aea693454f02ee68af906653d10bb4 100644 (file)
@@ -303,7 +303,7 @@ If a variable is void, trying to evaluate the variable signals a
 
   Under lexical binding rules, the value cell only holds the
 variable's global value, i.e.@: the value outside of any lexical
-binding contruct.  When a variable is lexically bound, the local value
+binding construct.  When a variable is lexically bound, the local value
 is determined by the lexical environment; the variable may have a
 local value if its symbol's value cell is unassigned.
 
index 31055bd03fe669069bfbbdfcef918e703048e8b0..addc4bd6d698ccd5be33aa150c1323af675f1a32 100644 (file)
@@ -572,12 +572,10 @@ Advising Emacs Lisp Functions
 
 Debugging Lisp Programs
 
-* Debugger::                How the Emacs Lisp debugger is implemented.
+* Debugger::                A debugger for the Emacs Lisp evaluator.
 * Edebug::                  A source-level Emacs Lisp debugger.
 * Syntax Errors::           How to find syntax errors.
 * Test Coverage::           Ensuring you have tested all branches in your code.
-* Compilation Errors::      How to find errors that show up in
-                              byte compilation.
 
 The Lisp Debugger
 
@@ -677,6 +675,7 @@ Completion
                               shell commands.
 * Completion Styles::       Specifying rules for performing completion.
 * Programmed Completion::   Writing your own completion-function.
+* Completion in Buffers::   Completing text in ordinary buffers.
 
 Command Loop
 
@@ -786,6 +785,7 @@ Major and Minor Modes
 * Mode Line Format::   Customizing the text that appears in the mode line.
 * Imenu::              Providing a menu of definitions made in a buffer.
 * Font Lock Mode::     How modes can highlight text according to syntax.
+* Auto-Indentation::   How to teach Emacs to indent for a major mode.
 * Desktop Save Mode::  How modes can have buffer state saved between
                          Emacs sessions.
 
@@ -802,9 +802,10 @@ Major Modes
 * Derived Modes::           Defining a new major mode based on another major
                               mode.
 * Basic Major Modes::       Modes that other modes are often derived from.
+* Mode Hooks::              Hooks run at the end of major mode commands.
+* Tabulated List Mode::     Parent mode for buffers containing tabulated data.
 * Generic Modes::           Defining a simple major mode that supports
                               comment syntax and Font Lock mode.
-* Mode Hooks::              Hooks run at the end of major mode commands.
 * Example Major Modes::     Text mode and Lisp modes.
 
 Minor Modes
@@ -836,8 +837,6 @@ Font Lock Mode
                                   contents can also specify how to fontify it.
 * Faces for Font Lock::     Special faces specifically for Font Lock.
 * Syntactic Font Lock::     Fontification based on syntax tables.
-* Setting Syntax Properties::   Defining character syntax based on context
-                                  using the Font Lock mechanism.
 * Multiline Font Lock::     How to coerce Font Lock into properly
                               highlighting multiline constructs.
 
@@ -849,8 +848,7 @@ Multiline Font Lock Constructs
 
 Documentation
 
-* Documentation Basics::    Good style for doc strings.
-                              Where to put them.  How Emacs stores them.
+* Documentation Basics::    Where doc strings are defined and stored.
 * Accessing Documentation:: How Lisp programs can access doc strings.
 * Keys in Documentation::   Substituting current key bindings.
 * Describing Characters::   Making printable descriptions of
@@ -866,12 +864,11 @@ Files
 * File Locks::              Locking and unlocking files, to prevent
                               simultaneous editing by two people.
 * Information about Files:: Testing existence, accessibility, size of files.
-* Changing Files::          Renaming files, changing protection, etc.
+* Changing Files::          Renaming files, changing permissions, etc.
 * File Names::              Decomposing and expanding file names.
 * Contents of Directories:: Getting a list of the files in a directory.
 * Create/Delete Dirs::      Creating and Deleting Directories.
-* Magic File Names::        Defining "magic" special handling
-                              for certain file names.
+* Magic File Names::        Special handling for certain file names.
 * Format Conversion::       Conversion to and from various file formats.
 
 Visiting Files
index 92f049135a1d8ee49e882c4f331a42ff4f9ac667..0f6b020db49b93cc6cd46a56a81bc975dd856f92 100644 (file)
@@ -571,12 +571,10 @@ Advising Emacs Lisp Functions
 
 Debugging Lisp Programs
 
-* Debugger::                How the Emacs Lisp debugger is implemented.
+* Debugger::                A debugger for the Emacs Lisp evaluator.
 * Edebug::                  A source-level Emacs Lisp debugger.
 * Syntax Errors::           How to find syntax errors.
 * Test Coverage::           Ensuring you have tested all branches in your code.
-* Compilation Errors::      How to find errors that show up in
-                              byte compilation.
 
 The Lisp Debugger
 
@@ -676,6 +674,7 @@ Completion
                               shell commands.
 * Completion Styles::       Specifying rules for performing completion.
 * Programmed Completion::   Writing your own completion-function.
+* Completion in Buffers::   Completing text in ordinary buffers.
 
 Command Loop
 
@@ -785,6 +784,7 @@ Major and Minor Modes
 * Mode Line Format::   Customizing the text that appears in the mode line.
 * Imenu::              Providing a menu of definitions made in a buffer.
 * Font Lock Mode::     How modes can highlight text according to syntax.
+* Auto-Indentation::   How to teach Emacs to indent for a major mode.
 * Desktop Save Mode::  How modes can have buffer state saved between
                          Emacs sessions.
 
@@ -801,9 +801,10 @@ Major Modes
 * Derived Modes::           Defining a new major mode based on another major
                               mode.
 * Basic Major Modes::       Modes that other modes are often derived from.
+* Mode Hooks::              Hooks run at the end of major mode commands.
+* Tabulated List Mode::     Parent mode for buffers containing tabulated data.
 * Generic Modes::           Defining a simple major mode that supports
                               comment syntax and Font Lock mode.
-* Mode Hooks::              Hooks run at the end of major mode commands.
 * Example Major Modes::     Text mode and Lisp modes.
 
 Minor Modes
@@ -835,8 +836,6 @@ Font Lock Mode
                                   contents can also specify how to fontify it.
 * Faces for Font Lock::     Special faces specifically for Font Lock.
 * Syntactic Font Lock::     Fontification based on syntax tables.
-* Setting Syntax Properties::   Defining character syntax based on context
-                                  using the Font Lock mechanism.
 * Multiline Font Lock::     How to coerce Font Lock into properly
                               highlighting multiline constructs.
 
@@ -848,8 +847,7 @@ Multiline Font Lock Constructs
 
 Documentation
 
-* Documentation Basics::    Good style for doc strings.
-                              Where to put them.  How Emacs stores them.
+* Documentation Basics::    Where doc strings are defined and stored.
 * Accessing Documentation:: How Lisp programs can access doc strings.
 * Keys in Documentation::   Substituting current key bindings.
 * Describing Characters::   Making printable descriptions of
@@ -865,12 +863,11 @@ Files
 * File Locks::              Locking and unlocking files, to prevent
                               simultaneous editing by two people.
 * Information about Files:: Testing existence, accessibility, size of files.
-* Changing Files::          Renaming files, changing protection, etc.
+* Changing Files::          Renaming files, changing permissions, etc.
 * File Names::              Decomposing and expanding file names.
 * Contents of Directories:: Getting a list of the files in a directory.
 * Create/Delete Dirs::      Creating and Deleting Directories.
-* Magic File Names::        Defining "magic" special handling
-                              for certain file names.
+* Magic File Names::        Special handling for certain file names.
 * Format Conversion::       Conversion to and from various file formats.
 
 Visiting Files
index d287b340542741dc22d696e4ce6d47d6990f4df2..a11dd9d9a4dd0bd6e513db93eb8943a4ef7677aa 100644 (file)
@@ -1,3 +1,18 @@
+2012-02-17  Glenn Morris  <rgm@gnu.org>
+
+       * gnus.texi (Posting Styles):
+       * remember.texi (Org): Fix cross-refs to other manuals.
+
+2012-02-15  Glenn Morris  <rgm@gnu.org>
+
+       * smtpmail.texi (Emacs Speaks SMTP): General update for 24.1.
+       (Encryption): New chapter, split out from previous.
+
+2012-02-13  Lars Ingebrigtsen  <larsi@gnus.org>
+
+       * gnus.texi (Customizing the IMAP Connection): Mention
+       nnimap-record-commands.
+
 2012-02-10  Glenn Morris  <rgm@gnu.org>
 
        * url.texi (Retrieving URLs): Update url-retrieve arguments.
index 865888a28e4024ae6df522f50267e36921a7fc57..ae2c5dbd0929dabd9a3d37dc229ed48284c52413 100644 (file)
@@ -12763,8 +12763,8 @@ from date id references chars lines xref extra.
 In the case of a string value, if the @code{match} is a regular
 expression, a @samp{gnus-match-substitute-replacement} is proceed on
 the value to replace the positional parameters @samp{\@var{n}} by the
-corresponding parenthetical matches (see @xref{Replacing the Text that
-Matched, , Text Replacement, elisp, The Emacs Lisp Reference Manual}.)
+corresponding parenthetical matches (see @xref{Replacing Match,,
+Replacing the Text that Matched, elisp, The Emacs Lisp Reference Manual}.)
 
 @vindex message-reply-headers
 
@@ -14227,8 +14227,9 @@ if the server supports UID EXPUNGE, but it's not done by default on
 servers that doesn't support that command.
 
 @item nnimap-streaming
-Virtually all @code{IMAP} server support fast streaming of data.  If
-you have problems connecting to the server, try setting this to @code{nil}.
+Virtually all @acronym{IMAP} server support fast streaming of data.
+If you have problems connecting to the server, try setting this to
+@code{nil}.
 
 @item nnimap-fetch-partial-articles
 If non-@code{nil}, fetch partial articles from the server.  If set to
@@ -14236,6 +14237,10 @@ a string, then it's interpreted as a regexp, and parts that have
 matching types will be fetched.  For instance, @samp{"text/"} will
 fetch all textual parts, while leaving the rest on the server.
 
+@item nnimap-record-commands
+If non-@code{nil}, record all @acronym{IMAP} commands in the
+@samp{"*imap log*"} buffer.
+
 @end table
 
 
index a04ba53443dcdde9518c438fc7e66c30cb1f051f..1dd7d1b615393ad7eb6028a6c83110e6e69a4706 100644 (file)
@@ -389,8 +389,15 @@ The default priority for remembered mail messages.
 @section Saving to an Org Mode file
 @cindex org mode, integration
 
+@ignore
+From org.texi:
+Up to version 6.36 Org used a special setup
+for @file{remember.el}.  @file{org-remember.el} is still part of Org mode for
+backward compatibility with existing setups.  You can find the documentation
+for org-remember at @url{http://orgmode.org/org-remember.pdf}.
+@end ignore
 For instructions on how to integrate Remember with Org Mode,
-consult @ref{Remember, , , org}.
+consult @ref{Capture, , , org}.
 
 @node GNU Free Documentation License, Concept Index, Backends, Top
 @appendix GNU Free Documentation License
index af09783f445eb8d1202dcfd1761c46439415e940..4e4df3f0bbb1942f6f312f806ac119744d6b7172 100644 (file)
@@ -47,6 +47,7 @@ developing GNU and promoting software freedom.''
 * How Mail Works::      Brief introduction to mail concepts.
 * Emacs Speaks SMTP::   How to use the SMTP library in Emacs.
 * Authentication::      Authenticating yourself to the server.
+* Encryption::          Protecting your connection to the server.
 * Queued delivery::     Sending mail without an internet connection.
 * Server workarounds::  Mail servers with special requirements.
 * Debugging::           Tracking down problems.
@@ -129,24 +130,37 @@ be useful if you don't have a MTA set up on your host, or if your
 machine is often disconnected from the internet.
 
   Sending mail via SMTP requires configuring your mail user agent
-(@pxref{Mail Methods,,,emacs}) to use the SMTP library.  How to do
-this should be described for each mail user agent; for the default
-mail user agent the variable @code{send-mail-function} (@pxref{Mail
-Sending,,,emacs}) is used; for the Message and Gnus user agents the
-variable @code{message-send-mail-function} (@pxref{Mail
-Variables,,,message}) is used.
-
-@example
-;; If you use the default mail user agent.
+(@pxref{Mail Methods,,,emacs}) to use the SMTP library.  If you
+have not configured anything, then in Emacs 24.1 and later the first
+time you try to send a mail Emacs will ask how you want to send
+mail.  To use this library, answer @samp{smtp} when prompted.  Emacs
+then asks for the name of the SMTP server.
+
+ If you prefer, or if you are using a non-standard mail user agent,
+you can configure this yourself.  The normal way to do this is to set
+the variable @code{send-mail-function} (@pxref{Mail
+Sending,,,emacs}) to the value you want to use.  To use this library:
+
+@smallexample
 (setq send-mail-function 'smtpmail-send-it)
-;; If you use Message or Gnus.
-(setq message-send-mail-function 'smtpmail-send-it)
-@end example
+@end smallexample
+
+@noindent
+The default value for this variable is @code{sendmail-query-once},
+which interactively asks how you want to send mail.
+
+Your mail user agent might use a different variable for this purpose.
+It should inherit from @code{send-mail-function}, but if it does not,
+or if you prefer, you can set that variable directly.  Consult your
+mail user agent's documentation for more details.  For example,
+(@pxref{Mail Variables,,,message}).
 
   Before using SMTP you must find out the hostname of the SMTP server
-to use.  Your system administrator should provide you with this
-information, but often it is the same as the server you receive mail
-from.
+to use.  Your system administrator or mail service provider should
+supply this information.  Often it is some variant of the server you
+receive mail from.  If your email address is
+@samp{yourname@@example.com}, then the name of the SMTP server is
+may be something like @samp{smtp.example.com}.
 
 @table @code
 @item smtpmail-smtp-server
@@ -201,101 +215,114 @@ The following example illustrates what you could put in
 @node Authentication
 @chapter Authentication
 
+@cindex password
+@cindex user name
+Most SMTP servers require clients to authenticate themselves before
+they are allowed to send mail.  Authentication usually involves
+supplying a user name and password. 
+
+If you have not configured anything, then the first time you try to
+send mail via a server, Emacs (version 24.1 and later) prompts you
+for the user name and password to use, and then offers to save the
+information.  By default, Emacs stores authentication information in
+a file @file{~/.authinfo}.
+
+@cindex authinfo
+The basic format of the @file{~/.authinfo} file is one line for each
+set of credentials.  Each line consists of pairs of variables and
+values.  A simple example would be:
+
+@smallexample
+machine mail.example.org port 25 login myuser password mypassword
+@end smallexample
+
+@noindent
+This specifies that when using the SMTP server called @samp{mail.example.org}
+on port 25, Emacs should send the user name @samp{myuser} and the
+password @samp{mypassword}.  Either or both of the login and password
+fields may be absent, in which case Emacs prompts for the information
+when you try to send mail.  (This replaces the old
+@code{smtpmail-auth-credentials} variable used prior to Emacs 24.1.)
+
+@vindex smtpmail-smtp-user
+  When the SMTP library connects to a host on a certain port, it
+searches the @file{~/.authinfo} file for a matching entry.  If an
+entry is found, the authentication process is invoked and the
+credentials are used.  If the variable @code{smtpmail-smtp-user} is
+set to a non-@code{nil} value, then only entries for that user are
+considered.  For more information on the @file{~/.authinfo}
+file, @pxref{Top,,auth-source, auth, Emacs auth-source Library}.
+
 @cindex SASL
 @cindex CRAM-MD5
+@cindex PLAIN
 @cindex LOGIN
+The process by which the SMTP library authenticates you to the server
+is known as ``Simple Authentication and Security Layer'' (SASL).
+There are various SASL mechanisms, and this library supports three of
+them: CRAM-MD5, PLAIN, and LOGIN.  It tries each of them, in that order,
+until one succeeds.  The first uses a form of encryption to obscure
+your password, while the other two do not.
+
+
+@node Encryption
+@chapter Encryption
+
 @cindex STARTTLS
 @cindex TLS
 @cindex SSL
-Many environments require SMTP clients to authenticate themselves
-before they are allowed to route mail via a server.  The two following
-variables contains the authentication information needed for this.
-
-The first variable, @code{smtpmail-auth-credentials}, instructs the
-SMTP library to use a SASL authentication step, currently only the
-CRAM-MD5 and LOGIN mechanisms are supported and will be selected in
-that order if the server support both.
-
-The second variable, @code{smtpmail-starttls-credentials}, instructs
-the SMTP library to connect to the server using STARTTLS.  This means
-the protocol exchange may be integrity protected and confidential by
-using the Transport Layer Security (TLS) protocol, and optionally also
-authentication of the client and server.
-
-TLS is a security protocol that is also known as SSL, although
-strictly speaking, SSL is an older variant of TLS.  TLS is backwards
-compatible with SSL.  In most mundane situations, the two terms are
-equivalent.
-
-The TLS feature uses the elisp package @file{starttls.el} (see it for
-more information on customization), which in turn require that at
-least one of the following external tools are installed:
+For greater security, you can encrypt your connection to the SMTP
+server.  If this is to work, both Emacs and the server must support it.
+
+The SMTP library supports the ``Transport Layer Security'' (TLS), and
+the older ``Secure Sockets Layer'' (SSL) encryption mechanisms.
+It also supports STARTTLS, which is a variant of TLS in which the
+initial connection to the server is made in plain text, requesting a
+switch to an encrypted channel for the rest of the process.
+
+@vindex smtpmail-stream-type
+The variable @code{smtpmail-stream-type} controls what form of
+connection the SMTP library uses.  The default value is @code{nil},
+which means to use a plain connection, but try to switch to a STARTTLS
+encrypted connection if the server supports it.  Other possible values
+are: @code{starttls} - insist on STARTTLS; @code{ssl} - use TLS/SSL;
+and @code{plain} - no encryption.
+
+Use of any form of TLS/SSL requires support in Emacs.  You can either
+use the built-in support (in Emacs 24.1 and later), or the
+@file{starttls.el} Lisp library.  The built-in support uses the GnuTLS
+@footnote{@url{http://www.gnu.org/software/gnutls/}} library.
+If your Emacs has GnuTLS support built-in, the function
+@code{gnutls-available-p} is defined and returns non-@code{nil}.
+Otherwise, you must use the @file{starttls.el} library (see that file for
+more information on customization options, etc.).  The Lisp library
+requires one of the following external tools to be installed:
 
 @enumerate
 @item
-The GnuTLS command line tool @samp{gnutls-cli}, you can get it from
+The GnuTLS command line tool @samp{gnutls-cli}, which you can get from
 @url{http://www.gnu.org/software/gnutls/}.  This is the recommended
-tool, mainly because it can verify the server certificates.
+tool, mainly because it can verify server certificates.
 
 @item
-The @samp{starttls} external program, you can get it from
+The @samp{starttls} external program, which you can get from
 @file{starttls-*.tar.gz} from @uref{ftp://ftp.opaopa.org/pub/elisp/}.
 @end enumerate
 
-It is not uncommon to use both these mechanisms, e.g., to use STARTTLS
-to achieve integrity and confidentiality and then use SASL for client
-authentication.
+@cindex certificates
+@cindex keys
+The SMTP server may also request that you verify your identity by
+sending a certificate and the associated encryption key to the server.
+If you need to do this, you can use an @file{~/.authinfo} entry like this:
 
-@table @code
-@item smtpmail-auth-credentials
-@vindex smtpmail-auth-credentials
-  The variable @code{smtpmail-auth-credentials} contains a list of
-hostname, port, username and password tuples.  When the SMTP library
-connects to a host on a certain port, this variable is searched to
-find a matching entry for that hostname and port.  If an entry is
-found, the authentication process is invoked and the credentials are
-used.
-
-The hostname field follows the same format as
-@code{smtpmail-smtp-server} (i.e., a string) and the port field the
-same format as @code{smtpmail-smtp-service} (i.e., a string or an
-integer).  The username and password fields, which either can be
-@code{nil} to indicate that the user is prompted for the value
-interactively, should be strings with the username and password,
-respectively, information that is normally provided by system
-administrators.
-
-@item smtpmail-starttls-credentials
-@vindex smtpmail-starttls-credentials
-  The variable @code{smtpmail-starttls-credentials} contains a list of
-tuples with hostname, port, name of file containing client key, and
-name of file containing client certificate.  The processing is similar
-to the previous variable.  The client key and certificate may be
-@code{nil} if you do not wish to use client authentication.
-@end table
+@smallexample
+machine mail.example.org port 25 key "~/.my_smtp_tls.key" cert "~/.my_smtp_tls.cert"
+@end smallexample
 
-The following example illustrates what you could put in
-@file{~/.emacs} to enable both SASL authentication and STARTTLS.  The
-server name (@code{smtpmail-smtp-server}) is @var{hostname}, the
-server port (@code{smtpmail-smtp-service}) is @var{port}, and the
-username and password are @var{username} and @var{password}
-respectively.
+@noindent
+(This replaces the old @code{smtpmail-starttls-credentials} variable used
+prior to Emacs 24.1.)
 
-@example
-;; Authenticate using this username and password against my server.
-(setq smtpmail-auth-credentials
-      '(("@var{hostname}" "@var{port}" "@var{username}" "@var{password}")))
-
-;; Note that if @var{port} is an integer, you must not quote it as a
-;; string.  Normally @var{port} should be the integer 25, and the example
-;; become:
-(setq smtpmail-auth-credentials
-      '(("@var{hostname}" 25 "@var{username}" "@var{password}")))
-
-;; Use STARTTLS without authentication against the server.
-(setq smtpmail-starttls-credentials
-      '(("@var{hostname}" "@var{port}" nil nil)))
-@end example
 
 @node Queued delivery
 @chapter Queued delivery
index 1f1190b19d966dba325da1341cf147b3ff13ea85..da9b8c180c482ba75dd024b79b4838d0f07e9f48 100644 (file)
@@ -1,3 +1,7 @@
+2012-02-20  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * emacs-buffer.gdb ($valmask): Don't assume EMACS_INT fits in 'long'.
+
 2012-02-10  Leo Liu  <sdl.web@gmail.com>
 
        * NEWS: Change condition-case-no-debug to
 
 2011-02-17  Ken Manheimer  <ken.manheimer@gmail.com>
 
-       * images/icons/allout-widgets/dark-bg/encrypted-locked.png:
-       * images/icons/allout-widgets/dark-bg/encrypted-locked.xpm:
+       * images/icons/allout-widgets/dark-bg/locked-encrypted.png:
+       * images/icons/allout-widgets/dark-bg/locked-encrypted.xpm:
        * images/icons/allout-widgets/dark-bg/unlocked-encrypted.png:
        * images/icons/allout-widgets/dark-bg/unlocked-encrypted.xpm:
-       * images/icons/allout-widgets/light-bg/encrypted-locked.png:
-       * images/icons/allout-widgets/light-bg/encrypted-locked.xpm:
+       * images/icons/allout-widgets/light-bg/locked-encrypted.png:
+       * images/icons/allout-widgets/light-bg/locked-encrypted.xpm:
        * images/icons/allout-widgets/light-bg/unlocked-encrypted.png:
        * images/icons/allout-widgets/light-bg/unlocked-encrypted.xpm:
        Reorganize icon directories and files to reconcile against windows
index 9929f326e445b43b830dc3923eebb9e538b9213b..85f70306a4335c4856c96ab12cf8c06fdd2bad72 100644 (file)
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -141,22 +141,22 @@ For example, this is used by Rmail to optionally delete a mail window.
 
 *** smtpmail
 
-**** smtpmail now uses encrypted connections (via STARTTLS) if the
-mail server supports them.  It also uses the auth-source framework for
-getting credentials.
++++
+**** smtpmail now uses encrypted connections (via STARTTLS) by default
+if the mail server supports them.  This uses either built-in GnuTLS
+support, or the starttls.el library.  Customize `smtpmail-stream-type'
+to change this.
 
++++
 **** The variable `smtpmail-auth-credentials' has been removed.
-That variable used to have the default value "~/.authinfo", in which
-case you won't see any difference.  But if you changed it to be a list
-of user names and passwords, that setting is now ignored; you will be
-prompted for the user name and the password, which will then be saved
-to ~/.authinfo.  (To control where and how the credentials are stored,
-see the auth-source manual.  You may want to change the auth-source
-preferences if you want to store the credentials encrypted, for
-instance.)
-
-You can also manually copy the credentials to your ~/.authinfo file.
-For example, if you had
+By default, the information is now stored in the file ~/.authinfo.
+This was the default value of smtpmail-auth-credentials.
+If you had customized smtpmail-auth-credentials to a list of user
+names and passwords, those settings will not be used.  Your first
+connection to the smtp server will prompt for the user name and password,
+and then offer to save them to the ~/.authinfo file.  Or you can
+manually copy the credentials to your ~/.authinfo files.  For example,
+if you had
 
   (setq smtpmail-auth-credentials
         '(("mail.example.org" 25 "jim" "s!cret")))
@@ -165,6 +165,10 @@ then the equivalent line in ~/.authinfo would be
 
   machine mail.example.org port 25 login jim password s!cret
 
+See the auth-source manual for more information, e.g. on encrypting
+the credentials file.
+
++++
 **** The variable `smtpmail-starttls-credentials' has been removed.
 
 If you had that set, then you need to put
@@ -939,6 +943,7 @@ They are superseded by shift-select-mode, enabled by default since 23.1.
 
 +++
 *** The Landmark game is now invoked with `landmark', not `lm'.
+Its functions and variables have been similarly renamed.
 
 ---
 *** In `ido-file-completion-map', C-v is no longer bound to ido-toggle-vc.
@@ -960,6 +965,12 @@ They are superseded by shift-select-mode, enabled by default since 23.1.
 ** Occur Edit mode applies edits made in *Occur* buffers to the
 original buffers.  It is bound to "e" in Occur mode.
 
+** When `occur' is called with the prefix argument `C-u'
+the matching strings are collected into the `*Occur*' buffer
+without line numbers.  If there are parenthesized subexpressions
+in the specified regexp, `occur' reads replacement text that
+may contain \\& and \\N whose convention follows `replace-match'.
+
 +++
 ** New global minor mode electric-pair-mode.
 When enabled, typing an open parenthesis automatically inserts the
@@ -1072,6 +1083,7 @@ Eg simply pass the result through substring-no-properties if you need this.
 ---
 ** cl.el no longer provides `cl-19'.
 
++++
 ** The menu bar bindings's caches are not used any more.
 Use (where-is-internal <def> nil t) instead.
 
@@ -1106,7 +1118,10 @@ font-lock-defaults-alist (font-lock-defaults), and e (float-e).
 ** The following obsolete files were removed:
 sc.el, x-menu.el, rnews.el, rnewspost.el
 
-** FIXME finder-inf.el changes.
+---
+** The format of the finder-inf.el file has changed, since the finder
+mechanism is now based on the package concept.  The variable
+finder-package-info is replaced by package--builtins and finder-keywords-hash.
 
 \f
 * Lisp changes in Emacs 24.1
@@ -1281,6 +1296,7 @@ behavior of `completing-read'.
 ** `glyphless-char-display' can now distinguish between graphical and
 text terminal display, via a char-table entry that is a cons cell.
 
++++
 ** `open-network-stream' can now be used to open an encrypted stream.
 It now accepts an optional `:type' parameter for initiating a TLS
 connection, directly or via STARTTLS.  To do STARTTLS, additional
@@ -1305,12 +1321,21 @@ set of "wrapping" filters, similar to around advice.
 (A version of this macro was actually added in Emacs 23.2 but was not
 advertised at the time.)
 
+** Debugger changes
 +++
-** New macro `condition-case-unless-debug' (this was actually added in
+*** New macro `condition-case-unless-debug' (this was actually added in
 Emacs 23.1 as condition-case-no-debug, but not advertised)
-
 +++
-** The macro `with-demoted-errors' was added in Emacs 23.1, but not advertised.
+*** The macro `with-demoted-errors' was added in Emacs 23.1, but not advertised.
+---
+*** Variable `stack-trace-on-error' removed.
++++
+*** The debugger can now "continue" from an error, which means it will
+jump to the error handler as if the debugger had not been invoked
+instead of jumping all the way to the top-level.
++++
+*** Set `debug-on-event' to enter the debugger on events like SIGUSR1.
+This can be useful when `inhibit-quit' is set.
 
 +++
 ** The new function `server-eval-at' allows evaluation of Lisp forms on
@@ -1320,19 +1345,20 @@ named Emacs server instances, using TCP sockets.
 ** `call-process' and `call-process-region' allow a `(:file "file")' spec
 to redirect STDOUT to a file.
 
----
-** Variable `stack-trace-on-error' removed.
-Also the debugger can now "continue" from an error, which means it will jump
-to the error handler as if the debugger had not been invoked instead of
-jumping all the way to the top-level.
-
 +++
 ** The function format-time-string now supports the %N directive, for
 higher-resolution time stamps.
 
+** New input reading functions
++++
+*** New function `read-char-choice' reads a restricted set of
+characters, discarding any inputs not inside the set.
 +++
-** New function `read-char-choice' reads a restricted set of characters,
-discarding any inputs not inside the set.
+*** The command `read-color' now requires a match for a color name
+or RGB triplet, instead of signaling an error if the user provides
+invalid input.
+---
+**** `facemenu-read-color' is now an alias for `read-color'.
 
 +++
 ** `image-library-alist' is renamed to `dynamic-library-alist'.
@@ -1340,7 +1366,9 @@ The variable is now used to load all kind of supported dynamic libraries,
 not just image libraries.  The previous name is still available as an
 obsolete alias.
 
-** New variable `syntax-propertize-function'.
+** Syntax parsing changes
++++
+*** New variable `syntax-propertize-function'.
 This replaces `font-lock-syntactic-keywords' which is now obsolete.
 This allows syntax-table properties to be set independently from font-lock:
 just call syntax-propertize to make sure the text is propertized.
@@ -1349,37 +1377,35 @@ syntax-propertize-extend-region-functions, as well as two helper functions:
 syntax-propertize-via-font-lock to reuse old font-lock-syntactic-keywords
 as-is; and syntax-propertize-rules which provides a new way to specify
 syntactic rules.
-
 +++
-** New hook post-self-insert-hook run at the end of self-insert-command.
+*** Syntax tables support a new "comment style c" additionally to style b.
 
 +++
-** Syntax tables support a new "comment style c" additionally to style b.
+** New hook post-self-insert-hook run at the end of self-insert-command.
 
 ---
 ** frame-local variables cannot be let-bound any more.
 
 ** Major and minor mode changes
 +++
+*** `set-auto-mode' now respects mode: local variables at the end of files,
+as well as those in the -*- line.
++++
 *** `prog-mode' is a new major mode from which programming modes
 should be derived.
-
 +++
 **** `prog-mode-hook' can be used to enable features for programming
 modes, e.g. (add-hook 'prog-mode-hook 'flyspell-prog-mode) to enable
 on-the-fly spell checking for comments and strings.
-
 +++
 *** New hook `change-major-mode-after-body-hook', run by
 `run-mode-hooks' just before any other mode hooks.
-
 +++
 *** Enabled globalized minor modes can be disabled in specific major modes.
 If the global mode is global-FOO-mode, then run (FOO-mode -1) in the
 major mode's hook, where FOO-mode toggles the mode on a per-buffer basis.
-
 +++
-*** `define-minor-mode' accepts a new keyword :variable.
+*** `define-minor-mode' accepts new keywords :variable, :after-hook.
 
 +++
 ** `delete-file' and `delete-directory' now accept optional arg TRASH.
@@ -1387,13 +1413,8 @@ Trashing is performed if TRASH and `delete-by-moving-to-trash' are
 both non-nil.  Interactively, TRASH defaults to t, unless a prefix
 argument is supplied (see Trash changes, above).
 
----
-** `facemenu-read-color' is now an alias for `read-color'.
-
-+++
-** The command `read-color' now requires a match for a color name
-or RGB triplet, instead of signaling an error if the user provides
-invalid input.
+FIXME
+** New functions files-equal-p, file-subdir-of-p that [do something]
 
 +++
 ** Tool-bars can display separators.
@@ -1422,7 +1443,8 @@ The old name is an obsolete alias to the new one.
 +++
 *** Image mode can view any image type that ImageMagick supports.
 This requires Emacs to be built with ImageMagick support.
-Then the function `imagemagick-types' returns a list of image file
+If your Emacs has ImageMagick support, then the function
+`imagemagick-types' is defined, and returns a list of image file
 extensions that your installation of ImageMagick supports.  The
 function `imagemagick-register-types' enables ImageMagick support for
 these image types, minus those listed in `imagemagick-types-inhibit'.
@@ -1446,11 +1468,12 @@ FIXME: These should be front-ended by xml.el.
 
 *** New library `gnutls.el'.
 This requires Emacs to have been built with GnuTLS support.
-The main functions are `open-gnutls-stream' and `gnutls-negotiate'.
-It's easiest to use these functions through `open-network-stream'
-because it can upgrade connections through STARTTLS opportunistically
-or use plain SSL, depending on your needs.  For debugging, set
-`gnutls-log-level' greater than 0.
+If your Emacs has GnuTLS support, the function gnutls-available-p is
+defined and returns non-nil.  The main functions are `open-gnutls-stream'
+and `gnutls-negotiate'.  It's easiest to use these functions through
+`open-network-stream' because it can upgrade connections through
+STARTTLS opportunistically or use plain SSL, depending on your needs.
+For debugging, set `gnutls-log-level' greater than 0.
 
 ** Isearch
 
@@ -1477,11 +1500,6 @@ only used by Emacs on some platforms to display warnings during
 startup, which might otherwise not be noticed.  This uses the functions
 display-delayed-warnings and collapse-delayed-warnings.
 
-
-+++
-** `set-auto-mode' now respects mode: local variables at the end of files,
-as well as those in the -*- line.
-
 ---
 ** rx.el has a new `group-n' construct for explicitly numbered groups.
 
@@ -1491,10 +1509,6 @@ from multiple input maps.  You can use this to make a keymap that
 inherits from multiple maps, eg:
  (set-keymap-parent newmap (make-composed-keymap othermap parent))
 
-+++
-** Set `debug-on-event' to make Emacs enter the debugger e.g. on receipt
-of SIGUSR1.  This can be useful when `inhibit-quit' is set.
-
 +++
 ** New reader macro ## that stands for the empty symbol.
 This means that the empty symbol can now be read back.  Also, #: by itself
index 675644f5654d1cb7c39c56b374ed29d48bebf41c..75627f084cd1a304ecd4f3f89d217641b878ddee 100644 (file)
@@ -1357,6 +1357,28 @@ single copies.  You do not need any other drivers or options.
             Option     "Device"           "/dev/input/mice"
     EndSection
 
+*** Emacs is slow to exit in X
+
+After you use e.g. C-x C-c to exit, it takes many seconds before the
+Emacs window disappears.  If Emacs was started from a terminal, you
+see the message:
+
+  Error saving to X clipboard manager.
+  If the problem persists, set `x-select-enable-clipboard-manager' to nil.
+
+As the message suggests, this problem occurs when Emacs thinks you
+have a clipboard manager program running, but has trouble contacting it.
+If you don't want to use a clipboard manager, you can set the
+suggested variable.  Or you can make Emacs not wait so long by
+reducing the value of `x-selection-timeout', either in .emacs or with
+X resources.
+
+Sometimes this problem is due to a bug in your clipboard manager.
+Updating to the latest version of the manager can help.
+For example, in the Xfce 4.8 desktop environment, the clipboard
+manager in versions of xfce4-settings-helper before 4.8.2 is buggy;
+https://bugzilla.xfce.org/show_bug.cgi?id=7588 .
+
 * Runtime problems on character terminals
 
 ** The meta key does not work on xterm.
index 2bd2fa23794834a1eb466eff8adaee18920ed015..80f69c585dcf9a13f050f4c2b4ced00563b60b45 100644 (file)
@@ -78,7 +78,9 @@ set $yverbose = 1
 set $yfile_buffers_only = 0
 
 set $tagmask = (((long)1 << gdb_gctypebits) - 1)
-set $valmask = gdb_use_lsb ? ~($tagmask) : ((long)1 << gdb_valbits) - 1
+# The consing_since_gc business widens the 1 to EMACS_INT,
+# a symbol not directly visible to GDB.
+set $valmask = gdb_use_lsb ? ~($tagmask) : ((consing_since_gc - consing_since_gc + 1) << gdb_valbits) - 1
 
 define ygetptr
   set $ptr = $arg0
index c28dc491863681b675f77c53c1d6e9d1b14d5c94..8d3ff6c42256f6bd97cd0334492cde216ff83e39 100644 (file)
@@ -1,3 +1,413 @@
+2012-02-25  Chong Yidong  <cyd@gnu.org>
+
+       Add custom groups for VC backends, for consistency with vc-bzr.
+
+       * vc/vc-arch.el (vc-arch):
+       * vc/vc-cvs.el (vc-cvs):
+       * vc/vc-git.el (vc-git):
+       * vc/vc-hg.el (vc-hg):
+       * vc/vc-mtn.el (vc-mtn):
+       * vc/vc-rcs.el (vc-rcs):
+       * vc/vc-sccs.el (vc-sccs):
+       * vc/vc-svn.el (vc-svn): New customization group (Bug#10871).
+       All relevant defcustoms reassigned.
+
+2012-02-25  Chong Yidong  <cyd@gnu.org>
+
+       * newcomment.el (comment-styles): Add autoload (Bug#10868).
+
+       * term/x-win.el (x-initialize-window-system): Reduce default for
+       x-selection-timeout to 5 seconds (Bug#8869).
+
+2012-02-24  Thierry Volpiatto  <thierry.volpiatto@gmail.com>
+
+       * files.el (file-subdir-of-p): Fix typo.
+
+2012-02-24  Thierry Volpiatto  <thierry.volpiatto@gmail.com>
+
+       * files.el (files-equal-p, file-subdir-of-p): New functions.
+       (copy-directory): Error when trying to copy a directory on itself.
+       Add missing copy-contents arg to tramp handler.
+       * dired-aux.el (dired-copy-file-recursive): Same.
+       (dired-create-files): Modify destination when source is equal to
+       dest when copying files.
+       Return also when dest is a subdir of source.  (Bug#10489)
+
+2012-02-24  Michael Albinus  <michael.albinus@gmx.de>
+
+       * net/ange-ftp.el (ange-ftp-parse-netrc): Suppress comment lines.
+       (Bug#10874)
+
+2012-02-23  Alan Mackenzie  <acm@muc.de>
+
+       * emacs-lisp/easy-mmode.el (define-minor-mode): Add extra
+       parameter "after-hook:" to allow the expansion to run code after
+       the execution of the mode hooks.
+
+       * font-lock.el (font-lock-initial-fontify): New function extracted
+       from font-lock-mode-interal.
+
+       * font-core.el (font-lock-mode): call font-lock-initial-fontify in
+       :after-hook.
+
+2012-02-23  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * minibuffer.el: Make sure cycling is reset upon edit with icomplete.el.
+       (completion--cache-all-sorted-completions): New function.
+       (completion-all-sorted-completions): Use it.
+       (completion--do-completion, minibuffer-force-complete):
+       Use it to re-instate the flush hook.
+
+       * icomplete.el (icomplete-completions): Replace last fix with a better
+       one (bug#10850).
+
+2012-02-23  Dmitry Gutov  <dgutov@yandex.ru>
+
+       * emacs-lisp/lisp.el (beginning-of-defun-raw): Don't call end-of-defun
+       when it might call us back infinitely (bug#10797).
+
+2012-02-23  Glenn Morris  <rgm@gnu.org>
+
+       * minibuffer.el (completion-category-overrides): Doc fix.
+
+2012-02-23  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * minibuffer.el (completion-table-with-context): Fix inf-loop.
+       Reported by Aaron S. Hawley <aaron.s.hawley@gmail.com>.
+
+2012-02-23  Glenn Morris  <rgm@gnu.org>
+
+       * emacs-lisp/authors.el (authors-aliases, authors-fixed-case)
+       (authors-obsolete-files-regexps, authors-ignored-files)
+       (authors-ambiguous-files, authors-renamed-files-alist):
+       Add more entries.
+
+2012-02-23  Juri Linkov  <juri@jurta.org>
+
+       * isearch.el (isearch-occur): Sync interactive spec with occur's
+       new feature in `occur-read-primary-args'.  Doc fix.  (Bug#10705)
+
+       * replace.el (occur-menu-map): Add menu item for `occur-edit-mode'.
+
+2012-02-22  Juri Linkov  <juri@jurta.org>
+
+       * international/mule-cmds.el (read-char-by-name): Use \` and \'.
+       (ucs-insert): Doc fix.  Check for hex digits in the string.
+       Don't display `nil' in the error message.  (Bug#10857)
+
+2012-02-22  Alan Mackenzie  <acm@muc.de>
+
+       * progmodes/cc-mode.el: Revert change #2012-02-06T22:08:41Z!larsi@gnus.org from 2012-02-06.
+
+2012-02-22  Glenn Morris  <rgm@gnu.org>
+
+       * ffap.el (ffap-c-path):
+       * man.el (Man-header-file-path): Handle multiarch.  (Bug#10702)
+
+2012-02-22  Chong Yidong  <cyd@gnu.org>
+
+       * custom.el (load-theme): Doc fix.
+
+2012-02-22  Glenn Morris  <rgm@gnu.org>
+
+       * dired-x.el (dired-guess-shell-alist-default):
+       Remove escape sequences from nroff output.  (Bug#172)
+
+2012-02-21  Glenn Morris  <rgm@gnu.org>
+
+       * vc/emerge.el (emerge-defvar-local):
+       Set `permanent-local' property rather than unused `preserved'.
+
+       * textmodes/picture.el (picture-delete-char): New alias.
+       (picture-mode-map): Use it.  (Bug#10860)
+       (picture-mode): Doc fix.
+
+2012-02-21  Juanma Barranquero  <lekktu@gmail.com>
+
+       * newcomment.el (uncomment-region-default): Remove unused binding.
+
+2012-02-21  Glenn Morris  <rgm@gnu.org>
+
+       * textmodes/picture.el (picture-motion, picture-motion-reverse)
+       (picture-self-insert, picture-tab-chars): Doc fix.
+       (picture-mode-map): Fix C-a, C-e.
+
+2012-02-20  Glenn Morris  <rgm@gnu.org>
+
+       * emacs-lisp/authors.el (authors-aliases): Add another entry.
+
+2012-02-20  Leo Liu  <sdl.web@gmail.com>
+
+       * icomplete.el (icomplete-completions): Check FROM arg before
+       passing to substring (Bug#10850).
+
+2012-02-19  Chong Yidong  <cyd@gnu.org>
+
+       * comint.el: Require ansi-color.
+       (comint-output-filter-functions): Add ansi-color-process-output.
+
+       * ansi-color.el: Don't set comint-output-filter-functions; it is
+       now in the initial value defined in comint.el.
+       (ansi-color-apply-face-function): New variable.
+       (ansi-color-apply-on-region): Use it.
+       (ansi-color-apply-overlay-face): New function.
+
+       * shell.el (shell): No need to require ansi-color.
+       (shell-mode): Use ansi-color-apply-face-function to highlight
+       color escapes using font-lock-face property (Bug#10835).
+
+2012-02-19  Chong Yidong  <cyd@gnu.org>
+
+       * vc/ediff-init.el (ediff-strip-mode-line-format): Handle non-list
+       mode-line formats (Bug#10839).
+
+2012-02-18  Glenn Morris  <rgm@gnu.org>
+
+       * mail/rmail.el (rmail-dont-reply-to-names): Mark as obsolete.
+
+       * mail/undigest.el (unforward-rmail-message): Doc fix.
+
+       * saveplace.el (save-place-ignore-files-regexp): Add :version.
+
+2012-02-18  Eli Zaretskii  <eliz@gnu.org>
+
+       * international/characters.el (script-list): Sync with the latest
+       Unicode Character Database.
+
+2012-02-18  Andreas Schwab  <schwab@linux-m68k.org>
+
+       * international/titdic-cnv.el: Remove duplicate coding tag.
+       * language/cham.el: Likewise.
+       * language/tai-viet.el: Likewise.
+
+2012-02-18  Glenn Morris  <rgm@gnu.org>
+
+       * calendar/cal-menu.el (cal-menu-diary-menu, cal-menu-goto-menu):
+       * calendar/calendar.el (diary-file, diary-bahai-entry-symbol)
+       (calendar-bahai-all-holidays-flag, calendar-other-dates):
+       * calendar/diary-lib.el (diary-abbreviated-year-flag):
+       * calendar/holidays.el (holiday-bahai-holidays)
+       (calendar-holidays, list-holidays):
+       Use utf-8 Bahá'í in doc-strings, menus, etc.
+
+2012-02-17  Tassilo Horn  <tassilo@member.fsf.org>
+
+       * saveplace.el (save-place-ignore-files-regexp): New variable
+       allowing for excluding files from saving their location of point.
+       The default value matches the temporary commit message editing
+       files from Git, SVN, Bazaar, and Mercurial.
+       (save-place-to-alist): Use it.
+
+2012-02-17  Lawrence Mitchell <wence@gmx.li>
+            Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * newcomment.el (uncomment-region-default): Don't leave extra space
+       when an arg is provided (bug#8150).
+
+2012-02-17  Teodor Zlatanov  <tzz@lifelogs.com>
+
+       * net/gnutls.el (gnutls-trustfiles): Fix Cygwin bundle location.
+
+2012-02-17  Glenn Morris  <rgm@gnu.org>
+
+       * net/socks.el: Require network-stream.  (Bug#10599)
+
+2012-02-17  Kenichi Handa  <handa@m17n.org>
+
+       * international/charprop.el:
+       * international/uni-name.el:
+       * international/uni-old-name.el:
+       * international/uni-comment.el: Regenerate.
+
+2012-02-16  Glenn Morris  <rgm@gnu.org>
+
+       * calendar/cal-hebrew.el (calendar-hebrew-list-yahrzeits):
+       Interactively in calendar buffer, give an error if not on a date.
+
+2012-02-15  Glenn Morris  <rgm@gnu.org>
+
+       * shell.el (shell-delimiter-argument-list):
+       Revert 2011-02-17 change.  (Bug#8027)
+
+2012-02-15  Chong Yidong  <cyd@gnu.org>
+
+       * minibuffer.el (completion-at-point-functions): Doc fix.
+
+       * custom.el (defcustom): Doc fix; note use of defvar.
+
+2012-02-15  Glenn Morris  <rgm@gnu.org>
+
+       * mail/smtpmail.el (smtpmail-smtp-user, smtpmail-stream-type):
+       Doc fixes.
+
+2012-02-14  Glenn Morris  <rgm@gnu.org>
+
+       * mail/smtpmail.el (smtpmail-query-smtp-server): Give it a doc.
+
+2012-02-14  Lars Ingebrigtsen  <larsi@gnus.org>
+
+       * mail/smtpmail.el (smtpmail-query-smtp-server): Fix typo in the
+       way the ports list is computed.
+       (smtpmail-query-smtp-server): Prompt the user for a port number if
+       we can't connect to any of the standard ports (bug#10810).
+
+2012-02-14  Teodor Zlatanov  <tzz@lifelogs.com>
+
+       * net/gnutls.el (gnutls-trustfiles): Add Cygwin location.
+
+2012-02-13  Glenn Morris  <rgm@gnu.org>
+
+       * minibuffer.el (read-file-name): Doc fix.  (Bug#10798)
+
+2012-02-13  Teodor Zlatanov  <tzz@lifelogs.com>
+
+       * net/gnutls.el (gnutls-trustfiles): New variable.
+       (gnutls-negotiate): Use it.
+
+2012-02-13  Lars Ingebrigtsen  <larsi@gnus.org>
+
+       * simple.el (mail-user-agent): Mention that `gnus-user-agent' only
+       does its stuff if Gnus is running.
+
+2012-02-13  Alan Mackenzie  <acm@muc.de>
+
+       Fix a loop in c-set-fl-decl-start.
+
+       * progmodes/cc-engine.el (c-set-fl-decl-start): Add a check that
+       c-backward-syntactic-ws actually moves backwards.
+
+2012-02-13  Leo Liu  <sdl.web@gmail.com>
+
+       * net/rcirc.el (rcirc-markup-attributes): Move point to the
+       beginning so that all \C-o chars are removed.
+
+2012-02-12  Teodor Zlatanov  <tzz@lifelogs.com>
+
+       * net/gnutls.el (gnutls-algorithm-priority): Add missing :group
+       tag.
+
+2012-02-12  Alan Mackenzie  <acm@muc.de>
+
+       Fix infinite loop with long macros.
+       * cc-engine.el (c-state-safe-place): Handle macros properly.
+
+2012-02-12  Chong Yidong  <cyd@gnu.org>
+
+       * window.el (display-buffer): Doc fix (Bug#10785).
+
+2012-02-12  Glenn Morris  <rgm@gnu.org>
+
+       * term/pc-win.el (x-selection-owner-p, x-own-selection-internal)
+       (x-disown-selection-internal, x-get-selection-internal):
+       Sync docs with the xselect.c versions.
+
+       * allout-widgets.el: Add missing license notice.
+
+2012-02-11  Glenn Morris  <rgm@gnu.org>
+
+       * select.el (x-get-selection-internal, x-own-selection-internal)
+       (x-disown-selection-internal):
+       * x-dnd.el (x-get-selection-internal): Update declarations.
+
+       * vc/log-view.el (vc-diff-internal): Remove unneeded declaration.
+
+       * window.el (window-sides-slots):
+       * tool-bar.el (tool-bar-position):
+       * term/xterm.el (xterm-extra-capabilities):
+       * ses.el (ses-self-reference-early-detection):
+       * progmodes/verilog-mode.el (verilog-auto-declare-nettype)
+       (verilog-auto-wire-type)
+       (verilog-auto-delete-trailing-whitespace)
+       (verilog-auto-reset-blocking-in-non, verilog-auto-inst-sort)
+       (verilog-auto-tieoff-declaration):
+       * progmodes/sql.el (sql-login-hook, sql-ansi-statement-starters)
+       (sql-oracle-statement-starters, sql-oracle-scan-on):
+       * progmodes/prolog.el (prolog-align-comments-flag)
+       (prolog-indent-mline-comments-flag, prolog-object-end-to-0-flag)
+       (prolog-left-indent-regexp, prolog-paren-indent-p)
+       (prolog-paren-indent, prolog-parse-mode, prolog-keywords)
+       (prolog-types, prolog-mode-specificators)
+       (prolog-determinism-specificators, prolog-directives)
+       (prolog-electric-newline-flag, prolog-hungry-delete-key-flag)
+       (prolog-electric-dot-flag)
+       (prolog-electric-dot-full-predicate-template)
+       (prolog-electric-underscore-flag, prolog-electric-tab-flag)
+       (prolog-electric-if-then-else-flag, prolog-electric-colon-flag)
+       (prolog-electric-dash-flag, prolog-old-sicstus-keys-flag)
+       (prolog-program-switches, prolog-prompt-regexp)
+       (prolog-debug-on-string, prolog-debug-off-string)
+       (prolog-trace-on-string, prolog-trace-off-string)
+       (prolog-zip-on-string, prolog-zip-off-string)
+       (prolog-use-standard-consult-compile-method-flag)
+       (prolog-use-prolog-tokenizer-flag, prolog-imenu-flag)
+       (prolog-imenu-max-lines, prolog-info-predicate-index)
+       (prolog-underscore-wordchar-flag, prolog-use-sicstus-sd)
+       (prolog-char-quote-workaround):
+       * progmodes/cc-vars.el (c-defun-tactic):
+       * net/tramp.el (tramp-encoding-command-interactive)
+       (tramp-local-end-of-line):
+       * net/soap-client.el (soap-client):
+       * net/netrc.el (netrc-file):
+       * net/gnutls.el (gnutls):
+       * minibuffer.el (completion-category-overrides)
+       (completion-cycle-threshold)
+       (completion-pcm-complete-word-inserts-delimiters):
+       * man.el (Man-name-local-regexp):
+       * mail/feedmail.el (feedmail-display-full-frame):
+       * international/characters.el (glyphless-char-display-control):
+       * eshell/em-ls.el (eshell-ls-date-format):
+       * emacs-lisp/cl-indent.el (lisp-lambda-list-keyword-alignment)
+       (lisp-lambda-list-keyword-parameter-indentation)
+       (lisp-lambda-list-keyword-parameter-alignment):
+       * doc-view.el (doc-view-image-width, doc-view-unoconv-program):
+       * dired-x.el (dired-omit-verbose):
+       * cus-theme.el (custom-theme-allow-multiple-selections):
+       * calc/calc.el (calc-highlight-selections-with-faces)
+       (calc-lu-field-reference, calc-lu-power-reference)
+       (calc-note-threshold):
+       * battery.el (battery-mode-line-limit):
+       * arc-mode.el (archive-7z-extract, archive-7z-expunge)
+       (archive-7z-update):
+       * allout.el (allout-prefixed-keybindings)
+       (allout-unprefixed-keybindings)
+       (allout-inhibit-auto-fill-on-headline)
+       (allout-flattened-numbering-abbreviation):
+       * allout-widgets.el (allout-widgets-auto-activation)
+       (allout-widgets-icons-dark-subdir)
+       (allout-widgets-icons-light-subdir, allout-widgets-icon-types)
+       (allout-widgets-theme-dark-background)
+       (allout-widgets-theme-light-background)
+       (allout-widgets-item-image-properties-emacs)
+       (allout-widgets-item-image-properties-xemacs)
+       (allout-widgets-run-unit-tests-on-load)
+       (allout-widgets-time-decoration-activity)
+       (allout-widgets-hook-error-post-time)
+       (allout-widgets-track-decoration):
+       Add missing :version tags to new defcustoms and defgroups.
+
+       * progmodes/sql.el (sql-ansi-statement-starters)
+       (sql-oracle-statement-starters): Add custom type.
+
+       * progmodes/prolog.el: Remove leading '*' from defcustom docs.
+       (prolog-system-version): Give it a type.
+
+2012-02-11  Eli Zaretskii  <eliz@gnu.org>
+
+       * term/pc-win.el (x-select-text, x-selection-owner-p)
+       (x-own-selection-internal, x-disown-selection-internal)
+       (x-get-selection-internal): Sync doc strings and argument lists
+       with xselect.c, common-win.el and x-win.el.  (Bug#10783)
+
+2012-02-11  Leo Liu  <sdl.web@gmail.com>
+
+       * progmodes/python.el (python-end-of-statement): Fix infinite
+       loop.  (Bug#10788)
+
+2012-02-10  Glenn Morris  <rgm@gnu.org>
+
+       * international/mule-cmds.el (unify-8859-on-encoding-mode)
+       (unify-8859-on-decoding-mode): Properly mark as obsolete.
+
 2012-02-10  Lars Ingebrigtsen  <larsi@gnus.org>
 
        * mail/emacsbug.el (report-emacs-bug-hook): Query the user first
 
 2012-02-07  Alan Mackenzie  <acm@muc.de>
 
-       * progmodes/cc-engine.el (c-forward-objc-directive): Prevent
-       looping in "#pragma mark @implementation".
+       * progmodes/cc-engine.el (c-forward-objc-directive):
+       Prevent looping in "#pragma mark @implementation".
 
 2012-02-07  Michael Albinus  <michael.albinus@gmx.de>
 
        (Bug#10254).
        (bibtex-mode): Call bibtex-set-dialect via
        hack-local-variables-hook.
-       (bibtex-dialect): Update docstring.  Add
-       safe-local-variable predicate.
+       (bibtex-dialect): Update docstring.
+       Add safe-local-variable predicate.
        (bibtex-entry-alist, bibtex-field-alist): Initialize via
        bibtex-set-dialect.
        (bibtex-mode-map): Define menu for each dialect.
 
 2012-01-28  Phil Hagelberg  <phil@hagelb.org>
 
-       * emacs-lisp/package.el (package-install): Run
-       package-refresh-contents if there is no archive yet (Bug#9798).
+       * emacs-lisp/package.el (package-install):
+       Run package-refresh-contents if there is no archive yet (Bug#9798).
 
 2012-01-28  Chong Yidong  <cyd@gnu.org>
 
 2012-01-19  Martin Rudalics  <rudalics@gmx.at>
 
        * window.el (window--state-get-1, window-state-get): Do not use
-       special state value for window-persistent-parameters.  Rename
-       argument IGNORE to WRITABLE.  Rewrite doc-string.
+       special state value for window-persistent-parameters.
+       Rename argument IGNORE to WRITABLE.  Rewrite doc-string.
        (window--state-put-2): Reset all window parameters to nil before
        assigning values of persistent parameters.
 
        c-mask-paragraph, pass in `fill-paragraph' rather than
        `fill-region-as-paragraph'.  (This is a reversion of a previous
        change.)
-       * progmodes/cc-mode.el (c-basic-common-init): Make
-       fill-paragraph-handle-comment buffer local and set it to nil.
+       * progmodes/cc-mode.el (c-basic-common-init):
+       Make fill-paragraph-handle-comment buffer local and set it to nil.
 
 2012-01-13  Glenn Morris  <rgm@gnu.org>
 
 
        Add the switch statement to AWK Mode.
 
-       * progmodes/cc-awk (awk-font-lock-keywords): Add "switch", "case",
+       * progmodes/cc-awk.el (awk-font-lock-keywords): Add "switch", "case",
        "default" to the keywords regexp.
 
-       * progmodes/cc-langs (c-label-kwds): Let AWK take the same
+       * progmodes/cc-langs.el (c-label-kwds): Let AWK take the same
        expression as the rest.
        (c-nonlabel-token-key): Allow string literals for AWK.
        Refactor for the other modes.
 
 2011-10-08  Thierry Volpiatto  <thierry.volpiatto@gmail.com>
 
-       * lisp/eshell/eshell.el (eshell-command): Avoid using hooks.
+       * eshell/eshell.el (eshell-command): Avoid using hooks.
 
 2011-10-07  Chong Yidong  <cyd@stupidchicken.com>
 
        * comint.el (comint-password-prompt-regexp): Accept "Response" as
        a password-like phrase.
 
-2011-06-30  Mastake YAMATO  <yamato@redhat.com>
+2011-06-30  Masatake YAMATO  <yamato@redhat.com>
 
        * progmodes/cc-guess.el: New file.
 
 
        * isearch.el (isearch-range-invisible): Use invisible-p (bug#8721).
 
-2009-11-23  Toby Cubitt  <toby-predictive@dr-qubit.org>
+2011-05-27  Toby Cubitt  <toby-predictive@dr-qubit.org>
 
        * emacs-lisp/avl-tree.el: New avl-tree-stack datatype.  Add new
        traversal functions for avl-trees.
        (avl-tree-stack, avl-tree-stack-pop, avl-tree-stack-first)
        (avl-tree-stack-empty-p): New functions.
 
-2009-11-23  Toby Cubitt  <toby-predictive@dr-qubit.org>
-
        * emacs-lisp/avl-tree.el (avl-tree--del-balance): Rename from
        avl-tree--del-balance1 and make it work both ways.
        (avl-tree--del-balance2): Remove.
        (calc-lu-field-reference): Rename from
        `calc-logunits-field-reference'.
 
-       * calc/calc-help (calc-l-prefix-help): Mention musical note functions.
+       * calc/calc-help.el (calc-l-prefix-help):
+       Mention musical note functions.
 
 2011-03-17  Stefan Monnier  <monnier@iro.umontreal.ca>
 
 
 2011-03-09  Ken Manheimer  <ken.manheimer@gmail.com>
 
-       * allout.el Summary: Change so yank of distinctive-bullet items
+       * allout.el: Change so yank of distinctive-bullet items
        preserves the existing header prefix, rebulleting it if necessary,
        rather than replacing it.  This is necessary for proper operation
        of cooperative addons like allout-widgets.
index dd1d113d6652edcf66e0514d13e51c04c5d4a334..0b4e62f9e9171ff91314b159e755fd334f313cd7 100644 (file)
 
 2004-05-10  Miles Bader  <miles@gnu.org>
 
-       * lisp/progmodes/gud.el (gud-common-init): Only consider an existing
+       * progmodes/gud.el (gud-common-init): Only consider an existing
        buffer an error if the debugger process is actually running.
 
 2004-05-10  Juanma Barranquero  <lektu@terra.es>
 
 2004-05-03  Michael Mauger  <mmaug@yahoo.com>
 
-       * emacs/lisp/progmodes/sql.el (sql-xemacs-p, sql-emacs19-p)
+       * progmodes/sql.el (sql-xemacs-p, sql-emacs19-p)
        (sql-emacs20-p): Remove.
        (sql-mode-syntax-table): Use shared GNU Emacs/XEmacs syntax.
        (sql-builtin-face, sql-doc-face): Remove.
index 6db8f66f0ca03f905a038da13e16fb5d3fbc8339..254e2863889c8620cacfc2eb27b6c2fb87ef3dec 100644 (file)
        * help-at-pt.el (help-at-pt-kbd-string): Reflow docstring.
        (scan-buf-previous-region): Fix typo in docstring.
 
-2009-04-14  Edward Wiebe  <usenet@pusto.de>  (tiny change)
+2009-04-14  Eduard Wiebe  <usenet@pusto.de>  (tiny change)
 
        * jit-lock.el (jit-lock-stealth-chunk-start): Fix typo in docstring.
 
index f354050389e4fd21c92b0131c668fe367a5cc6ad..bf7a24a5b6760fa09ef61e22a427f43eafdafd34 100644 (file)
 
 2011-02-17  Ken Manheimer  <ken.manheimer@gmail.com>
 
-       * lisp/allout-widgets.el (allout-widgets-icons-light-subdir)
+       * allout-widgets.el (allout-widgets-icons-light-subdir)
        (allout-widgets-icons-dark-subdir): Track relocations of icons.
-       * lisp/allout.el: Remove commentary about remove encryption
+       * allout.el: Remove commentary about remove encryption
        passphrase mnemonic support and verification.
        (allout-encrypt-string): Recognize epg failure to decrypt gpg2
        armored text using gpg1, and indicate that the gpg version *might*
index 5bc0474c58bb1d53542ea54d0a8a74bc09ccbcfe..4de106833521725d2fda9438b510ab8835336268 100644 (file)
 
 1994-07-23  enami tsugutomo  <enami@sys.ptg.sony.co.jp>
 
-       * lisp/add-log.el (add-log-current-defun): Skip doc string
+       * add-log.el (add-log-current-defun): Skip doc string
        correctly even if it ends with line that starts space.
 
 1994-07-22  Ed Reingold  <reingold@albert.gnu.ai.mit.edu>
index 5bc9c8a8d2540a883d2594c83e714f7db7c20bc7..9976c45b307520d8be35054ac5a336d33193a0a9 100644 (file)
 
        * ffap.el (dired-at-point): Add autoload cookie.
 
-1998-04-23  Jens Petersen  <petersen@kurims.kyoto-u.ac.jp>
+1998-04-23  Jens-Ulrik Petersen  <petersen@kurims.kyoto-u.ac.jp>
 
        * ffap.el (dired-at-point-require-prefix): New option.
        (dired-at-point): New command.
 
 1998-03-05  Sam Steingold  <sds@usa.net>
 
-       * lisp/simple.el (backward-delete-char-untabify-method):
-       New user option.
+       * simple.el (backward-delete-char-untabify-method): New user option.
        (backward-delete-char-untabify): Obey it.
        This implements "hungry" delete.
 
 
 1997-12-03  Kyle Jones  <kyle_jones@wonderworks.com>
 
-       * lisp/mail/sendmail.el (sendmail-send-it): Parse folded
-       Resent-To header properly; don't ignore folded lines.
+       * mail/sendmail.el (sendmail-send-it):
+       Parse folded Resent-To header properly; don't ignore folded lines.
 
-       * lisp/mail/mail-utils.el (mail-parse-comma-list):
+       * mail/mail-utils.el (mail-parse-comma-list):
        Treat newlines and tabs as whitespace.
 
 1997-12-03  Richard Stallman  <rms@gnu.org>
index 897c56f2b7721b7f978d0af3f2f5ba777c67e943..ccc9b473de311d9ead4b2853bef6797ae67cd0f7 100644 (file)
 
 1999-08-15  Yoshiki Hayashi  <t90553@mail.ecc.u-tokyo.ac.jp>
 
-       * lisp/texinfmt.el: Handle @ifnottex.
+       * texinfmt.el: Handle @ifnottex.
 
 1999-08-15  Eli Zaretskii  <eliz@gnu.org>
 
 
 1998-10-21  Markus Rost  <rost@delysid.gnu.org>
 
-       * lisp/info.el (Info-next-menu-item): Stay on top of node.
+       * info.el (Info-next-menu-item): Stay on top of node.
 
        * mail/rmailout.el (rmail-output): Insert newline only if necessary.
 
        * gnus-art.el (gnus-article-x-face-too-ugly): Fix type.
        (gnus-saved-headers): Fix type.
 
-       * lisp/textmodes/fill.el (fill-individual-paragraphs-prefix):
+       * textmodes/fill.el (fill-individual-paragraphs-prefix):
        Avoid nil value of `two-lines-citation-part'.
 
 1998-09-30  Roman Belenov  <roman@nstl.nnov.ru>
index ba90274edf02397d42bd7c24f4118f8be884e3fc..b9b6cd5a03dbcdbd14c66bd320eb37b7505d4cfd 100644 (file)
 
 2001-01-25  Dave Love  <fx@gnu.org>
 
-       * lisp/international/mule-diag.el (describe-char-after): Doc fix.
+       * international/mule-diag.el (describe-char-after): Doc fix.
        (describe-coding-system): Tweak the English text.
 
        * loadup.el: Preload international/ccl for utf-8.
 
 2000-07-16  John Wiegley  <johnw@gnu.org>
 
-       * lisp/align.el (align-newline-and-indent):
-       Adding new function.  for auto-aligning blocks of code on RET.
+       * align.el (align-newline-and-indent): Adding new function,
+       for auto-aligning blocks of code on RET.
        (align-region): Fixed badly formatted minibuffer message.
 
 2000-07-17  Kenichi Handa  <handa@etl.go.jp>
        (network-connection-mode-setup): New function, saves host and
        service information in local variables.
 
-       * lisp/locate.el:
-       (locate-word-at-point): Added this function.
+       * locate.el (locate-word-at-point): Added this function.
        (locate): Default to using locate-word-at-point as input
        Run dired-mode-hook
 
index 0e4a4c6e5a7a8ed2f6c138474dc733128cda02ec..86d567bcddee7141d61627d3d8be585795e5c31d 100644 (file)
@@ -9,6 +9,21 @@
 ;; Keywords: outlines
 ;; Website: http://myriadicity.net/software-and-systems/craft/emacs-allout
 
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
+
 ;;; Commentary:
 
 ;; This is an allout outline-mode add-on that highlights outline structure
@@ -131,6 +146,7 @@ explicitly invoke `allout-widgets-mode' in allout buffers where
 you want allout widgets operation.
 
 See `allout-widgets-mode' for allout widgets mode features."
+  :version "24.1"
   :type 'boolean
   :group 'allout-widgets
   :set 'allout-widgets-setup
@@ -155,16 +171,19 @@ See `allout-widgets-mode' for allout widgets mode features."
 ;;;_  = allout-widgets-icons-dark-subdir
 (defcustom allout-widgets-icons-dark-subdir "icons/allout-widgets/dark-bg/"
   "Directory on `image-load-path' holding allout icons for dark backgrounds."
+  :version "24.1"
   :type 'string
   :group 'allout-widgets)
 ;;;_  = allout-widgets-icons-light-subdir
 (defcustom allout-widgets-icons-light-subdir "icons/allout-widgets/light-bg/"
   "Directory on `image-load-path' holding allout icons for light backgrounds."
+  :version "24.1"
   :type 'string
   :group 'allout-widgets)
 ;;;_  = allout-widgets-icon-types
 (defcustom allout-widgets-icon-types '(xpm png)
   "File extensions for the icon graphic format types, in order of preference."
+  :version "24.1"
   :type '(repeat symbol)
   :group 'allout-widgets)
 
@@ -172,23 +191,27 @@ See `allout-widgets-mode' for allout widgets mode features."
 ;;;_   = allout-widgets-theme-dark-background
 (defcustom allout-widgets-theme-dark-background "allout-dark-bg"
   "Identify the outline's icon theme to use with a dark background."
+  :version "24.1"
   :type '(string)
   :group 'allout-widgets)
 ;;;_   = allout-widgets-theme-light-background
 (defcustom allout-widgets-theme-light-background "allout-light-bg"
   "Identify the outline's icon theme to use with a light background."
+  :version "24.1"
   :type '(string)
   :group 'allout-widgets)
 ;;;_   = allout-widgets-item-image-properties-emacs
 (defcustom allout-widgets-item-image-properties-emacs
   '(:ascent center :mask (heuristic t))
   "*Default properties item widget images in mainline Emacs."
+  :version "24.1"
   :type 'plist
   :group 'allout-widgets)
 ;;;_   = allout-widgets-item-image-properties-xemacs
 (defcustom allout-widgets-item-image-properties-xemacs
   nil
   "*Default properties item widget images in XEmacs."
+  :version "24.1"
   :type 'plist
   :group 'allout-widgets)
 ;;;_  . Developer
@@ -204,6 +227,7 @@ doing byte-compilation with a repeat count, so the file is loaded after
 compilation.)
 
 See `allout-widgets-run-unit-tests' to see what's run."
+  :version "24.1"
   :type 'boolean
   :group 'allout-widgets-developer)
 ;;;_   = allout-widgets-time-decoration-activity
@@ -215,6 +239,7 @@ The details are retained as the value of
 
 Generally, allout widgets code developers are the only ones who'll want to
 set this."
+  :version "24.1"
   :type 'boolean
   :group 'allout-widgets-developer)
 ;;;_   = allout-widgets-hook-error-post-time 0
@@ -224,6 +249,7 @@ set this."
 0 is minimal, or nil to not post to the message area.
 
 This is for debugging purposes."
+  :version "24.1"
   :type 'integer
   :group 'allout-widgets-developer)
 ;;;_   = allout-widgets-maintain-tally nil
@@ -235,6 +261,7 @@ This is for debugging purposes.
 The tally shows the total number of item widgets in the current
 buffer, and tracking increases as new widgets are added and
 decreases as obsolete widgets are garbage collected."
+  :version "24.1"
   :type 'boolean
   :group 'allout-widgets-developer)
 (defvar allout-widgets-tally nil
@@ -268,6 +295,7 @@ The number varies according to the evanescence of objects on a
 This is for debugging purposes, and generally set at need in a
 buffer rather than as a prevailing configuration \(but it's handy
 to publicize it by making it a customization variable\)."
+  :version "24.1"
   :type 'boolean
   :group 'allout-widgets-developer)
 (make-variable-buffer-local 'allout-widgets-track-decoration)
index d673c7dba0b30239012a0eb8a1ea0665a7390e03..3eed3c7d23e3fe0149427f295555859760dfce61 100644 (file)
@@ -240,6 +240,7 @@ See the existing keys for examples.
 Functions can be bound to multiple keys, but binding keys to
 multiple functions will not work - the last binding for a key
 prevails."
+  :version "24.1"
   :type 'allout-keybindings-binding
   :group 'allout-keybindings
   :set 'allout-compose-and-institute-keymap
@@ -263,6 +264,7 @@ Use vector format for the keys:
     parentheses, with the literal key, as above, preceded by the name(s)
     of the modifiers, eg: [(control ?a)]
 See the existing keys for examples."
+  :version "24.1"
   :type 'allout-keybindings-binding
   :group 'allout-keybindings
   :set 'allout-compose-and-institute-keymap
@@ -402,6 +404,7 @@ else allout's special hanging-indent maintaining auto-fill function,
 ;;;_  = allout-inhibit-auto-fill-on-headline
 (defcustom allout-inhibit-auto-fill-on-headline nil
   "If non-nil, auto-fill will be inhibited while on topic's header line."
+  :version "24.1"
   :type 'boolean
   :group 'allout)
 (make-variable-buffer-local 'allout-inhibit-auto-fill-on-headline)
@@ -764,6 +767,7 @@ Set this var to the bullet you want to use for file cross-references."
   "If non-nil, `allout-flatten-exposed-to-buffer' abbreviates topic
 numbers to minimal amount with some context.  Otherwise, entire
 numbers are always used."
+  :version "24.1"
   :type 'boolean
   :group 'allout)
 
index aaea903de56bc2b7eb4aa9b6309d0c1f021f7431..15a543e959194eba935402fb11c123b131612cf1 100644 (file)
@@ -183,6 +183,11 @@ in shell buffers.  You set this variable by calling one of:
   :group 'ansi-colors
   :version "23.2")
 
+(defvar ansi-color-apply-face-function 'ansi-color-apply-overlay-face
+  "Function for applying an Ansi Color face to text in a buffer.
+This function should accept three arguments: BEG, END, and FACE,
+and it should apply face FACE to the text between BEG and END.")
+
 ;;;###autoload
 (defun ansi-color-for-comint-mode-on ()
   "Set `ansi-color-for-comint-mode' to t."
@@ -221,9 +226,6 @@ This is a good function to put in `comint-output-filter-functions'."
          (t
           (ansi-color-apply-on-region start-marker end-marker)))))
 
-(add-hook 'comint-output-filter-functions
-         'ansi-color-process-output)
-
 (defalias 'ansi-color-unfontify-region 'font-lock-default-unfontify-region)
 (make-obsolete 'ansi-color-unfontify-region "not needed any more" "24.1")
 
@@ -379,10 +381,9 @@ start of the region and set the face with which to start.  Set
       ;; Find the next SGR sequence.
       (while (re-search-forward ansi-color-regexp end-marker t)
        ;; Colorize the old block from start to end using old face.
-       (when face
-         (ansi-color-set-extent-face
-          (ansi-color-make-extent start-marker (match-beginning 0))
-          face))
+       (funcall ansi-color-apply-face-function
+                start-marker (match-beginning 0)
+                face)
         ;; store escape sequence and new start position
         (setq escape-sequence (match-string 1)
              start-marker (copy-marker (match-end 0)))
@@ -395,22 +396,23 @@ start of the region and set the face with which to start.  Set
       (if (re-search-forward "\033" end-marker t)
          (progn
            ;; if the rest of the region should have a face, put it there
-           (when face
-             (ansi-color-set-extent-face
-              (ansi-color-make-extent start-marker (point))
-              face))
+           (funcall ansi-color-apply-face-function
+                    start-marker (point) face)
            ;; save face and point
            (setq ansi-color-context-region
                  (list face (copy-marker (match-beginning 0)))))
        ;; if the rest of the region should have a face, put it there
-       (if face
-           (progn
-             (ansi-color-set-extent-face
-              (ansi-color-make-extent start-marker end-marker)
-              face)
-             (setq ansi-color-context-region (list face)))
-         ;; reset context
-         (setq ansi-color-context-region nil))))))
+       (funcall ansi-color-apply-face-function
+                start-marker end-marker face)
+       (setq ansi-color-context-region (if face (list face)))))))
+
+(defun ansi-color-apply-overlay-face (beg end face)
+  "Make an overlay from BEG to END, and apply face FACE.
+If FACE is nil, do nothing."
+  (when face
+    (ansi-color-set-extent-face
+     (ansi-color-make-extent beg end)
+     face)))
 
 ;; This function helps you look for overlapping overlays.  This is
 ;; useful in comint-buffers.  Overlapping overlays should not happen!
index 83862555c804f88e491d98a6c9016e9adaf600df..8b17208983f37985745c676443dc428d018b3a60 100644 (file)
@@ -322,6 +322,7 @@ Archive and member name will be added."
   "Program and its options to run in order to extract a 7z file member.
 Extraction should happen to standard output.  Archive and member name will
 be added."
+  :version "24.1"
   :type '(list (string :tag "Program")
               (repeat :tag "Options"
                       :inline t
@@ -332,6 +333,7 @@ be added."
   '("7z" "d")
   "Program and its options to run in order to delete 7z file members.
 Archive and member names will be added."
+  :version "24.1"
   :type '(list (string :tag "Program")
               (repeat :tag "Options"
                       :inline t
@@ -343,6 +345,7 @@ Archive and member names will be added."
   "Program and its options to run in order to update a 7z file member.
 Options should ensure that specified directory will be put into the 7z
 file.  Archive and member name will be added."
+  :version "24.1"
   :type '(list (string :tag "Program")
               (repeat :tag "Options"
                       :inline t
index a3be2fe4b880faa9cd126cd8792196ef2dea0c70..586be9e8938ca9529c34b689fba220073813bfed 100644 (file)
@@ -110,6 +110,7 @@ string are substituted as defined by the current value of the variable
 
 (defcustom battery-mode-line-limit 100
   "Percentage of full battery load below which display battery status"
+  :version "24.1"
   :type 'integer
   :group 'battery)
 
index 5789e23ac74d5d6d634f8f9134c81f3b620e95af..41cdb491cfa956eb8c9a79dc1de4a7d8cde9ff35 100644 (file)
@@ -431,24 +431,28 @@ If `calc-show-selections' is non-nil, then selected sub-formulas are shown
 by displaying the rest of the formula in `calc-nonselected-face'.
 If `calc-show-selections' is nil, then selected sub-formulas are shown
 by displaying the sub-formula in `calc-selected-face'."
+  :version "24.1"
   :group 'calc
   :type 'boolean)
 
 (defcustom calc-lu-field-reference
   "20 uPa"
   "The default reference level for logarithmic units (field)."
+  :version "24.1"
   :group 'calc
   :type '(string))
 
 (defcustom calc-lu-power-reference
   "mW"
   "The default reference level for logarithmic units (power)."
+  :version "24.1"
   :group 'calc
   :type '(string))
 
 (defcustom calc-note-threshold "1"
   "The number of cents that a frequency should be near a note
 to be identified as that note."
+  :version "24.1"
   :type 'string
   :group 'calc)
 
index cb738675cc4ea1bf3668610006fed5f83405eec3..9db77d7bd8798935688d999a9fd07bd0abdcdd25 100644 (file)
@@ -731,7 +731,7 @@ from the cursor position."
   (interactive
    (let* ((death-date
            (if (equal (current-buffer) (get-buffer calendar-buffer))
-               (calendar-cursor-to-date)
+               (calendar-cursor-to-date t)
              (let* ((today (calendar-current-date))
                     (year (calendar-read
                            "Year of death (>0): "
index ec40ef084ebb2eaefedf064590b1584b3e6b2982..d4546125f3ed72198177fe777f6fc9a603eb2161 100644 (file)
@@ -52,7 +52,7 @@
     ["Insert Anniversary" diary-insert-anniversary-entry]
     ["Insert Block" diary-insert-block-entry]
     ["Insert Cyclic" diary-insert-cyclic-entry]
-    ("Insert Baha'i"
+    ("Insert Bahá'í"
      ["One time" diary-bahai-insert-entry]
      ["Monthly" diary-bahai-insert-monthly-entry]
      ["Yearly" diary-bahai-insert-yearly-entry])
     ["Astronomical Date" calendar-astro-goto-day-number]
     ["Hebrew Date" calendar-hebrew-goto-date]
     ["Persian Date" calendar-persian-goto-date]
-    ["Baha'i Date" calendar-bahai-goto-date]
+    ["Bahá'í Date" calendar-bahai-goto-date]
     ["Islamic Date" calendar-islamic-goto-date]
     ["Julian Date" calendar-julian-goto-date]
     ["Chinese Date" calendar-chinese-goto-date]
@@ -282,4 +282,8 @@ is non-nil."
 
 (provide 'cal-menu)
 
+;; Local Variables:
+;; coding: utf-8
+;; End:
+
 ;;; cal-menu.el ends here
index 905600cfb748864b437b9add318a879108fdd9ea..24c284350a32ce4a8e92d91baada1f975e4fad03 100644 (file)
@@ -41,7 +41,7 @@
 ;; can be translated from the (usual) Gregorian calendar to the day of
 ;; the year/days remaining in year, to the ISO commercial calendar, to
 ;; the Julian (old style) calendar, to the Hebrew calendar, to the
-;; Islamic calendar, to the Baha'i calendar, to the French
+;; Islamic calendar, to the Bahá'í calendar, to the French
 ;; Revolutionary calendar, to the Mayan calendar, to the Chinese
 ;; calendar, to the Coptic calendar, to the Ethiopic calendar, and to
 ;; the astronomical (Julian) day number.  Times of sunrise/sunset can
@@ -52,7 +52,7 @@
 ;; The following files are part of the calendar/diary code:
 
 ;;    appt.el                    Appointment notification
-;;    cal-bahai.el               Baha'i calendar
+;;    cal-bahai.el               Bahá'í calendar
 ;;    cal-china.el               Chinese calendar
 ;;    cal-coptic.el              Coptic/Ethiopic calendars
 ;;    cal-dst.el                 Daylight saving time rules
@@ -642,7 +642,7 @@ causes the diary entry \"Vacation\" to appear from November 1 through
 November 10, 1990.  See the documentation for the function
 `diary-list-sexp-entries' for more details.
 
-Diary entries based on the Hebrew, the Islamic and/or the Baha'i
+Diary entries based on the Hebrew, the Islamic and/or the Bahá'í
 calendar are also possible, but because these are somewhat slow, they
 are ignored unless you set the `diary-nongregorian-listing-hook' and
 the `diary-nongregorian-marking-hook' appropriately.  See the
@@ -679,7 +679,7 @@ details, see the documentation for the variable `diary-list-entries-hook'."
   'diary-bahai-entry-symbol "23.1")
 
 (defcustom diary-bahai-entry-symbol "B"
-  "Symbol indicating a diary entry according to the Baha'i calendar."
+  "Symbol indicating a diary entry according to the Bahá'í calendar."
   :type 'string
   :group 'diary)
 
@@ -1005,9 +1005,9 @@ calendar."
   'calendar-bahai-all-holidays-flag "23.1")
 
 (defcustom calendar-bahai-all-holidays-flag nil
-  "If nil, show only major holidays from the Baha'i calendar.
+  "If nil, show only major holidays from the Bahá'í calendar.
 These are the days on which work and school must be suspended.
-Otherwise, show all the holidays that would appear in a complete Baha'i
+Otherwise, show all the holidays that would appear in a complete Bahá'í
 calendar."
   :type 'boolean
   :group 'holidays)
@@ -2552,7 +2552,7 @@ DATE is (month day year).  Calendars that do not apply are omitted."
            (unless (string-equal
                     (setq odate (calendar-bahai-date-string date))
                     "")
-             (format "Baha'i date: %s" odate))
+             (format "Bahá'í date: %s" odate))
            (format "Chinese date: %s"
                    (calendar-chinese-date-string date))
            (unless (string-equal
@@ -2624,6 +2624,7 @@ If called by a mouse-event, pops up a menu with the result."
 
 ;; Local variables:
 ;; byte-compile-dynamic: t
+;; coding: utf-8
 ;; End:
 
 ;;; calendar.el ends here
index 4bcd9916d0c584e21e550c2b194a8db46c2f2ad7..2e073fd12674e5eeaf98f0851d1f2fead1580a44 100644 (file)
@@ -337,7 +337,7 @@ expressions that can involve the keywords `days' (a number), `date'
 
 (defcustom diary-abbreviated-year-flag t
   "Interpret a two-digit year DD in a diary entry as either 19DD or 20DD.
-This applies to the Gregorian, Hebrew, Islamic, and Baha'i calendars.
+This applies to the Gregorian, Hebrew, Islamic, and Bahá'í calendars.
 When the current century is added to a two-digit year, if the result
 is more than 50 years in the future, the previous century is assumed.
 If the result is more than 50 years in the past, the next century is assumed.
@@ -2624,4 +2624,8 @@ user is asked to confirm its addition."
 
 (provide 'diary-lib)
 
+;; Local Variables:
+;; coding: utf-8
+;; End:
+
 ;;; diary-lib.el ends here
index d20f2194885d49af4d54f73ca23174df04fbc7f9..37f511f799026edec58947ca9ced7548dc9f3827 100644 (file)
@@ -292,16 +292,16 @@ See the documentation for `calendar-holidays' for details."
   (mapcar 'purecopy
   '((holiday-bahai-new-year)
     (holiday-bahai-ridvan)      ; respects calendar-bahai-all-holidays-flag
-    (holiday-fixed  5 23 "Declaration of the Bab")
-    (holiday-fixed  5 29 "Ascension of Baha'u'llah")
-    (holiday-fixed  7  9 "Martyrdom of the Bab")
-    (holiday-fixed 10 20 "Birth of the Bab")
-    (holiday-fixed 11 12 "Birth of Baha'u'llah")
+    (holiday-fixed  5 23 "Declaration of the Báb")
+    (holiday-fixed  5 29 "Ascension of Bahá'u'lláh")
+    (holiday-fixed  7  9 "Martyrdom of the Báb")
+    (holiday-fixed 10 20 "Birth of the Báb")
+    (holiday-fixed 11 12 "Birth of Bahá'u'lláh")
     (if calendar-bahai-all-holidays-flag
         (append
          (holiday-fixed 11 26 "Day of the Covenant")
-         (holiday-fixed 11 28 "Ascension of `Abdu'l-Baha")))))
-  "Baha'i holidays.
+         (holiday-fixed 11 28 "Ascension of `Abdu'l-Bahá")))))
+  "Bahá'í holidays.
 See the documentation for `calendar-holidays' for details."
   :type 'sexp
   :group 'holidays)
@@ -376,7 +376,7 @@ Several basic functions are provided for this purpose:
                                K>0, and MONTH's last day otherwise.
     (holiday-hebrew MONTH DAY STRING)  a fixed date on the Hebrew calendar
     (holiday-islamic MONTH DAY STRING) a fixed date on the Islamic calendar
-    (holiday-bahai MONTH DAY STRING)   a fixed date on the Baha'i calendar
+    (holiday-bahai MONTH DAY STRING)   a fixed date on the Bahá'í calendar
     (holiday-julian MONTH DAY STRING)  a fixed date on the Julian calendar
     (holiday-sexp SEXP STRING) SEXP is a Gregorian-date-valued expression
                                in the variable `year'; if it evaluates to
@@ -404,11 +404,11 @@ To add the Islamic feast celebrating Mohammed's birthday, use
      (holiday-islamic 3 12 \"Mohammed's Birthday\")
 
 since the Islamic months are numbered from 1 starting with Muharram.
-To add an entry for the Baha'i festival of Ridvan, use
+To add an entry for the Bahá'í festival of Ridvan, use
 
      (holiday-bahai 2 13 \"Festival of Ridvan\")
 
-since the Baha'i months are numbered from 1 starting with Baha.
+since the Bahá'í months are numbered from 1 starting with Bahá.
 To add Thomas Jefferson's birthday, April 2, 1743 (Julian), use
 
      (holiday-julian 4 2 \"Jefferson's Birthday\")
@@ -582,7 +582,7 @@ The optional LABEL is used to label the buffer created."
             (if holiday-islamic-holidays
                 (cons "Islamic" holiday-islamic-holidays))
             (if holiday-bahai-holidays
-                (cons "Baha'i" holiday-bahai-holidays))
+                (cons "Bahá'í" holiday-bahai-holidays))
             (if holiday-oriental-holidays
                 (cons "Oriental" holiday-oriental-holidays))
             (if holiday-solar-holidays
@@ -920,4 +920,8 @@ is non-nil)."
 
 (provide 'holidays)
 
+;; Local Variables:
+;; coding: utf-8
+;; End:
+
 ;;; holidays.el ends here
index 975291471df62ed23855e3805c4f04a5df1c7bd8..4c2229f2f838e0e8975b1dc082d139ad4e9dc6f0 100644 (file)
 
 (eval-when-compile (require 'cl))
 (require 'ring)
+(require 'ansi-color)
 \f
 ;; Buffer Local Variables:
 ;;============================================================================
@@ -385,7 +386,7 @@ history list.  Default is to save anything that isn't all whitespace.")
 These functions get one argument, a string containing the text to send.")
 
 ;;;###autoload
-(defvar comint-output-filter-functions '(comint-postoutput-scroll-to-bottom comint-watch-for-password-prompt)
+(defvar comint-output-filter-functions '(ansi-color-process-output comint-postoutput-scroll-to-bottom comint-watch-for-password-prompt)
   "Functions to call after output is inserted into the buffer.
 One possible function is `comint-postoutput-scroll-to-bottom'.
 These functions get one argument, a string containing the text as originally
index 6bddb02add6a9499bba5c956c181d1b05fba3f59..79799049378c7480420eb3fec0dc9410e6d7cbb0 100644 (file)
@@ -521,6 +521,7 @@ It includes all faces in list FACES."
 
 (defcustom custom-theme-allow-multiple-selections nil
   "Whether to allow multi-selections in the *Custom Themes* buffer."
+  :version "24.1"
   :type 'boolean
   :group 'custom-buffer)
 
index 2d880d23955ab9a5bc8549e0f9eaa4ab2ea4d405..2f17ad36da0a915be7f420e4acf31dde971acb45 100644 (file)
@@ -208,7 +208,11 @@ is unbound.  The expression itself is also stored, so that
 Customize can re-evaluate it later to get the standard value.
 DOC is the variable documentation.
 
-The remaining arguments should have the form
+This macro uses `defvar' as a subroutine, which also marks the
+variable as \"special\", so that it is always dynamically bound
+even when `lexical-binding' is t.
+
+The remaining arguments to `defcustom' should have the form
 
    [KEYWORD VALUE]...
 
@@ -1134,9 +1138,10 @@ This variable cannot be set in a Custom theme."
 The theme file is named THEME-theme.el, in one of the directories
 specified by `custom-theme-load-path'.
 
-If optional arg NO-CONFIRM is non-nil, and THEME is not
-considered safe according to `custom-safe-themes', prompt the
-user for confirmation.
+If the theme is not considered safe by `custom-safe-themes',
+prompt the user for confirmation before loading it.  But if
+optional arg NO-CONFIRM is non-nil, load the theme without
+prompting.
 
 Normally, this function also enables THEME; if optional arg
 NO-ENABLE is non-nil, load the theme but don't enable it.
index 2d05be312eb1bcf542f83aa79af282002dc6a769..d6a4a7816d60efea76a7d4ca242b9d54520ad4aa 100644 (file)
@@ -1264,6 +1264,8 @@ Special value `always' suppresses confirmation."
 
 (defun dired-copy-file-recursive (from to ok-flag &optional
                                       preserve-time top recursive)
+  (when (file-subdir-of-p to from)
+    (error "Cannot copy `%s' into its subdirectory `%s'" from to))
   (let ((attrs (file-attributes from)))
     (if (and recursive
             (eq t (car attrs))
@@ -1430,10 +1432,30 @@ ESC or `q' to not overwrite any of the remaining files,
                   (cond  ((integerp marker-char) marker-char)
                          (marker-char (dired-file-marker from)) ; slow
                          (t nil))))
-           (when (and (file-directory-p from)
-                      (file-directory-p to)
-                      (eq file-creator 'dired-copy-file))
-             (setq to (file-name-directory to)))
+            ;; Handle the `dired-copy-file' file-creator specially
+            ;; When copying a directory to another directory or
+            ;; possibly to itself or one of its subdirectories.
+            ;; e.g "~/foo/" => "~/test/"
+            ;; or "~/foo/" =>"~/foo/"
+            ;; or "~/foo/ => ~/foo/bar/")
+            ;; In this case the 'name-constructor' have set the destination
+            ;; TO to "~/test/foo" because the old emacs23 behavior
+            ;; of `copy-directory' was to not create the subdirectory
+            ;; and instead copy the contents.
+            ;; With the new behavior of `copy-directory'
+            ;; (similar to the `cp' shell command) we don't
+            ;; need such a construction of the target directory,
+            ;; so modify the destination TO to "~/test/" instead of "~/test/foo/".
+            (let ((destname (file-name-directory to)))
+              (when (and (file-directory-p from)
+                         (file-directory-p to)
+                         (eq file-creator 'dired-copy-file))
+                (setq to destname))
+              ;; If DESTNAME and FROM are the same directory or
+              ;; If DESTNAME is a subdirectory of FROM, return error.
+              (and (file-subdir-of-p destname from)
+                   (error "Cannot copy `%s' into its subdirectory `%s'"
+                          from to)))
             (condition-case err
                 (progn
                   (funcall file-creator from to dired-overwrite-confirmed)
index 9b54954695b72c8d7c0a13600eda7dfe6cd3ece7..b45a340706f864c4b50555c4c78804f25214558a 100644 (file)
@@ -172,6 +172,7 @@ files and lock files."
 (defcustom dired-omit-verbose t
   "When non-nil, show messages when omitting files.
 When nil, don't show messages."
+  :version "24.1"
   :type 'boolean
   :group 'dired-x)
 
@@ -963,24 +964,26 @@ replace it with a dir-locals-file `./%s'"
    ;; FIXME "man ./" does not work with dired-do-shell-command,
    ;; because there seems to be no way for us to modify the filename,
    ;; only the command.  Hmph.  `dired-man' works though.
-   (list "\\.\\(?:[0-9]\\|man\\)\\'" '(let ((loc (Man-support-local-filenames)))
-                                        (cond ((eq loc 'man-db) "man -l")
-                                              ((eq loc 'man) "man ./")
-                                              (t
-                                               "cat * | tbl | nroff -man -h"))))
+   (list "\\.\\(?:[0-9]\\|man\\)\\'"
+         '(let ((loc (Man-support-local-filenames)))
+            (cond ((eq loc 'man-db) "man -l")
+                  ((eq loc 'man) "man ./")
+                  (t
+                   "cat * | tbl | nroff -man -h | col -b"))))
    (list "\\.\\(?:[0-9]\\|man\\)\\.g?z\\'"
          '(let ((loc (Man-support-local-filenames)))
             (cond ((eq loc 'man-db)
                    "man -l")
                   ((eq loc 'man)
                    "man ./")
-                  (t "gunzip -qc * | tbl | nroff -man -h")))
+                  (t "gunzip -qc * | tbl | nroff -man -h | col -b")))
         ;; Optional decompression.
         '(concat "gunzip" (if dired-guess-shell-gzip-quiet " -q")))
-   (list "\\.[0-9]\\.Z\\'" '(let ((loc (Man-support-local-filenames)))
-                              (cond ((eq loc 'man-db) "man -l")
-                                    ((eq loc 'man) "man ./")
-                                    (t "zcat * | tbl | nroff -man -h")))
+   (list "\\.[0-9]\\.Z\\'"
+         '(let ((loc (Man-support-local-filenames)))
+            (cond ((eq loc 'man-db) "man -l")
+                  ((eq loc 'man) "man ./")
+                  (t "zcat * | tbl | nroff -man -h | col -b")))
         ;; Optional conversion to gzip format.
         '(concat "znew" (if dired-guess-shell-gzip-quiet " -q")
                  " " dired-guess-shell-znew-switches))
index 3962ef14aa42e2d3bb8b6b398e1c13252beaa29b..57bf3c88322011ff745fa7bbdd570af0143980dd 100644 (file)
@@ -3732,7 +3732,7 @@ Ask means pop up a menu for the user to select one of copy, move or link."
 ;;;;;;  dired-run-shell-command dired-do-shell-command dired-do-async-shell-command
 ;;;;;;  dired-clean-directory dired-do-print dired-do-touch dired-do-chown
 ;;;;;;  dired-do-chgrp dired-do-chmod dired-compare-directories dired-backup-diff
-;;;;;;  dired-diff) "dired-aux" "dired-aux.el" "e77c506a0dd793230c5856a67e408fc6")
+;;;;;;  dired-diff) "dired-aux" "dired-aux.el" "cab9b84177ac3555c24cf8e870a64095")
 ;;; Generated autoloads from dired-aux.el
 
 (autoload 'dired-diff "dired-aux" "\
@@ -4196,7 +4196,7 @@ instead.
 ;;;***
 \f
 ;;;### (autoloads (dired-do-relsymlink dired-jump-other-window dired-jump)
-;;;;;;  "dired-x" "dired-x.el" "8d995933a8d82be3a8662d7eff7543cc")
+;;;;;;  "dired-x" "dired-x.el" "2a39a8306a5541c304bc4ab602876f92")
 ;;; Generated autoloads from dired-x.el
 
 (autoload 'dired-jump "dired-x" "\
index f31487e62bdaf25d68e08a1e664a8318f2b41986..53e7811bad1e3c05505188b32bb2f1678a83506f 100644 (file)
@@ -172,6 +172,7 @@ Higher values result in larger images."
 (defcustom doc-view-image-width 850
   "Default image width.
 Has only an effect if imagemagick support is compiled into emacs."
+  :version "24.1"
   :type 'number
   :group 'doc-view)
 
@@ -201,6 +202,7 @@ If this and `doc-view-dvipdfm-program' are set,
   "Program to convert any file type readable by OpenOffice.org to PDF.
 
 Needed for viewing OpenOffice.org (and MS Office) files."
+  :version "24.1"
   :type 'file
   :group 'doc-view)
 
index bf9f500b542b9cf31691f8de3360dda84782b55f..f12beed32712f53d618da113181ea4e96bd602e2 100644 (file)
@@ -1,6 +1,6 @@
 ;;; authors.el --- utility for maintaining Emacs' AUTHORS file -*-coding: utf-8;-*-
 
-;; Copyright (C) 2000-2012  Free Software Foundation, Inc.
+;; Copyright (C) 2000-2012 Free Software Foundation, Inc.
 
 ;; Author: Gerd Moellmann <gerd@gnu.org>
 ;; Maintainer: Kim F. Storm <storm@cua.dk>
@@ -41,23 +41,28 @@ files.")
 (defconst authors-aliases
   '(
     ("Aaron S. Hawley" "Aaron Hawley")
+    ("Alexandru Harsanyi" "Alex Harsanyi")
     ("Andrew Csillag" "Drew Csillag")
     ("Anna M. Bigatti" "Anna Bigatti")
     ("Barry A. Warsaw" "Barry A. Warsaw, Century Computing, Inc."
      "Barry A. Warsaw, ITB" "Barry Warsaw")
+    ("Bill Carpenter" "WJ Carpenter")
     ("Bill Mann" "William F. Mann")
     ("Bill Rozas" "Guillermo J. Rozas")
     ("Björn Torkelsson" "Bjorn Torkelsson")
     ("Brian Fox" "Brian J. Fox")
+    ("Brian Sniffen" "Brian T. Sniffen")
     ("Christoph Wedler" "Christoph.Wedler@sap.com")
     ("Daniel Pfeiffer" "<Daniel.Pfeiffer@Informatik.START.db.de>"
      "<Daniel.Pfeiffer@Informatik.START.dbp.de>")
+    ("David Abrahams" "Dave Abrahams")
     ("David De La Harpe Golden" "David Golden")
     ("David Gillespie" "Dave Gillespie")
     ("David KÃ¥gedal" "David K..edal")
     ("David M. Koppelman" "David M. Koppelman, Koppel@Ec?e.Lsu.Edu"
      "David Koppelman")
     ("David M. Smith" "David Smith" "David M Smith")
+    ("David O'Toole" "David T. O'Toole")
     ("Deepak Goel" "D. Goel")
     ("Ed L. Cashin" "Ed L Cashin")
     ("Edward M. Reingold" "Ed Reingold" "Edward M Reingold"
@@ -76,6 +81,8 @@ files.")
     ("Gerd Möllmann" "Gerd Moellmann")
     ("Hallvard B. Furuseth" "Hallvard B Furuseth" "Hallvard Furuseth")
     ("Hrvoje NikÅ¡ić" "Hrvoje Niksic")
+    ;; lisp/org/ChangeLog 2010-11-11.
+    (nil "aaa bbb")
     ;; src/ChangeLog.4, 1994-01-11, since fixed.
 ;;;    (nil "(afs@hplb.hpl.hp.com)")
     ;; lisp/gnus/ChangeLog.1, 1998-01-15.
@@ -92,6 +99,7 @@ files.")
     ("Jens-Ulrik Holger Petersen" "Jens-Ulrik Petersen")
     ("Jeremy Bertram Maitin-Shepard" "Jeremy Maitin-Shepard")
     ("Johan BockgÃ¥rd" "Johan Bockgard")
+    ("John J Foerch" "John Foerch")
     ("John W. Eaton" "John Eaton")
     ("Jonathan I. Kamens" "Jonathan Kamens")
     ("Joseph Arceneaux" "Joe Arceneaux")
@@ -109,10 +117,11 @@ files.")
     ("Kevin Greiner" "Kevin J. Greiner")
     ("Kim F. Storm" "Kim Storm")
     ("Kyle Jones" "Kyle E. Jones")
+    ("Lars Magne Ingebrigtsen" "Lars Ingebrigtsen")
     ("Marcus G. Daniels" "Marcus Daniels")
     ("Mark D. Baushke" "Mark D Baushke")
     ("Marko Kohtala" "Kohtala Marko")
-    ("Agustín Martín" "Agustin Martin")
+    ("Agustín Martín" "Agustin Martin" "Agustín Martín Domingo")
     ("Martin Lorentzon" "Martin Lorentzson")
     ("Matt Swift" "Matthew Swift")
     ("Maxime Edouard Robert Froumentin" "Max Froumentin")
@@ -124,12 +133,14 @@ files.")
     ("Michael Sperber" "Michael Sperber \\[Mr. Preprocessor\\]")
     ("Mikio Nakajima" "Nakajima Mikio")
     ("Nelson Jose dos Santos Ferreira" "Nelson Ferreira")
+    ("Noorul Islam" "Noorul Islam K M")
     ("Paul Eggert" "eggert")
     ("Paul Reilly" "(pmr@legacy.pajato.com)")
     ("Pavel Janík" "Pavel Janík Ml." "Pavel Janik Ml." "Pavel Janik" "Pavel Janík" "Pavel@Janik.Cz")
     ("Pavel Kobiakov" "Pavel Kobyakov")
     ("Per Abrahamsen" "Per Abhiddenware")
     ("Per Starbäck" "Per Starback")
+    ("Peter J. Weisberg" "PJ Weisberg")
     ("Peter S. Galbraith" "Peter Galbraith")
     ("Peter Runestig" "Peter 'luna' Runestig")
     ("Peter S. Galbraith" "Peter S Galbraith")
@@ -144,16 +155,19 @@ files.")
     ("Sacha Chua" "Sandra Jean Chua")
     ("Sam Steingold" "Sam Shteingold")
     ("Satyaki Das" "Indexed search by Satyaki Das")
+    ("Sébastien Vauban" "Sebastien Vauban")
     ;; There are other Stefans.
 ;;;    ("Stefan Monnier" "Stefan")
     ("Stephen A. Wood" "(saw@cebaf.gov)")
     ("Steven L. Baur" "SL Baur" "Steven L Baur")
     ("Stewart M. Clamen" "Stewart Clamen")
     ("Stuart D. Herring" "Stuart Herring" "Davis Herring")
+    ("T.V. Raman" "T\\. V\\. Raman")
     ("Taichi Kawabata" "KAWABATA,? Taichi")
     ("Takaaki Ota" "Tak Ota")
     ("Takahashi Naoto" "Naoto Takahashi")
     ("Teodor Zlatanov" "Ted Zlatanov")
+    ("Thomas Dye" "Tom Dye")
     ("Thomas Horsley" "Tom Horsley")   ; FIXME ?
     ("Thomas Wurgler" "Tom Wurgler")
     ("Tomohiko Morioka" "MORIOKA Tomohiko")
@@ -174,6 +188,7 @@ Each entry is of the form (REALNAME REGEXP...).  If an author's name
 matches one of the REGEXPs, use REALNAME instead.
 If REALNAME is nil, ignore that author.")
 
+;; FIXME seems it would be less fragile to check for O', Mc, etc.
 (defconst authors-fixed-case
   '("Bryan O'Sullivan"
     "Christian von Roques"
@@ -182,6 +197,7 @@ If REALNAME is nil, ignore that author.")
     "David J. MacKenzie"
     "David McCabe"
     "David O'Toole"
+    "Devon Sean McCullough"
     "Dominique de Waleffe"
     "Edward O'Connor"
     "Exal de Jesus Garcia Carrillo"
@@ -194,8 +210,11 @@ If REALNAME is nil, ignore that author.")
     "Nelson Jose dos Santos Ferreira"
     "Peter von der Ahe"
     "Peter O'Gorman"
+    "Piet van Oostrum"
     "Roland McGrath"
-    "Sean O'Rourke")
+    "Sean O'Halpin"
+    "Sean O'Rourke"
+    "Tijs van Bakel")
   "List of authors whose names cannot be simply capitalized.")
 
 (defvar authors-public-domain-files
@@ -222,11 +241,12 @@ If REALNAME is nil, ignore that author.")
     ".*loaddefs.el$"                   ; not obsolete, but auto-generated
     "\\.\\(cvs\\|git\\)ignore$"                ; obsolete or uninteresting
     "\\.arch-inventory$"
+    ;; TODO lib/? Matches other things?
+    "build-aux/" "m4/" "Emacs.xcodeproj" "charsets" "mapfiles"
     "preferences\\.\\(nib\\|gorm\\)"
     "vc-\\(rcs\\|cvs\\|sccs\\)-hooks\\.el$")
   "List of regexps matching obsolete files.
-Changes to files matching one of the regexps in this list are not
-listed.")
+Changes to files matching one of the regexps in this list are not listed.")
 
 (defconst authors-ignored-files
   '("external-lisp"
@@ -257,7 +277,12 @@ listed.")
     "*.el"
     ;; Autogen:
     "cus-load.el" "finder-inf.el" "ldefs-boot.el"
+    "compile" "config.guess" "config.sub" "depcomp"
+    ;; Only existed briefly, then renamed:
+    "images/icons/allout-widgets-dark-bg"
+    "images/icons/allout-widgets-light-bg"
     ;; Never had any meaningful changes logged, now deleted:
+    "unidata/bidimirror.awk" "unidata/biditype.awk"
     "split-man" "Xkeymap.txt" "ms-7bkermit" "ulimit.hack"
     "gnu-hp300" "refcard.bit" "ledit.l" "forms.README" "forms-d2.dat"
     "CXTERM-DIC/PY.tit" "CXTERM-DIC/ZIRANMA.tit"
@@ -308,29 +333,47 @@ Changes to files in this list are not listed.")
     "complete.el"
     "cpp.el"
     "ctxt.el"
+    "custom.el"
+    "cyrillic.el"
+    "czech.el"
     "debug.el"
     "dired.el"
     "el.el"
+    "eshell.el"
+    "ethiopic.el"
+    "f90.el"
     "files.el"
     "find.el"
     "format.el"
+    "generic.el"
+    "georgian.el"
+    "greek.el"
     "grep.el"
+    "hebrew.el"
     "imenu.el"
+    "indian.el"
+    "japanese.el"
     "java.el"
+    "lao.el"
     "linux.el"
     "locate.el"
     "make.el"
     "mode.el"
     "python.el"
+    "rmailmm.el"
     "semantic.el"
     "shell.el"
     "simple.el"
+    "slovak.el"
     "sort.el"
     "speedbar.el"
     "srecode.el"
     "table.el"
     "texi.el"
+    "thai.el"
+    "tibetan.el"
     "util.el"
+    "vc-bzr.el"
     "wisent.el")
   "List of basenames occurring more than once in the source.")
 
@@ -588,6 +631,7 @@ in the repository.")
     ("texi/url.txi" . "url.texi")
     ("edt-user.doc" . "edt.texi")
     ("DEV-NOTES" . "nextstep")
+    ("org/COPYRIGHT-AND-LICENSE" . "org/README")
     ;; Moved to different directories.
     ("ctags.1" . "ctags.1")
     ("etags.1" . "etags.1")
index 0a690af572c530026d4f094c6a8eea63f3a20656..01bdfbf4bf2d872605deb70445c49c64ca20f88d 100644 (file)
@@ -104,6 +104,7 @@ If non-nil, alignment is done with the first keyword
 \(defun foo (arg1 arg2 &rest rest
                       &key key1 key2)
   #|...|#)"
+  :version "24.1"
   :type 'boolean
   :group 'lisp-indent)
 
@@ -111,6 +112,7 @@ If non-nil, alignment is done with the first keyword
   "Indentation of lambda list keyword parameters.
 See `lisp-lambda-list-keyword-parameter-alignment'
 for more information."
+  :version "24.1"
   :type 'integer
   :group 'lisp-indent)
 
@@ -130,6 +132,7 @@ If non-nil, alignment is done with the first parameter
 \(defun foo (arg1 arg2 &key key1 key2
                             key3 key4)
   #|...|#)"
+  :version "24.1"
   :type 'boolean
   :group 'lisp-indent)
 
index dbacba6cd29febe0d272c9c6056b3cb33ee025ac..88698a1f0697bb8f1fe3c224dc417737a4aeed7e 100644 (file)
@@ -135,6 +135,8 @@ BODY contains code to execute each time the mode is enabled or disabled.
                the new state, and sets it.  If you specify a :variable,
                this function does not define a MODE variable (nor any of
                the terms used in :variable).
+:after-hook     A single lisp form which is evaluated after the mode hooks
+                have been run.  It should not be quoted.
 
 For example, you could write
   (define-minor-mode foo-mode \"If enabled, foo on you!\"
@@ -170,6 +172,7 @@ For example, you could write
          (setter nil)            ;The function (if any) to set the mode var.
          (modefun mode)          ;The minor mode function name we're defining.
         (require t)
+        (after-hook nil)
         (hook (intern (concat mode-name "-hook")))
         (hook-on (intern (concat mode-name "-on-hook")))
         (hook-off (intern (concat mode-name "-off-hook")))
@@ -197,6 +200,7 @@ For example, you could write
              (setq mode variable)
            (setq mode (car variable))
            (setq setter (cdr variable))))
+       (:after-hook (setq after-hook (pop body)))
        (t (push keyw extra-keywords) (push (pop body) extra-keywords))))
 
     (setq keymap-sym (if (and keymap (symbolp keymap)) keymap
@@ -275,7 +279,8 @@ the mode if ARG is omitted or nil, and toggle it if ARG is `toggle'.
                               (not (equal ,last-message
                                           (current-message))))
                    (message ,(format "%s %%sabled" pretty-name)
-                            (if ,mode "en" "dis"))))))
+                            (if ,mode "en" "dis")))))
+          ,@(when after-hook `(,after-hook)))
         (force-mode-line-update)
         ;; Return the new setting.
         ,mode)
index 8c53ad5861257ee955dbd95d445f1f53f0ea0833..4efdc3240cd723ec838be37adf3033f650abad8c 100644 (file)
@@ -257,9 +257,8 @@ is called as a function to find the defun's beginning."
        (if (> arg 0)
            (dotimes (i arg)
              (funcall beginning-of-defun-function))
-         ;; Better not call end-of-defun-function directly, in case
-         ;; it's not defined.
-         (end-of-defun (- arg))))))
+        (dotimes (i (- arg))
+          (funcall end-of-defun-function))))))
 
    ((or defun-prompt-regexp open-paren-in-column-0-is-defun-start)
     (and (< arg 0) (not (eobp)) (forward-char 1))
index af60cdc12603c7956b8d49fa4a5900e13032380b..144b4dda8e2ba4e64c6be329248fbcfa9cb0bf84 100644 (file)
@@ -61,6 +61,7 @@ properties to colorize its output based on the setting of
   "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\"."
+  :version "24.1"
   :type 'string
   :group 'eshell-ls)
 
index c3797536f193c338da3dc2ed8de13840453adcad..99017d274900445149afdcdc4c84e868e46c516b 100644 (file)
@@ -850,9 +850,24 @@ URL, or nil.  If nil, search the alist for further matches.")
   (and (not (string-match "\\.el\\'" name))
        (ffap-locate-file name '(".el") load-path)))
 
+;; FIXME this duplicates the logic of Man-header-file-path.
+;; There should be a single central variable or function for this.
+;; See also (bug#10702):
+;; cc-search-directories, semantic-c-dependency-system-include-path,
+;; semantic-gcc-setup
 (defvar ffap-c-path
-  ;; Need smarter defaults here!  Suggestions welcome.
-  '("/usr/include" "/usr/local/include"))
+  (let ((arch (with-temp-buffer
+                (when (eq 0 (ignore-errors
+                              (call-process "gcc" nil '(t nil) nil
+                                            "-print-multiarch")))
+                  (goto-char (point-min))
+                  (buffer-substring (point) (line-end-position)))))
+        (base '("/usr/include" "/usr/local/include")))
+    (if (zerop (length arch))
+        base
+      (append base (list (expand-file-name arch "/usr/include")))))
+  "List of directories to search for include files.")
+
 (defun ffap-c-mode (name)
   (ffap-locate-file name t ffap-c-path))
 
index 87218c9a6e8f6703d781d986dee3308657a2461d..3523fbdc01267d3f1851c5f1e95e3dbcca670271 100644 (file)
@@ -4985,6 +4985,39 @@ given.  With a prefix argument, TRASH is nil."
                 directory 'full directory-files-no-dot-files-regexp)))
       (delete-directory-internal directory)))))
 
+(defun files-equal-p (file1 file2)
+  "Return non-nil if FILE1 and FILE2 name the same file."
+  (let ((handler (or (find-file-name-handler file1 'files-equal-p)
+                     (find-file-name-handler file2 'files-equal-p))))
+    (if handler
+        (funcall handler 'files-equal-p file1 file2)
+      (equal (file-attributes (file-truename file1))
+             (file-attributes (file-truename file2))))))
+
+(defun file-subdir-of-p (dir1 dir2)
+  "Return non-nil if DIR1 is a subdirectory of DIR2.
+Note that a directory is treated by this function as a subdirectory of itself.
+This function only works when its two arguments already exist,
+when they don't, it returns nil."
+  (let ((handler (or (find-file-name-handler dir1 'file-subdir-of-p)
+                     (find-file-name-handler dir2 'file-subdir-of-p))))
+    (if handler
+        (funcall handler 'file-subdir-of-p dir1 dir2)
+      (when (and (file-directory-p dir1)
+                 (file-directory-p dir2))
+        (loop with f1 = (file-truename dir1)
+              with f2 = (file-truename dir2)
+              with ls1 = (or (split-string f1 "/" t) (list "/"))
+              with ls2 = (or (split-string f2 "/" t) (list "/"))
+              for p = (string-match "^/" f1)
+              for i in ls1
+              for j in ls2
+              when (string= i j)
+              concat (if p (concat "/" i) (concat i "/"))
+              into root
+              finally return
+              (files-equal-p (file-truename root) f2))))))
+
 (defun copy-directory (directory newname &optional keep-time parents copy-contents)
   "Copy DIRECTORY to NEWNAME.  Both args must be strings.
 This function always sets the file modes of the output files to match
@@ -5011,12 +5044,16 @@ directly into NEWNAME instead."
            (format "Copy directory %s to: " dir)
            default-directory default-directory nil nil)
           current-prefix-arg t nil)))
+  (when (file-subdir-of-p newname directory)
+    (error "Cannot copy `%s' into its subdirectory `%s'"
+           directory newname))
   ;; If default-directory is a remote directory, make sure we find its
   ;; copy-directory handler.
   (let ((handler (or (find-file-name-handler directory 'copy-directory)
                     (find-file-name-handler newname 'copy-directory))))
     (if handler
-       (funcall handler 'copy-directory directory newname keep-time parents)
+       (funcall handler 'copy-directory directory
+                 newname keep-time parents copy-contents)
 
       ;; Compute target name.
       (setq directory (directory-file-name (expand-file-name directory))
@@ -5025,7 +5062,12 @@ directly into NEWNAME instead."
       (cond ((not (file-directory-p newname))
             ;; If NEWNAME is not an existing directory, create it;
             ;; that is where we will copy the files of DIRECTORY.
-            (make-directory newname parents))
+            (make-directory newname parents)
+             ;; `file-subdir-of-p' doesn't handle non--existing directories,
+             ;; so double check now if NEWNAME is not a subdir of DIRECTORY.
+             (and (file-subdir-of-p newname directory)
+                  (error "Cannot copy `%s' into its subdirectory `%s'"
+                         directory newname)))
            ;; If NEWNAME is an existing directory and COPY-CONTENTS
            ;; is nil, copy into NEWNAME/[DIRECTORY-BASENAME].
            ((not copy-contents)
index f6701c0c79f1171a1a2cd3848b09d717c9b92a31..9b655319bc966f4c30d7ea193640a2ca102a5819 100644 (file)
@@ -138,6 +138,7 @@ The above is the default behavior of `font-lock-mode'; you may specify
 your own function which is called when `font-lock-mode' is toggled via
 `font-lock-function'. "
   nil nil nil
+  :after-hook (if font-lock-mode (font-lock-initial-fontify))
   ;; Don't turn on Font Lock mode if we don't have a display (we're running a
   ;; batch job) or if the buffer is invisible (the name starts with a space).
   (when (or noninteractive (eq (aref (buffer-name) 0) ?\s))
index 9f9445bdea96e01d42636d3b9fb24ffc72fffd51..a65a2c94c7dd6bad9439efc73d035b111b8ce88d 100644 (file)
@@ -629,21 +629,24 @@ Major/minor modes can set this variable if they know which option applies.")
   ;; Shut up the byte compiler.
   (defvar font-lock-face-attributes))  ; Obsolete but respected if set.
 
+(defun font-lock-initial-fontify ()
+  ;; The first fontification after turning the mode on.  This must
+  ;;  only be called after the mode hooks have been run.
+  (let ((max-size (font-lock-value-in-major-mode font-lock-maximum-size)))
+    (cond (font-lock-fontified
+          nil)
+         ((or (null max-size) (> max-size (buffer-size)))
+          (font-lock-fontify-buffer))
+         (font-lock-verbose
+          (message "Fontifying %s...buffer size greater than font-lock-maximum-size"
+                   (buffer-name))))))
+
 (defun font-lock-mode-internal (arg)
   ;; Turn on Font Lock mode.
   (when arg
     (add-hook 'after-change-functions 'font-lock-after-change-function t t)
     (font-lock-set-defaults)
-    (font-lock-turn-on-thing-lock)
-    ;; Fontify the buffer if we have to.
-    (let ((max-size (font-lock-value-in-major-mode font-lock-maximum-size)))
-      (cond (font-lock-fontified
-            nil)
-           ((or (null max-size) (> max-size (buffer-size)))
-            (font-lock-fontify-buffer))
-           (font-lock-verbose
-            (message "Fontifying %s...buffer size greater than font-lock-maximum-size"
-                     (buffer-name))))))
+    (font-lock-turn-on-thing-lock))
   ;; Turn off Font Lock mode.
   (unless font-lock-mode
     (remove-hook 'after-change-functions 'font-lock-after-change-function t)
index 38b9139b7dd0c012ea2939e1365330ad24a9bb15..e58b6cc777373685805daa9c6c7b267a2a7e09ac 100644 (file)
@@ -1,3 +1,93 @@
+2012-02-23  Katsumi Yamaoka  <yamaoka@jpl.org>
+
+       * nntp.el (nntp-send-authinfo): Work for secure nntp entry in authinfo.
+
+2012-02-20  Lars Ingebrigtsen  <larsi@gnus.org>
+
+       * mm-decode.el (mm-shr): Remove "soft hyphens".
+
+       * nnimap.el (nnimap-request-list): Return the group names encoded as
+       utf8.  Otherwise non-European group names don't work.
+       (nnimap-request-newgroups): Ditto.
+
+       * gnus-sum.el (gnus-summary-insert-old-articles): Fix the syntax for
+       the default in `read-string' (bug#10757).
+
+       * gnus-msg.el (gnus-group-post-news): Don't bug out on `C-u a' on
+       topics (bug#10843).
+
+       * nnimap.el (nnimap-log-command): Add the IMAP address to the log
+       buffer.  Suggested by Herbert Valerio Riedel.
+       (nnimap-request-move-article): Delete the message from the correct IMAP
+       server.
+
+2012-02-19  Vida Gábor  <vidagabor@gmail.com>  (tiny change)
+
+       * gnus-demon.el (gnus-demon-init): Don't multiply time twice.
+       Reported by Peter Münster.
+
+2012-02-18  Lars Ingebrigtsen  <larsi@gnus.org>
+
+       * shr.el (shr-image-fetched): Make sure we really kill the right
+       buffer.
+
+2012-02-16  Leo Liu  <sdl.web@gmail.com>
+
+       * gnus-start.el (gnus-1): Avoid duplicate entries.
+
+2012-02-15  Lars Ingebrigtsen  <larsi@gnus.org>
+
+       * shr.el (shr-remove-trailing-whitespace): Really delete the padding on
+       too-wide lines.
+
+2012-02-15  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * shr.el (shr-rescale-image): Undo previous change; see
+       <http://lists.gnu.org/archive/html/emacs-devel/2012-02/msg00540.html>.
+
+2012-02-13  Lars Ingebrigtsen  <larsi@gnus.org>
+
+       * nnimap.el (nnimap-record-commands): New variable.
+       (nnimap-log-command): Use it.
+       (nnimap-make-process-buffer): Add a space to the process buffer.
+       (nnimap-transform-headers): Don't bug out on header lines containing
+       stuff that look like IMAP length encodings.
+
+       * shr.el (shr-rescale-image): Allow viewing large images.
+
+2012-02-12  Lars Ingebrigtsen  <larsi@gnus.org>
+
+       * nnml.el (nnml-request-compact-group): Delete the marks file after
+       compaction (bug#10800).
+
+       * gnus-art.el (gnus-stop-downloads): Stop `url-queue' downloads on
+       group exit.
+
+       * nnimap.el (nnimap-parse-flags): Parse correctly when we have mixed
+       QRESYNC/FETCH output.
+
+2012-02-11  Glenn Morris  <rgm@gnu.org>
+
+       * sieve-manage.el (sieve-manage-default-stream):
+       * shr.el (shr):
+       * nnir.el (nnir-ignored-newsgroups, nnir-summary-line-format)
+       (nnir-retrieve-headers-override-function)
+       (nnir-imap-default-search-key, nnir-notmuch-program)
+       (nnir-notmuch-additional-switches, nnir-notmuch-remove-prefix)
+       (nnir-method-default-engines):
+       * message.el (message-cite-reply-position):
+       * gssapi.el (gssapi-program):
+       * gravatar.el (gravatar):
+       * gnus-sum.el (gnus-refer-thread-use-nnir):
+       * gnus-registry.el (gnus-registry-unfollowed-addresses)
+       (gnus-registry-max-pruned-entries):
+       * gnus-picon.el (gnus-picon-inhibit-top-level-domains):
+       * gnus-int.el (gnus-after-set-mark-hook)
+       (gnus-before-update-mark-hook):
+       * gnus-async.el (gnus-async-post-fetch-function):
+       * auth-source.el (auth-source-cache-expiry):
+       Add missing :version tags to new defcustoms and defgroups.
+
 2012-02-10  Lars Ingebrigtsen  <larsi@gnus.org>
 
        * message.el (message-default-send-mail-function): Made into own
        have newlines within the strings, and where the UID comes after the
        BODYSTRUCTURE element (bug#10537).
 
-       * shr-color.el (shr-color-set-minimum-interval): Renamed to add prefix
+       * shr-color.el (shr-color-set-minimum-interval): Rename to add prefix
        (bug#10732).
 
        * shr.el (shr-insert-document): Add doc string.
        (gnus-registry--split-fancy-with-parent-internal): Fix splitting bugs
        and provide better messaging.
 
-2011-04-06  David Engster  <dengste@eml.cc>
-
-       * Makefile.in (fail-on-warning): New rule to compile with warnings as
-       errors.
-
 2011-04-06  Teodor Zlatanov  <tzz@lifelogs.com>
 
        * gnus-registry.el: Don't use ERT if it's not available.  Load it
index 5e946372d04c45b2b256d2fe0a3e5e6ec08e827a..80a3b91b60aaf862bc06a4fe609135145904d547 100644 (file)
@@ -84,6 +84,7 @@
   "How many seconds passwords are cached, or nil to disable
 expiring.  Overrides `password-cache-expiry' through a
 let-binding."
+  :version "24.1"
   :group 'auth-source
   :type '(choice (const :tag "Never" nil)
                  (const :tag "All Day" 86400)
index b282afd961c7f4ac7aba06b1d8a9c1504b6d6a5b..048f8956567a352fd071367c500dd86c882ddffe 100644 (file)
@@ -4582,6 +4582,10 @@ commands:
     (when (eq (elt timer 5) 'image-animate-timeout)
       (cancel-timer timer))))
 
+(defun gnus-stop-downloads ()
+  (when (boundp 'url-queue)
+    (set (intern "url-queue" obarray) nil)))
+
 ;; Set article window start at LINE, where LINE is the number of lines
 ;; from the head of the article.
 (defun gnus-article-set-window-start (&optional line)
index 378b0e063cbb33edda34a476c1c4e0c77c9276b8..603952dd17b3d1f15dadc7d3233fbe0297a1af3b 100644 (file)
@@ -74,6 +74,7 @@ It should return non-nil if the article is to be prefetched."
   "Function called after an article has been prefetched.
 The function will be called narrowed to the region of the article
 that was fetched."
+  :version "24.1"
   :group 'gnus-asynchronous
   :type 'function)
 
index c91c725658ade96717c2fe48408c4b4f06e7012c..d0baf25d5d9682abdcab910b052a793b9659689a 100644 (file)
@@ -137,8 +137,7 @@ Emacs has been idle for IDLE `gnus-demon-timestep's."
              ;; (func nil number)
              ;; Only call when Emacs has been idle for `idle'
              ((and (null time) (numberp idle))
-              (run-with-idle-timer (* idle gnus-demon-timestep) t
-                                   'gnus-demon-run-callback func))
+              (run-with-idle-timer idle t 'gnus-demon-run-callback func))
              ;; (func number any)
              ;; Call every `time'
              ((eq time-type 'integer)
index 20add470abe1741220af1a2aa58324b16b236c57..8dc691ffe42fe71813efa3c54d22df74fafe63c5 100644 (file)
 
 (defcustom gnus-after-set-mark-hook nil
   "Hook called just after marks are set in a group."
+  :version "24.1"
   :group 'gnus-start
   :type 'hook)
 
 (defcustom gnus-before-update-mark-hook nil
   "Hook called just before marks are updated in a group."
+  :version "24.1"
   :group 'gnus-start
   :type 'hook)
 
index f92dc5e91d01a3cf2b9502f1d2e9f21ebfb73d84..bf75f94c195a10000e087a1ffb3eefc22d1b3f6a 100644 (file)
@@ -640,7 +640,7 @@ a news."
             (if (= 1 (prefix-numeric-value arg))
                 (gnus-group-completing-read "Newsgroup" nil
                                             (gnus-read-active-file-p))
-              (gnus-group-group-name))
+              (or (gnus-group-group-name) ""))
           ""))
        ;; make sure last viewed article doesn't affect posting styles:
        (gnus-article-copy))
index 69b65dfcb03deb13f829e2da01e34c12db4158d6..2f347efe57924bfba9af6b5ccad15288848c9e35 100644 (file)
@@ -87,6 +87,7 @@ added right to the textual representation."
 (defcustom gnus-picon-inhibit-top-level-domains t
   "If non-nil, don't piconify top-level domains.
 These are often not very interesting."
+  :version "24.1"
   :type 'boolean
   :group 'gnus-picon)
 
index 9df6dc4ab6fc9dff2d5de22249eb5f02e7141b90..f1618b376ef57da84407cd82c31fabf9616496b6 100644 (file)
@@ -142,6 +142,7 @@ display.")
 The addresses are matched, they don't have to be fully qualified.
 In the messages, these addresses can be the sender or the
 recipients."
+  :version "24.1"
   :group 'gnus-registry
   :type '(repeat regexp))
 
@@ -243,6 +244,7 @@ the Bit Bucket."
 
 (defcustom gnus-registry-max-pruned-entries nil
   "Maximum number of pruned entries in the registry, nil for unlimited."
+  :version "24.1"
   :group 'gnus-registry
   :type '(radio (const :format "Unlimited " nil)
                 (integer :format "Maximum number: %v")))
index 9b1d5681e6ce9ed4f3156cd4b200ecea469c7315..bb7dd76d590ad039baa43a0554d5638a8eab6af9 100644 (file)
@@ -763,8 +763,8 @@ prompt the user for the name of an NNTP server to use."
     ;; Add "native" to gnus-predefined-server-alist just to have a
     ;; name for the native select method.
     (when gnus-select-method
-      (push (cons "native" gnus-select-method)
-           gnus-predefined-server-alist))
+      (add-to-list 'gnus-predefined-server-alist
+                  (cons "native" gnus-select-method)))
 
     (if gnus-agent
        (gnus-agentize))
index 63482eea1c472502ef1d9198d7a38dfdeaf41c5f..9770b8f9982a75818fdcbc8dd2b3e3c4f7f6188c 100644 (file)
@@ -122,6 +122,7 @@ If t, fetch all the available old headers."
   "*Use nnir to search an entire server when referring threads. A
 nil value will only search for thread-related articles in the
 current group."
+  :version "24.1"
   :group 'gnus-thread
   :type 'boolean)
 
@@ -7318,6 +7319,7 @@ If FORCE (the prefix), also save the .newsrc file(s)."
       (when (gnus-buffer-live-p gnus-article-buffer)
        (with-current-buffer gnus-article-buffer
          (gnus-article-stop-animations)
+         (gnus-stop-downloads)
          (mm-destroy-parts gnus-article-mime-handles)
          ;; Set it to nil for safety reason.
          (setq gnus-article-mime-handle-alist nil)
@@ -9655,6 +9657,7 @@ C-u g', show the raw article."
       (when (gnus-buffer-live-p gnus-article-buffer)
        (with-current-buffer gnus-article-buffer
          (gnus-article-stop-animations)
+         (gnus-stop-downloads)
          (mm-destroy-parts gnus-article-mime-handles)
          ;; Set it to nil for safety reason.
          (setq gnus-article-mime-handle-alist nil)
@@ -12857,9 +12860,8 @@ If ALL is a number, fetch this number of articles."
                        (if initial "max" "default")
                        len)
                       nil nil
-                      (if initial
-                          (cons (number-to-string initial)
-                                0)))))
+                      (and initial
+                           (number-to-string initial)))))
                (unless (string-match "^[ \t]*$" input)
                  (setq all (string-to-number input))
                  (if (< all len)
index 75e748037436d008ab6a96a25a5e64695edbb62c..a10ea21b96b86e7da950c01c494d4243a08832b7 100644 (file)
@@ -29,6 +29,7 @@
 
 (defgroup gravatar nil
   "Gravatar."
+  :version "24.1"
   :group 'comm)
 
 (defcustom gravatar-automatic-caching t
index 4bc939247236d21da0a25057ea72cf0b65bd501b..ab8831dc49ef7717ea1e989b7506c1626c6d2f9e 100644 (file)
@@ -37,6 +37,7 @@
 and %l with the user name.  The program should accept commands on
 stdin and return responses to stdout.  Each entry in the list is
 tried until a successful connection is made."
+  :version "24.1"
   :group 'network
   :type '(repeat string))
 
index 2d8bb36f94a5b9518a78a074445882398f48d4c8..4ce9279114b47a26610cffd79964e1ecede5c0ad 100644 (file)
@@ -1095,6 +1095,7 @@ probably want to set this variable only for specific groups,
 e.g. using `gnus-posting-styles':
 
   (eval (set (make-local-variable 'message-cite-reply-position) 'above))"
+  :version "24.1"
   :type '(choice (const :tag "Reply inline" 'traditional)
                 (const :tag "Reply above" 'above)
                 (const :tag "Reply below" 'below))
index dd3eb6c9d96e52364a92cfa1f96b63359a98ab6f..09617384049453a90dc064007c1633bbabe620e5 100644 (file)
@@ -1757,6 +1757,10 @@ If RECURSIVE, search recursively."
                                    (string-to-number (match-string 2)))
                                  mm-extra-numeric-entities)))
             (replace-match (char-to-string char))))
+        ;; Remove "soft hyphens".
+        (goto-char (point-min))
+        (while (search-forward "­" nil t)
+          (replace-match "" t t))
         (libxml-parse-html-region (point-min) (point-max))))
       (mm-handle-set-undisplayer
        handle
index bc62e16edafc723185d24655c57366efbd6a02ca..97de6f0959bac24233d08e78aa7b8b80b2d8e921 100644 (file)
@@ -1,10 +1,10 @@
 ;;; mml1991.el --- Old PGP message format (RFC 1991) support for MML
 
-;; Copyright (C) 1998-2012  Free Software Foundation, Inc.
+;; Copyright (C) 1998-2012 Free Software Foundation, Inc.
 
 ;; Author: Sascha Lüdecke <sascha@meta-x.de>,
 ;;     Simon Josefsson <simon@josefsson.org> (Mailcrypt interface, Gnus glue)
-;; Keywords PGP
+;; Keywords: PGP
 
 ;; This file is part of GNU Emacs.
 
index de4d248c624bed5e5d585f26088c565253c8c853..f978b8c9906f0dcf3abd9c32e73e5c0398778064 100644 (file)
@@ -201,7 +201,10 @@ textual parts.")
        (while (re-search-forward
                "[^]][ (]{\\([0-9]+\\)}\r?\n"
                (save-excursion
-                 (or (re-search-forward "\\* [0-9]+ FETCH" nil t)
+                 ;; Start of the header section.
+                 (or (re-search-forward "] {[0-9]+}\r?\n" nil t)
+                     ;; Start of the next FETCH.
+                     (re-search-forward "\\* [0-9]+ FETCH" nil t)
                      (point-max)))
                t)
          (setq size (string-to-number (match-string 1)))
@@ -289,7 +292,7 @@ textual parts.")
 
 (defun nnimap-make-process-buffer (buffer)
   (with-current-buffer
-      (generate-new-buffer (format "*nnimap %s %s %s*"
+      (generate-new-buffer (format " *nnimap %s %s %s*"
                                   nnimap-address nnimap-server-port
                                   (gnus-buffer-exists-p buffer)))
     (mm-disable-multibyte)
@@ -865,6 +868,7 @@ textual parts.")
          ;; Move the article to a different method.
          (let ((result (eval accept-form)))
            (when result
+             (nnimap-possibly-change-group group server)
              (nnimap-delete-article article)
              result)))))))
 
@@ -1187,7 +1191,8 @@ textual parts.")
          (dolist (response responses)
            (let* ((sequence (car response))
                   (response (cadr response))
-                  (group (cadr (assoc sequence sequences))))
+                  (group (cadr (assoc sequence sequences)))
+                  (egroup (encode-coding-string group 'utf-8)))
              (when (and group
                         (equal (caar response) "OK"))
                (let ((uidnext (nnimap-find-parameter "UIDNEXT" response))
@@ -1199,15 +1204,14 @@ textual parts.")
                    (setq highest (1- (string-to-number (car uidnext)))))
                  (cond
                   ((null highest)
-                   (insert (format "%S 0 1 y\n" (utf7-decode group t))))
+                   (insert (format "%S 0 1 y\n" egroup)))
                   ((zerop exists)
                    ;; Empty group.
-                   (insert (format "%S %d %d y\n"
-                                   (utf7-decode group t)
+                   (insert (format "%S %d %d y\n" egroup
                                    highest (1+ highest))))
                   (t
                    ;; Return the widest possible range.
-                   (insert (format "%S %d 1 y\n" (utf7-decode group t)
+                   (insert (format "%S %d 1 y\n" egroup
                                    (or highest exists)))))))))
          t)))))
 
@@ -1219,7 +1223,7 @@ textual parts.")
                       (nnimap-get-groups)))
        (unless (assoc group nnimap-current-infos)
          ;; Insert dummy numbers here -- they don't matter.
-         (insert (format "%S 0 1 y\n" (utf7-encode group)))))
+         (insert (format "%S 0 1 y\n" (encode-coding-string group 'utf-8)))))
       t)))
 
 (deffoo nnimap-retrieve-group-data-early (server infos)
@@ -1539,7 +1543,8 @@ textual parts.")
 
 (defun nnimap-parse-flags (sequences)
   (goto-char (point-min))
-  ;; Change \Delete etc to %Delete, so that the reader can read it.
+  ;; Change \Delete etc to %Delete, so that the Emacs Lisp reader can
+  ;; read it.
   (subst-char-in-region (point-min) (point-max)
                        ?\\ ?% t)
   ;; Remove any MODSEQ entries in the buffer, because they may contain
@@ -1610,7 +1615,9 @@ textual parts.")
                             vanished highestmodseq)
                       articles)
                groups)
-         (goto-char end)
+         (if (eq flag-sequence 'qresync)
+             (goto-char end)
+           (setq end (point)))
          (setq articles nil))))
     groups))
 
@@ -1693,13 +1700,18 @@ textual parts.")
     (nnimap-wait-for-response nnimap-sequence))
   nnimap-sequence)
 
+(defvar nnimap-record-commands nil
+  "If non-nil, log commands to the \"*imap log*\" buffer.")
+
 (defun nnimap-log-command (command)
-  (with-current-buffer (get-buffer-create "*imap log*")
-    (goto-char (point-max))
-    (insert (format-time-string "%H:%M:%S") " "
-           (if nnimap-inhibit-logging
-               "(inhibited)\n"
-             command)))
+  (when nnimap-record-commands
+    (with-current-buffer (get-buffer-create "*imap log*")
+      (goto-char (point-max))
+      (insert (format-time-string "%H:%M:%S")
+             " [" nnimap-address "] "
+             (if nnimap-inhibit-logging
+                 "(inhibited)\n"
+               command))))
   command)
 
 (defun nnimap-command (&rest args)
index 1d4f1c25a098d579a6c0571593f6f3a633274879..d1ca0213ed968c5280824f97cb66971f4f1ea5da 100644 (file)
@@ -310,6 +310,7 @@ is `(valuefunc member)'."
 (defcustom nnir-ignored-newsgroups ""
   "*A regexp to match newsgroups in the active file that should
   be skipped when searching."
+  :version "24.1"
   :type '(regexp)
   :group 'nnir)
 
@@ -324,6 +325,7 @@ with three items unique to nnir summary buffers:
 %g    Article original short group name (string)
 
 If nil this will use `gnus-summary-line-format'."
+  :version "24.1"
   :type '(string)
   :group 'nnir)
 
@@ -335,6 +337,7 @@ retrieved header format.
 
 If this variable is nil, or if the provided function returns nil for a search
 result, `gnus-retrieve-headers' will be called instead."
+  :version "24.1"
   :type '(function)
   :group 'nnir)
 
@@ -342,6 +345,7 @@ result, `gnus-retrieve-headers' will be called instead."
   "*The default IMAP search key for an nnir search. Must be one of
   the keys in `nnir-imap-search-arguments'. To use raw imap queries
   by default set this to \"Imap\"."
+  :version "24.1"
   :type `(choice ,@(mapcar (lambda (elem) (list 'const (car elem)))
                           nnir-imap-search-arguments))
   :group 'nnir)
@@ -503,6 +507,7 @@ arrive at the correct group name, \"mail.misc\"."
 
 (defcustom nnir-notmuch-program "notmuch"
   "*Name of notmuch search executable."
+  :version "24.1"
   :type '(string)
   :group 'nnir)
 
@@ -513,6 +518,7 @@ Note that this should be a list.  Ie, do NOT use the following:
     (setq nnir-notmuch-additional-switches \"-i -w\") ; wrong
 Instead, use this:
     (setq nnir-notmuch-additional-switches '(\"-i\" \"-w\"))"
+  :version "24.1"
   :type '(repeat (string))
   :group 'nnir)
 
@@ -523,6 +529,7 @@ regular expression.
 
 This variable is very similar to `nnir-namazu-remove-prefix', except
 that it is for notmuch, not Namazu."
+  :version "24.1"
   :type '(regexp)
   :group 'nnir)
 
@@ -573,6 +580,7 @@ Add an entry here when adding a new search engine.")
   '((nnimap . imap)
     (nntp . gmane))
   "*Alist of default search engines keyed by server method."
+  :version "24.1"
   :type `(repeat (cons (choice (const nnimap) (const nttp) (const nnspool)
                               (const nneething) (const nndir) (const nnmbox)
                               (const nnml) (const nnmh) (const nndraft)
index acb23ed1693f04dba1e453854b5c1cbe10fedf0c..b8652600ae72bcec915b4c34aebb25dfc4f705d2 100644 (file)
@@ -1298,6 +1298,9 @@ Use the nov database for the current group if available."
          (nnml-save-nov)
          ;; b/ Save the active file:
          (nnmail-save-active nnml-group-alist nnml-active-file)
+         (let ((marks (nnml-group-pathname group nnml-marks-file-name server)))
+           (when (file-exists-p marks)
+             (delete-file marks)))
          t)))))
 
 (defun nnml-request-compact (&optional server)
index 98393a617648f8df2d38ac742e14080f7ee10d23..621aece89205eeca359eb2efd221827f34ba79ca 100644 (file)
@@ -1252,10 +1252,11 @@ If SEND-IF-FORCE, only send authinfo to the server if the
   (let* ((list (netrc-parse nntp-authinfo-file))
         (alist (netrc-machine list nntp-address "nntp"))
          (auth-info
-          (nth 0 (auth-source-search :max 1
-                                     :host (list nntp-address
-                                                 (nnoo-current-server 'nntp))
-                                     :port '("119" "nntp"))))
+          (nth 0 (auth-source-search
+                 :max 1
+                 :host (list nntp-address (nnoo-current-server 'nntp))
+                 :port `("119" "nntp" ,(format "%s" nntp-port-number)
+                         "563" "nntps" "snews"))))
          (auth-user (plist-get auth-info :user))
          (auth-force (plist-get auth-info :force))
          (auth-passwd (plist-get auth-info :secret))
index 386c9c62b67ed626436e0ff112543625cb95edda..dd0f1599c36226cf96766f36f5aaed826751508f 100644 (file)
@@ -35,6 +35,7 @@
 
 (defgroup shr nil
   "Simple HTML Renderer"
+  :version "24.1"
   :group 'mail)
 
 (defcustom shr-max-image-proportion 0.9
@@ -159,7 +160,7 @@ DOM should be a parse tree as generated by
       (goto-char start)
       (while (not (eobp))
        (end-of-line)
-       (when (> (current-column) width)
+       (when (> (shr-previous-newline-padding-width (current-column)) width)
          (dolist (overlay (overlays-at (point)))
            (when (overlay-get overlay 'before-string)
              (overlay-put overlay 'before-string nil))))
@@ -523,20 +524,21 @@ the URL of the image to the kill buffer instead."
                                      directory)))))
 
 (defun shr-image-fetched (status buffer start end)
-  (when (and (buffer-name buffer)
-            (not (plist-get status :error)))
-    (url-store-in-cache (current-buffer))
-    (when (or (search-forward "\n\n" nil t)
-             (search-forward "\r\n\r\n" nil t))
-      (let ((data (buffer-substring (point) (point-max))))
-        (with-current-buffer buffer
-         (save-excursion
-           (let ((alt (buffer-substring start end))
-                 (inhibit-read-only t))
-             (delete-region start end)
-             (goto-char start)
-             (funcall shr-put-image-function data alt)))))))
-  (kill-buffer (current-buffer)))
+  (let ((image-buffer (current-buffer)))
+    (when (and (buffer-name buffer)
+              (not (plist-get status :error)))
+      (url-store-in-cache image-buffer)
+      (when (or (search-forward "\n\n" nil t)
+               (search-forward "\r\n\r\n" nil t))
+       (let ((data (buffer-substring (point) (point-max))))
+         (with-current-buffer buffer
+           (save-excursion
+             (let ((alt (buffer-substring start end))
+                   (inhibit-read-only t))
+               (delete-region start end)
+               (goto-char start)
+               (funcall shr-put-image-function data alt)))))))
+    (kill-buffer image-buffer)))
 
 (defun shr-put-image (data alt)
   "Put image DATA with a string ALT.  Return image."
index 4712cab6bffe7916d53ff09320c9e008186f9a02..74bcbcc78999db72c21a4213befdf23a107354bb 100644 (file)
@@ -157,6 +157,7 @@ for doing the actual authentication."
 (defcustom sieve-manage-default-stream 'network
   "Default stream type to use for `sieve-manage'.
 Must be a name of a stream in `sieve-manage-stream-alist'."
+  :version "24.1"
   :type 'symbol
   :group 'sieve-manage)
 
index 80a0bf1435b9119951e97d01f484dc350e17799b..97a14b12891cd3b0675a761dda00f94264a5d20b 100644 (file)
@@ -333,21 +333,23 @@ are exhibited within the square braces.)"
                  (window-width)))
              (prefix-len
               ;; Find the common prefix among `comps'.
-             (if (eq t (compare-strings (car comps) nil (length most)
-                                        most nil nil completion-ignore-case))
-                  ;; Common case.
-                 (length most)
-                ;; Else, use try-completion.
-               (let ((comps-prefix (try-completion "" comps)))
-                  (and (stringp comps-prefix)
-                       (length comps-prefix)))))
+             ;; We can't use the optimization below because its assumptions
+             ;; aren't always true, e.g. when completion-cycling (bug#10850):
+             ;; (if (eq t (compare-strings (car comps) nil (length most)
+             ;;                         most nil nil completion-ignore-case))
+             ;;     ;; Common case.
+             ;;     (length most)
+             ;; Else, use try-completion.
+             (let ((comps-prefix (try-completion "" comps)))
+               (and (stringp comps-prefix)
+                    (length comps-prefix)))) ;;)
 
             prospects most-is-exact comp limit)
        (if (eq most-try t) ;; (or (null (cdr comps))
            (setq prospects nil)
          (while (and comps (not limit))
            (setq comp
-                  (if prefix-len (substring (car comps) prefix-len) (car comps))
+                 (if prefix-len (substring (car comps) prefix-len) (car comps))
                  comps (cdr comps))
            (cond ((string-equal comp "") (setq most-is-exact t))
                  ((member comp prospects))
index d7b55d560936a004a260739b0307b20f7064c7fb..ba8b8955fba40bea45cf2e6ab057d979b89c6bd8 100644 (file)
@@ -1114,6 +1114,12 @@ Setup char-width-table appropriate for non-CJK language environment."
 \f
 ;; Setting char-script-table.
 
+;; The data is compiled from Blocks.txt and Scripts.txt in the
+;; "Unicode Character Database", simplified to lump together all the
+;; blocks belonging to the same language.  E.g., "Basic Latin",
+;; "Latin-1 Supplement", "Latin Extended-A", etc. are all lumped
+;; together under "latin".
+;;
 ;; The Unicode blocks actually extend past some of these ranges with
 ;; undefined codepoints.
 (let ((script-list nil))
@@ -1126,13 +1132,17 @@ Setup char-width-table appropriate for non-CJK language environment."
         (#x0370 #x03E1 greek)
         (#x03E2 #x03EF coptic)
         (#x03F0 #x03F3 greek)
-        (#x0400 #x04FF cyrillic)
+        (#x0400 #x052F cyrillic)
         (#x0530 #x058F armenian)
         (#x0590 #x05FF hebrew)
         (#x0600 #x06FF arabic)
         (#x0700 #x074F syriac)
-        (#x07C0 #x07FA nko)
+        (#x0750 #x077F arabic)
         (#x0780 #x07BF thaana)
+        (#x07C0 #x07FF nko)
+        (#x0800 #x083F samaritan)
+        (#x0840 #x085F mandaic)
+        (#x08A0 #x08FF arabic)
         (#x0900 #x097F devanagari)
         (#x0980 #x09FF bengali)
         (#x0A00 #x0A7F gurmukhi)
@@ -1143,10 +1153,10 @@ Setup char-width-table appropriate for non-CJK language environment."
         (#x0C80 #x0CFF kannada)
         (#x0D00 #x0D7F malayalam)
         (#x0D80 #x0DFF sinhala)
-        (#x0E00 #x0E5F thai)
-        (#x0E80 #x0EDF lao)
+        (#x0E00 #x0E7F thai)
+        (#x0E80 #x0EFF lao)
         (#x0F00 #x0FFF tibetan)
-        (#x1000 #x109F burmese)
+        (#x1000 #x109F burmese) ; according to Unicode 6.1, should be "myanmar"
         (#x10A0 #x10FF georgian)
         (#x1100 #x11FF hangul)
         (#x1200 #x139F ethiopic)
@@ -1154,14 +1164,40 @@ Setup char-width-table appropriate for non-CJK language environment."
         (#x1400 #x167F canadian-aboriginal)
         (#x1680 #x169F ogham)
         (#x16A0 #x16FF runic)
+        (#x1700 #x171F tagalog)
+        (#x1720 #x173F hanunoo)
+        (#x1740 #x175F buhid)
+        (#x1760 #x177F tagbanwa)
         (#x1780 #x17FF khmer)
         (#x1800 #x18AF mongolian)
-        (#x1D00 #x1DFF phonetic)
-        (#x1E00 #x1EFF latin)
+        (#x18B0 #x18FF canadian-aboriginal)
+        (#x1900 #x194F limbu)
+        (#x1950 #x197F tai-le)
+        (#x1980 #x19DF tai-lue)
+        (#x19E0 #x19FF khmer)
+        (#x1A00 #x1A00 buginese)
+        (#x1A20 #x1AAF tai-tham)
+        (#x1B00 #x1B7F balinese)
+        (#x1B80 #x1BBF sundanese)
+        (#x1BC0 #x1BFF batak)
+        (#x1C00 #x1C4F lepcha)
+        (#x1C50 #x1C7F ol-chiki)
+        (#x1CC0 #x1CCF sundanese)
+        (#x1CD0 #x1CFF vedic)
+        (#x1D00 #x1DBF phonetic)
+        (#x1DC0 #x1EFF latin)
         (#x1F00 #x1FFF greek)
         (#x2000 #x27FF symbol)
         (#x2800 #x28FF braille)
+        (#x2900 #x2BFF symbol)
+        (#x2C00 #x2C5F glagolitic)
+        (#x2C60 #x2C7F latin)
+        (#x2C80 #x2CFF coptic)
+        (#x2D00 #x2D2F georgian)
+        (#x2D30 #x2D7F tifinagh)
         (#x2D80 #x2DDF ethiopic)
+        (#x2DE0 #x2DFF cyrillic)
+        (#x2E00 #x2E7F symbol)
         (#x2E80 #x2FDF han)
         (#x2FF0 #x2FFF ideographic-description)
         (#x3000 #x303F cjk-misc)
@@ -1170,47 +1206,92 @@ Setup char-width-table appropriate for non-CJK language environment."
         (#x3130 #x318F hangul)
         (#x3190 #x319F kanbun)
         (#x31A0 #x31BF bopomofo)
-        (#x3400 #x9FAF han)
+        (#x31C0 #x31EF cjk-misc)
+        (#x31F0 #x31FF kana)
+        (#x3200 #x9FAF han)
         (#xA000 #xA4CF yi)
+        (#xA4D0 #xA4FF lisu)
+        (#xA500 #xA63F vai)
+        (#xA640 #xA69F cyrillic)
+        (#xA6A0 #xA6FF bamum)
+        (#xA700 #xA7FF latin)
+        (#xA800 #xA82F syloti-nagri)
+        (#xA830 #xA83F north-indic-number)
+        (#xA840 #xA87F phags-pa)
+        (#xA880 #xA8DF saurashtra)
+        (#xA8E0 #xA8FF devanagari)
+        (#xA900 #xA92F kayah-li)
+        (#xA930 #xA95F rejang)
+        (#xA960 #xA97F hangul)
+        (#xA980 #xA9DF javanese)
         (#xAA00 #xAA5F cham)
-        (#xAA60 #xAA7B burmese)
+        (#xAA60 #xAA7B burmese)        ; Unicode 6.1: "myanmar"
         (#xAA80 #xAADF tai-viet)
-        (#xAC00 #xD7AF hangul)
+        (#xAAE0 #xAAFF meetei-mayek)
+        (#xAB00 #xAB2F ethiopic)
+        (#xABC0 #xABFF meetei-mayek)
+        (#xAC00 #xD7FF hangul)
         (#xF900 #xFAFF han)
         (#xFB1D #xFB4F hebrew)
         (#xFB50 #xFDFF arabic)
-        (#xFE70 #xFEFC arabic)
+        (#xFE30 #xFE4F han)
+        (#xFE70 #xFEFF arabic)
         (#xFF00 #xFF5F cjk-misc)
         (#xFF61 #xFF9F kana)
         (#xFFE0 #xFFE6 cjk-misc)
         (#x10000 #x100FF linear-b)
         (#x10100 #x1013F aegean-number)
-        (#x10140 #x1018A ancient-greek-number)
-        (#x10190 #x1019B ancient-symbol)
+        (#x10140 #x1018F ancient-greek-number)
+        (#x10190 #x101CF ancient-symbol)
         (#x101D0 #x101FF phaistos-disc)
         (#x10280 #x1029F lycian)
         (#x102A0 #x102DF carian)
         (#x10300 #x1032F olt-italic)
+        (#x10330 #x1034F gothic)
         (#x10380 #x1039F ugaritic)
         (#x103A0 #x103DF old-persian)
         (#x10400 #x1044F deseret)
         (#x10450 #x1047F shavian)
         (#x10480 #x104AF osmanya)
         (#x10800 #x1083F cypriot-syllabary)
+        (#x10840 #x1085F aramaic)
         (#x10900 #x1091F phoenician)
         (#x10920 #x1093F lydian)
+        (#x10980 #x109FF meroitic)
         (#x10A00 #x10A5F kharoshthi)
+        (#x10A60 #x10A7F old-south-arabian)
+        (#x10B00 #x10B3F avestan)
+        (#x10B40 #x10B5F inscriptional-parthian)
+        (#x10B60 #x10B7F inscriptional-pahlavi)
+        (#x10C00 #x10C4F old-turkic)
+        (#x10E60 #x10E7F rumi-number)
+        (#x11000 #x1107F brahmi)
+        (#x11080 #x110CF kaithi)
+        (#x110D0 #x110FF sora-sompeng)
+        (#x11100 #x1114F chakma)
+        (#x11180 #x111DF sharada)
+        (#x11680 #x116CF takri)
         (#x12000 #x123FF cuneiform)
         (#x12400 #x1247F cuneiform-numbers-and-punctuation)
+        (#x13000 #x1342F egyptian)
+        (#x16800 #x16A3F bamum)
+        (#x16F00 #x16F9F miao)
+        (#x1B000 #x1B0FF kana)
         (#x1D000 #x1D0FF byzantine-musical-symbol)
         (#x1D100 #x1D1FF musical-symbol)
         (#x1D200 #x1D24F ancient-greek-musical-notation)
         (#x1D300 #x1D35F tai-xuan-jing-symbol)
         (#x1D360 #x1D37F counting-rod-numeral)
         (#x1D400 #x1D7FF mathematical)
+        (#x1EE00 #x1EEFF arabic)
         (#x1F000 #x1F02F mahjong-tile)
         (#x1F030 #x1F09F domino-tile)
-        (#x20000 #x2AFFF han)
+        (#x1F0A0 #x1F0FF playing-cards)
+        (#x1F100 #x1F1FF symbol)
+        (#x1F200 #x1F2FF han)
+        (#x1F300 #x1F64F symbol)
+        (#x1F680 #x1F77F symbol)
+        (#x20000 #x2B81F han)
         (#x2F800 #x2FFFF han)))
     (set-char-table-range char-script-table
                          (cons (car elt) (nth 1 elt)) (nth 2 elt))
@@ -1372,7 +1453,7 @@ METHOD must be one of these symbols:
   `acronym':    display an acronym of the character in a box.  The
                 acronym is taken from `char-acronym-table', which see.
   `hex-code':   display the hexadecimal character code in a box."
-
+  :version "24.1"
   :type '(alist :key-type (symbol :tag "Character Group")
                :value-type (symbol :tag "Display Method"))
   :options '((c0-control
index 2424e87ae4472a182be52b76a6efd957b2cf8506..50226b1b7736c634d374fd1605fcebf0fd2a93ab 100644 (file)
@@ -2,7 +2,8 @@
 ;; FILE: uni-name.el
 (define-char-code-property 'name "uni-name.el"
   "Unicode character name.
-Property value is a string.")
+Property value is a string or nil.
+The value nil stands for the default value \"null string\").")
 ;; FILE: uni-category.el
 (define-char-code-property 'general-category "uni-category.el"
   "Unicode general category.
@@ -48,7 +49,8 @@ Property value is a symbol `Y' or `N'.  See also the property `mirroring'.")
 ;; FILE: uni-old-name.el
 (define-char-code-property 'old-name "uni-old-name.el"
   "Unicode old names as published in Unicode 1.0.
-Property value is a string.")
+Property value is a string or nil.
+The value nil stands for the default value \"null string\").")
 ;; FILE: uni-comment.el
 (define-char-code-property 'iso-10646-comment "uni-comment.el"
   "Unicode ISO 10646 comment.
index 378cbc9badd29d7776addcf109e55127e4c79c71..debc328c55194d7968a694c26e13cf4dbd048dd0 100644 (file)
@@ -1,6 +1,6 @@
 ;;; mule-cmds.el --- commands for multilingual environment -*-coding: iso-2022-7bit -*-
 
-;; Copyright (C) 1997-2012  Free Software Foundation, Inc.
+;; Copyright (C) 1997-2012 Free Software Foundation, Inc.
 ;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
 ;;   2005, 2006, 2007, 2008, 2009, 2010, 2011
 ;;   National Institute of Advanced Industrial Science and Technology (AIST)
@@ -2863,13 +2863,18 @@ on encoding."
 ;; Backwards compatibility.  These might be better with :init-value t,
 ;; but that breaks loadup.
 (define-minor-mode unify-8859-on-encoding-mode
-  "Obsolete."
+  "Exists only for backwards compatibility."
   :group 'mule
   :global t)
+;; Doc said "obsolete" in 23.1, this statement only added in 24.1.
+(make-obsolete 'unify-8859-on-encoding-mode "don't use it." "23.1")
+
 (define-minor-mode unify-8859-on-decoding-mode
-  "Obsolete."
+  "Exists only for backwards compatibility."
   :group 'mule
   :global t)
+;; Doc said "obsolete" in 23.1, this statement only added in 24.1.
+(make-obsolete 'unify-8859-on-decoding-mode "don't use it." "23.1")
 
 (defvar nonascii-insert-offset 0)
 (make-obsolete-variable 'nonascii-insert-offset "do not use it." "23.1")
@@ -2944,9 +2949,9 @@ point or a number in hash notation, e.g. #o21430 for octal,
                        '(metadata (category . unicode-name))
                      (complete-with-action action (ucs-names) string pred))))))
     (cond
-     ((string-match-p "^[0-9a-fA-F]+$" input)
+     ((string-match-p "\\`[0-9a-fA-F]+\\'" input)
       (string-to-number input 16))
-     ((string-match-p "^#" input)
+     ((string-match-p "\\`#" input)
       (read input))
      (t
       (cdr (assoc-string input (ucs-names) t))))))
@@ -2962,6 +2967,10 @@ preceded by an asterisk `*' and use completion, it will show all
 the characters whose names include that substring, not necessarily
 at the beginning of the name.
 
+This function also accepts a hexadecimal number of Unicode code
+point or a number in hash notation, e.g. #o21430 for octal,
+#x2318 for hex, or #10r8984 for decimal.
+
 The optional third arg INHERIT (non-nil when called interactively),
 says to inherit text properties from adjoining text, if those
 properties are sticky."
@@ -2970,9 +2979,12 @@ properties are sticky."
         (prefix-numeric-value current-prefix-arg)
         t))
   (unless count (setq count 1))
-  (if (stringp character)
+  (if (and (stringp character)
+          (string-match-p "\\`[0-9a-fA-F]+\\'" character))
       (setq character (string-to-number character 16)))
   (cond
+   ((null character)
+    (error "Not a Unicode character"))
    ((not (integerp character))
     (error "Not a Unicode character code: %S" character))
    ((or (< character 0) (> character #x10FFFF))
index 21b0fdec6e4f15b69f6e383d5ab94fd94bd87003..a8f23adcf6d0d8bc09ee884152a33a1d9a715108 100644 (file)
@@ -1204,8 +1204,4 @@ to store generated Quail packages."
        (miscdic-convert filename dir))))
   (kill-emacs 0))
 
-;; Local Variables:
-;; coding: iso-2022-7bit
-;; End:
-
 ;;; titdic-cnv.el ends here
index 21ccfe3ffe796615789e624a8dff14f3d24e2dd0..c9743064bd4751703bdd5e1a27e84305743e0f5f 100644 (file)
Binary files a/lisp/international/uni-comment.el and b/lisp/international/uni-comment.el differ
index 8b6816310672556fb0205b845f2f71fc6edbcd7e..c3e5f2e5907209828794f13b0b5b04c7b96c6a66 100644 (file)
Binary files a/lisp/international/uni-name.el and b/lisp/international/uni-name.el differ
index de2d67b9450eb80f6203f5f09bf8e632fc63db95..6165eba61cc10d6443bb26c7ea9bacc223b95fde 100644 (file)
Binary files a/lisp/international/uni-old-name.el and b/lisp/international/uni-old-name.el differ
index 27b829400438f1e073957b8904ca2d708efb1a53..9d69443b6a433dce5e49081ea1543b07109fb79c 100644 (file)
@@ -1433,16 +1433,38 @@ See `isearch-query-replace' for more information."
   (isearch-query-replace delimited t))
 
 (defun isearch-occur (regexp &optional nlines)
-  "Run `occur' with regexp to search from the current search string.
-Interactively, REGEXP is the current search regexp or a quoted search
-string.  NLINES has the same meaning as in `occur'."
+  "Run `occur' using the last search string as the regexp.
+Interactively, REGEXP is constructed using the search string from the
+last search command.  NLINES has the same meaning as in `occur'.
+
+If the last search command was a word search, REGEXP is computed from
+the search words, ignoring punctuation.  If the last search
+command was a regular expression search, REGEXP is the regular
+expression used in that search.  If the last search command searched
+for a literal string, REGEXP is constructed by quoting all the special
+characters in that string."
   (interactive
-   (list
-    (cond
-     (isearch-word (word-search-regexp isearch-string))
-     (isearch-regexp isearch-string)
-     (t (regexp-quote isearch-string)))
-    (if current-prefix-arg (prefix-numeric-value current-prefix-arg))))
+   (let* ((perform-collect (consp current-prefix-arg))
+         (regexp (cond
+                  (isearch-word (word-search-regexp isearch-string))
+                  (isearch-regexp isearch-string)
+                  (t (regexp-quote isearch-string)))))
+     (list regexp
+          (if perform-collect
+              ;; Perform collect operation
+              (if (zerop (regexp-opt-depth regexp))
+                  ;; No subexpression so collect the entire match.
+                  "\\&"
+                ;; Get the regexp for collection pattern.
+                (isearch-done nil t)
+                (isearch-clean-overlays)
+                (let ((default (car occur-collect-regexp-history)))
+                  (read-string
+                   (format "Regexp to collect (default %s): " default)
+                   nil 'occur-collect-regexp-history default)))
+            ;; Otherwise normal occur takes numerical prefix argument.
+            (when current-prefix-arg
+              (prefix-numeric-value current-prefix-arg))))))
   (let ((case-fold-search isearch-case-fold-search)
        ;; Set `search-upper-case' to nil to not call
        ;; `isearch-no-upper-case-p' in `occur-1'.
index d1ddfb512a9b78e020a19dd1e1d763d7117f0811..b2962fb28899fec085b8be99db1a059c9656c9de 100644 (file)
@@ -1,6 +1,6 @@
 ;;; cham.el --- support for Cham -*- coding: utf-8; no-byte-compile: t -*-
 
-;; Copyright (C) 2008, 2009, 2010, 2011
+;; Copyright (C) 2008, 2009, 2010, 2011, 2012
 ;;   National Institute of Advanced Industrial Science and Technology (AIST)
 ;;   Registration Number H13PRO009
 
@@ -37,8 +37,3 @@
              (coding-priority utf-8)))
 
 (provide 'cham)
-
-;; Local Variables:
-;; coding: utf-8
-;; End:
-
index 90e0e2a4796d0cd1c757bb8b819fa1d73427ca38..f8b7a9d6df86443bfccff454e919491ad277b234 100644 (file)
@@ -57,7 +57,3 @@ is available at this web page:
 ")))
 
 (provide 'tai-viet)
-
-;; Local Variables:
-;; coding: utf-8
-;; End:
index 7e3d983a76c7315e006d09f5e671bb0f0bb8c3a6..e45bbfe2ca097b173f862ab070d2be05ccd008aa 100644 (file)
@@ -428,6 +428,7 @@ any other non-nil value, take the action in both cases.  Even if
 you're not confirming the sending of immediate or queued messages,
 it can still be interesting to see a lot about them as they are
 shuttled robotically onward."
+  :version "24.1"
   :group 'feedmail-misc
   :type 'boolean
   )
index 2ed54aa8d86cced60c707b65ac7f63dc4a787c73..2d327c7a0f070e1974b57c5f61fb5ac94dfc596f 100644 (file)
@@ -285,8 +285,10 @@ Setting this variable has an effect only before reading a mail."
   :version "21.1")
 
 ;;;###autoload
-(defvaralias 'rmail-dont-reply-to-names 'mail-dont-reply-to-names)
+(define-obsolete-variable-alias 'rmail-dont-reply-to-names
+  'mail-dont-reply-to-names "24.1")
 
+;; Prior to 24.1, this used to contain "\\`info-".
 ;;;###autoload
 (defvar rmail-default-dont-reply-to-names nil
   "Regexp specifying part of the default value of `mail-dont-reply-to-names'.
@@ -4698,7 +4700,7 @@ SENDERS is a string of regexps separated by commas.
 ;;;***
 \f
 ;;;### (autoloads (unforward-rmail-message undigestify-rmail-message)
-;;;;;;  "undigest" "undigest.el" "1be42b2d20b13004f0ad1b504630ed00")
+;;;;;;  "undigest" "undigest.el" "a31a35802a2adbc51be42959c3043dbd")
 ;;; Generated autoloads from undigest.el
 
 (autoload 'undigestify-rmail-message "undigest" "\
@@ -4709,8 +4711,9 @@ Leaves original message, deleted, before the undigestified messages.
 
 (autoload 'unforward-rmail-message "undigest" "\
 Extract a forwarded message from the containing message.
-This puts the forwarded message into a separate rmail message
-following the containing message.
+This puts the forwarded message into a separate rmail message following
+the containing message.  This command is only useful when messages are
+forwarded with `rmail-enable-mime-composing' set to nil.
 
 \(fn)" t nil)
 
index 99283bebf9def5e7d4fc97b559f60ed0587fb519..3233cff2768a431318a0a2a31b291b558edfc11d 100644 (file)
@@ -1,6 +1,6 @@
 ;;; smtpmail.el --- simple SMTP protocol (RFC 821) for sending mail
 
-;; Copyright (C) 1995-1996, 2001-2012  Free Software Foundation, Inc.
+;; Copyright (C) 1995-1996, 2001-2012 Free Software Foundation, Inc.
 
 ;; Author: Tomoji Kagatani <kagatani@rbc.ncl.omron.co.jp>
 ;; Maintainer: Simon Josefsson <simon@josefsson.org>
@@ -86,7 +86,8 @@ The default value would be \"smtp\" or 25."
   :group 'smtpmail)
 
 (defcustom smtpmail-smtp-user nil
-  "User name to use when looking up credentials."
+  "User name to use when looking up credentials in the authinfo file.
+If non-nil, only consider credentials for the specified user."
   :version "24.1"
   :type '(choice (const nil) string)
   :group 'smtpmail)
@@ -99,11 +100,10 @@ don't define this value."
   :group 'smtpmail)
 
 (defcustom smtpmail-stream-type nil
-  "Connection type SMTP connections.
-This may be either nil (possibly upgraded to STARTTLS if
-possible), or `starttls' (refuse to send if STARTTLS isn't
-available), or `plain' (never use STARTTLS), or `ssl' (to use
-TLS/SSL)."
+  "Type of SMTP connections to use.
+This may be either nil (possibly upgraded to STARTTLS if possible),
+or `starttls' (refuse to send if STARTTLS isn't available), or `plain'
+\(never use STARTTLS), or `ssl' (to use TLS/SSL)."
   :version "24.1"
   :group 'smtpmail
   :type '(choice (const :tag "Possibly upgrade to STARTTLS" nil)
@@ -596,18 +596,31 @@ The list is in preference order.")
   (mapconcat 'identity (cdr response) "\n"))
 
 (defun smtpmail-query-smtp-server ()
+  "Query for an SMTP server and try to contact it.
+If the contact succeeds, customizes and saves `smtpmail-smtp-server'
+and `smtpmail-smtp-service'.  This tries standard SMTP ports, and if
+none works asks you to supply one.  If you know that you need to use
+a non-standard port, you can set `smtpmail-smtp-service' in advance.
+Returns an error if the server cannot be contacted."
   (let ((server (read-string "Outgoing SMTP mail server: "))
-       (ports '("smtp" 587))
-       stream port)
-    (when (and smtpmail-smtp-server
-              (not (member smtpmail-smtp-server ports)))
-      (push smtpmail-smtp-server ports))
+       (ports '(25 587))
+       stream port prompted)
+    (when (and smtpmail-smtp-service
+              (not (member smtpmail-smtp-service ports)))
+      (push smtpmail-smtp-service ports))
     (while (and (not smtpmail-smtp-server)
                (setq port (pop ports)))
-      (when (setq stream (condition-case ()
-                            (open-network-stream "smtp" nil server port)
-                          (quit nil)
-                          (error nil)))
+      (if (not (setq stream (condition-case ()
+                               (open-network-stream "smtp" nil server port)
+                             (quit nil)
+                             (error nil))))
+         ;; We've used up the list of default ports, so query the user.
+         (when (and (not ports)
+                    (not prompted))
+           (push (read-number (format "Port number to use when contacting %s? "
+                                      server))
+                 ports)
+           (setq prompted t))
        (customize-save-variable 'smtpmail-smtp-server server)
        (customize-save-variable 'smtpmail-smtp-service port)
        (delete-process stream)))
index ee44cc720517f1bb861e9b51049fa1560aabcdcf..e34a3a4d71e3e026b8974ecded0960acbaf766a9 100644 (file)
@@ -228,8 +228,9 @@ Leaves original message, deleted, before the undigestified messages."
 ;;;###autoload
 (defun unforward-rmail-message ()
   "Extract a forwarded message from the containing message.
-This puts the forwarded message into a separate rmail message
-following the containing message."
+This puts the forwarded message into a separate rmail message following
+the containing message.  This command is only useful when messages are
+forwarded with `rmail-enable-mime-composing' set to nil."
   (interactive)
   (set-buffer rmail-buffer)
   (let ((buff (current-buffer))
index fb3153527497a03306817d99087ae331c45d6b61..0a7b831ca8ef73610c313aa3fc6646a4c7861598 100644 (file)
@@ -215,15 +215,27 @@ the associated section number."
                       (string :tag "Real Section")))
   :group 'man)
 
+;; FIXME see comments at ffap-c-path.
 (defcustom Man-header-file-path
-  '("/usr/include" "/usr/local/include")
+  (let ((arch (with-temp-buffer
+                (when (eq 0 (ignore-errors
+                              (call-process "gcc" nil '(t nil) nil
+                                            "-print-multiarch")))
+                  (goto-char (point-min))
+                  (buffer-substring (point) (line-end-position)))))
+        (base '("/usr/include" "/usr/local/include")))
+    (if (zerop (length arch))
+        base
+      (append base (list (expand-file-name arch "/usr/include")))))
   "C Header file search path used in Man."
+  :version "24.1"                       ; add multiarch
   :type '(repeat string)
   :group 'man)
 
 (defcustom Man-name-local-regexp (concat "^" (regexp-opt '("NOM" "NAME")) "$")
   "Regexp that matches the text that precedes the command's name.
 Used in `bookmark-set' to get the default bookmark name."
+  :version "24.1"
   :type 'string :group 'bookmark)
 
 (defvar manual-program "man"
index cb2f2d76384f4a7f9dd6ef4fd0b88baf3e5e9076..1fdf33bf61028ac9e1c5771ddf6f4fc7f1d84a94 100644 (file)
@@ -226,30 +226,31 @@ case sensitive instead."
 
 (defun completion-table-with-context (prefix table string pred action)
   ;; TODO: add `suffix' maybe?
-  ;; Notice that `pred' may not be a function in some abusive cases.
-  (when (functionp pred)
-    (setq pred
-          ;; Predicates are called differently depending on the nature of
-          ;; the completion table :-(
-          (cond
-           ((vectorp table)             ;Obarray.
-            (lambda (sym) (funcall pred (concat prefix (symbol-name sym)))))
-           ((hash-table-p table)
-            (lambda (s _v) (funcall pred (concat prefix s))))
-           ((functionp table)
-            (lambda (s) (funcall pred (concat prefix s))))
-           (t                           ;Lists and alists.
-            (lambda (s)
-              (funcall pred (concat prefix (if (consp s) (car s) s))))))))
-  (if (eq (car-safe action) 'boundaries)
-      (let* ((len (length prefix))
-             (bound (completion-boundaries string table pred (cdr action))))
-        (list* 'boundaries (+ (car bound) len) (cdr bound)))
-    (let ((comp (complete-with-action action table string pred)))
-      (cond
-       ;; In case of try-completion, add the prefix.
-       ((stringp comp) (concat prefix comp))
-       (t comp)))))
+  (let ((pred
+         (if (not (functionp pred))
+             ;; Notice that `pred' may not be a function in some abusive cases.
+             pred
+           ;; Predicates are called differently depending on the nature of
+           ;; the completion table :-(
+           (cond
+            ((vectorp table)            ;Obarray.
+             (lambda (sym) (funcall pred (concat prefix (symbol-name sym)))))
+            ((hash-table-p table)
+             (lambda (s _v) (funcall pred (concat prefix s))))
+            ((functionp table)
+             (lambda (s) (funcall pred (concat prefix s))))
+            (t                          ;Lists and alists.
+             (lambda (s)
+               (funcall pred (concat prefix (if (consp s) (car s) s)))))))))
+    (if (eq (car-safe action) 'boundaries)
+        (let* ((len (length prefix))
+               (bound (completion-boundaries string table pred (cdr action))))
+          (list* 'boundaries (+ (car bound) len) (cdr bound)))
+      (let ((comp (complete-with-action action table string pred)))
+        (cond
+         ;; In case of try-completion, add the prefix.
+         ((stringp comp) (concat prefix comp))
+         (t comp))))))
 
 (defun completion-table-with-terminator (terminator table string pred action)
   "Construct a completion table like TABLE but with an extra TERMINATOR.
@@ -509,7 +510,10 @@ styles for specific categories, such as files, buffers, etc."
 Each override has the shape (CATEGORY . ALIST) where ALIST is
 an association list that can specify properties such as:
 - `styles': the list of `completion-styles' to use for that category.
-- `cycle': the `completion-cycle-threshold' to use for that category."
+- `cycle': the `completion-cycle-threshold' to use for that category.
+Categories are symbols such as `buffer' and `file', used when
+completing buffer and file names, respectively."
+  :version "24.1"
   :type `(alist :key-type (choice :tag "Category"
                                  (const buffer)
                                   (const file)
@@ -612,6 +616,7 @@ If nil, cycling is never used.
 If t, cycling is always used.
 If an integer, cycling is used as soon as there are fewer completion
 candidates than this number."
+  :version "24.1"
   :type completion--cycling-threshold-type)
 
 (defun completion--cycle-threshold (metadata)
@@ -700,23 +705,23 @@ when the buffer's text is already an exact match."
 
           ;; It did find a match.  Do we match some possibility exactly now?
           (let* ((exact (test-completion completion
-                                        minibuffer-completion-table
-                                        minibuffer-completion-predicate))
+                                         minibuffer-completion-table
+                                         minibuffer-completion-predicate))
                  (threshold (completion--cycle-threshold md))
-                (comps
-                 ;; Check to see if we want to do cycling.  We do it
-                 ;; here, after having performed the normal completion,
-                 ;; so as to take advantage of the difference between
-                 ;; try-completion and all-completions, for things
-                 ;; like completion-ignored-extensions.
+                 (comps
+                  ;; Check to see if we want to do cycling.  We do it
+                  ;; here, after having performed the normal completion,
+                  ;; so as to take advantage of the difference between
+                  ;; try-completion and all-completions, for things
+                  ;; like completion-ignored-extensions.
                   (when (and threshold
-                            ;; Check that the completion didn't make
-                            ;; us jump to a different boundary.
-                            (or (not completed)
-                                (< (car (completion-boundaries
-                                         (substring completion 0 comp-pos)
-                                         minibuffer-completion-table
-                                         minibuffer-completion-predicate
+                             ;; Check that the completion didn't make
+                             ;; us jump to a different boundary.
+                             (or (not completed)
+                                 (< (car (completion-boundaries
+                                          (substring completion 0 comp-pos)
+                                          minibuffer-completion-table
+                                          minibuffer-completion-predicate
                                          ""))
                                    comp-pos)))
                    (completion-all-sorted-completions))))
@@ -730,7 +735,7 @@ when the buffer's text is already an exact match."
               ;; Fewer than completion-cycle-threshold remaining
               ;; completions: let's cycle.
               (setq completed t exact t)
-              (setq completion-all-sorted-completions comps)
+              (completion--cache-all-sorted-completions comps)
               (minibuffer-force-complete))
              (completed
               ;; We could also decide to refresh the completions,
@@ -795,6 +800,11 @@ scroll the window of possible completions."
         (#b000 nil)
         (t     t)))))
 
+(defun completion--cache-all-sorted-completions (comps)
+  (add-hook 'after-change-functions
+               'completion--flush-all-sorted-completions nil t)
+  (setq completion-all-sorted-completions comps))
+
 (defun completion--flush-all-sorted-completions (&rest _ignore)
   (remove-hook 'after-change-functions
                'completion--flush-all-sorted-completions t)
@@ -843,10 +853,7 @@ scroll the window of possible completions."
           ;; Cache the result.  This is not just for speed, but also so that
           ;; repeated calls to minibuffer-force-complete can cycle through
           ;; all possibilities.
-          (add-hook 'after-change-functions
-                    'completion--flush-all-sorted-completions nil t)
-          (setq completion-all-sorted-completions
-                (nconc all base-size))))))
+          (completion--cache-all-sorted-completions (nconc all base-size))))))
 
 (defun minibuffer-force-complete ()
   "Complete the minibuffer to an exact match.
@@ -870,9 +877,10 @@ Repeated uses step through the possible completions."
         (completion--done (buffer-substring-no-properties start (point))
                           'finished (unless mod "Sole completion"))))
      (t
-      (setq completion-cycling t)
       (completion--replace base end (car all))
       (completion--done (buffer-substring-no-properties start (point)) 'sole)
+      ;; Set cycling after modifying the buffer since the flush hook resets it.
+      (setq completion-cycling t)
       ;; If completing file names, (car all) may be a directory, so we'd now
       ;; have a new set of possible completions and might want to reset
       ;; completion-all-sorted-completions to nil, but we prefer not to,
@@ -880,7 +888,7 @@ Repeated uses step through the possible completions."
       ;; through the previous possible completions.
       (let ((last (last all)))
         (setcdr last (cons (car all) (cdr last)))
-        (setq completion-all-sorted-completions (cdr all)))))))
+        (completion--cache-all-sorted-completions (cdr all)))))))
 
 (defvar minibuffer-confirm-exit-commands
   '(minibuffer-complete minibuffer-complete-word PC-complete PC-complete-word)
@@ -1548,16 +1556,16 @@ the mode if ARG is omitted or nil."
 Each function on this hook is called in turns without any argument and should
 return either nil to mean that it is not applicable at point,
 or a function of no argument to perform completion (discouraged),
-or a list of the form (START END COLLECTION &rest PROPS) where
+or a list of the form (START END COLLECTION . PROPS) where
  START and END delimit the entity to complete and should include point,
  COLLECTION is the completion table to use to complete it, and
  PROPS is a property list for additional information.
 Currently supported properties are all the properties that can appear in
 `completion-extra-properties' plus:
  `:predicate'  a predicate that completion candidates need to satisfy.
- `:exclusive'  If `no', means that if the completion data does not match the
-   text at point failure, then instead of reporting a completion failure,
-   the completion should try the next completion function.")
+ `:exclusive'  If `no', means that if the completion table fails to
+   match the text at point, then instead of reporting a completion
+   failure, the completion should try the next completion function.")
 
 (defvar completion--capf-misbehave-funs nil
   "List of functions found on `completion-at-point-functions' that misbehave.
@@ -2009,12 +2017,19 @@ DIR should be an absolute directory name.  It defaults to the value of
 If this command was invoked with the mouse, use a graphical file
 dialog if `use-dialog-box' is non-nil, and the window system or X
 toolkit in use provides a file dialog box, and DIR is not a
-remote file.  For graphical file dialogs, any the special values
-of MUSTMATCH; `confirm' and `confirm-after-completion' are
-treated as equivalent to nil.
+remote file.  For graphical file dialogs, any of the special values
+of MUSTMATCH `confirm' and `confirm-after-completion' are
+treated as equivalent to nil.  Some graphical file dialogs respect
+a MUSTMATCH value of t, and some do not (or it only has a cosmetic
+effect, and does not actually prevent the user from entering a
+non-existent file).
 
 See also `read-file-name-completion-ignore-case'
 and `read-file-name-function'."
+  ;; If x-gtk-use-old-file-dialog = t (xg_get_file_with_selection),
+  ;; then MUSTMATCH is enforced.  But with newer Gtk
+  ;; (xg_get_file_with_chooser), it only has a cosmetic effect.
+  ;; The user can still type a non-existent file name.
   (funcall (or read-file-name-function #'read-file-name-default)
            prompt dir default-filename mustmatch initial predicate))
 
@@ -2310,6 +2325,7 @@ Those chars are treated as delimiters iff this variable is non-nil.
 I.e. if non-nil, M-x SPC will just insert a \"-\" in the minibuffer, whereas
 if nil, it will list all possible commands in *Completions* because none of
 the commands start with a \"-\" or a SPC."
+  :version "24.1"
   :type 'boolean)
 
 (defun completion-pcm--pattern-trivial-p (pattern)
index 4338cdff3cda2ded05773ddbe320fa7ada5f59d5..2a44148e4ce4039b78f9336ef048b1196cdcf1f2 100644 (file)
@@ -1390,6 +1390,9 @@ only return the directory part of FILE."
                (run-hooks 'find-file-hook)
                (setq buffer-file-name nil)
                (goto-char (point-min))
+               (while (search-forward-regexp "^[ \t]*#.*$" nil t)
+                 (replace-match ""))
+               (goto-char (point-min))
                (skip-chars-forward " \t\r\n")
                (while (not (eobp))
                  (ange-ftp-parse-netrc-group))
index 17fef277736a2b7779390f325a77dbaa88a47ddf..1bc319c796e7759dba8ce163dd3a87c19924a6b6 100644 (file)
@@ -39,6 +39,7 @@
 
 (defgroup gnutls nil
   "Emacs interface to the GnuTLS library."
+  :version "24.1"
   :prefix "gnutls-"
   :group 'net-utils)
 
   "If non-nil, this should be a TLS priority string.
 For instance, if you want to skip the \"dhe-rsa\" algorithm,
 set this variable to \"normal:-dhe-rsa\"."
+  :group 'gnutls
   :type '(choice (const nil)
-                string))
+                 string))
+
+(defcustom gnutls-trustfiles
+  '(
+    "/etc/ssl/certs/ca-certificates.crt" ; Debian, Ubuntu, Gentoo and Arch Linux
+    "/etc/pki/tls/certs/ca-bundle.crt"   ; Fedora and RHEL
+    "/etc/ssl/ca-bundle.pem"             ; Suse
+    "/usr/ssl/certs/ca-bundle.crt"       ; Cygwin
+    )
+  "List of CA bundle location filenames or a function returning said list.
+The files may be in PEM or DER format, as per the GnuTLS documentation.
+The files may not exist, in which case they will be ignored."
+  :group 'gnutls
+  :type '(choice (function :tag "Function to produce list of bundle filenames")
+                 (repeat (file :tag "Bundle filename"))))
 
 ;;;###autoload
 (defcustom gnutls-min-prime-bits nil
@@ -116,7 +132,7 @@ TYPE is `gnutls-x509pki' (default) or `gnutls-anon'.  Use nil for the default.
 PROCESS is a process returned by `open-network-stream'.
 HOSTNAME is the remote hostname.  It must be a valid string.
 PRIORITY-STRING is as per the GnuTLS docs, default is \"NORMAL\".
-TRUSTFILES is a list of CA bundles.
+TRUSTFILES is a list of CA bundles.  It defaults to `gnutls-trustfiles'.
 CRLFILES is a list of CRL files.
 KEYLIST is an alist of (client key file, client cert file) pairs.
 MIN-PRIME-BITS is the minimum acceptable size of Diffie-Hellman keys
@@ -154,18 +170,20 @@ here's a recent version of the list.
 It must be omitted, a number, or nil; if omitted or nil it
 defaults to GNUTLS_VERIFY_ALLOW_X509_V1_CA_CRT."
   (let* ((type (or type 'gnutls-x509pki))
-         (default-trustfile "/etc/ssl/certs/ca-certificates.crt")
          (trustfiles (or trustfiles
-                         (when (file-exists-p default-trustfile)
-                           (list default-trustfile))))
+                         (delq nil
+                               (mapcar (lambda (f) (and f (file-exists-p f) f))
+                                       (if (functionp gnutls-trustfiles)
+                                           (funcall gnutls-trustfiles)
+                                         gnutls-trustfiles)))))
          (priority-string (or priority-string
                               (cond
                                ((eq type 'gnutls-anon)
                                 "NORMAL:+ANON-DH:!ARCFOUR-128")
                                ((eq type 'gnutls-x509pki)
-                               (if gnutls-algorithm-priority
-                                   (upcase gnutls-algorithm-priority)
-                                 "NORMAL")))))
+                                (if gnutls-algorithm-priority
+                                    (upcase gnutls-algorithm-priority)
+                                  "NORMAL")))))
          (min-prime-bits (or min-prime-bits gnutls-min-prime-bits))
          (params `(:priority ,priority-string
                              :hostname ,hostname
index 070b32a63d0af73bcbcf1a61fbccf39c9667c46f..16d9203ba04216de573809b593402410092574ac 100644 (file)
@@ -39,6 +39,7 @@
 
 (defcustom netrc-file "~/.authinfo"
   "File where user credentials are stored."
+  :version "24.1"
   :type 'file
   :group 'netrc)
 
index b8bf270d87c3507d5f4c170487cc0f0a4ed8d8c4..1c74e6190dc4fdf75b3cae335393f70125e6f9b6 100644 (file)
@@ -2384,6 +2384,7 @@ keywords when no KEYWORD is given."
     (delete-region (match-beginning 1) (match-end 1))
     (goto-char (match-beginning 1)))
   ;; remove the ^O characters now
+  (goto-char (point-min))
   (while (re-search-forward "\C-o+" nil t)
     (delete-region (match-beginning 0) (match-end 0))))
 
index d5815468a0596e0790b381d217fb5c09af2799a0..09677a654c0dbdbe3640585f0f186e9a2d7d0067 100644 (file)
@@ -1,8 +1,8 @@
 ;;; rcompile.el --- run a compilation on a remote machine
 
-;; Copyright (C) 1993-1994, 2001-2012  Free Software Foundation, Inc.
+;; Copyright (C) 1993-1994, 2001-2012 Free Software Foundation, Inc.
 
-;; Author: Albert    <alon@milcse.rtsg.mot.com>
+;; Author: Alon Albert <alon@milcse.rtsg.mot.com>
 ;; Maintainer: FSF
 ;; Created: 1993 Oct 6
 ;; Keywords: tools, processes
index dfa2b76899a3cd84e922748393935aecd7ba5340..e17b283c55f86d16b7631300b93f48fa2ae95468 100644 (file)
@@ -55,6 +55,7 @@
 
 (defgroup soap-client nil
   "Access SOAP web services from Emacs."
+  :version "24.1"
   :group 'tools)
 
 ;;;; Support for parsing XML documents with namespaces
index b9431bdeed7eefc3791d3519ed3c1708183059d1..3c94e7d1b2245ee0f2b01b8a2a119250674f9466 100644 (file)
@@ -35,6 +35,8 @@
   (require 'wid-edit))
 (require 'custom)
 
+;; FIXME this is bad practice, and who is it for anyway, since Emacs
+;; has split-string since at least 21.1.
 (if (not (fboundp 'split-string))
     (defun split-string (string &optional pattern)
       "Return a list of substrings of STRING which are separated by PATTERN.
@@ -335,10 +337,17 @@ If PATTERN is omitted, it defaults to \"[ \\f\\t\\n\\r\\v]+\"."
 
 (declare-function socks-original-open-network-stream "socks") ; fset
 
+;; FIXME this is a terrible idea.
+;; It is not even compatible with the argument spec of open-network-stream
+;; in 24.1.  If this is really necessary, open-network-stream
+;; could get a wrapper hook, or defer to open-network-stream-function.
+
 (defvar socks-override-functions nil
   "*Whether to overwrite the open-network-stream function with the SOCKSified
 version.")
 
+(require 'network-stream)
+
 (if (fboundp 'socks-original-open-network-stream)
     nil                                ; Do nothing, we've been here already
   (defalias 'socks-original-open-network-stream
index f13315bc66273544436ccef25ab29920951685f3..851b11629f4ac13a5aceca2c2d2db3d145d245a7 100644 (file)
@@ -181,6 +181,7 @@ See the variable `tramp-encoding-shell' for more information."
   (unless (string-match "cmd\\.exe" tramp-encoding-shell) "-i")
   "*Use this switch together with `tramp-encoding-shell' for interactive shells.
 See the variable `tramp-encoding-shell' for more information."
+  :version "24.1"
   :group 'tramp
   :type '(choice (const nil) string))
 
@@ -463,6 +464,7 @@ the remote shell.")
 (defcustom tramp-local-end-of-line
   (if (memq system-type '(windows-nt)) "\r\n" "\n")
   "*String used for end of line in local processes."
+  :version "24.1"
   :group 'tramp
   :type 'string)
 
index e2be4829a9bdb7a59c43a8f8b26be0ab4dae1a73..ddb6c71d1a6c8ea5a4ae0f5f7d1c7888172a6da2 100644 (file)
@@ -185,6 +185,7 @@ The `plain' comment style doubles this value.
 This should generally stay 0, except for a few modes like Lisp where
 it is 1 so that regions are commented with two or three semi-colons.")
 
+;;;###autoload
 (defconst comment-styles
   '((plain      nil nil nil nil
                 "Start in column 0 (do not indent), as in Emacs-20")
@@ -224,7 +225,7 @@ ALIGN specifies that the `comment-end' markers should be aligned.
      /* bli */
   if `comment-end' is empty, this has no effect, unless EXTRA is also set,
   in which case the comment gets wrapped in a box.
-  
+
 EXTRA specifies that an extra line should be used before and after the
   region to comment (to put the `comment-end' and `comment-start').
   e.g. in C it comments regions as
@@ -872,14 +873,15 @@ comment markers."
          (when (and sre (looking-at (concat "\\s-*\n\\s-*" srei)))
            (goto-char (match-end 0)))
          (if (null arg) (delete-region (point-min) (point))
-           (skip-syntax-backward " ")
-           (delete-char (- numarg))
-           (unless (or (bobp)
-                       (save-excursion (goto-char (point-min))
-                                       (looking-at comment-start-skip)))
-             ;; If there's something left but it doesn't look like
-             ;; a comment-start any more, just remove it.
-             (delete-region (point-min) (point))))
+            (let ((opoint (point-marker)))
+              (skip-syntax-backward " ")
+              (delete-char (- numarg))
+              (unless (and (not (bobp))
+                           (save-excursion (goto-char (point-min))
+                                           (looking-at comment-start-skip)))
+                ;; If there's something left but it doesn't look like
+                ;; a comment-start any more, just remove it.
+                (delete-region (point-min) opoint))))
 
          ;; Remove the end-comment (and leading padding and such).
          (goto-char (point-max)) (comment-enter-backward)
index 2a188c5a7360196b86888023347d1fe742565412..392fe25202f299415cfa712fba0eb5f2f913e266 100644 (file)
@@ -1,3 +1,7 @@
+2012-02-14  Chong Yidong  <cyd@gnu.org>
+
+       * org-footnote.el: Remove bogus defvar values (Bug#10745).
+
 2012-01-05  Eric Schulte  <eric.schulte@gmx.com>
 
        * ob.el (org-babel-expand-noweb-references): Resurrect dropped
 
 2012-01-03  Michael Brand  <michael.ch.brand@gmail.com>
 
-       * org.el Key bindings: remap the Outline functions from
+       * org.el (Key bindings): remap the Outline functions from
        `outline-mode-prefix-map' where possible.
 
 2012-01-03  Christian Moe  <mail@christianmoe.com>  (tiny change)
        (org-odt-styles-dir, org-export-odt-schema-dir): New
        variables.
 
-       * org-odt.el: New file.
-
-       * org-lparse: New file.
+       * org-odt.el, org-lparse.el: New files.
 
 2012-01-03  Carsten Dominik  <carsten.dominik@gmail.com>
 
index f9cf59c879cb101edd9a65842188b73c0a192a9b..573bd6489599a2ff3b9edc25c07dfa2401e831e8 100644 (file)
@@ -475,7 +475,7 @@ or new, let the user edit the definition of the footnote."
       (org-footnote-create-definition label)
       (org-footnote-auto-adjust-maybe)))))
 
-(defvar org-blank-before-new-entry nil) ; silence byte-compiler
+(defvar org-blank-before-new-entry) ; silence byte-compiler
 (defun org-footnote-create-definition (label)
   "Start the definition of a footnote with label LABEL."
   (interactive "sLabel: ")
@@ -595,8 +595,8 @@ With prefix arg SPECIAL, offer additional commands in a menu."
 (defvar org-footnote-insert-pos-for-preprocessor 'point-max
   "See `org-footnote-normalize'.")
 
-(defvar org-export-footnotes-seen nil) ; silence byte-compiler
-(defvar org-export-footnotes-data nil) ; silence byte-compiler
+(defvar org-export-footnotes-seen) ; silence byte-compiler
+(defvar org-export-footnotes-data) ; silence byte-compiler
 
 ;;;###autoload
 (defun org-footnote-normalize (&optional sort-only export-props)
index 6ffa86a12041f9a0a4ec4747625c93744603a40b..a79d4fcfbb279f68bafb52680b3467534b770231 100644 (file)
@@ -1,12 +1,11 @@
 ;;; org-protocol.el --- Intercept calls from emacsclient to trigger custom actions.
-;;
-;; Copyright (C) 2008-2012
-;;          Free Software Foundation, Inc.
-;;
+
+;; Copyright (C) 2008-2012 Free Software Foundation, Inc.
+
 ;; Author: Bastien Guerry <bzg AT gnu DOT org>
-;; Author: Daniel M German <dmg AT uvic DOT org>
-;; Author: Sebastian Rose <sebastian_rose AT gmx DOT de>
-;; Author: Ross Patterson <me AT rpatterson DOT net>
+;;        Daniel M German <dmg AT uvic DOT org>
+;;        Sebastian Rose <sebastian_rose AT gmx DOT de>
+;;        Ross Patterson <me AT rpatterson DOT net>
 ;; Maintainer: Sebastian Rose <sebastian_rose AT gmx DOT de>
 ;; Keywords: org, emacsclient, wp
 
index be0f86ddd7e78a17be96f2baaac55dc8aab0da62..95b43e763d505398ff77252941103e75423fe5c4 100644 (file)
@@ -2129,7 +2129,7 @@ comment at the start of cc-engine.el for more info."
     (widen)
     (save-excursion
       (let ((c c-state-nonlit-pos-cache)
-           pos npos lit macro-beg)
+           pos npos lit macro-beg macro-end)
        ;; Trim the cache to take account of buffer changes.
        (while (and c (> (car c) c-state-nonlit-pos-cache-limit))
          (setq c (cdr c)))
@@ -2143,28 +2143,29 @@ comment at the start of cc-engine.el for more info."
            ;; Add an element to `c-state-nonlit-pos-cache' each iteration.
            (and
             (<= (setq npos (+ pos c-state-nonlit-pos-interval)) here)
+
+            ;; Test for being in a literal.
             (progn
               (setq lit (car (cddr (c-state-pp-to-literal pos npos))))
-              (cond
-               ((null lit)
-                (setq pos npos)
-                t)
-               ((<= (cdr lit) here)
-                (setq pos (cdr lit))
-                t)
-               (t
-                (setq pos (car lit))
-                nil))))
+              (or (null lit)
+                  (prog1 (<= (cdr lit) here)
+                    (setq npos (cdr lit)))))
 
-         (goto-char pos)
-         (when (and (c-beginning-of-macro) (/= (point) pos))
-             (setq macro-beg (point))
-             (c-syntactic-end-of-macro)
-             (or (eobp) (forward-char))
-             (setq pos (if (<= (point) here)
-                           (point)
-                         macro-beg)))
-           (setq c-state-nonlit-pos-cache (cons pos c-state-nonlit-pos-cache)))
+            ;; Test for being in a macro.
+            (progn
+              (goto-char npos)
+              (setq macro-beg
+                    (and (c-beginning-of-macro) (/= (point) npos) (point)))
+              (when macro-beg
+                (c-syntactic-end-of-macro)
+                (or (eobp) (forward-char))
+                (setq macro-end (point)))
+              (or (null macro-beg)
+                  (prog1 (<= macro-end here)
+                    (setq npos macro-end)))))
+
+         (setq pos npos)
+         (setq c-state-nonlit-pos-cache (cons pos c-state-nonlit-pos-cache)))
 
        (if (> pos c-state-nonlit-pos-cache-limit)
            (setq c-state-nonlit-pos-cache-limit pos))
index 374c9b434d12493876079204d30afff8d300de24..985214db1dc5b739a4068a2cda01b97eb5947d86 100644 (file)
@@ -1114,7 +1114,7 @@ Note that the style variables are always made local to the buffer."
     (goto-char (c-point 'bol new-pos))
     (when lit-limits                   ; Comment or string.
       (goto-char (car lit-limits)))
-    (setq bod-lim (max (- (point) 500) (point-min)))
+    (setq bod-lim (c-determine-limit 500))
 
     (while
        ;; Go to a less nested declaration each time round this loop.
@@ -1132,11 +1132,12 @@ Note that the style variables are always made local to the buffer."
         ;; Try and go out a level to search again.
         (progn
           (c-backward-syntactic-ws bod-lim)
-          (or (memq (char-before) '(?\( ?\[))
-              (and (eq (char-before) ?\<)
-                   (eq (c-get-char-property
-                        (1- (point)) 'syntax-table)
-                       c-<-as-paren-syntax))))
+          (and (> (point) bod-lim)
+               (or (memq (char-before) '(?\( ?\[))
+                   (and (eq (char-before) ?\<)
+                        (eq (c-get-char-property
+                             (1- (point)) 'syntax-table)
+                            c-<-as-paren-syntax)))))
         (not (bobp)))
       (backward-char))
     new-pos))                          ; back over (, [, <.
@@ -1155,8 +1156,7 @@ Note that the style variables are always made local to the buffer."
   ;; `c-set-fl-decl-start' for the detailed functionality.
   (cons (c-set-fl-decl-start beg) end))
 
-(defvar c-standard-font-lock-fontify-region-function
-  (default-value 'font-lock-fontify-region-function)
+(defvar c-standard-font-lock-fontify-region-function nil
   "Standard value of `font-lock-fontify-region-function'")
 
 (defun c-font-lock-fontify-region (beg end &optional verbose)
index 8efe3f27002ae90d51c066383f709c56878b524b..5201e4a26ed6ef25fae90981269a4b771465bf16 100644 (file)
@@ -349,6 +349,7 @@ Its value is one of:
  go-outward  -- Nested functions are also recognized.  Should a function
                 command hit the beginning/end of a nested scope, it will
                 carry on at the less nested level."
+  :version "24.1"
   :type '(radio
          (const :tag "Functions are at the top-level" t)
          (const :tag "Functions are also recognized inside declaration scopes" go-outward))
index 40469b75b9fa19b3a0e86dc44722e458fdade760..2cae41889bda7be23618ad6c046d2394ce0461df 100644 (file)
@@ -1,9 +1,9 @@
 ;;; octave-inf.el --- running Octave as an inferior Emacs process
 
-;; Copyright (C) 1997, 2001-2012  Free Software Foundation, Inc.
+;; Copyright (C) 1997, 2001-2012 Free Software Foundation, Inc.
 
 ;; Author: Kurt Hornik <Kurt.Hornik@wu-wien.ac.at>
-;; Author: John Eaton <jwe@bevo.che.wisc.edu>
+;;        John Eaton <jwe@bevo.che.wisc.edu>
 ;; Maintainer: FSF
 ;; Keywords: languages
 ;; Package: octave-mod
index 668c3d147c6b138d926072251a40ad7ea62a30be..7091a9468c5b565ed2750b2618352bb906dfc867 100644 (file)
@@ -1,9 +1,9 @@
 ;;; octave-mod.el --- editing Octave source files under Emacs
 
-;; Copyright (C) 1997, 2001-2012  Free Software Foundation, Inc.
+;; Copyright (C) 1997, 2001-2012 Free Software Foundation, Inc.
 
 ;; Author: Kurt Hornik <Kurt.Hornik@wu-wien.ac.at>
-;; Author: John Eaton <jwe@octave.org>
+;;        John Eaton <jwe@octave.org>
 ;; Maintainer: FSF
 ;; Keywords: languages
 
index b531fc0dc9c24329af8873d19f230a6b4fa4f8d6..a8ee6f4bff4b5c741624370827014bcb94478a99 100644 (file)
@@ -37,7 +37,8 @@
 ;; Some ideas and also a few lines of code have been borrowed (not stolen ;-)
 ;; from Oz.el, the Emacs major mode for the Oz programming language,
 ;; Copyright (C) 1993 DFKI GmbH, Germany, with permission.
-;; Authors: Ralf Scheidhauer and Michael Mehl ([scheidhr|mehl](at)dfki(dot)uni-sb(dot)de)
+;; Authored by Ralf Scheidhauer and Michael Mehl
+;;   ([scheidhr|mehl](at)dfki(dot)uni-sb(dot)de)
 ;;
 ;; More ideas and code have been taken from the SICStus debugger mode
 ;; (http://www.csd.uu.se/~perm/source_debug/index.shtml -- broken link
 ;; General configuration
 
 (defcustom prolog-system nil
-  "*Prolog interpreter/compiler used.
+  "Prolog interpreter/compiler used.
 The value of this variable is nil or a symbol.
 If it is a symbol, it determines default values of other configuration
 variables with respect to properties of the specified Prolog
@@ -341,6 +342,7 @@ mercury - Mercury
 sicstus - SICStus Prolog
 swi     - SWI Prolog
 gnu     - GNU Prolog"
+  :version "24.1"
   :group 'prolog
   :type '(choice (const :tag "SICStus" :value sicstus)
                  (const :tag "SWI Prolog" :value swi)
@@ -361,63 +363,74 @@ gnu     - GNU Prolog"
     (eclipse  (3 . 7))
     (gnu      (0 . 0)))
   ;; FIXME: This should be auto-detected instead of user-provided.
-  "*Alist of Prolog system versions.
+  "Alist of Prolog system versions.
 The version numbers are of the format (Major . Minor)."
+  :version "24.1"
+  :type '(repeat (list (symbol :tag "System")
+                       (cons :tag "Version numbers" (integer :tag "Major")
+                             (integer :tag "Minor"))))
   :group 'prolog)
 
 ;; Indentation
 
 (defcustom prolog-indent-width 4
-  "*The indentation width used by the editing buffer."
+  "The indentation width used by the editing buffer."
   :group 'prolog-indentation
   :type 'integer)
 
 (defcustom prolog-align-comments-flag t
-  "*Non-nil means automatically align comments when indenting."
+  "Non-nil means automatically align comments when indenting."
+  :version "24.1"
   :group 'prolog-indentation
   :type 'boolean)
 
 (defcustom prolog-indent-mline-comments-flag t
-  "*Non-nil means indent contents of /* */ comments.
+  "Non-nil means indent contents of /* */ comments.
 Otherwise leave such lines as they are."
+  :version "24.1"
   :group 'prolog-indentation
   :type 'boolean)
 
 (defcustom prolog-object-end-to-0-flag t
-  "*Non-nil means indent closing '}' in SICStus object definitions to level 0.
+  "Non-nil means indent closing '}' in SICStus object definitions to level 0.
 Otherwise indent to `prolog-indent-width'."
+  :version "24.1"
   :group 'prolog-indentation
   :type 'boolean)
 
 (defcustom prolog-left-indent-regexp "\\(;\\|\\*?->\\)"
-  "*Regexp for character sequences after which next line is indented.
+  "Regexp for character sequences after which next line is indented.
 Next line after such a regexp is indented to the opening parenthesis level."
+  :version "24.1"
   :group 'prolog-indentation
   :type 'regexp)
 
 (defcustom prolog-paren-indent-p nil
-  "*If non-nil, increase indentation for parenthesis expressions.
+  "If non-nil, increase indentation for parenthesis expressions.
 The second and subsequent line in a parenthesis expression other than
 a compound term can either be indented `prolog-paren-indent' to the
 right (if this variable is non-nil) or in the same way as for compound
 terms (if this variable is nil, default)."
+  :version "24.1"
   :group 'prolog-indentation
   :type 'boolean)
 
 (defcustom prolog-paren-indent 4
-  "*The indentation increase for parenthesis expressions.
+  "The indentation increase for parenthesis expressions.
 Only used in ( If -> Then ; Else) and ( Disj1 ; Disj2 ) style expressions."
+  :version "24.1"
   :group 'prolog-indentation
   :type 'integer)
 
 (defcustom prolog-parse-mode 'beg-of-clause
-  "*The parse mode used (decides from which point parsing is done).
+  "The parse mode used (decides from which point parsing is done).
 Legal values:
 'beg-of-line   - starts parsing at the beginning of a line, unless the
                  previous line ends with a backslash.  Fast, but has
                  problems detecting multiline /* */ comments.
 'beg-of-clause - starts parsing at the beginning of the current clause.
                  Slow, but copes better with /* */ comments."
+  :version "24.1"
   :group 'prolog-indentation
   :type '(choice (const :value beg-of-line)
                  (const :value beg-of-clause)))
@@ -447,7 +460,8 @@ Legal values:
     (t
      ;; FIXME: Shouldn't we just use the union of all the above here?
      ("dynamic" "module")))
-  "*Alist of Prolog keywords which is used for font locking of directives."
+  "Alist of Prolog keywords which is used for font locking of directives."
+  :version "24.1"
   :group 'prolog-font-lock
   :type 'sexp)
 
@@ -455,7 +469,8 @@ Legal values:
   '((mercury
      ("char" "float" "int" "io__state" "string" "univ"))
     (t nil))
-  "*Alist of Prolog types used by font locking."
+  "Alist of Prolog types used by font locking."
+  :version "24.1"
   :group 'prolog-font-lock
   :type 'sexp)
 
@@ -463,7 +478,8 @@ Legal values:
   '((mercury
      ("bound" "di" "free" "ground" "in" "mdi" "mui" "muo" "out" "ui" "uo"))
     (t nil))
-  "*Alist of Prolog mode specificators used by font locking."
+  "Alist of Prolog mode specificators used by font locking."
+  :version "24.1"
   :group 'prolog-font-lock
   :type 'sexp)
 
@@ -472,7 +488,8 @@ Legal values:
      ("cc_multi" "cc_nondet" "det" "erroneous" "failure" "multi" "nondet"
       "semidet"))
     (t nil))
-  "*Alist of Prolog determinism specificators used by font locking."
+  "Alist of Prolog determinism specificators used by font locking."
+  :version "24.1"
   :group 'prolog-font-lock
   :type 'sexp)
 
@@ -480,7 +497,8 @@ Legal values:
   '((mercury
      ("^#[0-9]+"))
     (t nil))
-  "*Alist of Prolog source code directives used by font locking."
+  "Alist of Prolog source code directives used by font locking."
+  :version "24.1"
   :group 'prolog-font-lock
   :type 'sexp)
 
@@ -488,17 +506,19 @@ Legal values:
 ;; Keyboard
 
 (defcustom prolog-electric-newline-flag (not (fboundp 'electric-indent-mode))
-  "*Non-nil means automatically indent the next line when the user types RET."
+  "Non-nil means automatically indent the next line when the user types RET."
+  :version "24.1"
   :group 'prolog-keyboard
   :type 'boolean)
 
 (defcustom prolog-hungry-delete-key-flag nil
-  "*Non-nil means delete key consumes all preceding spaces."
+  "Non-nil means delete key consumes all preceding spaces."
+  :version "24.1"
   :group 'prolog-keyboard
   :type 'boolean)
 
 (defcustom prolog-electric-dot-flag nil
-  "*Non-nil means make dot key electric.
+  "Non-nil means make dot key electric.
 Electric dot appends newline or inserts head of a new clause.
 If dot is pressed at the end of a line where at least one white space
 precedes the point, it inserts a recursive call to the current predicate.
@@ -506,53 +526,61 @@ If dot is pressed at the beginning of an empty line, it inserts the head
 of a new clause for the current predicate.  It does not apply in strings
 and comments.
 It does not apply in strings and comments."
+  :version "24.1"
   :group 'prolog-keyboard
   :type 'boolean)
 
 (defcustom prolog-electric-dot-full-predicate-template nil
-  "*If nil, electric dot inserts only the current predicate's name and `('
+  "If nil, electric dot inserts only the current predicate's name and `('
 for recursive calls or new clause heads.  Non-nil means to also
 insert enough commas to cover the predicate's arity and `)',
 and dot and newline for recursive calls."
+  :version "24.1"
   :group 'prolog-keyboard
   :type 'boolean)
 
 (defcustom prolog-electric-underscore-flag nil
-  "*Non-nil means make underscore key electric.
+  "Non-nil means make underscore key electric.
 Electric underscore replaces the current variable with underscore.
 If underscore is pressed not on a variable then it behaves as usual."
+  :version "24.1"
   :group 'prolog-keyboard
   :type 'boolean)
 
 (defcustom prolog-electric-tab-flag nil
-  "*Non-nil means make TAB key electric.
+  "Non-nil means make TAB key electric.
 Electric TAB inserts spaces after parentheses, ->, and ;
 in ( If -> Then ; Else) and ( Disj1 ; Disj2 ) style expressions."
+  :version "24.1"
   :group 'prolog-keyboard
   :type 'boolean)
 
 (defcustom prolog-electric-if-then-else-flag nil
-  "*Non-nil makes `(', `>' and `;' electric
+  "Non-nil makes `(', `>' and `;' electric
 to automatically indent if-then-else constructs."
+  :version "24.1"
   :group 'prolog-keyboard
   :type 'boolean)
 
 (defcustom prolog-electric-colon-flag nil
-  "*Makes `:' electric (inserts `:-' on a new line).
+  "Makes `:' electric (inserts `:-' on a new line).
 If non-nil, pressing `:' at the end of a line that starts in
 the first column (i.e., clause heads) inserts ` :-' and newline."
+  :version "24.1"
   :group 'prolog-keyboard
   :type 'boolean)
 
 (defcustom prolog-electric-dash-flag nil
-  "*Makes `-' electric (inserts a `-->' on a new line).
+  "Makes `-' electric (inserts a `-->' on a new line).
 If non-nil, pressing `-' at the end of a line that starts in
 the first column (i.e., DCG heads) inserts ` -->' and newline."
+  :version "24.1"
   :group 'prolog-keyboard
   :type 'boolean)
 
 (defcustom prolog-old-sicstus-keys-flag nil
-  "*Non-nil means old SICStus Prolog mode keybindings are used."
+  "Non-nil means old SICStus Prolog mode keybindings are used."
+  :version "24.1"
   :group 'prolog-keyboard
   :type 'boolean)
 
@@ -570,7 +598,7 @@ the first column (i.e., DCG heads) inserts ` -->' and newline."
                      (not (executable-find (car names))))
            (setq names (cdr names)))
          (or (car names) "prolog"))))
-  "*Alist of program names for invoking an inferior Prolog with `run-prolog'."
+  "Alist of program names for invoking an inferior Prolog with `run-prolog'."
   :group 'prolog-inferior
   :type 'sexp)
 (defun prolog-program-name ()
@@ -579,7 +607,8 @@ the first column (i.e., DCG heads) inserts ` -->' and newline."
 (defcustom prolog-program-switches
   '((sicstus ("-i"))
     (t nil))
-  "*Alist of switches given to inferior Prolog run with `run-prolog'."
+  "Alist of switches given to inferior Prolog run with `run-prolog'."
+  :version "24.1"
   :group 'prolog-inferior
   :type 'sexp)
 (defun prolog-program-switches ()
@@ -594,7 +623,7 @@ the first column (i.e., DCG heads) inserts ` -->' and newline."
     (swi "[%f].")
     (gnu     "[%f].")
     (t "reconsult(%f)."))
-  "*Alist of strings defining predicate for reconsulting.
+  "Alist of strings defining predicate for reconsulting.
 
 Some parts of the string are replaced:
 `%f' by the name of the consulted file (can be a temporary file)
@@ -616,7 +645,7 @@ Some parts of the string are replaced:
                      "prolog:zap_file(%m,%b,compile).")))
     (swi "[%f].")
     (t "compile(%f)."))
-  "*Alist of strings and lists defining predicate for recompilation.
+  "Alist of strings and lists defining predicate for recompilation.
 
 Some parts of the string are replaced:
 `%f' by the name of the compiled file (can be a temporary file)
@@ -634,7 +663,7 @@ If `prolog-program-name' is nil, it is an argument to the `compile' function."
   (prolog-find-value-by-system prolog-compile-string))
 
 (defcustom prolog-eof-string "end_of_file.\n"
-  "*Alist of strings that represent end of file for prolog.
+  "Alist of strings that represent end of file for prolog.
 nil means send actual operating system end of file."
   :group 'prolog-inferior
   :type 'sexp)
@@ -645,7 +674,8 @@ nil means send actual operating system end of file."
     (swi "^\\(\\[[a-zA-Z]*\\] \\)?[1-9]?[0-9]*[ ]?\\?- \\|^| +")
     (gnu "^| \\?-")
     (t "^|? *\\?-"))
-  "*Alist of prompts of the prolog system command line."
+  "Alist of prompts of the prolog system command line."
+  :version "24.1"
   :group 'prolog-inferior
   :type 'sexp)
 (defun prolog-prompt-regexp ()
@@ -654,42 +684,48 @@ nil means send actual operating system end of file."
 ;; (defcustom prolog-continued-prompt-regexp
 ;;   '((sicstus "^\\(| +\\|     +\\)")
 ;;     (t "^|: +"))
-;;   "*Alist of regexps matching the prompt when consulting `user'."
+;;   "Alist of regexps matching the prompt when consulting `user'."
 ;;   :group 'prolog-inferior
 ;;   :type 'sexp)
 
 (defcustom prolog-debug-on-string "debug.\n"
-  "*Predicate for enabling debug mode."
+  "Predicate for enabling debug mode."
+  :version "24.1"
   :group 'prolog-inferior
   :type 'string)
 
 (defcustom prolog-debug-off-string "nodebug.\n"
-  "*Predicate for disabling debug mode."
+  "Predicate for disabling debug mode."
+  :version "24.1"
   :group 'prolog-inferior
   :type 'string)
 
 (defcustom prolog-trace-on-string "trace.\n"
-  "*Predicate for enabling tracing."
+  "Predicate for enabling tracing."
+  :version "24.1"
   :group 'prolog-inferior
   :type 'string)
 
 (defcustom prolog-trace-off-string "notrace.\n"
-  "*Predicate for disabling tracing."
+  "Predicate for disabling tracing."
+  :version "24.1"
   :group 'prolog-inferior
   :type 'string)
 
 (defcustom prolog-zip-on-string "zip.\n"
-  "*Predicate for enabling zip mode for SICStus."
+  "Predicate for enabling zip mode for SICStus."
+  :version "24.1"
   :group 'prolog-inferior
   :type 'string)
 
 (defcustom prolog-zip-off-string "nozip.\n"
-  "*Predicate for disabling zip mode for SICStus."
+  "Predicate for disabling zip mode for SICStus."
+  :version "24.1"
   :group 'prolog-inferior
   :type 'string)
 
 (defcustom prolog-use-standard-consult-compile-method-flag t
-  "*Non-nil means use the standard compilation method.
+  "Non-nil means use the standard compilation method.
 Otherwise the new compilation method will be used.  This
 utilizes a special compilation buffer with the associated
 features such as parsing of error messages and automatically
@@ -698,6 +734,7 @@ jumping to the source code responsible for the error.
 Warning: the new method is so far only experimental and
 does contain bugs.  The recommended setting for the novice user
 is non-nil for this variable."
+  :version "24.1"
   :group 'prolog-inferior
   :type 'boolean)
 
@@ -706,41 +743,48 @@ is non-nil for this variable."
 
 (defcustom prolog-use-prolog-tokenizer-flag
   (not (fboundp 'syntax-propertize-rules))
-  "*Non-nil means use the internal prolog tokenizer for indentation etc.
+  "Non-nil means use the internal prolog tokenizer for indentation etc.
 Otherwise use `parse-partial-sexp' which is faster but sometimes incorrect."
+  :version "24.1"
   :group 'prolog-other
   :type 'boolean)
 
 (defcustom prolog-imenu-flag t
-  "*Non-nil means add a clause index menu for all prolog files."
+  "Non-nil means add a clause index menu for all prolog files."
+  :version "24.1"
   :group 'prolog-other
   :type 'boolean)
 
 (defcustom prolog-imenu-max-lines 3000
-  "*The maximum number of lines of the file for imenu to be enabled.
+  "The maximum number of lines of the file for imenu to be enabled.
 Relevant only when `prolog-imenu-flag' is non-nil."
+  :version "24.1"
   :group 'prolog-other
   :type 'integer)
 
 (defcustom prolog-info-predicate-index
   "(sicstus)Predicate Index"
-  "*The info node for the SICStus predicate index."
+  "The info node for the SICStus predicate index."
+  :version "24.1"
   :group 'prolog-other
   :type 'string)
 
 (defcustom prolog-underscore-wordchar-flag nil
-  "*Non-nil means underscore (_) is a word-constituent character."
+  "Non-nil means underscore (_) is a word-constituent character."
+  :version "24.1"
   :group 'prolog-other
   :type 'boolean)
 
 (defcustom prolog-use-sicstus-sd nil
-  "*If non-nil, use the source level debugger of SICStus 3#7 and later."
+  "If non-nil, use the source level debugger of SICStus 3#7 and later."
+  :version "24.1"
   :group 'prolog-other
   :type 'boolean)
 
 (defcustom prolog-char-quote-workaround nil
-  "*If non-nil, declare 0 as a quote character to handle 0'<char>.
+  "If non-nil, declare 0 as a quote character to handle 0'<char>.
 This is really kludgy, and unneeded (i.e. obsolete) in Emacs>=24."
+  :version "24.1"
   :group 'prolog-other
   :type 'boolean)
 
index 15d98ce48affe3b78d0b39103196950f1dde633d..3ef872d26ebdbf01e70cfe0eaa963d1fa7b83c66 100644 (file)
@@ -1004,9 +1004,10 @@ On a comment line, go to end of line."
                                (error (goto-char pos) (end-of-line)))))
                          ((python-skip-out t s))))
             (end-of-line))
-          (unless comment
-            (eq ?\\ (char-before))))   ; Line continued?
-    (end-of-line 2))                   ; Try next line.
+          (and (not comment)
+               (not (eobp))
+               (eq ?\\ (char-before)))) ; Line continued?
+    (end-of-line 2))                     ; Try next line.
   (point))
 
 (defun python-previous-statement (&optional count)
index f8f62d113e628e6b4e34bb0e31658cb5d092e15d..f5bfe526aae386423b66ce9babe0b2f5d1ea94ac 100644 (file)
@@ -810,6 +810,7 @@ is changed."
 
 This hook is invoked in a buffer once it is ready to accept input
 for the first time."
+  :version "24.1"
   :type 'hook
   :group 'SQL)
 
@@ -824,7 +825,10 @@ for the first time."
 
 All products share this list; products should define a regexp to
 identify additional keywords in a variable defined by
-the :statement feature.")
+the :statement feature."
+  :version "24.1"
+  :type 'string
+  :group 'SQL)
 
 ;; Customization for Oracle
 
@@ -851,8 +855,12 @@ You will find the file in your Orant\\bin directory."
   :version "24.1"
   :group 'SQL)
 
-(defcustom sql-oracle-statement-starters (regexp-opt '("declare" "begin" "with"))
-  "Additional statement starting keywords in Oracle.")
+(defcustom sql-oracle-statement-starters
+  (regexp-opt '("declare" "begin" "with"))
+  "Additional statement starting keywords in Oracle."
+  :version "24.1"
+  :type 'string
+  :group 'SQL)
 
 (defcustom sql-oracle-scan-on t
   "Non-nil if placeholders should be replaced in Oracle SQLi.
@@ -867,6 +875,7 @@ You need to issue the following command in SQL*Plus to be safe:
     SET DEFINE OFF
 
 In older versions of SQL*Plus, this was the SET SCAN OFF command."
+  :version "24.1"
   :type 'boolean
   :group 'SQL)
 
index f3bac41fb32217b2a7dc9bc0539400342d433301..73e3cd9980f036d929545111a5103297eaf027c0 100644 (file)
@@ -689,6 +689,7 @@ file referenced.  If false, this is not supported."
 Set this to \"wire\" if the Verilog code uses \"`default_nettype
 none\".  Note using `default_nettype none isn't recommended practice; this
 mode is experimental."
+  :version "24.1"
   :group 'verilog-mode-actions
   :type 'boolean)
 (put 'verilog-auto-declare-nettype 'safe-local-variable `stringp)
@@ -696,6 +697,7 @@ mode is experimental."
 (defcustom verilog-auto-wire-type nil
   "*Non-nil specifies the data type to use with `verilog-auto-wire' etc.
 Set this to \"logic\" for SystemVerilog code, or use `verilog-auto-logic'."
+  :version "24.1"
   :group 'verilog-mode-actions
   :type 'boolean)
 (put 'verilog-auto-wire-type 'safe-local-variable `stringp)
@@ -709,6 +711,7 @@ The name of the function or case will be set between the braces."
 
 (defcustom verilog-auto-delete-trailing-whitespace nil
   "*True means to `delete-trailing-whitespace' in `verilog-auto'."
+  :version "24.1"
   :group 'verilog-mode-actions
   :type 'boolean)
 (put 'verilog-auto-delete-trailing-whitespace 'safe-local-variable 'verilog-booleanp)
@@ -986,6 +989,7 @@ If nil, all blocking assigned signals are ignored when any
 non-blocking assignment is in the AUTORESET block.  This allows
 blocking assignments to be used for temporary values and not have
 those temporaries reset.  See example in `verilog-auto-reset'."
+  :version "24.1"
   :type 'boolean
   :group 'verilog-mode-auto)
 (put 'verilog-auto-reset-blocking-in-non 'safe-local-variable 'verilog-booleanp)
@@ -1073,6 +1077,7 @@ declared together to remain together.  Sorted order reduces
 changes when declarations are moved around in a file.
 
 See also `verilog-auto-arg-sort'."
+  :version "24.1"
   :group 'verilog-mode-auto
   :type 'boolean)
 (put 'verilog-auto-inst-sort 'safe-local-variable 'verilog-booleanp)
@@ -1135,6 +1140,7 @@ See the \\[verilog-faq] for examples on using this."
   "*Data type used for the declaration for AUTOTIEOFF.  If \"wire\" then
 create a wire, if \"assign\" create an assignment, else the data type for
 variable creation."
+  :version "24.1"
   :group 'verilog-mode-auto
   :type 'string)
 (put 'verilog-auto-tieoff-declaration 'safe-local-variable 'stringp)
index cb6d7d21e77a99ea0e32c5b46e7d2ce847aac0c9..349e63d4201bdee5ac848a78692f09dcd0f7c747 100644 (file)
@@ -786,6 +786,9 @@ a previously found match."
     (define-key map [occur-rename-buffer]
       `(menu-item ,(purecopy "Rename Occur Buffer") occur-rename-buffer
                  :help ,(purecopy "Rename the current *Occur* buffer to *Occur: original-buffer-name*.")))
+    (define-key map [occur-edit-buffer]
+      `(menu-item ,(purecopy "Edit Occur Buffer") occur-edit-mode
+                 :help ,(purecopy "Edit the *Occur* buffer and apply changes to the original buffers.")))
     (define-key map [separator-2] menu-bar-separator)
     (define-key map [occur-mode-goto-occurrence-other-window]
       `(menu-item ,(purecopy "Go To Occurrence Other Window") occur-mode-goto-occurrence-other-window
index 0588bf258a765a60c80c0cda2daf47be8df4a087..9c3ce077b7ae9d088232caa061ed92aad803376f 100644 (file)
@@ -130,6 +130,14 @@ Files for which such a check may be inconvenient include those on
 removable and network volumes."
   :type 'regexp :group 'save-place)
 
+(defcustom save-place-ignore-files-regexp
+  "\\(?:COMMIT_EDITMSG\\|hg-editor-[[:alnum:]]+\\.txt\\|svn-commit\\.tmp\\|bzr_log\\.[[:alnum:]]+\\)$"
+  "Regexp matching files for which no location should be recorded.
+Useful for temporary file such as commit message files that are
+automatically created by the VCS."
+  :version "24.1"
+  :type 'regexp :group 'save-place)
+
 (defun toggle-save-place (&optional parg)
   "Toggle whether to save your place in this file between sessions.
 If this mode is enabled, point is recorded when you kill the buffer
@@ -160,20 +168,21 @@ To save places automatically in all files, put this in your `.emacs' file:
   ;; file.  If not, do so, then feel free to modify the alist.  It
   ;; will be saved again when Emacs is killed.
   (or save-place-loaded (load-save-place-alist-from-file))
-  (if buffer-file-name
-      (progn
-        (let ((cell (assoc buffer-file-name save-place-alist))
-             (position (if (not (eq major-mode 'hexl-mode))
-                           (point)
-                         (with-no-warnings
-                           (1+ (hexl-current-address))))))
-          (if cell
-              (setq save-place-alist (delq cell save-place-alist)))
-         (if (and save-place
-                  (not (= position 1)))  ;; Optimize out the degenerate case.
-             (setq save-place-alist
-                   (cons (cons buffer-file-name position)
-                         save-place-alist)))))))
+  (when (and buffer-file-name
+            (not (string-match save-place-ignore-files-regexp
+                               buffer-file-name)))
+    (let ((cell (assoc buffer-file-name save-place-alist))
+         (position (if (not (eq major-mode 'hexl-mode))
+                       (point)
+                     (with-no-warnings
+                       (1+ (hexl-current-address))))))
+      (if cell
+         (setq save-place-alist (delq cell save-place-alist)))
+      (if (and save-place
+              (not (= position 1)))  ;; Optimize out the degenerate case.
+         (setq save-place-alist
+               (cons (cons buffer-file-name position)
+                     save-place-alist))))))
 
 (defun save-place-forget-unreadable-files ()
   "Remove unreadable files from `save-place-alist'.
index 8d9d7cc386b523ee1c1a3f33357ebe8f3f90d6de..0260eba4682a901f96c9a2ffa2b32adc43844d51 100644 (file)
@@ -72,7 +72,7 @@ variable is set, it is used for the next communication only.
 After the communication, this variable is set to nil.")
 
 (declare-function x-get-selection-internal "xselect.c"
-                 (selection-symbol target-type &optional time-stamp))
+                 (selection-symbol target-type &optional time-stamp terminal))
 
 ;; Only declared obsolete in 23.3.
 (define-obsolete-function-alias 'x-selection 'x-get-selection "at least 19.34")
@@ -118,9 +118,9 @@ in `selection-converter-alist', which see."
   (x-get-selection-internal 'CLIPBOARD 'STRING))
 
 (declare-function x-own-selection-internal "xselect.c"
-                 (selection-name selection-value))
+                 (selection-name selection-value &optional frame))
 (declare-function x-disown-selection-internal "xselect.c"
-                 (selection &optional time))
+                 (selection &optional time terminal))
 
 (defun x-set-selection (type data)
   "Make an X selection of type TYPE and value DATA.
index 43ce9da033ee0875a36d90252555875804c0fe05..0638fc344c7534cc336df459f497cb0174c3bcf7 100644 (file)
@@ -923,6 +923,7 @@ the old and FORCE is nil."
 
 (defcustom ses-self-reference-early-detection nil
   "True if cycle detection is early for cells that refer to themselves."
+  :version "24.1"
   :type 'boolean
   :group 'ses)
 
index e7a8953ecbe973bcac1cbe85141652162d06a5f3..1ed43863452dec99477ed788c980fd64850bd492 100644 (file)
@@ -153,13 +153,14 @@ This is a fine thing to set in your `.emacs' file."
   :type '(repeat (string :tag "Suffix"))
   :group 'shell)
 
-(defcustom shell-delimiter-argument-list nil ; '(?\| ?& ?< ?> ?\( ?\) ?\;)
+(defcustom shell-delimiter-argument-list '(?\| ?& ?< ?> ?\( ?\) ?\;)
   "List of characters to recognize as separate arguments.
 This variable is used to initialize `comint-delimiter-argument-list' in the
 shell buffer.  The value may depend on the operating system or shell."
   :type '(choice (const nil)
                 (repeat :tag "List of characters" character))
-  :version "24.1"                      ; changed to nil (bug#8027)
+  ;; Reverted.
+;;  :version "24.1"                    ; changed to nil (bug#8027)
   :group 'shell)
 
 (defvar shell-file-name-chars
@@ -509,6 +510,16 @@ buffer."
   (set (make-local-variable 'shell-dirstack) nil)
   (set (make-local-variable 'shell-last-dir) nil)
   (shell-dirtrack-mode 1)
+
+  ;; By default, ansi-color applies faces using overlays.  This is
+  ;; very inefficient in Shell buffers (e.g. Bug#10835).  We use a
+  ;; custom `ansi-color-apply-face-function' to convert color escape
+  ;; sequences into `font-lock-face' properties.
+  (set (make-local-variable 'ansi-color-apply-face-function)
+       (lambda (beg end face)
+        (when face
+          (put-text-property beg end 'font-lock-face face))))
+
   ;; This is not really correct, since the shell buffer does not really
   ;; edit this directory.  But it is useful in the buffer list and menus.
   (setq list-buffers-directory (expand-file-name default-directory))
@@ -624,7 +635,6 @@ Otherwise, one argument `-i' is passed to the shell.
                      (read-directory-name
                       "Default directory: " default-directory default-directory
                       t nil))))))))
-  (require 'ansi-color)
   (setq buffer (if (or buffer (not (derived-mode-p 'shell-mode))
                        (comint-check-proc (current-buffer)))
                    (get-buffer-create (or buffer "*shell*"))
index 881b0b2207931d69a2608c8144dfadd8f31d48f8..c968ac01b0d38453f1387be08b1ed663657b3733 100644 (file)
@@ -5810,8 +5810,8 @@ Valid values include:
   `mh-e-user-agent'     -- use the Emacs interface to the MH mail system.
                            See Info node `(mh-e)'.
   `gnus-user-agent'     -- like `message-user-agent', but with Gnus
-                           paraphernalia, particularly the Gcc: header for
-                           archiving.
+                           paraphernalia if Gnus is running, particularly
+                           the Gcc: header for archiving.
 
 Additional valid symbols may be available; check with the author of
 your package for details.  The function should return non-nil if it
index bfa642699af2ba4f3a054c48662612b44f0b1955..fc86d4179b645b6a9058ea26c87b2cd43afe8819 100644 (file)
@@ -218,11 +218,12 @@ On X, if `x-select-enable-clipboard' is non-nil, copy TEXT to the
 clipboard.  If `x-select-enable-primary' is non-nil, put TEXT in
 the primary selection.
 
-On Windows, make TEXT the current selection.  If
+On MS-Windows, make TEXT the current selection.  If
 `x-select-enable-clipboard' is non-nil, copy the text to the
 clipboard as well.
 
-On Nextstep, put TEXT in the pasteboard."
+On Nextstep, put TEXT in the pasteboard (`x-select-enable-clipboard'
+is not used)."
   (if x-select-enable-clipboard
       (w16-set-clipboard-data text))
   (setq x-last-selected-text text))
@@ -248,13 +249,19 @@ On Nextstep, put TEXT in the pasteboard."
          (setq x-last-selected-text text))))))
 
 ;; x-selection-owner-p is used in simple.el.
-(defun x-selection-owner-p (&optional type)
+(defun x-selection-owner-p (&optional selection terminal)
   "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.)
 For convenience, the symbol nil is the same as `PRIMARY',
-and t is the same as `SECONDARY'."
+and t is the same as `SECONDARY'.
+
+TERMINAL should be a terminal object or a frame specifying the X
+server to query.  If omitted or nil, that stands for the selected
+frame's display, or the first available X display.
+
+On Nextstep, TERMINAL is unused."
     (if x-select-enable-clipboard
       (let (text)
        ;; Don't die if w16-get-clipboard-data signals an error.
@@ -272,30 +279,52 @@ and t is the same as `SECONDARY'."
 
 ;; x-own-selection-internal and x-disown-selection-internal are used
 ;; in select.el:x-set-selection.
-(defun x-own-selection-internal (type value)
-  "Assert an X selection of the given TYPE with the given VALUE.
-TYPE is a symbol, typically `PRIMARY', `SECONDARY', or `CLIPBOARD'.
+(defun x-own-selection-internal (selection value &optional frame)
+  "Assert an X selection of the type SELECTION with 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.)
 VALUE is typically a string, or a cons of two markers, but may be
-anything that the functions on `selection-converter-alist' know about."
+anything that the functions on `selection-converter-alist' know about.
+
+FRAME should be a frame that should own the selection.  If omitted or
+nil, it defaults to the selected frame.
+
+On Nextstep, FRAME is unused."
   (ignore-errors
     (x-select-text value))
   value)
 
-(defun x-disown-selection-internal (selection &optional time)
+(defun x-disown-selection-internal (selection &optional time-object terminal)
   "If we own the selection SELECTION, disown it.
-Disowning it means there is no such selection."
+Disowning it means there is no such selection.
+
+Sets the last-change time for the selection to TIME-OBJECT (by default
+the time of the last event).
+
+TERMINAL should be a terminal object or a frame specifying the X
+server to query.  If omitted or nil, that stands for the selected
+frame's display, or the first available X display.
+
+On Nextstep, the TIME-OBJECT and TERMINAL arguments are unused.
+On MS-DOS, all this does is return non-nil if we own the selection."
   (if (x-selection-owner-p selection)
       t))
 
 ;; x-get-selection-internal is used in select.el
-(defun x-get-selection-internal (selection type &optional time_stamp)
+(defun x-get-selection-internal (selection-symbol target-type &optional time-stamp terminal)
   "Return text selected from some X window.
-SELECTION is a symbol, typically `PRIMARY', `SECONDARY', or `CLIPBOARD'.
+SELECTION-SYMBOL is typically `PRIMARY', `SECONDARY', or `CLIPBOARD'.
 \(Those are literal upper-case symbol names, since that's what X expects.)
-TYPE is the type of data desired, typically `STRING'.
-TIME_STAMP is the time to use in the XConvertSelection call for foreign
-selections.  If omitted, defaults to the time for the last event."
+TARGET-TYPE is the type of data desired, typically `STRING'.
+
+TIME-STAMP is the time to use in the XConvertSelection call for foreign
+selections.  If omitted, defaults to the time for the last event.
+
+TERMINAL should be a terminal object or a frame specifying the X
+server to query.  If omitted or nil, that stands for the selected
+frame's display, or the first available X display.
+
+On Nextstep, TIME-STAMP and TERMINAL are unused."
   (x-get-selection-value))
 
 ;; From src/fontset.c:
index 394e4d4fe48f0dc2cb19c6d94af870da4a9d97a6..21d49267b21a54dac54e3b0d0b57bde7a425d48c 100644 (file)
@@ -1408,11 +1408,12 @@ Request data types in the order specified by `x-select-request-type'."
                (cons '(reverse . t) default-frame-alist)))))
 
   ;; Set x-selection-timeout, measured in milliseconds.
-  (let ((res-selection-timeout
-        (x-get-resource "selectionTimeout" "SelectionTimeout")))
-    (setq x-selection-timeout 20000)
-    (if res-selection-timeout
-       (setq x-selection-timeout (string-to-number res-selection-timeout))))
+  (let ((res-selection-timeout (x-get-resource "selectionTimeout"
+                                              "SelectionTimeout")))
+    (setq x-selection-timeout
+         (if res-selection-timeout
+             (string-to-number res-selection-timeout)
+           5000)))
 
   ;; Don't let Emacs suspend under X.
   (add-hook 'suspend-hook 'x-win-suspend-error)
index 89825771233612f4e63e16e6a211718e6ac13646..eea6d767512cc716c265f8b7789b91005ad63c21 100644 (file)
@@ -33,6 +33,7 @@
   "Set to a list if the XTerm supports modifyOtherKeys or
 reporting the background color.  Set to 'check to check for those
 features.  Set to nil to skip the checks."
+  :version "24.1"
   :group 'xterm
   :type '(choice (const :tag "No" nil)
                  (const :tag "Check" check)
index 577e12b9b40aac64d5deeeeea10823fd921904e4..9e8cbb216d11e865bdc11825ecdf33fdd8c4338b 100644 (file)
@@ -1,6 +1,6 @@
 ;;; picture.el --- "Picture mode" -- editing using quarter-plane screen model
 
-;; Copyright (C) 1985, 1994, 2001-2012  Free Software Foundation, Inc.
+;; Copyright (C) 1985, 1994, 2001-2012 Free Software Foundation, Inc.
 
 ;; Author: K. Shane Hartman
 ;; Maintainer: FSF
@@ -211,7 +211,7 @@ The mode line is updated to reflect the current direction."
   "Move point in direction of current picture motion in Picture mode.
 With ARG do it that many times.  Useful for delineating rectangles in
 conjunction with diagonal picture motion.
-Do \\[command-apropos]  picture-movement  to see commands which control motion."
+Use \"\\[command-apropos] picture-movement\" to see commands which control motion."
   (interactive "^p")
   (picture-move-down (* arg picture-vertical-step))
   (picture-forward-column (* arg picture-horizontal-step)))
@@ -220,7 +220,7 @@ Do \\[command-apropos]  picture-movement  to see commands which control motion."
   "Move point in direction opposite of current picture motion in Picture mode.
 With ARG do it that many times.  Useful for delineating rectangles in
 conjunction with diagonal picture motion.
-Do \\[command-apropos]  picture-movement  to see commands which control motion."
+Use \"\\[command-apropos] picture-movement\" to see commands which control motion."
   (interactive "^p")
   (picture-motion (- arg)))
 
@@ -280,7 +280,7 @@ Do \\[command-apropos]  picture-movement  to see commands which control motion."
   "Insert this character in place of character previously at the cursor.
 The cursor then moves in the direction you previously specified
 with the commands `picture-movement-right', `picture-movement-up', etc.
-Do \\[command-apropos] `picture-movement' to see those commands."
+Use \"\\[command-apropos] picture-movement\" to see those commands."
   (interactive "p")
   (picture-update-desired-column (not (eq this-command last-command)))
   (picture-insert last-command-event arg)) ; Always a character in this case.
@@ -378,8 +378,10 @@ With positive argument insert that many lines."
 
 (defcustom picture-tab-chars "!-~"
   "A character set which controls behavior of commands.
-\\[picture-set-tab-stops] and \\[picture-tab-search].  It is NOT a
-regular expression, any regexp special characters will be quoted.
+\\[picture-set-tab-stops] and \\[picture-tab-search].
+The syntax for this variable is like the syntax used inside of `[...]'
+in a regular expression--but without the `[' and the `]'.
+It is NOT a regular expression, any regexp special characters will be quoted.
 It defines a set of \"interesting characters\" to look for when setting
 \(or searching for) tab stops, initially \"!-~\" (all printing characters).
 For example, suppose that you are editing a table which is formatted thus:
@@ -602,6 +604,8 @@ Leaves the region surrounding the rectangle."
 \f
 ;; Picture Keymap, entry and exit points.
 
+(defalias 'picture-delete-char 'delete-char)
+
 (defvar picture-mode-map nil)
 
 (defun picture-substitute (oldfun newfun)
@@ -627,11 +631,11 @@ Leaves the region surrounding the rectangle."
       (picture-substitute 'newline-and-indent 'picture-duplicate-line)
       (picture-substitute 'next-line 'picture-move-down)
       (picture-substitute 'previous-line 'picture-move-up)
-      (picture-substitute 'beginning-of-line 'picture-beginning-of-line)
-      (picture-substitute 'end-of-line 'picture-end-of-line)
+      (picture-substitute 'move-beginning-of-line 'picture-beginning-of-line)
+      (picture-substitute 'move-end-of-line 'picture-end-of-line)
       (picture-substitute 'mouse-set-point 'picture-mouse-set-point)
 
-      (define-key picture-mode-map "\C-c\C-d" 'delete-char)
+      (define-key picture-mode-map "\C-c\C-d" 'picture-delete-char)
       (define-key picture-mode-map "\e\t" 'picture-toggle-tab-state)
       (define-key picture-mode-map "\t" 'picture-tab)
       (define-key picture-mode-map "\e\t" 'picture-tab-search)
@@ -720,7 +724,7 @@ You can edit tabular text with these commands:
 
 You can manipulate text with these commands:
  Clear ARG columns after point without moving:    \\[picture-clear-column]
- Delete char at point:                            \\[delete-char]
+ Delete char at point:                            \\[picture-delete-char]
  Clear ARG columns backward:                      \\[picture-backward-clear-column]
  Clear ARG lines, advancing over them:            \\[picture-clear-line]
   (the cleared text is saved in the kill ring)
index 0e47338bf9fbc9eb5ffd140e83505a242be346e0..f04cad4463a7ae103ed3a91efa4866ef4cd183f0 100644 (file)
@@ -287,6 +287,7 @@ holds a keymap."
 Possible values are `top' (tool bar on top), `bottom' (tool bar at bottom),
 `left' (tool bar on left) and `right' (tool bar on right).
 Customize `tool-bar-mode' if you want to show or hide the tool bar."
+      :version "24.1"
       :type '(choice (const top)
                     (const bottom)
                     (const left)
index 4f49adcd932d16d88628c5a9d9218e4dd6256648..55aa91949042b962ad8f44aa98921f039ff9f86e 100644 (file)
@@ -1,3 +1,36 @@
+2012-02-20  Lars Ingebrigtsen  <larsi@gnus.org>
+
+       * url-queue.el (url-queue-kill-job): Delete the process sentinel
+       before killing the process to avoid a race condition between the
+       two processes killing off the process buffer.
+
+       * url.el (url-retrieve-internal): Warn about file errors when
+       pruning the cache instead of bugging out (bug#10831).
+
+2012-02-19  Lars Ingebrigtsen  <larsi@gnus.org>
+
+       * url-queue.el (url-queue-callback-function): Remove the job from
+       the queue so that we don't kill the current buffer, which will
+       then make the callback function kill a random buffer.
+
+2012-02-14  Lars Ingebrigtsen  <larsi@gnus.org>
+
+       * url-queue.el (url-queue-kill-job): Refactored out code.
+       (url-queue-remove-jobs-from-host): Use it to kill jobs that are in
+       flight.
+
+2012-02-14  Teodor Zlatanov  <tzz@lifelogs.com>
+
+       * url-future.el: Minor doc update.
+
+2012-02-14  Leo Liu  <sdl.web@gmail.com>
+
+       * url-future.el: Fix last change.
+
+2012-02-13  Teodor Zlatanov  <tzz@lifelogs.com>
+
+       * url-future.el (url-future-test): Move to test/automated.
+
 2012-02-10  Lars Ingebrigtsen  <larsi@gnus.org>
 
        * url-http.el (url-http-parse-headers): When redirecting, pass on
index 2798f936f21487785f52f6239d60efdeac6936f4..8cdd6916a35aedaa9c51e8e042d9774efd956670 100644 (file)
 ;; So, to get the value:
 ;; (when (url-future-completed-p future) (url-future-value future))
 
-;; See the ERT tests and the code for further details.
+;; See `url-future-tests' and the code below for further details.
 
 ;;; Code:
 
 (eval-when-compile (require 'cl))
-(eval-when-compile (require 'ert))
 
 (defstruct url-future callback errorback status value)
 
       (signal 'error 'url-future-already-done)
     (url-future-finish url-future 'cancel)))
 
-(ert-deftest url-future-test ()
-  (let* (saver
-        (text "running future")
-         (good (make-url-future :value (lambda () (format text))
-                                :callback (lambda (f) (set 'saver f))))
-         (bad (make-url-future :value (lambda () (/ 1 0))
-                               :errorback (lambda (&rest d) (set 'saver d))))
-         (tocancel (make-url-future :value (lambda () (/ 1 0))
-                                    :callback (lambda (f) (set 'saver f))
-                                    :errorback (lambda (&rest d)
-                                                 (set 'saver d)))))
-    (should (equal good (url-future-call good)))
-    (should (equal good saver))
-    (should (equal text (url-future-value good)))
-    (should (url-future-completed-p good))
-    (should-error (url-future-call good))
-    (setq saver nil)
-    (should (equal bad (url-future-call bad)))
-    (should-error (url-future-call bad))
-    (should (equal saver (list bad '(arith-error))))
-    (should (url-future-errored-p bad))
-    (setq saver nil)
-    (should (equal (url-future-cancel tocancel) tocancel))
-    (should-error (url-future-call tocancel))
-    (should (null saver))
-    (should (url-future-cancelled-p tocancel))))
-
 (provide 'url-future)
 ;;; url-future.el ends here
index 9dfee4859181592335d0dd65bb3233022da92805..6e4cedddaf376b379e68c539866b20ee21be26e5 100644 (file)
@@ -108,6 +108,7 @@ The variable `url-queue-timeout' sets a timeout."
       (url-queue-start-retrieve waiting))))
 
 (defun url-queue-callback-function (status job)
+  (setq url-queue (delq job url-queue))
   (when (and (eq (car status) :error)
             (eq (cadr (cadr status)) 'connection-failed))
     ;; If we get a connection error, then flush all other jobs from
@@ -116,7 +117,6 @@ The variable `url-queue-timeout' sets a timeout."
     ;; synchronously and totally halts Emacs.
     (url-queue-remove-jobs-from-host
      (plist-get (nthcdr 3 (cadr status)) :host)))
-  (setq url-queue (delq job url-queue))
   (url-queue-run-queue)
   (apply (url-queue-callback job) (cons status (url-queue-cbargs job))))
 
@@ -127,6 +127,7 @@ The variable `url-queue-timeout' sets a timeout."
                   host)
        (push job jobs)))
     (dolist (job jobs)
+      (url-queue-kill-job job)
       (setq url-queue (delq job url-queue)))))
 
 (defun url-queue-start-retrieve (job)
@@ -146,14 +147,19 @@ The variable `url-queue-timeout' sets a timeout."
                    url-queue-timeout))
        (push job dead-jobs)))
     (dolist (job dead-jobs)
-      (when (bufferp (url-queue-buffer job))
-       (while (get-buffer-process (url-queue-buffer job))
-         (ignore-errors
-           (delete-process (get-buffer-process (url-queue-buffer job)))))
-       (ignore-errors
-         (kill-buffer (url-queue-buffer job))))
+      (url-queue-kill-job job)
       (setq url-queue (delq job url-queue)))))
 
+(defun url-queue-kill-job (job)
+  (when (bufferp (url-queue-buffer job))
+    (let (process)
+      (while (setq process (get-buffer-process (url-queue-buffer job)))
+       (set-process-sentinel process 'ignore)
+       (ignore-errors
+         (delete-process process))))
+    (ignore-errors
+      (kill-buffer (url-queue-buffer job)))))
+
 (provide 'url-queue)
 
 ;;; url-queue.el ends here
index 933bceb2e6f99dd25c13d21594904f2f71eaba53..5ced789e4e4450da03f7ec6d04a28308db849c24 100644 (file)
@@ -186,7 +186,10 @@ the server."
   (setf (url-use-cookies url) (not inhibit-cookies))
   ;; Once in a while, remove old entries from the URL cache.
   (when (zerop (% url-retrieve-number-of-calls 1000))
-    (url-cache-prune-cache))
+    (condition-case error
+       (url-cache-prune-cache)
+      (file-error
+       (message "Error when expiring the cache: %s" error))))
   (setq url-retrieve-number-of-calls (1+ url-retrieve-number-of-calls))
   (let ((loader (url-scheme-get-property (url-type url) 'loader))
        (url-using-proxy (if (url-host url)
index 806be8559096a038edb2875c25e9f3da1144f322..2de5e4dbdaf5b760918c97162d55a23c6e82ff78 100644 (file)
@@ -1743,8 +1743,10 @@ Unless optional argument INPLACE is non-nil, return a new string."
 
 ;; If ediff modified mode line, strip the modification
 (defsubst ediff-strip-mode-line-format ()
-  (if (member (car mode-line-format) '(" A: " " B: " " C: " " Ancestor: "))
-      (setq mode-line-format (nth 2 mode-line-format))))
+  (and (consp mode-line-format)
+       (member (car mode-line-format)
+              '(" A: " " B: " " C: " " Ancestor: "))
+       (setq mode-line-format (nth 2 mode-line-format))))
 
 ;; Verify that we have a difference selected.
 (defsubst ediff-valid-difference-p (&optional n)
index bc4b0725c4ed553bf182ea9e5a8c5e9295ae5413..a48f2afecd59646c6aa3cc667c1ab8b2c9aa6b3a 100644 (file)
 (defmacro emerge-defvar-local (var value doc)
   "Defines SYMBOL as an advertised variable.
 Performs a defvar, then executes `make-variable-buffer-local' on
-the variable.  Also sets the `preserved' property, so that
+the variable.  Also sets the `permanent-local' property, so that
 `kill-all-local-variables' (called by major-mode setting commands)
 won't destroy Emerge control variables."
   `(progn
     (defvar ,var ,value ,doc)
     (make-variable-buffer-local ',var)
-    (put ',var 'preserved t)))
+    (put ',var 'permanent-local t)))
 
 ;; Add entries to minor-mode-alist so that emerge modes show correctly
 (defvar emerge-minor-modes-list
index 7512c9283eb2fd426cd851a58ac97d5fc8fc943d..d345a20a0f532047a450dd461766a3089dafc80b 100644 (file)
@@ -561,9 +561,6 @@ changeset that affected the currently considered file(s)."
               log-view-vc-fileset))
      to fr)))
 
-(declare-function vc-diff-internal "vc"
-                 (async vc-fileset rev1 rev2 &optional verbose))
-
 (defun log-view-diff-changeset (beg end)
   "Get the diff between two revisions.
 If the mark is not active or the mark is on the revision at point,
index 7502bc28c5f634c85d075088d66e19038c6cf036..052e6784b0831f5ccf5f4835439256f1363ef558 100644 (file)
 ;;; Customization options
 ;;;
 
+(defgroup vc-arch nil
+  "VC Arch backend."
+  :version "24.1"
+  :group 'vc)
+
 ;; It seems Arch diff does not accept many options, so this is not
 ;; very useful.  It exists mainly so that the VC backends are all
 ;; consistent with regards to their treatment of diff switches.
@@ -76,7 +81,7 @@ If nil, use the value of `vc-diff-switches'.  If t, use no switches."
                 (string :tag "Argument String")
                 (repeat :tag "Argument List" :value ("") string))
   :version "23.1"
-  :group 'vc)
+  :group 'vc-arch)
 
 (define-obsolete-variable-alias 'vc-arch-command 'vc-arch-program "23.1")
 
@@ -87,7 +92,7 @@ If nil, use the value of `vc-diff-switches'.  If t, use no switches."
     (or (car candidates) "tla"))
   "Name of the Arch executable."
   :type 'string
-  :group 'vc)
+  :group 'vc-arch)
 
 ;; Clear up the cache to force vc-call to check again and discover
 ;; new functions when we reload this file.
@@ -377,7 +382,7 @@ CALLBACK expects (ENTRIES &optional MORE-TO-COME); see
   '(("\\`.*--\\(.*--.*\\)--\\(v?\\).*-\\([0-9]+\\)\\'" . "\\2\\3[\\1]"))
   "Rewrite rules to shorten Arch's revision names on the mode-line."
   :type '(repeat (cons regexp string))
-  :group 'vc)
+  :group 'vc-arch)
 
 (defun vc-arch-mode-line-string (file)
   "Return string for placement in modeline by `vc-mode-line' for FILE."
index e64f05130a390c94156ffb91dd56a72b2474c8b3..8c397144bf2fb02f5bc4a5d52fa5a0ee178dc7e8 100644 (file)
@@ -56,7 +56,7 @@
 (put 'Bzr 'vc-functions nil)
 
 (defgroup vc-bzr nil
-  "VC bzr backend."
+  "VC Bazaar (bzr) backend."
   :version "22.2"
   :group 'vc)
 
index 720df27f4428e88a3fe050348ed05851254ae469..2d8d132a249c4a1b2758873acf49bfdbf0974fa5 100644 (file)
 ;;; Customization options
 ;;;
 
+(defgroup vc-cvs nil
+  "VC CVS backend."
+  :version "24.1"
+  :group 'vc)
+
 (defcustom vc-cvs-global-switches nil
   "Global switches to pass to any CVS command."
   :type '(choice (const :tag "None" nil)
@@ -67,7 +72,7 @@
                         :value ("")
                         string))
   :version "22.1"
-  :group 'vc)
+  :group 'vc-cvs)
 
 (defcustom vc-cvs-register-switches nil
   "Switches for registering a file into CVS.
@@ -79,7 +84,7 @@ If t, use no switches."
                 (string :tag "Argument String")
                 (repeat :tag "Argument List" :value ("") string))
   :version "21.1"
-  :group 'vc)
+  :group 'vc-cvs)
 
 (defcustom vc-cvs-diff-switches nil
   "String or list of strings specifying switches for CVS diff under VC.
@@ -89,13 +94,13 @@ If nil, use the value of `vc-diff-switches'.  If t, use no switches."
                  (string :tag "Argument String")
                  (repeat :tag "Argument List" :value ("") string))
   :version "21.1"
-  :group 'vc)
+  :group 'vc-cvs)
 
 (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)
-  :group 'vc)
+  :group 'vc-cvs)
 
 (defcustom vc-cvs-use-edit t
   "Non-nil means to use `cvs edit' to \"check out\" a file.
@@ -103,7 +108,7 @@ This is only meaningful if you don't use the implicit checkout model
 \(i.e. if you have $CVSREAD set)."
   :type 'boolean
   :version "21.1"
-  :group 'vc)
+  :group 'vc-cvs)
 
 (defcustom vc-cvs-stay-local 'only-file
   "Non-nil means use local operations when possible for remote repositories.
@@ -131,7 +136,7 @@ by these regular expressions."
                                :tag "if it matches")
                        (repeat :format "%v%i\n" :inline t (regexp :tag "or"))))
   :version "23.1"
-  :group 'vc)
+  :group 'vc-cvs)
 
 (defcustom vc-cvs-sticky-date-format-string "%c"
   "Format string for mode-line display of sticky date.
@@ -139,7 +144,7 @@ Format is according to `format-time-string'.  Only used if
 `vc-cvs-sticky-tag-display' is t."
   :type '(string)
   :version "22.1"
-  :group 'vc)
+  :group 'vc-cvs)
 
 (defcustom vc-cvs-sticky-tag-display t
   "Specify the mode-line display of sticky tags.
@@ -178,7 +183,7 @@ displayed.  Date and time is displayed for sticky dates.
 See also variable `vc-cvs-sticky-date-format-string'."
   :type '(choice boolean function)
   :version "22.1"
-  :group 'vc)
+  :group 'vc-cvs)
 
 ;;;
 ;;; Internal variables
index 9d55e9c7b435607d33e7625d42c8e31d8ded6e95..6cd2b1ddf7622d7cb185150e8e673def13166715 100644 (file)
@@ -7,6 +7,8 @@
 ;; Keywords: url, vc
 ;; Package: vc
 
+;; This file is part of GNU Emacs.
+
 ;; GNU Emacs is free software: you can redistribute it and/or modify
 ;; it under the terms of the GNU General Public License as published by
 ;; the Free Software Foundation, either version 3 of the License, or
@@ -20,7 +22,6 @@
 ;; You should have received a copy of the GNU General Public License
 ;; along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
 
-
 ;;; Commentary:
 
 ;;; Todo:
index 2715fdd142d34774c53f26e7a942081b056ef7e8..dbe591a3ed8a58c9ec8d41bbec0473a8916d9e94 100644 (file)
   (require 'vc-dir)
   (require 'grep))
 
+(defgroup vc-git nil
+  "VC Git backend."
+  :version "24.1"
+  :group 'vc)
+
 (defcustom vc-git-diff-switches t
   "String or list of strings specifying switches for Git diff under VC.
 If nil, use the value of `vc-diff-switches'.  If t, use no switches."
@@ -117,13 +122,13 @@ If nil, use the value of `vc-diff-switches'.  If t, use no switches."
                 (string :tag "Argument String")
                 (repeat :tag "Argument List" :value ("") string))
   :version "23.1"
-  :group 'vc)
+  :group 'vc-git)
 
 (defcustom vc-git-program "git"
   "Name of the Git executable (excluding any arguments)."
   :version "24.1"
   :type 'string
-  :group 'vc)
+  :group 'vc-git)
 
 (defcustom vc-git-root-log-format
   '("%d%h..: %an %ad %s"
@@ -143,7 +148,7 @@ format string (which is passed to \"git log\" via the argument
 matching the resulting Git log output, and KEYWORDS is a list of
 `font-lock-keywords' for highlighting the Log View buffer."
   :type '(list string string (repeat sexp))
-  :group 'vc
+  :group 'vc-git
   :version "24.1")
 
 (defvar vc-git-commits-coding-system 'utf-8
index 30c91ad3111344fd8ec2122f9a6f0816d4536110..f3ba009b8c2fdb55a8924489a49892e06df3706c 100644 (file)
 
 ;;; Customization options
 
+(defgroup vc-hg nil
+  "VC Mercurial (hg) backend."
+  :version "24.1"
+  :group 'vc)
+
 (defcustom vc-hg-global-switches nil
   "Global switches to pass to any Hg command."
   :type '(choice (const :tag "None" nil)
          (string :tag "Argument String")
          (repeat :tag "Argument List" :value ("") string))
   :version "22.2"
-  :group 'vc)
+  :group 'vc-hg)
 
 (defcustom vc-hg-diff-switches t ; Hg doesn't support common args like -u
   "String or list of strings specifying switches for Hg diff under VC.
@@ -132,12 +137,12 @@ If nil, use the value of `vc-diff-switches'.  If t, use no switches."
                  (string :tag "Argument String")
                  (repeat :tag "Argument List" :value ("") string))
   :version "23.1"
-  :group 'vc)
+  :group 'vc-hg)
 
 (defcustom vc-hg-program "hg"
   "Name of the Mercurial executable (excluding any arguments)."
   :type 'string
-  :group 'vc)
+  :group 'vc-hg)
 
 (defcustom vc-hg-root-log-format
   '("{rev}:{tags}: {author|person} {date|shortdate} {desc|firstline}\\n"
@@ -153,7 +158,7 @@ REGEXP is a regular expression matching the resulting Mercurial
 output, and KEYWORDS is a list of `font-lock-keywords' for
 highlighting the Log View buffer."
   :type '(list string string (repeat sexp))
-  :group 'vc
+  :group 'vc-hg
   :version "24.1")
 
 \f
index d0727d9c0dcc0cef8a1d9bcdd8681561b15a9e09..122743c3747ccba0db886d29c8d811ebd8013b62 100644 (file)
 
 (eval-when-compile (require 'cl) (require 'vc))
 
+(defgroup vc-mtn nil
+  "VC Monotone (mtn) backend."
+  :version "24.1"
+  :group 'vc)
+
 (defcustom vc-mtn-diff-switches t
   "String or list of strings specifying switches for monotone diff under VC.
 If nil, use the value of `vc-diff-switches'.  If t, use no switches."
@@ -42,13 +47,13 @@ If nil, use the value of `vc-diff-switches'.  If t, use no switches."
                 (string :tag "Argument String")
                 (repeat :tag "Argument List" :value ("") string))
   :version "23.1"
-  :group 'vc)
+  :group 'vc-mtn)
 
 (define-obsolete-variable-alias 'vc-mtn-command 'vc-mtn-program "23.1")
 (defcustom vc-mtn-program "mtn"
   "Name of the monotone executable."
   :type 'string
-  :group 'vc)
+  :group 'vc-mtn)
 
 ;; Clear up the cache to force vc-call to check again and discover
 ;; new functions when we reload this file.
@@ -153,7 +158,7 @@ If nil, use the value of `vc-diff-switches'.  If t, use no switches."
   "Rewrite rules to shorten Mtn's revision names on the mode-line."
   :type '(repeat (cons regexp string))
   :version "22.2"
-  :group 'vc)
+  :group 'vc-mtn)
 
 (defun vc-mtn-mode-line-string (file)
   "Return string for placement in modeline by `vc-mode-line' for FILE."
index f2122b60ce19385558dc084c64edfa14c449437c..7e10372f362d5b0f78eade33e56f48bd7885e50a 100644 (file)
   (require 'cl)
   (require 'vc))
 
+(defgroup vc-rcs nil
+  "VC RCS backend."
+  :version "24.1"
+  :group 'vc)
+
 (defcustom vc-rcs-release nil
   "The release number of your RCS installation, as a string.
 If nil, VC itself computes this value when it is first needed."
   :type '(choice (const :tag "Auto" nil)
                 (string :tag "Specified")
                 (const :tag "Unknown" unknown))
-  :group 'vc)
+  :group 'vc-rcs)
 
 (defcustom vc-rcs-register-switches nil
   "Switches for registering a file in RCS.
@@ -59,7 +64,7 @@ If t, use no switches."
                 (string :tag "Argument String")
                 (repeat :tag "Argument List" :value ("") string))
   :version "21.1"
-  :group 'vc)
+  :group 'vc-rcs)
 
 (defcustom vc-rcs-diff-switches nil
   "String or list of strings specifying switches for RCS diff under VC.
@@ -69,20 +74,20 @@ If nil, use the value of `vc-diff-switches'.  If t, use no switches."
                 (string :tag "Argument String")
                 (repeat :tag "Argument List" :value ("") string))
   :version "21.1"
-  :group 'vc)
+  :group 'vc-rcs)
 
 (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
-  :group 'vc)
+  :group 'vc-rcs)
 
 (defcustom vc-rcsdiff-knows-brief nil
   "Indicates whether rcsdiff understands the --brief option.
 The value is either `yes', `no', or nil.  If it is nil, VC tries
 to use --brief and sets this variable to remember whether it worked."
   :type '(choice (const :tag "Work out" nil) (const yes) (const no))
-  :group 'vc)
+  :group 'vc-rcs)
 
 ;;;###autoload
 (defcustom vc-rcs-master-templates
@@ -95,7 +100,7 @@ For a description of possible values, see `vc-check-master-templates'."
                         (choice string
                                 function)))
   :version "21.1"
-  :group 'vc)
+  :group 'vc-rcs)
 
 \f
 ;;; Properties of the backend
index 31637f5490e0bde5fae61d69f63727a04692e9ce..0df307eda85f6a9d5e056e47593ce02fce812898 100644 (file)
 ;;   :type '(repeat directory)
 ;;   :group 'vc)
 
+(defgroup vc-sccs nil
+  "VC SCCS backend."
+  :version "24.1"
+  :group 'vc)
+
 (defcustom vc-sccs-register-switches nil
   "Switches for registering a file in SCCS.
 A string or list of strings passed to the checkin program by
@@ -57,7 +62,7 @@ If t, use no switches."
                 (string :tag "Argument String")
                 (repeat :tag "Argument List" :value ("") string))
   :version "21.1"
-  :group 'vc)
+  :group 'vc-sccs)
 
 (defcustom vc-sccs-diff-switches nil
   "String or list of strings specifying switches for SCCS diff under VC.
@@ -67,13 +72,13 @@ If nil, use the value of `vc-diff-switches'.  If t, use no switches."
                 (string :tag "Argument String")
                 (repeat :tag "Argument List" :value ("") string))
   :version "21.1"
-  :group 'vc)
+  :group 'vc-sccs)
 
 (defcustom vc-sccs-header '("%W%")
   "Header keywords to be inserted by `vc-insert-headers'."
   :type '(repeat string)
   :version "24.1"     ; no longer consult the obsolete vc-header-alist
-  :group 'vc)
+  :group 'vc-sccs)
 
 ;;;###autoload
 (defcustom vc-sccs-master-templates
@@ -86,7 +91,7 @@ For a description of possible values, see `vc-check-master-templates'."
                         (choice string
                                 function)))
   :version "21.1"
-  :group 'vc)
+  :group 'vc-sccs)
 
 \f
 ;;;
index b8a6a326ec187dabf5a2d6b6d96d0bec759eec9d..6c2367c7ba6853ef5833e8bb0baa71be10a454dd 100644 (file)
 ;;; Customization options
 ;;;
 
+(defgroup vc-svn nil
+  "VC Subversion (svn) backend."
+  :version "24.1"
+  :group 'vc)
+
 ;; FIXME there is also svnadmin.
 (defcustom vc-svn-program "svn"
   "Name of the SVN executable."
   :type 'string
-  :group 'vc)
+  :group 'vc-svn)
 
 (defcustom vc-svn-global-switches nil
   "Global switches to pass to any SVN command."
@@ -53,7 +58,7 @@
                         :value ("")
                         string))
   :version "22.1"
-  :group 'vc)
+  :group 'vc-svn)
 
 (defcustom vc-svn-register-switches nil
   "Switches for registering a file into SVN.
@@ -65,7 +70,7 @@ If t, use no switches."
                 (string :tag "Argument String")
                 (repeat :tag "Argument List" :value ("") string))
   :version "22.1"
-  :group 'vc)
+  :group 'vc-svn)
 
 (defcustom vc-svn-diff-switches
   t                       ;`svn' doesn't support common args like -c or -b.
@@ -81,13 +86,13 @@ If you want to force an empty list of arguments, use t."
                         :value ("")
                         string))
   :version "22.1"
-  :group 'vc)
+  :group 'vc-svn)
 
 (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)
-  :group 'vc)
+  :group 'vc-svn)
 
 ;; We want to autoload it for use by the autoloaded version of
 ;; vc-svn-registered, but we want the value to be compiled at startup, not
index c9bddba942c6435693ad935cfdb0ac3ca0a84db8..edd8a113876b5ccb293951a2ff17af387baa9d6f 100644 (file)
@@ -385,6 +385,7 @@ bottom side of each frame.  If an element is a number, this means
 to display at most that many side windows on the corresponding
 side.  If an element is nil, this means there's no bound on the
 number of slots on that side."
+  :version "24.1"
   :risky t
   :type
   '(list
@@ -4624,16 +4625,20 @@ buffer.  Return the window chosen for displaying BUFFER-OR-NAME,
 or nil if no such window is found.
 
 Optional argument ACTION should have the form (FUNCTION . ALIST).
-FUNCTION is either a function or a list of functions.  Each such
-function is called with two arguments: the buffer to display and
-an alist.  It should either display the buffer and return the
-window, or return nil if unable to display the buffer.
+FUNCTION is either a function or a list of functions.
+ALIST is an arbitrary association list (alist).
+
+Each such FUNCTION should accept two arguments: the buffer to
+display and an alist.  Based on those arguments, it should either
+display the buffer and return the window, or return nil if unable
+to display the buffer.
 
 The `display-buffer' function builds a function list and an alist
-from `display-buffer-overriding-action', `display-buffer-alist',
-the ACTION argument, `display-buffer-base-action', and
-`display-buffer-fallback-action' (in that order).  Then it calls
-each function in the combined function list in turn, passing the
+by combining the functions and alists specified in
+`display-buffer-overriding-action', `display-buffer-alist', the
+ACTION argument, `display-buffer-base-action', and
+`display-buffer-fallback-action' (in order).  Then it calls each
+function in the combined function list in turn, passing the
 buffer as the first argument and the combined alist as the second
 argument, until one of the functions returns non-nil.
 
index 65dcf8450646007b5238ad1d7aa42e04a1686c24..539b95a18fd940136630a87d81682df7e0fdc862 100644 (file)
@@ -431,7 +431,7 @@ otherwise return the frame coordinates."
 (declare-function x-send-client-message "xselect.c"
                  (display dest from message-type format values))
 (declare-function x-get-selection-internal "xselect.c"
-                 (selection-symbol target-type &optional time-stamp))
+                 (selection-symbol target-type &optional time-stamp terminal))
 
 (defun x-dnd-version-from-flags (flags)
   "Return the version byte from the 32 bit FLAGS in an XDndEnter message"
index 544b964be3d9dfc45ec442fc119853beab50aa0b..e53588412740cdda7a133f12ed5822335a90f9ee 100644 (file)
@@ -1,3 +1,18 @@
+2012-02-24  Eli Zaretskii  <eliz@gnu.org>
+
+       Prevent endless re-spawning of cmdproxy.exe when some of its
+       parent directories have access limitations.
+
+       * cmdproxy.c (main): Bypass conversion of the file name in argv[0]
+       and our own module name to short 8+3 aliases, if the original file
+       names compare equal.  If GetShortPathName fails, compare the base
+       names of the two file names, and only re-spawn the command line if
+       the base-name comparison also fails.  (Bug#10674)
+
+2012-02-23  Dani Moncayo  <dmoncayo@gmail.com>  (tiny change)
+
+       * makefile.w32-in (maybe-copy-distfiles-SH): Fix typo.
+
 2012-02-06  Christoph Scholtes  <cschol2112@googlemail.com>
 
        * README.W32: Removed specific version information for libXpm
@@ -13,7 +28,7 @@
 
        * makefile.w32-in (maybe-copy-distfiles)
        (maybe-copy-distfiles-CMD, maybe-copy-distfiles-SH)
-       (create-tmp-dist-dir): Added to make --distfiles optional.
+       (create-tmp-dist-dir): Add to make --distfiles optional.
        (dist): Use create-tmp-dist-dir and maybe-copy-distfiles. (Bug#10261)
 
 2012-02-04  Eli Zaretskii  <eliz@gnu.org>
        A new ESC_USER_CFLAGS variable is written to config.settings.
        This variable has the same value as the escusercflags variable.
 
-       * gmake.defs, nmake.defs: Added the variable ESC_CFLAGS.  This
-       variable is identical to the CFLAGS variable except that it
+       * gmake.defs, nmake.defs: Added the variable ESC_CFLAGS.
+       This variable is identical to the CFLAGS variable except that it
        includes the new ESC_USER_CFLAGS variable instead of USER_CFLAGS.
 
        These changes, along with some changes to src/makefile.w32-in,
 
 2011-04-28  Eli Zaretskii  <eliz@gnu.org>
 
-       * gmake.defs (ARCH): Fix error message in case of unknown
-       architecture.
+       * gmake.defs (ARCH): Fix error message in case of unknown architecture.
 
 2011-04-27  Eli Zaretskii  <eliz@gnu.org>
 
 
        * configure.bat: Modified the code that parses the --cflags and
        --ldflags options to support parameters that include the =
-       character as long as they are enclosed in quotes.  This
-       functionality depends on command extensions.  Configure.bat now
+       character as long as they are enclosed in quotes.
+       This functionality depends on command extensions.  Configure.bat now
        attempts to enable command extensions and displays a warning
        message if they could not be enabled.  If configure.bat could
        not enable command extensions the old parsing code is used that
        Ignore return status.
 
        * configure.bat (dontCopy): Rename admin/unidata/Makefile to keep
-       it out of the way of Windows generated file.  Generate
-       admin/unidata/makefile.
+       it out of the way of Windows generated file.
+       Generate admin/unidata/makefile.
 
        * makefile.w32-in (unidatagen-nmake, unidatagen-clean-nmake)
        (unidatagen-CMD, unidatagen-clean-CMD, unidatagen-SH)
 
        * gmake.defs: Export XMFLAGS.
 
-       * makefile.w32-in (all-other-dirs-nmake, recompile-nmake): Don't
-       use $(XMFLAGS) for nmake, as it doesn't support parallelism.
+       * makefile.w32-in (all-other-dirs-nmake, recompile-nmake):
+       Don't use $(XMFLAGS) for nmake, as it doesn't support parallelism.
 
 2006-12-22  Eli Zaretskii  <eliz@gnu.org>
 
        * README: Update info about compilers.
 
        * makefile.w32-in: Use $(MAKETYPE) instead of $(SHELLTYPE) to
-       select correct rule for invoking make in another directory.  Amend
-       rules accordingly.
+       select correct rule for invoking make in another directory.
+       Amend rules accordingly.
        (clean): Delete $(COMPILER_TEMP_FILES) instead of *.pdb.
 
        * nmake.defs (EMACS_ICON_PATH): Delete definition.
 
 1999-01-31  Andrew Innes  <andrewi@gnu.org>
 
-       * addsection.c (ROUND_UP_DST_AND_ZERO): Renamed from
+       * addsection.c (ROUND_UP_DST_AND_ZERO): Rename from
        ROUND_UP_DST.  Zeroes the alignment slop.
        (copy_executable_and_add_section): Update the
        SizeOfHeaders field properly.
 1995-06-09  Geoff Voelker  <voelker@cs.washington.edu>
 
        * emacs.bat.in: Renamed from emacs.bat.
-       (emacs_dir): Renamed from emacs_path.
+       (emacs_dir): Rename from emacs_path.
        Definition removed.
 
        * addpm.c: New file.
 
 1995-04-09  Geoff Voelker  <voelker@cs.washington.edu>
 
-       * makefile.def (INSTALL_DIR): Changed to generic directory.
+       * makefile.def (INSTALL_DIR): Change to generic directory.
 
        * emacs.bat: Added arguments when emacs.exe invoked.
 
index 980dc5bacd8f4f331c52b3c99f89d02798fbe107..7c522440072f54ec9e998c33aebf73c5a51d6a30 100644 (file)
@@ -512,7 +512,7 @@ main (int argc, char ** argv)
   char modname[MAX_PATH];
   char path[MAX_PATH];
   char dir[MAX_PATH];
-
+  int status;
 
   interactive = TRUE;
 
@@ -551,20 +551,73 @@ main (int argc, char ** argv)
 
   /* Although Emacs always sets argv[0] to an absolute pathname, we
      might get run in other ways as well, so convert argv[0] to an
-     absolute name before comparing to the module name.  Don't get
-     caught out by mixed short and long names.  */
-  GetShortPathName (modname, modname, sizeof (modname));
+     absolute name before comparing to the module name.  */
   path[0] = '\0';
-  if (!SearchPath (NULL, argv[0], ".exe", sizeof (path), path, &progname)
-      || !GetShortPathName (path, path, sizeof (path))
-      || stricmp (modname, path) != 0)
+  /* The call to SearchPath will find argv[0] in the current
+     directory, append ".exe" to it if needed, and also canonicalize
+     it, to resolve references to ".", "..", etc.  */
+  status = SearchPath (NULL, argv[0], ".exe", sizeof (path), path,
+                                 &progname);
+  if (!(status > 0 && stricmp (modname, path) == 0))
     {
-      /* We are being used as a helper to run a DOS app; just pass
-        command line to DOS app without change.  */
-      /* TODO: fill in progname.  */
-      if (spawn (NULL, GetCommandLine (), dir, &rc))
-       return rc;
-      fail ("Could not run %s\n", GetCommandLine ());
+      if (status <= 0)
+       {
+         char *s;
+
+         /* Make sure we have argv[0] in path[], as the failed
+            SearchPath might not have copied it there.  */
+         strcpy (path, argv[0]);
+         /* argv[0] could include forward slashes; convert them all
+            to backslashes, for strrchr calls below to DTRT.  */
+         for (s = path; *s; s++)
+           if (*s == '/')
+             *s = '\\';
+       }
+      /* Perhaps MODNAME and PATH use mixed short and long file names.  */
+      if (!(GetShortPathName (modname, modname, sizeof (modname))
+           && GetShortPathName (path, path, sizeof (path))
+           && stricmp (modname, path) == 0))
+       {
+         /* Sometimes GetShortPathName fails because one or more
+            directories leading to argv[0] have issues with access
+            rights.  In that case, at least we can compare the
+            basenames.  Note: this disregards the improbable case of
+            invoking a program of the same name from another
+            directory, since the chances of that other executable to
+            be both our namesake and a 16-bit DOS application are nil.  */
+         char *p = strrchr (path, '\\');
+         char *q = strrchr (modname, '\\');
+         char *pdot, *qdot;
+
+         if (!p)
+           p = strchr (path, ':');
+         if (!p)
+           p = path;
+         else
+           p++;
+         if (!q)
+           q = strchr (modname, ':');
+         if (!q)
+           q = modname;
+         else
+           q++;
+
+         pdot = strrchr (p, '.');
+         if (!pdot || stricmp (pdot, ".exe") != 0)
+           pdot = p + strlen (p);
+         qdot = strrchr (q, '.');
+         if (!qdot || stricmp (qdot, ".exe") != 0)
+           qdot = q + strlen (q);
+         if (pdot - p != qdot - q || strnicmp (p, q, pdot - p) != 0)
+           {
+             /* We are being used as a helper to run a DOS app; just
+                pass command line to DOS app without change.  */
+             /* TODO: fill in progname.  */
+             if (spawn (NULL, GetCommandLine (), dir, &rc))
+               return rc;
+             fail ("Could not run %s\n", GetCommandLine ());
+           }
+       }
     }
 
   /* Process command line.  If running interactively (-c or /c not
index 30a5f83ea000604e8d58f58e7219070460f0fc97..f01ef4f98d1ddfaf41bc7b1220b249ef3c5110a7 100644 (file)
@@ -264,7 +264,7 @@ maybe-copy-distfiles-CMD: doit
 \r
 maybe-copy-distfiles-SH: doit\r
        @if [ ! $(ARGQUOTE)$(DIST_FILES)$(ARGQUOTE)=="" ] ; then \\r
-         $(CP_DIR) $(DIST_FILES) $(TMP_DIST_DIR)/bin\r
+         $(CP_DIR) $(DIST_FILES) $(TMP_DIST_DIR)/bin ; \\r
        fi\r
 \r
 create-tmp-dist-dir:\r
index fc8eab6d1dfbd4693fa7c5059e93229c2f818a29..7cd828733b102a853acb038830289b6af8f35205 100644 (file)
@@ -254,8 +254,8 @@ define pitx
   while ($i < $it->sp && $i < 4)
     set $e = $it->stack[$i]
     printf "stack[%d]: ", $i
-    pitmethod $e->method
-    printf "[%d]", $e->position.charpos
+    pitmethod $e.method
+    printf "[%d]", $e.position.charpos
     printf "\n"
     set $i = $i + 1
   end
@@ -1259,7 +1259,9 @@ end
 
 define xreload
   set $tagmask = (((long)1 << gdb_gctypebits) - 1)
-  set $valmask = gdb_use_lsb ? ~($tagmask) : ((long)1 << gdb_valbits) - 1
+  # The consing_since_gc business widens the 1 to EMACS_INT,
+  # a symbol not directly visible to GDB.
+  set $valmask = gdb_use_lsb ? ~($tagmask) : ((consing_since_gc - consing_since_gc + 1) << gdb_valbits) - 1
 end
 document xreload
   When starting Emacs a second time in the same gdb session under
index 79bcf192eb7edd3164a8f9a52b1c53af4d46a6b5..71ddf053dac40d861224982c0f1bcb8fc6b33253 100644 (file)
@@ -1,4 +1,4 @@
-2012-02-10  Paul Eggert  <eggert@cs.ucla.edu>
+2012-02-25  Paul Eggert  <eggert@cs.ucla.edu>
 
        Fix integer width and related bugs (Bug#9874).
        * alloc.c (pure_bytes_used_lisp, pure_bytes_used_non_lisp):
        rather than rolling our own approximation.
        (SCROLL_BAR_VEC_SIZE): Remove; not used.
 
+2012-02-25  Chong Yidong  <cyd@gnu.org>
+
+       * xselect.c (Fx_selection_exists_p): Doc fix.
+       (x_clipboard_manager_save_all): Print an informative message
+       before saving to clipboard manager.
+
+2012-02-24  Chong Yidong  <cyd@gnu.org>
+
+       * keyboard.c (process_special_events): Handle all X selection
+       requests in kbd_buffer, not just the next one (Bug#8869).
+
+2012-02-23  Chong Yidong  <cyd@gnu.org>
+
+       * xfns.c (Fx_create_frame): Avoid window-configuration-change-hook
+       call when setting menu-bar-lines and tool-bar-lines parameters.
+       (unwind_create_frame_1): New helper function.
+
+       * window.c (inhibit_window_configuration_change_hook): New var.
+       (run_window_configuration_change_hook): Obey it.
+       (syms_of_window): Initialize it.
+
+2012-02-22  Chong Yidong  <cyd@gnu.org>
+
+       * xterm.c (x_draw_image_relief): Add missing type check for
+       Vtool_bar_button_margin (Bug#10743).
+
+2012-02-21  Chong Yidong  <cyd@gnu.org>
+
+       * fileio.c (Vfile_name_handler_alist): Doc fix.
+
+       * buffer.c (Fget_file_buffer): Protect against invalid file
+       handler return value.
+
+2012-02-20  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * .gdbinit (xreload): Don't assume EMACS_INT fits in 'long'
+       when computing $valmask.
+
+       Fix crash due to non-contiguous EMACS_INT (Bug#10780).
+       * lisp.h (VALBITS): Move definition up, so that USE_LSB_TAG can use it.
+       (USE_LSB_TAG): Do not define if UINTPTR_MAX >> VALBITS == 0.
+       It's useless in that case, and it can cause problems on hosts
+       that allocate halves of EMACS_INT values separately.
+       Reported by Dan Horák.  Diagnosed by Andreas Schwab in
+       <http://debbugs.gnu.org/cgi/bugreport.cgi?bug=10780#30>.
+       * mem-limits.h (EXCEEDS_LISP_PTR): Define to 0 on hosts where
+       UINTPTR_MAX >> VALBITS == 0.  This is required by the above change;
+       it avoids undefined behavior on hosts where shifting right by more
+       than the word width has undefined behavior.
+
+2012-02-19  Chong Yidong  <cyd@gnu.org>
+
+       * fileio.c (Ffile_name_directory, Ffile_name_nondirectory)
+       (Funhandled_file_name_directory, Ffile_name_as_directory)
+       (Fdirectory_file_name, Fexpand_file_name)
+       (Fsubstitute_in_file_name): Protect against invalid file handler
+       return values (Bug#10845).
+
+2012-02-18  Eli Zaretskii  <eliz@gnu.org>
+
+       * .gdbinit (pitx): Fix incorrect references to fields of the
+       iterator stack.
+
+2012-02-17  Chong Yidong  <cyd@gnu.org>
+
+       * syntax.c (Fscan_lists): Doc fix (Bug#10833).
+
+2012-02-15  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * image.c (MAX_IMAGE_SIZE): Increase from 6.0 to 10.0; see
+       <http://lists.gnu.org/archive/html/emacs-devel/2012-02/msg00540.html>.
+
+2012-02-15  Chong Yidong  <cyd@gnu.org>
+
+       * eval.c (Fdefvar, Fdefconst): Doc fix; note that the variable is
+       marked as special.  Also, starting docstrings with * is obsolete.
+
+2012-02-13  Andreas Schwab  <schwab@linux-m68k.org>
+
+       * gnutls.c (emacs_gnutls_write): Fix last change.
+
+2012-02-13  Lars Ingebrigtsen  <larsi@gnus.org>
+
+       * gnutls.c (emacs_gnutls_write): Set errno appropriately for
+       send_process.
+
+2012-02-13  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * keymap.c (Fsingle_key_description): Handle char ranges.
+
+2012-02-12  Chong Yidong  <cyd@gnu.org>
+
+       * xdisp.c (handle_stop): Avoid assigning -1 to it->face_id here,
+       as that creates a dangerous corner case.
+
+       * window.c (Fdelete_window_internal): Invalidate the mouse
+       highlight (Bug#9904).
+
+2012-02-12  Glenn Morris  <rgm@gnu.org>
+
+       * xselect.c (Fx_own_selection_internal)
+       (Fx_get_selection_internal, Fx_disown_selection_internal)
+       (Fx_selection_owner_p, Fx_selection_exists_p): Doc fixes.
+       * nsselect.m (Fx_own_selection_internal)
+       (Fx_disown_selection_internal, Fx_selection_exists_p)
+       (Fx_selection_owner_p, Fx_get_selection_internal):
+       Sync docs and argument specs with the xselect.c versions.
+
+2012-02-11  Lars Ingebrigtsen  <larsi@gnus.org>
+
+       * gnutls.c (emacs_gnutls_write): Don't infloop if sendto fails.
+
+2012-02-11  Eli Zaretskii  <eliz@gnu.org>
+
+       * w32select.c (Fx_selection_exists_p): Sync doc string and
+       argument list with xselect.c.  (Bug#10783)
+
+       * w16select.c (Fx_selection_exists_p): Sync doc string and
+       argument list with xselect.c.  (Bug#10783)
+
 2012-02-10  Glenn Morris  <rgm@gnu.org>
 
        * fns.c (Fsecure_hash): Doc fix.
        conversion specifiers.  For example, use "...%"pI"d..." rather
        than "...%"pEd"...".
        (pEd): Remove.  All uses replaced with similar uses of pI.
-       * src/m/amdx86-64.h, src/m/ia64.h, src/m/ibms390x.h: Likewise.
+       * m/amdx86-64.h, m/ia64.h, m/ibms390x.h: Likewise.
        * alloc.c (check_pure_size): Don't overflow by converting size to int.
        * bidi.c (bidi_dump_cached_states): Use pI to avoid cast.
        * data.c (Fnumber_to_string): Use pI instead of if-then-else-abort.
        Without this change, on typical 64-bit hosts error ("...%d...", N)
        was used to print both 32- and 64-bit integers N, which relied on
        undefined behavior.
-       * lisp.h, src/m/amdx86-64.h, src/m/ia64.h, src/m/ibms390x.h (pEd):
-       New macro.
+       * lisp.h, m/amdx86-64.h, m/ia64.h, m/ibms390x.h (pEd): New macro.
        * lisp.h (error, verror): Mark as printf-like functions.
        * eval.c (verror): Use vsnprintf, not doprnt, to do the real work.
        Report overflow in size calculations when allocating printf buffer.
index 5baeb87793924d055d5e94600c350f5eb9675c24..10de7e53794f9684450ccdcdeca0a12eb8e7e64d 100644 (file)
 
 2002-12-30  Richard Dawe  <rich@phekda.freeserve.co.uk>
 
-       * src/config.in (!HAVE_SIZE_T): Fix order of arguments in
+       * config.in (!HAVE_SIZE_T): Fix order of arguments in
        type definition of size_t.
 
 2003-01-02  Steven Tamm  <steventamm@mac.com>
index e8bfd9643129871f498b54021926e162a0e74b56..2e5404779b18ff4b926917f398143b804a6855ac 100644 (file)
        * deps.mk (getloadavg.o): Remove; gnulib now does this.
        * lisp.h (getloadavg) [!defined HAVE_GETLOADAVG]: Remove; gnulib
        now does this.
-       * src/s/freebsd.h (HAVE_GETLOADAVG): Remove; gnulib now does this.
-       * src/s/netbsd.h (HAVE_GETLOADAVG): Likewise.
+       * s/freebsd.h (HAVE_GETLOADAVG): Remove; gnulib now does this.
+       * s/netbsd.h (HAVE_GETLOADAVG): Likewise.
        * config.in: Regenerate.
 
 2011-02-15  Eli Zaretskii  <eliz@gnu.org>
 
 2009-06-23  Jim Meyering  <meyering@redhat.com>
 
-       * src/ftfont.c (setup_otf_gstring, ftfont_shape_by_flt):
+       * ftfont.c (setup_otf_gstring, ftfont_shape_by_flt):
        Use xmalloc and xrealloc (not malloc and realloc), so subsequent heap
        pointer dereferences are guaranteed to be valid.
 
index 891c1ca081aa7d87c559a33c456e651f2216ca17..0952826e8c68c247a49b938d1cf50aba1138a9f1 100644 (file)
 
 1998-07-30  Paul Eggert  <eggert@twinsun.com>
 
-       * src/Makefile.in (widget.o, xfns.o, xmenu.o):
+       * Makefile.in (widget.o, xfns.o, xmenu.o):
        Prepend $(srcdir)/ to rule dependencies outside this dir.
 
 1998-07-29  Kenichi Handa  <handa@etl.go.jp>
        The new GNU C library strftime needs the underlying host's
        strftime for locale dependent formats.
 
-       * configure.in (AC_CHECK_FUNCS): Add strftime.
-       * src/config.in (HAVE_STRFTIME): New undef.
-       * src/editfns.c (emacs_strftime): New decl.
+       * config.in (HAVE_STRFTIME): New undef.
+       * editfns.c (emacs_strftime): New decl.
        (Fformat_time_string): Doc fix: %b, %h, %B, %a, %A, and %p depend on
        locale; don't use actual chars to describe %n and %t.
 
-       * src/Makefile.in (strftime.o):
-       * src/makefile.nt ($(BLD)\strftime.obj):
+       * Makefile.in (strftime.o):
+       * makefile.nt ($(BLD)\strftime.obj):
        No need to compile with -Dstrftime=emacs_strftime any more.
 
 1997-11-22  Richard Stallman  <rms@gnu.org>
index 22ae522523ac8237d57d7b911329dd2d21942bf0..acee3c4515850592c74a3735503812c857fd8d52 100644 (file)
@@ -272,7 +272,11 @@ See also `find-buffer-visiting'.  */)
      call the corresponding file handler.  */
   handler = Ffind_file_name_handler (filename, Qget_file_buffer);
   if (!NILP (handler))
-    return call2 (handler, Qget_file_buffer, filename);
+    {
+      Lisp_Object handled_buf = call2 (handler, Qget_file_buffer,
+                                      filename);
+      return BUFFERP (handled_buf) ? handled_buf : Qnil;
+    }
 
   for (tail = Vbuffer_alist; CONSP (tail); tail = XCDR (tail))
     {
index ed3c811f28a4d7207732d061de0f3622bd77c62d..7f3bf6a866faf20e27772882ee8e73b34cc2e834 100644 (file)
@@ -752,17 +752,15 @@ The return value is BASE-VARIABLE.  */)
 
 DEFUN ("defvar", Fdefvar, Sdefvar, 1, UNEVALLED, 0,
        doc: /* Define SYMBOL as a variable, and return SYMBOL.
-You are not required to define a variable in order to use it,
-but the definition can supply documentation and an initial value
-in a way that tags can recognize.
-
-INITVALUE is evaluated, and used to set SYMBOL, only if SYMBOL's value is void.
-If SYMBOL is buffer-local, its default value is what is set;
- buffer-local values are not affected.
-INITVALUE and DOCSTRING are optional.
-If DOCSTRING starts with *, this variable is identified as a user option.
- This means that M-x set-variable recognizes it.
- See also `user-variable-p'.
+You are not required to define a variable in order to use it, but
+defining it lets you supply an initial value and documentation, which
+can be referred to by the Emacs help facilities and other programming
+tools.  The `defvar' form also declares the variable as \"special\",
+so that it is always dynamically bound even if `lexical-binding' is t.
+
+The optional argument INITVALUE is evaluated, and used to set SYMBOL,
+only if SYMBOL's value is void.  If SYMBOL is buffer-local, its
+default value is what is set; buffer-local values are not affected.
 If INITVALUE is missing, SYMBOL's value is not set.
 
 If SYMBOL has a local binding, then this form affects the local
@@ -771,6 +769,13 @@ 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
 this respect.)
+
+The optional argument DOCSTRING is a documentation string for the
+variable.
+
+To define a user option, use `defcustom' instead of `defvar'.
+The function `user-variable-p' also identifies a variable as a user
+option if its DOCSTRING starts with *, but this behavior is obsolete.
 usage: (defvar SYMBOL &optional INITVALUE DOCSTRING)  */)
   (Lisp_Object args)
 {
@@ -845,15 +850,19 @@ usage: (defvar SYMBOL &optional INITVALUE DOCSTRING)  */)
 
 DEFUN ("defconst", Fdefconst, Sdefconst, 2, UNEVALLED, 0,
        doc: /* Define SYMBOL as a constant variable.
-The intent is that neither programs nor users should ever change this value.
-Always sets the value of SYMBOL to the result of evalling INITVALUE.
-If SYMBOL is buffer-local, its default value is what is set;
- buffer-local values are not affected.
-DOCSTRING is optional.
-
-If SYMBOL has a local binding, then this form sets the local binding's
-value.  However, you should normally not make local bindings for
-variables defined with this form.
+This declares that neither programs nor users should ever change the
+value.  This constancy is not actually enforced by Emacs Lisp, but
+SYMBOL is marked as a special variable so that it is never lexically
+bound.
+
+The `defconst' form always sets the value of SYMBOL to the result of
+evalling INITVALUE.  If SYMBOL is buffer-local, its default value is
+what is set; buffer-local values are not affected.  If SYMBOL has a
+local binding, then this form sets the local binding's value.
+However, you should normally not make local bindings for variables
+defined with this form.
+
+The optional DOCSTRING specifies the variable's documentation string.
 usage: (defconst SYMBOL INITVALUE [DOCSTRING])  */)
   (Lisp_Object args)
 {
index 5216135f000139d07ca25b2c086f8b1a5de830f7..b5a4aac6217136c5c4952f0ac3af413183266bab 100644 (file)
@@ -328,7 +328,11 @@ Given a Unix syntax file name, returns a string ending in slash.  */)
      call the corresponding file handler.  */
   handler = Ffind_file_name_handler (filename, Qfile_name_directory);
   if (!NILP (handler))
-    return call2 (handler, Qfile_name_directory, filename);
+    {
+      Lisp_Object handled_name = call2 (handler, Qfile_name_directory,
+                                       filename);
+      return STRINGP (handled_name) ? handled_name : Qnil;
+    }
 
   filename = FILE_SYSTEM_CASE (filename);
 #ifdef DOS_NT
@@ -397,7 +401,13 @@ or the entire name if it contains no slash.  */)
      call the corresponding file handler.  */
   handler = Ffind_file_name_handler (filename, Qfile_name_nondirectory);
   if (!NILP (handler))
-    return call2 (handler, Qfile_name_nondirectory, filename);
+    {
+      Lisp_Object handled_name = call2 (handler, Qfile_name_nondirectory,
+                                       filename);
+      if (STRINGP (handled_name))
+       return handled_name;
+      error ("Invalid handler in `file-name-handler-alist'");
+    }
 
   beg = SSDATA (filename);
   end = p = beg + SBYTES (filename);
@@ -434,7 +444,11 @@ get a current directory to run processes in.  */)
      call the corresponding file handler.  */
   handler = Ffind_file_name_handler (filename, Qunhandled_file_name_directory);
   if (!NILP (handler))
-    return call2 (handler, Qunhandled_file_name_directory, filename);
+    {
+      Lisp_Object handled_name = call2 (handler, Qunhandled_file_name_directory,
+                                       filename);
+      return STRINGP (handled_name) ? handled_name : Qnil;
+    }
 
   return Ffile_name_directory (filename);
 }
@@ -488,7 +502,13 @@ For a Unix-syntax file name, just appends a slash.  */)
      call the corresponding file handler.  */
   handler = Ffind_file_name_handler (file, Qfile_name_as_directory);
   if (!NILP (handler))
-    return call2 (handler, Qfile_name_as_directory, file);
+    {
+      Lisp_Object handled_name = call2 (handler, Qfile_name_as_directory,
+                                       file);
+      if (STRINGP (handled_name))
+       return handled_name;
+      error ("Invalid handler in `file-name-handler-alist'");
+    }
 
   buf = (char *) alloca (SBYTES (file) + 10);
   file_name_as_directory (buf, SSDATA (file));
@@ -547,7 +567,13 @@ In Unix-syntax, this function just removes the final slash.  */)
      call the corresponding file handler.  */
   handler = Ffind_file_name_handler (directory, Qdirectory_file_name);
   if (!NILP (handler))
-    return call2 (handler, Qdirectory_file_name, directory);
+    {
+      Lisp_Object handled_name = call2 (handler, Qdirectory_file_name,
+                                       directory);
+      if (STRINGP (handled_name))
+       return handled_name;
+      error ("Invalid handler in `file-name-handler-alist'");
+    }
 
   buf = (char *) alloca (SBYTES (directory) + 20);
   directory_file_name (SSDATA (directory), buf);
@@ -747,7 +773,7 @@ filesystem tree, not (expand-file-name ".."  dirname).  */)
   int is_escaped = 0;
 #endif /* DOS_NT */
   ptrdiff_t length;
-  Lisp_Object handler, result;
+  Lisp_Object handler, result, handled_name;
   int multibyte;
   Lisp_Object hdir;
 
@@ -757,7 +783,14 @@ filesystem tree, not (expand-file-name ".."  dirname).  */)
      call the corresponding file handler.  */
   handler = Ffind_file_name_handler (name, Qexpand_file_name);
   if (!NILP (handler))
-    return call3 (handler, Qexpand_file_name, name, default_directory);
+    {
+      handled_name = call3 (handler, Qexpand_file_name,
+                           name, default_directory);
+      if (STRINGP (handled_name))
+       return handled_name;
+      error ("Invalid handler in `file-name-handler-alist'");
+    }
+
 
   /* Use the buffer's default-directory if DEFAULT_DIRECTORY is omitted.  */
   if (NILP (default_directory))
@@ -783,7 +816,13 @@ filesystem tree, not (expand-file-name ".."  dirname).  */)
     {
       handler = Ffind_file_name_handler (default_directory, Qexpand_file_name);
       if (!NILP (handler))
-       return call3 (handler, Qexpand_file_name, name, default_directory);
+       {
+         handled_name = call3 (handler, Qexpand_file_name,
+                               name, default_directory);
+         if (STRINGP (handled_name))
+           return handled_name;
+         error ("Invalid handler in `file-name-handler-alist'");
+       }
     }
 
   {
@@ -1284,7 +1323,13 @@ filesystem tree, not (expand-file-name ".."  dirname).  */)
      to be expanded again. */
   handler = Ffind_file_name_handler (result, Qexpand_file_name);
   if (!NILP (handler))
-    return call3 (handler, Qexpand_file_name, result, default_directory);
+    {
+      handled_name = call3 (handler, Qexpand_file_name,
+                           result, default_directory);
+      if (STRINGP (handled_name))
+       return handled_name;
+      error ("Invalid handler in `file-name-handler-alist'");
+    }
 
   return result;
 }
@@ -1537,7 +1582,13 @@ those `/' is discarded.  */)
      call the corresponding file handler.  */
   handler = Ffind_file_name_handler (filename, Qsubstitute_in_file_name);
   if (!NILP (handler))
-    return call2 (handler, Qsubstitute_in_file_name, filename);
+    {
+      Lisp_Object handled_name = call2 (handler, Qsubstitute_in_file_name,
+                                       filename);
+      if (STRINGP (handled_name))
+       return handled_name;
+      error ("Invalid handler in `file-name-handler-alist'");
+    }
 
   /* Always work on a copy of the string, in case GC happens during
      decode of environment variables, causing the original Lisp_String
@@ -5596,18 +5647,25 @@ of file names regardless of the current language environment.  */);
        make_pure_c_string ("Cannot set file date"));
 
   DEFVAR_LISP ("file-name-handler-alist", Vfile_name_handler_alist,
-              doc: /* *Alist of elements (REGEXP . HANDLER) for file names handled specially.
-If a file name matches REGEXP, then all I/O on that file is done by calling
-HANDLER.
-
-The first argument given to HANDLER is the name of the I/O primitive
-to be handled; the remaining arguments are the arguments that were
-passed to that primitive.  For example, if you do
-    (file-exists-p FILENAME)
-and FILENAME is handled by HANDLER, then HANDLER is called like this:
-    (funcall HANDLER 'file-exists-p FILENAME)
-The function `find-file-name-handler' checks this list for a handler
-for its argument.  */);
+              doc: /* Alist of elements (REGEXP . HANDLER) for file names handled specially.
+If a file name matches REGEXP, all I/O on that file is done by calling
+HANDLER.  If a file name matches more than one handler, the handler
+whose match starts last in the file name gets precedence.  The
+function `find-file-name-handler' checks this list for a handler for
+its argument.
+
+HANDLER should be a function.  The first argument given to it is the
+name of the I/O primitive to be handled; the remaining arguments are
+the arguments that were passed to that primitive.  For example, if you
+do (file-exists-p FILENAME) and FILENAME is handled by HANDLER, then
+HANDLER is called like this:
+
+  (funcall HANDLER 'file-exists-p FILENAME)
+
+Note that HANDLER must be able to handle all I/O primitives; if it has
+nothing special to do for a primitive, it should reinvoke the
+primitive to handle the operation \"the usual way\".
+See Info node `(elisp)Magic File Names' for more details.  */);
   Vfile_name_handler_alist = Qnil;
 
   DEFVAR_LISP ("set-auto-coding-function",
index a4eeb50bd743f71bf71e1fe2d868a2d5edf25831..99fc5c10e2b6009f81f6d5a12aba6bd98a323382 100644 (file)
@@ -345,15 +345,16 @@ emacs_gnutls_write (struct Lisp_Process *proc, const char *buf, ptrdiff_t nbyte)
   ptrdiff_t bytes_written;
   gnutls_session_t state = proc->gnutls_state;
 
-  if (proc->gnutls_initstage != GNUTLS_STAGE_READY) {
+  if (proc->gnutls_initstage != GNUTLS_STAGE_READY)
+    {
 #ifdef EWOULDBLOCK
-    errno = EWOULDBLOCK;
+      errno = EWOULDBLOCK;
 #endif
 #ifdef EAGAIN
-    errno = EAGAIN;
+      errno = EAGAIN;
 #endif
-    return 0;
-  }
+      return 0;
+    }
 
   bytes_written = 0;
 
@@ -363,10 +364,24 @@ emacs_gnutls_write (struct Lisp_Process *proc, const char *buf, ptrdiff_t nbyte)
 
       if (rtnval < 0)
        {
-         if (rtnval == GNUTLS_E_AGAIN || rtnval == GNUTLS_E_INTERRUPTED)
+         if (rtnval == GNUTLS_E_INTERRUPTED)
            continue;
          else
-           break;
+           {
+             /* If we get GNUTLS_E_AGAIN, then set errno
+                appropriately so that send_process retries the
+                correct way instead of erroring out. */
+             if (rtnval == GNUTLS_E_AGAIN)
+               {
+#ifdef EWOULDBLOCK
+                 errno = EWOULDBLOCK;
+#endif
+#ifdef EAGAIN
+                 errno = EAGAIN;
+#endif
+               }
+             break;
+           }
        }
 
       buf += rtnval;
index d5e890d7207b82e345738ce4e20468d756c59f4b..433cd8aa412c615476c7feeca37f00f156e12ca7 100644 (file)
@@ -1741,8 +1741,9 @@ xg_toggle_notify_cb (GObject *gobject, GParamSpec *arg1, gpointer user_data)
    PROMPT is a prompt to show to the user.  May not be NULL.
    DEFAULT_FILENAME is a default selection to be displayed.  May be NULL.
    If MUSTMATCH_P is non-zero, the returned file name must be an existing
-   file.  *FUNC is set to a function that can be used to retrieve the
-   selected file name from the returned widget.
+   file.  (Actually, this only has cosmetic effects, the user can
+   still enter a non-existing file.)  *FUNC is set to a function that
+   can be used to retrieve the selected file name from the returned widget.
 
    Returns the created widget.  */
 
index c8d6be3a35458bffc4c779525ebb9a7f3e3eec28..a3b64b7499759bd81ca5b164bc5041f1fafe11f0 100644 (file)
@@ -975,7 +975,7 @@ or omitted means use the selected frame.  */)
 
 static void free_image (struct frame *f, struct image *img);
 
-#define MAX_IMAGE_SIZE 6.0
+#define MAX_IMAGE_SIZE 10.0
 /* Allocate and return a new image structure for image specification
    SPEC.  SPEC has a hash value of HASH.  */
 
index 09743be6c3c3cf45b3d7ed726f69bca28aea7783..eb9152f2c6cabc9d04c5779fd43499a7ef0d7c22 100644 (file)
@@ -4154,29 +4154,55 @@ kbd_buffer_get_event (KBOARD **kbp,
 static void
 process_special_events (void)
 {
-  while (kbd_fetch_ptr != kbd_store_ptr)
-    {
-      struct input_event *event;
+  struct input_event *event;
 
-      event = ((kbd_fetch_ptr < kbd_buffer + KBD_BUFFER_SIZE)
-              ? kbd_fetch_ptr
-              : kbd_buffer);
-
-      last_event_timestamp = event->timestamp;
+  for (event = kbd_fetch_ptr; event != kbd_store_ptr; ++event)
+    {
+      if (event == kbd_buffer + KBD_BUFFER_SIZE)
+       {
+         event = kbd_buffer;
+         if (event == kbd_store_ptr)
+           break;
+       }
 
-      /* These two kinds of events get special handling
-        and don't actually appear to the command loop.  */
+      /* If we find a stored X selection request, handle it now.  */
       if (event->kind == SELECTION_REQUEST_EVENT
          || event->kind == SELECTION_CLEAR_EVENT)
        {
 #ifdef HAVE_X11
-         struct input_event copy;
 
-         /* Remove it from the buffer before processing it,
-            since otherwise swallow_events called recursively could see it
-            and process it again.  */
-         copy = *event;
-         kbd_fetch_ptr = event + 1;
+         /* Remove the event from the fifo buffer before processing;
+            otherwise swallow_events called recursively could see it
+            and process it again.  To do this, we move the events
+            between kbd_fetch_ptr and EVENT one slot to the right,
+            cyclically.  */
+
+         struct input_event copy = *event;
+         struct input_event *beg
+           = (kbd_fetch_ptr == kbd_buffer + KBD_BUFFER_SIZE)
+           ? kbd_buffer : kbd_fetch_ptr;
+
+         if (event > beg)
+           memmove (beg + 1, beg, (event - beg) * sizeof (struct input_event));
+         else if (event < beg)
+           {
+             if (event > kbd_buffer)
+               memmove (kbd_buffer + 1, kbd_buffer,
+                        (event - kbd_buffer) * sizeof (struct input_event));
+             *kbd_buffer = *(kbd_buffer + KBD_BUFFER_SIZE - 1);
+             if (beg < kbd_buffer + KBD_BUFFER_SIZE - 1)
+               memmove (beg + 1, beg,
+                        (kbd_buffer + KBD_BUFFER_SIZE - 1 - beg)
+                        * sizeof (struct input_event));
+           }
+
+         if (kbd_fetch_ptr == kbd_buffer + KBD_BUFFER_SIZE)
+           kbd_fetch_ptr = kbd_buffer + 1;
+         else
+           kbd_fetch_ptr++;
+
+         /* X wants last_event_timestamp for selection ownership.  */
+         last_event_timestamp = copy.timestamp;
          input_pending = readable_events (0);
          x_handle_selection_event (&copy);
 #else
@@ -4185,8 +4211,6 @@ process_special_events (void)
          abort ();
 #endif
        }
-      else
-       break;
     }
 }
 
index cc4419a4d2f0425ded270887c64a8aeb0f012e14..328e6d8ed23f821566d8922fecf0c49dafbaf9fb 100644 (file)
@@ -2288,9 +2288,15 @@ around function keys and event symbols.  */)
   if (CONSP (key) && lucid_event_type_list_p (key))
     key = Fevent_convert_list (key);
 
+  if (CONSP (key) && INTEGERP (XCAR (key)) && INTEGERP (XCDR (key)))
+    /* An interval from a map-char-table.  */
+    return concat3 (Fsingle_key_description (XCAR (key), no_angles),
+                   build_string (".."),
+                   Fsingle_key_description (XCDR (key), no_angles));
+
   key = EVENT_HEAD (key);
 
-  if (INTEGERP (key))          /* Normal character */
+  if (INTEGERP (key))          /* Normal character */
     {
       char tem[KEY_DESCRIPTION_SIZE], *p;
 
@@ -2298,7 +2304,7 @@ around function keys and event symbols.  */)
       *p = 0;
       return make_specified_string (tem, -1, p - tem, 1);
     }
-  else if (SYMBOLP (key))      /* Function key or event-symbol */
+  else if (SYMBOLP (key))      /* Function key or event-symbol */
     {
       if (NILP (no_angles))
        {
index cc82edb2f5faac551642584c91314e631b61a40a..8c274cddb56c38969d491dac8c518d8d0b6af098 100644 (file)
@@ -168,6 +168,10 @@ extern int suppress_checking EXTERNALLY_VISIBLE;
 #define GCTYPEBITS 3
 #endif
 
+#ifndef VALBITS
+#define VALBITS (BITS_PER_EMACS_INT - GCTYPEBITS)
+#endif
+
 #ifndef NO_DECL_ALIGN
 # ifndef DECL_ALIGN
 #  if HAVE_ATTRIBUTE_ALIGNED
@@ -191,7 +195,28 @@ extern int suppress_checking EXTERNALLY_VISIBLE;
      || defined DARWIN_OS || defined __sun)
 /* We also need to be able to specify mult-of-8 alignment on static vars.  */
 # if defined DECL_ALIGN
-#  define USE_LSB_TAG
+/* On hosts where VALBITS is greater than the pointer width in bits,
+   USE_LSB_TAG is:
+
+    a. unnecessary, because the top bits of an EMACS_INT are unused,
+
+    b. slower, because it typically requires extra masking, and
+
+    c. harmful, because it can create Lisp_Object values that are so scrambled
+       that mark_maybe_object cannot decipher them.  mark_maybe_object assumes
+       that EMACS_INT values are contiguous, but a host where EMACS_INT is
+       wider than a pointer might allocate the top half of an EMACS_INT in
+       (say) a 32-bit word on the stack, putting the bottom half in a 32-bit
+       register that is saved elsewhere in a jmp_buf.  When this happens,
+       since USE_LSB_TAG is not defined the bottom half alone is a valid
+       pointer that mark_maybe_pointer can follow; but if USE_LSB_TAG were
+       defined, the bottom half would not be a valid pointer and neither
+       mark_maybe_object nor mark_maybe_pointer would follow it.
+
+   So, define USE_LSB_TAG only on hosts where it might be useful.  */
+#  if UINTPTR_MAX >> VALBITS != 0
+#   define USE_LSB_TAG
+#  endif
 # endif
 #endif
 
@@ -309,11 +334,6 @@ enum Lisp_Fwd_Type
     Lisp_Fwd_Kboard_Obj,       /* Fwd to a Lisp_Object field of kboards.  */
   };
 
-/* These values are overridden by the m- file on some machines.  */
-#ifndef VALBITS
-#define VALBITS (BITS_PER_EMACS_INT - GCTYPEBITS)
-#endif
-
 #ifdef USE_LISP_UNION_TYPE
 
 #ifndef WORDS_BIGENDIAN
index 472e591b38d4ea6d9735cdbd283a4c3535eae2aa..244592a9768ebb129c427af99f1205a4ed817f10 100644 (file)
@@ -34,7 +34,7 @@ extern int etext;
 #endif
 
 extern char *start_of_data (void);
-#if defined USE_LSB_TAG
+#if defined USE_LSB_TAG || UINTPTR_MAX >> VALBITS == 0
 #define EXCEEDS_LISP_PTR(ptr) 0
 #elif defined DATA_SEG_BITS
 #define EXCEEDS_LISP_PTR(ptr) \
index 5741236c987ea75ed1a8b19ee1aa65be52755430..6352d882b7a274eae5dd30fef10cbe3c4f17ba3e 100644 (file)
@@ -336,12 +336,18 @@ ns_string_to_pasteboard (id pb, Lisp_Object str)
 
 
 DEFUN ("x-own-selection-internal", Fx_own_selection_internal,
-       Sx_own_selection_internal, 2, 2, 0,
-       doc: /* Assert a selection.
-SELECTION-NAME is a symbol, typically `PRIMARY', `SECONDARY', or `CLIPBOARD'.
+       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.)
 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_name, Lisp_Object selection_value)
+anything that the functions on `selection-converter-alist' know about.
+
+FRAME should be a frame that should own the selection.  If omitted or
+nil, it defaults to the selected frame.
+
+On Nextstep, FRAME is unused.  */)
+     (Lisp_Object selection, Lisp_Object value, Lisp_Object frame)
 {
   id pb;
   Lisp_Object old_value, new_value;
@@ -351,15 +357,15 @@ anything that the functions on `selection-converter-alist' know about.  */)
 
 
   check_ns ();
-  CHECK_SYMBOL (selection_name);
-  if (NILP (selection_value))
-      error ("selection-value may not be nil.");
-  pb = ns_symbol_to_pb (selection_name);
+  CHECK_SYMBOL (selection);
+  if (NILP (value))
+      error ("selection value may not be nil.");
+  pb = ns_symbol_to_pb (selection);
   if (pb == nil) return Qnil;
 
   ns_declare_pasteboard (pb);
-  old_value = assq_no_quit (selection_name, Vselection_alist);
-  new_value = Fcons (selection_name, Fcons (selection_value, Qnil));
+  old_value = assq_no_quit (selection, Vselection_alist);
+  new_value = Fcons (selection, Fcons (value, Qnil));
 
   if (NILP (old_value))
     Vselection_alist = Fcons (new_value, Vselection_alist);
@@ -369,7 +375,7 @@ anything that the functions on `selection-converter-alist' know about.  */)
   /* We only support copy of text.  */
   type = NSStringPboardType;
   target_symbol = ns_string_to_symbol (type);
-  data = ns_get_local_selection (selection_name, target_symbol);
+  data = ns_get_local_selection (selection, target_symbol);
   if (!NILP (data))
     {
       if (STRINGP (data))
@@ -380,37 +386,53 @@ anything that the functions on `selection-converter-alist' know about.  */)
   if (!EQ (Vns_sent_selection_hooks, Qunbound))
     {
       for (rest = Vns_sent_selection_hooks; CONSP (rest); rest = Fcdr (rest))
-        call3 (Fcar (rest), selection_name, target_symbol, successful_p);
+        call3 (Fcar (rest), selection, target_symbol, successful_p);
     }
   
-  return selection_value;
+  return value;
 }
 
 
 DEFUN ("x-disown-selection-internal", Fx_disown_selection_internal,
-       Sx_disown_selection_internal, 1, 2, 0,
-       doc: /* If we own the selection SELECTION, disown it.  */)
-     (Lisp_Object selection_name, Lisp_Object time)
+       Sx_disown_selection_internal, 1, 3, 0,
+       doc: /* If we own the selection SELECTION, disown it.
+Disowning it means there is no such selection.
+
+Sets the last-change time for the selection to TIME-OBJECT (by default
+the time of the last event).
+
+TERMINAL should be a terminal object or a frame specifying the X
+server to query.  If omitted or nil, that stands for the selected
+frame's display, or the first available X display.
+
+On Nextstep, the TIME-OBJECT and TERMINAL arguments are unused.
+On MS-DOS, all this does is return non-nil if we own the selection.  */)
+  (Lisp_Object selection, Lisp_Object time_object, Lisp_Object terminal)
 {
   id pb;
   check_ns ();
-  CHECK_SYMBOL (selection_name);
-  if (NILP (assq_no_quit (selection_name, Vselection_alist))) return Qnil;
+  CHECK_SYMBOL (selection);
+  if (NILP (assq_no_quit (selection, Vselection_alist))) return Qnil;
 
-  pb = ns_symbol_to_pb (selection_name);
+  pb = ns_symbol_to_pb (selection);
   if (pb != nil) ns_undeclare_pasteboard (pb);
   return Qt;
 }
 
 
 DEFUN ("x-selection-exists-p", Fx_selection_exists_p, Sx_selection_exists_p,
-       0, 1, 0, doc: /* Whether there is an owner for the given 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.)
-For convenience, the symbol nil is the same as `PRIMARY',
-and t is the same as `SECONDARY'.)  */)
-     (Lisp_Object selection)
+       0, 2, 0, doc: /* Whether there is an owner for the given X selection.
+SELECTION should be the name of the selection in question, typically
+one of the symbols `PRIMARY', `SECONDARY', or `CLIPBOARD'.  (X expects
+these literal upper-case names.)  The symbol nil is the same as
+`PRIMARY', and t is the same as `SECONDARY'.
+
+TERMINAL should be a terminal object or a frame specifying the X
+server to query.  If omitted or nil, that stands for the selected
+frame's display, or the first available X display.
+
+On Nextstep, TERMINAL is unused.  */)
+     (Lisp_Object selection, Lisp_Object terminal)
 {
   id pb;
   NSArray *types;
@@ -428,14 +450,20 @@ and t is the same as `SECONDARY'.)  */)
 
 
 DEFUN ("x-selection-owner-p", Fx_selection_owner_p, Sx_selection_owner_p,
-       0, 1, 0,
-       doc: /* Whether the current Emacs process owns the given selection.
+       0, 2, 0,
+       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.)
+\(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)
+and t is the same as `SECONDARY'.
+
+TERMINAL should be a terminal object or a frame specifying the X
+server to query.  If omitted or nil, that stands for the selected
+frame's display, or the first available X display.
+
+On Nextstep, TERMINAL is unused.  */)
+     (Lisp_Object selection, Lisp_Object terminal)
 {
   check_ns ();
   CHECK_SYMBOL (selection);
@@ -446,12 +474,22 @@ and t is the same as `SECONDARY'.)  */)
 
 
 DEFUN ("x-get-selection-internal", Fx_get_selection_internal,
-       Sx_get_selection_internal, 2, 2, 0,
-       doc: /* Return text selected from some pasteboard.
-SELECTION is a symbol, typically `PRIMARY', `SECONDARY', or `CLIPBOARD'.
-\(Those are literal upper-case symbol names.)
-TYPE is the type of data desired, typically `STRING'.  */)
-     (Lisp_Object selection_name, Lisp_Object target_type)
+       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.)
+TARGET-TYPE is the type of data desired, typically `STRING'.
+
+TIME-STAMP is the time to use in the XConvertSelection call for foreign
+selections.  If omitted, defaults to the time for the last event.
+
+TERMINAL should be a terminal object or a frame specifying the X
+server to query.  If omitted or nil, that stands for the selected
+frame's display, or the first available X display.
+
+On Nextstep, TIME-STAMP and TERMINAL are unused.  */)
+     (Lisp_Object selection_name, Lisp_Object target_type,
+      Lisp_Object time_stamp, Lisp_Object terminal)
 {
   Lisp_Object val;
 
index a802360582b30909124ac8d2da2495ffd1fa6437..70e66ba18716a631f1d14d5360924b267f20a645 100644 (file)
@@ -2846,18 +2846,23 @@ scan_lists (register EMACS_INT from, EMACS_INT count, EMACS_INT depth, int sexpf
 
 DEFUN ("scan-lists", Fscan_lists, Sscan_lists, 3, 3, 0,
        doc: /* Scan from character number FROM by COUNT lists.
-Returns the character number of the position thus found.
+Scan forward if COUNT is positive, backward if COUNT is negative.
+Return the character number of the position thus found.
+
+A \"list", in this context, refers to a balanced parenthetical
+grouping, as determined by the syntax table.
 
-If DEPTH is nonzero, paren depth begins counting from that value,
-only places where the depth in parentheses becomes zero
-are candidates for stopping; COUNT such places are counted.
-Thus, a positive value for DEPTH means go out levels.
+If DEPTH is nonzero, treat that as the nesting depth of the starting
+point (i.e. the starting point is DEPTH parentheses deep).  This
+function scans over parentheses until the depth goes to zero COUNT
+times.  Hence, positive DEPTH moves out that number of levels of
+parentheses, while negative DEPTH moves to a deeper level.
 
 Comments are ignored if `parse-sexp-ignore-comments' is non-nil.
 
-If the beginning or end of (the accessible part of) the buffer is reached
-and the depth is wrong, an error is signaled.
-If the depth is right but the count is not used up, nil is returned.  */)
+If we reach the beginning or end of the accessible part of the buffer
+before we have scanned over COUNT lists, return nil if the depth at
+that point is zero, and signal a error if the depth is nonzero.  */)
   (Lisp_Object from, Lisp_Object count, Lisp_Object depth)
 {
   CHECK_NUMBER (from);
index 185bf252895350a3df87691a8e3f1a044ad74ad3..03f63bedf0ddb97d34f4ccba4996f360ae5c269d 100644 (file)
@@ -637,14 +637,17 @@ DEFUN ("w16-get-clipboard-data", Fw16_get_clipboard_data, Sw16_get_clipboard_dat
 /* Support checking for a clipboard selection. */
 
 DEFUN ("x-selection-exists-p", Fx_selection_exists_p, Sx_selection_exists_p,
-       0, 1, 0,
-       doc: /* Whether there is an owner for 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.)
-For convenience, the symbol nil is the same as `PRIMARY',
-and t is the same as `SECONDARY'.  */)
-  (Lisp_Object selection)
+       0, 2, 0,
+       doc: /* Whether there is an owner for the given X selection.
+SELECTION should be the name of the selection in question, typically
+one of the symbols `PRIMARY', `SECONDARY', or `CLIPBOARD'.  (X expects
+these literal upper-case names.)  The symbol nil is the same as
+`PRIMARY', and t is the same as `SECONDARY'.
+
+TERMINAL should be a terminal object or a frame specifying the X
+server to query.  If omitted or nil, that stands for the selected
+frame's display, or the first available X display.  */)
+  (Lisp_Object selection, Lisp_Object terminal)
 {
   CHECK_SYMBOL (selection);
 
index c60376b3a9174133254608f6a867d21546c445b4..699c72b71a85761829a7632c6f99dae0389c051f 100644 (file)
@@ -1009,14 +1009,17 @@ DEFUN ("w32-get-clipboard-data", Fw32_get_clipboard_data,
 /* Support checking for a clipboard selection. */
 
 DEFUN ("x-selection-exists-p", Fx_selection_exists_p, Sx_selection_exists_p,
-       0, 1, 0,
-       doc: /* Whether there is an owner for 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.)
-For convenience, the symbol nil is the same as `PRIMARY',
-and t is the same as `SECONDARY'.  */)
-  (Lisp_Object selection)
+       0, 2, 0,
+       doc: /* Whether there is an owner for the given X selection.
+SELECTION should be the name of the selection in question, typically
+one of the symbols `PRIMARY', `SECONDARY', or `CLIPBOARD'.  (X expects
+these literal upper-case names.)  The symbol nil is the same as
+`PRIMARY', and t is the same as `SECONDARY'.
+
+TERMINAL should be a terminal object or a frame specifying the X
+server to query.  If omitted or nil, that stands for the selected
+frame's display, or the first available X display.  */)
+  (Lisp_Object selection, Lisp_Object terminal)
 {
   CHECK_SYMBOL (selection);
 
index a0b11e0e320ab96b674f68a785d9e5ddfad8b0ad..af70890d4e43c489011405d0d52fb792fefb27dd 100644 (file)
@@ -122,6 +122,9 @@ static int window_initialized;
 /* Hook to run when window config changes.  */
 static Lisp_Object Qwindow_configuration_change_hook;
 
+/* If non-nil, run_window_configuration_change_hook does nothing.  */
+Lisp_Object inhibit_window_configuration_change_hook;
+
 /* Used by the function window_scroll_pixel_based */
 static int window_scroll_pixel_based_preserve_x;
 static int window_scroll_pixel_based_preserve_y;
@@ -2895,7 +2898,7 @@ run_window_configuration_change_hook (struct frame *f)
     = Fdefault_value (Qwindow_configuration_change_hook);
   XSETFRAME (frame, f);
 
-  if (NILP (Vrun_hooks))
+  if (NILP (Vrun_hooks) || !NILP (inhibit_window_configuration_change_hook))
     return;
 
   /* Use the right buffer.  Matters when running the local hooks.  */
@@ -3887,10 +3890,18 @@ Signal an error when WINDOW is the only window on its frame.  */)
       && EQ (r->new_total, (horflag ? r->total_cols : r->total_lines)))
     /* We can delete WINDOW now.  */
     {
+      Mouse_HLInfo *hlinfo;
+
       /* Block input.  */
       BLOCK_INPUT;
       window_resize_apply (p, horflag);
 
+      /* If this window is referred to by the dpyinfo's mouse
+        highlight, invalidate that slot to be safe (Bug#9904).  */
+      hlinfo = MOUSE_HL_INFO (XFRAME (w->frame));
+      if (EQ (hlinfo->mouse_face_window, window))
+       hlinfo->mouse_face_window = Qnil;
+
       windows_or_buffers_changed++;
       Vwindow_list = Qnil;
       FRAME_WINDOW_SIZES_CHANGED (f) = 1;
@@ -6518,6 +6529,8 @@ syms_of_window (void)
   window_scroll_preserve_hpos = -1;
   window_scroll_preserve_vpos = -1;
 
+  inhibit_window_configuration_change_hook = Qnil;
+
   DEFVAR_LISP ("temp-buffer-show-function", Vtemp_buffer_show_function,
               doc: /* Non-nil means call as function to display a help buffer.
 The function is called with one argument, the buffer to be displayed.
index ea127ca95a80ed51f2713cdde1129f5037b4b731..f4a5f52b9a58c0bd592a62ea97579108ef6335a9 100644 (file)
@@ -810,6 +810,10 @@ extern Lisp_Object Vmouse_window;
 
 extern Lisp_Object Vmouse_event;
 
+/* If non-nil, run_window_configuration_change_hook does nothing.  */
+
+extern Lisp_Object inhibit_window_configuration_change_hook;
+
 EXFUN (Fnext_window, 3);
 EXFUN (Fselect_window, 2);
 EXFUN (Fset_window_buffer, 3);
index 3dac7ae011e55834f3ab7587232d4993bfdfdf49..caf977633d85203ed43f685c962bce2e8a93597a 100644 (file)
@@ -2753,9 +2753,12 @@ init_iterator (struct it *it, struct window *w,
   if (charpos >= BUF_BEG (current_buffer))
     {
       it->end_charpos = ZV;
-      it->face_id = -1;
       IT_CHARPOS (*it) = charpos;
 
+      /* We will rely on `reseat' to set this up properly, via
+        handle_face_prop.  */
+      it->face_id = it->base_face_id;
+
       /* Compute byte position if not specified.  */
       if (bytepos < charpos)
        IT_BYTEPOS (*it) = CHAR_TO_BYTE (charpos);
index b0cef7221f87c0f8cf6e02e85e725c43c81f882f..4cf4a059a67b932db2d0371a0999f1b2d6385a44 100644 (file)
@@ -2949,6 +2949,12 @@ unwind_create_frame (Lisp_Object frame)
   return Qnil;
 }
 
+static Lisp_Object
+unwind_create_frame_1 (Lisp_Object val)
+{
+  inhibit_window_configuration_change_hook = val;
+  return Qnil;
+}
 
 static void
 x_default_font_parameter (struct frame *f, Lisp_Object parms)
@@ -3321,17 +3327,31 @@ This function is an internal primitive--use `make-frame' instead.  */)
      happen.  */
   init_frame_faces (f);
 
-  /* The X resources controlling the menu-bar and tool-bar are
-     processed specially at startup, and reflected in the mode
-     variables; ignore them here.  */
-  x_default_parameter (f, parms, Qmenu_bar_lines,
-                      NILP (Vmenu_bar_mode)
-                      ? make_number (0) : make_number (1),
-                      NULL, NULL, RES_TYPE_NUMBER);
-  x_default_parameter (f, parms, Qtool_bar_lines,
-                      NILP (Vtool_bar_mode)
-                      ? make_number (0) : make_number (1),
-                      NULL, NULL, RES_TYPE_NUMBER);
+  /* Set the menu-bar-lines and tool-bar-lines parameters.  We don't
+     look up the X resources controlling the menu-bar and tool-bar
+     here; they are processed specially at startup, and reflected in
+     the values of the mode variables.
+
+     Avoid calling window-configuration-change-hook; otherwise we
+     could get an infloop in next_frame since the frame is not yet in
+     Vframe_list.  */
+  {
+    ptrdiff_t count2 = SPECPDL_INDEX ();
+    record_unwind_protect (unwind_create_frame_1,
+                          inhibit_window_configuration_change_hook);
+    inhibit_window_configuration_change_hook = Qt;
+
+    x_default_parameter (f, parms, Qmenu_bar_lines,
+                        NILP (Vmenu_bar_mode)
+                        ? make_number (0) : make_number (1),
+                        NULL, NULL, RES_TYPE_NUMBER);
+    x_default_parameter (f, parms, Qtool_bar_lines,
+                        NILP (Vtool_bar_mode)
+                        ? make_number (0) : make_number (1),
+                        NULL, NULL, RES_TYPE_NUMBER);
+
+    unbind_to (count2, Qnil);
+  }
 
   x_default_parameter (f, parms, Qbuffer_predicate, Qnil,
                       "bufferPredicate", "BufferPredicate",
index f7b65809443c92cd9a597b4146cf14d6d35d388b..290f4d7eb4d23d28c3d760faef90e88d46f7d957 100644 (file)
@@ -1981,7 +1981,9 @@ VALUE is typically a string, or a cons of two markers, but may be
 anything that the functions on `selection-converter-alist' know about.
 
 FRAME should be a frame that should own the selection.  If omitted or
-nil, it defaults to the selected frame.  */)
+nil, it defaults to the selected frame.
+
+On Nextstep, FRAME is unused.  */)
   (Lisp_Object selection, Lisp_Object value, Lisp_Object frame)
 {
   if (NILP (frame)) frame = selected_frame;
@@ -2002,15 +2004,18 @@ nil, it defaults to the selected frame.  */)
 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 is a symbol, typically `PRIMARY', `SECONDARY', or `CLIPBOARD'.
+SELECTION-SYMBOL is typically `PRIMARY', `SECONDARY', or `CLIPBOARD'.
 \(Those are literal upper-case symbol names, since that's what X expects.)
-TYPE is the type of data desired, typically `STRING'.
-TIME_STAMP is the time to use in the XConvertSelection call for foreign
+TARGET-TYPE is the type of data desired, typically `STRING'.
+
+TIME-STAMP is the time to use in the XConvertSelection call for foreign
 selections.  If omitted, defaults to the time for the last event.
 
 TERMINAL should be a terminal object or a frame specifying the X
 server to query.  If omitted or nil, that stands for the selected
-frame's display, or the first available X display.  */)
+frame's display, or the first available X display.
+
+On Nextstep, TIME-STAMP and TERMINAL are unused.  */)
   (Lisp_Object selection_symbol, Lisp_Object target_type,
    Lisp_Object time_stamp, Lisp_Object terminal)
 {
@@ -2051,9 +2056,15 @@ DEFUN ("x-disown-selection-internal", Fx_disown_selection_internal,
        doc: /* If we own the selection SELECTION, disown it.
 Disowning it means there is no such selection.
 
+Sets the last-change time for the selection to TIME-OBJECT (by default
+the time of the last event).
+
 TERMINAL should be a terminal object or a frame specifying the X
 server to query.  If omitted or nil, that stands for the selected
-frame's display, or the first available X display.  */)
+frame's display, or the first available X display.
+
+On Nextstep, the TIME-OBJECT and TERMINAL arguments are unused.
+On MS-DOS, all this does is return non-nil if we own the selection.  */)
   (Lisp_Object selection, Lisp_Object time_object, Lisp_Object terminal)
 {
   Time timestamp;
@@ -2109,7 +2120,9 @@ and t is the same as `SECONDARY'.
 
 TERMINAL should be a terminal object or a frame specifying the X
 server to query.  If omitted or nil, that stands for the selected
-frame's display, or the first available X display.  */)
+frame's display, or the first available X display.
+
+On Nextstep, TERMINAL is unused.  */)
   (Lisp_Object selection, Lisp_Object terminal)
 {
   struct frame *f = frame_for_x_selection (terminal);
@@ -2128,13 +2141,15 @@ DEFUN ("x-selection-exists-p", Fx_selection_exists_p, Sx_selection_exists_p,
        0, 2, 0,
        doc: /* Whether there is an owner for the given X selection.
 SELECTION should be the name of the selection in question, typically
-one of the symbols `PRIMARY', `SECONDARY', or `CLIPBOARD'.  (X expects
-these literal upper-case names.)  The symbol nil is the same as
-`PRIMARY', and t is the same as `SECONDARY'.
+one of the symbols `PRIMARY', `SECONDARY', `CLIPBOARD', or
+`CLIPBOARD_MANAGER' (X expects these literal upper-case names.)  The
+symbol nil is the same as `PRIMARY', and t is the same as `SECONDARY'.
 
 TERMINAL should be a terminal object or a frame specifying the X
 server to query.  If omitted or nil, that stands for the selected
-frame's display, or the first available X display.  */)
+frame's display, or the first available X display.
+
+On Nextstep, TERMINAL is unused.  */)
   (Lisp_Object selection, Lisp_Object terminal)
 {
   Window owner;
@@ -2257,8 +2272,14 @@ x_clipboard_manager_save_all (void)
 
       local_frame = XCAR (XCDR (XCDR (XCDR (local_selection))));
       if (FRAME_LIVE_P (XFRAME (local_frame)))
-       internal_condition_case_1 (x_clipboard_manager_save, local_frame,
-                                  Qt, x_clipboard_manager_error_2);
+       {
+         Lisp_Object args[1];
+         args[0] = build_string ("Saving clipboard to X clipboard manager...");
+         Fmessage (1, args);
+
+         internal_condition_case_1 (x_clipboard_manager_save, local_frame,
+                                    Qt, x_clipboard_manager_error_2);
+       }
     }
 }
 
index 6b19533e97cf40815e82b123a5432edde7728f51..88cd0bf4091e47961ada1b21579766725c76deab 100644 (file)
@@ -2292,7 +2292,8 @@ x_draw_image_foreground (struct glyph_string *s)
 static void
 x_draw_image_relief (struct glyph_string *s)
 {
-  int x0, y0, x1, y1, thick, raised_p, extra;
+  int x0, y0, x1, y1, thick, raised_p;
+  int extra_x, extra_y;
   XRectangle r;
   int x = s->x;
   int y = s->ybase - image_ascent (s->img, s->face, &s->slice);
@@ -2323,13 +2324,24 @@ x_draw_image_relief (struct glyph_string *s)
       raised_p = s->img->relief > 0;
     }
 
-  extra = s->face->id == TOOL_BAR_FACE_ID
-    ? XINT (Vtool_bar_button_margin) : 0;
+  extra_x = extra_y = 0;
+  if (s->face->id == TOOL_BAR_FACE_ID)
+    {
+      if (CONSP (Vtool_bar_button_margin)
+         && INTEGERP (XCAR (Vtool_bar_button_margin))
+         && INTEGERP (XCDR (Vtool_bar_button_margin)))
+       {
+         extra_x = XINT (XCAR (Vtool_bar_button_margin));
+         extra_y = XINT (XCDR (Vtool_bar_button_margin));
+       }
+      else if (INTEGERP (Vtool_bar_button_margin))
+       extra_x = extra_y = XINT (Vtool_bar_button_margin);
+    }
 
-  x0 = x - thick - extra;
-  y0 = y - thick - extra;
-  x1 = x + s->slice.width + thick - 1 + extra;
-  y1 = y + s->slice.height + thick - 1 + extra;
+  x0 = x - thick - extra_x;
+  y0 = y - thick - extra_y;
+  x1 = x + s->slice.width + thick - 1 + extra_x;
+  y1 = y + s->slice.height + thick - 1 + extra_y;
 
   x_setup_relief_colors (s);
   get_glyph_string_clip_rect (s, &r);
index 56b7ece59e519956c8e9345e7e3e97f68bb2dbe2..f44b09102d99d181d15d551c2e3caec7579dce44 100644 (file)
@@ -1,3 +1,8 @@
+2012-02-13  Teodor Zlatanov  <tzz@lifelogs.com>
+
+       * automated/url-future-tests.el (url-future-tests): Move from
+       lisp/url/url-future.el and rename.
+
 2012-01-29  Ulf Jasper  <ulf.jasper@web.de>
 
        * automated/icalendar-tests.el (icalendar-import-non-recurring):
diff --git a/test/automated/url-future-tests.el b/test/automated/url-future-tests.el
new file mode 100644 (file)
index 0000000..d499da6
--- /dev/null
@@ -0,0 +1,57 @@
+;;; url-future-tests.el --- Test suite for url-future.
+
+;; Copyright (C) 2011-2012  Free Software Foundation, Inc.
+
+;; Author: Teodor Zlatanov <tzz@lifelogs.com>
+;; Keywords: data
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Code:
+
+(require 'ert)
+(require 'url-future)
+
+(ert-deftest url-future-tests ()
+  (let* (saver
+         (text "running future")
+         (good (make-url-future :value (lambda () (format text))
+                                :callback (lambda (f) (set 'saver f))))
+         (bad (make-url-future :value (lambda () (/ 1 0))
+                               :errorback (lambda (&rest d) (set 'saver d))))
+         (tocancel (make-url-future :value (lambda () (/ 1 0))
+                                    :callback (lambda (f) (set 'saver f))
+                                    :errorback (lambda (&rest d)
+                                                 (set 'saver d)))))
+    (should (equal good (url-future-call good)))
+    (should (equal good saver))
+    (should (equal text (url-future-value good)))
+    (should (url-future-completed-p good))
+    (should-error (url-future-call good))
+    (setq saver nil)
+    (should (equal bad (url-future-call bad)))
+    (should-error (url-future-call bad))
+    (should (equal saver (list bad '(arith-error))))
+    (should (url-future-errored-p bad))
+    (setq saver nil)
+    (should (equal (url-future-cancel tocancel) tocancel))
+    (should-error (url-future-call tocancel))
+    (should (null saver))
+    (should (url-future-cancelled-p tocancel))))
+
+(provide 'url-future-tests)
+
+;;; url-future-tests.el ends here