aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKaroly Lorentey <[email protected]>2005-09-17 19:10:55 +0000
committerKaroly Lorentey <[email protected]>2005-09-17 19:10:55 +0000
commit5826661f18ae8c95b26951a042692e68b9bc093f (patch)
tree534dee8bd5250e83e84a896ebd29f82be3370c07
parent567c887847144d9609ccfe550fd7ef178120297a (diff)
parent5b51c03716d7c487d1c2336df2a76a6417a2343c (diff)
Merged from [email protected] (patch 116-117, 544-550)
Patches applied: * [email protected]/emacs--cvs-trunk--0--patch-544 Update from CVS * [email protected]/emacs--cvs-trunk--0--patch-545 Update from CVS * [email protected]/emacs--cvs-trunk--0--patch-546 Merge from gnus--rel--5.10 * [email protected]/emacs--cvs-trunk--0--patch-547 Update from CVS * [email protected]/emacs--cvs-trunk--0--patch-548 Update from CVS * [email protected]/emacs--cvs-trunk--0--patch-549 Update from CVS * [email protected]/emacs--cvs-trunk--0--patch-550 Update from CVS * [email protected]/gnus--rel--5.10--patch-116 Merge from emacs--cvs-trunk--0 * [email protected]/gnus--rel--5.10--patch-117 Update from CVS git-archimport-id: [email protected]/emacs--multi-tty--0--patch-421
-rw-r--r--ChangeLog6
-rw-r--r--Makefile.in12
-rw-r--r--etc/ChangeLog9
-rw-r--r--etc/NEWS33
-rw-r--r--etc/PROBLEMS20
-rw-r--r--lib-src/ChangeLog6
-rw-r--r--lib-src/Makefile.in8
-rw-r--r--lisp/ChangeLog94
-rw-r--r--lisp/bindings.el16
-rw-r--r--lisp/calendar/cal-menu.el18
-rw-r--r--lisp/calendar/diary-lib.el3
-rw-r--r--lisp/follow.el2
-rw-r--r--lisp/gnus/ChangeLog5
-rw-r--r--lisp/gnus/gnus-sum.el3
-rw-r--r--lisp/help-fns.el32
-rw-r--r--lisp/image.el43
-rw-r--r--lisp/international/codepage.el2
-rw-r--r--lisp/mail/sendmail.el7
-rw-r--r--lisp/mouse.el5
-rw-r--r--lisp/net/ange-ftp.el156
-rw-r--r--lisp/net/newsticker.el63
-rw-r--r--lisp/obsolete/iso-insert.el (renamed from lisp/international/iso-insert.el)0
-rw-r--r--lisp/pcvs-defs.el14
-rw-r--r--lisp/progmodes/hideshow.el110
-rw-r--r--lisp/progmodes/vhdl-mode.el21
-rw-r--r--lisp/recentf.el13
-rw-r--r--lisp/textmodes/reftex-vars.el65
-rw-r--r--lisp/url/ChangeLog10
-rw-r--r--lisp/url/url-mailto.el20
-rw-r--r--lispref/ChangeLog15
-rw-r--r--lispref/display.texi23
-rw-r--r--lispref/objects.texi26
-rw-r--r--man/ChangeLog22
-rw-r--r--man/Makefile.in9
-rw-r--r--man/buffers.texi2
-rw-r--r--man/emacs.texi2
-rw-r--r--man/files.texi80
-rw-r--r--man/newsticker.texi676
-rw-r--r--man/rmail.texi2
-rw-r--r--src/ChangeLog44
-rw-r--r--src/Makefile.in11
-rw-r--r--src/coding.c29
-rw-r--r--src/composite.c126
-rw-r--r--src/composite.h1
-rw-r--r--src/emacs.c2
-rw-r--r--src/fileio.c32
-rw-r--r--src/print.c2
-rw-r--r--src/xdisp.c43
48 files changed, 1414 insertions, 529 deletions
diff --git a/ChangeLog b/ChangeLog
index 2973030acc..42bdbc0297 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2005-09-15 Ulf Jasper <[email protected]>
+
+ * Makefile.in (install-arch-indep, uninstall):
+ Handle newsticker manual.
+ (info): Add - to commands.
+
2005-09-11 Kim F. Storm <[email protected]>
* AUTHORS: Regenerate.
diff --git a/Makefile.in b/Makefile.in
index c8fa29b343..56551e319c 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -486,7 +486,7 @@ install-arch-indep: mkdir info
chmod a+r ${infodir}/dir); \
fi; \
cd ${srcdir}/info ; \
- for f in ada-mode* autotype* calc* ccmode* cl* dired-x* ebrowse* ediff* efaq* eintr* elisp* emacs* emacs-mime* emacs-xtra* eshell* eudc* flymake* forms* gnus* idlwave* info* message* mh-e* org* pcl-cvs* pgg* reftex* sc* ses* sieve* speedbar* tramp* vip* widget* woman* smtpmail* url*; do \
+ for f in ada-mode* autotype* calc* ccmode* cl* dired-x* ebrowse* ediff* efaq* eintr* elisp* emacs* emacs-mime* emacs-xtra* eshell* eudc* flymake* forms* gnus* idlwave* info* message* mh-e* newsticker* org* pcl-cvs* pgg* reftex* sc* ses* sieve* speedbar* tramp* vip* widget* woman* smtpmail* url*; do \
(cd $${thisdir}; \
${INSTALL_DATA} ${srcdir}/info/$$f ${infodir}/$$f; \
chmod a+r ${infodir}/$$f); \
@@ -496,7 +496,7 @@ install-arch-indep: mkdir info
thisdir=`/bin/pwd`; \
if [ `(cd ${srcdir}/info && /bin/pwd)` != `(cd ${infodir} && /bin/pwd)` ]; \
then \
- for f in ada-mode autotype calc ccmode cl dired-x ebrowse ediff efaq elisp eintr emacs emacs-mime emacs-xtra eshell eudc flymake forms gnus idlwave info message mh-e org pcl-cvs pgg reftex sc ses sieve speedbar tramp vip viper widget woman smtpmail url; do \
+ for f in ada-mode autotype calc ccmode cl dired-x ebrowse ediff efaq elisp eintr emacs emacs-mime emacs-xtra eshell eudc flymake forms gnus idlwave info message mh-e newsticker org pcl-cvs pgg reftex sc ses sieve speedbar tramp vip viper widget woman smtpmail url; do \
(cd $${thisdir}; \
${INSTALL_INFO} --info-dir=${infodir} ${infodir}/$$f); \
done; \
@@ -562,7 +562,7 @@ uninstall:
done
(cd ${archlibdir} && rm -f fns-*)
-rm -rf ${libexecdir}/emacs/${version}
- (cd ${infodir} && rm -f cl* ada-mode* autotype* calc* ccmode* ebrowse* efaq* eintr elisp* eshell* eudc* idlwave* message* pcl-cvs* reftex* speedbar* tramp* widget* woman* dired-x* ediff* emacs* emacs-xtra* flymake* forms* gnus* info* mh-e* org* sc* ses* vip* smtpmail* url*)
+ (cd ${infodir} && rm -f cl* ada-mode* autotype* calc* ccmode* ebrowse* efaq* eintr elisp* eshell* eudc* idlwave* message* pcl-cvs* reftex* speedbar* tramp* widget* woman* dired-x* ediff* emacs* emacs-xtra* flymake* forms* gnus* info* mh-e* newsticker* org* sc* ses* vip* smtpmail* url*)
(cd ${man1dir} && rm -f emacs${manext} emacsclient${manext} etags${manext} ctags${manext})
(cd ${bindir} && rm -f $(EMACSFULL) $(EMACS))
@@ -721,9 +721,9 @@ force-info:
# put the info files in $(srcdir),
# so we can do ok running make in the build dir.
info: force-info
- (cd man; $(MAKE) $(MFLAGS) info)
- (cd lispref; $(MAKE) $(MFLAGS) info)
- (cd lispintro; $(MAKE) $(MFLAGS) info)
+ -(cd man; $(MAKE) $(MFLAGS) info)
+ -(cd lispref; $(MAKE) $(MFLAGS) info)
+ -(cd lispintro; $(MAKE) $(MFLAGS) info)
dvi:
(cd man; $(MAKE) $(MFLAGS) dvi)
(cd lispref; $(MAKE) $(MFLAGS) elisp.dvi)
diff --git a/etc/ChangeLog b/etc/ChangeLog
index 70c90e122c..316ec3e4cd 100644
--- a/etc/ChangeLog
+++ b/etc/ChangeLog
@@ -1,3 +1,12 @@
+2005-09-15 Kenichi Handa <[email protected]>
+
+ * PROBLEMS: Fix the paragraph describing the limitation of
+ UTF-8/16/7.
+
+2005-09-14 Romain Francoise <[email protected]>
+
+ * NEWS: Add entry for write-region-inhibit-fsync.
+
2005-09-09 Kevin Ryde <[email protected]>
* MORE.STUFF: Update url for calculator.el.
diff --git a/etc/NEWS b/etc/NEWS
index 1406ee5bf2..887efd6b8f 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -618,6 +618,12 @@ controls whether or not the function `make-auto-save-file-name' will
attempt to construct a unique auto-save name (e.g. for remote files).
+++
+*** The new option `write-region-inhibit-fsync' disables calls to fsync
+in `write-region'. This can be useful on laptops to avoid spinning up
+the hard drive upon each file save. Enabling this variable may result
+in data loss, use with care.
+
++++
*** If the user visits a file larger than `large-file-warning-threshold',
Emacs asks for confirmation.
@@ -1478,6 +1484,14 @@ colors as on X.
* New Modes and Packages in Emacs 22.1
+---
+** Newsticker is now part of the Emacs distribution.
+
+Newsticker asynchronously retrieves headlines (RSS) from a list of news
+sites, prepares these headlines for reading, and allows for loading the
+corresponding articles in a web browser. Its documentation is in a
+separate manual.
+
+++
** Filesets are collections of files. You can define a fileset in
various ways, such as based on a directory tree or based on
@@ -2991,11 +3005,17 @@ updated `skeleton-insert' docstring explains these new features along
with other details of skeleton construction.
---
-** New variable `hs-set-up-overlay' allows customization of the overlay
+** Hideshow mode changes
+
+*** New variable `hs-set-up-overlay' allows customization of the overlay
used to effect hiding for hideshow minor mode. Integration with isearch
handles the overlay property `display' specially, preserving it during
temporary overlay showing in the course of an isearch operation.
+*** New variable `hs-allow-nesting' non-nil means that hiding a block does
+not discard the hidden state of any "internal" blocks; when the parent
+block is later shown, the internal blocks remain hidden. Default is nil.
+
+++
** `hide-ifdef-mode' now uses overlays rather than selective-display
to hide its text. This should be mostly transparent but slightly
@@ -4586,6 +4606,17 @@ When you click the mouse when the mouse pointer is over a hot-spot,
an event is composed by combining the ID of the hot-spot with the
mouse event, e.g. [area4 mouse-1] if the hot-spot's ID is `area4'.
++++
+*** The function `find-image' now searches in etc/images/ and etc/.
+The new variable `image-load-path' is a list of locations in which to
+search for image files. The default is to search in etc/images, then
+in etc/, and finally in the directories specified by `load-path'.
+Subdirectories of etc/ and etc/images are not recursively searched; if
+you put an image file in a subdirectory, you have to specify it
+explicitly; for example, if an image is put in etc/images/foo/bar.xpm:
+
+ (defimage foo-image '((:type xpm :file "foo/bar.xpm")))
+
** Mouse pointer features:
+++ (lispref)
diff --git a/etc/PROBLEMS b/etc/PROBLEMS
index ae9a42bde6..3b9dc6b17f 100644
--- a/etc/PROBLEMS
+++ b/etc/PROBLEMS
@@ -841,9 +841,16 @@ mule-unicode-0100-24ff:-gnu-unifont-*-iso10646-1
** The UTF-8/16/7 coding systems don't encode CJK (Far Eastern) characters.
-Emacs by default only supports the parts of the Unicode BMP whose code
-points are in the ranges 0000-33ff and e000-ffff. This excludes: most
-of CJK, Yi and Hangul, as well as everything outside the BMP.
+Emacs directly supports the Unicode BMP whose code points are in the
+ranges 0000-33ff and e000-ffff, and indirectly supports the parts of
+CJK characters belonging to these legacy charsets:
+
+ GB2312, Big5, JISX0208, JISX0212, JISX0213-1, JISX0213-2, KSC5601
+
+The latter support is done in Utf-Translate-Cjk mode (turned on by
+default). Which Unicode CJK characters are decoded into which Emacs
+charset is decided by the current language environment. For instance,
+in Chinese-GB, most of them are decoded into chinese-gb2312.
If you read UTF-8 data with code points outside these ranges, the
characters appear in the buffer as raw bytes of the original UTF-8
@@ -853,13 +860,6 @@ If you read such characters from UTF-16 or UTF-7 data, they are
substituted with the Unicode `replacement character', and you lose
information.
-To edit such UTF data, turn on Utf-Translate-Cjk mode, which makes
-many common CJK characters available for encoding and decoding and can
-be extended by updating the tables it uses. This also allows you to
-save as UTF buffers containing characters decoded by the chinese-,
-japanese- and korean- coding systems, e.g. cut and pasted from
-elsewhere.
-
** Mule-UCS loads very slowly.
Changes to Emacs internals interact badly with Mule-UCS's `un-define'
diff --git a/lib-src/ChangeLog b/lib-src/ChangeLog
index 4cf0da4b64..76e56e77e1 100644
--- a/lib-src/ChangeLog
+++ b/lib-src/ChangeLog
@@ -1,3 +1,9 @@
+2005-09-15 Richard M. Stallman <[email protected]>
+
+ * Makefile.in (update-game-score.o): New target.
+ Compile and link this progranm separately.
+ (update-game-score${EXEEXT}): Use GETOPTDEPTS.
+
2005-09-11 Jason Rumney <[email protected]>
* makefile.w32-in (../src/config.h): Don't overwrite. Print a
diff --git a/lib-src/Makefile.in b/lib-src/Makefile.in
index 274bbabe29..29fc2ec537 100644
--- a/lib-src/Makefile.in
+++ b/lib-src/Makefile.in
@@ -460,10 +460,12 @@ emacsclient${EXEEXT}: ${srcdir}/emacsclient.c ../src/config.h $(GETOPTDEPS)
hexl${EXEEXT}: ${srcdir}/hexl.c ../src/config.h
$(CC) ${ALL_CFLAGS} ${srcdir}/hexl.c $(LOADLIBES) -o hexl
-update-game-score${EXEEXT}: ${srcdir}/update-game-score.c ../src/config.h
- $(CC) ${ALL_CFLAGS} ${srcdir}/update-game-score.c \
+update-game-score${EXEEXT}: update-game-score.o $(GETOPTDEPS)
+ $(CC) ${LINK_CFLAGS} ${MOVE_FLAGS} update-game-score.o $(GETOPTOBJS) $(LOADLIBES) -o update-game-score
+
+update-game-score.o: ${srcdir}/update-game-score.c ../src/config.h $(GETOPT_H)
+ $(CC) -c ${CPP_CFLAGS} ${srcdir}/update-game-score.c \
-DHAVE_SHARED_GAME_DIR="\"$(gamedir)\"" \
- $(LOADLIBES) -o update-game-score
/* These are NOT included in INSTALLABLES or UTILITIES.
See ../src/Makefile.in. */
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index 2074b5d3f0..3fb1108349 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,10 +1,92 @@
+2005-09-15 Chong Yidong <[email protected]>
+
+ * image.el (image-load-path): New variable.
+ (image-search-load-path): New function.
+ (find-image): Search for images in `image-load-path'.
+
+2005-09-15 David Ponce <[email protected]>
+
+ * recentf.el (recentf-save-file-modes): New option.
+ (recentf-save-list): Use it.
+
+2005-09-15 Nick Roberts <[email protected]>
+
+ * bindings.el (mode-line-eol-desc, mode-line-coding-system-map)
+ (mode-line-mule-info, mode-line-modified): Move bindings from
+ mouse-3 to mouse-1.
+
+2005-09-15 Chong Yidong <[email protected]>
+
+ * simple.el (sendmail-user-agent-compose): Revert last change.
+
+2005-09-14 Stefan Monnier <[email protected]>
+
+ * net/ange-ftp.el (ange-ftp-process-filter): Revert to ^#+$.
+ Use with-current-buffer.
+ (ange-ftp-gwp-start): Remove unused var `gw-user'.
+ (ange-ftp-guess-hash-mark-size): Remove unused var `result'.
+ (ange-ftp-insert-directory): Remove unused var `short'.
+ (ange-ftp-file-name-sans-versions): Remove unused var `host-type'.
+
+ * pcvs-defs.el (cvs-version): Recognize CVSNT version string.
+ (cvs-execute-single-dir): Change default: cvs-1.9 is ancient.
+
+ * calendar/cal-menu.el: Don't require easymenu, since we don't use it.
+ (check-calendar-holidays, diary-list-entries): Autoload.
+ Otherwise `emacs -q' followed by "mouse-2 -> diary entries" burps.
+ (calendar-mouse-holidays, calendar-mouse-view-diary-entries): Simplify.
+
+ * calendar/diary-lib.el (diary-show-all-entries): Fix last change,
+ which mistakenly removed a call to display-buffer.
+
+2005-09-14 Juanma Barranquero <[email protected]>
+
+ * obsolete/iso-insert.el: Move to obsolete/ from international/.
+
+2005-09-14 Thien-Thi Nguyen <[email protected]>
+
+ * progmodes/hideshow.el
+ (hs-hide-comments-when-hiding-all): Remove autoload cookie.
+ (hs-allow-nesting): New user var.
+ (hs-discard-overlays): Skip "internal" overlays if nesting allowed.
+ (hs-hide-block-at-point): When nesting allowed,
+ if there is already an overlay in place, delete it.
+ (hs-safety-is-job-n): Delete func; remove call sites.
+ (hs-hide-level-recursive): Don't pre-clean if nesting allowed.
+ (hs-overlay-at): New func.
+ (hs-already-hidden-p, hs-show-block): Use it.
+ (hs-hide-all): Don't pre-clean if nesting allowed.
+ (hs-show-all): Temporarily disallow
+ nesting around call to `hs-discard-overlays'.
+
+2005-09-14 Chong Yidong <[email protected]>
+
+ * mouse.el (mouse-major-mode-menu): Make `prefix' optional.
+ Delete unused local var.
+
+2005-09-13 Juanma Barranquero <[email protected]>
+
+ * help-fns.el (describe-categories): "?\ " -> "?\s".
+ (help-do-arg-highlight): Recognize also ARG-n, as in
+ `move-to-left-margin' (ARG+n is already recognized). Simplify.
+
+ * international/codepage.el (dos-unsupported-char-glyph):
+ * net/newsticker.el (tool-bar-map, w3-mode-map)
+ (w3m-minor-mode-map):
+ * progmodes/vhdl-mode.el (conf-alist, conf-entry, conf-key)
+ (ent-alist):
+ * textmodes/reftex-vars.el (reftex-tables-dirty): Add defvars.
+
2005-09-13 Chong Yidong <[email protected]>
* custom.el (custom-push-theme): Handle the case where a symbol is
bound but face properties have not yet been assigned.
- * mail/sendmail.el (mail): Use new buffer if `noerase' argument is
- `new'.
+ * mail/sendmail.el (mail): Use new buffer if `noerase' is `new'.
+ Fix behavior if noerase is `t' and there is no mail buffer.
+
+ * simple.el (sendmail-user-agent-compose): Use a new mail buffer
+ if `continue' is nil, rather than signal an error.
2005-09-12 Richard M. Stallman <[email protected]>
@@ -65,7 +147,6 @@
* time-stamp.el: Mention variable `time-stamp-pattern' in doc
strings of the variables it can override.
-
(time-stamp): New (as yet undocumented) time-stamp-format escapes
%Q and %q, for fully-qualified domain name and unqualified host name.
@@ -232,13 +313,6 @@
2005-09-06 Stefan Monnier <[email protected]>
- * net/ange-ftp.el (ange-ftp-process-filter): Revert to ^#+$.
- Use with-current-buffer.
- (ange-ftp-gwp-start): Remove unused var `gw-user'.
- (ange-ftp-guess-hash-mark-size): Remove unused var `result'.
- (ange-ftp-insert-directory): Remove unused var `short'.
- (ange-ftp-file-name-sans-versions): Remove unused var `host-type'.
-
* buff-menu.el (Buffer-menu-make-sort-button): Add docstrings, use
non-anonymous functions.
diff --git a/lisp/bindings.el b/lisp/bindings.el
index 0d4b5ccaf5..7ebf15e59a 100644
--- a/lisp/bindings.el
+++ b/lisp/bindings.el
@@ -123,7 +123,7 @@ corresponding to the mode line clicked."
(defvar mode-line-coding-system-map
(let ((map (make-sparse-keymap)))
- (define-key map [mode-line mouse-3]
+ (define-key map [mode-line mouse-1]
(lambda (e)
(interactive "e")
(save-selected-window
@@ -156,7 +156,7 @@ corresponding to the mode line clicked."
(setq desc
(propertize
mnemonic
- 'help-echo (format "%s end-of-line; mouse-3 to cycle"
+ 'help-echo (format "%s end-of-line; mouse-1 to cycle"
(if (eq eol 0) "Unix-style LF"
(if (eq eol 1) "Dos-style CRLF"
(if (eq eol 2) "Mac-style CR"
@@ -164,7 +164,7 @@ corresponding to the mode line clicked."
'keymap
(eval-when-compile
(let ((map (make-sparse-keymap)))
- (define-key map [mode-line mouse-3] 'mode-line-change-eol)
+ (define-key map [mode-line mouse-1] 'mode-line-change-eol)
map))
'mouse-face 'mode-line-highlight))
(push (cons eol (cons mnemonic desc)) mode-line-eol-desc-cache)
@@ -190,7 +190,7 @@ corresponding to the mode line clicked."
(when buffer-file-coding-system
(if enable-multibyte-characters
(concat (symbol-name buffer-file-coding-system)
- " buffer; mouse-3: describe coding system")
+ " buffer; mouse-1: describe coding system")
(concat "Unibyte " (symbol-name buffer-file-coding-system)
" buffer")))))
'mouse-face 'mode-line-highlight
@@ -230,27 +230,27 @@ Normally nil in most modes, since there is no process to display.")
(list (propertize
"%1*"
'help-echo (purecopy (lambda (window object point)
- (format "%sead-only: mouse-3 toggles"
+ (format "%sead-only: mouse-1 toggles"
(save-selected-window
(select-window window)
(if buffer-read-only
"R"
"Not r")))))
'local-map (purecopy (make-mode-line-mouse-map
- 'mouse-3
+ 'mouse-1
#'mode-line-toggle-read-only))
'mouse-face 'mode-line-highlight)
(propertize
"%1+"
'help-echo (purecopy (lambda (window object point)
- (format "%sodified: mouse-3 toggles"
+ (format "%sodified: mouse-1 toggles"
(save-selected-window
(select-window window)
(if (buffer-modified-p)
"M"
"Not m")))))
'local-map (purecopy (make-mode-line-mouse-map
- 'mouse-3 #'mode-line-toggle-modified))
+ 'mouse-1 #'mode-line-toggle-modified))
'mouse-face 'mode-line-highlight))
"Mode-line control for displaying whether current buffer is modified.")
diff --git a/lisp/calendar/cal-menu.el b/lisp/calendar/cal-menu.el
index 0291c41c1c..870e0fb2f7 100644
--- a/lisp/calendar/cal-menu.el
+++ b/lisp/calendar/cal-menu.el
@@ -44,7 +44,6 @@
(defvar event)
(eval-when-compile (require 'calendar))
-(require 'easymenu)
(define-key calendar-mode-map [menu-bar edit] 'undefined)
(define-key calendar-mode-map [menu-bar search] 'undefined)
@@ -323,12 +322,14 @@ ERROR is t, otherwise just returns nil."
(calendar-cursor-to-date (calendar-current-date))
(calendar-cursor-holidays)))
+(autoload 'check-calendar-holidays "holidays")
+(autoload 'diary-list-entries "diary-lib")
+
(defun calendar-mouse-holidays ()
"Pop up menu of holidays for mouse selected date."
(interactive)
(let* ((date (calendar-event-to-date))
- (l (mapcar '(lambda (x) (list x))
- (check-calendar-holidays date)))
+ (l (mapcar 'list (check-calendar-holidays date)))
(selection
(cal-menu-x-popup-menu
event
@@ -350,11 +351,10 @@ Any holidays are shown if `holidays-in-diary-buffer' is t."
(diary-list-include-blanks nil)
(diary-display-hook 'ignore)
(diary-entries
- (mapcar '(lambda (x) (split-string (car (cdr x)) "\^M\\|\n"))
- (list-diary-entries date 1)))
+ (mapcar (lambda (x) (split-string (car (cdr x)) "\^M\\|\n"))
+ (diary-list-entries date 1)))
(holidays (if holidays-in-diary-buffer
- (mapcar '(lambda (x) (list x))
- (check-calendar-holidays date))))
+ (check-calendar-holidays date)))
(title (concat "Diary entries "
(if diary (format "from %s " diary) "")
"for "
@@ -365,9 +365,7 @@ Any holidays are shown if `holidays-in-diary-buffer' is t."
(list title
(append
(list title)
- (if holidays
- (mapcar '(lambda (x) (list (concat " " (car x))))
- holidays))
+ (mapcar (lambda (x) (list (concat " " x))) holidays)
(if holidays
(list "--shadow-etched-in" "--shadow-etched-in"))
(if diary-entries
diff --git a/lisp/calendar/diary-lib.el b/lisp/calendar/diary-lib.el
index b35b7287a4..7b2f94ca4d 100644
--- a/lisp/calendar/diary-lib.el
+++ b/lisp/calendar/diary-lib.el
@@ -764,7 +764,8 @@ is created."
(pop-up-frames (window-dedicated-p (selected-window))))
(with-current-buffer (or (find-buffer-visiting d-file)
(find-file-noselect d-file t))
- (diary-unhide-everything))))
+ (diary-unhide-everything)
+ (display-buffer (current-buffer)))))
(defcustom diary-mail-addr
(if (boundp 'user-mail-address) user-mail-address "")
diff --git a/lisp/follow.el b/lisp/follow.el
index 37a157cc40..ef1b223195 100644
--- a/lisp/follow.el
+++ b/lisp/follow.el
@@ -4,7 +4,7 @@
;; 2005 Free Software Foundation, Inc.
;; Author: Anders Lindgren <[email protected]>
-;; Maintainer: Anders Lindgren <[email protected]>
+;; Maintainer: FSF (Anders' email bounces, Sep 2005)
;; Created: 1995-05-25
;; Keywords: display, window, minor-mode, convenience
;; Last Changed: 1999-11-17
diff --git a/lisp/gnus/ChangeLog b/lisp/gnus/ChangeLog
index 96052e04c1..9c57df4557 100644
--- a/lisp/gnus/ChangeLog
+++ b/lisp/gnus/ChangeLog
@@ -1,3 +1,8 @@
+2005-09-13 Katsumi Yamaoka <[email protected]>
+
+ * gnus-sum.el (gnus-summary-edit-article-done): Remove text props
+ before parsing header.
+
2005-09-10 Reiner Steib <[email protected]>
* spam-report.el (spam-report-gmane): Fix generation of spam
diff --git a/lisp/gnus/gnus-sum.el b/lisp/gnus/gnus-sum.el
index 73837e2190..88fe21fd5a 100644
--- a/lisp/gnus/gnus-sum.el
+++ b/lisp/gnus/gnus-sum.el
@@ -9561,7 +9561,8 @@ groups."
(save-excursion
(save-restriction
(message-narrow-to-head)
- (let ((head (buffer-string))
+ (let ((head (buffer-substring-no-properties
+ (point-min) (point-max)))
header)
(with-temp-buffer
(insert (format "211 %d Article retrieved.\n"
diff --git a/lisp/help-fns.el b/lisp/help-fns.el
index fc8277e741..979ff06a30 100644
--- a/lisp/help-fns.el
+++ b/lisp/help-fns.el
@@ -269,22 +269,20 @@ face (according to `face-differs-from-default-p')."
(defun help-do-arg-highlight (doc args)
(with-syntax-table (make-syntax-table emacs-lisp-mode-syntax-table)
(modify-syntax-entry ?\- "w")
- (while args
- (let ((arg (prog1 (car args) (setq args (cdr args)))))
- (setq doc (replace-regexp-in-string
- ;; This is heuristic, but covers all common cases
- ;; except ARG1-ARG2
- (concat "\\<" ; beginning of word
- "\\(?:[a-z-]*-\\)?" ; for xxx-ARG
- "\\("
- (regexp-quote arg)
- "\\)"
- "\\(?:es\\|s\\|th\\)?" ; for ARGth, ARGs
- "\\(?:-[a-z-]+\\)?" ; for ARG-xxx
- "\\>") ; end of word
- (help-default-arg-highlight arg)
- doc t t 1))))
- doc))
+ (dolist (arg args doc)
+ (setq doc (replace-regexp-in-string
+ ;; This is heuristic, but covers all common cases
+ ;; except ARG1-ARG2
+ (concat "\\<" ; beginning of word
+ "\\(?:[a-z-]*-\\)?" ; for xxx-ARG
+ "\\("
+ (regexp-quote arg)
+ "\\)"
+ "\\(?:es\\|s\\|th\\)?" ; for ARGth, ARGs
+ "\\(?:-[a-z0-9-]+\\)?" ; for ARG-xxx, ARG-n
+ "\\>") ; end of word
+ (help-default-arg-highlight arg)
+ doc t t 1)))))
(defun help-highlight-arguments (usage doc &rest args)
(when usage
@@ -720,7 +718,7 @@ BUFFER should be a buffer or a buffer name."
(dotimes (i 95)
(let ((elt (aref docs i)))
(when elt
- (insert (+ i ?\ ) ": " elt "\n"))))
+ (insert (+ i ?\s) ": " elt "\n"))))
(while (setq table (char-table-parent table))
(insert "\nThe parent category table is:")
(describe-vector table 'help-describe-category-set))))))))
diff --git a/lisp/image.el b/lisp/image.el
index b45b23db61..154a49e61b 100644
--- a/lisp/image.el
+++ b/lisp/image.el
@@ -49,6 +49,14 @@ IMAGE-TYPE must be a pair (PREDICATE . TYPE). PREDICATE is called
with one argument, a string containing the image data. If PREDICATE returns
a non-nil value, TYPE is the image's type.")
+(defvar image-load-path
+ (list (file-name-as-directory (expand-file-name "images" data-directory))
+ data-directory 'load-path)
+ "List of locations in which to search for image files.
+If an element is a string, it defines a directory to search in.
+If an element is a variable symbol, the value of that variable is
+used as a list of directories to search.")
+
(defun image-jpeg-p (data)
"Value is non-nil if DATA, a string, consists of JFIF image data.
We accept the tag Exif because that is the same format."
@@ -269,6 +277,20 @@ BUFFER nil or omitted means use the current buffer."
(delete-overlay overlay)))
(setq overlays (cdr overlays)))))
+(defun image-search-load-path (file path)
+ (let (found pathname)
+ (while (and (not found) (consp path))
+ (cond
+ ((stringp (car path))
+ (setq found
+ (file-readable-p
+ (setq pathname (expand-file-name file (car path))))))
+ ((and (symbolp (car path)) (boundp (car path)))
+ (if (setq pathname (image-search-load-path
+ file (symbol-value (car path))))
+ (setq found t))))
+ (setq path (cdr path)))
+ (if found pathname)))
;;;###autoload
(defun find-image (specs)
@@ -286,7 +308,7 @@ is supported, and FILE exists, is used to construct the image
specification to be returned. Return nil if no specification is
satisfied.
-The image is looked for first on `load-path' and then in `data-directory'."
+The image is looked for in `image-load-path'."
(let (image)
(while (and specs (null image))
(let* ((spec (car specs))
@@ -296,20 +318,11 @@ The image is looked for first on `load-path' and then in `data-directory'."
found)
(when (image-type-available-p type)
(cond ((stringp file)
- (let ((path load-path))
- (while (and (not found) path)
- (let ((try-file (expand-file-name file (car path))))
- (when (file-readable-p try-file)
- (setq found try-file)))
- (setq path (cdr path)))
- (unless found
- (let ((try-file (expand-file-name file data-directory)))
- (if (file-readable-p try-file)
- (setq found try-file))))
- (if found
- (setq image
- (cons 'image (plist-put (copy-sequence spec)
- :file found))))))
+ (if (setq found (image-search-load-path
+ file image-load-path))
+ (setq image
+ (cons 'image (plist-put (copy-sequence spec)
+ :file found)))))
((not (null data))
(setq image (cons 'image spec)))))
(setq specs (cdr specs))))
diff --git a/lisp/international/codepage.el b/lisp/international/codepage.el
index 3e364a6067..854d4673ec 100644
--- a/lisp/international/codepage.el
+++ b/lisp/international/codepage.el
@@ -44,6 +44,8 @@
;;; Code:
+(defvar dos-unsupported-char-glyph)
+
(defun cp-coding-system-for-codepage-1 (coding mnemonic iso-name
decoder encoder)
"Make coding system CODING for a DOS codepage using translation tables.
diff --git a/lisp/mail/sendmail.el b/lisp/mail/sendmail.el
index 32328a3317..f7c62026d8 100644
--- a/lisp/mail/sendmail.el
+++ b/lisp/mail/sendmail.el
@@ -1657,6 +1657,9 @@ The seventh argument ACTIONS is a list of actions to take
(if (eq noerase 'new)
(pop-to-buffer (generate-new-buffer "*mail*"))
+ (and noerase
+ (not (get-buffer "*mail*"))
+ (setq noerase nil))
(pop-to-buffer "*mail*"))
;; Avoid danger that the auto-save file can't be written.
@@ -1673,8 +1676,8 @@ The seventh argument ACTIONS is a list of actions to take
;; (in case the user has actually visited a file *mail*).
; (set-visited-file-name nil)
(let (initialized)
- (and (or (not noerase)
- (eq noerase 'new))
+ (and (not (and noerase
+ (not (eq noerase 'new))))
(if buffer-file-name
(if (buffer-modified-p)
(when (y-or-n-p "Buffer has unsaved changes; reinitialize it and discard them? ")
diff --git a/lisp/mouse.el b/lisp/mouse.el
index 1970fbf1ee..3b591694cf 100644
--- a/lisp/mouse.el
+++ b/lisp/mouse.el
@@ -153,7 +153,7 @@ PREFIX is the prefix argument (if any) to pass to the command."
(defvar mouse-major-mode-menu-prefix) ; dynamically bound
-(defun mouse-major-mode-menu (event prefix)
+(defun mouse-major-mode-menu (event &optional prefix)
"Pop up a mode-specific menu of mouse commands.
Default to the Edit menu if the major mode doesn't define a menu."
;; Switch to the window clicked on, because otherwise
@@ -173,8 +173,7 @@ Default to the Edit menu if the major mode doesn't define a menu."
;; default to the edit menu.
(newmap (if ancestor
(make-sparse-keymap (concat mode-name " Mode"))
- menu-bar-edit-menu))
- result)
+ menu-bar-edit-menu)))
(if ancestor
;; Make our menu inherit from the desired keymap which we want
;; to display as the menu now.
diff --git a/lisp/net/ange-ftp.el b/lisp/net/ange-ftp.el
index 5d205f575b..152e71e64c 100644
--- a/lisp/net/ange-ftp.el
+++ b/lisp/net/ange-ftp.el
@@ -1641,81 +1641,75 @@ good, skip, fatal, or unknown."
;; on to ange-ftp-process-handle-line to deal with.
(defun ange-ftp-process-filter (proc str)
- (let ((buffer (process-buffer proc))
- (old-buffer (current-buffer)))
-
- ;; Eliminate nulls.
- (while (string-match "\000+" str)
- (setq str (replace-match "" nil nil str)))
-
- ;; see if the buffer is still around... it could have been deleted.
- (if (buffer-name buffer)
- (unwind-protect
- (progn
- (set-buffer (process-buffer proc))
-
- ;; handle hash mark printing
- (and ange-ftp-process-busy
- (string-match "\\`#+\\'" str)
- (setq str (ange-ftp-process-handle-hash str)))
- (comint-output-filter proc str)
- ;; Replace STR by the result of the comint processing.
- (setq str (buffer-substring comint-last-output-start
- (process-mark proc)))
- (if ange-ftp-process-busy
- (progn
- (setq ange-ftp-process-string (concat ange-ftp-process-string
- str))
-
- ;; if we gave an empty password to the USER command earlier
- ;; then we should send a null password now.
- (if (string-match "Password: *$" ange-ftp-process-string)
- (process-send-string proc "\n"))))
- (while (and ange-ftp-process-busy
- (string-match "\n" ange-ftp-process-string))
- (let ((line (substring ange-ftp-process-string
- 0
- (match-beginning 0)))
- (seen-prompt nil))
- (setq ange-ftp-process-string (substring ange-ftp-process-string
- (match-end 0)))
- (while (string-match "\\`ftp> *" line)
- (setq seen-prompt t)
- (setq line (substring line (match-end 0))))
- (if (not (and seen-prompt ange-ftp-pending-error-line))
- (ange-ftp-process-handle-line line proc)
- ;; If we've seen a potential error message and it
- ;; hasn't been cancelled by a good message before
- ;; seeing a propt, then the error was real.
- (delete-process proc)
- (setq ange-ftp-process-busy nil
- ange-ftp-process-result-line ange-ftp-pending-error-line))))
-
- ;; has the ftp client finished? if so then do some clean-up
- ;; actions.
- (if (not ange-ftp-process-busy)
- (progn
- ;; reset the xfer size
- (setq ange-ftp-xfer-size 0)
-
- ;; issue the "done" message since we've finished.
- (if (and ange-ftp-process-msg
- ange-ftp-process-verbose
- ange-ftp-process-result)
- (progn
- (ange-ftp-message "%s...done" ange-ftp-process-msg)
- (ange-ftp-repaint-minibuffer)
- (setq ange-ftp-process-msg nil)))
-
- ;; is there a continuation we should be calling? if so,
- ;; we'd better call it, making sure we only call it once.
- (if ange-ftp-process-continue
- (let ((cont ange-ftp-process-continue))
- (setq ange-ftp-process-continue nil)
- (ange-ftp-call-cont cont
- ange-ftp-process-result
- ange-ftp-process-result-line))))))
- (set-buffer old-buffer)))))
+ ;; Eliminate nulls.
+ (while (string-match "\000+" str)
+ (setq str (replace-match "" nil nil str)))
+
+ ;; see if the buffer is still around... it could have been deleted.
+ (when (buffer-live-p (process-buffer proc))
+ (with-current-buffer (process-buffer proc)
+
+ ;; handle hash mark printing
+ (and ange-ftp-process-busy
+ (string-match "^#+$" str)
+ (setq str (ange-ftp-process-handle-hash str)))
+ (comint-output-filter proc str)
+ ;; Replace STR by the result of the comint processing.
+ (setq str (buffer-substring comint-last-output-start
+ (process-mark proc)))
+ (if ange-ftp-process-busy
+ (progn
+ (setq ange-ftp-process-string (concat ange-ftp-process-string
+ str))
+
+ ;; if we gave an empty password to the USER command earlier
+ ;; then we should send a null password now.
+ (if (string-match "Password: *$" ange-ftp-process-string)
+ (process-send-string proc "\n"))))
+ (while (and ange-ftp-process-busy
+ (string-match "\n" ange-ftp-process-string))
+ (let ((line (substring ange-ftp-process-string
+ 0
+ (match-beginning 0)))
+ (seen-prompt nil))
+ (setq ange-ftp-process-string (substring ange-ftp-process-string
+ (match-end 0)))
+ (while (string-match "\\`ftp> *" line)
+ (setq seen-prompt t)
+ (setq line (substring line (match-end 0))))
+ (if (not (and seen-prompt ange-ftp-pending-error-line))
+ (ange-ftp-process-handle-line line proc)
+ ;; If we've seen a potential error message and it
+ ;; hasn't been cancelled by a good message before
+ ;; seeing a propt, then the error was real.
+ (delete-process proc)
+ (setq ange-ftp-process-busy nil
+ ange-ftp-process-result-line ange-ftp-pending-error-line))))
+
+ ;; has the ftp client finished? if so then do some clean-up
+ ;; actions.
+ (if (not ange-ftp-process-busy)
+ (progn
+ ;; reset the xfer size
+ (setq ange-ftp-xfer-size 0)
+
+ ;; issue the "done" message since we've finished.
+ (if (and ange-ftp-process-msg
+ ange-ftp-process-verbose
+ ange-ftp-process-result)
+ (progn
+ (ange-ftp-message "%s...done" ange-ftp-process-msg)
+ (ange-ftp-repaint-minibuffer)
+ (setq ange-ftp-process-msg nil)))
+
+ ;; is there a continuation we should be calling? if so,
+ ;; we'd better call it, making sure we only call it once.
+ (if ange-ftp-process-continue
+ (let ((cont ange-ftp-process-continue))
+ (setq ange-ftp-process-continue nil)
+ (ange-ftp-call-cont cont
+ ange-ftp-process-result
+ ange-ftp-process-result-line))))))))
(defun ange-ftp-process-sentinel (proc str)
"When ftp process changes state, nuke all file-entries in cache."
@@ -1795,8 +1789,7 @@ good, skip, fatal, or unknown."
(defun ange-ftp-gwp-start (host user name args)
"Login to the gateway machine and fire up an ftp process."
- (let* ((gw-user (ange-ftp-get-user ange-ftp-gateway-host))
- ;; It would be nice to make process-connection-type nil,
+ (let* (;; It would be nice to make process-connection-type nil,
;; but that doesn't work: ftp never responds.
;; Can anyone find a fix for that?
(proc (let ((process-connection-type t))
@@ -2137,7 +2130,6 @@ suffix of the form #PORT to specify a non-default port"
(save-excursion
(set-buffer (process-buffer proc))
(let* ((status (ange-ftp-raw-send-cmd proc "hash"))
- (result (car status))
(line (cdr status)))
(save-match-data
(if (string-match ange-ftp-hash-mark-msgs line)
@@ -4484,8 +4476,7 @@ NEWNAME should be the name to give the new compressed or uncompressed file.")
;; `ange-ftp-ls' handles this.
(defun ange-ftp-insert-directory (file switches &optional wildcard full)
- (let ((short (ange-ftp-abbreviate-filename file))
- (parsed (ange-ftp-ftp-name (expand-file-name file)))
+ (let ((parsed (ange-ftp-ftp-name (expand-file-name file)))
tem)
(if parsed
(if (and (not wildcard)
@@ -4511,10 +4502,9 @@ NEWNAME should be the name to give the new compressed or uncompressed file.")
(defun ange-ftp-file-name-sans-versions (file keep-backup-version)
(let* ((short (ange-ftp-abbreviate-filename file))
(parsed (ange-ftp-ftp-name short))
- host-type func)
+ func)
(if parsed
- (setq host-type (ange-ftp-host-type (car parsed))
- func (cdr (assq (ange-ftp-host-type (car parsed))
+ (setq func (cdr (assq (ange-ftp-host-type (car parsed))
ange-ftp-sans-version-alist))))
(if func (funcall func file keep-backup-version)
(ange-ftp-real-file-name-sans-versions file keep-backup-version))))
diff --git a/lisp/net/newsticker.el b/lisp/net/newsticker.el
index c659769535..6eea8aa4bf 100644
--- a/lisp/net/newsticker.el
+++ b/lisp/net/newsticker.el
@@ -10,7 +10,7 @@
;; Created: 17. June 2003
;; Keywords: News, RSS
;; Time-stamp: "26. August 2005, 16:33:46 (ulf)"
-;; CVS-Version: $Id: newsticker.el,v 1.2 2005/09/12 22:54:28 miles Exp $
+;; CVS-Version: $Id: newsticker.el,v 1.3 2005/09/13 08:47:44 lektu Exp $
(defconst newsticker-version "1.8" "Version number of newsticker.el.")
@@ -86,7 +86,7 @@
;; following.
;; (add-hook 'newsticker-mode-hook 'imenu-add-menubar-index)
-;; That's it.
+;; That's it.
;; Usage
;; -----
@@ -353,6 +353,11 @@
(require 'derived)
(require 'xml)
+;; Silence warnings
+(defvar tool-bar-map)
+(defvar w3-mode-map)
+(defvar w3m-minor-mode-map)
+
;; ======================================================================
;;; Customizables
;; ======================================================================
@@ -967,7 +972,7 @@ If t the echo area will not show immortal items. See also
:type 'boolean
:set 'newsticker--set-customvar
:group 'newsticker-ticker)
-
+
(defcustom newsticker-hide-old-items-in-echo-area
t
"Decides whether to show only the newest news items in the ticker.
@@ -2368,7 +2373,7 @@ running already."
(run-at-time newsticker-display-interval
newsticker-display-interval
'newsticker--display-tick))))
-
+
(defun newsticker-stop ()
"Stop the newsticker and the newsticker-ticker.
Cancel the timers for display and retrieval. Run `newsticker-stop-hook'
@@ -2429,7 +2434,7 @@ Unless FORCE is t this is donly only if necessary, i.e. when the
;; Emacs 21.3.50 does not care if we turn off auto-fill in the
;; definition of newsticker-mode, so we do it here (again)
(auto-fill-mode -1)
-
+
(set-buffer-file-coding-system 'utf-8)
(if newsticker-use-full-width
@@ -2521,7 +2526,7 @@ calls `w3m-toggle-inline-image'. It works only if
(w3m-remove-image
pos (next-single-property-change pos 'w3m-image))
(w3m-toggle-inline-image t))))))))))))
-
+
;; ======================================================================
;;; keymap stuff
;; ======================================================================
@@ -2789,7 +2794,7 @@ not get changed."
(interactive)
(newsticker--buffer-hideshow 'desc-old nil)
(newsticker--buffer-redraw))
-
+
(defun newsticker-show-old-item-desc ()
"Show the description of old items."
(interactive)
@@ -2863,7 +2868,7 @@ not get changed."
"Hide description of entry at point."
(interactive)
(save-excursion
- (let* (pos1 pos2
+ (let* (pos1 pos2
(inhibit-read-only t)
inv-prop org-inv-prop
is-invisible)
@@ -2890,7 +2895,7 @@ not get changed."
"Show description of entry at point."
(interactive)
(save-excursion
- (let* (pos1 pos2
+ (let* (pos1 pos2
(inhibit-read-only t)
inv-prop org-inv-prop
is-invisible)
@@ -3049,7 +3054,7 @@ in an element of `newsticker-url-list' or `newsticker-url-list-defaults'."
(set-process-coding-system proc 'no-conversion 'no-conversion)
(set-process-sentinel proc 'newsticker--sentinel)))))
-
+
(defun newsticker-mouse-browse-url (event)
"Call `browse-url' for the link of the item at which the EVENT occurred."
(interactive "e")
@@ -3157,7 +3162,7 @@ Argument EVENT tells what has happened to the process."
(let ((start (match-beginning 0)))
(unless (search-forward "-->" nil t)
(error "Can't find end of comment"))
- (delete-region start (point))))
+ (delete-region start (point))))
;; And another one (20050702)! If description is HTML
;; encoded and starts with a `<', wrap the whole
;; description in a CDATA expression. This happened for
@@ -3324,7 +3329,7 @@ Argument EVENT tells what has happened to the process."
(guid (if (stringp tguid)
tguid
(car (xml-node-children tguid)))))
- ;;(message "guid=%s" guid)
+ ;;(message "guid=%s" guid)
(setq old-item
(newsticker--cache-contains newsticker--cache
name-symbol title
@@ -3396,7 +3401,7 @@ Argument EVENT tells what has happened to the process."
(when (and imageurl
(string-match "%l" newsticker-heading-format))
(newsticker--image-get name imageurl))))))
-
+
(defun newsticker--display-tick ()
"Called from the display timer.
This function calls a display function, according to the variable
@@ -3828,17 +3833,17 @@ Keeps order of feeds as given in `newsticker-url-list' and
feed-name-symbol)))
items)
(put-text-property pos (point) 'feed (car feed))
-
+
;; insert empty line between feeds
(let ((p (point)))
(insert "\n")
(put-text-property p (point) 'hard t)))))
(append newsticker-url-list newsticker-url-list-defaults))
-
+
(newsticker--buffer-set-faces (point-min) (point-max))
(newsticker--buffer-set-invisibility (point-min) (point-max))
(goto-char (point-min)))
-
+
(defun newsticker--buffer-insert-item (item &optional feed-name-symbol)
"Insert a news item in the current buffer.
Insert the string PREFIX and a formatted representation of the
@@ -3889,7 +3894,7 @@ FEED-NAME-SYMBOL tells to which feed this item belongs."
(setq format newsticker-item-format)
(if (eq type 'feed)
(setq format newsticker-heading-format)))
-
+
(while (> (length format) 0)
(let ((prefix (if (> (length format) 1)
(substring format 0 2)
@@ -3971,7 +3976,7 @@ FEED-NAME-SYMBOL tells to which feed this item belongs."
;; in case that the format string contained newlines
(put-text-property p (point) 'hard t))
(setq format (substring format (match-beginning 2)))))))
-
+
;; decode HTML if possible...
(let ((is-rendered-HTML nil))
(when (and newsticker-html-renderer pos-text-start pos-text-end)
@@ -3990,8 +3995,6 @@ FEED-NAME-SYMBOL tells to which feed this item belongs."
(save-excursion
(funcall newsticker-html-renderer pos-text-start
pos-text-end)))
- ;; FIXME: compiler warning about free variable
- ;; w3m-minor-mode-map
(cond ((eq newsticker-html-renderer 'w3m-region)
(add-text-properties pos (point-max)
(list 'keymap
@@ -4060,7 +4063,7 @@ FEED-NAME-SYMBOL tells to which feed this item belongs."
(add-text-properties pos (point)
(list 'nt-title (newsticker--title item)
'nt-desc (newsticker--desc item))))
-
+
(add-text-properties pos (point)
(list 'nt-type type
'nt-face type
@@ -4083,7 +4086,7 @@ FEED-NAME-SYMBOL tells to which feed this item belongs."
;; left margin
;;(unless (memq type '(feed item))
;;(set-left-margin pos (1- (point)) 1))
-
+
;; save rendered stuff
(cond ((eq type 'desc)
;; preformatted contents
@@ -4201,8 +4204,8 @@ property to '(<nt-type>-<nt-age> <nt-type> <nt-age>)."
(put-text-property (max (point-min) pos1) (1- pos2)
'invisible
(list (intern
- (concat
- (symbol-name
+ (concat
+ (symbol-name
(if (eq nt-type 'extra) 'desc nt-type))
"-"
(symbol-name nt-age)))
@@ -4218,8 +4221,8 @@ property to '(<nt-type>-<nt-age> <nt-type> <nt-age>)."
(put-text-property (1- pos1) (1- pos2)
'invisible
(list (intern
- (concat
- (symbol-name
+ (concat
+ (symbol-name
(if (eq nt-type 'extra) 'desc nt-type))
"-"
(symbol-name nt-age)))
@@ -4253,7 +4256,7 @@ The face is chosen according the values of NT-FACE and AGE."
'newsticker-enclosure-face))))
(when face
(put-text-property pos1 (max pos1 pos2) 'face face))))
-
+
(defun newsticker--insert-image (img string)
"Insert IMG with STRING at point.
This is a work-around for a strange behavior of Emacs versions before
@@ -4528,7 +4531,7 @@ older than TIME."
(newsticker--debug-msg
"Item `%s' from %s has expired on %s"
(newsticker--title item)
- (format-time-string "%Y-%02m-%d, %H:%M"
+ (format-time-string "%Y-%02m-%d, %H:%M"
(newsticker--time item))
(format-time-string "%Y-%02m-%d, %H:%M" exp-time))
(setcar (nthcdr 4 item) new-age)))))
@@ -4746,7 +4749,7 @@ well."
(setcdr feed-list (sort (cdr feed-list)
sort-fun)))
newsticker--cache)))
-
+
(defun newsticker--cache-update (&optional save)
"Update newsticker cache file.
If optional argument SAVE is not nil the cache file is saved to disk."
@@ -4832,7 +4835,7 @@ Export subscriptions to a buffer in OPML Format."
(list name url nil nil nil) t)))
outlines))
(customize-variable 'newsticker-url-list))
-
+
;; ======================================================================
;;; Auto marking
;; ======================================================================
diff --git a/lisp/international/iso-insert.el b/lisp/obsolete/iso-insert.el
index 831ae3ffc1..831ae3ffc1 100644
--- a/lisp/international/iso-insert.el
+++ b/lisp/obsolete/iso-insert.el
diff --git a/lisp/pcvs-defs.el b/lisp/pcvs-defs.el
index 3be6cbd918..cd98158171 100644
--- a/lisp/pcvs-defs.el
+++ b/lisp/pcvs-defs.el
@@ -38,11 +38,14 @@
"*Name or full path of the cvs executable.")
(defvar cvs-version
+ ;; With the divergence of the CVSNT codebase and version numbers, this is
+ ;; not really good any more.
(ignore-errors
(with-temp-buffer
(call-process cvs-program nil t nil "-v")
(goto-char (point-min))
- (when (re-search-forward "(CVS) \\([0-9]+\\)\\.\\([0-9]+\\)" nil t)
+ (when (re-search-forward "(CVS\\(NT\\)?) \\([0-9]+\\)\\.\\([0-9]+\\)"
+ nil t)
(cons (string-to-number (match-string 1))
(string-to-number (match-string 2))))))
"*Version of `cvs' installed on your system.
@@ -490,8 +493,11 @@ It is expected to call the function.")
;; cvs-1.10 and above can take file arguments in other directories
;; while others need to be executed once per directory
(defvar cvs-execute-single-dir
- (if (and (consp cvs-version)
- (or (>= (cdr cvs-version) 10) (> (car cvs-version) 1)))
+ (if (or (null cvs-version)
+ (or (>= (cdr cvs-version) 10) (> (car cvs-version) 1)))
+ ;; Supposedly some recent versions of CVS output some directory info
+ ;; as they recurse downthe tree, but it's not good enough in the case
+ ;; where we run "cvs status foo bar/foo".
'("status")
t)
"Whether cvs commands should be executed a directory at a time.
@@ -506,7 +512,7 @@ Sadly, even with a new cvs executable, if you connect to an older cvs server
a case the sanity check made by pcl-cvs fails and you will have to manually
set this variable to t (until the cvs server is upgraded).
When the above problem occurs, pcl-cvs should (hopefully) catch cvs' error
-message and replace it with a message tell you to change this variable.")
+message and replace it with a message telling you to change this variable.")
;;
(provide 'pcvs-defs)
diff --git a/lisp/progmodes/hideshow.el b/lisp/progmodes/hideshow.el
index 8f08311cea..ddc0e27720 100644
--- a/lisp/progmodes/hideshow.el
+++ b/lisp/progmodes/hideshow.el
@@ -1,12 +1,12 @@
;;; hideshow.el --- minor mode cmds to selectively display code/comment blocks
;; Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
-;; 2004, 2005 Free Software Foundation
+;; 2004, 2005 Free Software Foundation, Inc.
;; Author: Thien-Thi Nguyen <[email protected]>
;; Dan Nicolaescu <[email protected]>
;; Keywords: C C++ java lisp tools editing comments blocks hiding outlines
-;; Maintainer-Version: 5.58.2.4
+;; Maintainer-Version: 5.65.2.2
;; Time-of-Day-Author-Most-Likely-to-be-Recalcitrant: early morning
;; This file is part of GNU Emacs.
@@ -208,11 +208,11 @@
;; Thanks go to the following people for valuable ideas, code and
;; bug reports.
;;
-;; Dean Andrews, Alf-Ivar Holm, Holger Bauer, Christoph Conrad, Dave
-;; Love, Dirk Herrmann, Gael Marziou, Jan Djarv, Guillaume Leray,
-;; Moody Ahmad, Preston F. Crow, Lars Lindberg, Reto Zimmermann,
-;; Keith Sheffield, Chew Meng Kuan, Tony Lam, Pete Ware, Fran�ois
-;; Pinard, Stefan Monnier, Joseph Eydelnant, Michael Ernst
+;; Dean Andrews, Alf-Ivar Holm, Holger Bauer, Christoph Conrad, Dave Love,
+;; Dirk Herrmann, Gael Marziou, Jan Djarv, Guillaume Leray, Moody Ahmad,
+;; Preston F. Crow, Lars Lindberg, Reto Zimmermann, Keith Sheffield,
+;; Chew Meng Kuan, Tony Lam, Pete Ware, Fran�ois Pinard, Stefan Monnier,
+;; Joseph Eydelnant, Michael Ernst, Peter Heslin
;;
;; Special thanks go to Dan Nicolaescu, who reimplemented hideshow using
;; overlays (rather than selective display), added isearch magic, folded
@@ -243,7 +243,6 @@
:prefix "hs-"
:group 'languages)
-;;;###autoload
(defcustom hs-hide-comments-when-hiding-all t
"*Hide the comments too when you do an `hs-hide-all'."
:type 'boolean
@@ -307,6 +306,11 @@ whitespace. Case does not matter.")
(defvar hs-hide-all-non-comment-function nil
"*Function called if non-nil when doing `hs-hide-all' for non-comments.")
+(defvar hs-allow-nesting nil
+ "*If non-nil, hiding remembers internal blocks.
+This means that when the outer block is shown again, any
+previously hidden internal blocks remain hidden.")
+
(defvar hs-hide-hook nil
"*Hook called (with `run-hooks') at the end of commands to hide text.
These commands include the toggling commands (when the result is to hide
@@ -412,12 +416,19 @@ Note that `mode-line-format' is buffer-local.")
;; support functions
(defun hs-discard-overlays (from to)
- "Delete hideshow overlays in region defined by FROM and TO."
+ "Delete hideshow overlays in region defined by FROM and TO.
+Skip \"internal\" overlays if `hs-allow-nesting' is non-nil."
(when (< to from)
(setq from (prog1 to (setq to from))))
- (dolist (ov (overlays-in from to))
- (when (overlay-get ov 'hs)
- (delete-overlay ov))))
+ (if hs-allow-nesting
+ (let (ov)
+ (while (> to (setq from (next-overlay-change from)))
+ (when (setq ov (hs-overlay-at from))
+ (setq from (overlay-end ov))
+ (delete-overlay ov))))
+ (dolist (ov (overlays-in from to))
+ (when (overlay-get ov 'hs)
+ (delete-overlay ov)))))
(defun hs-make-overlay (b e kind &optional b-offset e-offset)
"Return a new overlay in region defined by B and E with type KIND.
@@ -532,19 +543,16 @@ and then further adjusted to be at the end of the line."
;; `q' is the point at the end of the block
(progn (hs-forward-sexp mdata 1)
(end-of-line)
- (point))))
+ (point)))
+ ov)
(when (and (< p (point)) (> (count-lines p q) 1))
- (hs-discard-overlays p q)
+ (cond ((and hs-allow-nesting (setq ov (hs-overlay-at p)))
+ (delete-overlay ov))
+ ((not hs-allow-nesting)
+ (hs-discard-overlays p q)))
(hs-make-overlay p q 'code (- pure-p p)))
(goto-char (if end q (min p pure-p)))))))
-(defun hs-safety-is-job-n ()
- "Warn if `buffer-invisibility-spec' does not contain symbol `hs'."
- (unless (and (listp buffer-invisibility-spec)
- (assq 'hs buffer-invisibility-spec))
- (message "Warning: `buffer-invisibility-spec' does not contain hs!!")
- (sit-for 2)))
-
(defun hs-inside-comment-p ()
"Return non-nil if point is inside a comment, otherwise nil.
Actually, return a list containing the buffer position of the start
@@ -587,7 +595,8 @@ as cdr."
(while (and (< (point) q)
(> (point) p)
(not (looking-at hs-c-start-regexp)))
- (setq p (point)) ;; use this to avoid an infinite cycle
+ ;; avoid an infinite cycle
+ (setq p (point))
(forward-comment 1)
(skip-chars-forward " \t\n\f"))
(when (or (not (looking-at hs-c-start-regexp))
@@ -657,7 +666,8 @@ Return point, or nil if original point was not in a block."
(setq minp (1+ (point)))
(funcall hs-forward-sexp-func 1)
(setq maxp (1- (point))))
- (hs-discard-overlays minp maxp) ; eliminate weirdness
+ (unless hs-allow-nesting
+ (hs-discard-overlays minp maxp))
(goto-char minp)
(while (progn
(forward-comment (buffer-size))
@@ -667,7 +677,6 @@ Return point, or nil if original point was not in a block."
(hs-hide-level-recursive (1- arg) minp maxp)
(goto-char (match-beginning hs-block-start-mdata-select))
(hs-hide-block-at-point t)))
- (hs-safety-is-job-n)
(goto-char maxp))
(defmacro hs-life-goes-on (&rest body)
@@ -681,6 +690,15 @@ and `case-fold-search' are both t."
(put 'hs-life-goes-on 'edebug-form-spec '(&rest form))
+(defun hs-overlay-at (position)
+ "Return hideshow overlay at POSITION, or nil if none to be found."
+ (let ((overlays (overlays-at position))
+ ov found)
+ (while (and (not found) (setq ov (car overlays)))
+ (setq found (and (overlay-get ov 'hs) ov)
+ overlays (cdr overlays)))
+ found))
+
(defun hs-already-hidden-p ()
"Return non-nil if point is in an already-hidden block, otherwise nil."
(save-excursion
@@ -694,12 +712,7 @@ and `case-fold-search' are both t."
;; point is inside a block
(goto-char (match-end 0)))))
(end-of-line)
- (let ((overlays (overlays-at (point)))
- (found nil))
- (while (and (not found) (overlayp (car overlays)))
- (setq found (overlay-get (car overlays) 'hs)
- overlays (cdr overlays)))
- found)))
+ (hs-overlay-at (point))))
(defun hs-c-like-adjust-block-beginning (initial)
"Adjust INITIAL, the buffer position after `hs-block-start-regexp'.
@@ -723,7 +736,8 @@ If `hs-hide-comments-when-hiding-all' is non-nil, also hide the comments."
(hs-life-goes-on
(message "Hiding all blocks ...")
(save-excursion
- (hs-discard-overlays (point-min) (point-max)) ; eliminate weirdness
+ (unless hs-allow-nesting
+ (hs-discard-overlays (point-min) (point-max)))
(goto-char (point-min))
(let ((count 0)
(re (concat "\\("
@@ -746,13 +760,12 @@ If `hs-hide-comments-when-hiding-all' is non-nil, also hide the comments."
(funcall hs-hide-all-non-comment-function)
(hs-hide-block-at-point t)))
;; found a comment, probably
- (let ((c-reg (hs-inside-comment-p))) ; blech!
+ (let ((c-reg (hs-inside-comment-p)))
(when (and c-reg (car c-reg))
(if (> (count-lines (car c-reg) (nth 1 c-reg)) 1)
(hs-hide-block-at-point t c-reg)
(goto-char (nth 1 c-reg))))))
- (message "Hiding ... %d" (setq count (1+ count)))))
- (hs-safety-is-job-n))
+ (message "Hiding ... %d" (setq count (1+ count))))))
(beginning-of-line)
(message "Hiding all blocks ... done")
(run-hooks 'hs-hide-hook)))
@@ -762,7 +775,8 @@ If `hs-hide-comments-when-hiding-all' is non-nil, also hide the comments."
(interactive)
(hs-life-goes-on
(message "Showing all blocks ...")
- (hs-discard-overlays (point-min) (point-max))
+ (let ((hs-allow-nesting nil))
+ (hs-discard-overlays (point-min) (point-max)))
(message "Showing all blocks ... done")
(run-hooks 'hs-show-hook)))
@@ -781,7 +795,6 @@ Upon completion, point is repositioned and the normal hook
(looking-at hs-block-start-regexp)
(hs-find-block-beginning))
(hs-hide-block-at-point end c-reg)
- (hs-safety-is-job-n)
(run-hooks 'hs-hide-hook))))))
(defun hs-show-block (&optional end)
@@ -793,17 +806,15 @@ See documentation for functions `hs-hide-block' and `run-hooks'."
(hs-life-goes-on
(or
;; first see if we have something at the end of the line
- (catch 'eol-begins-hidden-region-p
- (let ((here (point)))
- (dolist (ov (save-excursion (end-of-line) (overlays-at (point))))
- (when (overlay-get ov 'hs)
- (goto-char
- (cond (end (overlay-end ov))
- ((eq 'comment (overlay-get ov 'hs)) here)
- (t (+ (overlay-start ov) (overlay-get ov 'hs-b-offset)))))
- (delete-overlay ov)
- (throw 'eol-begins-hidden-region-p t)))
- nil))
+ (let ((ov (hs-overlay-at (save-excursion (end-of-line) (point))))
+ (here (point)))
+ (when ov
+ (goto-char
+ (cond (end (overlay-end ov))
+ ((eq 'comment (overlay-get ov 'hs)) here)
+ (t (+ (overlay-start ov) (overlay-get ov 'hs-b-offset)))))
+ (delete-overlay ov)
+ t))
;; not immediately obvious, look for a suitable block
(let ((c-reg (hs-inside-comment-p))
p q)
@@ -812,13 +823,13 @@ See documentation for functions `hs-hide-block' and `run-hooks'."
(setq p (car c-reg)
q (cadr c-reg))))
((and (hs-find-block-beginning)
- (looking-at hs-block-start-regexp)) ; fresh match-data, ugh
+ ;; ugh, fresh match-data
+ (looking-at hs-block-start-regexp))
(setq p (point)
q (progn (hs-forward-sexp (hs-match-data t) 1) (point)))))
(when (and p q)
(hs-discard-overlays p q)
(goto-char (if end q (1+ p)))))
- (hs-safety-is-job-n)
(run-hooks 'hs-show-hook))))
(defun hs-hide-level (arg)
@@ -830,7 +841,6 @@ The hook `hs-hide-hook' is run; see `run-hooks'."
(message "Hiding blocks ...")
(hs-hide-level-recursive arg (point-min) (point-max))
(message "Hiding blocks ... done"))
- (hs-safety-is-job-n)
(run-hooks 'hs-hide-hook)))
(defun hs-toggle-hiding ()
diff --git a/lisp/progmodes/vhdl-mode.el b/lisp/progmodes/vhdl-mode.el
index 1caaa1f35b..4014029b11 100644
--- a/lisp/progmodes/vhdl-mode.el
+++ b/lisp/progmodes/vhdl-mode.el
@@ -134,12 +134,15 @@
"Non-nil if GNU Emacs 22, ... is used.")
(defvar compilation-file-regexp-alist)
+(defvar conf-alist)
+(defvar conf-entry)
+(defvar conf-key)
+(defvar ent-alist)
(defvar itimer-version)
(defvar lazy-lock-defer-contextually)
(defvar lazy-lock-defer-on-scrolling)
(defvar lazy-lock-defer-on-the-fly)
-
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; Variables
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@@ -363,7 +366,7 @@ Unit-to-file name mapping: mapping of library unit names to names of files
Case adjustment : adjust case of inserted unit names
\(*) The regular expression must match the error message starting from the
- beginning of the line (but not necessarily to the end of the line).
+ beginning of the line (but not necessarily to the end of the line).
Compile options allows insertion of the library name (see `vhdl-project-alist')
in order to set the compilers library option (e.g. \"vcom -work my_lib\").
@@ -1059,7 +1062,7 @@ begin -- process <label>
<cursor>
elsif <clock>'event and <clock> = '1' then -- rising clock edge
if <enable> = '1' then -- synchronous load
-
+
end if;
end if;
end process <label>;"
@@ -1328,7 +1331,7 @@ Type `C-j' for newlines."
WaveGen_Proc: process
begin
-- insert signal assignments here
-
+
wait until Clk = '1';
end process WaveGen_Proc;
"
@@ -4403,16 +4406,16 @@ Usage:
outputs from this component -> output port created
- signals that are inputs to AND outputs from subcomponents are
considered as internal connections -> internal signal created
-
+
Purpose: With appropriate naming conventions it is possible to
create higher design levels with only a few mouse clicks or key
strokes. A new design level can be created by simply generating a new
component, placing the required subcomponents from the hierarchy
browser, and wiring everything automatically.
-
+
Note: Automatic wiring only works reliably on templates of new
components and component instantiations that were created by VHDL mode.
-
+
Component declarations can be placed in a components package (option
`vhdl-use-components-package') which can be automatically generated for
an entire directory or project (`C-c C-c M-p'). The VHDL'93 direct
@@ -4434,7 +4437,7 @@ Usage:
| Note: Configurations of subcomponents (i.e. hierarchical configuration
| declarations) are currently not considered when displaying
| configurations in speedbar.
-
+
See the options group `vhdl-compose' for all relevant user options.
@@ -15291,7 +15294,7 @@ expansion function)."
(defface vhdl-speedbar-architecture-face
'((((min-colors 88) (class color) (background light)) (:foreground "Blue1"))
(((class color) (background light)) (:foreground "Blue"))
-
+
(((class color) (background dark)) (:foreground "LightSkyBlue")))
"Face used for displaying architecture names."
:group 'speedbar-faces)
diff --git a/lisp/recentf.el b/lisp/recentf.el
index 2025150894..df12debe45 100644
--- a/lisp/recentf.el
+++ b/lisp/recentf.el
@@ -74,6 +74,15 @@ See the command `recentf-save-list'."
:group 'recentf
:type 'file)
+(defcustom recentf-save-file-modes 384 ;; 0600
+ "Mode bits of recentf save file, as an integer, or nil.
+If non-nil, after writing `recentf-save-file', set its mode bits to
+this value. By default give R/W access only to the user who owns that
+file. See also the function `set-file-modes'."
+ :group 'recentf
+ :type '(choice (const :tag "Don't change" nil)
+ integer))
+
(defcustom recentf-exclude nil
"*List of regexps and predicates for filenames excluded from the recent list.
When a filename matches any of the regexps or satisfies any of the
@@ -257,7 +266,7 @@ It is passed a filename to give a chance to transform it.
If it returns nil, the filename is left unchanged."
:group 'recentf
:type '(choice (const :tag "None" nil)
- (const abbreviate-file-name)
+ (const abbreviate-file-name)
function))
(defcustom recentf-show-file-shortcuts-flag t
@@ -1206,6 +1215,8 @@ Write data into the file specified by `recentf-save-file'."
(format ";;; coding: %s\n" recentf-save-file-coding-system)
";;; End:\n")
(write-file (expand-file-name recentf-save-file))
+ (when recentf-save-file-modes
+ (set-file-modes recentf-save-file recentf-save-file-modes))
nil)
(error
(warn "recentf mode: %s" (error-message-string error)))))
diff --git a/lisp/textmodes/reftex-vars.el b/lisp/textmodes/reftex-vars.el
index 170b77d9e3..0f9b88c20a 100644
--- a/lisp/textmodes/reftex-vars.el
+++ b/lisp/textmodes/reftex-vars.el
@@ -29,6 +29,7 @@
(eval-when-compile (require 'cl))
(eval-and-compile
+ (defvar reftex-tables-dirty)
(defun reftex-set-dirty (symbol value)
(setq reftex-tables-dirty t)
(set symbol value)))
@@ -101,22 +102,22 @@
("enumerate" ?i "item:" "~\\ref{%s}" item
(regexp "items?" "Punkte?"))
-
+
("equation" ?e "eq:" "~(\\ref{%s})" t
(regexp "equations?" "eqs?\\." "eqn\\." "Gleichung\\(en\\)?" "Gl\\."))
("eqnarray" ?e "eq:" nil eqnarray-like)
-
+
("figure" ?f "fig:" "~\\ref{%s}" caption
(regexp "figure?[sn]?" "figs?\\." "Abbildung\\(en\\)?" "Abb\\."))
("figure*" ?f nil nil caption)
-
+
("table" ?t "tab:" "~\\ref{%s}" caption
(regexp "tables?" "tab\\." "Tabellen?"))
("table*" ?t nil nil caption)
-
+
("\\footnote[]{}" ?n "fn:" "~\\ref{%s}" 2
(regexp "footnotes?" "Fussnoten?"))
-
+
("any" ?\ " " "~\\ref{%s}" nil)
;; The label macro is hard coded, but it *could* be defined like this:
@@ -208,7 +209,7 @@ The following conventions are valid for all alist entries:
`?t' should point to a textual citation (citation as a noun).
`?p' should point to a parenthetical citation.")
-(defconst reftex-index-macros-builtin
+(defconst reftex-index-macros-builtin
'((default "Default \\index and \\glossary macros"
(("\\index{*}" "idx" ?i "" nil t)
("\\glossary{*}" "glo" ?g "" nil t)))
@@ -220,7 +221,7 @@ The following conventions are valid for all alist entries:
(Index-Shortcut "index.sty with \\shortindexingon"
(("\\index[]{*}" 1 ?i "" nil t)
("\\index*[]{*}" 1 ?I "" nil nil)
- ("^[]{*}" 1 ?^ "" texmathp t)
+ ("^[]{*}" 1 ?^ "" texmathp t)
("_[]{*}" 1 ?_ "" texmathp nil))))
"Builtin stuff for reftex-index-macros.
Lower-case symbols correspond to a style file of the same name in the LaTeX
@@ -232,7 +233,7 @@ distribution. Mixed-case symbols are convenience aliases.")
(defgroup reftex nil
"LaTeX label and citation support."
:tag "RefTeX"
- :link '(url-link :tag "Home Page"
+ :link '(url-link :tag "Home Page"
"http://zon.astro.uva.nl/~dominik/Tools/")
:link '(emacs-commentary-link :tag "Commentary in reftex.el" "reftex.el")
:link '(custom-manual "(reftex)Top")
@@ -327,14 +328,14 @@ when creating that frame (with \"d\" key in an ordinary TOC window), the
automatic recentering is turned on. When the frame gets destroyed, automatic
recentering is turned off again.
-This feature can be turned on and off from the menu
+This feature can be turned on and off from the menu
\(Ref->Options)."
:group 'reftex-table-of-contents-browser
:type '(choice
(const :tag "never" nil)
(const :tag "always" t)
(const :tag "in dedicated frame only" frame)))
-
+
(defcustom reftex-toc-split-windows-horizontally nil
"*Non-nil means, create TOC window by splitting window horizontally."
:group 'reftex-table-of-contents-browser
@@ -426,7 +427,7 @@ When nil, follow-mode will be suspended for stuff in unvisited files."
'(amsmath endnotes fancybox floatfig longtable picinpar
rotating sidecap subfigure supertab wrapfig LaTeX)
"Default label alist specifications. LaTeX should always be the last entry.
-The value of this variable is a list of symbols with associations in the
+The value of this variable is a list of symbols with associations in the
constant `reftex-label-alist-builtin'. Check that constant for a full list
of options."
:group 'reftex-defining-label-environments
@@ -625,7 +626,7 @@ list. However, builtin defaults should normally be set with the variable
(defcustom reftex-section-prefixes '((0 . "part:") (1 . "cha:") (t . "sec:"))
"Prefixes for section labels.
When the label prefix given in an entry in `reftex-label-alist' contains `%S',
-this list is used to determine the correct prefix string depending on the
+this list is used to determine the correct prefix string depending on the
current section level.
The list is an alist, with each entry of the form (KEY . PREFIX)
Possible keys are sectioning macro names like `chapter', section levels
@@ -687,7 +688,7 @@ non-footnote labels."
(regexp)
(repeat :tag "List"
(string :tag "prefix (with colon)"))))
-
+
(defcustom reftex-special-environment-functions nil
"List of functions to be called when trying to figure out current environment.
These are special functions to detect \"environments\" which do not
@@ -733,7 +734,7 @@ And here is the setup for RefTeX:
(let ((pos (point)) p1)
(save-excursion
;; Search for any of the linguex item macros at the beginning of a line
- (if (re-search-backward
+ (if (re-search-backward
\"^[ \\t]*\\\\(\\\\\\\\\\\\(ex\\\\|a\\\\|b\\\\|c\\\\|d\\\\|e\\\\|f\\\\)g?\\\\.\\\\)\" bound t)
(progn
(setq p1 (match-beginning 1))
@@ -743,7 +744,7 @@ And here is the setup for RefTeX:
nil
;; OK, we got it
(cons \"linguex\" p1)))
- ;; Return nil for not found
+ ;; Return nil for not found
nil))))
3. Tell RefTeX to use this function
@@ -942,7 +943,7 @@ This is used to string together whole reference sets, like
(defcustom reftex-vref-is-default nil
"*Non-nil means, the varioref macro \\vref is used as default.
-In the selection buffer, the `v' key toggles the reference macro between
+In the selection buffer, the `v' key toggles the reference macro between
`\\ref' and `\\vref'. The value of this variable determines the default
which is active when entering the selection process.
Instead of nil or t, this may also be a string of type letters indicating
@@ -952,7 +953,7 @@ the label types for which it should be true."
(defcustom reftex-fref-is-default nil
"*Non-nil means, the fancyref macro \\fref is used as default.
-In the selection buffer, the `V' key toggles the reference macro between
+In the selection buffer, the `V' key toggles the reference macro between
`\\ref', `\\fref' and `\\Fref'. The value of this variable determines
the default which is active when entering the selection process.
Instead of nil or t, this may also be a string of type letters indicating
@@ -976,7 +977,7 @@ a label type. If you set this variable to nil, RefTeX will always prompt."
(defcustom reftex-format-ref-function nil
"Function which produces the string to insert as a reference.
-Normally should be nil, because the format to insert a reference can
+Normally should be nil, because the format to insert a reference can
already be specified in `reftex-label-alist'.
This hook also is used by the special commands to insert `\\vref' and `\\fref'
references, so even if you set this, your setting will be ignored by
@@ -1057,13 +1058,13 @@ It is also possible to access all other BibTeX database fields:
%i institution %j journal %k key %m month
%n number %o organization %p pages %P first page
%r address %s school %u publisher %t title
-%v volume %y year
+%v volume %y year
%B booktitle, abbreviated %T title, abbreviated
Usually, only %l is needed. The other stuff is mainly for the echo area
display, and for (setq reftex-comment-citations t).
-%< as a special operator kills punctuation and space around it after the
+%< as a special operator kills punctuation and space around it after the
string has been formatted.
A pair of square brackets indicates an optional argument, and RefTeX
@@ -1078,7 +1079,7 @@ will be prompted for a character to select one of the possible format
strings.
In order to configure this variable, you can either set
`reftex-cite-format' directly yourself or set it to the SYMBOL of one of
-the predefined styles. The predefined symbols are those which have an
+the predefined styles. The predefined symbols are those which have an
association in the constant `reftex-cite-format-builtin'.
E.g.: (setq reftex-cite-format 'natbib)"
:group 'reftex-citation-support
@@ -1172,7 +1173,7 @@ This is a list of 3 strings.
(defcustom reftex-format-cite-function nil
"Function which produces the string to insert as a citation.
-Normally should be nil, because the format to insert a reference can
+Normally should be nil, because the format to insert a reference can
already be specified in `reftex-cite-format'.
The function will be called with two arguments, the CITATION KEY and the
DEFAULT FORMAT, which is taken from `reftex-cite-format'. The function
@@ -1255,7 +1256,7 @@ package here."
:group 'reftex-index-support
:set 'reftex-set-dirty
:type `(list
- (repeat
+ (repeat
:inline t
(list :value ("" "idx" ?a "" nil)
(string :tag "Macro with args")
@@ -1282,7 +1283,7 @@ package here."
This is a list with (MACRO-KEY DEFAULT-TAG).
MACRO-KEY: Character identifying an index macro - see `reftex-index-macros'.
-DEFAULT-TAG: This is the tag to be used if the macro requires a TAG argument.
+DEFAULT-TAG: This is the tag to be used if the macro requires a TAG argument.
When this is nil and a TAG is needed, RefTeX will ask for it.
When this is the empty string and the TAG argument of the index
macro is optional, the TAG argument will be omitted."
@@ -1423,7 +1424,7 @@ to that section."
(defcustom reftex-index-include-context nil
"*Non-nil means, display the index definition context in the index buffer.
-This flag may also be toggled from the index buffer with the `c' key."
+This flag may also be toggled from the index buffer with the `c' key."
:group 'reftex-index-support
:type 'boolean)
@@ -1446,7 +1447,7 @@ This is used when `reftex-view-crossref' is called with point in an
argument of a macro. Note that crossref viewing for citations,
references (both ways) and index entries is hard-coded. This variable
is only to configure additional structures for which crossreference
-viewing can be useful. Each entry has the structure
+viewing can be useful. Each entry has the structure
\(MACRO-RE SEARCH-RE HIGHLIGHT).
@@ -1467,7 +1468,7 @@ argument of a \\ref or \\cite macro, and no other message is being
displayed, the echo area will display information about that cross
reference. You can also set the variable to the symbol `window'. In
this case a small temporary window is used for the display.
-This feature can be turned on and off from the menu
+This feature can be turned on and off from the menu
\(Ref->Options)."
:group 'reftex-viewing-cross-references
:type '(choice (const :tag "off" nil)
@@ -1513,7 +1514,7 @@ Several entries are possible.
- If an element is the name of an environment variable, its content is used.
- If an element starts with an exclamation mark, it is used as a command
to retrieve the path. A typical command with the kpathsearch library would
- be `!kpsewhich -show-path=.tex'.
+ be `!kpsewhich -show-path=.tex'.
- Otherwise the element itself is interpreted as a path.
Multiple directories can be separated by the system dependent `path-separator'.
Directories ending in `//' or `!!' will be expanded recursively.
@@ -1528,7 +1529,7 @@ Several entries are possible.
- If an element is the name of an environment variable, its content is used.
- If an element starts with an exclamation mark, it is used as a command
to retrieve the path. A typical command with the kpathsearch library would
- be `!kpsewhich -show-path=.bib'.
+ be `!kpsewhich -show-path=.bib'.
- Otherwise the element itself is interpreted as a path.
Multiple directories can be separated by the system dependent `path-separator'.
Directories ending in `//' or `!!' will be expanded recursively.
@@ -1573,7 +1574,7 @@ Normally, RefTeX searches the paths given in the environment variables
TEXINPUTS and BIBINPUTS to find TeX files and BibTeX database files.
With this option turned on, it calls an external program specified in the
option `reftex-external-file-finders' instead. As a side effect,
-the variables `reftex-texpath-environment-variables' and
+the variables `reftex-texpath-environment-variables' and
`reftex-bibpath-environment-variables' will be ignored."
:group 'reftex-finding-files
:type 'boolean)
@@ -1664,7 +1665,7 @@ list."
(defcustom reftex-save-parse-info nil
"*Non-nil means, save information gathered with parsing in a file.
The file MASTER.rel in the same directory as MASTER.tex is used to save the
-information. When this variable is t,
+information. When this variable is t,
- accessing the parsing information for the first time in an editing session
will read that file (if available) instead of parsing the document.
- exiting Emacs or killing a buffer in reftex-mode will cause a new version
@@ -1857,7 +1858,7 @@ RefTeX uses `fset' to take over the function calls. Changing the variable
may require a restart of Emacs in order to become effective."
:group 'reftex-miscellaneous-configurations
:group 'LaTeX
- :type '(choice
+ :type '(choice
(const :tag "No plug-ins" nil)
(const :tag "All possible plug-ins" t)
(list
diff --git a/lisp/url/ChangeLog b/lisp/url/ChangeLog
index ad0ee15020..c08d73739e 100644
--- a/lisp/url/ChangeLog
+++ b/lisp/url/ChangeLog
@@ -1,3 +1,13 @@
+2005-09-15 Chong Yidong <[email protected]>
+
+ * url-mailto.el (url-mailto): Delete mail buffer after sending
+ autogenerated mail.
+ Call `compose-mail with `new' argument if possible.
+
+2005-09-13 Chong Yidong <[email protected]>
+
+ * url-mailto.el (url-mailto): Always use a new mail buffer.
+
2005-09-01 Chong Yidong <[email protected]>
* url-util.el (url-parse-query-string): New optional argument
diff --git a/lisp/url/url-mailto.el b/lisp/url/url-mailto.el
index 3316b7c4b9..3b306bbcc8 100644
--- a/lisp/url/url-mailto.el
+++ b/lisp/url/url-mailto.el
@@ -92,7 +92,11 @@
(setq args (cons (list "to" to) args))))
(setq subject (cdr-safe (assoc "subject" args)))
- (if (fboundp url-mail-command) (funcall url-mail-command) (mail))
+ (if (fboundp url-mail-command)
+ (if (eq url-mail-command 'compose-mail)
+ (compose-mail nil nil nil 'new)
+ (funcall url-mail-command))
+ (mail 'new))
(while args
(if (string= (caar args) "body")
(progn
@@ -124,12 +128,14 @@
;; It seems Microsoft-ish to send without warning.
;; Fixme: presumably this should depend on a privacy setting.
(if (y-or-n-p "Send this auto-generated mail? ")
- (cond ((eq url-mail-command 'compose-mail)
- (funcall (get mail-user-agent 'sendfunc) nil))
- ;; otherwise, we can't be sure
- ((fboundp 'message-send-and-exit)
- (message-send-and-exit))
- (t (mail-send-and-exit nil)))))
+ (let ((buffer (current-buffer)))
+ (cond ((eq url-mail-command 'compose-mail)
+ (funcall (get mail-user-agent 'sendfunc) nil))
+ ;; otherwise, we can't be sure
+ ((fboundp 'message-send-and-exit)
+ (message-send-and-exit))
+ (t (mail-send-and-exit nil)))
+ (kill-buffer buffer))))
nil))
(provide 'url-mailto)
diff --git a/lispref/ChangeLog b/lispref/ChangeLog
index 41e6c1aa9e..3252e671c1 100644
--- a/lispref/ChangeLog
+++ b/lispref/ChangeLog
@@ -1,3 +1,18 @@
+2005-09-15 Chong Yidong <[email protected]>
+
+ * display.texi (Defining Images): Document `image-load-path'.
+
+2005-09-15 Richard M. Stallman <[email protected]>
+
+ * objects.texi (Printed Representation): Minor cleanup.
+ (Box Diagrams): Minor fix.
+ (Cons Cell Type): Move (...) index item here.
+ (Box Diagrams): From here.
+ (Array Type): Minor fix.
+ (Type Predicates): Delete index "predicates".
+ (Hash Table Type): Clarify xref.
+ (Dotted Pair Notation): Minor fix.
+
2005-09-10 Chong Yidong <[email protected]>
* files.texi (Saving Buffers): Fix typo.
diff --git a/lispref/display.texi b/lispref/display.texi
index b6348800fa..96aa2335a6 100644
--- a/lispref/display.texi
+++ b/lispref/display.texi
@@ -3946,10 +3946,29 @@ The first specification in the list whose @var{type} is supported, and
@var{file} exists, is used to construct the image specification to be
returned. If no specification is satisfied, @code{nil} is returned.
-The image is looked for first on @code{load-path} and then in
-@code{data-directory}.
+The image is looked for in @code{image-load-path}.
@end defun
+@defvar image-load-path
+@tindex image-load-path
+This variable's value is a list of locations in which to search for
+image files. If an element is a string, it is taken to be the name of
+a directory to search. If an element is a variable symbol, the value
+of that variable is used as a list of directories to search.
+
+The default is to search in @file{@code{data-directory}/images}, then
+in @code{data-directory}, and finally in the directories specified by
+@code{load-path}. Subdirectories are not automatically included in
+the search, so if you put an image file in a subdirectory, you have to
+supply the subdirectory name explicitly. For example, if you put an
+image file @file{bar.xpm} in @file{@code{data-directory}/images/foo/},
+you should define the image as:
+
+@example
+ (defimage foo-image '((:type xpm :file "foo/bar.xpm")))
+@end example
+@end defvar
+
@node Showing Images
@subsection Showing Images
diff --git a/lispref/objects.texi b/lispref/objects.texi
index 99ef896c4b..fcfad022dd 100644
--- a/lispref/objects.texi
+++ b/lispref/objects.texi
@@ -78,10 +78,10 @@ syntax. @xref{Read and Print}.
In most cases, an object's printed representation is also a read
syntax for the object. However, some types have no read syntax, since
it does not make sense to enter objects of these types as constants in
-a Lisp program. These objects are printed in @dfn{hash notation}: the
-characters @samp{#<} followed by a descriptive string (typically the
-type name followed by the name of the object), and closed with a
-matching @samp{>}. For example:
+a Lisp program. These objects are printed in @dfn{hash notation},
+which consists of the characters @samp{#<}, a descriptive string
+(typically the type name followed by the name of the object), and a
+closing @samp{>}. For example:
@example
(current-buffer)
@@ -621,6 +621,7 @@ come to refer to any structure made out of cons cells.
@dfn{atoms}.
@cindex parenthesis
+@cindex @samp{(@dots{})} in lists
The read syntax and printed representation for lists are identical, and
consist of a left parenthesis, an arbitrary number of elements, and a
right parenthesis. Here are examples of lists:
@@ -706,7 +707,6 @@ buttercup)}, sketched in a different manner:
@end group
@end smallexample
-@cindex @samp{(@dots{})} in lists
@cindex @code{nil} in lists
@cindex empty list
A list with no elements in it is the @dfn{empty list}; it is identical
@@ -749,7 +749,7 @@ two-element list:
@end group
@end example
- The same list represented in the first box notation looks like this:
+ The same list represented in the second box notation looks like this:
@example
@group
@@ -776,7 +776,7 @@ two-element list:
@dfn{Dotted pair notation} is a general syntax for cons cells that
represents the @sc{car} and @sc{cdr} explicitly. In this syntax,
@code{(@var{a} .@: @var{b})} stands for a cons cell whose @sc{car} is
-the object @var{a}, and whose @sc{cdr} is the object @var{b}. Dotted
+the object @var{a} and whose @sc{cdr} is the object @var{b}. Dotted
pair notation is more general than list syntax because the @sc{cdr}
does not have to be a list. However, it is more cumbersome in cases
where list syntax would work. In dotted pair notation, the list
@@ -913,9 +913,9 @@ you can get the same effect with nested one-dimensional arrays.) Each
type of array has its own read syntax; see the following sections for
details.
- The array type is contained in the sequence type and
-contains the string type, the vector type, the bool-vector type, and the
-char-table type.
+ The array type is a subset of the sequence type, and contains the
+string type, the vector type, the bool-vector type, and the char-table
+type.
@node String Type
@subsection String Type
@@ -1166,8 +1166,8 @@ only the first 3 bits are used:
A hash table is a very fast kind of lookup table, somewhat like an
alist in that it maps keys to corresponding values, but much faster.
-Hash tables have no read syntax, and
-print using hash notation. @xref{Hash Tables}.
+Hash tables have no read syntax, and print using hash notation.
+@xref{Hash Tables}, for functions that operate on hash tables.
@example
(make-hash-table)
@@ -1607,7 +1607,6 @@ to a non-@code{nil} value. @xref{Output Variables}.
@node Type Predicates
@section Type Predicates
-@cindex predicates
@cindex type checking
@kindex wrong-type-argument
@@ -1942,6 +1941,7 @@ always true.
@end group
@end example
+@cindex equality of strings
Comparison of strings is case-sensitive, but does not take account of
text properties---it compares only the characters in the strings. For
technical reasons, a unibyte string and a multibyte string are
diff --git a/man/ChangeLog b/man/ChangeLog
index 69cf7458a7..5eb7c211e9 100644
--- a/man/ChangeLog
+++ b/man/ChangeLog
@@ -1,3 +1,25 @@
+2005-09-15 Richard M. Stallman <[email protected]>
+
+ * buffers.texi (List Buffers): Fix xref.
+
+ * rmail.texi (Rmail Basics): Fix xref.
+
+ * emacs.texi (Top): Update subnode menus.
+
+ * files.texi (Saving Commands): New node, broken out of Saving.
+ (Customize Save): New node, broken out of Saving.
+ Clarify effect of write-region-inhibit-fsync.
+ (Misc File Ops): Say write-region-inhibit-fsync affects write-region.
+
+ * newsticker.texi: Fix @setfilename.
+
+ * Makefile.in (INFO_TARGETS, DVI_TARGETS): Add newsticker targets.
+ (../info/newsticker, newsticker.dvi): New targets.
+
+2005-09-14 Romain Francoise <[email protected]>
+
+ * files.texi (Saving): Mention write-region-inhibit-fsync.
+
2005-09-05 Chong Yidong <[email protected]>
* custom.texi (Custom Themes): New node.
diff --git a/man/Makefile.in b/man/Makefile.in
index 3cc88bf7b9..d75255d378 100644
--- a/man/Makefile.in
+++ b/man/Makefile.in
@@ -42,7 +42,7 @@ INFO_TARGETS = ../info/emacs ../info/emacs-xtra ../info/ccmode ../info/cl \
../info/idlwave ../info/eudc ../info/ebrowse ../info/pcl-cvs \
../info/woman ../info/eshell ../info/org ../info/url \
../info/speedbar ../info/tramp ../info/ses ../info/smtpmail \
- ../info/flymake
+ ../info/flymake ../info/newsticker
DVI_TARGETS = emacs.dvi calc.dvi cc-mode.dvi cl.dvi dired-x.dvi \
ediff.dvi forms.dvi gnus.dvi message.dvi emacs-mime.dvi \
gnus.dvi message.dvi sieve.dvi pgg.dvi mh-e.dvi \
@@ -50,7 +50,7 @@ DVI_TARGETS = emacs.dvi calc.dvi cc-mode.dvi cl.dvi dired-x.dvi \
ada-mode.dvi autotype.dvi idlwave.dvi eudc.dvi ebrowse.dvi \
pcl-cvs.dvi woman.dvi eshell.dvi org.dvi url.dvi \
speedbar.dvi tramp.dvi ses.dvi smtpmail.dvi flymake.dvi \
- emacs-xtra.dvi
+ newsticker.dvi emacs-xtra.dvi
INFOSOURCES = info.texi
# The following rule does not work with all versions of `make'.
@@ -322,6 +322,11 @@ smtpmail.dvi: smtpmail.texi
flymake.dvi: flymake.texi
$(ENVADD) $(TEXI2DVI) ${srcdir}/flymake.texi
+../info/newsticker: newsticker.texi
+ cd $(srcdir); $(MAKEINFO) newsticker.texi
+newsticker.dvi: newsticker.texi
+ $(ENVADD) $(TEXI2DVI) ${srcdir}/newsticker.texi
+
mostlyclean:
rm -f *.log *.cp *.fn *.ky *.pg *.vr core *.tp *.core gnustmp.*
diff --git a/man/buffers.texi b/man/buffers.texi
index 9c572ca17c..b47d337e5a 100644
--- a/man/buffers.texi
+++ b/man/buffers.texi
@@ -179,7 +179,7 @@ buffers that were current most recently come first.
@samp{*} in the first field of a line indicates the buffer is ``modified.''
If several buffers are modified, it may be time to save some with @kbd{C-x s}
-(@pxref{Saving}). @samp{%} indicates a read-only buffer. @samp{.} marks the
+(@pxref{Save Commands}). @samp{%} indicates a read-only buffer. @samp{.} marks the
current buffer. Here is an example of a buffer list:@refill
@smallexample
diff --git a/man/emacs.texi b/man/emacs.texi
index b6a11cddc4..9faf6e19ae 100644
--- a/man/emacs.texi
+++ b/man/emacs.texi
@@ -378,7 +378,9 @@ File Handling
Saving Files
+* Save Commands:: Commands for saving files.
* Backup:: How Emacs saves the old version of your file.
+* Customize Save:: Customizing the saving of files.
* Interlocking:: How Emacs protects against simultaneous editing
of one file by two users.
* File Shadowing:: Copying files to "shadows" automatically.
diff --git a/man/files.texi b/man/files.texi
index 912fc6f7bf..6bf9a590a9 100644
--- a/man/files.texi
+++ b/man/files.texi
@@ -366,6 +366,21 @@ variables defined for that file (@pxref{File Variables}).
@dfn{Saving} a buffer in Emacs means writing its contents back into the file
that was visited in the buffer.
+@menu
+* Save Commands:: Commands for saving files.
+* Backup:: How Emacs saves the old version of your file.
+* Customize Save:: Customizing the saving of files.
+* Interlocking:: How Emacs protects against simultaneous editing
+ of one file by two users.
+* Shadowing: File Shadowing. Copying files to "shadows" automatically.
+* Time Stamps:: Emacs can update time stamps on saved files.
+@end menu
+
+@node Save Commands
+@subsection Commands for Saving Files
+
+ These are the commands that relate to saving and writing files.
+
@table @kbd
@item C-x C-s
Save the current buffer in its visited file on disk (@code{save-buffer}).
@@ -483,33 +498,6 @@ notifies you of this fact, because it probably indicates a problem caused
by simultaneous editing and requires your immediate attention.
@xref{Interlocking,, Simultaneous Editing}.
-@vindex require-final-newline
- If the value of the variable @code{require-final-newline} is
-@code{t}, Emacs silently puts a newline at the end of any file that
-doesn't already end in one, every time a file is saved or written. If
-the value is @code{visit}, Emacs adds a newline at the end of any file
-that doesn't have one, just after it visits the file. (This marks the
-buffer as modified, and you can undo it.) If the value is
-@code{visit-save}, that means to add newlines both on visiting and on
-saving. If the value is @code{nil}, Emacs leaves the end of the file
-unchanged; if it's neither @code{nil} nor @code{t}, Emacs asks you
-whether to add a newline. The default is @code{nil}.
-
-@vindex mode-require-final-newline
- Many major modes are designed for specific kinds of files that are
-always supposed to end in newlines. These major modes set the
-variable @code{require-final-newline} according to
-@code{mode-require-final-newline}. By setting the latter variable,
-you can control how these modes handle final newlines.
-
-@menu
-* Backup:: How Emacs saves the old version of your file.
-* Interlocking:: How Emacs protects against simultaneous editing
- of one file by two users.
-* Shadowing: File Shadowing. Copying files to "shadows" automatically.
-* Time Stamps:: Emacs can update time stamps on saved files.
-@end menu
-
@node Backup
@subsection Backup Files
@cindex backup file
@@ -716,6 +704,38 @@ typically break hard links, disconnecting the file name you visited from
any alternate names for the same file. This has nothing to do with
Emacs---the version control system does it.
+@node Customize Save
+@subsection Customizing Saving of Files
+
+@vindex require-final-newline
+ If the value of the variable @code{require-final-newline} is
+@code{t}, saving or writing a file silently puts a newline at the end
+if there isn't already one there. If the value is @code{visit}, Emacs
+adds a newline at the end of any file that doesn't have one, just
+after it visits the file. (This marks the buffer as modified, and you
+can undo it.) If the value is @code{visit-save}, that means to add
+newlines both on visiting and on saving. If the value is @code{nil},
+Emacs leaves the end of the file unchanged; if it's neither @code{nil}
+nor @code{t}, Emacs asks you whether to add a newline. The default is
+@code{nil}.
+
+@vindex mode-require-final-newline
+ Many major modes are designed for specific kinds of files that are
+always supposed to end in newlines. These major modes set the
+variable @code{require-final-newline} according to
+@code{mode-require-final-newline}. By setting the latter variable,
+you can control how these modes handle final newlines.
+
+@vindex write-region-inhibit-fsync
+ When Emacs saves a file, it invokes the @code{fsync} system call to
+force the data immediately out to disk. This is important for safety
+if the system crashes or in case of power outage. However, it can be
+disruptive on laptops using power saving, because it requires the disk
+to spin up each time you save a file. Setting
+@code{write-region-inhibit-fsync} to a non-@code{nil} value disables
+this synchronization. Be careful---this means increased risk of data
+loss.
+
@node Interlocking
@subsection Protection against Simultaneous Editing
@@ -2999,8 +3019,10 @@ leaving point unchanged before the contents and the mark after them.
@findex write-region
@kbd{M-x write-region} is the inverse of @kbd{M-x insert-file}; it
copies the contents of the region into the specified file. @kbd{M-x
-append-to-file} adds the text of the region to the end of the specified
-file. @xref{Accumulating Text}.
+append-to-file} adds the text of the region to the end of the
+specified file. @xref{Accumulating Text}. The variable
+@code{write-region-inhibit-fsync} applies to these commands, as well
+as saving files; see @ref{Customize Save}.
@findex delete-file
@cindex deletion (of files)
diff --git a/man/newsticker.texi b/man/newsticker.texi
new file mode 100644
index 0000000000..8a1f684bf6
--- /dev/null
+++ b/man/newsticker.texi
@@ -0,0 +1,676 @@
+\input texinfo @c -*-texinfo-*-
+@comment $Id: newsticker.texi,v 1.4 2005/09/15 12:32:57 rms Exp $
+@comment %**start of header
+@setfilename ../info/newsticker
+@set VERSION 1.8
+@set UPDATED ``$Id: newsticker.texi,v 1.4 2005/09/15 12:32:57 rms Exp $''
+@settitle Newsticker @value{VERSION}
+@syncodeindex vr cp
+@syncodeindex fn cp
+@syncodeindex pg cp
+@comment %**end of header
+
+@copying
+This manual is for Newsticker (version @value{VERSION}, @value{UPDATED}).
+
+@noindent
+Copyright @copyright{} 2004, 2005 Free Software Foundation, Inc.
+
+@quotation
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled ``GNU Free
+Documentation License''.
+@end quotation
+@end copying
+
+@dircategory Emacs
+@direntry
+* Newsticker: (newsticker). A Newsticker for Emacs.
+@end direntry
+
+@titlepage
+@title Newsticker -- a Newsticker for Emacs
+@subtitle for version @value{VERSION}, @value{UPDATED}
+@author Ulf Jasper
+@author @email{ulf.jasper@@web.de}
+@author @uref{http://de.geocities.com/ulf_jasper}
+@page
+@vskip 0pt plus 1filll
+@insertcopying
+@end titlepage
+
+@contents
+
+@ifnottex
+@node Top
+@top Newsticker
+
+@insertcopying
+@end ifnottex
+
+@menu
+* Overview::
+* Requirements::
+* Installation::
+* Usage::
+* Configuration::
+* Remarks::
+* GNU Free Documentation License::
+* Index::
+@end menu
+
+@node Overview
+@chapter Overview
+
+Newsticker provides a newsticker for Emacs. A newsticker is a thing
+that asynchronously retrieves headlines from a list of news sites,
+prepares these headlines for reading, and allows for loading the
+corresponding articles in a web browser.
+
+Headlines consist of a title and (possibly) a small description. They
+are contained in RSS (RDF Site Summary) files. Newsticker should work
+with all RSS files that follow the @uref{http://purl.org/rss/1.0/spec,
+RDF Rich Site Summary 1.0} specification. It should also work with
+version 2.0 as well as other/older/alternative rss formats (like
+0.9<something> or such). In other words: Newsticker is a ``RSS
+reader'' or ``RSS aggregator''.
+
+Newsticker provides several commands for reading headlines, navigating
+through them, marking them as read/unread, hiding old headlines etc.
+Headlines can be displayed as plain text or as rendered HTML.
+
+Headlines can be displayed in the echo area, either scrolling like
+messages in a stock-quote ticker, or just changing.
+
+Newsticker allows for automatic processing of headlines by providing
+hooks and (sample) functions for automatically downloading images and
+enclosed files (as delivered by podcasts, e.g.).
+
+@ifhtml
+Here are screen shots of the @uref{newsticker-1.7.png, version 1.7
+(current version)} and some older screen shots:
+@uref{newsticker-1.6.png, version 1.6},
+@uref{newsticker-1.5.png, version 1.5},
+@uref{newsticker-1.4.png, version 1.4}
+@uref{newsticker-1.3.png, version 1.3},
+@uref{newsticker-1.0.png, version 1.0}.
+@end ifhtml
+
+@node Requirements
+@chapter Requirements
+
+Newsticker can be used with
+@uref{http://www.gnu.org/software/emacs/emacs.html, GNU Emacs} version
+21.1 or later as well as @uref{http://www.xemacs.org, XEmacs}. It
+requires an XML-parser (@file{xml.el}) which is part of GNU Emacs. If
+you are using XEmacs you want to get the @file{net-utils} package
+which contains @file{xml.el} for XEmacs.
+
+Newsticker requires a program which can retrieve files via http and
+prints them to stdout. By default Newsticker will use
+@uref{http://www.gnu.org/software/wget/wget.html, wget} for this task.
+
+
+@node Installation
+@chapter Installation
+
+Place Newsticker in a directory where Emacs can find it. Add the
+following line to your Emacs startup file (@file{~/.emacs}).
+
+@example
+(add-to-list 'load-path "/path/to/newsticker/")
+(autoload 'newsticker-start "newsticker" "Emacs Newsticker" t)
+(autoload 'newsticker-show-news "newsticker" "Emacs Newsticker" t)
+@end example
+
+Newsticker-mode supports imenu. This allows for navigating with the
+help of a menu. In order to use this feature you should also add the
+following.
+
+@example
+(add-hook 'newsticker-mode-hook 'imenu-add-menubar-index)
+@end example
+
+That's it.
+
+@node Usage
+@chapter Usage
+
+@findex newsticker-show-news
+The command @command{newsticker-show-news} will display all available
+headlines in a special buffer, called @samp{*newsticker*}. It will
+also start the asynchronous download of headlines. The modeline in
+the @samp{*newsticker*} buffer informs whenever new headlines have
+arrived. Clicking mouse-button 2 or pressing RET in this buffer on a
+headline will call @command{browse-url} to load the corresponding news
+story in your favourite web browser.
+
+@findex newsticker-start-ticker
+@findex newsticker-stop-ticker
+The scrolling, or flashing of headlines in the echo area, can be
+started with the command @command{newsticker-start-ticker}. It can be
+stopped with @command{newsticker-stop-ticker}.
+
+@findex newsticker-start
+@findex newsticker-stop
+If you just want to start the periodic download of headlines use the
+command @command{newsticker-start}. Calling @command{newsticker-stop}
+will stop the periodic download, but will call
+@command{newsticker-stop-ticker} as well.
+
+@node Configuration
+@chapter Configuration
+
+All Newsticker options are customizable, i.e. they can be changed with
+Emacs customization methods: Call the command
+@command{customize-group} and enter @samp{newsticker} for the customization
+group.
+
+All Newsticker options have reasonable default values, so that in most
+cases it is not necessary to customize settings before starting Newsticker
+for the first time.
+
+Newsticker options are organized in the following groups.
+
+@itemize
+
+@item
+@command{newsticker-feed} contains options that define which news
+feeds are retrieved and how this is done.
+
+@itemize
+@item
+@vindex newsticker-url-list
+@command{newsticker-url-list} defines the list of headlines which are
+retrieved.
+@item
+@vindex newsticker-retrieval-interval
+@command{newsticker-retrieval-interval} defines how often headlines
+are retrieved.
+@end itemize
+
+@item
+@command{newsticker-headline-processing} contains options that define
+how the retrieved headlines are processed.
+
+@itemize
+@item
+@vindex newsticker-keep-obsolete-items
+@command{newsticker-keep-obsolete-items} decides whether unread
+headlines that have been removed from the feed are kept in the
+Newsticker cache.
+@end itemize
+
+@item
+@command{newsticker-layout} contains options that define how the
+buffer for reading RSS headlines is formatted.
+
+@itemize
+@item
+@vindex newsticker-heading-format
+@command{newsticker-item-format} defines how the title of a headline
+is formatted.
+@end itemize
+
+@item
+@command{newsticker-ticker} contains options that define how headlines
+are shown in the echo area.
+
+@itemize
+@item
+@vindex newsticker-display-interval
+@vindex newsticker-scroll-smoothly
+@command{newsticker-display-interval} and
+@command{newsticker-scroll-smoothly} define how headlines are shown in
+the echo area.
+@end itemize
+
+@item
+@command{newsticker-hooks} contains options for hooking other Emacs
+commands to newsticker functions.
+@itemize
+@item
+@vindex newsticker-new-item-functions
+@command{newsticker-new-item-functions} allows for automatic
+processing of headlines. See `newsticker-download-images', and
+`newsticker-download-enclosures' for sample functions.
+@end itemize
+
+@item
+@command{newsticker-miscellaneous} contains other Newsticker options.
+
+@end itemize
+
+Please have a look at the customization buffers for the complete list
+of options.
+
+@node Remarks
+@chapter Remarks
+
+This newsticker is designed do its job silently in the background
+without disturbing you. However, it is probably impossible to prevent
+such a tool from slightly attenuating your Editor's responsiveness
+every once in a while.
+
+Byte-compiling newsticker.el is recommended.
+
+
+@node GNU Free Documentation License
+@chapter GNU Free Documentation License
+
+@verbatim
+
+ GNU Free Documentation License
+ ==============================
+
+ Version 1.2, November 2002
+ Copyright (C) 2000,2001,2002 Free Software Foundation, Inc.
+ 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA
+
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ 0. PREAMBLE
+
+ The purpose of this License is to make a manual, textbook, or other
+ functional and useful document "free" in the sense of freedom: to
+ assure everyone the effective freedom to copy and redistribute it,
+ with or without modifying it, either commercially or
+ noncommercially. Secondarily, this License preserves for the
+ author and publisher a way to get credit for their work, while not
+ being considered responsible for modifications made by others.
+
+ This License is a kind of "copyleft", which means that derivative
+ works of the document must themselves be free in the same sense.
+ It complements the GNU General Public License, which is a copyleft
+ license designed for free software.
+
+ We have designed this License in order to use it for manuals for
+ free software, because free software needs free documentation: a
+ free program should come with manuals providing the same freedoms
+ that the software does. But this License is not limited to
+ software manuals; it can be used for any textual work, regardless
+ of subject matter or whether it is published as a printed book.
+ We recommend this License principally for works whose purpose is
+ instruction or reference.
+
+ 1. APPLICABILITY AND DEFINITIONS
+
+ This License applies to any manual or other work, in any medium,
+ that contains a notice placed by the copyright holder saying it
+ can be distributed under the terms of this License. Such a notice
+ grants a world-wide, royalty-free license, unlimited in duration,
+ to use that work under the conditions stated herein. The
+ "Document", below, refers to any such manual or work. Any member
+ of the public is a licensee, and is addressed as "you". You
+ accept the license if you copy, modify or distribute the work in a
+ way requiring permission under copyright law.
+
+ A "Modified Version" of the Document means any work containing the
+ Document or a portion of it, either copied verbatim, or with
+ modifications and/or translated into another language.
+
+ A "Secondary Section" is a named appendix or a front-matter section
+ of the Document that deals exclusively with the relationship of the
+ publishers or authors of the Document to the Document's overall
+ subject (or to related matters) and contains nothing that could
+ fall directly within that overall subject. (Thus, if the Document
+ is in part a textbook of mathematics, a Secondary Section may not
+ explain any mathematics.) The relationship could be a matter of
+ historical connection with the subject or with related matters, or
+ of legal, commercial, philosophical, ethical or political position
+ regarding them.
+
+ The "Invariant Sections" are certain Secondary Sections whose
+ titles are designated, as being those of Invariant Sections, in
+ the notice that says that the Document is released under this
+ License. If a section does not fit the above definition of
+ Secondary then it is not allowed to be designated as Invariant.
+ The Document may contain zero Invariant Sections. If the Document
+ does not identify any Invariant Sections then there are none.
+
+ The "Cover Texts" are certain short passages of text that are
+ listed, as Front-Cover Texts or Back-Cover Texts, in the notice
+ that says that the Document is released under this License. A
+ Front-Cover Text may be at most 5 words, and a Back-Cover Text may
+ be at most 25 words.
+
+ A "Transparent" copy of the Document means a machine-readable copy,
+ represented in a format whose specification is available to the
+ general public, that is suitable for revising the document
+ straightforwardly with generic text editors or (for images
+ composed of pixels) generic paint programs or (for drawings) some
+ widely available drawing editor, and that is suitable for input to
+ text formatters or for automatic translation to a variety of
+ formats suitable for input to text formatters. A copy made in an
+ otherwise Transparent file format whose markup, or absence of
+ markup, has been arranged to thwart or discourage subsequent
+ modification by readers is not Transparent. An image format is
+ not Transparent if used for any substantial amount of text. A
+ copy that is not "Transparent" is called "Opaque".
+
+ Examples of suitable formats for Transparent copies include plain
+ ASCII without markup, Texinfo input format, LaTeX input format,
+ SGML or XML using a publicly available DTD, and
+ standard-conforming simple HTML, PostScript or PDF designed for
+ human modification. Examples of transparent image formats include
+ PNG, XCF and JPG. Opaque formats include proprietary formats that
+ can be read and edited only by proprietary word processors, SGML or
+ XML for which the DTD and/or processing tools are not generally
+ available, and the machine-generated HTML, PostScript or PDF
+ produced by some word processors for output purposes only.
+
+ The "Title Page" means, for a printed book, the title page itself,
+ plus such following pages as are needed to hold, legibly, the
+ material this License requires to appear in the title page. For
+ works in formats which do not have any title page as such, "Title
+ Page" means the text near the most prominent appearance of the
+ work's title, preceding the beginning of the body of the text.
+
+ A section "Entitled XYZ" means a named subunit of the Document
+ whose title either is precisely XYZ or contains XYZ in parentheses
+ following text that translates XYZ in another language. (Here XYZ
+ stands for a specific section name mentioned below, such as
+ "Acknowledgements", "Dedications", "Endorsements", or "History".)
+ To "Preserve the Title" of such a section when you modify the
+ Document means that it remains a section "Entitled XYZ" according
+ to this definition.
+
+ The Document may include Warranty Disclaimers next to the notice
+ which states that this License applies to the Document. These
+ Warranty Disclaimers are considered to be included by reference in
+ this License, but only as regards disclaiming warranties: any other
+ implication that these Warranty Disclaimers may have is void and
+ has no effect on the meaning of this License.
+
+ 2. VERBATIM COPYING
+
+ You may copy and distribute the Document in any medium, either
+ commercially or noncommercially, provided that this License, the
+ copyright notices, and the license notice saying this License
+ applies to the Document are reproduced in all copies, and that you
+ add no other conditions whatsoever to those of this License. You
+ may not use technical measures to obstruct or control the reading
+ or further copying of the copies you make or distribute. However,
+ you may accept compensation in exchange for copies. If you
+ distribute a large enough number of copies you must also follow
+ the conditions in section 3.
+
+ You may also lend copies, under the same conditions stated above,
+ and you may publicly display copies.
+
+ 3. COPYING IN QUANTITY
+
+ If you publish printed copies (or copies in media that commonly
+ have printed covers) of the Document, numbering more than 100, and
+ the Document's license notice requires Cover Texts, you must
+ enclose the copies in covers that carry, clearly and legibly, all
+ these Cover Texts: Front-Cover Texts on the front cover, and
+ Back-Cover Texts on the back cover. Both covers must also clearly
+ and legibly identify you as the publisher of these copies. The
+ front cover must present the full title with all words of the
+ title equally prominent and visible. You may add other material
+ on the covers in addition. Copying with changes limited to the
+ covers, as long as they preserve the title of the Document and
+ satisfy these conditions, can be treated as verbatim copying in
+ other respects.
+
+ If the required texts for either cover are too voluminous to fit
+ legibly, you should put the first ones listed (as many as fit
+ reasonably) on the actual cover, and continue the rest onto
+ adjacent pages.
+
+ If you publish or distribute Opaque copies of the Document
+ numbering more than 100, you must either include a
+ machine-readable Transparent copy along with each Opaque copy, or
+ state in or with each Opaque copy a computer-network location from
+ which the general network-using public has access to download
+ using public-standard network protocols a complete Transparent
+ copy of the Document, free of added material. If you use the
+ latter option, you must take reasonably prudent steps, when you
+ begin distribution of Opaque copies in quantity, to ensure that
+ this Transparent copy will remain thus accessible at the stated
+ location until at least one year after the last time you
+ distribute an Opaque copy (directly or through your agents or
+ retailers) of that edition to the public.
+
+ It is requested, but not required, that you contact the authors of
+ the Document well before redistributing any large number of
+ copies, to give them a chance to provide you with an updated
+ version of the Document.
+
+ 4. MODIFICATIONS
+
+ You may copy and distribute a Modified Version of the Document
+ under the conditions of sections 2 and 3 above, provided that you
+ release the Modified Version under precisely this License, with
+ the Modified Version filling the role of the Document, thus
+ licensing distribution and modification of the Modified Version to
+ whoever possesses a copy of it. In addition, you must do these
+ things in the Modified Version:
+
+ A. Use in the Title Page (and on the covers, if any) a title
+ distinct from that of the Document, and from those of
+ previous versions (which should, if there were any, be listed
+ in the History section of the Document). You may use the
+ same title as a previous version if the original publisher of
+ that version gives permission.
+
+ B. List on the Title Page, as authors, one or more persons or
+ entities responsible for authorship of the modifications in
+ the Modified Version, together with at least five of the
+ principal authors of the Document (all of its principal
+ authors, if it has fewer than five), unless they release you
+ from this requirement.
+
+ C. State on the Title page the name of the publisher of the
+ Modified Version, as the publisher.
+
+ D. Preserve all the copyright notices of the Document.
+
+ E. Add an appropriate copyright notice for your modifications
+ adjacent to the other copyright notices.
+
+ F. Include, immediately after the copyright notices, a license
+ notice giving the public permission to use the Modified
+ Version under the terms of this License, in the form shown in
+ the Addendum below.
+
+ G. Preserve in that license notice the full lists of Invariant
+ Sections and required Cover Texts given in the Document's
+ license notice.
+
+ H. Include an unaltered copy of this License.
+
+ I. Preserve the section Entitled "History", Preserve its Title,
+ and add to it an item stating at least the title, year, new
+ authors, and publisher of the Modified Version as given on
+ the Title Page. If there is no section Entitled "History" in
+ the Document, create one stating the title, year, authors,
+ and publisher of the Document as given on its Title Page,
+ then add an item describing the Modified Version as stated in
+ the previous sentence.
+
+ J. Preserve the network location, if any, given in the Document
+ for public access to a Transparent copy of the Document, and
+ likewise the network locations given in the Document for
+ previous versions it was based on. These may be placed in
+ the "History" section. You may omit a network location for a
+ work that was published at least four years before the
+ Document itself, or if the original publisher of the version
+ it refers to gives permission.
+
+ K. For any section Entitled "Acknowledgements" or "Dedications",
+ Preserve the Title of the section, and preserve in the
+ section all the substance and tone of each of the contributor
+ acknowledgements and/or dedications given therein.
+
+ L. Preserve all the Invariant Sections of the Document,
+ unaltered in their text and in their titles. Section numbers
+ or the equivalent are not considered part of the section
+ titles.
+
+ M. Delete any section Entitled "Endorsements". Such a section
+ may not be included in the Modified Version.
+
+ N. Do not retitle any existing section to be Entitled
+ "Endorsements" or to conflict in title with any Invariant
+ Section.
+
+ O. Preserve any Warranty Disclaimers.
+
+ If the Modified Version includes new front-matter sections or
+ appendices that qualify as Secondary Sections and contain no
+ material copied from the Document, you may at your option
+ designate some or all of these sections as invariant. To do this,
+ add their titles to the list of Invariant Sections in the Modified
+ Version's license notice. These titles must be distinct from any
+ other section titles.
+
+ You may add a section Entitled "Endorsements", provided it contains
+ nothing but endorsements of your Modified Version by various
+ parties--for example, statements of peer review or that the text
+ has been approved by an organization as the authoritative
+ definition of a standard.
+
+ You may add a passage of up to five words as a Front-Cover Text,
+ and a passage of up to 25 words as a Back-Cover Text, to the end
+ of the list of Cover Texts in the Modified Version. Only one
+ passage of Front-Cover Text and one of Back-Cover Text may be
+ added by (or through arrangements made by) any one entity. If the
+ Document already includes a cover text for the same cover,
+ previously added by you or by arrangement made by the same entity
+ you are acting on behalf of, you may not add another; but you may
+ replace the old one, on explicit permission from the previous
+ publisher that added the old one.
+
+ The author(s) and publisher(s) of the Document do not by this
+ License give permission to use their names for publicity for or to
+ assert or imply endorsement of any Modified Version.
+
+ 5. COMBINING DOCUMENTS
+
+ You may combine the Document with other documents released under
+ this License, under the terms defined in section 4 above for
+ modified versions, provided that you include in the combination
+ all of the Invariant Sections of all of the original documents,
+ unmodified, and list them all as Invariant Sections of your
+ combined work in its license notice, and that you preserve all
+ their Warranty Disclaimers.
+
+ The combined work need only contain one copy of this License, and
+ multiple identical Invariant Sections may be replaced with a single
+ copy. If there are multiple Invariant Sections with the same name
+ but different contents, make the title of each such section unique
+ by adding at the end of it, in parentheses, the name of the
+ original author or publisher of that section if known, or else a
+ unique number. Make the same adjustment to the section titles in
+ the list of Invariant Sections in the license notice of the
+ combined work.
+
+ In the combination, you must combine any sections Entitled
+ "History" in the various original documents, forming one section
+ Entitled "History"; likewise combine any sections Entitled
+ "Acknowledgements", and any sections Entitled "Dedications". You
+ must delete all sections Entitled "Endorsements."
+
+ 6. COLLECTIONS OF DOCUMENTS
+
+ You may make a collection consisting of the Document and other
+ documents released under this License, and replace the individual
+ copies of this License in the various documents with a single copy
+ that is included in the collection, provided that you follow the
+ rules of this License for verbatim copying of each of the
+ documents in all other respects.
+
+ You may extract a single document from such a collection, and
+ distribute it individually under this License, provided you insert
+ a copy of this License into the extracted document, and follow
+ this License in all other respects regarding verbatim copying of
+ that document.
+
+ 7. AGGREGATION WITH INDEPENDENT WORKS
+
+ A compilation of the Document or its derivatives with other
+ separate and independent documents or works, in or on a volume of
+ a storage or distribution medium, is called an "aggregate" if the
+ copyright resulting from the compilation is not used to limit the
+ legal rights of the compilation's users beyond what the individual
+ works permit. When the Document is included in an aggregate, this
+ License does not apply to the other works in the aggregate which
+ are not themselves derivative works of the Document.
+
+ If the Cover Text requirement of section 3 is applicable to these
+ copies of the Document, then if the Document is less than one half
+ of the entire aggregate, the Document's Cover Texts may be placed
+ on covers that bracket the Document within the aggregate, or the
+ electronic equivalent of covers if the Document is in electronic
+ form. Otherwise they must appear on printed covers that bracket
+ the whole aggregate.
+
+ 8. TRANSLATION
+
+ Translation is considered a kind of modification, so you may
+ distribute translations of the Document under the terms of section
+ 4. Replacing Invariant Sections with translations requires special
+ permission from their copyright holders, but you may include
+ translations of some or all Invariant Sections in addition to the
+ original versions of these Invariant Sections. You may include a
+ translation of this License, and all the license notices in the
+ Document, and any Warranty Disclaimers, provided that you also
+ include the original English version of this License and the
+ original versions of those notices and disclaimers. In case of a
+ disagreement between the translation and the original version of
+ this License or a notice or disclaimer, the original version will
+ prevail.
+
+ If a section in the Document is Entitled "Acknowledgements",
+ "Dedications", or "History", the requirement (section 4) to
+ Preserve its Title (section 1) will typically require changing the
+ actual title.
+
+ 9. TERMINATION
+
+ You may not copy, modify, sublicense, or distribute the Document
+ except as expressly provided for under this License. Any other
+ attempt to copy, modify, sublicense or distribute the Document is
+ void, and will automatically terminate your rights under this
+ License. However, parties who have received copies, or rights,
+ from you under this License will not have their licenses
+ terminated so long as such parties remain in full compliance.
+
+ 10. FUTURE REVISIONS OF THIS LICENSE
+
+ The Free Software Foundation may publish new, revised versions of
+ the GNU Free Documentation License from time to time. Such new
+ versions will be similar in spirit to the present version, but may
+ differ in detail to address new problems or concerns. See
+ `http://www.gnu.org/copyleft/'.
+
+ Each version of the License is given a distinguishing version
+ number. If the Document specifies that a particular numbered
+ version of this License "or any later version" applies to it, you
+ have the option of following the terms and conditions either of
+ that specified version or of any later version that has been
+ published (not as a draft) by the Free Software Foundation. If
+ the Document does not specify a version number of this License,
+ you may choose any version ever published (not as a draft) by the
+ Free Software Foundation.
+
+@end verbatim
+
+@node Index
+@unnumbered Index
+
+@printindex cp
+
+@bye
+
+
+
+@ignore
+ arch-tag: 7a4de539-117c-4658-b799-0b9e3d0ccec0
+@end ignore
diff --git a/man/rmail.texi b/man/rmail.texi
index 71181b0db3..f2646bbe52 100644
--- a/man/rmail.texi
+++ b/man/rmail.texi
@@ -92,7 +92,7 @@ need to ``exit'' formally. If you switch from Rmail to editing in
other buffers, and never happen to 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 good enough way to do this
-(@pxref{Saving}). The Rmail command @kbd{b}, @code{rmail-bury},
+(@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.
diff --git a/src/ChangeLog b/src/ChangeLog
index 29f3929ccd..c0f1ceee87 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,47 @@
+2005-09-15 Richard M. Stallman <[email protected]>
+
+ * xdisp.c (overlay_arrow_at_row): Add HAVE_WINDOW_SYSTEM conditional.
+ (display_mode_element): Instead of `lisp_string' and `this',
+ record `offset' and increment that.
+ `last_offset' replaces `last'.
+
+ * Makefile.in (XMENU_OBJ): Variable deleted.
+ (obj): Use xmenu.o unconditionally.
+ (SOME_MACHINE_OBJECTS): Delete xmenu.o.
+
+ * emacs.c (main): Don't conditionalize syms_of_xmenu on HAVE_XMENU.
+
+2005-09-15 Kim F. Storm <[email protected]>
+
+ * xdisp.c (move_it_vertically): Don't try to fetch byte BEGV-1.
+ (reseat_at_next_visible_line_start): Likewise (in xassert).
+
+2005-09-14 Romain Francoise <[email protected]>
+
+ * fileio.c (write_region_inhibit_fsync): New variable.
+ (Fwrite_region): Use it to skip call to fsync.
+ (syms_of_fileio): Initialize it.
+
+2005-09-14 Kenichi Handa <[email protected]>
+
+ * coding.c (code_convert_region_unwind): Argument format changed.
+ (run_pre_post_conversion_on_str): If pre-write-conversion function
+ changed the current buffer, delete the new buffer.
+ (run_pre_write_conversin_on_c_str): Likewise.
+
+ * fileio.c (Fexpand_file_name): Check multibyteness of
+ default_directory.
+
+2005-09-13 Kenichi Handa <[email protected]>
+
+ * composite.c (compose_chars_in_text): Delete it.
+
+ * composite.h (compose_chars_in_text): Delete extern.
+
+2005-09-13 Kim F. Storm <[email protected]>
+
+ * print.c (print_error_message): Fix last change.
+
2005-09-12 Kim F. Storm <[email protected]>
* composite.c (compose_chars_in_text): Fix setup of `pend'.
diff --git a/src/Makefile.in b/src/Makefile.in
index fdeeb544b1..b3dedd5453 100644
--- a/src/Makefile.in
+++ b/src/Makefile.in
@@ -310,10 +310,6 @@ XOBJ= xterm.o xfns.o xselect.o xrdb.o fontset.o xsmfns.o fringe.o image.o
#ifdef HAVE_MENUS
-#ifndef HAVE_CARBON
-XMENU_OBJ = xmenu.o
-#endif
-
#ifdef USE_GTK
GTK_OBJ= gtkutil.o
#endif
@@ -449,9 +445,6 @@ LIBX= $(LIBXMENU) $(X11_LDFLAGS) $(LIBXT) LIBTIFF LIBJPEG LIBPNG LIBGIF LIBXPM L
LIBX= $(LIBXMENU) LD_SWITCH_X_SITE -lX10 LIBX10_MACHINE LIBX10_SYSTEM
#endif /* not HAVE_X11 */
#else /* not HAVE_X_WINDOWS */
-#if defined(HAVE_MENUS) && !defined(HAVE_CARBON)
-XMENU_OBJ = xmenu.o
-#endif
#endif /* not HAVE_X_WINDOWS */
LIBSOUND= @LIBSOUND@
@@ -577,7 +570,7 @@ emacsappsrc = ${srcdir}/../mac/Emacs.app/
/* lastfile must follow all files
whose initialized data areas should be dumped as pure by dump-emacs. */
-obj= dispnew.o frame.o scroll.o xdisp.o $(XMENU_OBJ) window.o \
+obj= dispnew.o frame.o scroll.o xdisp.o xmenu.o window.o \
charset.o coding.o category.o ccl.o \
cm.o term.o xfaces.o $(XOBJ) $(GTK_OBJ)\
emacs.o keyboard.o macros.o keymap.o sysdep.o \
@@ -596,7 +589,7 @@ obj= dispnew.o frame.o scroll.o xdisp.o $(XMENU_OBJ) window.o \
These go in the DOC file on all machines
in case they are needed there. */
SOME_MACHINE_OBJECTS = sunfns.o dosfns.o msdos.o \
- xterm.o xfns.o xmenu.o xselect.o xrdb.o xsmfns.o fringe.o image.o \
+ xterm.o xfns.o xselect.o xrdb.o xsmfns.o fringe.o image.o \
mac.o macterm.o macfns.o macmenu.o macselect.o fontset.o \
w32.o w32bdf.o w32console.o w32fns.o w32heap.o w32inevt.o \
w32menu.o w32proc.o w32reg.o w32select.o w32term.o w32xfns.o
diff --git a/src/coding.c b/src/coding.c
index 9d2d04af6c..5658a8ab09 100644
--- a/src/coding.c
+++ b/src/coding.c
@@ -5349,8 +5349,8 @@ static int shrink_conversion_region_threshhold = 1024;
} \
} while (0)
-/* ARG is (CODING . BUFFER) where CODING is what to be set in
- Vlast_coding_system_used and BUFFER if non-nil is a buffer to
+/* ARG is (CODING BUFFER ...) where CODING is what to be set in
+ Vlast_coding_system_used and the remaining elements are buffers to
kill. */
static Lisp_Object
code_convert_region_unwind (arg)
@@ -5358,8 +5358,8 @@ code_convert_region_unwind (arg)
{
inhibit_pre_post_conversion = 0;
Vlast_coding_system_used = XCAR (arg);
- if (! NILP (XCDR (arg)))
- Fkill_buffer (XCDR (arg));
+ for (arg = XCDR (arg); ! NILP (arg); arg = XCDR (arg))
+ Fkill_buffer (XCAR (arg));
return Qnil;
}
@@ -6077,6 +6077,7 @@ run_pre_post_conversion_on_str (str, coding, encodep)
int multibyte = STRING_MULTIBYTE (str);
Lisp_Object old_deactivate_mark;
Lisp_Object buffer_to_kill;
+ Lisp_Object unwind_arg;
record_unwind_protect (Fset_buffer, Fcurrent_buffer ());
/* It is not crucial to specbind this. */
@@ -6087,15 +6088,25 @@ run_pre_post_conversion_on_str (str, coding, encodep)
unibyte<->multibyte conversion. For that, we adjust the
multibyteness of the working buffer to that of STR. */
buffer_to_kill = set_conversion_work_buffer (multibyte);
- record_unwind_protect (code_convert_region_unwind,
- Fcons (Vlast_coding_system_used, buffer_to_kill));
+ if (NILP (buffer_to_kill))
+ unwind_arg = Fcons (Vlast_coding_system_used, Qnil);
+ else
+ unwind_arg = list2 (Vlast_coding_system_used, buffer_to_kill);
+ record_unwind_protect (code_convert_region_unwind, unwind_arg);
insert_from_string (str, 0, 0,
SCHARS (str), SBYTES (str), 0);
UNGCPRO;
inhibit_pre_post_conversion = 1;
if (encodep)
- call2 (coding->pre_write_conversion, make_number (BEG), make_number (Z));
+ {
+ struct buffer *prev = current_buffer;
+
+ call2 (coding->pre_write_conversion, make_number (BEG), make_number (Z));
+ if (prev != current_buffer)
+ /* We must kill the current buffer too. */
+ Fsetcdr (unwind_arg, Fcons (Fcurrent_buffer (), XCDR (unwind_arg)));
+ }
else
{
Vlast_coding_system_used = coding->symbol;
@@ -6129,6 +6140,7 @@ run_pre_write_conversin_on_c_str (str, size, nchars, nbytes, coding)
{
struct gcpro gcpro1, gcpro2;
struct buffer *cur = current_buffer;
+ struct buffer *prev;
Lisp_Object old_deactivate_mark, old_last_coding_system_used;
Lisp_Object args[3];
Lisp_Object buffer_to_kill;
@@ -6145,6 +6157,7 @@ run_pre_write_conversin_on_c_str (str, size, nchars, nbytes, coding)
insert_1_both (*str, nchars, nbytes, 0, 0, 0);
UNGCPRO;
inhibit_pre_post_conversion = 1;
+ prev = current_buffer;
args[0] = coding->pre_write_conversion;
args[1] = make_number (BEG);
args[2] = make_number (Z);
@@ -6164,6 +6177,8 @@ run_pre_write_conversin_on_c_str (str, size, nchars, nbytes, coding)
bcopy (BEG_ADDR, *str, coding->produced);
coding->src_multibyte
= ! NILP (current_buffer->enable_multibyte_characters);
+ if (prev != current_buffer)
+ Fkill_buffer (Fcurrent_buffer ());
set_buffer_internal (cur);
if (! NILP (buffer_to_kill))
Fkill_buffer (buffer_to_kill);
diff --git a/src/composite.c b/src/composite.c
index 02abb66e1e..f03d5054c3 100644
--- a/src/composite.c
+++ b/src/composite.c
@@ -589,132 +589,6 @@ compose_text (start, end, components, modification_func, string)
Qcomposition, prop, string);
}
-/* Compose sequences of characters in the region between START and END
- by functions registered in Vcomposition_function_table. If STRING
- is non-nil, operate on characters contained between indices START
- and END in STRING. */
-
-void
-compose_chars_in_text (start, end, string)
- int start, end;
- Lisp_Object string;
-{
- int count = 0;
- struct gcpro gcpro1;
- Lisp_Object tail, elt, val, to;
- /* Set to nonzero if we don't have to compose ASCII characters. */
- int skip_ascii;
- int i, len, stop, c;
- const unsigned char *ptr, *pend;
-
- if (! CHAR_TABLE_P (Vcomposition_function_table))
- return;
-
- if (STRINGP (string))
- {
- count = SPECPDL_INDEX ();
- GCPRO1 (string);
- stop = end;
- ptr = SDATA (string) + string_char_to_byte (string, start);
- pend = SDATA (string) + SBYTES (string);
- }
- else
- {
- record_unwind_protect (save_excursion_restore, save_excursion_save ());
- TEMP_SET_PT (start);
- stop = (start < GPT && GPT < end ? GPT : end);
- ptr = CHAR_POS_ADDR (start);
- pend = CHAR_POS_ADDR (end);
- }
-
- /* Preserve the match data. */
- record_unwind_save_match_data ();
-
- /* If none of ASCII characters have composition functions, we can
- skip them quickly. */
- for (i = 0; i < 128; i++)
- if (!NILP (CHAR_TABLE_REF (Vcomposition_function_table, i)))
- break;
- skip_ascii = (i == 128);
-
-
- while (1)
- {
- if (skip_ascii)
- while (start < stop && ASCII_BYTE_P (*ptr))
- start++, ptr++;
-
- if (start >= stop)
- {
- if (stop == end || start >= end)
- break;
- stop = end;
- if (STRINGP (string))
- ptr = SDATA (string) + string_char_to_byte (string, start);
- else
- ptr = CHAR_POS_ADDR (start);
- }
-
- c = STRING_CHAR_AND_LENGTH (ptr, pend - ptr, len);
- tail = CHAR_TABLE_REF (Vcomposition_function_table, c);
- while (CONSP (tail))
- {
- elt = XCAR (tail);
- if (CONSP (elt)
- && STRINGP (XCAR (elt))
- && !NILP (Ffboundp (XCDR (elt))))
- {
- if (STRINGP (string))
- val = Fstring_match (XCAR (elt), string, make_number (start));
- else
- {
- val = Flooking_at (XCAR (elt));
- if (!NILP (val))
- val = make_number (start);
- }
- if (INTEGERP (val) && XFASTINT (val) == start)
- {
- to = Fmatch_end (make_number (0));
- val = call4 (XCDR (elt), val, to, XCAR (elt), string);
- if (INTEGERP (val) && XINT (val) > 1)
- {
- start += XINT (val);
- if (STRINGP (string))
- {
- ptr = SDATA (string) + string_char_to_byte (string, start);
- pend = SDATA (string) + SBYTES (string);
- }
- else
- ptr = CHAR_POS_ADDR (start);
- }
- else if (STRINGP (string))
- {
- start++;
- ptr = SDATA (string) + string_char_to_byte (string, start);
- pend = SDATA (string) + SBYTES (string);
- }
- else
- {
- start++;
- ptr += len;
- }
- break;
- }
- }
- tail = XCDR (tail);
- }
- if (!CONSP (tail))
- {
- /* No composition done. Try the next character. */
- start++;
- ptr += len;
- }
- }
-
- unbind_to (count, Qnil);
- if (STRINGP (string))
- UNGCPRO;
-}
/* Emacs Lisp APIs. */
diff --git a/src/composite.h b/src/composite.h
index 26cf13d27d..cdcc930179 100644
--- a/src/composite.h
+++ b/src/composite.h
@@ -209,7 +209,6 @@ extern void compose_region P_ ((int, int, Lisp_Object, Lisp_Object,
extern void syms_of_composite P_ ((void));
extern void compose_text P_ ((int, int, Lisp_Object, Lisp_Object,
Lisp_Object));
-extern void compose_chars_in_text P_ ((int, int, Lisp_Object));
#endif /* not EMACS_COMPOSITE_H */
diff --git a/src/emacs.c b/src/emacs.c
index 8724cbf292..71b17a064c 100644
--- a/src/emacs.c
+++ b/src/emacs.c
@@ -1628,14 +1628,12 @@ main (argc, argv
#endif
#endif /* HAVE_X_WINDOWS */
-#ifdef HAVE_MENUS
#ifndef HAVE_NTGUI
#ifndef MAC_OS
/* Called before init_window_once for Mac OS Classic. */
syms_of_xmenu ();
#endif
#endif
-#endif
#ifdef HAVE_NTGUI
syms_of_w32term ();
diff --git a/src/fileio.c b/src/fileio.c
index 56557da6a3..906c42d912 100644
--- a/src/fileio.c
+++ b/src/fileio.c
@@ -227,6 +227,11 @@ int vms_stmlf_recfm;
expanding file names. This can be bound to / or \. */
Lisp_Object Vdirectory_sep_char;
+#ifdef HAVE_FSYNC
+/* Nonzero means skip the call to fsync in Fwrite-region. */
+int write_region_inhibit_fsync;
+#endif
+
extern Lisp_Object Vuser_login_name;
#ifdef WINDOWSNT
@@ -1058,6 +1063,7 @@ See also the function `substitute-in-file-name'. */)
#endif /* DOS_NT */
int length;
Lisp_Object handler, result;
+ int multibyte;
CHECK_STRING (name);
@@ -1135,6 +1141,7 @@ See also the function `substitute-in-file-name'. */)
name = FILE_SYSTEM_CASE (name);
nm = SDATA (name);
+ multibyte = STRING_MULTIBYTE (name);
#ifdef DOS_NT
/* We will force directory separators to be either all \ or /, so make
@@ -1300,8 +1307,7 @@ See also the function `substitute-in-file-name'. */)
if (index (nm, '/'))
{
nm = sys_translate_unix (nm);
- return make_specified_string (nm, -1, strlen (nm),
- STRING_MULTIBYTE (name));
+ return make_specified_string (nm, -1, strlen (nm), multibyte);
}
#endif /* VMS */
#ifdef DOS_NT
@@ -1313,8 +1319,7 @@ See also the function `substitute-in-file-name'. */)
if (IS_DIRECTORY_SEP (nm[1]))
{
if (strcmp (nm, SDATA (name)) != 0)
- name = make_specified_string (nm, -1, strlen (nm),
- STRING_MULTIBYTE (name));
+ name = make_specified_string (nm, -1, strlen (nm), multibyte);
}
else
#endif
@@ -1323,8 +1328,7 @@ See also the function `substitute-in-file-name'. */)
{
char temp[] = " :";
- name = make_specified_string (nm, -1, p - nm,
- STRING_MULTIBYTE (name));
+ name = make_specified_string (nm, -1, p - nm, multibyte);
temp[0] = DRIVE_LETTER (drive);
name = concat2 (build_string (temp), name);
}
@@ -1332,8 +1336,7 @@ See also the function `substitute-in-file-name'. */)
#else /* not DOS_NT */
if (nm == SDATA (name))
return name;
- return make_specified_string (nm, -1, strlen (nm),
- STRING_MULTIBYTE (name));
+ return make_specified_string (nm, -1, strlen (nm), multibyte);
#endif /* not DOS_NT */
}
}
@@ -1445,6 +1448,7 @@ See also the function `substitute-in-file-name'. */)
&& !newdir)
{
newdir = SDATA (default_directory);
+ multibyte |= STRING_MULTIBYTE (default_directory);
#ifdef DOS_NT
/* Note if special escape prefix is present, but remove for now. */
if (newdir[0] == '/' && newdir[1] == ':')
@@ -1710,8 +1714,7 @@ See also the function `substitute-in-file-name'. */)
CORRECT_DIR_SEPS (target);
#endif /* DOS_NT */
- result = make_specified_string (target, -1, o - target,
- STRING_MULTIBYTE (name));
+ result = make_specified_string (target, -1, o - target, multibyte);
/* Again look to see if the file name has special constructs in it
and perhaps call the corresponding file handler. This is needed
@@ -5300,7 +5303,7 @@ This does code conversion according to the value of
Disk full in NFS may be reported here. */
/* mib says that closing the file will try to write as fast as NFS can do
it, and that means the fsync here is not crucial for autosave files. */
- if (!auto_saving && fsync (desc) < 0)
+ if (!auto_saving && !write_region_inhibit_fsync && fsync (desc) < 0)
{
/* If fsync fails with EINTR, don't treat that as serious. */
if (errno != EINTR)
@@ -6746,6 +6749,13 @@ shortly after Emacs reads your `.emacs' file, if you have not yet given it
a non-nil value. */);
Vauto_save_list_file_name = Qnil;
+#ifdef HAVE_FSYNC
+ DEFVAR_BOOL ("write-region-inhibit-fsync", &write_region_inhibit_fsync,
+ doc: /* *Non-nil means don't call fsync after saving files.
+Enabling this variable may result in data loss! */);
+ write_region_inhibit_fsync = 0;
+#endif
+
defsubr (&Sfind_file_name_handler);
defsubr (&Sfile_name_directory);
defsubr (&Sfile_name_nondirectory);
diff --git a/src/print.c b/src/print.c
index 2ba749aff4..91642afd65 100644
--- a/src/print.c
+++ b/src/print.c
@@ -1028,7 +1028,7 @@ print_error_message (data, stream, context, caller)
Lisp_Object cname = SYMBOL_NAME (caller);
char *name = alloca (SBYTES (cname));
bcopy (SDATA (cname), name, SBYTES (cname));
- message_dolog (name, strlen (name), 0, 0);
+ message_dolog (name, SBYTES (cname), 0, 0);
message_dolog (": ", 2, 0, 0);
}
diff --git a/src/xdisp.c b/src/xdisp.c
index 031260c48a..c5c05408e3 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -4794,7 +4794,8 @@ reseat_at_next_visible_line_start (it, on_newline_p)
&& indented_beyond_p (IT_CHARPOS (*it), IT_BYTEPOS (*it),
(double) it->selective)) /* iftc */
{
- xassert (FETCH_BYTE (IT_BYTEPOS (*it) - 1) == '\n');
+ xassert (IT_BYTEPOS (*it) == BEGV
+ || FETCH_BYTE (IT_BYTEPOS (*it) - 1) == '\n');
newline_found_p = forward_to_next_line_start (it, &skipped_p);
}
@@ -6512,6 +6513,7 @@ move_it_vertically (it, dy)
/* If buffer ends in ZV without a newline, move to the start of
the line to satisfy the post-condition. */
if (IT_CHARPOS (*it) == ZV
+ && ZV > BEGV
&& FETCH_BYTE (IT_BYTEPOS (*it) - 1) != '\n')
move_it_by_lines (it, 0, 0);
}
@@ -10019,12 +10021,14 @@ overlay_arrow_at_row (it, row)
if (FRAME_WINDOW_P (it->f)
&& WINDOW_LEFT_FRINGE_WIDTH (it->w) > 0)
{
+#ifdef HAVE_WINDOW_SYSTEM
if (val = Fget (var, Qoverlay_arrow_bitmap), SYMBOLP (val))
{
int fringe_bitmap;
if ((fringe_bitmap = lookup_fringe_bitmap (val)) != 0)
return make_number (fringe_bitmap);
}
+#endif
return make_number (-1); /* Use default arrow bitmap */
}
return overlay_arrow_string_or_property (var);
@@ -15969,7 +15973,7 @@ display_mode_element (it, depth, field_width, precision, elt, props, risky)
{
/* A string: output it and check for %-constructs within it. */
unsigned char c;
- const unsigned char *this, *lisp_string;
+ int offset = 0;
if (!NILP (props) || risky)
{
@@ -16027,8 +16031,7 @@ display_mode_element (it, depth, field_width, precision, elt, props, risky)
}
}
- this = SDATA (elt);
- lisp_string = this;
+ offset = 0;
if (literal)
{
@@ -16051,42 +16054,44 @@ display_mode_element (it, depth, field_width, precision, elt, props, risky)
break;
}
+ /* Handle the non-literal case. */
+
while ((precision <= 0 || n < precision)
- && *this
+ && SREF (elt, offset) != 0
&& (mode_line_target != MODE_LINE_DISPLAY
|| it->current_x < it->last_visible_x))
{
- const unsigned char *last = this;
+ int last_offset = offset;
/* Advance to end of string or next format specifier. */
- while ((c = *this++) != '\0' && c != '%')
+ while ((c = SREF (elt, offset++)) != '\0' && c != '%')
;
- if (this - 1 != last)
+ if (offset - 1 != last_offset)
{
int nchars, nbytes;
/* Output to end of string or up to '%'. Field width
is length of string. Don't output more than
PRECISION allows us. */
- --this;
+ offset--;
- prec = c_string_width (last, this - last, precision - n,
+ prec = c_string_width (SDATA (elt) + last_offset,
+ offset - last_offset, precision - n,
&nchars, &nbytes);
switch (mode_line_target)
{
case MODE_LINE_NOPROP:
case MODE_LINE_TITLE:
- n += store_mode_line_noprop (last, 0, prec);
+ n += store_mode_line_noprop (SDATA (elt) + last_offset, 0, prec);
break;
case MODE_LINE_STRING:
{
- int bytepos = last - lisp_string;
+ int bytepos = last_offset;
int charpos = string_byte_to_char (elt, bytepos);
int endpos = (precision <= 0
- ? string_byte_to_char (elt,
- this - lisp_string)
+ ? string_byte_to_char (elt, offset)
: charpos + nchars);
n += store_mode_line_string (NULL,
@@ -16097,7 +16102,7 @@ display_mode_element (it, depth, field_width, precision, elt, props, risky)
break;
case MODE_LINE_DISPLAY:
{
- int bytepos = last - lisp_string;
+ int bytepos = last_offset;
int charpos = string_byte_to_char (elt, bytepos);
n += display_string (NULL, elt, Qnil, 0, charpos,
it, 0, prec, 0,
@@ -16108,12 +16113,12 @@ display_mode_element (it, depth, field_width, precision, elt, props, risky)
}
else /* c == '%' */
{
- const unsigned char *percent_position = this;
+ int percent_position = offset;
/* Get the specified minimum width. Zero means
don't pad. */
field = 0;
- while ((c = *this++) >= '0' && c <= '9')
+ while ((c = SREF (elt, offset++)) >= '0' && c <= '9')
field = field * 10 + c - '0';
/* Don't pad beyond the total padding allowed. */
@@ -16133,7 +16138,7 @@ display_mode_element (it, depth, field_width, precision, elt, props, risky)
int bytepos, charpos;
unsigned char *spec;
- bytepos = percent_position - lisp_string;
+ bytepos = percent_position;
charpos = (STRING_MULTIBYTE (elt)
? string_byte_to_char (elt, bytepos)
: bytepos);
@@ -16191,8 +16196,6 @@ display_mode_element (it, depth, field_width, precision, elt, props, risky)
else /* c == 0 */
break;
}
- this += SDATA (elt) - lisp_string;
- lisp_string = SDATA (elt);
}
}
break;