Patches applied:

 * emacs@sv.gnu.org/emacs--devo--0--patch-216
   Update from CVS

 * emacs@sv.gnu.org/emacs--devo--0--patch-217
   Update from CVS

 * emacs@sv.gnu.org/emacs--devo--0--patch-218
   Update from CVS

 * emacs@sv.gnu.org/emacs--devo--0--patch-219
   Update from CVS

 * emacs@sv.gnu.org/emacs--devo--0--patch-220
   Improve tq.el.

 * emacs@sv.gnu.org/emacs--devo--0--patch-221
   Update from CVS

 * emacs@sv.gnu.org/emacs--devo--0--patch-222
   Update from CVS: src/puresize.h (PURESIZE_RATIO): Reduce to 10/6.

 * emacs@sv.gnu.org/emacs--devo--0--patch-223
   Update from CVS

 * emacs@sv.gnu.org/emacs--devo--0--patch-224
   Update from CVS

 * emacs@sv.gnu.org/emacs--devo--0--patch-225
   Merge from gnus--rel--5.10

 * emacs@sv.gnu.org/emacs--devo--0--patch-226
   Update from CVS

 * emacs@sv.gnu.org/emacs--devo--0--patch-227
   Update from CVS

 * emacs@sv.gnu.org/emacs--devo--0--patch-228
   Merge from gnus--rel--5.10

 * emacs@sv.gnu.org/emacs--devo--0--patch-229
   Update from CVS

 * emacs@sv.gnu.org/emacs--devo--0--patch-230
   Update from CVS

 * emacs@sv.gnu.org/emacs--devo--0--patch-231
   Update from CVS

 * emacs@sv.gnu.org/emacs--devo--0--patch-232
   Update from CVS

 * emacs@sv.gnu.org/emacs--devo--0--patch-233
   Update from CVS: lisp/progmodes/python.el (python-mode): Fix typo.

 * emacs@sv.gnu.org/gnus--rel--5.10--patch-84
   Merge from emacs--devo--0

 * emacs@sv.gnu.org/gnus--rel--5.10--patch-85
   Update from CVS

 * emacs@sv.gnu.org/gnus--rel--5.10--patch-86
   Update from CVS

git-archimport-id: lorentey@elte.hu--2004/emacs--multi-tty--0--patch-550
This commit is contained in:
Karoly Lorentey 2006-04-19 16:23:46 +00:00
commit 447b0165ac
120 changed files with 3834 additions and 1854 deletions

View file

@ -37,6 +37,9 @@ Assigned to Bill Wohler <wohler@newt.com>.
** Is there a basic problem with cl-byte-compile-compiler-macro?
** Recalculate the tool bar height after changing the default font.
(Bug report by Yamamoto Mistuharu, 31 Mar 2006)
** Markus Gritsch's report about Emacs looping on Windoze with the following
.emacs file, and then reduce Emacs frame width to "something quite narrow":
(setq-default truncate-lines t)
@ -76,7 +79,7 @@ you're going to handle.
DIRECTORY STATUS IN CHARGE
--------- ------ ---------
etc (and subdirs) done Thien-Thi Nguyen (ttn(@gnu.org))
leim working Kenichi Handa
leim done Kenichi Handa
lib-src done ttn
lisp done ttn
lisp/calc done Jay Belanger
@ -85,8 +88,8 @@ lisp/emacs-lisp done ttn
lisp/emulation done ttn
lisp/eshell done ttn
lisp/gnus done Romain Francoise
lisp/international working Kenichi Handa
lisp/language working Kenichi Handa
lisp/international done Kenichi Handa
lisp/language done Kenichi Handa
lisp/mail done ttn
lisp/mh-e done Bill Wohler
lisp/net done ttn

View file

@ -1,3 +1,20 @@
2006-04-18 Reiner Steib <Reiner.Steib@gmx.de>
* gnus-refcard.tex: Bump version to 5.11. Remove duplicate
\def's. Update date.
2006-04-18 Bill Wohler <wohler@newt.com>
* MORE.STUFF: Add MH-E.
2006-04-18 Carsten Dominik <dominik@science.uva.nl>
* orgcard.tex: Version number change only.
2006-04-12 Kenichi Handa <handa@m17n.org>
* PROBLEMS (C-SPC fails ...): Explicitly say fcitx in the header.
2006-04-11 Carsten Dominik <dominik@science.uva.nl>
* orgcard.tex: (section{Tables}): Document column narrowing.
@ -19,7 +36,7 @@
2006-03-28 Bill Wohler <wohler@newt.com>
* images/README: Update with following information.
* images/data-save.xpm, images/mail/flag-for-followup.xpm:
* images/zoom-in.xpm, images/zoom-out.xpm: New images from GNOME
2.12.
@ -28,27 +45,27 @@
* images/mail/flag-for-followup.pbm, images/mail/inbox.pbm:
* images/mail/move.pbm, images/next-page.pbm, images/zoom-out.pbm:
New bitmaps for new images.
* images/refresh.xpm, images/sort-ascending.xpm,
* images/refresh.xpm, images/sort-ascending.xpm,
* images/sort-descending.xpm: Update with GTK 2.x images. Note
that the default GTK icons are not overridden by the GNOME theme
due to a bug which was fixed in GNOME 2.15. Once GNOME 2.16 is in
wide circulation, then the GTK icons should be replaced with the
equivalent GNOME icons. Until then, we should be consistent with
GTK first, then GNOME.
* images/mail/repack.xpm, images/mail/reply-from.xpm:
* images/mail/repack.xpm, images/mail/reply-from.xpm:
* images/mail/reply-to.xpm, images/search-replace.xpm:
* images/separator.xpm, images/show.xpm: Update custom icons to be
closer to their GNOME counterparts.
* images/attach.pbm, images/exit.pbm, images/mail/compose.pbm:
* images/attach.pbm, images/exit.pbm, images/mail/compose.pbm:
* images/mail/repack.pbm, images/mail/reply-all.pbm:
* images/mail/reply-from.pbm, images/mail/reply-to.pbm:
* images/mail/reply.pbm, images/mail/send.pbm, images/show.pbm:
* images/search-replace.pbm: Update bitmaps.
* images/execute.pbm, images/execute.xpm, images/fld-open.pbm:
* images/execute.pbm, images/execute.xpm, images/fld-open.pbm:
* images/fld-open.xpm, images/highlight.pbm, images/highlight.xpm:
* images/mail.pbm, images/mail.xpm, images/mail/alias.pbm:
* images/mail/alias.xpm, images/mail/refile.pbm:

View file

@ -71,6 +71,8 @@ You might find bug-fixes or enhancements in these places.
* Ispell: <URL:http://www.eng.utah.edu/~kstevens/ispell-page.html>
* MH-E: <URL:http://mh-e.sourceforge.net/>
* PC Selection: <URL:ftp://ftp.thp.uni-duisburg.de/pub/source/elisp/>
* PS mode: <URL:http://odur.let.rug.nl/%7Ekleiweg/postscript/>

View file

@ -991,7 +991,7 @@ xmodmap command to the xdm setup script for that display.
Use the shell command `xset bc' to make the old X Menu package work.
*** C-SPC fails to work on Fedora GNU/Linux (or with some input method).
*** C-SPC fails to work on Fedora GNU/Linux (or with fcitx input method).
Fedora Core 4 steals the C-SPC key by default for the `iiimx' program
which is the input method for some languages. It blocks Emacs users

View file

@ -9,12 +9,14 @@ to the FSF.
* Small but important fixes needed in existing features:
** whitespace-cleanup should work only on the region if the region is active.
** Distribute a bar cursor of width > 1 evenly between the two glyphs
on each side of the bar (what to do at the edges?).
** Make vc-checkin avoid reverting the buffer if has not changed after
the checkin. Comparing (md5 BUFFER) to (md5 FILE) should be enough.
** Make vc-annotate show place the cursor in the annotate buffer at the
same line as the current buffer.
** buffer-offer-save should be a permanent local.
** revert-buffer should eliminate overlays and the mark.
@ -69,7 +71,7 @@ to the FSF.
** Redesign the load-history data structure so it can cope better
with evaluating definitions of the same function from different files,
recording which file the latest definition came from.
* Important features:
** Provide user-friendly ways to list all available font families,
@ -158,7 +160,7 @@ typically due to pilot errors and should thus be in debug-ignored-errors.
** Emacs Lisp mode could put an overlay on the defun for every
function that has advice. The overlay could have `after-text' like "
[Function has advice]". It might look like
(defun foo [Function has advice] (x y)
(defun foo [Function has advice] (x y)
The overlay could also be a button that you could use to view the advice.
** ange-ftp
@ -261,7 +263,7 @@ typically due to pilot errors and should thus be in debug-ignored-errors.
** Highlight rectangles (`mouse-track-rectangle-p' in XEmacs). Already in CUA,
but it's a valuable feature worth making more general.
** Support simultaneous tty and X frames. [See the multi-tty branch of Emacs
** Support simultaneous tty and X frames. [See the multi-tty branch of Emacs
at http://lorentey.hu/project/emacs.]
** Provide MIME support for Rmail using the Gnus MIME library. [Maybe

View file

@ -76,8 +76,9 @@
% \input{gnusref} % % % % % % % % % % % % % % % % % % % % % % % % % %
%% include file for the Gnus refcard and booklet
\def\progver{5.10}\def\refver{5.10-2} % program and refcard versions
\def\date{Mar, 2005}
\def\progver{5.11} % program version
% \def\refver{5.10-2} % refcard version (not used)
\def\date{April, 2006}
\def\author{Gnus Bugfixing Girls + Boys $<$bugs@gnus.org$>$}
%%
@ -1267,10 +1268,6 @@
\begin{document}
\def\progver{5.10}\def\refver{5.10-1} % program and refcard versions
\def\date{Jan 10th, 2004}
\def\author{Gnus Bugfixing Girls + Boys $<$bugs@gnus.org$>$}
\ifthenelse{\isundefined{\booklettrue}}{ % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\raggedbottom\raggedright
\twocolumn

View file

@ -1,5 +1,5 @@
% Reference Card for Org Mode
\def\orgversionnumber{4.21}
\def\orgversionnumber{4.24}
\def\year{2006}
%
%**start of header

View file

@ -1,5 +1,5 @@
# Makefile for leim subdirectory in GNU Emacs.
# Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
# Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006
# Free Software Foundation, Inc.
# Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
# National Institute of Advanced Industrial Science and Technology (AIST)
@ -47,7 +47,7 @@ BUILT-EMACS = ${dot}${dot}/src/emacs
buildlisppath=${srcdir}/${dot}${dot}/lisp
# How to run Emacs.
RUN-EMACS = EMACSLOADPATH=$(buildlisppath) \
RUN-EMACS = EMACSLOADPATH=$(buildlisppath) LC_ALL=C\
${BUILT-EMACS} -batch --no-init-file --no-site-file --multibyte
# Subdirectories to be made if ${srcdir} is different from the current

View file

@ -1,6 +1,6 @@
;;; quail/croatian.el -- Quail package for inputing Croatian -*-coding: iso-8859-2;-*-
;; Copyright (C) 2002 Free Software Foundation, Inc.
;; Copyright (C) 2003 Free Software Foundation, Inc.
;; Author: Hrvoje Nik¹iæ <hniksic@xemacs.org>,
;; modeled after czech.el by Milan Zamazal.

View file

@ -1,7 +1,7 @@
;;; cyril-jis.el --- Quail package for inputting JISX0208 Cyrillic letters
;; Copyright (C) 2001 Free Software Foundation, Inc.
;; Copyright (C) 1997, 2005
;; Copyright (C) 1997
;; National Institute of Advanced Industrial Science and Technology (AIST)
;; Registration Number H14PRO021

View file

@ -2,7 +2,7 @@
;; Copyright (C) 1997, 1998, 2001, 2002, 2003, 2004, 2005
;; Free Software Foundation, Inc.
;; Copyright (C) 1997, 2005
;; Copyright (C) 1997, 2003
;; National Institute of Advanced Industrial Science and Technology (AIST)
;; Registration Number H14PRO021

View file

@ -1,6 +1,6 @@
;;; hangul3.el --- Quail package for inputting Korean Hangul characters -*-coding: iso-2022-7bit;-*-
;; Copyright (C) 1997, 1998, 2001 Free Software Foundation, Inc.
;; Copyright (C) 1997, 1998, 2001, 2002 Free Software Foundation, Inc.
;; Copyright (C) 1997, 2002
;; National Institute of Advanced Industrial Science and Technology (AIST)
;; Registration Number H14PRO021

View file

@ -1,5 +1,6 @@
;;; hanja.el --- Quail-package for Korean Hanja (KSC5601) -*-coding: iso-2022-7bit;-*-
;; Copyright (C) 1997 Free Software Foundation, Inc.
;; Copyright (C) 1997
;; National Institute of Advanced Industrial Science and Technology (AIST)
;; Registration Number H14PRO021

View file

@ -1,5 +1,6 @@
;;; japanese.el --- Quail package for inputting Japanese -*-coding: iso-2022-7bit;-*-
;; Copyright (C) 2001 Free Software Foundation, Inc.
;; Copyright (C) 1997, 1998, 1999, 2000, 2001, 2005
;; National Institute of Advanced Industrial Science and Technology (AIST)
;; Registration Number H14PRO021

View file

@ -1,7 +1,7 @@
;;; latin-alt.el --- Quail package for inputting various European characters -*-coding: iso-2022-7bit;-*-
;; Copyright (C) 1997, 1998, 2001, 2002 Free Software Foundation, Inc.
;; Copyright (C) 1997, 1999
;; Copyright (C) 1999
;; National Institute of Advanced Industrial Science and Technology (AIST)
;; Registration Number H14PRO021

View file

@ -1,7 +1,7 @@
;;; latin-ltx.el --- Quail package for TeX-style input -*-coding: utf-8;-*-
;; Copyright (C) 2001, 2003, 2004, 2005 Free Software Foundation, Inc.
;; Copyright (C) 2001
;; Copyright (C) 2001, 2005
;; National Institute of Advanced Industrial Science and Technology (AIST)
;; Registration Number H14PRO021

View file

@ -1,7 +1,7 @@
;;; latin-post.el --- Quail packages for inputting various European characters -*-coding: iso-2022-7bit;-*-
;; Copyright (C) 1997, 1998, 2001, 2002 Free Software Foundation, Inc.
;; Copyright (C) 1997
;; Copyright (C) 1997, 1999
;; National Institute of Advanced Industrial Science and Technology (AIST)
;; Registration Number H14PRO021

View file

@ -1,8 +1,8 @@
;;; latin-pre.el --- Quail packages for inputting various European characters -*-coding: iso-2022-7bit;-*-
;; Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002
;; Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003
;; Free Software Foundation, Inc.
;; Copyright (C) 1997, 1999, 2005
;; Copyright (C) 1997, 1998, 1999, 2000, 2005
;; National Institute of Advanced Industrial Science and Technology (AIST)
;; Registration Number H14PRO021

View file

@ -1,6 +1,6 @@
;;; pypunct-b5.el --- Quail packages for Chinese (pinyin + extra symbols)
;; Copyright (C) 1997, 2000
;; Copyright (C) 1997, 2000, 2003
;; National Institute of Advanced Industrial Science and Technology (AIST)
;; Registration Number H14PRO021

View file

@ -1,7 +1,7 @@
;;; tibetan.el --- Quail package for inputting Tibetan characters
;; Copyright (C) 1995 Free Software Foundation, Inc.
;; Copyright (C) 1995, 1998, 1999, 2000
;; Copyright (C) 1997 Free Software Foundation, Inc.
;; Copyright (C) 1997, 1998, 1999, 2000
;; National Institute of Advanced Industrial Science and Technology (AIST)
;; Registration Number H14PRO021

View file

@ -1,3 +1,225 @@
2006-04-18 Dan Nicolaescu <dann@ics.uci.edu>
* progmodes/python.el (python-mode): Fix typo.
2006-04-18 J.D. Smith <jdsmith@as.arizona.edu>
* comint.el (comint-previous-input): Don't clobber input line
when moving off either end of the input history ring.
(comint-delete-input): New function, used by
`comint-previous-input' and others.
(comint-previous-matching-input): Use
`coming-delete-input'. Save the partial input if leaving the
edit line. Goto point-max before deleting input to avoid
partial input fragments hanging around.
(comint-restore-input): New function, used by
`comint-previous-input', and bound to "C-c C-j".
2006-04-18 Luc Teirlinck <teirllm@auburn.edu>
* imenu.el (imenu--index-alist): Balance parentheses.
2006-04-18 Dan Nicolaescu <dann@ics.uci.edu>
* progmodes/python.el (python-mode): Add support for
hs-minor-mode.
2006-04-19 Reiner Steib <Reiner.Steib@gmx.de>
* abbrev.el (read-abbrev-file): Use abbrev-file-name if optional
file is nil.
2006-04-18 Richard Stallman <rms@gnu.org>
* tooltip.el (tooltip-mode, tooltip-use-echo-area): Doc fixes.
* imenu.el (imenu-create-index-function, imenu--index-alist)
(imenu--last-menubar-index-alist, imenu--make-index-alist)
(imenu-default-create-index-function, imenu--generic-function):
Doc fixes.
* image-mode.el (image-toggle-display): Handle tar and arc subfiles.
* help-mode.el (help-mode): Set view-exit-action to delete window.
* env.el (setenv): Get rid of arg UNSET. Interactive unsetting
now works by passing nil as arg.
* apropos.el (apropos-print): Don't do where-is on self-insert-command.
* abbrev.el (edit-abbrevs-redefine): Temporarily widen.
(read-abbrev-file): Provide default when reading filename.
* files.el (enable-local-variables): Allow :all as value.
(hack-local-variables): Implement that value.
(safe-local-variable-values, safe-local-eval-forms)
(enable-local-variables): Mark as risky.
(find-file-visit-truename, kept-old-versions): Mark safe.
* time-stamp.el (time-stamp-format, time-stamp-line-limit)
(time-stamp-start, time-stamp-end, time-stamp-inserts-lines)
(time-stamp-count, time-stamp-pattern): Add safe-local-variable prop.
2006-04-18 Stefan Monnier <monnier@iro.umontreal.ca>
* progmodes/tcl.el (tcl-send-string, tcl-send-region):
Use forward-line so as to get to BOL even in the presence of fields.
(tcl-eval-region): Strip surrounding space to avoid multiple prompts
in return.
(inferior-tcl): Tell tclsh to work in interactive mode.
* complete.el (partial-completion-mode):
Use 'choose-completion-string-functions to make sure that
choose-completion fills the minibuffer properly.
* complete.el (PC-old-read-file-name-internal): Remove.
(PC-read-include-file-name-internal): Remove. Turn it into an advice
of read-file-name-internal.
(partial-completion-mode): Enable/disable this advice.
2006-04-18 Juanma Barranquero <lekktu@gmail.com>
* net/tramp.el (tramp-completion-file-name-handler): Revert change
of 2006-04-17.
2006-04-18 Carsten Dominik <dominik@science.uva.nl>
* textmodes/org.el (org-insert-heading): Insert heading before
current if at beginning of line.
(org-todo, org-date): New faces.
(org-table-align): Make sure tooltip window contains full text.
(org-no-properties): New defsubst.
(org-set-font-lock-defaults): Use new faces.
2006-04-18 Nick Roberts <nickrob@snap.net.nz>
* progmodes/gud.el (gud-speedbar-item-info): Display frame address
for root variables.
* progmodes/gdb-ui.el (gdb-pc-address): Rename from gdb-frame-address.
(gdb-frame-address): Re-use to identify frame for watch expression.
(gdb-var-list, gdb-var-create-handler): Add frame address for root
variables.
(gdb-init-1, gdb-source, gdb-post-prompt, )
(gdb-assembler-custom, gdb-invalidate-assembler): Use gdb-pc-address.
(gdb-frame-handler): Get gdb-frame-address.
2006-04-17 Michael Albinus <michael.albinus@gmx.de>
Sync with Tramp 2.0.53.
* net/tramp.el (tramp-completion-mode): ?\t has event-modifier
'control. Reported by Matthias F,bv(Brste <slashdevslashnull@gmx.net>.
(tramp-completion-file-name-handler): Add autoload cookie for
adding to `file-name-handler-alist'.
* net/tramp-smb.el (tramp-smb-wait-for-output): Wait always for
the prompt. If it returns earlier (when detecting an error
message), the rest of the output will merge accidently with the
output of the next command. Reported by M Jared Finder
<jared@hpalace.com>.
* net/tramp-vc.el (vc-user-login-name): Wrap defadvice with a test
for `process-file', in order to let it work for older Emacsen too.
2006-04-17 Ralf Angeli <angeli@iwi.uni-sb.de>
* textmodes/tex-mode.el (tex-font-lock-match-suscript): New function.
(tex-font-lock-keywords-3): Use it.
2006-04-16 Stefan Monnier <monnier@iro.umontreal.ca>
* newcomment.el (comment-add): New function.
(comment-region-default, comment-dwim): Use it.
2006-04-15 Michael Olson <mwolson@gnu.org>
* emacs-lisp/tq.el: Improve comments.
(tq-queue-head-question): New accessor function.
(tq-queue-head-regexp, tq-queue-head-closure, tq-queue-head-fn):
Update for modified queue structure.
(tq-queue-add): Accept `question' argument.
(tq-queue-pop): If a question is pending, send it.
(tq-enqueue): Accept new optional argument `delay-question'.
If this is non-nil, and at least one other question is pending a
response, queue the question rather than sending it immediately.
2006-04-15 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
* calendar/appt.el (appt-add): Check whether an appointment is
already present in appt-time-msg-list. Simplify code.
2006-04-14 Stefan Monnier <monnier@iro.umontreal.ca>
* progmodes/cc-langs.el (c-mode-menu):
Don't presume c-subword-mode is bound.
2006-04-13 Bill Wohler <wohler@newt.com>
* cus-edit.el (customize-package-emacs-version-alist): Update docstring.
(customize-package-emacs-version): Use cdr instead of cadr now
that alists use dotted pairs.
* custom.el (defcustom): Fix docstring for :package-version.
2006-04-13 Michael Albinus <michael.albinus@gmx.de>
* net/tramp.el (tramp-display-shell-command-buffer): New defvar.
(tramp-handle-shell-command): Display output buffer only when
`tramp-display-shell-command-buffer' is true.
(tramp-handle-process-file): Set `tramp-display-shell-command-buffer'.
2006-04-13 Carsten Dominik <dominik@science.uva.nl>
* textmodes/org.el (org-set-autofill-regexps): Set only the local
values of `adaptive-fill-regexp' and `adaptive-fill-function'.
2006-04-13 Romain Francoise <romain@orebokech.com>
* pcvs-parse.el (cvs-parse-table): Use `with-temp-buffer' to avoid
leaving temporary .cvsignore buffers behind.
2006-04-13 Carsten Dominik <dominik@science.uva.nl>
* textmodes/org.el: (org-set-regexps-and-options)
(org-get-current-options): Better names for the startup folding
options.
2006-04-13 Thien-Thi Nguyen <ttn@gnu.org>
* vc.el (vc-annotate): Arrange for point to end up at the same
line number as in the original, but only when using a new buffer.
2006-04-12 Davis Herring <herring@lanl.gov> (tiny change)
* files.el (hack-one-local-variable-eval-safep):
Recognize `edebug-form-spec' for `put', but only if it passes
`edebug-basic-spec'. Generalize `put' handling.
* emacs-lisp/edebug.el (edebug-basic-spec): New function for
vetting file-local form specs.
* allout.el (allout-layout): Autoload its `safe-local-variable'
property.
2006-04-13 Carsten Dominik <dominik@science.uva.nl>
* textmodes/org.el: (org-ctrl-c-ctrl-c): Improve documentation string.
(org-agenda-mouse-1-follows-link)
(org-mouse-1-follows-link): New options.
(org-format-agenda-item): Fix bug if TAGS is nil.
(org-agenda-get-scheduled): Quote `priority' symbol in plist.
2006-04-13 Nick Roberts <nickrob@snap.net.nz>
* progmodes/gdb-ui.el (gdb-set-gud-minor-mode-existing-buffers):
GDB 6.1+ gives full filename for "info sources" so use
file-name-nondirectory.
2006-04-12 Romain Francoise <romain@orebokech.com>
* subr.el (read-passwd): Bind `message-log-max' to nil.
2006-04-12 Stefan Monnier <monnier@iro.umontreal.ca>
* progmodes/perl-mode.el (perl-indent-new-calculate):
@ -2835,7 +3057,7 @@
(vc-default-update-changelog): Don't use vc-user-login-name, we
don't need it here.
* tramp-vc.el (vc-user-login-name): Comment out defadvice, it is
* net/tramp-vc.el (vc-user-login-name): Comment out defadvice, it is
no longer necessary.
2006-01-25 Kenichi Handa <handa@m17n.org>

View file

@ -160,8 +160,10 @@ or may be omitted (it is usually omitted)."
(defun edit-abbrevs-redefine ()
"Redefine abbrevs according to current buffer contents."
(interactive)
(define-abbrevs t)
(set-buffer-modified-p nil))
(save-restriction
(widen)
(define-abbrevs t)
(set-buffer-modified-p nil)))
(defun define-abbrevs (&optional arg)
"Define abbrevs according to current visible buffer contents.
@ -195,9 +197,12 @@ the ones defined from the buffer now."
Optional argument FILE is the name of the file to read;
it defaults to the value of `abbrev-file-name'.
Optional second argument QUIETLY non-nil means don't display a message."
(interactive "fRead abbrev file: ")
(load (if (and file (> (length file) 0)) file abbrev-file-name)
nil quietly)
(interactive
(list
(read-file-name (format "Read abbrev file (default %s): "
abbrev-file-name)
nil abbrev-file-name t)))
(load (or file abbrev-file-name) nil quietly)
(setq abbrevs-changed nil))
(defun quietly-read-abbrev-file (&optional file)

View file

@ -666,6 +666,7 @@ the layout used for the allout.el source file.)
`allout-layout' can additionally have the value `t', in which
case the value of `allout-default-layout' is used.")
(make-variable-buffer-local 'allout-layout)
;;;###autoload
(put 'allout-layout 'safe-local-variable t)
;;;_ : Topic header format

View file

@ -908,6 +908,7 @@ If non-nil TEXT is a string that will be printed as a heading."
;; Calculate key-bindings if we want them.
(and do-keys
(commandp symbol)
(not (eq symbol 'self-insert-command))
(indent-to 30 1)
(if (let ((keys
(save-excursion

View file

@ -498,11 +498,11 @@ The time should be in either 24 hour format or am/pm format."
(interactive "sTime (hh:mm[am/pm]): \nsMessage: ")
(unless (string-match appt-time-regexp new-appt-time)
(error "Unacceptable time-string"))
(let* ((appt-time-string (concat new-appt-time " " new-appt-msg))
(appt-time (list (appt-convert-time new-appt-time)))
(time-msg (list appt-time appt-time-string t)))
(setq appt-time-msg-list (nconc appt-time-msg-list (list time-msg)))
(setq appt-time-msg-list (appt-sort-list appt-time-msg-list))))
(let ((time-msg (list (list (appt-convert-time new-appt-time))
(concat new-appt-time " " new-appt-msg) t)))
(unless (member time-msg appt-time-msg-list)
(setq appt-time-msg-list
(appt-sort-list (nconc appt-time-msg-list (list time-msg)))))))
;;;###autoload
(defun appt-delete ()

View file

@ -465,6 +465,7 @@ executed once when the buffer is created."
(define-key map "\C-c\C-l" 'comint-dynamic-list-input-ring)
(define-key map "\C-c\C-n" 'comint-next-prompt)
(define-key map "\C-c\C-p" 'comint-previous-prompt)
(define-key map "\C-c\C-j" 'comint-restore-input)
(define-key map "\C-c\C-d" 'comint-send-eof)
(define-key map "\C-c\C-s" 'comint-write-output)
(define-key map "\C-c." 'comint-insert-previous-argument)
@ -558,6 +559,9 @@ This is to support the command \\[comint-get-next-from-history].")
"Non-nil if you are accumulating input lines to send as input together.
The command \\[comint-accumulate] sets this.")
(defvar comint-stored-incomplete-input nil
"Stored input for history cycling.")
(put 'comint-replace-by-expanded-history 'menu-enable 'comint-input-autoexpand)
(put 'comint-input-ring 'permanent-local t)
(put 'comint-input-ring-index 'permanent-local t)
@ -638,6 +642,7 @@ Entry to this mode runs the hooks on `comint-mode-hook'."
(make-local-variable 'comint-scroll-to-bottom-on-input)
(make-local-variable 'comint-move-point-for-output)
(make-local-variable 'comint-scroll-show-maximum-output)
(make-local-variable 'comint-stored-incomplete-input)
;; This makes it really work to keep point at the bottom.
(make-local-variable 'scroll-conservatively)
(setq scroll-conservatively 10000)
@ -1015,6 +1020,16 @@ See also `comint-read-input-ring'."
(t
arg)))
(defun comint-restore-input ()
"Restore unfinished input."
(interactive)
(when comint-input-ring-index
(comint-delete-input)
(when (> (length comint-stored-incomplete-input) 0)
(insert comint-stored-incomplete-input)
(message "Input restored"))
(setq comint-input-ring-index nil)))
(defun comint-search-start (arg)
"Index to start a directional search, starting at `comint-input-ring-index'."
(if comint-input-ring-index
@ -1035,9 +1050,18 @@ Moves relative to `comint-input-ring-index'."
arg)))
(defun comint-previous-input (arg)
"Cycle backwards through input history."
"Cycle backwards through input history, saving input."
(interactive "*p")
(comint-previous-matching-input "." arg))
(if (and comint-input-ring-index
(or ;; leaving the "end" of the ring
(and (< arg 0) ; going down
(eq comint-input-ring-index 0))
(and (> arg 0) ; going up
(eq comint-input-ring-index
(1- (ring-length comint-input-ring)))))
comint-stored-incomplete-input)
(comint-restore-input)
(comint-previous-matching-input "." arg)))
(defun comint-next-input (arg)
"Cycle forwards through input history."
@ -1077,6 +1101,14 @@ Moves relative to START, or `comint-input-ring-index'."
(if (string-match regexp (ring-ref comint-input-ring n))
n)))
(defun comint-delete-input ()
"Delete all input between accumulation or process mark and point."
(delete-region
;; Can't use kill-region as it sets this-command
(or (marker-position comint-accum-marker)
(process-mark (get-buffer-process (current-buffer))))
(point-max)))
(defun comint-previous-matching-input (regexp n)
"Search backwards through input history for match for REGEXP.
\(Previous history elements are earlier commands.)
@ -1088,13 +1120,13 @@ If N is negative, find the next or Nth next match."
;; Has a match been found?
(if (null pos)
(error "Not found")
;; If leaving the edit line, save partial input
(if (null comint-input-ring-index) ;not yet on ring
(setq comint-stored-incomplete-input
(funcall comint-get-old-input)))
(setq comint-input-ring-index pos)
(message "History item: %d" (1+ pos))
(delete-region
;; Can't use kill-region as it sets this-command
(or (marker-position comint-accum-marker)
(process-mark (get-buffer-process (current-buffer))))
(point))
(comint-delete-input)
(insert (ring-ref comint-input-ring pos)))))
(defun comint-next-matching-input (regexp n)

View file

@ -141,8 +141,6 @@ If nil, means use the colon-separated path in the variable $INCPATH instead."
"A list of the environment variable names and values.")
(defvar PC-old-read-file-name-internal nil)
(defun PC-bindings (bind)
(let ((completion-map minibuffer-local-completion-map)
(must-match-map minibuffer-local-must-match-map))
@ -219,21 +217,32 @@ second TAB brings up the `*Completions*' buffer."
((not PC-disable-includes)
(add-hook 'find-file-not-found-functions 'PC-look-for-include-file)))
;; ... with some underhand redefining.
(cond ((and (not partial-completion-mode)
(functionp PC-old-read-file-name-internal))
(fset 'read-file-name-internal PC-old-read-file-name-internal))
((and (not PC-disable-includes) (not PC-old-read-file-name-internal))
(setq PC-old-read-file-name-internal
(symbol-function 'read-file-name-internal))
(fset 'read-file-name-internal
'PC-read-include-file-name-internal)))
(when (and partial-completion-mode (null PC-env-vars-alist))
(setq PC-env-vars-alist
(mapcar (lambda (string)
(let ((d (string-match "=" string)))
(cons (concat "$" (substring string 0 d))
(and d (substring string (1+ d))))))
process-environment))))
(cond ((not partial-completion-mode)
(ad-disable-advice 'read-file-name-internal 'around 'PC-include-file)
(ad-activate 'read-file-name-internal))
((not PC-disable-includes)
(ad-enable-advice 'read-file-name-internal 'around 'PC-include-file)
(ad-activate 'read-file-name-internal)))
;; Adjust the completion selection in *Completion* buffers to the way
;; we work. The default minibuffer completion code only completes the
;; text before point and leaves the text after point alone (new in
;; Emacs-22). In contrast we use the whole text and we even sometimes
;; move point to a place before EOB, to indicate the first position where
;; there's a difference, so when the user uses choose-completion, we have
;; to trick choose-completion into replacing the whole minibuffer text
;; rather than only the text before point. --Stef
(funcall
(if partial-completion-mode 'add-hook 'remove-hook)
'choose-completion-string-functions
(lambda (&rest x) (goto-char (point-max)) nil))
;; Build the env-completion and mapping table.
(when (and partial-completion-mode (null PC-env-vars-alist))
(setq PC-env-vars-alist
(mapcar (lambda (string)
(let ((d (string-match "=" string)))
(cons (concat "$" (substring string 0 d))
(and d (substring string (1+ d))))))
process-environment))))
(defun PC-complete ()
@ -930,20 +939,23 @@ absolute rather than relative to some directory on the SEARCH-PATH."
(setq sorted (cdr sorted)))
compressed))))
(defun PC-read-include-file-name-internal (string dir action)
(if (string-match "<\\([^\"<>]*\\)>?$" string)
(let* ((name (substring string (match-beginning 1) (match-end 1)))
(defadvice read-file-name-internal (around PC-include-file disable)
(if (string-match "<\\([^\"<>]*\\)>?\\'" (ad-get-arg 0))
(let* ((string (ad-get-arg 0))
(action (ad-get-arg 2))
(name (substring string (match-beginning 1) (match-end 1)))
(str2 (substring string (match-beginning 0)))
(completion-table
(mapcar (function (lambda (x) (list (format "<%s>" x))))
(mapcar (lambda (x) (format "<%s>" x))
(PC-include-file-all-completions
name (PC-include-file-path)))))
(cond
((not completion-table) nil)
((eq action nil) (try-completion str2 completion-table nil))
((eq action t) (all-completions str2 completion-table nil))
((eq action 'lambda) (test-completion str2 completion-table nil))))
(funcall PC-old-read-file-name-internal string dir action)))
(setq ad-return-value
(cond
((not completion-table) nil)
((eq action 'lambda) (test-completion str2 completion-table nil))
((eq action nil) (try-completion str2 completion-table nil))
((eq action t) (all-completions str2 completion-table nil)))))
ad-do-it))
(provide 'complete)

View file

@ -1082,14 +1082,29 @@ Show the buffer in another window, but don't select it."
;; Packages will update this variable, so make it available.
;;;###autoload
(defvar customize-package-emacs-version-alist nil
"Alist that maps packages to alists of package to Emacs versions.
The value alists map all package versions used with
the :package-version keyword to Emacs versions. Packages are
symbols and versions are strings.
"Alist mapping versions of Emacs to versions of a package.
These package versions are listed in the :package-version
keyword used in `defcustom', `defgroup', and `defface'. Its
elements look like this:
For example:
'((MH-E (\"7.4\" \"22.1\") (\"8.0\" \"22.1\"))
(Gnus (\"5.11\" \"22.1\")))")
(PACKAGE (PVERSION . EVERSION)...)
For each PACKAGE, which is a symbol, there are one or more
elements that contain a package version PVERSION with an
associated Emacs version EVERSION. These versions are strings.
For example, the MH-E package updates this alist with the
following:
(add-to-list 'customize-package-emacs-version-alist
'(MH-E (\"6.0\" . \"22.1\") (\"6.1\" . \"22.1\")
(\"7.0\" . \"22.1\") (\"7.1\" . \"22.1\")
(\"7.2\" . \"22.1\") (\"7.3\" . \"22.1\")
(\"7.4\" . \"22.1\") (\"8.0\" . \"22.1\")))
The value of PACKAGE needs to be unique and it needs to match the
PACKAGE value appearing in the :package-version keyword. Since
the user might see the value in a error message, a good choice is
the official name of the package, such as MH-E or Gnus.")
;;;###autoload
(defalias 'customize-changed 'customize-changed-options)
@ -1154,7 +1169,7 @@ that were added or redefined since that version."
(defun customize-package-emacs-version (symbol package-version)
"Return Emacs version of SYMBOL.
PACKAGE-VERSION has the form (PACKAGE VERSION). The VERSION of
PACKAGE-VERSION has the form (PACKAGE . VERSION). The VERSION of
PACKAGE is looked up in the associated list
`customize-package-emacs-version-alist' to find the version of
Emacs that is associated with it."
@ -1167,9 +1182,10 @@ Emacs that is associated with it."
((setq package-versions (assq (car package-version)
customize-package-emacs-version-alist))
(setq emacs-version
(cadr (assoc (cadr package-version) package-versions)))
(cdr (assoc (cdr package-version) package-versions)))
(unless emacs-version
(message "Package version of %s not found in %s" symbol
(message "%s version %s not found in %s" symbol
(cdr package-version)
"customize-package-emacs-version-alist")))
(t
(message "Package %s neglected to update %s"

View file

@ -272,11 +272,14 @@ The following common keywords are also meaningful.
first introduced, or its default value was changed, in Emacs
version VERSION.
:package-version
VALUE should be a list with the form (PACKAGE VERSION)
VALUE should be a list with the form (PACKAGE . VERSION)
specifying that the variable was first introduced, or its
default value was changed, in PACKAGE version VERSION. This
keyword takes priority over :version. The PACKAGE and VERSION
must appear in the alist `customize-package-emacs-version-alist'.
Since PACKAGE must be unique and the user might see it in an
error message, a good choice is the official name of the
package, such as MH-E or Gnus.
:tag LABEL
Use LABEL, a string, instead of the item's name, to label the item
in customization menus and buffers.

View file

@ -258,6 +258,20 @@ Both SYMBOL and SPEC are unevaluated. The SPEC can be 0, t, a symbol
edebug-form-spec
))
;;;###autoload
(defun edebug-basic-spec (spec)
"Return t if SPEC uses only extant spec symbols.
An extant spec symbol is a symbol that is not a function and has a
`edebug-form-spec' property."
(cond ((listp spec)
(catch 'basic
(while spec
(unless (edebug-basic-spec (car spec)) (throw 'basic nil))
(setq spec (cdr spec)))
t))
((symbolp spec)
(unless (functionp spec) (get spec 'edebug-form-spec)))))
;;; Utilities
;; Define edebug-gensym - from old cl.el

View file

@ -228,6 +228,14 @@ The search is done in the source for library LIBRARY."
(with-syntax-table emacs-lisp-mode-syntax-table
(goto-char (point-min))
(if (or (re-search-forward regexp nil t)
;; `regexp' matches definitions using known forms like
;; `defun', or `defvar'. But some functions/variables
;; are defined using special macros (or functions), so
;; if `regexp' can't find the definition, we look for
;; something of the form "(SOMETHING <symbol> ...)".
;; This fails to distinguish function definitions from
;; variable declarations (or even uses thereof), but is
;; a good pragmatic fallback.
(re-search-forward
(concat "^([^ ]+" find-function-space-re "['(]?"
(regexp-quote (symbol-name symbol))

View file

@ -27,18 +27,56 @@
;;; Commentary:
;; manages receiving a stream asynchronously,
;; parsing it into transactions, and then calling
;; handler functions
;; This file manages receiving a stream asynchronously, parsing it
;; into transactions, and then calling the associated handler function
;; upon the completion of each transaction.
;; Our basic structure is the queue/process/buffer triple. Each entry
;; of the queue is a regexp/closure/function triple. We buffer
;; bytes from the process until we see the regexp at the head of the
;; queue. Then we call the function with the closure and the
;; collected bytes.
;; of the queue part is a list of question, regexp, closure, and
;; function that is consed to the last element.
;; A transaction queue may be created by calling `tq-create'.
;; A request may be added to the queue by calling `tq-enqueue'. If
;; the `delay-question' argument is non-nil, we will wait to send the
;; question to the process until it has finished sending other input.
;; Otherwise, once a request is enqueued, we send the given question
;; immediately to the process.
;; We then buffer bytes from the process until we see the regexp that
;; was provided in the call to `tq-enqueue'. Then we call the
;; provided function with the closure and the collected bytes. If we
;; have indicated that the question from the next transaction was not
;; sent immediately, send it at this point, awaiting the response.
;;; Code:
;;; Accessors
;; This part looks like (queue . (process . buffer))
(defun tq-queue (tq) (car tq))
(defun tq-process (tq) (car (cdr tq)))
(defun tq-buffer (tq) (cdr (cdr tq)))
;; The structure of `queue' is as follows
;; ((question regexp closure . fn)
;; <other queue entries>)
;; question: string to send to the process
(defun tq-queue-head-question (tq) (car (car (tq-queue tq))))
;; regexp: regular expression that matches the end of a response from
;; the process
(defun tq-queue-head-regexp (tq) (car (cdr (car (tq-queue tq)))))
;; closure: additional data to pass to function
(defun tq-queue-head-closure (tq) (car (cdr (cdr (car (tq-queue tq))))))
;; fn: function to call upon receiving a complete response from the
;; process
(defun tq-queue-head-fn (tq) (cdr (cdr (cdr (car (tq-queue tq))))))
;; Determine whether queue is empty
(defun tq-queue-empty (tq) (not (tq-queue tq)))
;;; Core functionality
;;;###autoload
(defun tq-create (process)
"Create and return a transaction queue communicating with PROCESS.
@ -54,33 +92,37 @@ to a tcp server on another machine."
(tq-filter ',tq string)))
tq))
;;; accessors
(defun tq-queue (tq) (car tq))
(defun tq-process (tq) (car (cdr tq)))
(defun tq-buffer (tq) (cdr (cdr tq)))
(defun tq-queue-add (tq re closure fn)
(defun tq-queue-add (tq question re closure fn)
(setcar tq (nconc (tq-queue tq)
(cons (cons re (cons closure fn)) nil)))
(cons (cons question (cons re (cons closure fn))) nil)))
'ok)
(defun tq-queue-head-regexp (tq) (car (car (tq-queue tq))))
(defun tq-queue-head-fn (tq) (cdr (cdr (car (tq-queue tq)))))
(defun tq-queue-head-closure (tq) (car (cdr (car (tq-queue tq)))))
(defun tq-queue-empty (tq) (not (tq-queue tq)))
(defun tq-queue-pop (tq) (setcar tq (cdr (car tq))) (null (car tq)))
(defun tq-queue-pop (tq)
(setcar tq (cdr (car tq)))
(let ((question (tq-queue-head-question tq)))
(when question
(process-send-string (tq-process tq) question)))
(null (car tq)))
;;; must add to queue before sending!
(defun tq-enqueue (tq question regexp closure fn)
(defun tq-enqueue (tq question regexp closure fn &optional delay-question)
"Add a transaction to transaction queue TQ.
This sends the string QUESTION to the process that TQ communicates with.
When the corresponding answer comes back, we call FN
with two arguments: CLOSURE, and the answer to the question.
When the corresponding answer comes back, we call FN with two
arguments: CLOSURE, which may contain additional data that FN
needs, and the answer to the question.
REGEXP is a regular expression to match the entire answer;
that's how we tell where the answer ends."
(tq-queue-add tq regexp closure fn)
(process-send-string (tq-process tq) question))
that's how we tell where the answer ends.
If DELAY-QUESTION is non-nil, delay sending this question until
the process has finished replying to any previous questions.
This produces more reliable results with some processes."
(let ((sendp (or (not delay-question)
(not (tq-queue-head-question tq)))))
(tq-queue-add tq (unless sendp question) regexp closure fn)
(when sendp
(process-send-string (tq-process tq) question))))
(defun tq-close (tq)
"Shut down transaction queue TQ, terminating the process."

View file

@ -94,15 +94,10 @@ Use `$$' to insert a single dollar sign."
;; Fixme: Should the environment be recoded if LC_CTYPE &c is set?
(defun setenv (variable &optional value unset substitute-env-vars frame)
(defun setenv (variable &optional value substitute-env-vars frame)
"Set the value of the environment variable named VARIABLE to VALUE.
VARIABLE should be a string. VALUE is optional; if not provided or
nil, the environment variable VARIABLE will be removed.
UNSET if non-nil means to remove VARIABLE from the environment.
SUBSTITUTE-ENV-VARS, if non-nil, means to substitute environment
variables in VALUE with `substitute-env-vars', where see.
Value is the new value if VARIABLE, or nil if removed from the
environment.
Interactively, a prefix argument means to unset the variable, and
otherwise the current value (if any) of the variable appears at
@ -116,6 +111,13 @@ modifying either `global-environment' or the environment
belonging to the selected frame, depending on the value of
`local-environment-variables'.
SUBSTITUTE-ENV-VARS, if non-nil, means to substitute environment
variables in VALUE with `substitute-env-vars', which see.
This is normally used only for interactive calls.
The return value is the new value of VARIABLE, or nil if
it was removed from the environment.
If optional parameter FRAME is non-nil, then it should be a a
frame. If the specified frame has its own set of environment
variables, this function will modify VARIABLE in it. Note that
@ -127,7 +129,7 @@ As a special case, setting variable `TZ' calls `set-time-zone-rule' as
a side-effect."
(interactive
(if current-prefix-arg
(list (read-envvar-name "Clear environment variable: " 'exact) nil t)
(list (read-envvar-name "Clear environment variable: " 'exact) nil)
(let* ((var (read-envvar-name "Set environment variable: " nil))
(value (getenv var)))
(when value
@ -137,7 +139,6 @@ a side-effect."
(read-from-minibuffer (format "Set %s to value: " var)
nil nil nil 'setenv-history
value)
nil
t))))
(if (and (multibyte-string-p variable) locale-coding-system)
(let ((codings (find-coding-systems-string (concat variable value))))
@ -145,10 +146,9 @@ a side-effect."
(memq (coding-system-base locale-coding-system) codings))
(error "Can't encode `%s=%s' with `locale-coding-system'"
variable (or value "")))))
(if unset
(setq value nil)
(if substitute-env-vars
(setq value (substitute-env-vars value))))
(and value
substitute-env-vars
(setq value (substitute-env-vars value)))
(if (multibyte-string-p variable)
(setq variable (encode-coding-string variable locale-coding-system)))
(if (and value (multibyte-string-p value))

View file

@ -452,6 +452,8 @@ not safe, Emacs queries you, once, whether to set them all.
\(When you say yes to certain values, they are remembered as safe.)
:safe means set the safe variables, and ignore the rest.
:all means set all variables, whether safe or not.
(Don't set it permanently to :all.)
nil means always ignore the file local variables.
Any other value means always query you once whether to set them all.
@ -464,8 +466,9 @@ a -*- line.
The command \\[normal-mode], when used interactively,
always obeys file local variable specifications and the -*- line,
and ignores this variable."
:type '(choice (const :tag "Obey" t)
:type '(choice (const :tag "Query Unsafe" t)
(const :tag "Safe Only" :safe)
(const :tag "Do all" :all)
(const :tag "Ignore" nil)
(other :tag "Query" other))
:group 'find-file)
@ -2283,6 +2286,7 @@ asking you for confirmation."
default-text-properties
display-time-string
enable-local-eval
enable-local-variables
eval
exec-directory
exec-path
@ -2319,6 +2323,8 @@ asking you for confirmation."
parse-time-rules
process-environment
rmail-output-file-alist
safe-local-variable-values
safe-local-eval-forms
save-some-buffers-action-alist
special-display-buffer-names
standard-input
@ -2356,9 +2362,11 @@ asking you for confirmation."
(c-indent-level . integerp)
(comment-column . integerp)
(compile-command . string-or-null-p)
(find-file-visit-truename . t)
(fill-column . integerp)
(fill-prefix . string-or-null-p)
(indent-tabs-mode . t)
(kept-old-versions . integerp)
(kept-new-versions . integerp)
(left-margin . t)
(no-byte-compile . t)
@ -2631,6 +2639,7 @@ is specified, returning t if it is specified."
(if (or (and (eq enable-local-variables t)
(null unsafe-vars)
(null risky-vars))
(eq enable-local-variables :all)
(hack-local-variables-confirm
result unsafe-vars risky-vars))
(dolist (elt result)
@ -2690,12 +2699,14 @@ It is dangerous if either of these conditions are met:
(and (eq (car exp) 'put)
(hack-one-local-variable-quotep (nth 1 exp))
(hack-one-local-variable-quotep (nth 2 exp))
(memq (nth 1 (nth 2 exp))
'(lisp-indent-hook))
;; Only allow safe values of lisp-indent-hook;
;; not functions.
(or (numberp (nth 3 exp))
(equal (nth 3 exp) ''defun)))
(let ((prop (nth 1 (nth 2 exp))) (val (nth 3 exp)))
(cond ((eq prop 'lisp-indent-hook)
;; Only allow safe values of lisp-indent-hook;
;; not functions.
(or (numberp val) (equal val ''defun)))
((eq prop 'edebug-form-spec)
;; Only allow indirect form specs.
(edebug-basic-spec val)))))
;; Allow expressions that the user requested.
(member exp safe-local-eval-forms)
;; Certain functions can be allowed with safe arguments

View file

@ -1,3 +1,52 @@
2006-04-17 Reiner Steib <Reiner.Steib@gmx.de>
[ Merge from Gnus trunk. ]
* mm-util.el (mm-charset-synonym-alist): Improve doc string.
(mm-charset-override-alist): New variable.
(mm-charset-to-coding-system): Use it.
(mm-codepage-setup): New helper function.
(mm-charset-eval-alist): New variable.
(mm-charset-to-coding-system): Use mm-charset-eval-alist. Warn
about unknown charsets. Add allow-override. Use
`mm-charset-override-alist' only when decoding.
(mm-detect-mime-charset-region): Use :mime-charset.
* mm-bodies.el (mm-decode-body, mm-decode-string): Call
`mm-charset-to-coding-system' with allow-override argument.
* message.el (message-tool-bar-zap-list, message-tool-bar)
(message-tool-bar-gnome, message-tool-bar-retro): New variables.
(message-tool-bar-local-item-from-menu): Remove.
(message-tool-bar-map): Replace by `message-make-tool-bar'.
(message-make-tool-bar): New function.
(message-mode): Use `message-make-tool-bar'.
* gnus-sum.el (gnus-summary-tool-bar)
(gnus-summary-tool-bar-gnome, gnus-summary-tool-bar-retro)
(gnus-summary-tool-bar-zap-list): New variables.
(gnus-summary-make-tool-bar): Complete rewrite using
`gmm-tool-bar-from-list'.
* gnus-group.el (gnus-group-tool-bar, gnus-group-tool-bar-gnome)
(gnus-group-tool-bar-retro, gnus-group-tool-bar-zap-list): New
variables.
(gnus-group-make-tool-bar): Complete rewrite using
`gmm-tool-bar-from-list'.
(gnus-group-tool-bar-update): New function.
* gmm-utils.el: New file.
2006-04-12 Ralf Angeli <angeli@iwi.uni-sb.de>
* flow-fill.el (fill-flowed): Remove trailing space from blank
quoted lines.
2006-04-12 Reiner Steib <Reiner.Steib@gmx.de>
* gnus-art.el (gnus-article-mode): Set
cursor-in-non-selected-windows to nil.
2006-04-12 Katsumi Yamaoka <yamaoka@jpl.org>
* gnus-art.el (gnus-mime-view-part-as-charset): Ignore charset
@ -12,13 +61,6 @@
* gnus-uu.el (gnus-uu-save-article): Put mml tags instead of part
tag to summarized topics part in order to encode non-ASCII text.
2006-04-12 Kenichi Handa <handa@m17n.org>
* rfc2231.el (rfc2231-decode-encoded-string): Work on unibyte
buffer and then decode the buffer text if necessary.
(rfc2231-encode-string): Be sure to work on multibyte buffer at
first, and after mm-encode-body, change the buffer to unibyte.
2006-04-11 Reiner Steib <Reiner.Steib@gmx.de>
* gnus-art.el (gnus-button-valid-localpart-regexp): Exclude `@'.

View file

@ -114,7 +114,7 @@ RFC 2646 suggests 66 characters for readability."
(set-buffer (or (current-buffer) buffer))
(goto-char (point-min))
;; Remove space stuffing.
(while (re-search-forward "^ " nil t)
(while (re-search-forward "^\\( \\|>+ $\\)" nil t)
(delete-char -1)
(forward-line 1))
(goto-char (point-min))

413
lisp/gnus/gmm-utils.el Normal file
View file

@ -0,0 +1,413 @@
;;; gmm-utils.el --- Utility functions for Gnus, Message and MML
;; Copyright (C) 2006 Free Software Foundation, Inc.
;; Author: Reiner Steib <reiner.steib@gmx.de>
;; Keywords: news
;; This file is part of GNU Emacs.
;; GNU Emacs is free software; you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
;; the Free Software Foundation; either version 2, or (at your option)
;; any later version.
;; GNU Emacs is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;; GNU General Public License for more details.
;; You should have received a copy of the GNU General Public License
;; along with GNU Emacs; see the file COPYING. If not, write to the
;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
;; Boston, MA 02110-1301, USA.
;;; Commentary:
;; This library provides self-contained utility functions. The functions are
;; used in Gnus, Message and MML, but within this library there are no
;; dependencies on Gnus, Message, or MML or Gnus.
;;; Code:
;; (require 'wid-edit)
(defgroup gmm nil
"Utility functions for Gnus, Message and MML"
:prefix "gmm-"
:version "23.0" ;; No Gnus
:group 'lisp)
;; Helper functions from `gnus-utils.el': gmm-verbose, gmm-message, gmm-error
(defcustom gmm-verbose 7
"Integer that says how verbose gmm should be.
The higher the number, the more messages will flash to say what
it done. At zero, it will be totally mute; at five, it will
display most important messages; and at ten, it will keep on
jabbering all the time."
:type 'integer
:group 'gmm)
;;;###autoload
(defun gmm-message (level &rest args)
"If LEVEL is lower than `gmm-verbose' print ARGS using `message'.
Guideline for numbers:
1 - error messages, 3 - non-serious error messages, 5 - messages for things
that take a long time, 7 - not very important messages on stuff, 9 - messages
inside loops."
(if (<= level gmm-verbose)
(apply 'message args)
;; We have to do this format thingy here even if the result isn't
;; shown - the return value has to be the same as the return value
;; from `message'.
(apply 'format args)))
;;;###autoload
(defun gmm-error (level &rest args)
"Beep an error if LEVEL is equal to or less than `gmm-verbose'.
ARGS are passed to `message'."
(when (<= (floor level) gmm-verbose)
(apply 'message args)
(ding)
(let (duration)
(when (and (floatp level)
(not (zerop (setq duration (* 10 (- level (floor level)))))))
(sit-for duration))))
nil)
;;;###autoload
(defun gmm-widget-p (symbol)
"Non-nil iff SYMBOL is a widget."
(get symbol 'widget-type))
;; Copy of the `nnmail-lazy' code from `nnmail.el':
(define-widget 'gmm-lazy 'default
"Base widget for recursive datastructures.
This is copy of the `lazy' widget in Emacs 22.1 provided for compatibility."
:format "%{%t%}: %v"
:convert-widget 'widget-value-convert-widget
:value-create (lambda (widget)
(let ((value (widget-get widget :value))
(type (widget-get widget :type)))
(widget-put widget :children
(list (widget-create-child-value
widget (widget-convert type) value)))))
:value-delete 'widget-children-value-delete
:value-get (lambda (widget)
(widget-value (car (widget-get widget :children))))
:value-inline (lambda (widget)
(widget-apply (car (widget-get widget :children))
:value-inline))
:default-get (lambda (widget)
(widget-default-get
(widget-convert (widget-get widget :type))))
:match (lambda (widget value)
(widget-apply (widget-convert (widget-get widget :type))
:match value))
:validate (lambda (widget)
(widget-apply (car (widget-get widget :children)) :validate)))
;; Note: The format of `gmm-tool-bar-item' may change if some future Emacs
;; version will provide customizable tool bar buttons using a different
;; interface.
;; TODO: Extend API so that the "Command" entry can be a function or a plist.
;; In case of a list it should have the format...
;;
;; (:none command-without-modifier
;; :shift command-with-shift-pressed
;; :control command-with-ctrl-pressed
;; :control-shift command-with-control-and-shift-pressed
;; ;; mouse-2 and mouse-3 can't be used in Emacs yet.
;; :mouse-2 command-on-mouse-2-press
;; :mouse-3 command-on-mouse-3-press) ;; typically a menu of related commands
;;
;; Combinations of mouse-[23] plus shift and/or controll might be overkill.
;;
;; Then use (plist-get rs-command :none), (plist-get rs-command :shift)
(define-widget 'gmm-tool-bar-item (if (gmm-widget-p 'lazy) 'lazy 'gmm-lazy)
"Tool bar list item."
:tag "Tool bar item"
:type '(choice
(list :tag "Command and Icon"
(function :tag "Command")
(string :tag "Icon file")
(choice
(const :tag "Default map" nil)
;; Note: Usually we need non-nil attributes if map is t.
(const :tag "No menu" t)
(sexp :tag "Other map"))
(plist :inline t :tag "Properties"))
(list :tag "Separator"
(const :tag "No command" gmm-ignore)
(string :tag "Icon file")
(const :tag "No map")
(plist :inline t :tag "Properties"))))
(define-widget 'gmm-tool-bar-zap-list (if (gmm-widget-p 'lazy) 'lazy 'gmm-lazy)
"Tool bar zap list."
:tag "Tool bar zap list"
:type '(choice (const :tag "Zap all" t)
(const :tag "Keep all" nil)
(list
;; :value
;; Work around (bug in customize?), see
;; <news:v9is48jrj1.fsf@marauder.physik.uni-ulm.de>
;; (new-file open-file dired kill-buffer write-file
;; print-buffer customize help)
(set :inline t
(const new-file)
(const open-file)
(const dired)
(const kill-buffer)
(const save-buffer)
(const write-file)
(const undo)
(const cut)
(const copy)
(const paste)
(const search-forward)
(const print-buffer)
(const customize)
(const help))
(repeat :inline t
:tag "Other"
(symbol :tag "Icon item")))))
;; (defun gmm-color-cells (&optional display)
;; "Return the number of color cells supported by DISPLAY.
;; Compatibility function."
;; ;; `display-color-cells' doesn't return more than 256 even if color depth is
;; ;; > 8 in Emacs 21.
;; ;;
;; ;; Feel free to add proper XEmacs support.
;; (let* ((cells (and (fboundp 'display-color-cells)
;; (display-color-cells display)))
;; (plane (and (fboundp 'x-display-planes)
;; (ash 1 (x-display-planes))))
;; (none -1))
;; (max (if (integerp cells) cells none)
;; (if (integerp plane) plane none))))
(defcustom gmm-tool-bar-style
(if (and (boundp 'tool-bar-mode)
tool-bar-mode
(and (fboundp 'display-visual-class)
(not (memq (display-visual-class)
(list 'static-gray 'gray-scale
'static-color 'pseudo-color)))))
'gnome
'retro)
"Prefered tool bar style."
:type '(choice (const :tag "GNOME style" 'gnome)
(const :tag "Retro look" 'retro))
:group 'gmm)
(defvar tool-bar-map)
;;;###autoload
(defun gmm-tool-bar-from-list (icon-list zap-list default-map)
"Make a tool bar from ICON-LIST.
Within each entry of ICON-LIST, the first element is a menu
command, the second element is an icon file name and the third
element is a test function. You can use \\[describe-key]
<menu-entry> to find out the name of a menu command. The fourth
and all following elements are passed a the PROPS argument to the
function `tool-bar-local-item'.
If ZAP-LIST is a list, remove those item from the default
`tool-bar-map'. If it is t, start with a new sparse map. You
can use \\[describe-key] <icon> to find out the name of an icon
item. When \\[describe-key] <icon> shows \"<tool-bar> <new-file>
runs the command find-file\", then use `new-file' in ZAP-LIST.
DEFAULT-MAP specifies the default key map for ICON-LIST."
(let (;; For Emacs 21, we must let-bind `tool-bar-map'. In Emacs 22, we
;; could use some other local variable.
(tool-bar-map (if (eq zap-list t)
(make-sparse-keymap)
(copy-keymap tool-bar-map))))
(when (listp zap-list)
;; Zap some items which aren't relevant for this mode and take up space.
(dolist (key zap-list)
(define-key tool-bar-map (vector key) nil)))
(mapc (lambda (el)
(let ((command (car el))
(icon (nth 1 el))
(fmap (or (nth 2 el) default-map))
(props (cdr (cdr (cdr el)))) )
;; command may stem from different from-maps:
(cond ((eq command 'gmm-ignore)
;; The dummy `gmm-ignore', see `gmm-tool-bar-item'
;; widget. Suppress tooltip by adding `:enable nil'.
(if (fboundp 'tool-bar-local-item)
(apply 'tool-bar-local-item icon nil nil
tool-bar-map :enable nil props)
;; (tool-bar-local-item ICON DEF KEY MAP &rest PROPS)
;; (tool-bar-add-item ICON DEF KEY &rest PROPS)
(apply 'tool-bar-add-item icon nil nil :enable nil props)))
((equal fmap t) ;; Not a menu command
(if (fboundp 'tool-bar-local-item)
(apply 'tool-bar-local-item
icon command
(intern icon) ;; reuse icon or fmap here?
tool-bar-map props)
;; Emacs 21 compatibility:
(apply 'tool-bar-add-item
icon command
(intern icon)
props)))
(t ;; A menu command
(if (fboundp 'tool-bar-local-item-from-menu)
(apply 'tool-bar-local-item-from-menu
;; (apply 'tool-bar-local-item icon def key
;; tool-bar-map props)
command icon tool-bar-map (symbol-value fmap)
props)
;; Emacs 21 compatibility:
(apply 'tool-bar-add-item-from-menu
command icon (symbol-value fmap)
props))))
t))
(if (symbolp icon-list)
(eval icon-list)
icon-list))
tool-bar-map))
;; WARNING: The following is subject to change. Don't rely on it yet.
;; From MH-E without modifications:
(defmacro gmm-defun-compat (name function arg-list &rest body)
"Create function NAME.
If FUNCTION exists, then NAME becomes an alias for FUNCTION.
Otherwise, create function NAME with ARG-LIST and BODY."
(let ((defined-p (fboundp function)))
(if defined-p
`(defalias ',name ',function)
`(defun ,name ,arg-list ,@body))))
(gmm-defun-compat gmm-image-search-load-path
image-search-load-path (file &optional path)
"Emacs 21 and XEmacs don't have `image-search-load-path'.
This function returns nil on those systems."
nil)
;; From MH-E with modifications:
;; Don't use `gmm-defun-compat' until API changes in
;; `image-load-path-for-library' in Emacs CVS are completed.
(defun gmm-image-load-path-for-library (library image &optional path no-error)
"Return a suitable search path for images relative to LIBRARY.
First it searches for IMAGE in `image-load-path' (excluding
\"`data-directory'/images\") and `load-path', followed by a path
suitable for LIBRARY, which includes \"../../etc/images\" and
\"../etc/images\" relative to the library file itself, and then
in \"`data-directory'/images\".
Then this function returns a list of directories which contains
first the directory in which IMAGE was found, followed by the
value of `load-path'. If PATH is given, it is used instead of
`load-path'.
If NO-ERROR is non-nil and a suitable path can't be found, don't
signal an error. Instead, return a list of directories as before,
except that nil appears in place of the image directory.
Here is an example that uses a common idiom to provide
compatibility with versions of Emacs that lack the variable
`image-load-path':
;; Shush compiler.
(defvar image-load-path)
(let* ((load-path (image-load-path-for-library \"mh-e\" \"mh-logo.xpm\"))
(image-load-path (cons (car load-path)
(when (boundp 'image-load-path)
image-load-path))))
(mh-tool-bar-folder-buttons-init))"
(unless library (error "No library specified"))
(unless image (error "No image specified"))
(let (image-directory image-directory-load-path)
;; Check for images in image-load-path or load-path.
(let ((img image)
(dir (or
;; Images in image-load-path.
(gmm-image-search-load-path image) ;; "gmm-" prefix!
;; Images in load-path.
(locate-library image)))
parent)
;; Since the image might be in a nested directory (for
;; example, mail/attach.pbm), adjust `image-directory'
;; accordingly.
(when dir
(setq dir (file-name-directory dir))
(while (setq parent (file-name-directory img))
(setq img (directory-file-name parent)
dir (expand-file-name "../" dir))))
(setq image-directory-load-path dir))
;; If `image-directory-load-path' isn't Emacs' image directory,
;; it's probably a user preference, so use it. Then use a
;; relative setting if possible; otherwise, use
;; `image-directory-load-path'.
(cond
;; User-modified image-load-path?
((and image-directory-load-path
(not (equal image-directory-load-path
(file-name-as-directory
(expand-file-name "images" data-directory)))))
(setq image-directory image-directory-load-path))
;; Try relative setting.
((let (library-name d1ei d2ei)
;; First, find library in the load-path.
(setq library-name (locate-library library))
(if (not library-name)
(error "Cannot find library %s in load-path" library))
;; And then set image-directory relative to that.
(setq
;; Go down 2 levels.
d2ei (file-name-as-directory
(expand-file-name
(concat (file-name-directory library-name) "../../etc/images")))
;; Go down 1 level.
d1ei (file-name-as-directory
(expand-file-name
(concat (file-name-directory library-name) "../etc/images"))))
(setq image-directory
;; Set it to nil if image is not found.
(cond ((file-exists-p (expand-file-name image d2ei)) d2ei)
((file-exists-p (expand-file-name image d1ei)) d1ei)))))
;; Use Emacs' image directory.
(image-directory-load-path
(setq image-directory image-directory-load-path))
(no-error
(message "Could not find image %s for library %s" image library))
(t
(error "Could not find image %s for library %s" image library)))
;; Return an augmented `path' or `load-path'.
(nconc (list image-directory)
(delete image-directory (copy-sequence (or path load-path))))))
(defun gmm-customize-mode (&optional mode)
"Customize customization group for MODE.
If mode is nil, use `major-mode' of the curent buffer."
(interactive)
(customize-group
(or mode
(intern (let ((mode (symbol-name major-mode)))
(string-match "^\\(.+\\)-mode$" mode)
(match-string 1 mode))))))
(provide 'gmm-utils)
;; arch-tag: e0b60920-2ce6-40c1-bfc0-cadbbe26b602
;;; gmm-utils.el ends here

View file

@ -3809,6 +3809,7 @@ commands:
(make-local-variable 'gnus-article-ignored-charsets)
;; Prevent recent Emacsen from displaying non-break space as "\ ".
(set (make-local-variable 'nobreak-char-display) nil)
(setq cursor-in-non-selected-windows nil)
(gnus-set-default-directory)
(buffer-disable-undo)
(setq buffer-read-only t)

View file

@ -39,6 +39,7 @@
(require 'gnus-range)
(require 'gnus-win)
(require 'gnus-undo)
(require 'gmm-utils)
(require 'time-date)
(require 'gnus-ems)
@ -979,36 +980,135 @@ simple manner.")
(gnus-run-hooks 'gnus-group-menu-hook)))
(defvar gnus-group-toolbar-map nil)
;; Emacs 21 tool bar. Should be no-op otherwise.
(defun gnus-group-make-tool-bar ()
(if (and
(condition-case nil (require 'tool-bar) (error nil))
(fboundp 'tool-bar-add-item-from-menu)
(default-value 'tool-bar-mode)
(not gnus-group-toolbar-map))
(setq gnus-group-toolbar-map
(let ((tool-bar-map (make-sparse-keymap))
(load-path (mm-image-load-path)))
(tool-bar-add-item-from-menu
'gnus-group-get-new-news "get-news" gnus-group-mode-map)
(tool-bar-add-item-from-menu
'gnus-group-get-new-news-this-group "gnntg" gnus-group-mode-map)
(tool-bar-add-item-from-menu
'gnus-group-catchup-current "catchup" gnus-group-mode-map)
(tool-bar-add-item-from-menu
'gnus-group-describe-group "describe-group" gnus-group-mode-map)
(tool-bar-add-item "subscribe" 'gnus-group-subscribe 'subscribe
:help "Subscribe to the current group")
(tool-bar-add-item "unsubscribe" 'gnus-group-unsubscribe
'unsubscribe
:help "Unsubscribe from the current group")
(tool-bar-add-item-from-menu
'gnus-group-exit "exit-gnus" gnus-group-mode-map)
tool-bar-map)))
(if gnus-group-toolbar-map
(set (make-local-variable 'tool-bar-map) gnus-group-toolbar-map)))
(defvar gnus-group-tool-bar-map nil)
(defun gnus-group-tool-bar-update (&optional symbol value)
"Update group buffer toolbar.
Setter function for custom variables."
(when symbol
(set-default symbol value))
;; (setq-default gnus-group-tool-bar-map nil)
;; (use-local-map gnus-group-mode-map)
(when (gnus-alive-p)
(with-current-buffer gnus-group-buffer
(gnus-group-make-tool-bar t))))
(defcustom gnus-group-tool-bar (if (eq gmm-tool-bar-style 'gnome)
'gnus-group-tool-bar-gnome
'gnus-group-tool-bar-retro)
"Specifies the Gnus group tool bar.
It can be either a list or a symbol refering to a list. See
`gmm-tool-bar-from-list' for the format of the list. The
default key map is `gnus-group-mode-map'.
Pre-defined symbols include `gnus-group-tool-bar-gnome' and
`gnus-group-tool-bar-retro'."
:type '(choice (const :tag "GNOME style" gnus-group-tool-bar-gnome)
(const :tag "Retro look" gnus-group-tool-bar-retro)
(repeat :tag "User defined list" gmm-tool-bar-item)
(symbol))
:version "22.1" ;; Gnus 5.10.9
:initialize 'custom-initialize-default
:set 'gnus-group-tool-bar-update
:group 'gnus-group)
(defcustom gnus-group-tool-bar-gnome
'((gnus-group-post-news "mail/compose")
;; Some useful agent icons? I don't use the agent so agent users should
;; suggest useful commands:
(gnus-agent-toggle-plugged "connect" t
:visible (and gnus-agent (not gnus-plugged)))
(gnus-agent-toggle-plugged "disconnect" t
:visible (and gnus-agent gnus-plugged))
;; FIXME: gnus-agent-toggle-plugged (in gnus-agent-group-make-menu-bar)
;; should have a better help text.
(gnus-group-send-queue "mail/outbox" t
:visible (and gnus-agent gnus-plugged)
:help "Send articles from the queue group")
(gnus-group-get-new-news "mail/inbox" nil
:visible (or (not gnus-agent)
gnus-plugged))
;; FIXME: gnus-*-read-group should have a better help text.
(gnus-topic-read-group "open" nil
:visible (and (boundp 'gnus-topic-mode)
gnus-topic-mode))
(gnus-group-read-group "open" nil
:visible (not (and (boundp 'gnus-topic-mode)
gnus-topic-mode)))
;; (gnus-group-find-new-groups "???" nil)
(gnus-group-save-newsrc "save")
(gnus-group-describe-group "describe")
(gnus-group-unsubscribe-current-group "gnus/toggle-subscription")
(gnus-group-prev-unread-group "left-arrow")
(gnus-group-next-unread-group "right-arrow")
(gnus-group-exit "exit")
(gmm-customize-mode "preferences" t :help "Edit mode preferences")
(gnus-info-find-node "help"))
"List of functions for the group tool bar (GNOME style).
See `gmm-tool-bar-from-list' for the format of the list."
:type '(repeat gmm-tool-bar-item)
:version "22.1" ;; Gnus 5.10.9
:initialize 'custom-initialize-default
:set 'gnus-group-tool-bar-update
:group 'gnus-group)
(defcustom gnus-group-tool-bar-retro
'((gnus-group-get-new-news "gnus/get-news")
(gnus-group-get-new-news-this-group "gnus/gnntg")
(gnus-group-catchup-current "gnus/catchup")
(gnus-group-describe-group "gnus/describe-group")
(gnus-group-subscribe "gnus/subscribe" t
:help "Subscribe to the current group")
(gnus-group-unsubscribe "gnus/unsubscribe" t
:help "Unsubscribe from the current group")
(gnus-group-exit "gnus/exit-gnus" gnus-group-mode-map))
"List of functions for the group tool bar (retro look).
See `gmm-tool-bar-from-list' for the format of the list."
:type '(repeat gmm-tool-bar-item)
:version "22.1" ;; Gnus 5.10.9
:initialize 'custom-initialize-default
:set 'gnus-group-tool-bar-update
:group 'gnus-group)
(defcustom gnus-group-tool-bar-zap-list t
"List of icon items from the global tool bar.
These items are not displayed in the Gnus group mode tool bar.
See `gmm-tool-bar-from-list' for the format of the list."
:type 'gmm-tool-bar-zap-list
:version "22.1" ;; Gnus 5.10.9
:initialize 'custom-initialize-default
:set 'gnus-group-tool-bar-update
:group 'gnus-group)
(defvar image-load-path)
(defun gnus-group-make-tool-bar (&optional force)
"Make a group mode tool bar from `gnus-group-tool-bar'.
When FORCE, rebuild the tool bar."
(when (and (not (featurep 'xemacs))
(boundp 'tool-bar-mode)
tool-bar-mode
;; The Gnus 5.10.6 code checked (default-value 'tool-bar-mode).
;; Why? --rsteib
(or (not gnus-group-tool-bar-map) force))
(let* ((load-path
(gmm-image-load-path-for-library "gnus"
"gnus/toggle-subscription.xpm"
nil t))
(image-load-path (cons (car load-path)
(when (boundp 'image-load-path)
image-load-path)))
(map (gmm-tool-bar-from-list gnus-group-tool-bar
gnus-group-tool-bar-zap-list
'gnus-group-mode-map)))
(if map
(set (make-local-variable 'tool-bar-map) map))))
gnus-group-tool-bar-map)
(defun gnus-group-mode ()
"Major mode for reading news.
@ -1379,6 +1479,17 @@ if it is a string, only list groups matching REGEXP."
(gnus-range-difference (list active) (gnus-info-read info))
seen))))))
;; Moving through the Group buffer (in topic mode) e.g. with C-n doesn't
;; update the state (enabled/disabled) of the icon `gnus-group-describe-group'
;; automatically. After `C-l' the state is correct. See the following report
;; on emacs-devel
;; <http://thread.gmane.org/v9acdmrcse.fsf@marauder.physik.uni-ulm.de>:
;; From: Reiner Steib
;; Subject: tool bar icons not updated according to :active condition
;; Newsgroups: gmane.emacs.devel
;; Date: Mon, 23 Jan 2006 19:59:13 +0100
;; Message-ID: <v9acdmrcse.fsf@marauder.physik.uni-ulm.de>
(defcustom gnus-group-update-tool-bar
(and (not (featurep 'xemacs))
(boundp 'tool-bar-mode)

View file

@ -38,6 +38,7 @@
(require 'gnus-int)
(require 'gnus-undo)
(require 'gnus-util)
(require 'gmm-utils)
(require 'mm-decode)
(require 'nnoo)
@ -2546,47 +2547,161 @@ gnus-summary-show-article-from-menu-as-charset-%s" cs))))
(defvar gnus-summary-tool-bar-map nil)
;; Emacs 21 tool bar. Should be no-op otherwise.
(defun gnus-summary-make-tool-bar ()
(if (and (fboundp 'tool-bar-add-item-from-menu)
(default-value 'tool-bar-mode)
(not gnus-summary-tool-bar-map))
(setq gnus-summary-tool-bar-map
(let ((tool-bar-map (make-sparse-keymap))
(load-path (mm-image-load-path)))
(tool-bar-add-item-from-menu
'gnus-summary-prev-unread "prev-ur" gnus-summary-mode-map)
(tool-bar-add-item-from-menu
'gnus-summary-next-unread "next-ur" gnus-summary-mode-map)
(tool-bar-add-item-from-menu
'gnus-summary-post-news "post" gnus-summary-mode-map)
(tool-bar-add-item-from-menu
'gnus-summary-followup-with-original "fuwo" gnus-summary-mode-map)
(tool-bar-add-item-from-menu
'gnus-summary-followup "followup" gnus-summary-mode-map)
(tool-bar-add-item-from-menu
'gnus-summary-reply-with-original "reply-wo" gnus-summary-mode-map)
(tool-bar-add-item-from-menu
'gnus-summary-reply "reply" gnus-summary-mode-map)
(tool-bar-add-item-from-menu
'gnus-summary-caesar-message "rot13" gnus-summary-mode-map)
(tool-bar-add-item-from-menu
'gnus-uu-decode-uu "uu-decode" gnus-summary-mode-map)
(tool-bar-add-item-from-menu
'gnus-summary-save-article-file "save-aif" gnus-summary-mode-map)
(tool-bar-add-item-from-menu
'gnus-summary-save-article "save-art" gnus-summary-mode-map)
(tool-bar-add-item-from-menu
'gnus-uu-post-news "uu-post" gnus-summary-mode-map)
(tool-bar-add-item-from-menu
'gnus-summary-catchup "catchup" gnus-summary-mode-map)
(tool-bar-add-item-from-menu
'gnus-summary-catchup-and-exit "cu-exit" gnus-summary-mode-map)
(tool-bar-add-item-from-menu
'gnus-summary-exit "exit-summ" gnus-summary-mode-map)
tool-bar-map)))
(if gnus-summary-tool-bar-map
(set (make-local-variable 'tool-bar-map) gnus-summary-tool-bar-map)))
;; Note: The :set function in the `gnus-summary-tool-bar*' variables will only
;; affect _new_ message buffers. We might add a function that walks thru all
;; summary-mode buffers and force the update.
(defun gnus-summary-tool-bar-update (&optional symbol value)
"Update summary mode toolbar.
Setter function for custom variables."
(setq-default gnus-summary-tool-bar-map nil)
(when symbol
;; When used as ":set" function:
(set-default symbol value))
(when (gnus-buffer-live-p gnus-summary-buffer)
(with-current-buffer gnus-summary-buffer
(gnus-summary-make-tool-bar))))
(defcustom gnus-summary-tool-bar (if (eq gmm-tool-bar-style 'gnome)
'gnus-summary-tool-bar-gnome
'gnus-summary-tool-bar-retro)
"Specifies the Gnus summary tool bar.
It can be either a list or a symbol refering to a list. See
`gmm-tool-bar-from-list' for the format of the list. The
default key map is `gnus-summary-mode-map'.
Pre-defined symbols include `gnus-summary-tool-bar-gnome' and
`gnus-summary-tool-bar-retro'."
:type '(choice (const :tag "GNOME style" gnus-summary-tool-bar-gnome)
(const :tag "Retro look" gnus-summary-tool-bar-retro)
(repeat :tag "User defined list" gmm-tool-bar-item)
(symbol))
:version "22.1" ;; Gnus 5.10.9
:initialize 'custom-initialize-default
:set 'gnus-summary-tool-bar-update
:group 'gnus-summary)
(defcustom gnus-summary-tool-bar-gnome
'((gnus-summary-post-news "mail/compose" nil)
(gnus-summary-insert-new-articles "mail/inbox" nil
:visible (or (not gnus-agent)
gnus-plugged))
(gnus-summary-reply-with-original "mail/reply")
(gnus-summary-reply "mail/reply" nil :visible nil)
(gnus-summary-followup-with-original "mail/reply-all")
(gnus-summary-followup "mail/reply-all" nil :visible nil)
(gnus-summary-mail-forward "mail/forward")
(gnus-summary-save-article "mail/save")
(gnus-summary-search-article-forward "search" nil :visible nil)
(gnus-summary-print-article "print")
(gnus-summary-tick-article-forward "flag-followup" nil :visible nil)
;; Some new commands that may need more suitable icons:
(gnus-summary-save-newsrc "save" nil :visible nil)
;; (gnus-summary-show-article "stock_message-display" nil :visible nil)
(gnus-summary-prev-article "left-arrow")
(gnus-summary-next-article "right-arrow")
(gnus-summary-next-page "next-page")
;; (gnus-summary-enter-digest-group "right_arrow" nil :visible nil)
;;
;; Maybe some sort-by-... could be added:
;; (gnus-summary-sort-by-author "sort-a-z" nil :visible nil)
;; (gnus-summary-sort-by-date "sort-1-9" nil :visible nil)
(gnus-summary-mark-as-expirable
"delete" nil
:visible (gnus-check-backend-function 'request-expire-articles
gnus-newsgroup-name))
(gnus-summary-mark-as-spam
"mail/spam" t
:visible (and (fboundp 'spam-group-ham-contents-p)
(spam-group-ham-contents-p gnus-newsgroup-name))
:help "Mark as spam")
(gnus-summary-mark-as-read-forward
"mail/not-spam" nil
:visible (and (fboundp 'spam-group-spam-contents-p)
(spam-group-spam-contents-p gnus-newsgroup-name)))
;;
(gnus-summary-exit "exit")
(gmm-customize-mode "preferences" t :help "Edit mode preferences")
(gnus-info-find-node "help"))
"List of functions for the summary tool bar (GNOME style).
See `gmm-tool-bar-from-list' for the format of the list."
:type '(repeat gmm-tool-bar-item)
:version "22.1" ;; Gnus 5.10.9
:initialize 'custom-initialize-default
:set 'gnus-summary-tool-bar-update
:group 'gnus-summary)
(defcustom gnus-summary-tool-bar-retro
'((gnus-summary-prev-unread-article "gnus/prev-ur")
(gnus-summary-next-unread-article "gnus/next-ur")
(gnus-summary-post-news "gnus/post")
(gnus-summary-followup-with-original "gnus/fuwo")
(gnus-summary-followup "gnus/followup")
(gnus-summary-reply-with-original "gnus/reply-wo")
(gnus-summary-reply "gnus/reply")
(gnus-summary-caesar-message "gnus/rot13")
(gnus-uu-decode-uu "gnus/uu-decode")
(gnus-summary-save-article-file "gnus/save-aif")
(gnus-summary-save-article "gnus/save-art")
(gnus-uu-post-news "gnus/uu-post")
(gnus-summary-catchup "gnus/catchup")
(gnus-summary-catchup-and-exit "gnus/cu-exit")
(gnus-summary-exit "gnus/exit-summ")
;; Some new command that may need more suitable icons:
(gnus-summary-print-article "gnus/print" nil :visible nil)
(gnus-summary-mark-as-expirable "gnus/close" nil :visible nil)
(gnus-summary-save-newsrc "gnus/save" nil :visible nil)
;; (gnus-summary-enter-digest-group "gnus/right_arrow" nil :visible nil)
(gnus-summary-search-article-forward "gnus/search" nil :visible nil)
;; (gnus-summary-insert-new-articles "gnus/paste" nil :visible nil)
;; (gnus-summary-toggle-threads "gnus/open" nil :visible nil)
;;
(gnus-info-find-node "gnus/help" nil :visible nil))
"List of functions for the summary tool bar (retro look).
See `gmm-tool-bar-from-list' for the format of the list."
:type '(repeat gmm-tool-bar-item)
:version "22.1" ;; Gnus 5.10.9
:initialize 'custom-initialize-default
:set 'gnus-summary-tool-bar-update
:group 'gnus-summary)
(defcustom gnus-summary-tool-bar-zap-list t
"List of icon items from the global tool bar.
These items are not displayed in the Gnus summary mode tool bar.
See `gmm-tool-bar-from-list' for the format of the list."
:type 'gmm-tool-bar-zap-list
:version "22.1" ;; Gnus 5.10.9
:initialize 'custom-initialize-default
:set 'gnus-summary-tool-bar-update
:group 'gnus-summary)
(defvar image-load-path)
(defun gnus-summary-make-tool-bar (&optional force)
"Make a summary mode tool bar from `gnus-summary-tool-bar'.
When FORCE, rebuild the tool bar."
(when (and (not (featurep 'xemacs))
(boundp 'tool-bar-mode)
tool-bar-mode
(or (not gnus-summary-tool-bar-map) force))
(let* ((load-path
(gmm-image-load-path-for-library "gnus"
"mail/save.xpm"
nil t))
(image-load-path (cons (car load-path)
(when (boundp 'image-load-path)
image-load-path)))
(map (gmm-tool-bar-from-list gnus-summary-tool-bar
gnus-summary-tool-bar-zap-list
'gnus-summary-mode-map)))
(when map
;; Need to set `gnus-summary-tool-bar-map' because `gnus-article-mode'
;; uses it's value.
(setq gnus-summary-tool-bar-map map))))
(set (make-local-variable 'tool-bar-map) gnus-summary-tool-bar-map))
(defun gnus-score-set-default (var value)
"A version of set that updates the GNU Emacs menu-bar."

View file

@ -37,6 +37,7 @@
(defvar gnus-list-identifiers)) ; gnus-sum is required where necessary
(require 'canlock)
(require 'mailheader)
(require 'gmm-utils)
(require 'nnheader)
;; This is apparently necessary even though things are autoloaded.
;; Because we dynamically bind mail-abbrev-mode-regexp, we'd better
@ -2529,7 +2530,7 @@ M-RET `message-newline-and-reformat' (break the line and reformat)."
(set (make-local-variable 'font-lock-defaults)
'(message-font-lock-keywords t))
(if (boundp 'tool-bar-map)
(set (make-local-variable 'tool-bar-map) (message-tool-bar-map))))
(set (make-local-variable 'tool-bar-map) (message-make-tool-bar))))
(easy-menu-add message-mode-menu message-mode-map)
(easy-menu-add message-mode-field-menu message-mode-map)
(gnus-make-local-hook 'after-change-functions)
@ -6586,53 +6587,123 @@ which specify the range to operate on."
;; Support for toolbar
(eval-when-compile
(defvar tool-bar-map)
(defvar tool-bar-mode))
(defun message-tool-bar-local-item-from-menu (command icon in-map &optional from-map &rest props)
;; We need to make tool bar entries in local keymaps with
;; `tool-bar-local-item-from-menu' in Emacs >= 22
(if (fboundp 'tool-bar-local-item-from-menu)
(tool-bar-local-item-from-menu command icon in-map from-map props)
(tool-bar-add-item-from-menu command icon from-map props)))
;; Note: The :set function in the `message-tool-bar*' variables will only
;; affect _new_ message buffers. We might add a function that walks thru all
;; message-mode buffers and force the update.
(defun message-tool-bar-update (&optional symbol value)
"Update message mode toolbar.
Setter function for custom variables."
(setq-default message-tool-bar-map nil)
(when symbol
;; When used as ":set" function:
(set-default symbol value)))
(defun message-tool-bar-map ()
(or message-tool-bar-map
(setq message-tool-bar-map
(and
(condition-case nil (require 'tool-bar) (error nil))
(fboundp 'tool-bar-add-item-from-menu)
(defcustom message-tool-bar (if (eq gmm-tool-bar-style 'gnome)
'message-tool-bar-gnome
'message-tool-bar-retro)
"Specifies the message mode tool bar.
It can be either a list or a symbol refering to a list. See
`gmm-tool-bar-from-list' for the format of the list. The
default key map is `message-mode-map'.
Pre-defined symbols include `message-tool-bar-gnome' and
`message-tool-bar-retro'."
:type '(repeat gmm-tool-bar-list-item)
:type '(choice (const :tag "GNOME style" message-tool-bar-gnome)
(const :tag "Retro look" message-tool-bar-retro)
(repeat :tag "User defined list" gmm-tool-bar-item)
(symbol))
:version "22.1" ;; Gnus 5.10.9
:initialize 'custom-initialize-default
:set 'message-tool-bar-update
:group 'message)
(defcustom message-tool-bar-gnome
'((ispell-message "spell" nil
:visible (or (not (boundp 'flyspell-mode))
(not flyspell-mode)))
(flyspell-buffer "spell" t
:visible (and (boundp 'flyspell-mode)
flyspell-mode)
:help "Flyspell whole buffer")
(gmm-ignore "separator")
(message-send-and-exit "mail/send")
(message-dont-send "mail/save-draft")
(message-kill-buffer "close") ;; stock_cancel
(mml-attach-file "attach" mml-mode-map)
(mml-preview "mail/preview" mml-mode-map)
;; (mml-secure-message-sign-encrypt "lock" mml-mode-map :visible nil)
(message-insert-importance-high "important" nil :visible nil)
(message-insert-importance-low "unimportant" nil :visible nil)
(message-insert-disposition-notification-to "receipt" nil :visible nil)
(gmm-customize-mode "preferences" t :help "Edit mode preferences")
(message-info "help" t :help "Message manual"))
"List of items for the message tool bar (GNOME style).
See `gmm-tool-bar-from-list' for details on the format of the list."
:type '(repeat gmm-tool-bar-item)
:version "22.1" ;; Gnus 5.10.9
:initialize 'custom-initialize-default
:set 'message-tool-bar-update
:group 'message)
(defcustom message-tool-bar-retro
'(;; Old Emacs 21 icon for consistency.
(message-send-and-exit "gnus/mail_send")
(message-kill-buffer "close")
(message-dont-send "cancel")
(mml-attach-file "attach" mml-mode-map)
(ispell-message "spell")
(mml-preview "preview" mml-mode-map)
(message-insert-importance-high "gnus/important")
(message-insert-importance-low "gnus/unimportant")
(message-insert-disposition-notification-to "gnus/receipt"))
"List of items for the message tool bar (retro style).
See `gmm-tool-bar-from-list' for details on the format of the list."
:type '(repeat gmm-tool-bar-item)
:version "22.1" ;; Gnus 5.10.9
:initialize 'custom-initialize-default
:set 'message-tool-bar-update
:group 'message)
(defcustom message-tool-bar-zap-list
'(new-file open-file dired kill-buffer write-file
print-buffer customize help)
"List of icon items from the global tool bar.
These items are not displayed on the message mode tool bar.
See `gmm-tool-bar-from-list' for the format of the list."
:type 'gmm-tool-bar-zap-list
:version "22.1" ;; Gnus 5.10.9
:initialize 'custom-initialize-default
:set 'message-tool-bar-update
:group 'message)
(defvar image-load-path)
(defun message-make-tool-bar (&optional force)
"Make a message mode tool bar from `message-tool-bar-list'.
When FORCE, rebuild the tool bar."
(when (and (not (featurep 'xemacs))
(boundp 'tool-bar-mode)
tool-bar-mode
(let ((tool-bar-map (copy-keymap tool-bar-map))
(load-path (mm-image-load-path)))
;; Zap some items which aren't so relevant and take
;; up space.
(dolist (key '(print-buffer kill-buffer save-buffer
write-file dired open-file))
(define-key tool-bar-map (vector key) nil))
(message-tool-bar-local-item-from-menu
'message-send-and-exit "mail/send" tool-bar-map message-mode-map)
(message-tool-bar-local-item-from-menu
'message-kill-buffer "close" tool-bar-map message-mode-map)
(message-tool-bar-local-item-from-menu
'message-dont-send "cancel" tool-bar-map message-mode-map)
(message-tool-bar-local-item-from-menu
'mml-attach-file "attach" tool-bar-map mml-mode-map)
(message-tool-bar-local-item-from-menu
'ispell-message "spell" tool-bar-map message-mode-map)
(message-tool-bar-local-item-from-menu
'mml-preview "preview"
tool-bar-map mml-mode-map)
(message-tool-bar-local-item-from-menu
'message-insert-importance-high "important"
tool-bar-map message-mode-map)
(message-tool-bar-local-item-from-menu
'message-insert-importance-low "unimportant"
tool-bar-map message-mode-map)
(message-tool-bar-local-item-from-menu
'message-insert-disposition-notification-to "receipt"
tool-bar-map message-mode-map)
tool-bar-map)))))
(or (not message-tool-bar-map) force))
(setq message-tool-bar-map
(let* ((load-path
(gmm-image-load-path-for-library "message"
"mail/save-draft.xpm"
nil t))
(image-load-path (cons (car load-path)
(when (boundp 'image-load-path)
image-load-path))))
(gmm-tool-bar-from-list message-tool-bar
message-tool-bar-zap-list
'message-mode-map))))
message-tool-bar-map)
;;; Group name completion.

View file

@ -56,6 +56,8 @@
;; known to break servers.
;; Note: UTF-16 variants are invalid for text parts [RFC 2781],
;; so this can't happen :-/.
;; PPS: Yes, it can happen if the user specifies UTF-16 in the MML
;; markup. - jh.
(utf-16 . base64)
(utf-16be . base64)
(utf-16le . base64))
@ -251,7 +253,10 @@ decoding. If it is nil, default to `mail-parse-charset'."
(mm-decode-content-transfer-encoding encoding type))
(when (and (featurep 'mule) ;; Fixme: Wrong test for unibyte session.
(not (eq charset 'gnus-decoded)))
(let ((coding-system (mm-charset-to-coding-system charset)))
(let ((coding-system (mm-charset-to-coding-system
;; Allow overwrite using
;; `mm-charset-override-alist'.
charset nil t)))
(if (and (not coding-system)
(listp mail-parse-ignored-charsets)
(memq 'gnus-unknown mail-parse-ignored-charsets))
@ -282,7 +287,11 @@ decoding. If it is nil, default to `mail-parse-charset'."
(setq charset mail-parse-charset))
(or
(when (featurep 'mule)
(let ((coding-system (mm-charset-to-coding-system charset)))
(let ((coding-system (mm-charset-to-coding-system
charset
;; Allow overwrite using
;; `mm-charset-override-alist'.
nil t)))
(if (and (not coding-system)
(listp mail-parse-ignored-charsets)
(memq 'gnus-unknown mail-parse-ignored-charsets))

View file

@ -177,6 +177,29 @@ system object in XEmacs."
;; no-MULE XEmacs:
(car (memq cs (mm-get-coding-system-list))))))
(defun mm-codepage-setup (number &optional alias)
"Create a coding system cpNUMBER.
The coding system is created using `codepage-setup'. If ALIAS is
non-nil, an alias is created and added to
`mm-charset-synonym-alist'. If ALIAS is a string, it's used as
the alias. Else windows-NUMBER is used."
(interactive
(let ((completion-ignore-case t)
(candidates (cp-supported-codepages)))
(list (completing-read "Setup DOS Codepage: (default 437) " candidates
nil t nil nil "437"))))
(when alias
(setq alias (if (stringp alias)
(intern alias)
(intern (format "windows-%s" number)))))
(let* ((cp (intern (format "cp%s" number))))
(unless (mm-coding-system-p cp)
(codepage-setup number))
(when (and alias
;; Don't add alias if setup of cp failed.
(mm-coding-system-p cp))
(add-to-list 'mm-charset-synonym-alist (cons alias cp)))))
(defvar mm-charset-synonym-alist
`(
;; Not in XEmacs, but it's not a proper MIME charset anyhow.
@ -200,8 +223,61 @@ system object in XEmacs."
,@(if (and (not (mm-coding-system-p 'windows-1250))
(mm-coding-system-p 'cp1250))
'((windows-1250 . cp1250)))
;; A Microsoft misunderstanding.
,@(if (and (not (mm-coding-system-p 'unicode))
(mm-coding-system-p 'utf-16-le))
'((unicode . utf-16-le)))
;; A Microsoft misunderstanding.
,@(unless (mm-coding-system-p 'ks_c_5601-1987)
(if (mm-coding-system-p 'cp949)
'((ks_c_5601-1987 . cp949))
'((ks_c_5601-1987 . euc-kr))))
)
"A mapping from invalid charset names to the real charset names.")
"A mapping from unknown or invalid charset names to the real charset names.")
(defcustom mm-charset-override-alist
`((iso-8859-1 . windows-1252))
"A mapping from undesired charset names to their replacement.
You may add pairs like (iso-8859-1 . windows-1252) here,
i.e. treat iso-8859-1 as windows-1252. windows-1252 is a
superset of iso-8859-1."
:type '(list (set :inline t
(const (iso-8859-1 . windows-1252))
(const (undecided . windows-1252)))
(repeat :inline t
:tag "Other options"
(cons (symbol :tag "From charset")
(symbol :tag "To charset"))))
:version "23.0" ;; No Gnus
:group 'mime)
(defcustom mm-charset-eval-alist
(if (featurep 'xemacs)
nil ;; I don't know what would be useful for XEmacs.
'(;; Emacs 21 offers 1250 1251 1253 1257. Emacs 22 provides autoloads for
;; 1250-1258 (i.e. `mm-codepage-setup' does nothing).
(windows-1250 . (mm-codepage-setup 1250 t))
(windows-1251 . (mm-codepage-setup 1251 t))
(windows-1253 . (mm-codepage-setup 1253 t))
(windows-1257 . (mm-codepage-setup 1257 t))))
"An alist of (CHARSET . FORM) pairs.
If an article is encoded in an unknown CHARSET, FORM is
evaluated. This allows to load additional libraries providing
charsets on demand. If supported by your Emacs version, you
could use `autoload-coding-system' here."
:version "23.0" ;; No Gnus
:type '(list (set :inline t
(const (windows-1250 . (mm-codepage-setup 1250 t)))
(const (windows-1251 . (mm-codepage-setup 1251 t)))
(const (windows-1253 . (mm-codepage-setup 1253 t)))
(const (windows-1257 . (mm-codepage-setup 1257 t)))
(const (cp850 . (mm-codepage-setup 850 nil))))
(repeat :inline t
:tag "Other options"
(cons (symbol :tag "charset")
(symbol :tag "form"))))
:group 'mime)
(defvar mm-binary-coding-system
(cond
@ -426,11 +502,17 @@ mail with multiple parts is preferred to sending a Unicode one.")
(pop alist))
out)))
(defun mm-charset-to-coding-system (charset &optional lbt)
(defun mm-charset-to-coding-system (charset &optional lbt
allow-override)
"Return coding-system corresponding to CHARSET.
CHARSET is a symbol naming a MIME charset.
If optional argument LBT (`unix', `dos' or `mac') is specified, it is
used as the line break code type of the coding system."
used as the line break code type of the coding system.
If ALLOW-OVERRIDE is given, use `mm-charset-override-alist' to
map undesired charset names to their replacement. This should
only be used for decoding, not for encoding."
;; OVERRIDE is used (only) in `mm-decode-body' and `mm-decode-string'.
(when (stringp charset)
(setq charset (intern (downcase charset))))
(when lbt
@ -442,6 +524,11 @@ used as the line break code type of the coding system."
((or (null (mm-get-coding-system-list))
(not (fboundp 'coding-system-get)))
charset)
;; Check override list quite early. Should only used for decoding, not for
;; encoding!
((and allow-override
(let ((cs (cdr (assq charset mm-charset-override-alist))))
(and cs (mm-coding-system-p cs) cs))))
;; ascii
((eq charset 'us-ascii)
'ascii)
@ -454,9 +541,27 @@ used as the line break code type of the coding system."
;;; (eq charset (coding-system-get charset 'mime-charset))
)
charset)
;; Eval expressions from `mm-charset-eval-alist'
((let* ((el (assq charset mm-charset-eval-alist))
(cs (car el))
(form (cdr el)))
(and cs
form
(prog2
;; Avoid errors...
(condition-case nil (eval form) (error nil))
;; (message "Failed to eval `%s'" form))
(mm-coding-system-p cs)
(message "Added charset `%s' via `mm-charset-eval-alist'" cs))
cs)))
;; Translate invalid charsets.
((let ((cs (cdr (assq charset mm-charset-synonym-alist))))
(and cs (mm-coding-system-p cs) cs)))
(and cs
(mm-coding-system-p cs)
;; (message
;; "Using synonym `%s' from `mm-charset-synonym-alist' for `%s'"
;; cs charset)
cs)))
;; Last resort: search the coding system list for entries which
;; have the right mime-charset in case the canonical name isn't
;; defined (though it should be).
@ -468,6 +573,11 @@ used as the line break code type of the coding system."
(eq charset (or (coding-system-get c :mime-charset)
(coding-system-get c 'mime-charset))))
(setq cs c)))
(unless cs
;; Warn the user about unknown charset:
(if (fboundp 'gnus-message)
(gnus-message 7 "Unknown charset: %s" charset)
(message "Unknown charset: %s" charset)))
cs))))
(defsubst mm-replace-chars-in-string (string from to)
@ -1070,7 +1180,8 @@ If SUFFIX is non-nil, add that at the end of the file name."
(defun mm-detect-mime-charset-region (start end)
"Detect MIME charset of the text in the region between START and END."
(let ((cs (mm-detect-coding-region start end)))
(coding-system-get cs 'mime-charset)))
(or (coding-system-get cs :mime-charset)
(coding-system-get cs 'mime-charset))))
(defun mm-detect-mime-charset-region (start end)
"Detect MIME charset of the text in the region between START and END."
(let ((cs (mm-detect-coding-region start end)))

View file

@ -197,6 +197,7 @@ Commands:
(view-mode)
(make-local-variable 'view-no-disable-on-exit)
(setq view-no-disable-on-exit t)
(setq view-exit-action (lambda (buffer) (delete-window)))
(run-mode-hooks 'help-mode-hook))
;;;###autoload

View file

@ -139,7 +139,11 @@ and showing the image as an image."
;; was inserted
(let* ((image
(if (and (buffer-file-name)
(not (buffer-modified-p)))
(not (buffer-modified-p))
(not (and (boundp 'archive-superior-buffer)
archive-superior-buffer))
(not (and (boundp 'tar-superior-buffer)
tar-superior-buffer)))
(progn (clear-image-cache)
(create-image (buffer-file-name)))
(create-image

View file

@ -208,18 +208,13 @@ during matching.")
;;;###autoload
(defvar imenu-create-index-function 'imenu-default-create-index-function
"The function to use for creating a buffer index.
"The function to use for creating an index alist of the current buffer.
It should be a function that takes no arguments and returns an index
of the current buffer as an alist.
It should be a function that takes no arguments and returns
an index alist of the current buffer. The function is
called within a `save-excursion'.
Simple elements in the alist look like (INDEX-NAME . INDEX-POSITION).
Special elements look like (INDEX-NAME INDEX-POSITION FUNCTION ARGUMENTS...).
A nested sub-alist element looks like (INDEX-NAME SUB-ALIST).
The function `imenu--subalist-p' tests an element and returns t
if it is a sub-alist.
This function is called within a `save-excursion'.")
See `imenu--index-alist' for the format of the buffer index alist.")
;;;###autoload
(make-variable-buffer-local 'imenu-create-index-function)
@ -431,15 +426,27 @@ Don't move point."
;; The latest buffer index.
;; Buffer local.
(defvar imenu--index-alist nil
"The buffer index computed for this buffer in Imenu.
Simple elements in the alist look like (INDEX-NAME . INDEX-POSITION).
Special elements look like (INDEX-NAME INDEX-POSITION FUNCTION ARGUMENTS...).
A nested sub-alist element looks like (INDEX-NAME SUB-ALIST).")
"The buffer index alist computed for this buffer in Imenu.
Simple elements in the alist look like (INDEX-NAME . POSITION).
POSITION is the buffer position of the item; to go to the item
is simply to move point to that position.
Special elements look like (INDEX-NAME POSITION FUNCTION ARGUMENTS...).
To \"go to\" a special element means applying FUNCTION
to INDEX-NAME, POSITION, and the ARGUMENTS.
A nested sub-alist element looks like (INDEX-NAME SUB-ALIST).
The function `imenu--subalist-p' tests an element and returns t
if it is a sub-alist.
There is one simple element with negative POSITION; selecting that
element recalculates the buffer's index alist.")
(make-variable-buffer-local 'imenu--index-alist)
(defvar imenu--last-menubar-index-alist nil
"The latest buffer index used to update the menu bar menu.")
"The latest buffer index alist used to update the menu bar menu.")
(make-variable-buffer-local 'imenu--last-menubar-index-alist)
@ -547,19 +554,12 @@ A nested sub-alist element looks like (INDEX-NAME SUB-ALIST).")
(defun imenu--make-index-alist (&optional noerror)
"Create an index-alist for the definitions in the current buffer.
"Create an index alist for the definitions in the current buffer.
This works by using the hook function `imenu-create-index-function'.
Report an error if the list is empty unless NOERROR is supplied and
non-nil.
Simple elements in the alist look like (INDEX-NAME . INDEX-POSITION).
Special elements look like (INDEX-NAME FUNCTION ARGUMENTS...).
A nested sub-alist element looks like (INDEX-NAME SUB-ALIST).
The function `imenu--subalist-p' tests an element and returns t
if it is a sub-alist.
There is one simple element with negative POSITION; that's intended
as a way for the user to ask to recalculate the buffer's index alist."
See `imenu--index-alist' for the format of the index alist."
(or (and imenu--index-alist
(or (not imenu-auto-rescan)
(and imenu-auto-rescan
@ -657,11 +657,15 @@ and speed-up matching.")
(make-variable-buffer-local 'imenu-syntax-alist)
(defun imenu-default-create-index-function ()
"*Wrapper for index searching functions.
"*Default function to create an index alist of the current buffer.
Moves point to end of buffer and then repeatedly calls
The most general method is to move point to end of buffer, then repeatedly call
`imenu-prev-index-position-function' and `imenu-extract-index-name-function'.
Their results are gathered into an index alist."
All the results returned by the latter are gathered into an index alist.
This method is used if those two variables are non-nil.
The alternate method, which is the one most often used, is to call
`imenu--generic-function' with `imenu-generic-expression' as argument."
;; These should really be done by setting imenu-create-index-function
;; in these major modes. But save that change for later.
(cond ((and imenu-prev-index-position-function
@ -687,27 +691,6 @@ Their results are gathered into an index alist."
(t
(error "This buffer cannot use `imenu-default-create-index-function'"))))
;; Not used and would require cl at run time
;; (defun imenu--flatten-index-alist (index-alist &optional concat-names prefix)
;; ;; Takes a nested INDEX-ALIST and returns a flat index alist.
;; ;; If optional CONCAT-NAMES is non-nil, then a nested index has its
;; ;; name and a space concatenated to the names of the children.
;; ;; Third argument PREFIX is for internal use only.
;; (mapcan
;; (lambda (item)
;; (let* ((name (car item))
;; (pos (cdr item))
;; (new-prefix (and concat-names
;; (if prefix
;; (concat prefix imenu-level-separator name)
;; name))))
;; (cond
;; ((or (markerp pos) (numberp pos))
;; (list (cons new-prefix pos)))
;; (t
;; (imenu--flatten-index-alist pos new-prefix)))))
;; index-alist))
;;;
;;; Generic index gathering function.
;;;
@ -724,7 +707,7 @@ for modes which use `imenu--generic-function'. If it is not set, but
;; This function can be called with quitting disabled,
;; so it needs to be careful never to loop!
(defun imenu--generic-function (patterns)
"Return an index of the current buffer as an alist.
"Return an index alist of the current buffer based on PATTERNS.
PATTERNS is an alist with elements that look like this:
(MENU-TITLE REGEXP INDEX)
@ -732,9 +715,8 @@ or like this:
(MENU-TITLE REGEXP INDEX FUNCTION ARGUMENTS...)
with zero or more ARGUMENTS. The former format creates a simple
element in the index alist when it matches; the latter creates a
special element of the form (NAME POSITION-MARKER FUNCTION
ARGUMENTS...) with FUNCTION and ARGUMENTS copied from
`imenu-generic-expression'.
special element of the form (INDEX-NAME POSITION-MARKER FUNCTION
ARGUMENTS...) with FUNCTION and ARGUMENTS copied from PATTERNS.
MENU-TITLE is a string used as the title for the submenu or nil
if the entries are not nested.

View file

@ -1,3 +1,172 @@
2006-04-18 Bill Wohler <wohler@newt.com>
* mh-e.el (defcustom-mh, defface-mh, defgroup-mh, mh-face-data)
(mh-strip-package-version, mh-face-data, mh-inherit-face-flag)
(mh-min-colors-defined-flag): Do not unbind these macros and
variables. Nice idea, but too many nasty side-effects. These
macros are needed by [Cc]ustom-make-dependencies when creating the
MH-E customization groups in mh-cus-load.el. These disappeared
when the macros above were introduced. Besides, if a developer
were to try to show the help for a macro or variable they were
looking at and got [No match] when they did so, that would be bad.
2006-04-17 Bill Wohler <wohler@newt.com>
* mh-comp.el (mh-insert-x-mailer): Strip build number from
version in X-Mailer field (closes SF #1466481).
* mh-acros.el (mh-defun-compat): Rename to defun-mh in order that
variables and functions with the same name are found correctly by
find-func (invoked by clicking on the filename link in the *Help*
buffer).
(mh-defmacro-compat): Rename to defmacro-mh. Ditto.
* mh-e.el: (mh-defgroup): Rename to defgroup-mh. Ditto.
(mh-defcustom): Rename to defcustom-mh. Ditto.
(mh-defface): Rename to defface-mh. Ditto.
(mh-font-lock-add-keywords): Make changes according to these
renamings.
* mh-e.el, mh-compat.el, mh-gnus.el: Use the new names (closes SF
#1472029).
* mh-utils.el (mh-sub-folders-actual): Mention that folder must
have been processed by mh-normalize-folder-name.
(mh-folder-completion-function): Handle completion of folders with
absolute names. Also, when flag is t, display complete folder name
to provide proper highlighting in Emacs 22 now that
minibuffer-completing-file-name is nil (closes SF #1470518).
(mh-folder-completing-read): No longer set
minibuffer-completing-file-name to t. This was causing "Can't set
current directory errors" when browsing absolute file names.
Another benefit of this change is that SPC can be used for
completion again (closes SF #1470518).
2006-04-15 Bill Wohler <wohler@newt.com>
* mh-compat.el (mh-font-lock-add-keywords): Fix typo in docstring.
2006-04-14 Bill Wohler <wohler@newt.com>
* mh-funcs.el (view-exit-action): No need to wrap defvar with
eval-when-compile when shushing compiler.
* mh-mime.el (mh-identity-pgg-default-user-id): Ditto.
* mh-seq.el (view-exit-action): Ditto.
* mh-show.el (font-lock-auto-fontify): Ditto.
* mh-utils.el (mh-speed-flists-cache): Ditto
* mh-acros.el (struct, x, y): No need to wrap defvar with
eval-when-compile when shushing compiler, even when
mh-do-in-xemacs or another construct is used.
* mh-comp.el (sendmail-coding-system): Ditto.
* mh-e.el (mark-active): Ditto.
* mh-folder.el (desktop-save-buffer, font-lock-auto-fontify)
(image-load-path, font-lock-defaults): Ditto.
* mh-letter.el (image-load-path, font-lock-defaults): Ditto.
* mh-mime.el (dots, type, ov)
(mm-verify-function-alist, mm-decrypt-function-alist)
(pressed-details): Ditto.
* mh-search.el (pick-folder, mh-do-in-xemacs)
(mh-mairix-folder, mh-flists-search-folders)
(which-func-mode, mh-speed-flists-inhibit-flag): Ditto.
* mh-seq.el (tool-bar-mode): Ditto.
* mh-utils.el (completion-root-regexp)
(minibuffer-completing-file-name): Ditto.
* mh-xface.el (default-enable-multibyte-characters): Ditto.
* mh-compat.el (mh-font-lock-add-keywords): New alias for
font-lock-add-keywords. Returns nil on XEmacs.
* mh-e.el: Add MH-E function and variable keywords such as
mh-defun-compat and mh-defcustom to font-lock-keywords.
2006-04-13 Bill Wohler <wohler@newt.com>
* mh-e.el (customize-package-emacs-version-alist)
(mh-e, mh-alias, mh-folder, mh-folder-selection)
(mh-identity, mh-inc, mh-junk, mh-letter, mh-ranges)
(mh-scan-line-formats, mh-search, mh-sending-mail, )
(mh-sequences, mh-show, mh-speedbar, mh-thread, mh-tool-bar)
(mh-hooks, mh-faces, mh-alias-completion-ignore-case-flag)
(mh-alias-expand-aliases-flag, mh-alias-flash-on-comma)
(mh-alias-insert-file, mh-alias-insertion-location)
(mh-alias-local-users, mh-alias-local-users-prefix)
(mh-alias-passwd-gecos-comma-separator-flag)
(mh-new-messages-folders, mh-ticked-messages-folders)
(mh-large-folder, mh-recenter-summary-flag)
(mh-recursive-folders-flag, mh-sortm-args)
(mh-default-folder-for-message-function, )
(mh-default-folder-list, mh-default-folder-must-exist-flag)
(mh-default-folder-prefix, mh-identity-list)
(mh-auto-fields-list, mh-auto-fields-prompt-flag)
(mh-identity-default, mh-identity-handlers, mh-inc-prog)
(mh-inc-spool-list, mh-junk-background, mh-junk-disposition)
(mh-junk-program, mh-compose-insertion)
(mh-compose-skipped-header-fields)
(mh-compose-space-does-completion-flag)
(mh-delete-yanked-msg-window-flag)
(mh-extract-from-attribution-verb, mh-ins-buf-prefix)
(mh-letter-complete-function, mh-letter-fill-column)
(mh-mml-method-default, mh-signature-file-name)
(mh-signature-separator-flag, mh-x-face-file, )
(mh-yank-behavior, mh-interpret-number-as-range-flag)
(mh-adaptive-cmd-note-flag, mh-scan-format-file, mh-scan-prog)
(mh-search-program, mh-compose-forward-as-mime-flag)
(mh-compose-letter-function, mh-compose-prompt-flag)
(mh-forward-subject-format, mh-insert-x-mailer-flag)
(mh-redist-full-contents-flag, mh-reply-default-reply-to)
(mh-reply-show-message-flag, )
(mh-refile-preserves-sequences-flag, mh-tick-seq)
(mh-update-sequences-after-mh-show-flag)
(mh-bury-show-buffer-flag, mh-clean-message-header-flag)
(mh-decode-mime-flag, )
(mh-display-buttons-for-alternatives-flag)
(mh-display-buttons-for-inline-parts-flag)
(mh-do-not-confirm-flag, mh-fetch-x-image-url)
(mh-graphical-smileys-flag, mh-graphical-emphasis-flag)
(mh-highlight-citation-style, mh-invisible-header-fields)
(mh-invisible-header-fields-default, mh-lpr-command-format)
(mh-max-inline-image-height, mh-max-inline-image-width)
(mh-mhl-format-file, mh-mime-save-parts-default-directory)
(mh-print-background-flag, mh-show-maximum-size)
(mh-show-use-xface-flag, mh-store-default-directory)
(mh-summary-height, mh-speed-update-interval)
(mh-show-threads-flag, mh-tool-bar-search-function)
(mh-defcustom, mh-after-commands-processed-hook)
(mh-alias-reloaded-hook, mh-before-commands-processed-hook)
(mh-before-quit-hook, mh-before-send-letter-hook)
(mh-delete-msg-hook, mh-find-path-hook, mh-folder-mode-hook)
(mh-forward-hook, mh-inc-folder-hook, )
(mh-insert-signature-hook, )
(mh-kill-folder-suppress-prompt-hooks, mh-letter-mode-hook)
(mh-mh-to-mime-hook, mh-search-mode-hook, mh-quit-hook)
(mh-refile-msg-hook, mh-show-hook, mh-show-mode-hook)
(mh-unseen-updated-hook, mh-folder-address, mh-folder-body)
(mh-folder-cur-msg-number, mh-folder-date, mh-folder-deleted)
(mh-folder-followup, mh-folder-msg-number, mh-folder-refiled)
(mh-folder-sent-to-me-hint, mh-folder-sent-to-me-sender)
(mh-folder-subject, mh-folder-tick, mh-folder-to)
(mh-letter-header-field, mh-search-folder, mh-show-cc)
(mh-show-date, mh-show-from, mh-show-header, mh-show-pgg-bad)
(mh-show-pgg-good, mh-show-pgg-unknown, mh-show-signature)
(mh-show-subject, mh-show-to, mh-show-xface, )
(mh-speedbar-folder, mh-speedbar-folder-with-unseen-messages)
(mh-speedbar-selected-folder)
(mh-speedbar-selected-folder-with-unseen-messages): Use dotted
notation in :package-version keyword.
2006-04-07 Bill Wohler <wohler@newt.com>
* mh-e.el (mh-path, mh-variant): Define with mh-defcustom and add
@ -21,7 +190,7 @@
(mh-scan-line-formats, mh-search, mh-sending-mail)
(mh-sequences, mh-show, mh-speedbar, mh-thread, mh-tool-bar)
(mh-hooks, mh-faces): Add :package-version keyword to these
groups.
groups (closes SF #1452724).
(mh-alias-completion-ignore-case-flag)
(mh-alias-expand-aliases-flag, mh-alias-flash-on-comma)
(mh-alias-insert-file, mh-alias-insertion-location)
@ -67,7 +236,7 @@
(mh-show-use-xface-flag, mh-store-default-directory)
(mh-summary-height, mh-speed-update-interval)
(mh-show-threads-flag, mh-tool-bar-search-function): Add
:package-version keyword to these options.
:package-version keyword to these options (closes SF #1452724).
(mh-after-commands-processed-hook)
(mh-alias-reloaded-hook, mh-before-commands-processed-hook)
(mh-before-quit-hook, mh-before-send-letter-hook)
@ -78,7 +247,7 @@
(mh-mh-to-mime-hook, mh-search-mode-hook, mh-quit-hook)
(mh-refile-msg-hook, mh-show-hook, mh-show-mode-hook)
(mh-unseen-updated-hook): Add :package-version keyword to these
hooks.
hooks (closes SF #1452724).
(mh-min-colors-defined-flag)
(mh-folder-address, mh-folder-body, mh-folder-cur-msg-number)
(mh-folder-date, mh-folder-deleted, mh-folder-followup)
@ -92,10 +261,10 @@
(mh-speedbar-folder, mh-speedbar-folder-with-unseen-messages)
(mh-speedbar-selected-folder)
(mh-speedbar-selected-folder-with-unseen-messages): : Add
:package-version keyword to these faces.
:package-version keyword to these faces (closes SF #1452724).
* mh-tool-bar.el (mh-tool-bar-define): Added commented-out
:package-version keywords.
:package-version keywords (closes SF #1452724).
2006-03-28 Bill Wohler <wohler@newt.com>

View file

@ -82,7 +82,7 @@ loads \"cl\" appropriately."
(funcall ',function ,@args))))
;;;###mh-autoload
(defmacro mh-defun-compat (name function arg-list &rest body)
(defmacro defun-mh (name function arg-list &rest body)
"Create function NAME.
If FUNCTION exists, then NAME becomes an alias for FUNCTION.
Otherwise, create function NAME with ARG-LIST and BODY."
@ -90,10 +90,10 @@ Otherwise, create function NAME with ARG-LIST and BODY."
(if defined-p
`(defalias ',name ',function)
`(defun ,name ,arg-list ,@body))))
(put 'mh-defun-compat 'lisp-indent-function 'defun)
(put 'defun-mh 'lisp-indent-function 'defun)
;;;###mh-autoload
(defmacro mh-defmacro-compat (name macro arg-list &rest body)
(defmacro defmacro-mh (name macro arg-list &rest body)
"Create macro NAME.
If MACRO exists, then NAME becomes an alias for MACRO.
Otherwise, create macro NAME with ARG-LIST and BODY."
@ -101,7 +101,7 @@ Otherwise, create macro NAME with ARG-LIST and BODY."
(if defined-p
`(defalias ',name ',macro)
`(defmacro ,name ,arg-list ,@body))))
(put 'mh-defmacro-compat 'lisp-indent-function 'defun)
(put 'defmacro-mh 'lisp-indent-function 'defun)
@ -130,7 +130,9 @@ check if variable `transient-mark-mode' is active."
(boundp 'mark-active) mark-active))))
;; Shush compiler.
(eval-when-compile (mh-do-in-xemacs (defvar struct) (defvar x) (defvar y)))
(defvar struct) ; XEmacs
(defvar x) ; XEmacs
(defvar y) ; XEmacs
;;;###mh-autoload
(defmacro mh-defstruct (name-spec &rest fields)

View file

@ -215,7 +215,7 @@ ignored."
(setq other-headers (cdr other-headers)))))
;; Shush compiler.
(eval-when-compile (mh-do-in-xemacs (defvar sendmail-coding-system)))
(defvar sendmail-coding-system) ; XEmacs
;;;###autoload
(defun mh-send-letter (&optional arg)
@ -912,7 +912,10 @@ The versions of MH-E, Emacs, and MH are shown."
(format "MH-E %s; %s; %sEmacs %s"
mh-version mh-variant-in-use
(if mh-xemacs-flag "X" "GNU ")
(cond ((not mh-xemacs-flag) emacs-version)
(cond ((not mh-xemacs-flag)
(string-match "[0-9]+\\.[0-9]+\\(\\.[0-9]+\\)?"
emacs-version)
(match-string 0 emacs-version))
((string-match "[0-9.]*\\( +\([ a-z]+[0-9]+\)\\)?"
emacs-version)
(match-string 0 emacs-version))

View file

@ -40,7 +40,7 @@
;; versions of Gnus.
;; Items are listed alphabetically (except for mh-require which is
;; needed by a lesser character).
;; needed sooner it would normally appear).
(require 'mh-acros)
@ -62,7 +62,7 @@ Simulate NOERROR argument in XEmacs which lacks it."
(load filename noerror t)
(load (format "%s" feature) noerror t)))))
(mh-defun-compat mh-assoc-string assoc-string (key list case-fold)
(defun-mh mh-assoc-string assoc-string (key list case-fold)
"Like `assoc' but specifically for strings.
Case is ignored if CASE-FOLD is non-nil.
This function is used by Emacs versions that lack `assoc-string',
@ -77,7 +77,7 @@ introduced in Emacs 22."
'cancel-timer
'delete-itimer))
(mh-defun-compat mh-display-color-cells display-color-cells (&optional display)
(defun-mh mh-display-color-cells display-color-cells (&optional display)
"Return the number of color cells supported by DISPLAY.
This function is used by XEmacs to return 2 when
`device-color-cells' returns nil. This happens when compiling or
@ -115,7 +115,12 @@ introduced in Emacs 22."
`(face-background ,face ,frame)
`(face-background ,face ,frame ,inherit)))
(mh-defun-compat mh-image-load-path-for-library
(defun-mh mh-font-lock-add-keywords font-lock-add-keywords
(mode keywords &optional how)
"XEmacs does not have `font-lock-add-keywords'.
This function returns nil on that system.")
(defun-mh mh-image-load-path-for-library
image-load-path-for-library (library image &optional path no-error)
"Return a suitable search path for images used by LIBRARY.
@ -210,7 +215,7 @@ compatibility with versions of Emacs that lack the variable
(nconc (list image-directory)
(delete image-directory (copy-sequence (or path load-path))))))
(mh-defun-compat mh-image-search-load-path
(defun-mh mh-image-search-load-path
image-search-load-path (file &optional path)
"Emacs 21 and XEmacs don't have `image-search-load-path'.
This function returns nil on those systems."
@ -229,13 +234,13 @@ This function returns nil on those systems."
'point-at-eol))
(mh-require 'mailabbrev nil t)
(mh-defun-compat mh-mail-abbrev-make-syntax-table
(defun-mh mh-mail-abbrev-make-syntax-table
mail-abbrev-make-syntax-table ()
"Emacs 21 and XEmacs don't have `mail-abbrev-make-syntax-table'.
This function returns nil on those systems."
nil)
(mh-defun-compat mh-match-string-no-properties
(defun-mh mh-match-string-no-properties
match-string-no-properties (num &optional string)
"Return string of text matched by last search, without text properties.
This function is used by XEmacs that lacks `match-string-no-properties'.
@ -244,7 +249,7 @@ The argument STRING is ignored."
(buffer-substring-no-properties
(match-beginning num) (match-end num)))
(mh-defun-compat mh-replace-regexp-in-string replace-regexp-in-string
(defun-mh mh-replace-regexp-in-string replace-regexp-in-string
(regexp rep string &optional fixedcase literal subexp start)
"Replace REGEXP with REP everywhere in STRING and return result.
This function is used by XEmacs that lacks `replace-regexp-in-string'.
@ -264,7 +269,7 @@ The arguments FIXEDCASE, SUBEXP, and START, used by
"A list of characters that are _NOT_ reserved in the URL spec.
This is taken from RFC 2396."))
(mh-defun-compat mh-url-hexify-string url-hexify-string (str)
(defun-mh mh-url-hexify-string url-hexify-string (str)
"Escape characters in a string.
This is a copy of `url-hexify-string' from url-util.el in Emacs
22; needed by Emacs 21."
@ -278,7 +283,7 @@ This is a copy of `url-hexify-string' from url-util.el in Emacs
(char-to-string char)))
str ""))
(mh-defun-compat mh-view-mode-enter
(defun-mh mh-view-mode-enter
view-mode-enter (&optional return-to exit-action)
"Enter View mode.
This function is used by XEmacs that lacks `view-mode-enter'.

File diff suppressed because it is too large Load diff

View file

@ -522,11 +522,10 @@ font-lock is done highlighting.")
(add-to-list 'which-func-modes 'mh-folder-mode))
;; Shush compiler.
(eval-when-compile
(defvar desktop-save-buffer)
(defvar font-lock-auto-fontify)
(defvar image-load-path)
(mh-do-in-xemacs (defvar font-lock-defaults)))
(defvar desktop-save-buffer)
(defvar font-lock-auto-fontify)
(defvar image-load-path)
(defvar font-lock-defaults) ; XEmacs
(defvar mh-folder-buttons-init-flag nil)

View file

@ -138,7 +138,7 @@ Display the results only if something went wrong."
(display-buffer mh-temp-buffer)))
;; Shush compiler.
(eval-when-compile (defvar view-exit-action))
(defvar view-exit-action)
;;;###mh-autoload
(defun mh-list-folders ()

View file

@ -39,19 +39,19 @@
(mh-require 'mml nil t)
;; Copy of function from gnus-util.el.
(mh-defun-compat mh-gnus-local-map-property gnus-local-map-property (map)
(defun-mh mh-gnus-local-map-property gnus-local-map-property (map)
"Return a list suitable for a text property list specifying keymap MAP."
(cond (mh-xemacs-flag (list 'keymap map))
((>= emacs-major-version 21) (list 'keymap map))
(t (list 'local-map map))))
;; Copy of function from mm-decode.el.
(mh-defun-compat mh-mm-merge-handles mm-merge-handles (handles1 handles2)
(defun-mh mh-mm-merge-handles mm-merge-handles (handles1 handles2)
(append (if (listp (car handles1)) handles1 (list handles1))
(if (listp (car handles2)) handles2 (list handles2))))
;; Copy of function from mm-decode.el.
(mh-defun-compat mh-mm-set-handle-multipart-parameter
(defun-mh mh-mm-set-handle-multipart-parameter
mm-set-handle-multipart-parameter (handle parameter value)
;; HANDLE could be a CTL.
(if handle
@ -59,7 +59,7 @@
(car handle))))
;; Copy of function from mm-view.el.
(mh-defun-compat mh-mm-inline-text-vcard mm-inline-text-vcard (handle)
(defun-mh mh-mm-inline-text-vcard mm-inline-text-vcard (handle)
(let (buffer-read-only)
(mm-insert-inline
handle
@ -73,17 +73,17 @@
;; Function from mm-decode.el used in PGP messages. Just define it with older
;; Gnus to avoid compiler warning.
(mh-defun-compat mh-mm-possibly-verify-or-decrypt
(defun-mh mh-mm-possibly-verify-or-decrypt
mm-possibly-verify-or-decrypt (parts ctl)
nil)
;; Copy of macro in mm-decode.el.
(mh-defmacro-compat mh-mm-handle-multipart-ctl-parameter
(defmacro-mh mh-mm-handle-multipart-ctl-parameter
mm-handle-multipart-ctl-parameter (handle parameter)
`(get-text-property 0 ,parameter (car ,handle)))
;; Copy of function in mm-decode.el.
(mh-defun-compat mh-mm-readable-p mm-readable-p (handle)
(defun-mh mh-mm-readable-p mm-readable-p (handle)
"Say whether the content of HANDLE is readable."
(and (< (with-current-buffer (mm-handle-buffer handle)
(buffer-size)) 10000)
@ -93,7 +93,7 @@
(not (mh-mm-long-lines-p 76))))))
;; Copy of function in mm-bodies.el.
(mh-defun-compat mh-mm-long-lines-p mm-long-lines-p (length)
(defun-mh mh-mm-long-lines-p mm-long-lines-p (length)
"Say whether any of the lines in the buffer is longer than LENGTH."
(save-excursion
(goto-char (point-min))
@ -105,21 +105,21 @@
(and (> (current-column) length)
(current-column))))
(mh-defun-compat mh-mm-keep-viewer-alive-p mm-keep-viewer-alive-p (handle)
(defun-mh mh-mm-keep-viewer-alive-p mm-keep-viewer-alive-p (handle)
;; Released Gnus doesn't keep handles associated with externally displayed
;; MIME parts. So this will always return nil.
nil)
(mh-defun-compat mh-mm-destroy-parts mm-destroy-parts (list)
(defun-mh mh-mm-destroy-parts mm-destroy-parts (list)
"Older versions of Emacs don't have this function."
nil)
(mh-defun-compat mh-mm-uu-dissect-text-parts mm-uu-dissect-text-parts (handles)
(defun-mh mh-mm-uu-dissect-text-parts mm-uu-dissect-text-parts (handles)
"Emacs 21 and XEmacs don't have this function."
nil)
;; Copy of function in mml.el.
(mh-defun-compat mh-mml-minibuffer-read-disposition
(defun-mh mh-mml-minibuffer-read-disposition
mml-minibuffer-read-disposition (type &optional default)
(unless default (setq default
(if (and (string-match "\\`text/" type)

View file

@ -278,9 +278,8 @@ searching for `mh-mail-header-separator' in the buffer."
(defvar mh-letter-buttons-init-flag nil)
;; Shush compiler.
(eval-when-compile
(defvar image-load-path)
(mh-do-in-xemacs (defvar font-lock-defaults)))
(defvar image-load-path)
(defvar font-lock-defaults) ; XEmacs
;; Ensure new buffers won't get this mode if default-major-mode is nil.
(put 'mh-letter-mode 'mode-class 'special)

View file

@ -825,7 +825,9 @@ being used to highlight the signature in a MIME part."
;;; Button Display
;; Shush compiler.
(eval-when-compile (mh-do-in-xemacs (defvar dots) (defvar type) (defvar ov)))
(defvar dots) ; XEmacs
(defvar type) ; XEmacs
(defvar ov) ; XEmacs
(defun mh-insert-mime-button (handle index displayed)
"Insert MIME button for HANDLE.
@ -870,12 +872,9 @@ by commands like \"K v\" which operate on individual MIME parts."
(mh-funcall-if-exists overlay-put ov 'evaporate t))))
;; Shush compiler.
(eval-when-compile
(when (< emacs-major-version 22)
(defvar mm-verify-function-alist)
(defvar mm-decrypt-function-alist))
(mh-do-in-xemacs
(defvar pressed-details)))
(defvar mm-verify-function-alist) ; < Emacs 22
(defvar mm-decrypt-function-alist) ; < Emacs 22
(defvar pressed-details) ; XEmacs
(defun mh-insert-mime-security-button (handle)
"Display buttons for PGP message, HANDLE."
@ -1537,7 +1536,7 @@ a prefix argument NOCONFIRM."
(after-find-file nil)))
;; Shush compiler.
(eval-when-compile (defvar mh-identity-pgg-default-user-id))
(defvar mh-identity-pgg-default-user-id)
;;;###mh-autoload
(defun mh-mml-secure-message-encrypt (method)

View file

@ -324,7 +324,7 @@ folder containing the index search results."
count (> (hash-table-count msg-hash) 0)))))))
;; Shush compiler.
(eval-when-compile (mh-do-in-xemacs (defvar pick-folder)))
(defvar pick-folder) ; XEmacs
(defun mh-search-folder (folder window-config)
"Search FOLDER for messages matching a pattern.
@ -404,10 +404,8 @@ or nothing to search all folders."
(mh-index-sequenced-messages folders mh-tick-seq))
;; Shush compiler.
(eval-when-compile
(mh-do-in-xemacs
(defvar mh-mairix-folder)
(defvar mh-flists-search-folders)))
(defvar mh-mairix-folder) ; XEmacs
(defvar mh-flists-search-folders) ; XEmacs
;;;###mh-autoload
(defun mh-index-sequenced-messages (folders sequence)
@ -1414,9 +1412,7 @@ being the list of messages originally from that folder."
(mh-require 'which-func nil t)
;; Shush compiler.
(eval-when-compile
(if (or mh-xemacs-flag (< emacs-major-version 22))
(defvar which-func-mode)))
(defvar which-func-mode) ; < Emacs 22, XEmacs
;;;###mh-autoload
(defun mh-index-create-imenu-index ()
@ -1441,7 +1437,7 @@ being the list of messages originally from that folder."
mh-index-data)
;; Shush compiler
(eval-when-compile (if mh-xemacs-flag (defvar mh-speed-flists-inhibit-flag)))
(defvar mh-speed-flists-inhibit-flag) ; XEmacs
;;;###mh-autoload
(defun mh-index-execute-commands ()

View file

@ -134,7 +134,7 @@ you want to delete the messages, use \"\\[universal-argument]
(apply #'mh-speed-flists t folders-changed))))
;; Shush compiler.
(eval-when-compile (defvar view-exit-action))
(defvar view-exit-action)
;;;###mh-autoload
(defun mh-list-sequences ()
@ -202,7 +202,7 @@ MESSAGE appears."
" "))))
;; Shush compiler.
(eval-when-compile (mh-do-in-xemacs (defvar tool-bar-mode)))
(defvar tool-bar-mode) ; XEmacs
;;;###mh-autoload
(defun mh-narrow-to-seq (sequence)

View file

@ -815,7 +815,7 @@ operation."
(put 'mh-show-mode 'mode-class 'special)
;; Shush compiler.
(eval-when-compile (defvar font-lock-auto-fontify))
(defvar font-lock-auto-fontify)
;;;###mh-autoload
(define-derived-mode mh-show-mode text-mode "MH-Show"

View file

@ -556,10 +556,18 @@ nested folders within them."
sub-folders)
sub-folders)))
;; FIXME: This function does not do well if FOLDER does not exist. It
;; then changes the context to that folder which causes problems down
;; the line. Since a folder in the cache could later be deleted, it
;; would be good for mh-sub-folders-actual to return nil in this case
;; so that mh-sub-folders could delete it from the cache. This
;; function could protect itself by using a temporary context.
(defun mh-sub-folders-actual (folder)
"Execute the command folders to return the sub-folders of FOLDER.
Filters out the folder names that start with \".\" so that
directories that aren't usually mail folders are hidden."
directories that aren't usually mail folders are hidden.
Expects FOLDER to have already been normalized with
(mh-normalize-folder-name folder nil nil t)"
(let ((arg-list `(,(expand-file-name "folders" mh-progs)
nil (t nil) nil "-noheader" "-norecurse" "-nototal"
,@(if (stringp folder) (list folder) ())))
@ -657,7 +665,7 @@ See `expand-file-name' for description of DEFAULT."
(defvar mh-folder-hist nil)
;; Shush compiler.
(eval-when-compile (defvar mh-speed-flists-cache))
(defvar mh-speed-flists-cache)
(defvar mh-allow-root-folder-flag nil
"Non-nil means \"+\" is an acceptable folder name.
@ -683,53 +691,58 @@ This variable should never be set.")
(defun mh-folder-completion-function (name predicate flag)
"Programmable completion for folder names.
NAME is the partial folder name that has been input. PREDICATE if
non-nil is a function that is used to filter the possible choices
and FLAG determines whether the completion is over."
non-nil is a function that is used to filter the possible
choices. FLAG is nil to indicate `try-completion', t for
`all-completions', or the symbol lambda for `test-completion'.
See Info node `(elisp) Programmed Completion' for details."
(let* ((orig-name name)
;; After normalization, name is nil, +, or +something. If a
;; trailing slash is present, it is preserved.
(name (mh-normalize-folder-name name nil t))
(last-slash (mh-search-from-end ?/ name))
(last-complete (if last-slash (substring name 0 last-slash) nil))
;; nil if + or +folder; +folder/ if slash present.
(last-complete (if last-slash (substring name 0 (1+ last-slash)) nil))
;; Either +folder/remainder, +remainder, or "".
(remainder (cond (last-complete (substring name (1+ last-slash)))
((and (> (length name) 0) (equal (aref name 0) ?+))
(substring name 1))
(name (substring name 1))
(t ""))))
(cond ((eq flag nil)
(let ((try-res (try-completion
name
(mapcar (lambda (x)
(cons (if (not last-complete)
(concat "+" (car x))
(concat last-complete "/" (car x)))
(cdr x)))
(mh-sub-folders last-complete t))
predicate)))
(let ((try-res
(try-completion
name
(mapcar (lambda (x)
(cons (concat (or last-complete "+") (car x))
(cdr x)))
(mh-sub-folders last-complete t))
predicate)))
(cond ((eq try-res nil) nil)
((and (eq try-res t) (equal name orig-name)) t)
((eq try-res t) name)
(t try-res))))
((eq flag t)
(all-completions
remainder (mh-sub-folders last-complete t) predicate))
(mapcar (lambda (x)
(concat (or last-complete "+") x))
(all-completions
remainder (mh-sub-folders last-complete t) predicate)))
((eq flag 'lambda)
(let ((path (concat mh-user-path
(substring (mh-normalize-folder-name name) 1))))
(let ((path (concat (unless (and (> (length name) 1)
(eq (aref name 1) ?/))
mh-user-path)
(substring name 1))))
(cond (mh-allow-root-folder-flag (file-exists-p path))
((equal path mh-user-path) nil)
(t (file-exists-p path))))))))
;; Shush compiler.
(eval-when-compile
(mh-do-in-xemacs
(defvar completion-root-regexp)
(defvar minibuffer-completing-file-name)))
(defvar completion-root-regexp) ; XEmacs
(defvar minibuffer-completing-file-name) ; XEmacs
(defun mh-folder-completing-read (prompt default allow-root-folder-flag)
"Read folder name with PROMPT and default result DEFAULT.
If ALLOW-ROOT-FOLDER-FLAG is non-nil then \"+\" is allowed to be
a folder name corresponding to `mh-user-path'."
(mh-normalize-folder-name
(let ((minibuffer-completing-file-name t)
(completion-root-regexp "^[+/]")
(let ((completion-root-regexp "^[+/]")
(minibuffer-local-completion-map mh-folder-completion-map)
(mh-allow-root-folder-flag allow-root-folder-flag))
(completing-read prompt 'mh-folder-completion-function nil nil nil

View file

@ -60,8 +60,7 @@
(funcall mh-show-xface-function)))
;; Shush compiler.
(eval-when-compile
(mh-do-in-xemacs (defvar default-enable-multibyte-characters)))
(defvar default-enable-multibyte-characters) ; XEmacs
(defun mh-face-display-function ()
"Display a Face, X-Face, or X-Image-URL header field.

View file

@ -979,7 +979,7 @@ Returns nil if an error message has appeared."
;; Algorithm: get waiting output. See if last line contains
;; tramp-smb-prompt sentinel or tramp-smb-errors strings.
;; If not, wait a bit and again get waiting output.
(while (and (not found) (not err))
(while (not found)
;; Accept pending output.
(tramp-accept-process-output proc)

View file

@ -3584,6 +3584,10 @@ the result will be a local, non-Tramp, filename."
"Global variable keeping asynchronous process object.
Used in `tramp-handle-shell-command'")
(defvar tramp-display-shell-command-buffer t
"Whether to display output buffer of `shell-command'.
This is necessary for handling DISPLAY of `process-file'.")
(defun tramp-handle-shell-command (command &optional output-buffer error-buffer)
"Like `shell-command' for tramp files.
This will break if COMMAND prints a newline, followed by the value of
@ -3692,7 +3696,8 @@ This will break if COMMAND prints a newline, followed by the value of
(skip-chars-forward "^ ")
(setq status (read (current-buffer)))))
(unless (zerop (buffer-size))
(display-buffer output-buffer))
(when tramp-display-shell-command-buffer
(display-buffer output-buffer)))
status))
;; The following is only executed if something strange was
;; happening. Emit a helpful message and do it anyway.
@ -3707,11 +3712,10 @@ This will break if COMMAND prints a newline, followed by the value of
(when (and (numberp buffer) (zerop buffer))
(error "Implementation does not handle immediate return"))
(when (consp buffer) (error "Implementation does not handle error files"))
(shell-command
(mapconcat 'tramp-shell-quote-argument
(cons program args)
" ")
buffer))
(let ((tramp-display-shell-command-buffer display))
(shell-command
(mapconcat 'tramp-shell-quote-argument (cons program args) " ")
buffer)))
;; File Editing.
@ -4454,24 +4458,28 @@ necessary anymore."
file)
(member (match-string 1 file) (mapcar 'car tramp-methods)))
((or (equal last-input-event 'tab)
;; Emacs
(and (integerp last-input-event)
(not (event-modifiers last-input-event))
(or (char-equal last-input-event ?\?)
(char-equal last-input-event ?\t) ; handled by 'tab already?
(char-equal last-input-event ?\ )))
;; Emacs
(and (integerp last-input-event)
(or
;; ?\t has event-modifier 'control
(char-equal last-input-event ?\t)
(and (not (event-modifiers last-input-event))
(or (char-equal last-input-event ?\?)
(char-equal last-input-event ?\ )))))
;; XEmacs
(and (featurep 'xemacs)
(not (event-modifiers last-input-event))
(or (char-equal
(funcall (symbol-function 'event-to-character)
last-input-event) ?\?)
(char-equal
(funcall (symbol-function 'event-to-character)
last-input-event) ?\t)
(char-equal
(funcall (symbol-function 'event-to-character)
last-input-event) ?\ ))))
(or
;; ?\t has event-modifier 'control
(char-equal
(funcall (symbol-function 'event-to-character)
last-input-event) ?\t)
(and (not (event-modifiers last-input-event))
(or (char-equal
(funcall (symbol-function 'event-to-character)
last-input-event) ?\?)
(char-equal
(funcall (symbol-function 'event-to-character)
last-input-event) ?\ ))))))
t)))
(defun tramp-completion-handle-file-exists-p (filename)

View file

@ -30,7 +30,7 @@
;; are auto-frobbed from configure.ac, so you should edit that file and run
;; "autoconf && ./configure" to change them.
(defconst tramp-version "2.0.52"
(defconst tramp-version "2.0.53"
"This version of Tramp.")
(defconst tramp-bug-report-address "tramp-devel@gnu.org"

View file

@ -895,6 +895,11 @@ indentation to be kept as it was before narrowing."
(delete-char n)
(setq ,bindent (- ,bindent n)))))))))))
(defun comment-add (arg)
(if (and (null arg) (= (string-match "[ \t]*\\'" comment-start) 1))
comment-add
(1- (prefix-numeric-value arg))))
(defun comment-region-internal (beg end cs ce
&optional ccs cce block lines indent)
"Comment region BEG .. END.
@ -999,7 +1004,6 @@ The strings used as comment starts are built from
(defun comment-region-default (beg end &optional arg)
(let* ((numarg (prefix-numeric-value arg))
(add comment-add)
(style (cdr (assoc comment-style comment-styles)))
(lines (nth 2 style))
(block (nth 1 style))
@ -1032,8 +1036,7 @@ The strings used as comment starts are built from
((consp arg) (uncomment-region beg end))
((< numarg 0) (uncomment-region beg end (- numarg)))
(t
(setq numarg (if (and (null arg) (= (length comment-start) 1))
add (1- numarg)))
(setq numarg (comment-add arg))
(comment-region-internal
beg end
(let ((s (comment-padright comment-start numarg)))
@ -1091,9 +1094,8 @@ You can configure `comment-style' to change the way regions are commented."
;; FIXME: If there's no comment to kill on this line and ARG is
;; specified, calling comment-kill is not very clever.
(if arg (comment-kill (and (integerp arg) arg)) (comment-indent))
(let ((add (if arg (prefix-numeric-value arg)
(if (= (length comment-start) 1) comment-add 0))))
;; Some modes insist on keeping column 0 comment in column 0
(let ((add (comment-add arg)))
;; Some modes insist on keeping column 0 comment in column 0
;; so we need to move away from it before inserting the comment.
(indent-according-to-mode)
(insert (comment-padright comment-start add))

View file

@ -271,8 +271,8 @@ The remaining KEYS are passed directly to `cvs-create-fileinfo'."
;; on the current branch (either because it only exists in other
;; branches, or because it's been removed).
(if (ignore-errors
(with-current-buffer
(find-file-noselect (expand-file-name
(with-temp-buffer
(insert-file-contents (expand-file-name
".cvsignore" (file-name-directory dir)))
(goto-char (point-min))
(re-search-forward

View file

@ -267,7 +267,8 @@ the evaluated constant value at compile time."
["Hungry delete" c-toggle-hungry-state
:style toggle :selected c-hungry-delete-key]
["Subword mode" c-subword-mode
:style toggle :selected c-subword-mode])))
:style toggle :selected (and (boundp 'c-subword-mode)
c-subword-mode)])))
;;; Syntax tables.

View file

@ -100,7 +100,9 @@
(defvar tool-bar-map)
(defvar speedbar-initial-expansion-list-name)
(defvar gdb-frame-address "main" "Initialization for Assembler buffer.")
(defvar gdb-pc-address nil "Initialization for Assembler buffer.
Set to \"main\" at start if gdb-show-main is t.")
(defvar gdb-frame-address nil "Identity of frame for watch expression.")
(defvar gdb-previous-frame-address nil)
(defvar gdb-memory-address "main")
(defvar gdb-previous-frame nil)
@ -109,8 +111,9 @@
(defvar gdb-current-language nil)
(defvar gdb-var-list nil
"List of variables in watch window.
Each element has the form (VARNUM EXPRESSION NUMCHILD TYPE VALUE STATUS) where
STATUS is nil (unchanged), `changed' or `out-of-scope'.")
Each element has the form (VARNUM EXPRESSION NUMCHILD TYPE VALUE STATUS FP)
where STATUS is nil (unchanged), `changed' or `out-of-scope', FP the frame
address for root variables.")
(defvar gdb-force-update t
"Non-nil means that view of watch expressions will be updated in the speedbar.")
(defvar gdb-main-file nil "Source file from which program execution begins.")
@ -417,7 +420,8 @@ With arg, use separate IO iff arg is positive."
(goto-char (point-min))
(when (search-forward "read in on demand:" nil t)
(while (re-search-forward gdb-source-file-regexp nil t)
(push (or (match-string 1) (match-string 2)) gdb-source-file-list))
(push (file-name-nondirectory (or (match-string 1) (match-string 2)))
gdb-source-file-list))
(dolist (buffer (buffer-list))
(with-current-buffer buffer
(when (and buffer-file-name
@ -515,7 +519,7 @@ With arg, use separate IO iff arg is positive."
(setq comint-input-sender 'gdb-send)
;; (re-)initialize
(setq gdb-frame-address (if gdb-show-main "main" nil))
(setq gdb-pc-address (if gdb-show-main "main" nil))
(setq gdb-previous-frame-address nil
gdb-memory-address "main"
gdb-previous-frame nil
@ -719,7 +723,7 @@ With arg, enter name of variable to be watched in the minibuffer."
expr)
(match-string 2)
(match-string 3)
nil nil)))
nil nil gdb-frame-address)))
(push var gdb-var-list)
(speedbar 1)
(unless (string-equal
@ -1205,7 +1209,7 @@ This filter may simply queue input for a later time."
(cons
(match-string 1 args)
(string-to-number (match-string 2 args))))
(setq gdb-frame-address (match-string 3 args))
(setq gdb-pc-address (match-string 3 args))
;; cover for auto-display output which comes *before*
;; stopped annotation
(if (eq gdb-output-sink 'inferior) (setq gdb-output-sink 'user)))
@ -1356,7 +1360,7 @@ happens to be appropriate."
(gdb-get-buffer-create 'gdb-breakpoints-buffer)
(gdb-invalidate-breakpoints)
;; Do this through gdb-get-selected-frame -> gdb-frame-handler
;; so gdb-frame-address is updated.
;; so gdb-pc-address is updated.
;; (gdb-invalidate-assembler)
(if (string-equal gdb-version "pre-6.4")
@ -3003,11 +3007,11 @@ BUFFER nil or omitted means use the current buffer."
(pos 1) (address) (flag) (bptno))
(with-current-buffer buffer
(save-excursion
(if (not (equal gdb-frame-address "main"))
(if (not (equal gdb-pc-address "main"))
(progn
(goto-char (point-min))
(if (and gdb-frame-address
(search-forward gdb-frame-address nil t))
(if (and gdb-pc-address
(search-forward gdb-pc-address nil t))
(progn
(setq pos (point))
(beginning-of-line)
@ -3037,7 +3041,7 @@ BUFFER nil or omitted means use the current buffer."
(goto-char (point-min))
(if (search-forward address nil t)
(gdb-put-breakpoint-icon (eq flag ?y) bptno))))))))
(if (not (equal gdb-frame-address "main"))
(if (not (equal gdb-pc-address "main"))
(with-current-buffer buffer
(set-window-point (get-buffer-window buffer 0) pos)))))
@ -3099,7 +3103,7 @@ BUFFER nil or omitted means use the current buffer."
(special-display-frame-alist gdb-frame-parameters))
(display-buffer (gdb-get-buffer-create 'gdb-assembler-buffer))))
;; modified because if gdb-frame-address has changed value a new command
;; modified because if gdb-pc-address has changed value a new command
;; must be enqueued to update the buffer with the new output
(defun gdb-invalidate-assembler (&optional ignored)
(if (gdb-get-buffer 'gdb-assembler-buffer)
@ -3108,7 +3112,7 @@ BUFFER nil or omitted means use the current buffer."
(string-equal gdb-selected-frame gdb-previous-frame))
(if (or (not (member 'gdb-invalidate-assembler
gdb-pending-triggers))
(not (string-equal gdb-frame-address
(not (string-equal gdb-pc-address
gdb-previous-frame-address)))
(progn
;; take previous disassemble command, if any, off the queue
@ -3121,11 +3125,11 @@ BUFFER nil or omitted means use the current buffer."
(gdb-enqueue-input
(list
(concat gdb-server-prefix "disassemble "
(if (member gdb-frame-address '(nil "main")) nil "0x")
gdb-frame-address "\n")
(if (member gdb-pc-address '(nil "main")) nil "0x")
gdb-pc-address "\n")
'gdb-assembler-handler))
(push 'gdb-invalidate-assembler gdb-pending-triggers)
(setq gdb-previous-frame-address gdb-frame-address)
(setq gdb-previous-frame-address gdb-pc-address)
(setq gdb-previous-frame gdb-selected-frame)))))))
(defun gdb-get-selected-frame ()
@ -3140,8 +3144,10 @@ BUFFER nil or omitted means use the current buffer."
(setq gdb-pending-triggers
(delq 'gdb-get-selected-frame gdb-pending-triggers))
(goto-char (point-min))
(if (re-search-forward "Stack level \\([0-9]+\\)" nil t)
(setq gdb-frame-number (match-string 1)))
(when (re-search-forward
"Stack level \\([0-9]+\\), frame at \\(0x[[:xdigit:]]+\\)" nil t)
(setq gdb-frame-number (match-string 1))
(setq gdb-frame-address (match-string 2)))
(goto-char (point-min))
(when (re-search-forward ".*=\\s-+0x0*\\(\\S-*\\)\\s-+in\\s-+\\(\\S-+?\\)\
\\(?: (\\(\\S-+?\\):[0-9]+?)\\)*;? "
@ -3153,7 +3159,7 @@ BUFFER nil or omitted means use the current buffer."
(if (gdb-get-buffer 'gdb-assembler-buffer)
(with-current-buffer (gdb-get-buffer 'gdb-assembler-buffer)
(setq mode-name (concat "Machine:" gdb-selected-frame))))
(setq gdb-frame-address (match-string 1))
(setq gdb-pc-address (match-string 1))
(if (and (match-string 3) gud-overlay-arrow-position)
(let ((buffer (marker-buffer gud-overlay-arrow-position))
(position (marker-position gud-overlay-arrow-position)))

View file

@ -374,8 +374,9 @@ t means that there is no stack, and we are in display-file mode.")
(defun gud-speedbar-item-info ()
"Display the data type of the watch expression element."
(let ((var (nth (- (line-number-at-pos (point)) 2) gdb-var-list)))
(if (nth 4 var)
(speedbar-message "%s" (nth 3 var)))))
(if (nth 6 var)
(speedbar-message "%s: %s" (nth 6 var) (nth 3 var))
(speedbar-message "%s" (nth 3 var)))))
(defun gud-install-speedbar-variables ()
"Install those variables used by speedbar to enhance gud/gdb."

View file

@ -1744,6 +1744,14 @@ lines count as headers.
#'python-eldoc-function)
(add-hook 'eldoc-mode-hook
'(lambda () (run-python nil t)) nil t) ; need it running
(unless (assoc 'python-mode hs-special-modes-alist)
(setq
hs-special-modes-alist
(cons (list
'python-mode "^\\s-*def\\>" nil "#"
(lambda (arg)(python-end-of-defun)(skip-chars-backward " \t\n"))
nil)
hs-special-modes-alist)))
(if (featurep 'hippie-exp)
(set (make-local-variable 'hippie-expand-try-functions-list)
(cons 'python-try-complete hippie-expand-try-functions-list)))

View file

@ -1042,7 +1042,7 @@ Returns nil if line starts inside a string, t if in a comment."
(defun tcl-send-string (proc string)
(with-current-buffer (process-buffer proc)
(goto-char (process-mark proc))
(beginning-of-line)
(forward-line 0) ;Not (beginning-of-line) because of fields.
(if (looking-at comint-prompt-regexp)
(set-marker inferior-tcl-delete-prompt-marker (point))))
(comint-send-string proc string))
@ -1050,7 +1050,7 @@ Returns nil if line starts inside a string, t if in a comment."
(defun tcl-send-region (proc start end)
(with-current-buffer (process-buffer proc)
(goto-char (process-mark proc))
(beginning-of-line)
(forward-line 0) ;Not (beginning-of-line) because of fields.
(if (looking-at comint-prompt-regexp)
(set-marker inferior-tcl-delete-prompt-marker (point))))
(comint-send-region proc start end))
@ -1080,7 +1080,11 @@ See variable `inferior-tcl-buffer'."
Prefix argument means switch to the Tcl buffer afterwards."
(interactive "r\nP")
(let ((proc (inferior-tcl-proc)))
(tcl-send-region proc start end)
(tcl-send-region
proc
;; Strip leading and trailing whitespace.
(save-excursion (goto-char start) (skip-chars-forward " \t\n") (point))
(save-excursion (goto-char end) (skip-chars-backward " \t\n") (point)))
(tcl-send-string proc "\n")
(if and-go (switch-to-tcl t))))
@ -1149,7 +1153,12 @@ See documentation for function `inferior-tcl-mode' for more information."
(unless (comint-check-proc "*inferior-tcl*")
(set-buffer (apply (function make-comint) "inferior-tcl" cmd nil
tcl-command-switches))
(inferior-tcl-mode))
(inferior-tcl-mode)
;; Make tclsh display a prompt on ms-windows (or under Unix, when a tty
;; wasn't used). Doesn't affect wish, unfortunately.
(unless (process-tty-name (inferior-tcl-proc))
(tcl-send-string (inferior-tcl-proc)
"set ::tcl_interactive 1; concat\n")))
(set (make-local-variable 'tcl-application) cmd)
(setq inferior-tcl-buffer "*inferior-tcl*")
(pop-to-buffer "*inferior-tcl*"))

View file

@ -1540,7 +1540,8 @@ by doing (clear-string STRING)."
(let ((pass nil)
(c 0)
(echo-keystrokes 0)
(cursor-in-echo-area t))
(cursor-in-echo-area t)
(message-log-max nil))
(add-text-properties 0 (length prompt)
minibuffer-prompt-properties prompt)
(while (progn (message "%s%s"

View file

@ -5,7 +5,7 @@
;; Author: Carsten Dominik <dominik at science dot uva dot nl>
;; Keywords: outlines, hypermedia, calendar, wp
;; Homepage: http://www.astro.uva.nl/~dominik/Tools/org/
;; Version: 4.21
;; Version: 4.24
;;
;; This file is part of GNU Emacs.
;;
@ -81,9 +81,17 @@
;;
;; Changes since version 4.00:
;; ---------------------------
;; Version 4.21
;; Version 4.24
;; - Bug fixes.
;;
;; Version 4.23
;; - Bug fixes.
;;
;; Version 4.22
;; - Bug fixes.
;; - In agenda buffer, mouse-1 no longer follows link.
;; See `org-agenda-mouse-1-follows-link' and `org-mouse-1-follows-link'.
;;
;; Version 4.20
;; - Links use now the [[link][description]] format by default.
;; When inserting links, the user is prompted for a description.
@ -174,7 +182,7 @@
;;; Customization variables
(defvar org-version "4.21"
(defvar org-version "4.24"
"The version number of the file org.el.")
(defun org-version ()
(interactive)
@ -227,7 +235,11 @@ uninteresting. Also tables look terrible when wrapped."
(defcustom org-startup-align-all-tables nil
"Non-nil means, align all tables when visiting a file.
This is useful when the column width in tables is forced with <N> cookies
in table fields. Such tables will look correct only after the first re-align."
in table fields. Such tables will look correct only after the first re-align.
This can also be configured on a per-file basis by adding one of
the following lines anywhere in the buffer:
#+STARTUP: align
#+STARTUP: noalign"
:group 'org-startup
:type 'boolean)
@ -237,7 +249,6 @@ This means, if you start editing an org file, you will get an
immediate reminder of any due deadlines.
This can also be configured on a per-file basis by adding one of
the following lines anywhere in the buffer:
#+STARTUP: dlcheck
#+STARTUP: nodlcheck"
:group 'org-startup
@ -391,7 +402,12 @@ This has the effect that two stars are being added/taken away in
promotion/demotion commands. It also influences how levels are
handled by the exporters.
Changing it requires restart of `font-lock-mode' to become effective
for fontification also in regions already fontified."
for fontification also in regions already fontified.
You may also set this on a per-file basis by adding one of the following
lines to the buffer:
#+STARTUP: odd
#+STARTUP: oddeven"
:group 'org-edit-structure
:group 'org-font-lock
:type 'boolean)
@ -870,6 +886,13 @@ Needs to be set before org.el is loaded."
:group 'org-link-follow
:type 'boolean)
(defcustom org-mouse-1-follows-link t
"Non-nil means, mouse-1 on a link will follow the link.
A longer mouse click will still set point. Does not wortk on XEmacs.
Needs to be set before org.el is loaded."
:group 'org-link-follow
:type 'boolean)
(defcustom org-mark-ring-length 4
"Number of different positions to be recorded in the ring
Changing this requires a restart of Emacs to work correctly."
@ -1112,7 +1135,7 @@ closing date."
:type 'boolean)
(defgroup org-priorities nil
"Keywords in Org-mode."
"Priorities in Org-mode."
:tag "Org Priorities"
:group 'org-todo)
@ -1167,7 +1190,7 @@ moved to the new date."
:type 'boolean)
(defgroup org-tags nil
"Options concerning startup of Org-mode."
"Options concerning tags in Org-mode."
:tag "Org Tags"
:group 'org)
@ -1301,21 +1324,28 @@ forth between agenda and calendar."
:tag "Org Agenda Window Setup"
:group 'org-agenda)
(defcustom org-agenda-mouse-1-follows-link nil
"Non-nil means, mouse-1 on a link will follow the link in the agenda.
A longer mouse click will still set point. Does not wortk on XEmacs.
Needs to be set before org.el is loaded."
:group 'org-agenda-setup
:type 'boolean)
(defcustom org-select-timeline-window t
"Non-nil means, after creating a timeline, move cursor into Timeline window.
When nil, cursor will remain in the current window."
:group 'org-agenda-window-setup
:group 'org-agenda-setup
:type 'boolean)
(defcustom org-select-agenda-window t
"Non-nil means, after creating an agenda, move cursor into Agenda window.
When nil, cursor will remain in the current window."
:group 'org-agenda-window-setup
:group 'org-agenda-setup
:type 'boolean)
(defcustom org-fit-agenda-window t
"Non-nil means, change window size of agenda to fit content."
:group 'org-agenda-window-setup
:group 'org-agenda-setup
:type 'boolean)
(defgroup org-agenda-display nil
@ -1884,7 +1914,12 @@ face is white for a light background, and black for a dark
background. You may have to customize the face `org-hide' to
make this work.
Changing it requires restart of `font-lock-mode' to become effective
also in regions already fontified."
also in regions already fontified.
You may also set this on a per-file basis by adding one of the following
lines to the buffer:
#+STARTUP: hidestars
#+STARTUP: showstars"
:group 'org-font-lock
:type 'boolean)
@ -2051,6 +2086,14 @@ Changing this variable requires a restart of Emacs to take effect."
"Face for links."
:group 'org-faces)
(defface org-date
'((((type tty) (class color)) (:foreground "cyan" :weight bold))
(((class color) (background light)) (:foreground "Purple" :underline t))
(((class color) (background dark)) (:foreground "Cyan" :underline t))
(t (:bold t)))
"Face for links."
:group 'org-faces)
(defface org-tag
'((((type tty) (class color)) (:weight bold))
(((class color) (background light)) (:weight bold))
@ -2059,6 +2102,15 @@ Changing this variable requires a restart of Emacs to take effect."
"Face for tags."
:group 'org-faces)
(defface org-todo ;; font-lock-warning-face
'((((type tty) (class color)) (:foreground "red"))
(((class color) (background light)) (:foreground "Red" :bold t))
(((class color) (background dark)) (:foreground "Red1" :bold t))
; (((class color) (background dark)) (:foreground "Pink" :bold t))
(t (:inverse-video t :bold t)))
"Face for TODO keywords."
:group 'org-faces)
(defface org-done ;; font-lock-type-face
'((((type tty) (class color)) (:foreground "green"))
(((class color) (background light)) (:foreground "ForestGreen" :bold t))
@ -2165,7 +2217,9 @@ Changing this variable requires a restart of Emacs to take effect."
((equal key "STARTUP")
(let ((opts (org-split-string value splitre))
(set '(("fold" org-startup-folded t)
("overview" org-startup-folded t)
("nofold" org-startup-folded nil)
("showall" org-startup-folded nil)
("content" org-startup-folded content)
("hidestars" org-hide-leading-stars t)
("showstars" org-hide-leading-stars nil)
@ -2379,6 +2433,10 @@ The following commands are available:
s)
(match-string-no-properties num string)))
(defsubst org-no-properties (s)
(remove-text-properties 0 (length s) org-rm-props s)
s)
(defun org-current-time ()
"Current time, possibly rounded to `org-time-stamp-rounding-minutes'."
(if (> org-time-stamp-rounding-minutes 0)
@ -2406,7 +2464,8 @@ that will be added to PLIST. Returns the string that was modified."
(if (featurep 'xemacs) [button2] [mouse-2]) 'org-open-at-mouse)
(define-key org-mouse-map
(if (featurep 'xemacs) [button3] [mouse-3]) 'org-find-file-at-mouse)
(define-key org-mouse-map [follow-link] 'mouse-face)
(when org-mouse-1-follows-link
(define-key org-mouse-map [follow-link] 'mouse-face))
(when org-tab-follows-link
(define-key org-mouse-map [(tab)] 'org-open-at-point)
(define-key org-mouse-map "\C-i" 'org-open-at-point))
@ -2508,7 +2567,9 @@ that will be added to PLIST. Returns the string that was modified."
(defun org-activate-bracket-links (limit)
"Run through the buffer and add overlays to bracketed links."
(if (re-search-forward org-bracket-link-regexp limit t)
(let* ((help (concat "LINK: " (org-match-string-no-properties 1)))
(let* ((help (concat "LINK: "
(org-match-string-no-properties 1)))
;; FIXME: above we should remove the escapes.
(ip (list 'invisible 'org-link 'intangible t 'rear-nonsticky t
'keymap org-mouse-map 'mouse-face 'highlight
'help-echo help))
@ -2656,13 +2717,13 @@ between words."
(if (memq 'plain lk) '(org-activate-plain-links (0 'org-link t)))
(if (memq 'bracket lk) '(org-activate-bracket-links (0 'org-link t)))
(if (memq 'radio lk) '(org-activate-target-links (0 'org-link t)))
(if (memq 'date lk) '(org-activate-dates (0 'org-link t)))
(if (memq 'date lk) '(org-activate-dates (0 'org-date t)))
(if (memq 'camel lk) '(org-activate-camels (0 'org-link t)))
(if (memq 'tag lk) '(org-activate-tags (1 'org-tag prepend)))
(if org-table-limit-column-width
'(org-hide-wide-columns (0 nil append)))
(list (concat "^\\*+[ \t]*" org-not-done-regexp)
'(1 'org-warning t))
'(1 'org-todo t))
(list (concat "\\[#[A-Z]\\]") '(0 'org-special-keyword t))
(list (concat "\\<" org-deadline-string) '(0 'org-special-keyword t))
(list (concat "\\<" org-scheduled-string) '(0 'org-special-keyword t))
@ -2683,7 +2744,7 @@ between words."
'("| *\\(:?=[^|\n]*\\)" (1 'org-formula t))
'("^[ \t]*| *\\([#!$*_^]\\) *|" (1 'org-formula t))
(if org-format-transports-properties-p
'("| *\\(<[0-9]+>\\) *|" (1 'org-formula t)))
'("| *\\(<[0-9]+>\\) *" (1 'org-formula t)))
)))
(setq org-font-lock-extra-keywords (delq nil org-font-lock-extra-keywords))
;; Now set the full font-lock-keywords
@ -3048,7 +3109,10 @@ or nil."
(error (outline-next-heading)))
(prog1 (match-string 0)
(funcall outline-level)))))
(unless (bolp) (newline))
(if (and (bolp)
(save-excursion (backward-char 1) (not (org-invisible-p))))
(open-line 1)
(newline))
(insert head)
(if (looking-at "[ \t]*")
(replace-match " "))
@ -4249,7 +4313,7 @@ used to insert the time stamp into the buffer to include the time."
;; the range start.
(if (save-excursion
(re-search-backward
(concat org-ts-regexp "--\\=")
(concat org-ts-regexp "--\\=") ; FIXME: exactly two minuses?
(- (point) 20) t))
(apply
'encode-time
@ -4769,7 +4833,8 @@ The following commands are available:
(if (featurep 'xemacs) [(button2)] [(mouse-2)]) 'org-agenda-goto-mouse)
(define-key org-agenda-keymap
(if (featurep 'xemacs) [(button3)] [(mouse-3)]) 'org-agenda-show-mouse)
(define-key org-agenda-keymap [follow-link] 'mouse-face)
(when org-agenda-mouse-1-follows-link
(define-key org-agenda-keymap [follow-link] 'mouse-face))
(easy-menu-define org-agenda-menu org-agenda-mode-map "Agenda menu"
'("Agenda"
("Agenda Files")
@ -5156,7 +5221,7 @@ NDAYS defaults to `org-agenda-ndays'."
(d (- nt n1)))
(- sd (+ (if (< d 0) 7 0) d)))))
(day-numbers (list start))
;FIXME (inhibit-redisplay t)
(inhibit-redisplay t)
s e rtn rtnall file date d start-pos end-pos todayp nd)
(setq org-agenda-redo-command
(list 'org-agenda-list (list 'quote include-all) start-day ndays t))
@ -5522,7 +5587,7 @@ With prefix ARG, go back that many times `org-agenda-ndays'."
(org-disable-agenda-to-diary t))
(save-excursion
(save-window-excursion
(list-diary-entries date 1)))
(list-diary-entries date 1))) ;; Keep this name for now, compatibility
(if (not (get-buffer fancy-diary-buffer))
(setq entries nil)
(with-current-buffer fancy-diary-buffer
@ -5966,7 +6031,7 @@ the documentation of `org-diary'."
(org-add-props txt nil
'face 'org-scheduled-today
'undone-face 'org-scheduled-today 'done-face 'org-done
'category category priority (+ 99 priority))
'category category 'priority (+ 99 priority))
(org-add-props txt nil 'priority priority 'category category)))
(push txt ee))
(outline-next-heading))))
@ -6227,7 +6292,7 @@ only the correctly processes TXT should be returned - this is used by
(file-name-sans-extension
(file-name-nondirectory buffer-file-name))
"")))
(tag (or (nth (1- (or (length tags) 0)) tags) ""))
(tag (if tags (nth (1- (length tags)) tags) ""))
time ;; needed for the eval of the prefix format
(ts (if dotime (concat (if (stringp dotime) dotime "") txt)))
(time-of-day (and dotime (org-get-time-of-day ts)))
@ -7282,7 +7347,10 @@ optional argument IN-EMACS is non-nil, Emacs will visit the file."
(format "Execute \"%s\" in shell? "
(org-add-props cmd nil
'face 'org-warning))))
(shell-command cmd)
(progn
(message "Executing %s..." cmd)
(shell-command cmd)
(message "Executing %s...done" cmd))
(error "Abort"))))
(t
@ -7670,6 +7738,28 @@ folders."
(kill-this-buffer)
(error "Message not found"))))
(defun org-upgrade-old-links (&optional query-description)
"Transfer old <...> style links to new [[...]] style links.
With arg query-description, ask at each match for a description text to use
for this link."
(interactive (list (y-or-n-p "Would you like to be queried for a description at each link?")))
(save-excursion
(goto-char (point-min))
(let ((re (concat "\\([^[]\\)<\\("
"\\(" (mapconcat 'identity org-link-types "\\|")
"\\):"
"[^" org-non-link-chars "]+\\)>"))
l1 l2 (cnt 0))
(while (re-search-forward re nil t)
(setq cnt (1+ cnt)
l1 (org-match-string-no-properties 2)
l2 (save-match-data (org-link-escape l1)))
(when query-description (setq l1 (read-string "Desc: " l1)))
(if (equal l1 l2)
(replace-match (concat (match-string 1) "[[" l1 "]]") t t)
(replace-match (concat (match-string 1) "[[" l2 "][" l1 "]]") t t)))
(message "%d matches have beed treated" cnt))))
(defun org-open-file (path &optional in-emacs line search)
"Open the file at PATH.
First, this expands any special file name abbreviations. Then the
@ -8619,7 +8709,7 @@ This is being used to correctly align a single field after TAB or RET.")
(> (org-string-width xx) fmax))
(org-add-props xx nil
'help-echo
(concat "Clipped table field, use C-c ` to edit. Full value is:\n" (copy-sequence xx)))
(concat "Clipped table field, use C-c ` to edit. Full value is:\n" (org-no-properties (copy-sequence xx))))
(setq f1 (min fmax (or (string-match org-bracket-link-regexp xx) fmax)))
(unless (> f1 1)
(error "Cannot narrow field starting with wide link \"%s\""
@ -10153,7 +10243,8 @@ $1-> %s\n" orig formula form))
(org-table-align)))))
(defun org-table-recalculate (&optional all noalign)
"Recalculate the current table line by applying all stored formulas."
"Recalculate the current table line by applying all stored formulas.
With prefix arg ALL, do this for all lines in the table."
(interactive "P")
(or (memq this-command org-recalc-commands)
(setq org-recalc-commands (cons this-command org-recalc-commands)))
@ -11376,7 +11467,7 @@ Does include HTML export options as well as TODO and CATEGORY stuff."
(mapconcat 'identity org-todo-keywords " ")
"Me Jason Marie DONE")
(cdr (assoc org-startup-folded
'((nil . "nofold")(t . "fold")(content . "content"))))
'((nil . "showall") (t . "overview") (content . "content"))))
(if org-startup-with-deadline-check "dlcheck" "nodlcheck")
(if org-odd-levels-only "odd" "oddeven")
(if org-hide-leading-stars "hidestars" "showstars")
@ -11718,8 +11809,9 @@ headlines. The default is 3. Lower levels will become bulleted lists."
(concat "<img src=\"" thefile "\"/>")
(concat "<a href=\"" thefile "\">" desc "</a>")))))
((member type '("bbdb" "vm" "wl" "mhe" "rmail" "gnus" "shell"))
(setq rpl (concat "<i>&lt;" type ":" path "&gt;</i>"))))
;; FIXME: We get to see the escaped links!!!!!
(setq rpl (concat "<i>&lt;" type ":"
(save-match-data (org-link-unescape path))
"&gt;</i>"))))
(setq line (replace-match rpl t t line)
start (+ start (length rpl))))
;; TODO items
@ -12196,6 +12288,89 @@ file, but with extension `.ics'."
(interactive)
(org-export-icalendar nil buffer-file-name))
(defun org-export-as-xml ()
"Export current buffer as XOXO XML buffer."
(interactive)
(cond ((eq org-export-xml-type 'xoxo)
(org-export-as-xoxo (current-buffer)))))
(defun org-export-as-xoxo-insert-into (buffer &rest output)
(with-current-buffer buffer
(apply 'insert output)))
(defun org-export-as-xoxo (&optional buffer)
"Export the org buffer as XOXO.
The XOXO buffer is named *xoxo-<source buffer name>*"
(interactive (list (current-buffer)))
;; A quickie abstraction
;; Output everything as XOXO
(with-current-buffer (get-buffer buffer)
(goto-char (point-min)) ;; CD: beginning-of-buffer is not allowed.
(let* ((filename (concat (file-name-sans-extension buffer-file-name)
".xml"))
(out (find-file-noselect filename))
(last-level 1)
(hanging-li nil))
;; Check the output buffer is empty.
(with-current-buffer out (erase-buffer))
;; Kick off the output
(org-export-as-xoxo-insert-into out "<ol class='xoxo'>\n")
(while (re-search-forward "^\\(\\*+\\) \\(.+\\)" (point-max) 't)
(let* ((hd (match-string-no-properties 1))
(level (length hd))
(text (concat
(match-string-no-properties 2)
(save-excursion
(goto-char (match-end 0))
(let ((str ""))
(catch 'loop
(while 't
(forward-line)
(if (looking-at "^[ \t]\\(.*\\)")
(setq str (concat str (match-string-no-properties 1)))
(throw 'loop str)))))))))
;; Handle level rendering
(cond
((> level last-level)
(org-export-as-xoxo-insert-into out "\n<ol>\n"))
((< level last-level)
(dotimes (- (- last-level level) 1)
(if hanging-li
(org-export-as-xoxo-insert-into out "</li>\n"))
(org-export-as-xoxo-insert-into out "</ol>\n"))
(when hanging-li
(org-export-as-xoxo-insert-into out "</li>\n")
(setq hanging-li nil)))
((equal level last-level)
(if hanging-li
(org-export-as-xoxo-insert-into out "</li>\n")))
)
(setq last-level level)
;; And output the new li
(setq hanging-li 't)
(if (equal ?+ (elt text 0))
(org-export-as-xoxo-insert-into out "<li class='" (substring text 1) "'>")
(org-export-as-xoxo-insert-into out "<li>" text))))
;; Finally finish off the ol
(dotimes (- last-level 1)
(if hanging-li
(org-export-as-xoxo-insert-into out "</li>\n"))
(org-export-as-xoxo-insert-into out "</ol>\n"))
;; Finish the buffer off and clean it up.
(switch-to-buffer-other-window out)
(indent-region (point-min) (point-max))
(save-buffer)
(goto-char (point-min))
)))
;;;###autoload
(defun org-export-icalendar-all-agenda-files ()
"Export all files in `org-agenda-files' to iCalendar .ics files.
@ -12742,19 +12917,36 @@ See the individual commands for more information."
(org-paste-subtree arg)))
(defun org-ctrl-c-ctrl-c (&optional arg)
"Call realign table, or recognize a table.el table, or update keywords.
When the cursor is inside a table created by the table.el package,
activate that table. Otherwise, if the cursor is at a normal table
created with org.el, re-align that table. This command works even if
the automatic table editor has been turned off.
"Set tags in headline, or update according to changed information at point.
If the cursor is in a headline, prompt for tags and insert them into
the current line, aligned to `org-tags-column'. When in a headline and
called with prefix arg, realign all tags in the current buffer.
This command does many different things, depending on context:
If the cursor is in one of the special #+KEYWORD lines, this triggers
scanning the buffer for these lines and updating the information.
If the cursor is on a #+TBLFM line, re-apply the formulae to the table."
- If the cursor is in a headline, prompt for tags and insert them
into the current line, aligned to `org-tags-column'. When called
with prefix arg, realign all tags in the current buffer.
- If the cursor is in one of the special #+KEYWORD lines, this
triggers scanning the buffer for these lines and updating the
information.
- If the cursor is inside a table, realign the table. This command
works even if the automatic table editor has been turned off.
- If the cursor is on a #+TBLFM line, re-apply the formulas to
the entire table.
- If the cursor is inside a table created by the table.el package,
activate that table.
- If the current buffer is a remember buffer, close note and file it.
with a prefix argument, file it without further interaction to the default
location.
- If the cursor is on a <<<target>>>, update radio targets and corresponding
links in this buffer.
- If the cursor is on a numbered item in a plain list, renumber the
ordered list."
(interactive "P")
(let ((org-enable-table-editor t))
(cond
@ -13091,9 +13283,10 @@ With optional NODE, go directly to that node."
;; through to `fill-paragraph' when appropriate.
(set (make-local-variable 'fill-paragraph-function) 'org-fill-paragraph)
;; Adaptive filling: To get full control, first make sure that
;; `adaptive-fill-regexp' never matches. Then install our won matcher.
(setq adaptive-fill-regexp "\000")
(setq adaptive-fill-function 'org-adaptive-fill-function))
;; `adaptive-fill-regexp' never matches. Then install our own matcher.
(set (make-local-variable 'adaptive-fill-regexp) "\000")
(set (make-local-variable 'adaptive-fill-function)
'org-adaptive-fill-function))
(defun org-fill-paragraph (&optional justify)
"Re-align a table, pass through to fill-paragraph if no table."
@ -13368,7 +13561,6 @@ Show the heading too, if it is currently invisible."
(or (match-beginning 1) (point-max)))
(if org-noutline-p nil ?\n))))
(defun org-make-options-regexp (kwds)
"Make a regular expression for keyword lines."
(concat
@ -13402,114 +13594,6 @@ Show the heading too, if it is currently invisible."
(run-hooks 'org-load-hook)
;; Experimental code
;; FIXME: Move this code when it is ready.
(defun org-upgrade-old-links (&optional query-description)
"Transfer old <...> style links to new [[...]] style links.
With arg query-description, ask at each match for a description text to use
for this link."
(interactive (list (y-or-n-p "Would you like to be queried for a description at each link?")))
(save-excursion
(goto-char (point-min))
(let ((re (concat "\\([^[]\\)<\\("
"\\(" (mapconcat 'identity org-link-types "\\|")
"\\):"
"[^" org-non-link-chars "]+\\)>"))
l1 l2 (cnt 0))
(while (re-search-forward re nil t)
(setq cnt (1+ cnt)
l1 (org-match-string-no-properties 2)
l2 (save-match-data (org-link-escape l1)))
(when query-description (setq l1 (read-string "Desc: " l1)))
(if (equal l1 l2)
(replace-match (concat (match-string 1) "[[" l1 "]]") t t)
(replace-match (concat (match-string 1) "[[" l2 "][" l1 "]]") t t)))
(message "%d matches have beed treated" cnt))))
(defun org-export-as-xml ()
"Export current buffer as XOXO XML buffer."
(interactive)
(cond ((eq org-export-xml-type 'xoxo)
(org-export-as-xoxo (current-buffer)))))
(defun org-export-as-xoxo-insert-into (buffer &rest output)
(with-current-buffer buffer
(apply 'insert output)))
(defun org-export-as-xoxo (&optional buffer)
"Export the org buffer as XOXO.
The XOXO buffer is named *xoxo-<source buffer name>*"
(interactive (list (current-buffer)))
;; A quickie abstraction
;; Output everything as XOXO
(with-current-buffer (get-buffer buffer)
(goto-char (point-min)) ;; CD: beginning-of-buffer is not allowed.
(let* ((filename (concat (file-name-sans-extension buffer-file-name)
".xml"))
(out (find-file-noselect filename))
(last-level 1)
(hanging-li nil))
;; Check the output buffer is empty.
(with-current-buffer out (erase-buffer))
;; Kick off the output
(org-export-as-xoxo-insert-into out "<ol class='xoxo'>\n")
(while (re-search-forward "^\\(\\*+\\) \\(.+\\)" (point-max) 't)
(let* ((hd (match-string-no-properties 1))
(level (length hd))
(text (concat
(match-string-no-properties 2)
(save-excursion
(goto-char (match-end 0))
(let ((str ""))
(catch 'loop
(while 't
(forward-line)
(if (looking-at "^[ \t]\\(.*\\)")
(setq str (concat str (match-string-no-properties 1)))
(throw 'loop str)))))))))
;; Handle level rendering
(cond
((> level last-level)
(org-export-as-xoxo-insert-into out "\n<ol>\n"))
((< level last-level)
(dotimes (- (- last-level level) 1)
(if hanging-li
(org-export-as-xoxo-insert-into out "</li>\n"))
(org-export-as-xoxo-insert-into out "</ol>\n"))
(when hanging-li
(org-export-as-xoxo-insert-into out "</li>\n")
(setq hanging-li nil)))
((equal level last-level)
(if hanging-li
(org-export-as-xoxo-insert-into out "</li>\n")))
)
(setq last-level level)
;; And output the new li
(setq hanging-li 't)
(if (equal ?+ (elt text 0))
(org-export-as-xoxo-insert-into out "<li class='" (substring text 1) "'>")
(org-export-as-xoxo-insert-into out "<li>" text))))
;; Finally finish off the ol
(dotimes (- last-level 1)
(if hanging-li
(org-export-as-xoxo-insert-into out "</li>\n"))
(org-export-as-xoxo-insert-into out "</ol>\n"))
;; Finish the buffer off and clean it up.
(switch-to-buffer-other-window out)
(indent-region (point-min) (point-max) nil)
(save-buffer)
(goto-char (point-min))
)))
;; arch-tag: e77da1a7-acc7-4336-b19e-efa25af3f9fd
;;; org.el ends here

View file

@ -594,20 +594,24 @@ An alternative value is \" . \", if you use a font with a narrow period."
'(face subscript display (raise -0.3))
'(face superscript display (raise +0.3)))))
(defun tex-font-lock-match-suscript (limit)
"Match subscript and superscript patterns up to LIMIT."
(when (re-search-forward "[_^] *\\([^\n\\{}]\\|\
\\\\\\([a-zA-Z@]+\\|[^ \t\n]\\)\\|{[^\\{]*}\\|\\({\\)\\)" limit t)
(when (match-end 3)
(let ((beg (match-beginning 3))
(end (save-restriction
(narrow-to-region (point-min) limit)
(condition-case nil (scan-lists (point) 1 1) (error nil)))))
(store-match-data (if end
(list (match-beginning 0) end beg end)
(list beg beg beg beg)))))
t))
(defconst tex-font-lock-keywords-3
(append tex-font-lock-keywords-2
(eval-when-compile
(let ((general "\\([a-zA-Z@]+\\|[^ \t\n]\\)")
(slash "\\\\")
;; This is not the same regexp as before: it has a `+' removed.
;; The + makes the matching faster in the above cases (where we can
;; exit as soon as the match fails) but would make this matching
;; degenerate to nasty complexity (because we try to match the
;; closing brace, which forces trying all matching combinations).
(arg "{\\(?:[^{}\\]\\|\\\\.\\|{[^}]*}\\)*"))
`((,(concat "[_^] *\\([^\n\\{}#]\\|" slash general "\\|#[0-9]\\|" arg "}\\)")
(1 (tex-font-lock-suscript (match-beginning 0))
append))))))
'((tex-font-lock-match-suscript
(1 (tex-font-lock-suscript (match-beginning 0)) append))))
"Experimental expressions to highlight in TeX modes.")
(defvar tex-font-lock-keywords tex-font-lock-keywords-1

View file

@ -5,7 +5,7 @@
;; This file is part of GNU Emacs.
;; Maintainer's Time-stamp: <2006-02-06 15:11:58 ttn>
;; Maintainer's Time-stamp: <2006-04-12 20:30:56 rms>
;; Maintainer: Stephen Gildea <gildea@stop.mail-abuse.org>
;; Keywords: tools
@ -93,6 +93,7 @@ historical default."
:type 'string
:group 'time-stamp
:version "20.1")
;;;###autoload(put 'time-stamp-format 'safe-local-variable 'stringp)
(defcustom time-stamp-active t
"*Non-nil to enable time-stamping of buffers by \\[time-stamp].
@ -150,7 +151,7 @@ Do not change `time-stamp-line-limit', `time-stamp-start',
incompatible with other people's files! If you must change them for some
application, do so in the local variables section of the time-stamped file
itself.")
;;;###autoload(put 'time-stamp-line-limit 'safe-local-variable 'integerp)
(defvar time-stamp-start "Time-stamp:[ \t]+\\\\?[\"<]+" ;Do not change!
"Regexp after which the time stamp is written by \\[time-stamp].
@ -163,7 +164,7 @@ Do not change `time-stamp-line-limit', `time-stamp-start',
incompatible with other people's files! If you must change them for some
application, do so in the local variables section of the time-stamped file
itself.")
;;;###autoload(put 'time-stamp-start 'safe-local-variable t)
(defvar time-stamp-end "\\\\?[\">]" ;Do not change!
"Regexp marking the text after the time stamp.
@ -183,6 +184,7 @@ Do not change `time-stamp-start', `time-stamp-end', `time-stamp-pattern',
or `time-stamp-inserts-lines' for yourself or you will be incompatible
with other people's files! If you must change them for some application,
do so in the local variables section of the time-stamped file itself.")
;;;###autoload(put 'time-stamp-end 'safe-local-variable t)
(defvar time-stamp-inserts-lines nil ;Do not change!
@ -199,6 +201,7 @@ Do not change `time-stamp-end' or `time-stamp-inserts-lines' for
yourself or you will be incompatible with other people's files!
If you must change them for some application, do so in the local
variables section of the time-stamped file itself.")
;;;###autoload(put 'time-stamp-inserts-lines 'safe-local-variable t)
(defvar time-stamp-count 1 ;Do not change!
@ -209,6 +212,7 @@ Do not change `time-stamp-count' for yourself or you will be
incompatible with other people's files! If you must change it for
some application, do so in the local variables section of the
time-stamped file itself.")
;;;###autoload(put 'time-stamp-count 'safe-local-variable 'integerp)
(defvar time-stamp-pattern nil ;Do not change!
@ -244,6 +248,7 @@ Do not change `time-stamp-pattern' `time-stamp-line-limit',
incompatible with other people's files! If you must change them for
some application, do so only in the local variables section of the
time-stamped file itself.")
;;;###autoload(put 'time-stamp-pattern 'safe-local-variable 'stringp)

View file

@ -47,11 +47,15 @@
;; would be accompanied by a full redisplay.
(define-minor-mode tooltip-mode
"Toggle Tooltip display.
With ARG, turn tooltip mode on if and only if ARG is positive.
"Toggle Tooltip mode.
With ARG, turn Tooltip mode on if and only if ARG is positive.
When this minor mode is enabled, Emacs displays help text
in a pop-up window on mouse-over. When it is disabled,
Emacs displays the help text in the echo area instead."
in a pop-up window for buttons and menu items that you put the mouse on.
\(However, if `tooltip-use-echo-area' is non-nil, this and
all pop-up help appears in the echo area.)
When Tooltip mode is disabled, Emacs displays one line of
the help text in the echo area, and does not make a pop-up window."
:global t
:init-value (not (or noninteractive
emacs-basic-display
@ -142,7 +146,9 @@ position to pop up the tooltip."
:group 'basic-faces)
(defcustom tooltip-use-echo-area nil
"Use the echo area instead of tooltip frames for help and GUD tooltips."
"Use the echo area instead of tooltip frames for help and GUD tooltips.
To display multi-line help text in the echo area, set this to t
and enable `tooltip-mode'."
:type 'boolean
:group 'tooltip)

View file

@ -3107,7 +3107,11 @@ colors. `vc-annotate-background' specifies the background color."
(vc-ensure-vc-buffer)
(setq vc-annotate-display-mode display-mode) ;Not sure why. --Stef
(let* ((temp-buffer-name (format "*Annotate %s (rev %s)*" (buffer-name) rev))
(temp-buffer-show-function 'vc-annotate-display-select))
(temp-buffer-show-function 'vc-annotate-display-select)
;; If BUF is specified, we presume the caller maintains current line,
;; so we don't need to do it here. This implementation may give
;; strange results occasionally in the case of REV != WORKFILE-REV.
(current-line (unless buf (line-number-at-pos))))
(message "Annotating...")
;; If BUF is specified it tells in which buffer we should put the
;; annotations. This is used when switching annotations to another
@ -3129,6 +3133,8 @@ colors. `vc-annotate-background' specifies the background color."
(set (make-local-variable 'vc-annotate-parent-rev) rev)
(set (make-local-variable 'vc-annotate-parent-display-mode)
display-mode)))
(when current-line
(goto-line current-line temp-buffer-name))
(message "Annotating... done")))
(defun vc-annotate-prev-version (prefix)
@ -3310,8 +3316,8 @@ The annotations are relative to the current time, unless overridden by OFFSET."
(let* ((color (or (vc-annotate-compcar difference vc-annotate-color-map)
(cons nil vc-annotate-very-old-color)))
;; substring from index 1 to remove any leading `#' in the name
(face-name (concat "vc-annotate-face-"
(if (string-equal
(face-name (concat "vc-annotate-face-"
(if (string-equal
(substring (cdr color) 0 1) "#")
(substring (cdr color) 1)
(cdr color))))

View file

@ -1,3 +1,35 @@
2006-04-18 Richard Stallman <rms@gnu.org>
* tips.texi (Coding Conventions): Explain when the package's
prefix should appear later on (not at the start of the name).
* searching.texi (String Search): Clarify effect of NOERROR.
* modes.texi (Imenu): Clarify what special items do.
* hooks.texi (Standard Hooks): Delete text about old hook names.
2006-04-17 Romain Francoise <romain@orebokech.com>
* variables.texi (Local Variables): Update the default value of
`max-specpdl-size'.
2006-04-15 Michael Olson <mwolson@gnu.org>
* processes.texi (Transaction Queues): Mention the new optional
`delay-question' argument for `tq-enqueue'.
2006-04-13 Bill Wohler <wohler@newt.com>
* customize.texi (Common Keywords): Use dotted notation for
:package-version value. Specify its values. Improve documentation
for customize-package-emacs-version-alist.
2006-04-12 Bill Wohler <wohler@newt.com>
* customize.texi (Common Keywords): Move description of
customize-package-emacs-version-alist to @defvar.
2006-04-10 Bill Wohler <wohler@newt.com>
* customize.texi (Common Keywords): Add :package-version.
@ -43,8 +75,7 @@
2006-03-19 Alan Mackenzie <acm@muc.de>
* text.texi (Special Properties): Clarify the definition of
'fontified.
* text.texi (Special Properties): Clarify `fontified' property.
2006-03-16 Richard Stallman <rms@gnu.org>

View file

@ -131,25 +131,47 @@ This option specifies that the item was first introduced in Emacs
version @var{version}, or that its default value was changed in that
version. The value @var{version} must be a string.
@item :package-version '(@var{package} @var{version})
@item :package-version '(@var{package} . @var{version})
This option specifies that the item was first introduced in
@var{package} version @var{version}, or that its default value was
changed in that version. This keyword takes priority over :version.
The value of @var{package} is a symbol and @var{version} is a string.
The @var{package} and @var{version} must appear in the alist
@code{customize-package-emacs-version-alist}. This alist maps packages
to alists that map all package versions used with the
@code{:package-version} keyword to Emacs versions. Packages are
symbols and versions are strings. For example, the MH-E package
updates this alist with the following:
@code{customize-package-emacs-version-alist}. Since @var{package} must
be unique and the user might see it in an error message, a good choice
is the official name of the package, such as MH-E or Gnus.
@end table
Packages that use the @code{:package-version} keyword must also update
the @code{customize-package-emacs-version-alist} variable.
@defvar customize-package-emacs-version-alist
This alist provides a mapping for the versions of Emacs that are
associated with versions of a package listed in the
@code{:package-version} keyword. Its elements look like this:
@example
(@var{package} (@var{pversion} . @var{eversion})@dots{})
@end example
For each @var{package}, which is a symbol, there are one or more
elements that contain a package version @var{pversion} with an
associated Emacs version @var{eversion}. These versions are strings.
For example, the MH-E package updates this alist with the following:
@smallexample
(add-to-list 'customize-package-emacs-version-alist
'(MH-E ("6.0" "22.1") ("6.1" "22.1") ("7.0" "22.1")
("7.1" "22.1") ("7.2" "22.1") ("7.3" "22.1")
("7.4" "22.1") ("8.0" "22.1")))
'(MH-E ("6.0" . "22.1") ("6.1" . "22.1") ("7.0" . "22.1")
("7.1" . "22.1") ("7.2" . "22.1") ("7.3" . "22.1")
("7.4" . "22.1") ("8.0" . "22.1")))
@end smallexample
@end table
The value of @var{package} needs to be unique and it needs to match
the @var{package} value appearing in the @code{:package-version}
keyword. Since the user might see the value in a error message, a good
choice is the official name of the package, such as MH-E or Gnus.
@end defvar
@node Group Definitions
@section Defining Custom Groups

View file

@ -31,11 +31,6 @@ these functions are called in a special way (they are passed arguments,
or their values are used). The variables whose names end in
@samp{-function} have single functions as their values.
(In older Emacs versions, some normal hooks had names ending in
@samp{-hooks} or @samp{-functions}, and some abnormal hooks had names
ending in @samp{-hook}. We have renamed all of these to conform to
the above conventions.)
@c We need to xref to where each hook is documented or else document
@c it here.

View file

@ -2174,10 +2174,9 @@ An element can also look like this:
(@var{menu-title} @var{regexp} @var{index} @var{function} @var{arguments}@dots{})
@end example
Like in the previous case, each match for this element creates an
index item. However, if this index item is selected by the user, it
calls @var{function} with arguments consisting of the item name, the
buffer position, and @var{arguments}.
Each match for this element creates an index item, and when the index
item is selected by the user, it calls @var{function} with arguments
consisting of the item name, the buffer position, and @var{arguments}.
For Emacs Lisp mode, @code{imenu-generic-expression} could look like
this:

View file

@ -1508,7 +1508,7 @@ process, or it may be a TCP connection to a server, possibly on another
machine.
@end defun
@defun tq-enqueue queue question regexp closure fn
@defun tq-enqueue queue question regexp closure fn &optional delay-question
This function sends a transaction to queue @var{queue}. Specifying the
queue has the effect of specifying the subprocess to talk to.
@ -1521,6 +1521,10 @@ The argument @var{regexp} is a regular expression that should match
text at the end of the entire answer, but nothing before; that's how
@code{tq-enqueue} determines where the answer ends.
If the argument @var{delay-question} is non-nil, delay sending this
question until the process has finished replying to any previous
questions. This produces more reliable results with some processes."
The return value of @code{tq-enqueue} itself is not meaningful.
@end defun

View file

@ -86,6 +86,10 @@ upper bound and returns @code{nil}. (It would be more consistent now to
return the new position of point in that case, but some existing
programs may depend on a value of @code{nil}.)
The argument @var{noerror} only affects valid searches which fail to
find a match. Invalid arguments cause errors regardless of
@var{noerror}.
If @var{repeat} is supplied (it must be a positive number), then the
search is repeated that many times (each time starting at the end of the
previous time's match). If these successive searches succeed, the

View file

@ -56,9 +56,13 @@ distinguish your program from other Lisp programs.@footnote{The
benefits of a Common Lisp-style package system are considered not to
outweigh the costs.} Then take care to begin the names of all global
variables, constants, and functions in your program with the chosen
prefix. This helps avoid name conflicts. (Occasionally, for a command
name intended for users to use, it is cleaner if some words come
before the package name prefix.)
prefix. This helps avoid name conflicts.
Occasionally, for a command name intended for users to use, it is more
convenient if some words come before the package's name prefix. And
constructs that define functions, variables, etc., work better if they
start with @samp{defun} or @samp{defvar}, so put the name prefix later
on in the name.
This recommendation applies even to names for traditional Lisp
primitives that are not primitives in Emacs Lisp---such as

View file

@ -276,7 +276,7 @@ that Lisp avoids infinite recursion on an ill-defined function.
@code{max-lisp-eval-depth} provides another limit on depth of nesting.
@xref{Definition of max-lisp-eval-depth,, Eval}.
The default value is 600. Entry to the Lisp debugger increases the
The default value is 1000. Entry to the Lisp debugger increases the
value, if there is little room left, to make sure the debugger itself
has room to execute.
@end defvar

View file

@ -1,3 +1,7 @@
2006-04-12 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
* inc/config.h (pid_t): Define to int.
2006-02-10 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
* makefile.MPW (shortlisp, SOME_MACHINE_LISP): Sync with

View file

@ -906,7 +906,7 @@ Boston, MA 02110-1301, USA. */
/* #undef mbstate_t */
/* Define to `int' if <sys/types.h> does not define. */
/* #undef pid_t */
#define pid_t int
/* Define to any substitute for sys_siglist. */
/* #undef sys_siglist */

View file

@ -1,3 +1,54 @@
2006-04-18 J.D. Smith <jdsmith@as.arizona.edu>
* misc.texi (Shell Ring): Added notes on saved input when
navigating off the end of the history list.
2006-04-18 Chong Yidong <cyd@mit.edu>
* misc.texi (Shell Options): Correct default value of
comint-scroll-show-maximum-output.
2006-04-18 Carsten Dominik <dominik@science.uva.nl>
* org.texi: (Formula syntax): Fixed link to Calc Manual.
2006-04-17 Reiner Steib <Reiner.Steib@gmx.de>
* gnus.texi (Emacsen): Don't support Emacs 20.7 and XEmacs 21.1.
2006-04-17 Bill Wohler <wohler@newt.com>
* mh-e.texi (Folders): Updated mh-before-quit-hook and
mh-quit-hook example with code that removes the buffers rather
than just bury them.
2006-04-18 Nick Roberts <nickrob@snap.net.nz>
* building.texi (Watch Expressions): Update.
2006-04-17 Michael Albinus <michael.albinus@gmx.de>
Sync with Tramp 2.0.53.
2006-04-13 Carsten Dominik <dominik@science.uva.nl>
* org.texi: (Updating settings): New section.
(Visibility cycling): Better names for the startup folding
options.
(Exporting): Completely restructured.
(The very busy C-c C-c key): New section.
(Summary of in-buffer settings): New section.
2006-04-12 Richard Stallman <rms@gnu.org>
* search.texi: Clean up previous change.
2006-04-12 Eli Zaretskii <eliz@gnu.org>
* search.texi (Regexp Backslash, Regexp Replace): Add index
entries for ``back reference'' and mention the term itself in the
text.
2006-04-11 Richard Stallman <rms@gnu.org>
* custom.texi (Safe File Variables):

View file

@ -929,20 +929,26 @@ the new frame.
@cindex Watching expressions in GDB
@findex gud-watch
@kindex C-x C-a C-w @r{(GUD)}
If you want to see how a variable changes each time your program
stops, move point into the variable name and click on the watch icon
in the tool bar (@code{gud-watch}).
in the tool bar (@code{gud-watch}) or type @kbd{C-x C-a C-w}. If you
specify a prefix argument, you can enter the variable name in the
minibuffer.
Each watch expression is displayed in the speedbar. Complex data
types, such as arrays, structures and unions are represented in a tree
format. Leaves and simple data types show the name of the expression
and its value and, when the speedbar frame is selected, display the
type as a tooltip. Higher levels show the name, type and address
value for pointers and just the name and type otherwise.
value for pointers and just the name and type otherwise. Root expressions
also display the frame address as a tooltip to help identify the frame
in which they were defined.
To expand or contract a complex data type, click @kbd{Mouse-2}
on the tag to the left of the expression.
@kindex D @r{(GDB speedbar)}
@findex gdb-var-delete
To delete a complex watch expression, move point to the root
expression in the speedbar and type @kbd{D} (@code{gdb-var-delete}).
@ -965,9 +971,8 @@ edit its value.
@vindex gdb-use-colon-colon-notation
If the variable @code{gdb-use-colon-colon-notation} is
non-@code{nil}, Emacs uses the @samp{@var{function}::@var{variable}}
format to display variables in the speedbar. Since this does not work
for variables defined in compound statements, the default value is
@code{nil}.
format. This allows the user to display watch expressions which share
the same variable name. The default value is @code{nil}.
@vindex gdb-speedbar-auto-raise
To automatically raise the speedbar every time the display of watch

View file

@ -24870,16 +24870,17 @@ Gnus should work on:
@itemize @bullet
@item
Emacs 20.7 and up.
Emacs 21.1 and up.
@item
XEmacs 21.1 and up.
XEmacs 21.4 and up.
@end itemize
This Gnus version will absolutely not work on any Emacsen older than
that. Not reliably, at least. Older versions of Gnus may work on older
Emacs versions.
Emacs versions. Particularly, Gnus 5.10.8 should also work on Emacs
20.7 and XEmacs 21.1.
There are some vague differences between Gnus on the various
platforms---XEmacs features more graphics (a logo and a toolbar)---but

View file

@ -11,8 +11,8 @@
@set VERSION 7.93
@c Edition of the manual. It is either empty for the first edition or
@c has the form ", nth Edition" (without the quotes).
@set EDITION , 6th Edition
@set UPDATED 2006-04-02
@set EDITION , 7th Edition
@set UPDATED 2006-04-17
@set UPDATE-MONTH April, 2006
@c Other variables.
@ -3724,33 +3724,36 @@ again.
@findex mh-execute-commands
@kindex q
@vindex mh-before-quit-hook
@vindex mh-before-quit-hook, example
@vindex mh-quit-hook
@vindex mh-quit-hook, example
The two hooks @code{mh-before-quit-hook} and @code{mh-quit-hook} are
called by @kbd{q}. The former one is called before the quit occurs, so
you might use it to perform any MH-E operations; you could perform
some query and abort the quit or call @code{mh-execute-commands}, for
example. The latter is not run in an MH-E context, so you might use it
to modify the window setup. For example, if the window configuration
was saved as in the example in @ref{Miscellaneous Commands and
Options}, you would also want to set @code{mh-quit-hook} to the
following:
@c XXX Replace this with my example for killing the mail buffers.
@vindex mh-quit-hook, example
to modify the window setup. If you find that @kbd{q} buries a lot of
buffers that you would rather remove, you can use both
@code{mh-before-quit-hook} and @code{mh-quit-hook} to accomplish that.
@smalllisp
@group
(defun my-mh-quit-hook ()
"Clear window configuration variables as the MH window is gone."
(setq my-mh-screen-saved nil)
(setq my-mh-screen nil)
(if my-normal-screen
(set-window-configuration my-normal-screen))
(setq my-normal-screen nil))
(defvar my-mh-folder-buffer-to-delete nil
"Folder buffer that is being quit.")
@i{Clean up window setup in mh-quit-hook}
(defun my-mh-before-quit-hook ()
"Save folder buffer that is to be deleted."
(setq my-mh-folder-buffer-to-delete (current-buffer)))
(defun my-mh-quit-hook ()
"Kill folder buffer rather than just bury it."
(set-buffer my-mh-folder-buffer-to-delete)
(if (get-buffer mh-show-buffer)
(kill-buffer mh-show-buffer))
(kill-buffer (current-buffer)))
@i{Kill MH-Folder buffer instead of burying it}
@end group
@end smalllisp

View file

@ -967,14 +967,14 @@ current directory.
@vindex comint-scroll-to-bottom-on-input
If the variable @code{comint-scroll-to-bottom-on-input} is
non-@code{nil}, insertion and yank commands scroll the selected window
to the bottom before inserting.
to the bottom before inserting. The default is @code{nil}.
@vindex comint-scroll-show-maximum-output
If @code{comint-scroll-show-maximum-output} is non-@code{nil}, then
arrival of output when point is at the end tries to place the last line of
text at the bottom line of the window, so as to show as much useful
text as possible. (This mimics the scrolling behavior of many
terminals.) The default is @code{nil}.
text as possible. (This mimics the scrolling behavior of most
terminals.) The default is @code{t}.
@vindex comint-move-point-for-output
By setting @code{comint-move-point-for-output}, you can opt for

View file

@ -4,7 +4,7 @@
@setfilename ../info/org
@settitle Org Mode Manual
@set VERSION 4.21
@set VERSION 4.24
@set DATE April 2006
@dircategory Emacs
@ -22,8 +22,7 @@
@c Macro definitions
@c FIXME: does not look good in html
@c Subheadings inside a table. Need a difference between info and the rest.
@c Subheadings inside a table.
@macro tsubheading{text}
@ifinfo
@subsubheading \text\
@ -183,21 +182,24 @@ The weekly/daily agenda
Exporting
* ASCII export:: Export as a structured ASCII file
* HTML export:: Export as an HTML file
* iCalendar export:: Create calendar entries.
* ASCII export:: Exporting to plain ASCII
* HTML export:: Exporting to HTML
* XML export:: Exporting to XML
* iCalendar export:: Exporting in iCalendar format
* Text interpretation:: How the exporter looks at the file
HTML export
Text interpretation by the exporter
* HTML formatting:: Interpretation of the buffer content
* Export options:: How to influence exports
* Comment lines:: Lines which will not be exported
* Comment lines:: Some lines will not be exported
* Enhancing text:: Subscripts, symbols and more
* Export options:: How to influence the export settings
Miscellaneous
* Completion:: M-TAB knows what you need
* Customization:: Adapting Org-mode to your taste
* Updating settings:: How to tell Org-mode that settings have changed
* Summary of in-buffer settings:: Using special lines to set options
* The very busy C-c C-c key:: When in doubt, press C-c C-c
* Clean view:: Getting rid of leading stars in the outline
* TTY keys:: Using Org-mode on a tty
* FAQ:: Frequently asked questions
@ -451,9 +453,9 @@ per-file basis by adding one of the following lines anywhere in the
buffer:
@example
#+STARTUP: fold
#+STARTUP: nofold
#+STARTUP: overview
#+STARTUP: content
#+STARTUP: showall
@end example
@node Motion, Structure editing, Visibility cycling, Document Structure
@ -786,8 +788,8 @@ unpredictable for you, configure the variables
Convert the active region to table. If every line contains at least one
TAB character, the function assumes that the material is tab separated.
If not, lines are split at whitespace into fields. You can use a prefix
argument to indicate the minimum number of consequtive spaces required
to indentify a field separator (default: just one).@*
argument to indicate the minimum number of consecutive spaces required
to identify a field separator (default: just one).@*
If there is no active region, this command creates an empty Org-mode
table. However, it's easier to just start typing, like
@kbd{|Name|Phone|Age @key{RET} |- @key{TAB}}.
@ -982,7 +984,7 @@ it off with
The width of columns is automatically determined by the table editor.
Sometimes a single field or a few fields need to carry more text,
leading to unconveniently wide columns. To limit@footnote{This feature
leading to inconveniently wide columns. To limit@footnote{This feature
does not work on XEmacs.} the width of a column, one field anywhere in
the column must carry the string @samp{<N>} where @samp{N} is an integer
specifying the width of the column in characters. The next re-align
@ -1054,7 +1056,7 @@ A formula can be any algebraic expression understood by the Emacs
@file{calc} package. Note that @file{calc} has the slightly
non-standard convention that @samp{/} has lower precedence than
@samp{*}, so that @samp{a/b*c} is interpreted as @samp{a/(b*c)}. Before
evaluation by @code{calc-eval} (@pxref{Calling Calc from Your Lisp
evaluation by @code{calc-eval} (@pxref{Calling Calc from Your
Programs,calc-eval,Calling calc from Your Lisp Programs,calc,GNU Emacs
Calc Manual}), variable substitution takes place:
@ -2888,21 +2890,34 @@ visit org files will not be removed.
@chapter Exporting
@cindex exporting
For printing and sharing of notes, Org-mode documents can be exported
as ASCII or HTML files. To incorporate entries with associated times
like deadlines or appointments into a desktop calendar program like
iCal, Org-mode can also produce extracts in the iCalendar format.
Org-mode documents can be exported into a variety of other formats. For
printing and sharing of notes, ASCII export produces a readable and
simple version of an Org-mode file. HTML export allows to publish a
notes file on the web, while the XML format provides a solid base for
exchange with a broad range of other applications. To incorporate
entries with associated times like deadlines or appointments into a
desktop calendar program like iCal, Org-mode can also produce extracts
in the iCalendar format. Currently Org-mode only supports export, not
import of these different formats.
When exporting, Org-mode uses special conventions to enrich the output
produced. @xref{Text interpretation}, for more details.
@menu
* ASCII export:: Export as a structured ASCII file
* HTML export:: Export as an HTML file
* iCalendar export:: Create calendar entries.
* ASCII export:: Exporting to plain ASCII
* HTML export:: Exporting to HTML
* XML export:: Exporting to XML
* iCalendar export:: Exporting in iCalendar format
* Text interpretation:: How the exporter looks at the file
@end menu
@node ASCII export, HTML export, Exporting, Exporting
@section ASCII export
@cindex ASCII export
ASCII export produces an simple and very readable version of an Org-mode
file.
@cindex region, active
@cindex active region
@cindex transient-mark-mode
@ -2926,11 +2941,9 @@ at a different level, specify it with a prefix argument. For example,
@end example
@noindent
creates only top level headlines and does the rest as items. Lines
starting with @samp{#} and subtrees starting with the word @samp{COMMENT}
will not be exported.
creates only top level headlines and does the rest as items.
@node HTML export, iCalendar export, ASCII export, Exporting
@node HTML export, XML export, ASCII export, Exporting
@section HTML export
@cindex HTML export
@ -2948,12 +2961,6 @@ Export as HTML file @file{myfile.html}.
@kindex C-c C-x b
@item C-c C-x b
Export as HTML file and open it with a browser.
@kindex C-c C-x t
@item C-c C-x t
Insert template with export options, see below.
@kindex C-c :
@item C-c :
Toggle fixed-width for entry (QUOTE) or region, see below.
@end table
@cindex headline levels, for exporting
@ -2969,118 +2976,10 @@ at a different level, specify it with a prefix argument. For example,
@noindent
creates two levels of headings and does the rest as items.
@menu
* HTML formatting:: Interpretation of the buffer content
* Export options:: How to influence exports
* Comment lines:: Lines which will not be exported
@end menu
@node HTML formatting, Export options, HTML export, HTML export
@subsection HTML formatting
Not all text is transferred literally to the exported HTML file. The
exporter implements the following interpretation:
@itemize @bullet
@cindex hand-formatted lists
@cindex lists, hand-formatted
@item
Hand-formatted lists with @samp{-}, @samp{*} or @samp{+} as
bullet, or with @samp{1.} or @samp{2)} as enumerator will be recognized and
transformed into HTML lists. See @xref{Plain Lists}.
@cindex underlined text
@cindex bold text
@cindex italic text
@item
You can make words @b{*bold*}, @i{/italic/}, and _underlined_
@cindex @TeX{} interpretation
@item
Simple @TeX{}-like math constructs are interpreted:
@cindex completion, of @TeX{} symbols
@itemize @minus
@item
@samp{10^22} and @samp{J_n} are super- and subscripts. You can quote
@samp{^} and @samp{_} with a backslash: @samp{\_} and @samp{\^}
@item
@samp{\alpha} indicates a Greek letter, @samp{\to} an arrow. You can
use completion for these macros, just type @samp{\} and maybe a few
letters, and press @kbd{M-@key{TAB}} to see possible completions.
@end itemize
@cindex tables, export to HTML
@item
Tables are transformed into HTML tables. Data fields before the first
horizontal separator line will be formatted as table header fields.
@cindex fixed width
@item
If a headline starts with the word @samp{QUOTE}, the text below the
headline will be typeset as fixed-width, to allow quoting of computer
codes etc. Lines starting with @samp{:} are also typeset in
fixed-width font.
@cindex HTML tags
@item
If you want to include HTML tags which should be interpreted as such,
mark them with a @samp{@@} like in @samp{@@<b>bold text@@</b>}.
Plain @samp{<} and @samp{>} are always transformed to @samp{&lt;} and
@samp{&gt;} in HTML export.
@end itemize
If these conversions conflict with your habits of typing ASCII text,
they can all be turned off with corresponding variables.
@node Export options, Comment lines, HTML formatting, HTML export
@subsection Export options
@cindex options, for export
@cindex completion, of option keywords
The exporter recognizes special lines in the buffer which provide
additional information. These lines may be put anywhere in the file.
The whole set of lines can be inserted into the buffer with @kbd{C-c
C-x t}. For individual lines, a good way to make sure the keyword is
correct is to type @samp{#+} and then use @kbd{M-@key{TAB}} completion
(@pxref{Completion}).
@example
#+TITLE: the title to be shown (default is the buffer name)
#+AUTHOR: the author (default taken from @code{user-full-name})
#+EMAIL: his/her email address (default from @code{user-mail-address})
#+LANGUAGE: language for HTML, e.g. @samp{en} (@code{org-export-default-language})
#+TEXT: Some descriptive text to be inserted at the beginning.
#+TEXT: Several lines may be given.
#+OPTIONS: H:2 num:t toc:t \n:nil @:t ::t |:t ^:t *:nil TeX:t
@end example
@noindent
The OPTIONS line is a compact form to specify export settings. Here
you can:
@cindex headline levels
@cindex section-numbers
@cindex table of contents
@cindex linebreak preservation
@cindex quoted html tags
@cindex fixed-width sections
@cindex tables
@cindex @TeX{}-like syntax for sub- and superscripts
@cindex emphasized text
@cindex @TeX{} macros
@example
H: @r{set the number of headline levels for export}
num: @r{turn on/off section-numbers}
toc: @r{turn on/off table of contents}
\n: @r{turn on/off linebreak-preservation}
@@: @r{turn on/off quoted html tags}
:: @r{turn on/off fixed-width sections}
|: @r{turn on/off tables}
^: @r{turn on/off @TeX{}-like syntax for sub- and superscripts.}
*: @r{turn on/off emphasized text (bold, italic, underlined)}
TeX: @r{turn on/off @TeX{} macros}
@end example
You can also give style information for the exported file. The
default specification can be configured through the option
@ -3100,28 +2999,25 @@ end of the outline tree. For example:
@end example
Remember to execute @kbd{M-x normal-mode} after changing this to make
the new style visible to Emacs. This command reastarts org-mode for the
current buffer and forces Emacs to re-evaluate the loval variables
the new style visible to Emacs. This command restarts org-mode for the
current buffer and forces Emacs to re-evaluate the local variables
section in the buffer.
@node Comment lines, , Export options, HTML export
@subsection Comment lines
@cindex comment lines
@cindex exporting, not
@node XML export, iCalendar export, HTML export, Exporting
@section XML export
@cindex XML export
Lines starting with @samp{#} in column zero are treated as comments
and will never be exported. Also entire subtrees starting with the
word @samp{COMMENT} will never be exported. Finally, any text before
the first headline will not be exported either. This applies also for
ASCII export.
Org-mode contains an XML exporter that produces XOXO-style XML.
Currently, this exporter only handles the general outline structure and
does not interpret any additional Org-mode features.
@table @kbd
@kindex C-c ;
@item C-c ;
Toggle the COMMENT keyword at the beginning of an entry.
@kindex C-c C-x C-x
@item C-c C-x C-x
Export as XML file @file{myfile.xml}.
@end table
@node iCalendar export, , HTML export, Exporting
@node iCalendar export, Text interpretation, XML export, Exporting
@section iCalendar export
@cindex iCalendar export
@ -3170,13 +3066,164 @@ to make iCal re-read the calendar files each time a new version of
"osascript -e 'tell application \"iCal\" to reload calendars'")))
@end lisp
@node Text interpretation, , iCalendar export, Exporting
@section Text interpretation by the exporter
The exporter backends interpret additional structure in the Org-mode file
in order to produce better output.
@menu
* Comment lines:: Some lines will not be exported
* Enhancing text:: Subscripts, symbols and more
* Export options:: How to influence the export settings
@end menu
@node Comment lines, Enhancing text, Text interpretation, Text interpretation
@subsection Comment lines
@cindex comment lines
@cindex exporting, not
Lines starting with @samp{#} in column zero are treated as comments
and will never be exported. Also entire subtrees starting with the
word @samp{COMMENT} will never be exported. Finally, any text before
the first headline will not be exported either.
@table @kbd
@kindex C-c ;
@item C-c ;
Toggle the COMMENT keyword at the beginning of an entry.
@end table
@node Enhancing text, Export options, Comment lines, Text interpretation
@subsection Enhancing text for export
@cindex enhancing text
@cindex richer text
Some of the export backends of Org-mode allow for sophisticated text
formatting, this is true in particular for the HTML backend. Org-mode
has a number of typing conventions that allow to produce a richly
formatted output.
@itemize @bullet
@cindex hand-formatted lists
@cindex lists, hand-formatted
@item
Plain lists @samp{-}, @samp{*} or @samp{+} as bullet, or with @samp{1.}
or @samp{2)} as enumerator will be recognized and transformed if the
backend supports lists. See @xref{Plain Lists}.
@cindex underlined text
@cindex bold text
@cindex italic text
@item
You can make words @b{*bold*}, @i{/italic/}, and _underlined_
@cindex @TeX{} interpretation
@item
Simple @TeX{}-like math constructs are interpreted:
@cindex completion, of @TeX{} symbols
@itemize @minus
@item
@samp{10^22} and @samp{J_n} are super- and subscripts. You can quote
@samp{^} and @samp{_} with a backslash: @samp{\_} and @samp{\^}
@item
@samp{\alpha} indicates a Greek letter, @samp{\to} an arrow. You can
use completion for these macros, just type @samp{\} and maybe a few
letters, and press @kbd{M-@key{TAB}} to see possible completions.
@end itemize
@cindex tables, export
@item
Tables are transformed into native tables under the exporter, if the
export backend supports this. Data fields before the first horizontal
separator line will be formatted as table header fields.
@cindex fixed width
@item
If a headline starts with the word @samp{QUOTE}, the text below the
headline will be typeset as fixed-width, to allow quoting of computer
codes etc. Lines starting with @samp{:} are also typeset in
fixed-width font.
@table @kbd
@kindex C-c :
@item C-c :
Toggle fixed-width for entry (QUOTE) or region, see below.
@end table
@end itemize
If these conversions conflict with your habits of typing ASCII text,
they can all be turned off with corresponding variables (see the
customization group @code{org-export-general}, and the following section
which explains how to set export options with special lines in a
buffer.
@node Export options, , Enhancing text, Text interpretation
@subsection Export options
@cindex options, for export
@cindex completion, of option keywords
The exporter recognizes special lines in the buffer which provide
additional information. These lines may be put anywhere in the file.
The whole set of lines can be inserted into the buffer with @kbd{C-c
C-x t}. For individual lines, a good way to make sure the keyword is
correct is to type @samp{#+} and then use @kbd{M-@key{TAB}} completion
(@pxref{Completion}).
@table @kbd
@kindex C-c C-x t
@item C-c C-x t
Insert template with export options, see example below.
@end table
@example
#+TITLE: the title to be shown (default is the buffer name)
#+AUTHOR: the author (default taken from @code{user-full-name})
#+EMAIL: his/her email address (default from @code{user-mail-address})
#+LANGUAGE: language for HTML, e.g. @samp{en} (@code{org-export-default-language})
#+TEXT: Some descriptive text to be inserted at the beginning.
#+TEXT: Several lines may be given.
#+OPTIONS: H:2 num:t toc:t \n:nil @:t ::t |:t ^:t *:nil TeX:t
@end example
@noindent
The OPTIONS line is a compact form to specify export settings. Here
you can:
@cindex headline levels
@cindex section-numbers
@cindex table of contents
@cindex linebreak preservation
@cindex quoted html tags
@cindex fixed-width sections
@cindex tables
@cindex @TeX{}-like syntax for sub- and superscripts
@cindex emphasized text
@cindex @TeX{} macros
@example
H: @r{set the number of headline levels for export}
num: @r{turn on/off section-numbers}
toc: @r{turn on/off table of contents}
\n: @r{turn on/off linebreak-preservation}
@@: @r{turn on/off quoted html tags}
:: @r{turn on/off fixed-width sections}
|: @r{turn on/off tables}
^: @r{turn on/off @TeX{}-like syntax for sub- and superscripts.}
*: @r{turn on/off emphasized text (bold, italic, underlined)}
TeX: @r{turn on/off @TeX{} macros}
@end example
@node Miscellaneous, Index, Exporting, Top
@chapter Miscellaneous
@menu
* Completion:: M-TAB knows what you need
* Customization:: Adapting Org-mode to your taste
* Updating settings:: How to tell Org-mode that settings have changed
* Summary of in-buffer settings:: Using special lines to set options
* The very busy C-c C-c key:: When in doubt, press C-c C-c
* Clean view:: Getting rid of leading stars in the outline
* TTY keys:: Using Org-mode on a tty
* FAQ:: Frequently asked questions
@ -3229,7 +3276,7 @@ Elsewhere, complete dictionary words using ispell.
@end table
@node Customization, Updating settings, Completion, Miscellaneous
@node Customization, Summary of in-buffer settings, Completion, Miscellaneous
@section Customization
@cindex customization
@cindex options, for customization
@ -3239,43 +3286,112 @@ There are more than 100 variables that can be used to customize
Org-mode. For the sake of compactness of the manual, we are not
describing the variables here. A structured overview of customization
variables is available with @kbd{M-x org-customize}. Or select
@code{Browse Org Group} from the @code{Org->Customization} menu.
@code{Browse Org Group} from the @code{Org->Customization} menu. Many
settings can also be activated on a per-file basis, by putting special
lines into the buffer (@pxref{Summary of in-buffer settings}).
@node Updating settings, Clean view, Customization, Miscellaneous
@section Updating settings after changes
@cindex updating, after setting changes
@node Summary of in-buffer settings, The very busy C-c C-c key, Customization, Miscellaneous
@section Summary of in-buffer settings
@cindex in-buffer settings
@cindex special keywords
Org-mode uses special lines in the buffer to define settings on a
per-file basis. These lines start with a @samp{#+} followed by a
keyword, a colon, and then individual words defining a setting. Several
settings words con be in the same line, but you can also have multiple
lines for the keyword. While these settings are described throughout
the manual, here is a summary. After changing any of those lines in the
buffer, press @kbd{C-c C-c} with the cursor still in the line to
activate the changes immediately. Otherwise they become effective only
when the file is visited again in a new Emacs session.
@table @kbd
@item #+STARTUP:
This line sets options to be used at startup of org-mode, when an
Org-mode file is being visited. The first set of options deals with the
initial visibility of the outline tree. The corresponding variable for
global default settings is @code{org-startup-folded}, with a default
value @code{t}, which means @code{overview}.
@example
overview @r{top-level headlines only}
content @r{all headlines}
showall @r{no folding at all, show everything}
@end example
Then there are options for aligning tables upon visiting a file. This
is useful in files containing narrowed table columns. The corresponding
variable is @code{org-startup-align-all-tables}, with a default value
@code{nil}.
@example
align @r{align all tables}
noalign @r{don't align table on startup}
@end example
Here are the options for hiding leading stars in outline headings. The
corresponding variables are @code{org-hide-leading-stars} and
@code{org-odd-levels-only}, both with a default setting @code{nil}
(meaning @code{showstars} and @code{oddeven}).
@example
hidestars @r{make all but one of the stars starting a headline invisible.}
showstars @r{show all stars starting a headline}
odd @r{allow only odd outline levels (1,3,...)}
oddeven @r{allow all outline levels}
@end example
@item #+SEQ_TODO: #+TYP_TODO:
These lines that the TODO keywords and their interpretation in the
current file. The corresponding variables are @code{org-todo-keywords}
and @code{org-todo-interpretation}.
@item #+CATEGORY:
This line sets the category for the agenda file. The category applies
for all subsequent lines until the next @samp{#+CATEGORY} line, or the
end of the file.
@item #+TBLFM:
This line contains the formulas for the table directly above the line.
@item #+TITLE:, #+AUTHOR:, #+EMAIL:, #+LANGUAGE:, #+TEXT:, #+OPTIONS:
These line provide setting for exporting files. For more details see
@ref{Export options}.
@end table
@node The very busy C-c C-c key, Clean view, Summary of in-buffer settings, Miscellaneous
@section The very busy C-c C-c key
@kindex C-c C-c
Org-mode uses special lines in the buffer to set file-local values for a
number of user options. When such settings are changed, you need to
inform Org-mode that something has be modified and that it should
recheck the buffer for setting. This is done with the command @kbd{C-c
C-c} in the following situations:
The key @kbd{C-c C-c} has many purposes in org-mode, which are all
mentioned scattered throughout this manual. One specific function of
this key is to add @emph{tags} to a headline (@pxref{Tags}). In many
other circumstances it means something like @emph{Hey Org-mode, look
here and update according to what you see here}. Here is a summary what
this means in different contexts.
@itemize @bullet
@itemize @minus
@c @item
@c If the cursor is in a headline, prompt for tags and insert them
@c into the current line, aligned to `org-tags-column'. When called
@c with prefix arg, realign all tags in the current buffer.
@item
After changing any of the special buffer lines starting with @samp{#+},
for example @samp{#+STARTUP}, @samp{#+CATEGORY}. Org-mode will then
read these settings and activate them (see @ref{Visibility cycling},
@ref{Narrow columns}, @ref{Clean view}, @ref{Per file keywords},
@ref{Categories})
If the cursor is in one of the special #+KEYWORD lines, this
triggers scanning the buffer for these lines and updating the
information.
@item
After editing by hand a @samp{#+TBLFM} line containing formulas for a
table. When pressing @kbd{C-c C-c} in that line, all formulas are
re-applied to the entire table (@pxref{Editing/debugging formulas}).
If the cursor is inside a table, realign the table. This command
works even if the automatic table editor has been turned off.
@item
In a table, @kbd{C-c C-c} does force a re-align, even if the table
editor is turned off (@pxref{Built-in table editor})
If the cursor is on a #+TBLFM line, re-apply the formulas to
the entire table.
@item
In an ordered plain list, @kbd{C-c C-c} forces a renumbering of the list
(@pxref{Plain Lists}).
If the cursor is inside a table created by the @file{table.el} package,
activate that table.
@item
After adding a new radio target @samp{<<<New target>>>}, @kbd{C-c C-c}
must be used with the cursor on that target to activate it throughout
the buffer.
If the current buffer is a remember buffer, close note and file it.
with a prefix argument, file it without further interaction to the default
location.
@item
If the cursor is on a <<<target>>>, update radio targets and corresponding
links in this buffer.
@item
If the cursor is on a numbered item in a plain list, renumber the
ordered list.
@end itemize
@node Clean view, TTY keys, Updating settings, Miscellaneous
@node Clean view, TTY keys, The very busy C-c C-c key, Miscellaneous
@section A cleaner outline view
@cindex hiding leading stars
@cindex clean outline view
@ -3371,12 +3487,10 @@ activate changes immediately).
#+STARTUP: oddeven
@end example
You can convert an Org-mode file from single-star-per-level to
the double-star-per-level convention with @kbd{M-x org-convert-to-odd-levels
RET} in that file. There is no command for the back conversion because
such a command might merge levels and in this way destroy the
structure of the tree.
@c FIXME: Maybe we should have such a command...
You can convert an Org-mode file from single-star-per-level to the
double-star-per-level convention with @kbd{M-x org-convert-to-odd-levels
RET} in that file. The reverse operation is @kbd{M-x
org-convert-to-oddeven-levels}.
@node TTY keys, FAQ, Clean view, Miscellaneous
@section Using org-mode on a tty
@ -3448,8 +3562,8 @@ attached to the old style using angular brackets and no hiding of the
link text. Please give them back to me, don't tell me it is not
possible!}@*
@c
Would I let you down like that? If you must (even if I don't understand
why), you can do this
Would I let you down like that? If you must, you can do this
@lisp
(setq org-link-style 'plain
org-link-format "<%s>")
@ -3574,12 +3688,14 @@ You may also select specific files with
&%%(org-diary) ~/path/to/another/org-file.org
@end example
If you now launch the calendar and press @kbd{d} to display a diary,
the headlines of entries containing a timestamp, date range, schedule,
or deadline referring to the selected date will be listed. Just like
in Org-mode's agenda view, the diary for @emph{today} contains
additional entries for overdue deadlines and scheduled items. See
also the documentation of the @command{org-diary} function.
If you now launch the calendar and press @kbd{d} to display a diary, the
headlines of entries containing a timestamp, date range, schedule, or
deadline referring to the selected date will be listed. Just like in
Org-mode's agenda view, the diary for @emph{today} contains additional
entries for overdue deadlines and scheduled items. See also the
documentation of the @command{org-diary} function. Under XEmacs, it is
not possible to jump back from the diary to the org, this works only in
the agenda buffer.
@end enumerate
@ -3594,9 +3710,9 @@ Org-mode can cooperate with the following packages:
@item @file{org-mouse.el} by Piotr Zielinski
This package implements extended mouse functionality for Org-mode. It
allows you to cycle visibility and to edit the document structure with
the mouse. It also provides a context-sensitive menu that changes
depending on the context of a mouse-click. Use a search engine to find
this package on the web.
the mouse. Best of all, it provides a context-sensitive menu on
@key{mouse-3} that changes depending on the context of a mouse-click.
Use a search engine to find this package on the web.
@cindex @file{table.el}
@item @file{table.el} by Takaaki Ota
Org mode cooperates with table.el, see @ref{table.el}. @file{table.el}
@ -3687,12 +3803,6 @@ Recalculating a table line applies the formulas from left to right.
If a formula uses @emph{calculated} fields further down the row,
multiple recalculation may be needed to get all fields consistent.
@item
Under XEmacs, if Org-mode entries are included into the diary, it is
not possible to jump back from the diary to the org file. Apparently,
the text properties are lost when the fancy-diary-display is used.
However, from Org-mode's timeline and agenda buffers (created with
@kbd{C-c C-r} and @kbd{C-c a}), things do work correctly.
@item
You can only make a single word boldface or italic. To emphasize
several words in a row, each must have the emphasize markers, like in
@samp{*three* *bold* *words*}.
@ -3725,6 +3835,8 @@ specified time.
@item
Sacha Chua suggested to copy some linking code from Planner.
@item
Kees Dullemond inspired the use of narrowed tabled columns.
@item
Christian Egli converted the documentation into TeXInfo format, patched
CSS formatting into the HTML exporter, and inspired the agenda.
@item

View file

@ -750,8 +750,10 @@ can add groups for syntactic purposes without interfering with
the numbering of the groups that are meant to be referred to.
@item \@var{d}
@cindex back reference, in regexp
matches the same text that matched the @var{d}th occurrence of a
@samp{\( @dots{} \)} construct.
@samp{\( @dots{} \)} construct. This is called a @dfn{back
reference}.
After the end of a @samp{\( @dots{} \)} construct, the matcher remembers
the beginning and end of the text matched by that construct. Then,
@ -1002,15 +1004,17 @@ any match for a specified pattern.
Replace every match for @var{regexp} with @var{newstring}.
@end table
@cindex back reference, in regexp replacement
In @code{replace-regexp}, the @var{newstring} need not be constant:
it can refer to all or part of what is matched by the @var{regexp}.
@samp{\&} in @var{newstring} stands for the entire match being
replaced. @samp{\@var{d}} in @var{newstring}, where @var{d} is a
digit, stands for whatever matched the @var{d}th parenthesized
grouping in @var{regexp}. @samp{\#} refers to the count of
replacements already made in this command, as a decimal number. In
the first replacement, @samp{\#} stands for @samp{0}; in the second,
for @samp{1}; and so on. For example,
grouping in @var{regexp}. (This is called a ``back reference''.)
@samp{\#} refers to the count of replacements already made in this
command, as a decimal number. In the first replacement, @samp{\#}
stands for @samp{0}; in the second, for @samp{1}; and so on. For
example,
@example
M-x replace-regexp @key{RET} c[ad]+r @key{RET} \&-safe @key{RET}

View file

@ -4,7 +4,7 @@
@c In the Tramp CVS, the version number is auto-frobbed from
@c configure.ac, so you should edit that file and run
@c "autoconf && ./configure" to change the version number.
@set trampver 2.0.52
@set trampver 2.0.53
@c Other flags from configuration
@set prefix /usr/local

View file

@ -1,3 +1,194 @@
2006-04-18 Richard Stallman <rms@gnu.org>
* xmenu.c (restore_menu_items, save_menu_items): New fns.
(set_frame_menubar): Use save_menu_items. Save updated vector in
the frame before unwinding it. Don't use unuse_menu_items. Don't
use discard_menu_items.
(digest_single_submenu): Abort if an item is not in a pane.
(init_menu_items): Put the error check at the top.
* keymap.c (describe_map): Make "shadowed" warning more verbose.
* window.c (adjust_window_trailing_edge): Correctly distinguish
series vs parallel cases, even when window has no parent.
* abbrev.c (record_symbol): New function.
(Finsert_abbrev_table_description): Sort the abbrevs alphabetically.
2006-04-18 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
* image.c (x_create_bitmap_from_data) [MAC_OS]: Don't check return
value of xmalloc.
* mac.c (mac_coerce_file_name_ptr, mac_coerce_file_name_desc)
(create_apple_event_from_event_ref, xrm_get_preference_database)
(cfstring_create_normalized): Don't check return value of xmalloc.
* macselect.c (get_scrap_target_type_list, defer_apple_events)
(copy_scrap_flavor_data, mac_handle_service_event): Don't check
return value of xmalloc/xrealloc.
* macterm.c (XCreateGC, x_per_char_metric, xlfdpat_create)
(init_font_name_table, init_font_name_table, mac_do_list_fonts)
(XLoadQueryFont, mac_store_apple_event): Don't check
return value of xmalloc.
2006-04-17 Kim F. Storm <storm@cua.dk>
* window.c (coordinates_in_window): On the vertical border,
calculate the row number measured from the top of the window, not
the top of the frame.
(window_loop): Test w->dedicated with !NILP instead of EQ Qt.
(window_scroll_pixel_based): Fix off-by-one bug in 2002-12-23 change.
2006-04-16 Eli Zaretskii <eliz@gnu.org>
* s/ms-w32.h (SYSTEM_PURESIZE_EXTRA): Reduce to 24000.
2006-04-16 Romain Francoise <romain@orebokech.com>
* puresize.h (BASE_PURESIZE): Decrement back to 1200000.
2006-04-16 Andreas Schwab <schwab@suse.de>
* puresize.h (PURESIZE_RATIO): Reduce to 10/6.
2006-04-15 Romain Francoise <romain@orebokech.com>
* puresize.h (BASE_PURESIZE): Increment to 1210000.
2006-04-13 Micha,Ak(Bl Cadilhac <michael.cadilhac@lrde.org> (tiny change)
* print.c (Fprin1_to_string): Mention in the `doc' that the
behavior is modified by `print-level' and `print-length'.
2006-04-13 Kenichi Handa <handa@m17n.org>
* coding.c (setup_coding_system): If eol-type is not yet decided
and system_eol_type is not LF, set CODING_REQUIRE_ENCODING_MASK.
If coding_system is nil, return 0.
(code_convert_region1): Even if coding_system is nil, don't skip
conversion if system_eol_type is not LF.
(code_convert_string1): Likewise.
(code_convert_string_norecord): Likewise.
2006-04-13 Kenichi Handa <handa@m17n.org>
* coding.c (setup_coding_system): Fix previous change.
(encode_coding): If eol_type is not yet decided, use
system_eol_type.
(shrink_encoding_region): If eol_type is not yet decided and
system_eol_type is not LF, don't shrink.
2006-04-13 Nick Roberts <nickrob@snap.net.nz>
* xdisp.c (note_mouse_highlight): Add help echo for dragging vertical
line.
2006-04-12 Richard Stallman <rms@gnu.org>
* keyboard.c (read_key_sequence): Explicitly avoid keybuf[-1].
* process.c (conv_lisp_to_sockaddr): If FAMILY unknown, just return.
(Fprocess_send_eof): Abort if fail to open null device.
2006-04-12 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
* fns.c [HAVE_MENUS && MAC_OS]: Include macterm.h.
* image.c [MAC_OS] (xpm_load_image): Add parentheses around
assignment used as truth value. Add explicit braces to avoid
ambiguous `else'.
[MAC_OS] (gif_load): Remove unused variable `gcpro1'.
* lisp.h (syms_of_fontset, Fset_fontset_font): Put extern and
EXFUN in #ifdef HAVE_WINDOW_SYSTEM.
(syms_of_xfns, syms_of_xsmfns, syms_of_xselect, syms_of_xterm):
Put externs in #ifdef HAVE_X_WINDOWS.
(syms_of_macfns, syms_of_macselect, syms_of_macterm)
(syms_of_macmenu, syms_of_mac) [MAC_OS]: Add externs.
(init_mac_osx_environment) [MAC_OSX]: Add extern.
* mac.c (init_process): Remove undef.
(select) [MAC_OSX]: Undefine before including sysselect.h.
(posix_pathname_to_fsspec, fsspec_to_posix_pathname) [MAC_OSX]:
Remove functions and prototypes.
(parse_value): Add parentheses around + inside shift.
(path_from_vol_dir_name): Make static.
(get_temp_dir_name): Remove unused variables `cpb' and `dir_name'.
[!MAC_OSX] (get_path_to_system_folder): Likewise.
(Fmac_get_file_creator, Fmac_get_file_type): Remove unused
variable `cCode'.
(Fmac_coerce_ae_data): Remove unused variables `fref' and `fs'.
(Fmac_get_preference): Add explicit braces to avoid ambiguous `else'.
* macfns.c (x_to_mac_color): Remove unused variable `tail'.
(x_set_mouse_color): Remove unused variable `dpy'.
(Fx_create_frame): Remove unused variable `x_frame_count'.
(Fx_server_version): Add explicit braces to avoid ambiguous `else'.
(x_sync): Move from macterm.c.
(Fx_file_dialog): Remove unused variable `default_filter_index'.
* macmenu.c (min_menu_id): Make element type explicit.
* macselect.c (get_flavor_type_from_symbol): Remove unused
variable `val'.
(get_scrap_private_timestamp, x_get_foreign_selection)
(copy_scrap_flavor_data): Add explicit braces to avoid ambiguous `else'.
(Fmac_process_deferred_apple_events): Remove unused variables
`keyword', `reply', `apple_event', `count', and `err'.
* macterm.c: Don't include gnu.h.
(x_io_error_quitter, x_draw_image_foreground_1): Remove prototypes.
(x_sync): Move to macfns.c.
[USE_CG_DRAWING] (mac_define_fringe_bitmap): Remove unused
variable `mask_bits'.
(mac_compute_glyph_string_overhangs): Avoid ambiguous `else'.
(x_draw_image_glyph_string): Remove unused variable `pixmap'.
(x_mac_to_emacs_modifiers): Remove function.
(XTset_vertical_scroll_bar, mac_handle_visibility_change)
(x_make_frame_visible, xlfdpat_create, mac_handle_command_event):
Add explicit braces to avoid ambiguous `else'.
(x_make_frame_visible): Remove unused variables `type',
`original_top', and `original_left'.
(mac_do_list_fonts, XTread_socket): Add parentheses around && within ||.
(x_load_font): Remove unused variables `full_name', and `value'.
(do_get_menus, do_init_managers, do_check_ram_size) [!MAC_OS8]:
Remove functions.
(do_zoom_window): Reorganize variables with respect to conditionals.
(init_command_handler): Remove unused variable `err'.
[MAC_OSX] (mac_check_bundle): Remove unused variable `child'.
* macterm.h (x_set_mouse_position, x_set_mouse_pixel_position)
(x_make_frame_invisible, x_iconify_frame, x_free_frame_resources)
(x_destroy_window, x_wm_set_size_hint, x_delete_display, XFreeGC)
(do_menu_choice, have_menus_p, x_real_positions)
(x_set_menu_bar_lines, x_pixel_width, x_pixel_height, x_char_width)
(x_char_height, x_sync, x_set_tool_bar_lines, x_activate_menubar)
(free_frame_menubar): Add externs.
* unexmacosx.c: Include config.h before using HAVE_MALLOC_MALLOC_H.
(malloc, realloc, free): Add undefs.
(read_load_commands): Remove unused variable `n' and `j'.
(copy_data_segment): Remove unused variable `r'.
* xdisp.c (get_glyph_string_clip_rects): Add parentheses around &&
within ||. Add explicit braces to avoid ambiguous `else'.
(dump_glyph_row): Remove label for `inverse_p' from legend.
* xfaces.c (Finternal_merge_in_global_face, try_font_list): Add
explicit braces to avoid ambiguous `else'.
2006-04-11 Micha,Ak(Bl Cadilhac <michael.cadilhac@lrde.org> (tiny change)
* dispnew.c (init_display): Don't init X display if the user asked
for a non-X display.
2006-04-12 Kenichi Handa <handa@m17n.org>
* coding.c (setup_coding_system): Use system_eol_type for default
coding->eol_type.
2006-04-11 Dan Nicolaescu <dann@ics.uci.edu>
* lisp.h (wrong_type_argument): Mark as NO_RETURN.

View file

@ -531,6 +531,13 @@ describe_abbrev (sym, stream)
Fterpri (stream);
}
static void
record_symbol (sym, list)
Lisp_Object sym, list;
{
XSETCDR (list, Fcons (sym, XCDR (list)));
}
DEFUN ("insert-abbrev-table-description", Finsert_abbrev_table_description,
Sinsert_abbrev_table_description, 1, 2, 0,
doc: /* Insert before point a full description of abbrev table named NAME.
@ -546,6 +553,7 @@ READABLE is non-nil, they are listed. */)
Lisp_Object name, readable;
{
Lisp_Object table;
Lisp_Object symbols;
Lisp_Object stream;
CHECK_SYMBOL (name);
@ -554,12 +562,22 @@ READABLE is non-nil, they are listed. */)
XSETBUFFER (stream, current_buffer);
symbols = Fcons (Qnil, Qnil);
map_obarray (table, record_symbol, symbols);
symbols = XCDR (symbols);
symbols = Fsort (symbols, Qstring_lessp);
if (!NILP (readable))
{
insert_string ("(");
Fprin1 (name, stream);
insert_string (")\n\n");
map_obarray (table, describe_abbrev, stream);
while (! NILP (symbols))
{
describe_abbrev (XCAR (symbols), stream);
symbols = XCDR (symbols);
}
insert_string ("\n\n");
}
else
@ -567,7 +585,11 @@ READABLE is non-nil, they are listed. */)
insert_string ("(define-abbrev-table '");
Fprin1 (name, stream);
insert_string (" '(\n");
map_obarray (table, write_abbrev, stream);
while (! NILP (symbols))
{
write_abbrev (XCAR (symbols), stream);
symbols = XCDR (symbols);
}
insert_string (" ))\n\n");
}

View file

@ -3603,6 +3603,8 @@ setup_coding_system (coding_system, coding)
{
coding->eol_type = CODING_EOL_UNDECIDED;
coding->common_flags = CODING_REQUIRE_DETECTION_MASK;
if (system_eol_type != CODING_EOL_LF)
coding->common_flags |= CODING_REQUIRE_ENCODING_MASK;
}
else if (XFASTINT (eol_type) == 1)
{
@ -3918,9 +3920,12 @@ setup_coding_system (coding_system, coding)
coding->type = coding_type_no_conversion;
coding->category_idx = CODING_CATEGORY_IDX_BINARY;
coding->common_flags = 0;
coding->eol_type = CODING_EOL_LF;
coding->eol_type = NILP (coding_system) ? system_eol_type : CODING_EOL_LF;
if (coding->eol_type != CODING_EOL_LF)
coding->common_flags
|= CODING_REQUIRE_DECODING_MASK | CODING_REQUIRE_ENCODING_MASK;
coding->pre_write_conversion = coding->post_read_conversion = Qnil;
return -1;
return NILP (coding_system) ? 0 : -1;
}
/* Free memory blocks allocated for storing composition information. */
@ -4994,6 +4999,8 @@ encode_coding (coding, source, destination, src_bytes, dst_bytes)
coding->consumed = coding->consumed_char = 0;
coding->errors = 0;
coding->result = CODING_FINISH_NORMAL;
if (coding->eol_type == CODING_EOL_UNDECIDED)
coding->eol_type = system_eol_type;
switch (coding->type)
{
@ -5250,6 +5257,8 @@ shrink_encoding_region (beg, end, coding, str)
if (coding->type == coding_type_ccl
|| coding->eol_type == CODING_EOL_CRLF
|| coding->eol_type == CODING_EOL_CR
|| (coding->eol_type == CODING_EOL_UNDECIDED
&& system_eol_type != CODING_EOL_LF)
|| (coding->cmp_data && coding->cmp_data->used > 0))
{
/* We can't skip any data. */
@ -7105,7 +7114,7 @@ code_convert_region1 (start, end, coding_system, encodep)
from = XFASTINT (start);
to = XFASTINT (end);
if (NILP (coding_system))
if (NILP (coding_system) && system_eol_type == CODING_EOL_LF)
return make_number (to - from);
if (setup_coding_system (Fcheck_coding_system (coding_system), &coding) < 0)
@ -7160,7 +7169,7 @@ code_convert_string1 (string, coding_system, nocopy, encodep)
CHECK_STRING (string);
CHECK_SYMBOL (coding_system);
if (NILP (coding_system))
if (NILP (coding_system) && system_eol_type == CODING_EOL_LF)
return (NILP (nocopy) ? Fcopy_sequence (string) : string);
if (setup_coding_system (Fcheck_coding_system (coding_system), &coding) < 0)
@ -7219,7 +7228,7 @@ code_convert_string_norecord (string, coding_system, encodep)
CHECK_STRING (string);
CHECK_SYMBOL (coding_system);
if (NILP (coding_system))
if (NILP (coding_system) && system_eol_type == CODING_EOL_LF)
return string;
if (setup_coding_system (Fcheck_coding_system (coding_system), &coding) < 0)

View file

@ -6695,7 +6695,7 @@ init_display ()
try to use X, and die with an error message if that doesn't work. */
#ifdef HAVE_X_WINDOWS
if (! display_arg)
if (! inhibit_window_system && ! display_arg)
{
char *display;
#ifdef VMS

View file

@ -204,6 +204,7 @@ init_eval_once ()
specpdl_size = 50;
specpdl = (struct specbinding *) xmalloc (specpdl_size * sizeof (struct specbinding));
specpdl_ptr = specpdl;
/* Don't forget to update docs (lispref node "Local Variables"). */
max_specpdl_size = 1000;
max_lisp_eval_depth = 300;

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