1
0
mirror of https://git.savannah.gnu.org/git/emacs.git synced 2024-11-28 07:45:00 +00:00

Revision: miles@gnu.org--gnu-2004/emacs--unicode--0--patch-47

Merge from emacs--cvs-trunk--0

Patches applied:

 * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-571
   Merge from gnus--rel--5.10

 * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-572
 - miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-574
   Update from CVS

 * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-575
   Merge from gnus--rel--5.10

 * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-576
 - miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-579
   Update from CVS

 * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-580
   Merge from gnus--rel--5.10

 * miles@gnu.org--gnu-2004/gnus--rel--5.10--patch-31
 - miles@gnu.org--gnu-2004/gnus--rel--5.10--patch-33
   Update from CVS

 * miles@gnu.org--gnu-2004/gnus--rel--5.10--patch-34
   Merge from emacs--cvs-trunk--0

 * miles@gnu.org--gnu-2004/gnus--rel--5.10--patch-35
 - miles@gnu.org--gnu-2004/gnus--rel--5.10--patch-37
   Update from CVS
This commit is contained in:
Miles Bader 2004-09-29 07:22:20 +00:00
commit 93952a2d5b
58 changed files with 1275 additions and 555 deletions

View File

@ -1,3 +1,8 @@
2004-09-25 Jan Dj,Ad(Brv <jan.h.d@swipnet.se>
* configure.in (HAVE_EXECSHIELD): Only define on x86.
* configure: Rebuild.
2004-09-24 Jan Dj,Ad(Brv <jan.h.d@swipnet.se>
* configure.in: Check for exec-shield.

18
configure vendored
View File

@ -4302,7 +4302,7 @@ else
fi
if test "$emacs_cv_execshield" = 1; then
# Extract the first word of "setarch", so it can be a program name with args.
# Extract the first word of "setarch", so it can be a program name with args.
set dummy setarch; ac_word=$2
echo "$as_me:$LINENO: checking for $ac_word" >&5
echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
@ -4343,13 +4343,25 @@ echo "${ECHO_T}no" >&6
fi
if test "$setarch" != no; then
if test "$setarch" != no && test "$machine" = "intel386"; then
cat >>confdefs.h <<\_ACEOF
#define HAVE_EXECSHIELD 1
_ACEOF
fi
else
case "`cat /proc/sys/kernel/exec-shield`" in
0) ;;
*)
{ { echo "$as_me:$LINENO: error: Exec-shield is turned on.
Emacs can not dump itself if exec-shield is turned on.
See \`etc/PROBLEMS' for further information." >&5
echo "$as_me: error: Exec-shield is turned on.
Emacs can not dump itself if exec-shield is turned on.
See \`etc/PROBLEMS' for further information." >&2;}
{ (exit 1); exit 1; }; }
esac
fi
fi
#### Extract some information from the operating system and machine files.

View File

@ -1288,13 +1288,22 @@ AC_AIX
dnl check if exec-shield is present.
AC_CHECK_FILE(/proc/sys/kernel/exec-shield, emacs_cv_execshield=1,
emacs_cv_execshield=0)
emacs_cv_execshield=0)
if test "$emacs_cv_execshield" = 1; then
AC_PATH_PROG(SETARCH, setarch, no)
AC_SUBST(SETARCH)
if test "$setarch" != no; then
AC_DEFINE(HAVE_EXECSHIELD, 1, [Define to 1 if this OS has exec shield.])
fi
AC_PATH_PROG(SETARCH, setarch, no)
AC_SUBST(SETARCH)
if test "$setarch" != no && test "$machine" = "intel386"; then
AC_DEFINE(HAVE_EXECSHIELD, 1,
[Define to 1 if this OS has exec shield and we can handle it.])
else
case "`cat /proc/sys/kernel/exec-shield`" in
0) ;;
*)
AC_MSG_ERROR([Exec-shield is turned on.
Emacs can not dump itself if exec-shield is turned on.
See `etc/PROBLEMS' for further information.])
esac
fi
fi
#### Extract some information from the operating system and machine files.

View File

@ -1,3 +1,18 @@
2004-09-26 Luc Teirlinck <teirllm@auburn.edu>
* enriched.doc: `enriched-annotation-alist' is now called
`enriched-translations'.
2004-09-26 Dan Nicolaescu <dann@ics.uci.edu>
* e/eterm.ti: Comment out smcup, rmcup. Add kbs, kdch1, rc, sc.
Reformat.
* e/eterm: Regenerate.
2004-09-25 Jan Dj,Ad(Brv <jan.h.d@swipnet.se>
* PROBLEMS: Updated exec-shield description.
2004-09-16 Dan Nicolaescu <dann@ics.uci.edu>
* e/eterm.ti: Change the strings for smso and rmso.

View File

@ -2330,6 +2330,7 @@ configuration files.
* Lisp Changes in Emacs 21.4
+++
** Major mode functions now run the new normal hook
`after-change-major-mode-hook', at their very end, after the mode hooks.

View File

@ -2333,28 +2333,34 @@ The fix is to install a newer version of ncurses, such as version 4.2.
*** Linux: Segfault during `make bootstrap' under certain recent versions of the Linux kernel.
With certain recent Linux kernels (like the one of Redhat Fedora Core
1), the new "Exec-shield" functionality is enabled by default, which
1 and 2), the new "Exec-shield" functionality is enabled by default, which
creates a different memory layout that breaks the emacs dumper.
Configure can overcome the problem of exec-shield if the architecture is
x86 and the program setarch is present. On other architectures no
workaround is known.
You can check the Exec-shield state like this:
cat /proc/sys/kernel/exec-shield
It returns 1 or 2 when Exec-shield is enabled, 0 otherwise. Please
It returns non-zero when Exec-shield is enabled, 0 otherwise. Please
read your system documentation for more details on Exec-shield and
associated commands.
associated commands. Exec-shield can be turned off with this command:
echo "0" > /proc/sys/kernel/exec-shield
When Exec-shield is enabled, building Emacs will segfault during the
execution of this command:
temacs --batch --load loadup [dump|bootstrap]
./temacs --batch --load loadup [dump|bootstrap]
To work around this problem, it is necessary to temporarily disable
Exec-shield while building Emacs, using the `setarch' command like
this:
Exec-shield while building Emacs, or, on x86, by using the `setarch'
command when running temacs like this:
setarch i386 ./temacs --batch --load loadup [dump|bootstrap]
setarch i386 ./configure <configure parameters>
setarch i386 make <make parameters>
*** Fatal signal in the command temacs -l loadup inc dump.

View File

@ -1,21 +1,61 @@
eterm,
lines#24,cols#80,
colors#8,pairs#64,
cuu1=\E[A,cud1=\n,cub1=\b,cuf1=\E[C,home=\E[H,cr=\r,
cuu=\E[%p1%dA,cud=\E[%p1%dB,cub=\E[%p1%dD,cuf=\E[%p1%dC,
colors#8,
cols#80,
lines#24,
pairs#64,
am,
mir,
xenl,
bel=^G,
bold=\E[1m,
clear=\E[H\E[J,
cr=\r,
csr=\E[%i%p1%d;%p2%dr,
cub1=\b,
cub=\E[%p1%dD,
cud1=\n,
cud=\E[%p1%dB,
cuf1=\E[C,
cuf=\E[%p1%dC,
cup=\E[%i%p1%d;%p2%dH,
ind=\n,csr=\E[%i%p1%d;%p2%dr,
il1=\E[L,il=\E[%p1%dL,
clear=\E[H\E[J,ed=\E[J,el=\E[K,el1=\E[1K,
dl1=\E[M,dl=\E[%p1%dM,dch1=\E[P,dch=\E[%p1%dP,
smir=\E[4h,rmir=\E[4l,ich=\E[%p1%d@,mir,
smcup=\E7\E[?47h,rmcup=\E[2J\E[?47l\E8,
ht=\t,khome=\E[1~,kend=\E[4~,knp=\E[6~,kpp=\E[5~,
kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA,
smso=\E[7m,rmso=\E[27m,
smul=\E[4m,rmul=\E[24m,
rev=\E[7m,bold=\E[1m,sgr0=\E[m,
invis=\E[8m,op=\E[39;49m,
setab=\E[%p1%{40}%+%dm, setaf=\E[%p1%{30}%+%dm,
bel=^G,xenl,am,
cuu1=\E[A,
cuu=\E[%p1%dA,
dch1=\E[P,
dch=\E[%p1%dP,
dl1=\E[M,
dl=\E[%p1%dM,
ed=\E[J,
el1=\E[1K,
el=\E[K,
home=\E[H,
ht=\t,
ich=\E[%p1%d@,
il1=\E[L,
il=\E[%p1%dL,
ind=\n,
invis=\E[8m,
kbs=^?,
kcub1=\EOD,
kcud1=\EOB,
kcuf1=\EOC,
kcuu1=\EOA,
kdch1=\E[3~,
kend=\E[4~,
khome=\E[1~,
knp=\E[6~,
kpp=\E[5~,
op=\E[39;49m,
rc=\E8,
rev=\E[7m,
rmir=\E[4l,
rmso=\E[27m,
rmul=\E[24m,
sc=\E7,
setab=\E[%p1%{40}%+%dm,
setaf=\E[%p1%{30}%+%dm,
sgr0=\E[m,
smir=\E[4h,
smul=\E[4m,
smso=\E[7m,
# smcup=\E[?47h,
# rmcup=\E[?47l,

View File

@ -196,11 +196,11 @@ FTP or email may be obtained by sending an email message to
enriched-verbose.
</fixed></indent>-<indent> You can add annotations for your own text properties by making
additions to <fixed>enriched-annotation-alist</fixed>. Note that the
standard requires you to name your annotation starting<italic> "x-"
</italic>(as in <italic>"x-read-only"</italic>). Please send me any such additions that
you think might be of general interest so that I can include
them in the distribution.</indent>
additions to <fixed>enriched-translations</fixed>. Note that the standard
requires you to name your annotation starting<italic> "x-" </italic>(as in
<italic>"x-read-only"</italic>). Please send me any such additions that you
think might be of general interest so that I can include them
in the distribution.</indent>
</indent>

View File

@ -1,3 +1,8 @@
2004-09-25 Kenichi Handa <handa@m17n.org>
* quail/uni-input.el (ucs-input-method): Add error clause to
condition-case.
2004-09-21 Kenichi Handa <handa@m17n.org>
* quail/uni-input.el: Move the call of register-input-method to

View File

@ -1,6 +1,79 @@
2004-09-28 Stefan <monnier@iro.umontreal.ca>
* dired.el (dired-view-command-alist): Use more efficient regexps.
Remove dubious arguments.
(dired-align-file): New function.
(dired-insert-directory): Use it.
(dired-move-to-end-of-filename): Make the " -> " search more specific.
(dired-buffers-for-dir): Remove unused var `pattern'.
2004-09-29 Kim F. Storm <storm@cua.dk>
* progmodes/gdb-ui.el (breakpoint): Define as fringe bitmap.
(gdb-mouse-toggle-breakpoint): Fix fringe-bitmaps-at-pos usage.
(gdb-put-breakpoint-icon): Use breakpoint bitmap.
* fringe.el (fringe-bitmap-p): New macro.
(fringe-bitmaps): Add standard fringe bitmaps on load.
2004-09-28 Matthew Mundell <matt@mundell.ukfsn.org> (tiny change)
* calendar/diary-lib.el (list-diary-entries): Save diary buffer
from diary display excursion. Store diary buffer's point for
`simple-diary-display'.
(simple-diary-display): Set window point and start when
displaying buffer, to preserve point.
2004-09-27 Luc Teirlinck <teirllm@auburn.edu>
* textmodes/enriched.el (enriched-translations): Replace defconst
with defvar.
2004-09-26 Vinicius Jose Latorre <viniciusjl@ig.com.br>
* printing.el: Doc fix.
(pr-version): New version number (6.8.1).
(pr-ps-file-using-ghostscript): Use make-temp-file instead of
make-temp-name.
(pr-delete-file): Check if file exists before deleting it. Reported by
Lennart Borgman <lennart.borgman.073@student.lu.se>.
2004-09-26 Stefan <monnier@iro.umontreal.ca>
* term.el (term-display-table): New variable.
(term-mode): Use it.
(term-exec-1): Set the coding system to binary.
(term-emulate-terminal): Decode the string before inserting it.
2004-09-26 Dan Nicolaescu <dann@ics.uci.edu>
* term.el (term-ansi-at-eval-string, term-ansi-default-fg)
(term-ansi-default-bg, term-ansi-current-temp): Delete unused
vars.
(map): Bind S-prior, S-next and S-insert.
(term-mode): Set `indent-tabs-mode' to nil.
(term-paste): New function to be bound to S-insert.
(term-send-del, term-send-backspace): Change the strings sent.
(term-termcap-format): Synchronyze with etc/e/eterm.ti.
(term-handle-colors-array): Fix handling of underline and reverse.
(term-handle-ansi-escape): Do not handle smcup/rmcup. Add
comments.
(term-erase-in-line): Fix comparison.
(term-emulate-terminal): Fix line wrap handling.
(term-start-output-log): Renamed from `term-set-output-log'.
(term-stop-output-log): Renamed from `term-stop-photo'.
(term-switch-to-alternate-sub-buffer): Comment out, unused.
2004-09-25 Stefan <monnier@iro.umontreal.ca>
* dired.el (dired-move-to-filename): Don't output a message if
raise-error is non-nil. Fix return position and value.
* files.el (insert-directory): Obey --dired even with symlinks.
2004-09-25 Lars Hansen <larsh@math.ku.dk>
* ls-lisp.el (ls-lisp-format): Mark file names with poperty
* ls-lisp.el (ls-lisp-format): Mark file names with property
dired-filename.
2004-09-25 Kim F. Storm <storm@cua.dk>
@ -21,8 +94,8 @@
it, and show completions.
(ido-all-completions): Let bind ido-directory-too-big to nil.
(ido-exhibit): Handle ido-directory-too-big.
(ido-read-buffer): Handle fallback to read-buffer. Init
ido-directory-too-big.
(ido-read-buffer): Handle fallback to read-buffer.
Init ido-directory-too-big.
(ido-read-file-name, ido-read-directory-name, ido-completing-read):
Init ido-directory-too-big.

View File

@ -4,6 +4,7 @@
;; Free Software Foundation, Inc.
;; Author: Edward M. Reingold <reingold@cs.uiuc.edu>
;; Maintainer: Glenn Morris <gmorris@ast.cam.ac.uk>
;; Keywords: calendar
;; This file is part of GNU Emacs.
@ -296,6 +297,8 @@ Only used if `diary-header-line-flag' is non-nil."
:type 'sexp
:version "21.4")
(defvar diary-saved-point) ; internal
(defun list-diary-entries (date number)
"Create and display a buffer containing the relevant lines in diary-file.
The arguments are DATE and NUMBER; the entries selected are those
@ -345,112 +348,116 @@ These hooks have the following distinct roles:
(set-buffer diary-buffer)
(or (verify-visited-file-modtime diary-buffer)
(revert-buffer t t))))
(setq file-glob-attrs (nth 1 (diary-pull-attrs nil "")))
(setq selective-display t)
(setq selective-display-ellipses nil)
(if diary-header-line-flag
(setq header-line-format diary-header-line-format))
(setq old-diary-syntax-table (syntax-table))
(set-syntax-table diary-syntax-table)
(unwind-protect
(let ((buffer-read-only nil)
(diary-modified (buffer-modified-p))
(mark (regexp-quote diary-nonmarking-symbol)))
;; First and last characters must be ^M or \n for
;; selective display to work properly
(goto-char (1- (point-max)))
(if (not (looking-at "\^M\\|\n"))
(progn
(goto-char (point-max))
(insert "\^M")))
(goto-char (point-min))
(if (not (looking-at "\^M\\|\n"))
(insert "\^M"))
(subst-char-in-region (point-min) (point-max) ?\n ?\^M t)
(calendar-for-loop i from 1 to number do
(let ((d diary-date-forms)
(month (extract-calendar-month date))
(day (extract-calendar-day date))
(year (extract-calendar-year date))
(entry-found (list-sexp-diary-entries date)))
(while d
(let*
((date-form (if (equal (car (car d)) 'backup)
(cdr (car d))
(car d)))
(backup (equal (car (car d)) 'backup))
(dayname
(format "%s\\|%s\\.?"
(calendar-day-name date)
(calendar-day-name date 'abbrev)))
(monthname
(format "\\*\\|%s\\|%s\\.?"
(calendar-month-name month)
(calendar-month-name month 'abbrev)))
(month (concat "\\*\\|0*" (int-to-string month)))
(day (concat "\\*\\|0*" (int-to-string day)))
(year
(concat
"\\*\\|0*" (int-to-string year)
(if abbreviated-calendar-year
(concat "\\|" (format "%02d" (% year 100)))
"")))
(regexp
(concat
"\\(\\`\\|\^M\\|\n\\)" mark "?\\("
(mapconcat 'eval date-form "\\)\\(")
"\\)"))
(case-fold-search t))
(goto-char (point-min))
(while (re-search-forward regexp nil t)
(if backup (re-search-backward "\\<" nil t))
(if (and (or (char-equal (preceding-char) ?\^M)
(char-equal (preceding-char) ?\n))
(not (looking-at " \\|\^I")))
;; Diary entry that consists only of date.
(backward-char 1)
;; Found a nonempty diary entry--make it visible and
;; add it to the list.
(setq entry-found t)
(let ((entry-start (point))
date-start temp)
(re-search-backward "\^M\\|\n\\|\\`")
(setq date-start (point))
(re-search-forward "\^M\\|\n" nil t 2)
(while (looking-at " \\|\^I")
(re-search-forward "\^M\\|\n" nil t))
(backward-char 1)
(subst-char-in-region date-start
(point) ?\^M ?\n t)
(setq entry (buffer-substring entry-start (point))
temp (diary-pull-attrs entry file-glob-attrs)
entry (nth 0 temp))
(add-to-diary-list
date
entry
(buffer-substring
(1+ date-start) (1- entry-start))
(copy-marker entry-start) (nth 1 temp))))))
(setq d (cdr d)))
(or entry-found
(not diary-list-include-blanks)
(setq diary-entries-list
(append diary-entries-list
(list (list date "" "" "" "")))))
(setq date
(calendar-gregorian-from-absolute
(1+ (calendar-absolute-from-gregorian date))))
(setq entry-found nil)))
(set-buffer-modified-p diary-modified))
(set-syntax-table old-diary-syntax-table))
(goto-char (point-min))
(run-hooks 'nongregorian-diary-listing-hook
'list-diary-entries-hook)
(if diary-display-hook
(run-hooks 'diary-display-hook)
(simple-diary-display))
(run-hooks 'diary-hook)
diary-entries-list))))
;; d-s-p is passed to the diary display function.
(let ((diary-saved-point (point)))
(save-excursion
(setq file-glob-attrs (nth 1 (diary-pull-attrs nil "")))
(setq selective-display t)
(setq selective-display-ellipses nil)
(if diary-header-line-flag
(setq header-line-format diary-header-line-format))
(setq old-diary-syntax-table (syntax-table))
(set-syntax-table diary-syntax-table)
(unwind-protect
(let ((buffer-read-only nil)
(diary-modified (buffer-modified-p))
(mark (regexp-quote diary-nonmarking-symbol)))
;; First and last characters must be ^M or \n for
;; selective display to work properly
(goto-char (1- (point-max)))
(if (not (looking-at "\^M\\|\n"))
(progn
(goto-char (point-max))
(insert "\^M")))
(goto-char (point-min))
(if (not (looking-at "\^M\\|\n"))
(insert "\^M"))
(subst-char-in-region (point-min) (point-max) ?\n ?\^M t)
(calendar-for-loop
i from 1 to number do
(let ((d diary-date-forms)
(month (extract-calendar-month date))
(day (extract-calendar-day date))
(year (extract-calendar-year date))
(entry-found (list-sexp-diary-entries date)))
(while d
(let*
((date-form (if (equal (car (car d)) 'backup)
(cdr (car d))
(car d)))
(backup (equal (car (car d)) 'backup))
(dayname
(format "%s\\|%s\\.?"
(calendar-day-name date)
(calendar-day-name date 'abbrev)))
(monthname
(format "\\*\\|%s\\|%s\\.?"
(calendar-month-name month)
(calendar-month-name month 'abbrev)))
(month (concat "\\*\\|0*" (int-to-string month)))
(day (concat "\\*\\|0*" (int-to-string day)))
(year
(concat
"\\*\\|0*" (int-to-string year)
(if abbreviated-calendar-year
(concat "\\|" (format "%02d" (% year 100)))
"")))
(regexp
(concat
"\\(\\`\\|\^M\\|\n\\)" mark "?\\("
(mapconcat 'eval date-form "\\)\\(")
"\\)"))
(case-fold-search t))
(goto-char (point-min))
(while (re-search-forward regexp nil t)
(if backup (re-search-backward "\\<" nil t))
(if (and (or (char-equal (preceding-char) ?\^M)
(char-equal (preceding-char) ?\n))
(not (looking-at " \\|\^I")))
;; Diary entry that consists only of date.
(backward-char 1)
;; Found a nonempty diary entry--make it
;; visible and add it to the list.
(setq entry-found t)
(let ((entry-start (point))
date-start temp)
(re-search-backward "\^M\\|\n\\|\\`")
(setq date-start (point))
(re-search-forward "\^M\\|\n" nil t 2)
(while (looking-at " \\|\^I")
(re-search-forward "\^M\\|\n" nil t))
(backward-char 1)
(subst-char-in-region date-start
(point) ?\^M ?\n t)
(setq entry (buffer-substring entry-start (point))
temp (diary-pull-attrs entry file-glob-attrs)
entry (nth 0 temp))
(add-to-diary-list
date
entry
(buffer-substring
(1+ date-start) (1- entry-start))
(copy-marker entry-start) (nth 1 temp))))))
(setq d (cdr d)))
(or entry-found
(not diary-list-include-blanks)
(setq diary-entries-list
(append diary-entries-list
(list (list date "" "" "" "")))))
(setq date
(calendar-gregorian-from-absolute
(1+ (calendar-absolute-from-gregorian date))))
(setq entry-found nil)))
(set-buffer-modified-p diary-modified))
(set-syntax-table old-diary-syntax-table))
(goto-char (point-min))
(run-hooks 'nongregorian-diary-listing-hook
'list-diary-entries-hook)
(if diary-display-hook
(run-hooks 'diary-display-hook)
(simple-diary-display))
(run-hooks 'diary-hook)
diary-entries-list))))))
(defun include-other-diary-files ()
"Include the diary entries from other diary files with those of diary-file.
@ -528,8 +535,12 @@ changing the variable `diary-include-string'."
(setq buffer-read-only t)
(display-buffer holiday-buffer)
(message "No diary entries for %s" date-string))
(display-buffer (find-buffer-visiting
(substitute-in-file-name diary-file)))
(with-current-buffer
(find-buffer-visiting (substitute-in-file-name diary-file))
(let ((window (display-buffer (current-buffer))))
;; d-s-p is passed from list-diary-entries.
(set-window-point window diary-saved-point)
(set-window-start window (point-min))))
(message "Preparing diary...done"))))
(defface diary-button-face '((((type pc) (class color))

View File

@ -202,10 +202,11 @@ with the buffer narrowed to the listing."
;; Fixme: This should use mailcap.
(defcustom dired-view-command-alist
'(("[.]\\(ps\\|ps_pages\\|eps\\)\\'" . "gv -spartan -color -watch %s")
("[.]pdf\\'" . "xpdf %s")
("[.]\\(jpe?g\\|gif\\|png\\)\\'" . "eog %s")
("[.]dvi\\'" . "xdvi -sidemargin 0.5 -topmargin 1 %s"))
'(("\\.\\(ps\\|ps_pages\\|eps\\)\\'" . "gv %s")
("\\.pdf\\'" . "xpdf %s")
;; ("\\.pod\\'" . "perldoc %s")
("\\.\\(jpe?g\\|gif\\|png\\)\\'" . "eog %s")
("\\.dvi\\'" . "xdvi %s"))
"Alist specifying how to view special types of files.
Each element has the form (REGEXP . SHELL-COMMAND).
When the file name matches REGEXP, `dired-view-file'
@ -797,6 +798,112 @@ wildcards, erases the buffer, and builds the subdir-alist anew
(dired-insert-directory dir dired-actual-switches
file-list (not file-list) t)))))
(defun dired-align-file (beg end)
"Align the fields of a file to the ones of surrounding lines.
BEG..END is the line where the file info is located."
;; Some versions of ls try to adjust the size of each field so as to just
;; hold the largest element ("largest" in the current invocation, of
;; course). So when a single line is output, the size of each field is
;; just big enough for that one output. Thus when dired refreshes one
;; line, the alignment if this line w.r.t the rest is messed up because
;; the fields of that one line will generally be smaller.
;;
;; To work around this problem, we here add spaces to try and re-align the
;; fields as needed. Since this is purely aesthetic, it is of utmost
;; importance that it doesn't mess up anything like
;; `dired-move-to-filename'. To this end, we limit ourselves to adding
;; spaces only, and to only add them at places where there was already at
;; least one space. This way, as long as `dired-move-to-filename-regexp'
;; always matches spaces with "*" or "+", we know we haven't made anything
;; worse. There is one spot where the exact number of spaces is
;; important, which is just before the actual filename, so we refrain from
;; adding spaces there (and within the filename as well, of course).
(save-excursion
(let (file file-col other other-col)
;; Check the there is indeed a file, and that there is anoter adjacent
;; file with which to align, and that additional spaces are needed to
;; align the filenames.
(when (and (setq file (progn (goto-char beg)
(dired-move-to-filename nil end)))
(setq file-col (current-column))
(setq other
(or (and (goto-char beg)
(zerop (forward-line -1))
(dired-move-to-filename))
(and (goto-char beg)
(zerop (forward-line 1))
(dired-move-to-filename))))
(setq other-col (current-column))
(/= file other)
;; Make sure there is some work left to do.
(> other-col file-col))
;; If we've only looked at the line above, check to see if the line
;; below exists as well and if so, align with the shorter one.
(when (and (< other file)
(goto-char beg)
(zerop (forward-line 1))
(dired-move-to-filename))
(let ((alt-col (current-column)))
(when (< alt-col other-col)
(setq other-col alt-col)
(setq other (point)))))
;; Keep positions uptodate when we insert stuff.
(if (> other file) (setq other (copy-marker other)))
(setq file (copy-marker file))
;; Main loop.
(goto-char beg)
(while (and (> other-col file-col)
(skip-chars-forward "^ ")
;; Skip the spaces, and make sure there's at least one.
(> (skip-chars-forward " ") 0)
;; Don't touch anything just before (and after) the
;; beginning of the filename.
(> file (point)))
;; We're now just in front of a field, with a space behind us.
(let* ((curcol (current-column))
;; Nums are right-aligned.
(num-align (looking-at "[0-9]"))
;; Let's look at the other line, in the same column: we
;; should be either near the end of the previous field, or
;; in the space between that field and the next.
;; [ Of course, it's also possible that we're already within
;; the next field or even past it, but that's unlikely since
;; other-col > file-col. ]
;; Let's find the distance to the alignment-point (either
;; the beginning or the end of the next field, depending on
;; whether this field is left or right aligned).
(align-pt-offset
(save-excursion
(goto-char other)
(move-to-column curcol)
(when (looking-at
(concat
(if (eq (char-before) ?\ ) " *" "[^ ]* *")
(if num-align "[0-9][^ ]*")))
(- (match-end 0) (match-beginning 0)))))
;; Now, the number of spaces to insert is align-pt-offset
;; minus the distance to the equivalent point on the
;; current line.
(spaces
(if (not num-align)
align-pt-offset
(and align-pt-offset
(save-excursion
(skip-chars-forward "^ ")
(- align-pt-offset (- (current-column) curcol)))))))
(when (and spaces (> spaces 0))
(setq file-col (+ spaces file-col))
(if (> file-col other-col)
(setq spaces (- spaces (- file-col other-col))))
(insert-char ?\s spaces)
;; Let's just make really sure we did not mess up.
(unless (save-excursion
(equal (dired-move-to-filename) (marker-position file)))
;; Damn! We messed up: let's revert the change.
(delete-char (- spaces))))))
(set-marker file nil)))))
(defun dired-insert-directory (dir switches &optional file-list wildcard hdr)
"Insert a directory listing of DIR, Dired style.
Use SWITCHES to make the listings.
@ -815,7 +922,10 @@ If HDR is non-nil, insert a header line with the directory name."
;; with the new value of dired-move-to-filename-regexp.
(if file-list
(dolist (f file-list)
(insert-directory f switches nil nil))
(let ((beg (point)))
(insert-directory f switches nil nil)
;; Re-align fields, if necessary.
(dired-align-file beg (point))))
(insert-directory dir switches wildcard (not wildcard)))
;; Quote certain characters, unless ls quoted them for us.
(if (not (string-match "b" dired-actual-switches))
@ -1762,6 +1872,8 @@ regardless of the language.")
;; Move to first char of filename on this line.
;; Returns position (point) or nil if no filename on this line."
(defun dired-move-to-filename (&optional raise-error eol)
"Move to the beginning of the filename on the current line.
Return the position of the beginning of the filename, or nil if none found."
;; This is the UNIX version.
(or eol (setq eol (line-end-position)))
(beginning-of-line)
@ -1774,8 +1886,10 @@ regardless of the language.")
(goto-char (match-end 0)))
((re-search-forward dired-permission-flags-regexp eol t)
;; Ha! There *is* a file. Our regexp-from-hell just failed to find it.
(funcall (if raise-error 'error 'message)
"Unrecognized line! Check dired-move-to-filename-regexp"))
(if raise-error
(error "Unrecognized line! Check dired-move-to-filename-regexp"))
(beginning-of-line)
nil)
(raise-error
(error "No file on this line")))))
@ -1818,9 +1932,9 @@ regardless of the language.")
(or no-error (error "No file on this line"))))
;; Move point to end of name:
(if symlink
(if (search-forward " ->" eol t)
(if (search-forward " -> " eol t)
(progn
(forward-char -3)
(forward-char -4)
(and used-F
dired-ls-F-marks-symlinks
(eq (preceding-char) ?@) ;; did ls really mark the link?
@ -1885,7 +1999,7 @@ You can then feed the file name(s) to other commands with \\[yank]."
;; As a side effect, killed dired buffers for DIR are removed from
;; dired-buffers.
(setq dir (file-name-as-directory dir))
(let ((alist dired-buffers) result elt buf pattern)
(let ((alist dired-buffers) result elt buf)
(while alist
(setq elt (car alist)
buf (cdr elt))

View File

@ -4376,7 +4376,8 @@ normally equivalent short `-D' option is just passed on to
(while (< (point) end)
(let ((start (+ beg (read (current-buffer))))
(end (+ beg (read (current-buffer)))))
(if (= (char-after end) ?\n)
(if (memq (char-after end) '(?\n ?\ ))
;; End is followed by \n or by " -> ".
(put-text-property start end 'dired-filename t)
;; It seems that we can't trust ls's output as to
;; byte positions of filenames.

View File

@ -37,27 +37,29 @@
;; Standard fringe bitmaps
(defconst no-fringe-bitmap 0)
(defconst undef-fringe-bitmap 1)
(defconst left-truncation-fringe-bitmap 2)
(defconst right-truncation-fringe-bitmap 3)
(defconst up-arrow-fringe-bitmap 4)
(defconst down-arrow-fringe-bitmap 5)
(defconst continued-line-fringe-bitmap 6)
(defconst continuation-line-fringe-bitmap 7)
(defconst overlay-arrow-fringe-bitmap 8)
(defconst top-left-angle-fringe-bitmap 9)
(defconst top-right-angle-fringe-bitmap 10)
(defconst bottom-left-angle-fringe-bitmap 11)
(defconst bottom-right-angle-fringe-bitmap 12)
(defconst left-bracket-fringe-bitmap 13)
(defconst right-bracket-fringe-bitmap 14)
(defconst filled-box-cursor-fringe-bitmap 15)
(defconst hollow-box-cursor-fringe-bitmap 16)
(defconst hollow-square-fringe-bitmap 17)
(defconst bar-cursor-fringe-bitmap 18)
(defconst hbar-cursor-fringe-bitmap 19)
(defconst empty-line-fringe-bitmap 20)
(defmacro fringe-bitmap-p (symbol)
"Return non-nil if SYMBOL is a fringe bitmap."
`(get ,symbol 'fringe))
(defvar fringe-bitmaps)
(unless (get 'left-truncation 'fringe)
(let ((bitmaps '(left-truncation right-truncation
up-arrow down-arrow
continued-line continuation-line
overlay-arrow
top-left-angle top-right-angle
bottom-left-angle bottom-right-angle
left-bracket right-bracket
filled-box-cursor hollow-box-cursor hollow-square
bar-cursor hbar-cursor
empty-line))
(bn 2))
(while bitmaps
(push (car bitmaps) fringe-bitmaps)
(put (car bitmaps) 'fringe bn)
(setq bitmaps (cdr bitmaps)
bn (1+ bn)))))
;; Control presence of fringes
@ -228,7 +230,7 @@ SIDE must be the symbol `left' or `right'."
(window-fringes))
0)
(float (frame-char-width))))
(provide 'fringe)
;;; arch-tag: 6611ef60-0869-47ed-8b93-587ee7d3ff5d

View File

@ -1,3 +1,77 @@
2004-09-28 Jesper Harder <harder@ifa.au.dk>
* gnus-picon.el: Require cl.
* mml-sec.el (mml-signencrypt-style): Don't depend on Gnus.
* mml-smime.el: Require cl. Autoload message-fetch-field.
* gnus-fun.el: Require gnus-ems and gnus-util.
* gnus-diary.el (gnus-diary-header-schedule): caddr -> car (cddr
* gnus-art.el (gnus-article-edit-mode): Define before first
reference.
* gnus.el (gnus-method-to-server): Move defsubst before first use.
* spam.el (spam-check-spamoracle, spam-spamoracle-learn): Fix
format string mismatch.
* nnml.el (nnml-request-set-mark, nnml-save-marks): do.
* nnfolder.el (nnfolder-request-set-mark, nnfolder-save-marks): do.
2004-09-27 Reiner Steib <Reiner.Steib@gmx.de>
* gnus.el (gnus-version-number): Set to 5.11.
2004-09-27 Katsumi Yamaoka <yamaoka@jpl.org>
* mm-decode.el (mm-copy-to-buffer): Don't use set-buffer-multibyte.
2004-09-26 Jesper Harder <harder@ifa.au.dk>
* gnus-msg.el (gnus-post-news): Use blank Newsgroups line if
GROUP is a virtual group.
* mm-util.el (mm-charset-synonym-alist): Remove obsolete entries
for big5 and gb2312.
* rfc2047.el (rfc2047-pad-base64): Deal with more cases of invalid
padding.
* mm-bodies.el (mm-7bit-chars): Don't include \r.
* mml.el (mml-compute-boundary-1): Don't uncompress files.
* rfc2047.el (rfc2047-qp-or-base64): New function to reduce
dependencies.
(rfc2047-encode): Use it.
* flow-fill.el: Typo.
* mml.el (mml-generate-mime-1): Don't use format=flowed with
inline PGP.
* gnus.el (gnus-getenv-nntpserver): Strip whitespace.
* gnus-cache.el (gnus-cache-save-buffers): Check if buffer is
alive. Reported by Laurent Martelli <laurent@aopsys.com>.
* mm-util.el (mm-image-load-path): Handle nil in load-path.
From Christian Neukirchen <chneukirchen@yahoo.de>.
* html2text.el (html2text-replace-list): Add &amp; and &apos;.
* nnheader.el (nnheader-max-head-length): Increase to 8192.
* message.el (message-clone-locals): Clone sendmail and smtp
variables.
2004-09-23 Reiner Steib <Reiner.Steib@gmx.de>
* gnus-msg.el (gnus-configure-posting-styles): Narrow to headers
in `header' match. Reported by Svend Tollak Munkejord.
2004-09-20 Stefan Monnier <monnier@iro.umontreal.ca>
* mm-decode.el (mm-copy-to-buffer): Preserve the data's unibyteness.

View File

@ -1,4 +1,4 @@
;;; flow-fill.el --- interprete RFC2646 "flowed" text
;;; flow-fill.el --- interpret RFC2646 "flowed" text
;; Copyright (C) 2000, 2001, 2002, 2003 Free Software Foundation, Inc.

View File

@ -1464,6 +1464,8 @@ Initialized from `text-mode-syntax-table.")
(defvar gnus-inhibit-hiding nil)
(defvar gnus-article-edit-mode nil)
;;; Macros for dealing with the article buffer.
(defmacro gnus-with-article-headers (&rest forms)

View File

@ -125,9 +125,8 @@ it's not cached."
(overview-file (gnus-cache-file-name
(car gnus-cache-buffer) ".overview")))
;; write the overview only if it was modified
(when (buffer-modified-p buffer)
(save-excursion
(set-buffer buffer)
(when (and (buffer-live-p buffer) (buffer-modified-p buffer))
(with-current-buffer buffer
(if (> (buffer-size) 0)
;; Non-empty overview, write it to a file.
(let ((coding-system-for-write

View File

@ -204,7 +204,7 @@ There are currently two built-in format functions:
(let ((head (cdr (assoc (intern (format "X-Diary-%s" (car elt)))
headers))))
(when head
(nndiary-parse-schedule-value head (cadr elt) (caddr elt)))))
(nndiary-parse-schedule-value head (cadr elt) (car (cddr elt))))))
nndiary-headers))
;; #### NOTE: Gnus sometimes gives me a HEADER not corresponding to any

View File

@ -26,8 +26,11 @@
;;; Code:
(eval-when-compile
(require 'cl)
(require 'mm-util))
(require 'cl))
(require 'mm-util)
(require 'gnus-ems)
(require 'gnus-util)
(defcustom gnus-x-face-directory (expand-file-name "x-faces" gnus-directory)
"*Directory where X-Face PBM files are stored."

View File

@ -915,7 +915,9 @@ header line with the old Message-ID."
(not to-address)))
;; This is news.
(if post
(message-news (or to-group group))
(message-news
(or to-group
(and (not (gnus-virtual-group-p pgroup)) group)))
(set-buffer gnus-article-copy)
(gnus-msg-treat-broken-reply-to)
(message-followup (if (or newsgroup-p force-news)
@ -1801,9 +1803,11 @@ this is a reply."
;; Obsolete format of header match.
(and (gnus-buffer-live-p gnus-article-copy)
(with-current-buffer gnus-article-copy
(let ((header (message-fetch-field (pop style))))
(and header
(string-match (pop style) header))))))
(save-restriction
(nnheader-narrow-to-headers)
(let ((header (message-fetch-field (pop style))))
(and header
(string-match (pop style) header)))))))
((or (symbolp match)
(functionp match))
(cond
@ -1819,9 +1823,11 @@ this is a reply."
;; New format of header match.
(and (gnus-buffer-live-p gnus-article-copy)
(with-current-buffer gnus-article-copy
(let ((header (message-fetch-field (nth 1 match))))
(and header
(string-match (nth 2 match) header))))))
(save-restriction
(nnheader-narrow-to-headers)
(let ((header (message-fetch-field (nth 1 match))))
(and header
(string-match (nth 2 match) header)))))))
(t
;; This is a form to be evaled.
(eval match)))))

View File

@ -40,8 +40,9 @@
;;
;;; Code:
(eval-when-compile (require 'cl))
(require 'gnus)
(require 'custom)
(require 'gnus-art)
;;; User variables:

View File

@ -282,7 +282,7 @@ is restarted, and sometimes reloaded."
:link '(custom-manual "(gnus)Exiting Gnus")
:group 'gnus)
(defconst gnus-version-number "5.10.6"
(defconst gnus-version-number "5.11"
"Version number for this version of Gnus.")
(defconst gnus-version (format "Gnus v%s" gnus-version-number)
@ -1104,9 +1104,8 @@ Check the NNTPSERVER environment variable and the
(and (file-readable-p gnus-nntpserver-file)
(with-temp-buffer
(insert-file-contents gnus-nntpserver-file)
(let ((name (buffer-string)))
(unless (string-match "\\`[ \t\n]*$" name)
name))))))
(when (re-search-forward "[^ \t\n\r]+" nil t)
(match-string 0))))))
(defcustom gnus-select-method
(condition-case nil
@ -3309,38 +3308,6 @@ that that variable is buffer-local to the summary buffers."
(push (cons server result) gnus-server-method-cache))
result)))
(defsubst gnus-method-to-server (method)
(catch 'server-name
(setq method (or method gnus-select-method))
;; Perhaps it is already in the cache.
(mapc (lambda (name-method)
(if (equal (cdr name-method) method)
(throw 'server-name (car name-method))))
gnus-server-method-cache)
(mapc
(lambda (server-alist)
(mapc (lambda (name-method)
(when (gnus-methods-equal-p (cdr name-method) method)
(unless (member name-method gnus-server-method-cache)
(push name-method gnus-server-method-cache))
(throw 'server-name (car name-method))))
server-alist))
(let ((alists (list gnus-server-alist
gnus-predefined-server-alist)))
(if gnus-select-method
(push (list (cons "native" gnus-select-method)) alists))
alists))
(let* ((name (if (member (cadr method) '(nil ""))
(format "%s" (car method))
(format "%s:%s" (car method) (cadr method))))
(name-method (cons name method)))
(unless (member name-method gnus-server-method-cache)
(push name-method gnus-server-method-cache))
name)))
(defsubst gnus-server-get-method (group method)
;; Input either a server name, and extended server name, or a
;; select method, and return a select method.

View File

@ -1,5 +1,5 @@
;;; html2text.el --- a simple html to plain text converter
;; Copyright (C) 2002, 2003 Free Software Foundation, Inc.
;; Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc.
;; Author: Joakim Hove <hove@phys.ntnu.no>
@ -42,7 +42,8 @@
(defvar html2text-format-single-element-list '(("hr" . html2text-clean-hr)))
(defvar html2text-replace-list
'(("&nbsp;" . " ") ("&gt;" . ">") ("&lt;" . "<") ("&quot;" . "\""))
'(("&nbsp;" . " ") ("&gt;" . ">") ("&lt;" . "<") ("&quot;" . "\"")
("&amp;" . "&") ("&apos;" . "'"))
"The map of entity to text.
This is an alist were each element is a dotted pair consisting of an

View File

@ -6685,7 +6685,7 @@ regexp VARSTR."
(let ((locals (save-excursion
(set-buffer buffer)
(buffer-local-variables)))
(regexp "^gnus\\|^nn\\|^message\\|^user-mail-address"))
(regexp "^gnus\\|^nn\\|^message\\|^sendmail\\|^smtp\\|^user-mail-address"))
(mapcar
(lambda (local)
(when (and (consp local)

View File

@ -38,9 +38,16 @@
(require 'rfc2047)
(require 'mm-encode)
;; 8bit treatment gets any char except: 0x32 - 0x7f, CR, LF, TAB, BEL,
;; 8bit treatment gets any char except: 0x32 - 0x7f, LF, TAB, BEL,
;; BS, vertical TAB, form feed, and ^_
(defvar mm-7bit-chars "\x20-\x7f\r\n\t\x7\x8\xb\xc\x1f")
;;
;; Note that CR is *not* included, as that would allow a non-paired CR
;; in the body contrary to RFC 2822:
;;
;; - CR and LF MUST only occur together as CRLF; they MUST NOT
;; appear independently in the body.
(defvar mm-7bit-chars "\x20-\x7f\n\t\x7\x8\xb\xc\x1f")
(defcustom mm-body-charset-encoding-alist
'((iso-2022-jp . 7bit)

View File

@ -623,14 +623,14 @@ Postpone undisplaying of viewers for types in
"Copy the contents of the current buffer to a fresh buffer."
(save-excursion
(let ((obuf (current-buffer))
(multibyte enable-multibyte-characters)
beg)
(goto-char (point-min))
(search-forward-regexp "^\n" nil t)
(setq beg (point))
(set-buffer (generate-new-buffer " *mm*"))
;; Preserve the data's unibyteness (for url-insert-file-contents).
(set-buffer-multibyte multibyte)
(set-buffer
;; Preserve the data's unibyteness (for url-insert-file-contents).
(let ((default-enable-multibyte-characters (mm-multibyte-p)))
(generate-new-buffer " *mm*")))
(insert-buffer-substring obuf beg)
(current-buffer))))

View File

@ -133,15 +133,9 @@ In XEmacs, also return non-nil if CS is a coding system object."
(defvar mm-charset-synonym-alist
`(
;; Perfectly fine? A valid MIME name, anyhow.
,@(unless (mm-coding-system-p 'big5)
'((big5 . cn-big5)))
;; Not in XEmacs, but it's not a proper MIME charset anyhow.
,@(unless (mm-coding-system-p 'x-ctext)
'((x-ctext . ctext)))
;; Apparently not defined in Emacs 20, but is a valid MIME name.
,@(unless (mm-coding-system-p 'gb2312)
'((gb2312 . cn-gb-2312)))
;; ISO-8859-15 is very similar to ISO-8859-1. But it's _different_!
,@(unless (mm-coding-system-p 'iso-8859-15)
'((iso-8859-15 . iso-8859-1)))
@ -727,11 +721,12 @@ If INHIBIT is non-nil, inhibit `mm-inhibit-file-name-handlers'."
(defun mm-image-load-path (&optional package)
(let (dir result)
(dolist (path load-path (nreverse result))
(if (file-directory-p
(setq dir (concat (file-name-directory
(directory-file-name path))
"etc/" (or package "gnus/"))))
(push dir result))
(when (and path
(file-directory-p
(setq dir (concat (file-name-directory
(directory-file-name path))
"etc/" (or package "gnus/")))))
(push dir result))
(push path result))))
;; Fixme: This doesn't look useful where it's used.

View File

@ -113,7 +113,7 @@ You can also customize or set `mml-signencrypt-style-alist' instead."
(setf (second style-item) style)
;; otherwise, just return the current value
(second style-item))
(gnus-message 3 "Warning, attempt to set invalid signencrypt-style"))))
(message "Warning, attempt to set invalid signencrypt style"))))
;;; Security functions

View File

@ -25,9 +25,12 @@
;;; Code:
(eval-when-compile (require 'cl))
(require 'smime)
(require 'mm-decode)
(autoload 'message-narrow-to-headers "message")
(autoload 'message-fetch-field "message")
(defun mml-smime-sign (cont)
(when (null smime-keys)

View File

@ -449,6 +449,7 @@ If MML is non-nil, return the buffer up till the correspondent mml tag."
;; actually are hard newlines in the text.
(let (use-hard-newlines)
(when (and (string= type "text/plain")
(not (string= (cdr (assq 'sign cont)) "pgp"))
(or (null (assq 'format cont))
(string= (cdr (assq 'format cont))
"flowed"))
@ -590,7 +591,7 @@ If MML is non-nil, return the buffer up till the correspondent mml tag."
(insert-buffer-substring (cdr (assq 'buffer cont))))
((and (setq filename (cdr (assq 'filename cont)))
(not (equal (cdr (assq 'nofile cont)) "yes")))
(mm-insert-file-contents filename))
(mm-insert-file-contents filename nil nil nil nil t))
(t
(insert (cdr (assq 'contents cont)))))
(goto-char (point-min))

View File

@ -1174,7 +1174,7 @@ This command does not work if you use short group names."
(let ((range (nth 0 action))
(what (nth 1 action))
(marks (nth 2 action)))
(assert (or (eq what 'add) (eq what 'del)) t
(assert (or (eq what 'add) (eq what 'del)) nil
"Unknown request-set-mark action: %s" what)
(dolist (mark marks)
(setq nnfolder-marks (gnus-update-alist-soft

View File

@ -1,7 +1,7 @@
;;; nnheader.el --- header access macros for Gnus and its backends
;; Copyright (C) 1987, 1988, 1989, 1990, 1993, 1994, 1995, 1996,
;; 1997, 1998, 2000, 2001, 2002, 2003
;; 1997, 1998, 2000, 2001, 2002, 2003, 2004
;; Free Software Foundation, Inc.
;; Author: Masanobu UMEDA <umerin@flab.flab.fujitsu.junet>
@ -58,7 +58,7 @@ they will keep on jabbering all the time."
:group 'gnus-server
:type 'boolean)
(defvar nnheader-max-head-length 4096
(defvar nnheader-max-head-length 8192
"*Max length of the head of articles.
Value is an integer, nil, or t. nil means read in chunks of a file

View File

@ -923,7 +923,7 @@ Use the nov database for the current group if available."
(let ((range (nth 0 action))
(what (nth 1 action))
(marks (nth 2 action)))
(assert (or (eq what 'add) (eq what 'del)) t
(assert (or (eq what 'add) (eq what 'del)) nil
"Unknown request-set-mark action: %s" what)
(dolist (mark marks)
(setq nnml-marks (gnus-update-alist-soft

View File

@ -126,6 +126,25 @@ quoted-printable and base64 respectively.")
;;; Functions for encoding RFC2047 messages
;;;
(defun rfc2047-qp-or-base64 ()
"Return the type with which to encode the buffer.
This is either `base64' or `quoted-printable'."
(save-excursion
(let ((limit (min (point-max) (+ 2000 (point-min))))
(n8bit 0))
(goto-char (point-min))
(skip-chars-forward "\x20-\x7f\r\n\t" limit)
(while (< (point) limit)
(incf n8bit)
(forward-char 1)
(skip-chars-forward "\x20-\x7f\r\n\t" limit))
(if (or (< (* 6 n8bit) (- limit (point-min)))
;; Don't base64, say, a short line with a single
;; non-ASCII char when splitting parts by charset.
(= n8bit 1))
'quoted-printable
'base64))))
(defun rfc2047-narrow-to-field ()
"Narrow the buffer to the header on the current line."
(beginning-of-line)
@ -411,7 +430,7 @@ By default, the region is treated as containing addresses (see
;; encoding, choose the one that's shorter.
(save-restriction
(narrow-to-region b e)
(if (eq (mm-qp-or-base64) 'base64)
(if (eq (rfc2047-qp-or-base64) 'base64)
'B
'Q))))
(start (concat
@ -720,11 +739,15 @@ decodable."
;; Be more liberal to accept buggy base64 strings. If
;; base64-decode-string accepts buggy strings, this function could
;; be aliased to identity.
(case (mod (length string) 4)
(0 string)
(1 string) ;; Error, don't pad it.
(2 (concat string "=="))
(3 (concat string "="))))
(if (= 0 (mod (length string) 4))
string
(when (string-match "=+$" string)
(setq string (substring string 0 (match-beginning 0))))
(case (mod (length string) 4)
(0 string)
(1 string) ;; Error, don't pad it.
(2 (concat string "=="))
(3 (concat string "=")))))
(defun rfc2047-decode (charset encoding string)
"Decode STRING from the given MIME CHARSET in the given ENCODING.

View File

@ -1746,7 +1746,7 @@ REMOVE not nil, remove the ADDRESSES."
(goto-char (point-min))
(when (re-search-forward "^X-Spam: yes;" nil t)
spam-split-group))
(error "Error running spamoracle" status))))))))
(error "Error running spamoracle: %s" status))))))))
(defun spam-spamoracle-learn (articles article-is-spam-p &optional unregister)
"Run spamoracle in training mode."
@ -1768,8 +1768,8 @@ REMOVE not nil, remove the ADDRESSES."
`("-f" ,spam-spamoracle-database
"add" ,arg)
`("add" ,arg)))))
(when (not (eq 0 status))
(error "Error running spamoracle" status)))))))
(unless (eq 0 status)
(error "Error running spamoracle: %s" status)))))))
(defun spam-spamoracle-learn-ham (articles &optional unregister)
(spam-spamoracle-learn articles nil unregister))

View File

@ -5,13 +5,13 @@
;; Author: Vinicius Jose Latorre <viniciusjl@ig.com.br>
;; Maintainer: Vinicius Jose Latorre <viniciusjl@ig.com.br>
;; Time-stamp: <2004/09/21 22:51:58 vinicius>
;; Time-stamp: <2004/09/26 22:11:24 vinicius>
;; Keywords: wp, print, PostScript
;; Version: 6.8
;; Version: 6.8.1
;; X-URL: http://www.cpqd.com.br/~vinicius/emacs/
(defconst pr-version "6.8"
"printing.el, v 6.8 <2004/09/21 vinicius>
(defconst pr-version "6.8.1"
"printing.el, v 6.8.1 <2004/09/26 vinicius>
Please send all bug fixes and enhancements to
Vinicius Jose Latorre <viniciusjl@ig.com.br>
@ -125,16 +125,16 @@ Please send all bug fixes and enhancements to
;; Novices (First Users)
;; ---------------------
;;
;; First of all, take a glance of printing documentation only to have an idea
;; of what `printing' is capable.
;; First of all, see printing documentation only to get an idea of what
;; `printing' is capable.
;;
;; Then try to set the variables: `pr-ps-name', `pr-ps-printer-alist',
;; `pr-txt-name', `pr-txt-printer-alist' and `pr-path-alist'. These variables
;; are the main variables for printing processing.
;;
;; Now, please, see these variables documentation more in deep. You can do
;; this by typing C-h v pr-ps-name RET (for example) if you already loaded
;; printing package, or by browsing printing.el source file.
;; Now, please, see these variables documentation deeper. You can do this by
;; typing C-h v pr-ps-name RET (for example) if you already loaded printing
;; package, or by browsing printing.el source file.
;;
;; If the documentation isn't clear or if you find a way to improve the
;; documentation, please, send an email to maintainer. All printing users
@ -263,7 +263,8 @@ Please send all bug fixes and enhancements to
;; in Windows. The gsprint utility is faster than ghostscript to print
;; monochrome PostScript.
;;
;; The efficiency is similar to print non-monochrome PostScript file.
;; To print non-monochrome PostScript file, the efficiency of ghostscript
;; is similar to gsprint.
;;
;; Also the gsprint utility comes together with gsview distribution.
;;
@ -3887,7 +3888,7 @@ image in a file with that name."
(interactive (list (pr-ps-infile-preprint "Print preview ")))
(and (stringp filename) (file-exists-p filename)
(let* ((file (pr-expand-file-name filename))
(tempfile (pr-dosify-file-name (make-temp-name file))))
(tempfile (pr-dosify-file-name (make-temp-file file))))
;; gs use
(pr-call-process pr-gs-command
(format "-sDEVICE=%s" pr-gs-device)
@ -5221,7 +5222,8 @@ non-nil."
(defun pr-delete-file (file)
(and pr-delete-temp-file (delete-file file)))
(and pr-delete-temp-file (file-exists-p file)
(delete-file file)))
(defun pr-expand-file-name (filename)

View File

@ -1069,8 +1069,9 @@ static char *magick[] = {
(defvar breakpoint-disabled-icon nil
"Icon for disabled breakpoint in display margin")
(defvar breakpoint-bitmap nil
"Bitmap for breakpoint in fringe")
;; Bitmap for breakpoint in fringe
(define-fringe-bitmap 'breakpoint
"\x3c\x7e\xff\xff\xff\xff\x7e\x3c")
(defface breakpoint-enabled-bitmap-face
'((t
@ -1140,9 +1141,8 @@ static char *magick[] = {
(save-excursion
(goto-char (posn-point posn))
(if (or (posn-object posn)
(and breakpoint-bitmap
(eq (car (fringe-bitmaps-at-pos (posn-point posn)))
breakpoint-bitmap)))
(eq (car (fringe-bitmaps-at-pos (posn-point posn)))
'breakpoint))
(gud-remove nil)
(gud-break nil)))))))
@ -1831,11 +1831,7 @@ BUFFER nil or omitted means use the current buffer."
(if (>= (car (window-fringes)) 8)
(gdb-put-string
nil (1+ start)
`(left-fringe
,(or breakpoint-bitmap
(setq breakpoint-bitmap
(define-fringe-bitmap
"\x3c\x7e\xff\xff\xff\xff\x7e\x3c")))
`(left-fringe breakpoint
,(if enabled
'breakpoint-enabled-bitmap-face
'breakpoint-disabled-bitmap-face)))

View File

@ -1,6 +1,6 @@
;;; term.el --- general command interpreter in a window stuff
;;; Copyright (C) 1988, 1990, 1992, 1994, 1995 Free Software Foundation, Inc.
;;; Copyright (C) 1988, 1990, 1992, 1994, 1995, 2004 Free Software Foundation, Inc.
;; Author: Per Bothner <bothner@cygnus.com>
;; Based on comint mode written by: Olin Shivers <shivers@cs.cmu.edu>
@ -676,7 +676,6 @@ Buffer local variable.")
(defvar term-terminal-menu)
;;; Let's silence the byte-compiler -mm
(defvar term-ansi-at-eval-string nil)
(defvar term-ansi-at-host nil)
(defvar term-ansi-at-dir nil)
(defvar term-ansi-at-user nil)
@ -692,9 +691,6 @@ Buffer local variable.")
(defvar term-ansi-current-highlight 0)
(defvar term-ansi-current-reverse 0)
(defvar term-ansi-current-invisible 0)
(defvar term-ansi-default-fg 0)
(defvar term-ansi-default-bg 0)
(defvar term-ansi-current-temp 0)
;;; Four should be enough, if you want more, just add. -mm
(defvar term-terminal-more-parameters 0)
@ -915,6 +911,9 @@ is buffer-local.")
(define-key term-raw-map [backspace] 'term-send-backspace)
(define-key term-raw-map [home] 'term-send-home)
(define-key term-raw-map [end] 'term-send-end)
(define-key term-raw-map [S-prior] 'scroll-down)
(define-key term-raw-map [S-next] 'scroll-up)
(define-key term-raw-map [S-insert] 'term-paste)
(define-key term-raw-map [prior] 'term-send-prior)
(define-key term-raw-map [next] 'term-send-next)))
@ -930,6 +929,27 @@ is buffer-local.")
(put 'term-mode 'mode-class 'special)
;;; Use this variable as a display table for `term-mode'.
(defvar term-display-table
(let ((dt (or (copy-sequence standard-display-table)
(make-display-table)))
i)
;; avoid changing the display table for ^J
(setq i 0)
(while (< i 10)
(aset dt i (vector i))
(setq i (1+ i)))
(setq i 11)
(while (< i 32)
(aset dt i (vector i))
(setq i (1+ i)))
(setq i 128)
(while (< i 256)
(aset dt i (vector i))
(setq i (1+ i)))
dt))
(defun term-mode ()
"Major mode for interacting with an inferior interpreter.
The interpreter name is same as buffer name, sans the asterisks.
@ -979,6 +999,9 @@ Entry to this mode runs the hooks on `term-mode-hook'."
(setq major-mode 'term-mode)
(setq mode-name "Term")
(use-local-map term-mode-map)
;; we do not want indent to sneak in any tabs
(setq indent-tabs-mode nil)
(setq buffer-display-table term-display-table)
(make-local-variable 'term-home-marker)
(setq term-home-marker (copy-marker 0))
(make-local-variable 'term-saved-home-marker)
@ -1182,6 +1205,11 @@ without any interpretation."
((eq arg '-) -1)
(t (1- arg)))))))
(defun term-paste ()
"Insert the last stretch of killed text at point."
(interactive)
(term-send-raw-string (current-kill 0)))
;; Which would be better: "\e[A" or "\eOA"? readline accepts either.
;; For my configuration it's definitely better \eOA but YMMV. -mm
;; For example: vi works with \eOA while elm wants \e[A ...
@ -1193,8 +1221,8 @@ without any interpretation."
(defun term-send-end () (interactive) (term-send-raw-string "\e[4~"))
(defun term-send-prior () (interactive) (term-send-raw-string "\e[5~"))
(defun term-send-next () (interactive) (term-send-raw-string "\e[6~"))
(defun term-send-del () (interactive) (term-send-raw-string "\C-?"))
(defun term-send-backspace () (interactive) (term-send-raw-string "\C-H"))
(defun term-send-del () (interactive) (term-send-raw-string "\e[3~"))
(defun term-send-backspace () (interactive) (term-send-raw-string "\C-?"))
(defun term-char-mode ()
"Switch to char (\"raw\") sub-mode of term mode.
@ -1364,14 +1392,15 @@ The main purpose is to get rid of the local keymap."
"%s%s:li#%d:co#%d:cl=\\E[H\\E[J:cd=\\E[J:bs:am:xn:cm=\\E[%%i%%d;%%dH\
:nd=\\E[C:up=\\E[A:ce=\\E[K:ho=\\E[H:pt\
:al=\\E[L:dl=\\E[M:DL=\\E[%%dM:AL=\\E[%%dL:cs=\\E[%%i%%d;%%dr:sf=^J\
:te=\\E[2J\\E[?47l\\E8:ti=\\E7\\E[?47h\
:dc=\\E[P:DC=\\E[%%dP:IC=\\E[%%d@:im=\\E[4h:ei=\\E[4l:mi:\
:so=\\E[7m:se=\\E[m:us=\\E[4m:ue=\\E[m:md=\\E[1m:mr=\\E[7m:me=\\E[m\
:UP=\\E[%%dA:DO=\\E[%%dB:LE=\\E[%%dD:RI=\\E[%%dC\
:kl=\\EOD:kd=\\EOB:kr=\\EOC:ku=\\EOA:kN=\\E[6~:kP=\\E[5~:@7=\\E[4~:kh=\\E[1~\
:mk=\\E[8m:cb=\\E[1K:op=\\E[39;49m:Co#8:pa#64:AB=\\E[4%%dm:AF=\\E[3%%dm:cr=^M\
:bl=^G:do=^J:le=^H:ta=^I:se=\E[27m:ue=\E24m:"
:bl=^G:do=^J:le=^H:ta=^I:se=\E[27m:ue=\E24m\
:kb=^?:kD=^[[3~:sc=\E7:rc=\E8:"
;;; : -undefine ic
;;; don't define :te=\\E[2J\\E[?47l\\E8:ti=\\E7\\E[?47h\
"termcap capabilities supported")
;;; This auxiliary function cranks up the process for term-exec in
@ -1398,9 +1427,10 @@ The main purpose is to get rid of the local keymap."
(process-connection-type t)
;; We should suppress conversion of end-of-line format.
(inhibit-eol-conversion t)
;; inhibit-eol-conversion doesn't seem to do the job, but this does.
(coding-system-for-read 'unknown-unix)
)
;; The process's output contains not just chars but also binary
;; escape codes, so we need to see the raw output. We will have to
;; do the decoding by hand on the parts that are made of chars.
(coding-system-for-read 'binary))
(apply 'start-process name buffer
"/bin/sh" "-c"
(format "stty -nl echo rows %d columns %d sane 2>/dev/null;\
@ -2691,7 +2721,12 @@ See `term-prompt-regexp'."
(if (not funny) (setq funny str-length))
(cond ((> funny i)
(cond ((eq term-terminal-state 1)
(term-move-columns 1)
;; We are in state 1, we need to wrap
;; around. Go to the beginning of
;; the next line and switch to state
;; 0.
(term-down 1)
(term-move-columns (- (term-current-column)))
(setq term-terminal-state 0)))
(setq count (- funny i))
(setq temp (- (+ (term-horizontal-column) count)
@ -2700,6 +2735,7 @@ See `term-prompt-regexp'."
((> count temp) ;; Some chars fit.
;; This iteration, handle only what fits.
(setq count (- count temp))
(setq temp 0)
(setq funny (+ count i)))
((or (not (or term-pager-count
term-scroll-with-delete))
@ -2720,7 +2756,7 @@ See `term-prompt-regexp'."
;; following point if not eob nor insert-mode.
(let ((old-column (current-column))
columns pos)
(insert (substring str i funny))
(insert (decode-coding-string (substring str i funny) locale-coding-system))
(setq term-current-column (current-column)
columns (- term-current-column old-column))
(when (not (or (eobp) term-insert-mode))
@ -2739,7 +2775,7 @@ See `term-prompt-regexp'."
(setq term-terminal-state 1)))
(setq i (1- funny)))
((and (setq term-terminal-state 0)
(eq char ?\^I)) ; TAB
(eq char ?\^I)) ; TAB (terminfo: ht)
;; FIXME: Does not handle line wrap!
(setq count (term-current-column))
(setq count (+ count 8 (- (mod count 8))))
@ -2766,7 +2802,7 @@ See `term-prompt-regexp'."
(if (not (and term-kill-echo-list
(term-check-kill-echo-list)))
(term-down 1 t)))
((eq char ?\b)
((eq char ?\b) ;; (terminfo: cub1)
(term-move-columns -1))
((eq char ?\033) ; Escape
(setq term-terminal-state 2))
@ -2816,13 +2852,13 @@ See `term-prompt-regexp'."
((eq char ?M) ;; scroll reversed
(term-insert-lines 1)
(setq term-terminal-state 0))
((eq char ?7) ;; Save cursor
((eq char ?7) ;; Save cursor (terminfo: sc)
(term-handle-deferred-scroll)
(setq term-saved-cursor
(cons (term-current-row)
(term-horizontal-column)))
(setq term-terminal-state 0))
((eq char ?8) ;; Restore cursor
((eq char ?8) ;; Restore cursor (terminfo: rc)
(if term-saved-cursor
(term-goto (car term-saved-cursor)
(cdr term-saved-cursor)))
@ -2974,14 +3010,14 @@ See `term-prompt-regexp'."
((eq parameter 8)
(setq term-ansi-current-invisible 1))
;;; Reset reverse (i.e. terminfo rmso)
((eq parameter 24)
(setq term-ansi-current-reverse 0))
;;; Reset underline (i.e. terminfo rmul)
((eq parameter 27)
((eq parameter 24)
(setq term-ansi-current-underline 0))
;;; Reset reverse (i.e. terminfo rmso)
((eq parameter 27)
(setq term-ansi-current-reverse 0))
;;; Foreground
((and (>= parameter 30) (<= parameter 37))
(setq term-ansi-current-color (- parameter 29)))
@ -3095,7 +3131,7 @@ See `term-prompt-regexp'."
(term-goto
(1- term-terminal-previous-parameter)
(1- term-terminal-parameter)))
;; \E[A - cursor up
;; \E[A - cursor up (terminfo: cuu1)
((eq char ?A)
(term-handle-deferred-scroll)
(term-down (- (max 1 term-terminal-parameter)) t))
@ -3108,13 +3144,13 @@ See `term-prompt-regexp'."
;; \E[D - cursor left
((eq char ?D)
(term-move-columns (- (max 1 term-terminal-parameter))))
;; \E[J - clear to end of screen
;; \E[J - clear to end of screen (terminfo: ed, clear)
((eq char ?J)
(term-erase-in-display term-terminal-parameter))
;; \E[K - clear to end of line
;; \E[K - clear to end of line (terminfo: el, el1)
((eq char ?K)
(term-erase-in-line term-terminal-parameter))
;; \E[L - insert lines
;; \E[L - insert lines (terminfo: il, il1)
((eq char ?L)
(term-insert-lines (max 1 term-terminal-parameter)))
;; \E[M - delete lines
@ -3128,19 +3164,22 @@ See `term-prompt-regexp'."
(term-insert-spaces (max 1 term-terminal-parameter)))
;; \E[?h - DEC Private Mode Set
((eq char ?h)
(cond ((eq term-terminal-parameter 4)
(cond ((eq term-terminal-parameter 4) ;; (terminfo: smir)
(setq term-insert-mode t))
((eq term-terminal-parameter 47)
(term-switch-to-alternate-sub-buffer t))))
;; ((eq term-terminal-parameter 47) ;; (terminfo: smcup)
;; (term-switch-to-alternate-sub-buffer t))
))
;; \E[?l - DEC Private Mode Reset
((eq char ?l)
(cond ((eq term-terminal-parameter 4)
(cond ((eq term-terminal-parameter 4) ;; (terminfo: rmir)
(setq term-insert-mode nil))
((eq term-terminal-parameter 47)
(term-switch-to-alternate-sub-buffer nil))))
;; ((eq term-terminal-parameter 47) ;; (terminfo: rmcup)
;; (term-switch-to-alternate-sub-buffer nil))
))
;;; Modified to allow ansi coloring -mm
;; \E[m - Set/reset standard mode
;; \E[m - Set/reset modes, set bg/fg
;;(terminfo: smso,rmso,smul,rmul,rev,bold,sgr0,invis,op,setab,setaf)
((eq char ?m)
(when (= term-terminal-more-parameters 1)
(if (>= term-terminal-previous-parameter-4 0)
@ -3184,32 +3223,32 @@ The top-most line is line 0."
(not (and (= term-scroll-start 0)
(= term-scroll-end term-height))))))
(defun term-switch-to-alternate-sub-buffer (set)
;; If asked to switch to (from) the alternate sub-buffer, and already (not)
;; using it, do nothing. This test is needed for some programs (including
;; Emacs) that emit the ti termcap string twice, for unknown reason.
(term-handle-deferred-scroll)
(if (eq set (not (term-using-alternate-sub-buffer)))
(let ((row (term-current-row))
(col (term-horizontal-column)))
(cond (set
(goto-char (point-max))
(if (not (eq (preceding-char) ?\n))
(term-insert-char ?\n 1))
(setq term-scroll-with-delete t)
(setq term-saved-home-marker (copy-marker term-home-marker))
(set-marker term-home-marker (point)))
(t
(setq term-scroll-with-delete
(not (and (= term-scroll-start 0)
(= term-scroll-end term-height))))
(set-marker term-home-marker term-saved-home-marker)
(set-marker term-saved-home-marker nil)
(setq term-saved-home-marker nil)
(goto-char term-home-marker)))
(setq term-current-column nil)
(setq term-current-row 0)
(term-goto row col))))
;; (defun term-switch-to-alternate-sub-buffer (set)
;; ;; If asked to switch to (from) the alternate sub-buffer, and already (not)
;; ;; using it, do nothing. This test is needed for some programs (including
;; ;; Emacs) that emit the ti termcap string twice, for unknown reason.
;; (term-handle-deferred-scroll)
;; (if (eq set (not (term-using-alternate-sub-buffer)))
;; (let ((row (term-current-row))
;; (col (term-horizontal-column)))
;; (cond (set
;; (goto-char (point-max))
;; (if (not (eq (preceding-char) ?\n))
;; (term-insert-char ?\n 1))
;; (setq term-scroll-with-delete t)
;; (setq term-saved-home-marker (copy-marker term-home-marker))
;; (set-marker term-home-marker (point)))
;; (t
;; (setq term-scroll-with-delete
;; (not (and (= term-scroll-start 0)
;; (= term-scroll-end term-height))))
;; (set-marker term-home-marker term-saved-home-marker)
;; (set-marker term-saved-home-marker nil)
;; (setq term-saved-home-marker nil)
;; (goto-char term-home-marker)))
;; (setq term-current-column nil)
;; (setq term-current-row 0)
;; (term-goto row col))))
;; Default value for the symbol term-command-hook.
@ -3519,11 +3558,11 @@ all pending output has been dealt with."))
(if (not (bolp)) (insert-before-markers ?\n)))
(defun term-erase-in-line (kind)
(if (> kind 1) ;; erase left of point
(if (= kind 1) ;; erase left of point
(let ((cols (term-horizontal-column)) (saved-point (point)))
(term-vertical-motion 0)
(delete-region (point) saved-point)
(term-insert-char ?\n cols)))
(term-insert-char ? cols)))
(if (not (eq kind 1)) ;; erase right of point
(let ((saved-point (point))
(wrapped (and (zerop (term-horizontal-column))
@ -3622,7 +3661,7 @@ Should only be called when point is at the start of a screen line."
(term-insert-char ?\n lines)
(goto-char start)))
(defun term-set-output-log (name)
(defun term-start-output-log (name)
"Record raw inferior process output in a buffer."
(interactive (list (if term-log-buffer
nil
@ -3644,10 +3683,10 @@ Should only be called when point is at the start of a screen line."
(message "Recording terminal emulator output into buffer \"%s\""
(buffer-name term-log-buffer))))
(defun term-stop-photo ()
(defun term-stop-output-log ()
"Discontinue raw inferior process logging."
(interactive)
(term-set-output-log nil))
(term-start-output-log nil))
(defun term-show-maximum-output ()
"Put the end of the buffer at the bottom of the window."

View File

@ -102,7 +102,7 @@ expression, which is evaluated to get the string to insert.")
(defconst enriched-annotation-regexp "<\\(/\\)?\\([-A-Za-z0-9]+\\)>"
"Regular expression matching enriched-text annotations.")
(defconst enriched-translations
(defvar enriched-translations
'((face (bold-italic "bold" "italic")
(bold "bold")
(italic "italic")

View File

@ -1,3 +1,14 @@
2004-09-28 Richard M. Stallman <rms@gnu.org>
* text.texi (Special Properties): Clarify line-spacing and line-height.
* searching.texi (Regexp Search): Add looking-back.
2004-09-25 Luc Teirlinck <teirllm@auburn.edu>
* display.texi: Correct typos.
(Image Descriptors): Correct xref's.
2004-09-25 Richard M. Stallman <rms@gnu.org>
* text.texi (Special Properties): Cleanups in `cursor'.

View File

@ -2716,7 +2716,7 @@ center the bitmap. The allowed values are @code{top}, @code{center},
or @code{bottom}.
The @var{align} argument may also be a list @code{(@var{align}
@var{periodic})} where @var{align} is intepreted as described above.
@var{periodic})} where @var{align} is interpreted as described above.
If @var{periodic} is non-@code{nil}, it specifies that the rows in
@code{bits} should be repeated enough times to reach the specified
height.
@ -2988,7 +2988,7 @@ edge, center, or right edge of the text area.
used with @code{:align-to} to specify that the position is relative to
the left edge of the given area. Once the base offset for a relative
position has been set (by the first occurrence of one of these
symbols), further occurences of these symbols are interpreted as the
symbols), further occurrences of these symbols are interpreted as the
width of the specified area. For example, to align to the center of
the left-margin, use
@ -3181,7 +3181,7 @@ are supported only if particular support libraries are installed on
your machine. In some environments, Emacs allows loading image
libraries on demand; if so, the variable @code{image-library-alist}
can be used to modify the set of known names for these dynamic
libraries (though it is not posible to add new image formats).
libraries (though it is not possible to add new image formats).
The supported image formats include XBM, XPM (needing the
libraries @code{libXpm} version 3.4k and @code{libz}), GIF (needing
@ -3409,7 +3409,7 @@ specifying @code{:mask nil}.
@item :pointer @var{shape}
This specifies the pointer shape when the mouse pointer is over this
image. @xref{Pointer Shapes}, for available pointer shapes.
image. @xref{Pointer Shape}, for available pointer shapes.
@item :map @var{map}
This associates an image map of @dfn{hot spots} with this image.
@ -3437,7 +3437,7 @@ When the mouse pointer is above a hot-spot area of an image, the
property it defines a tool-tip for the hot-spot, and if it contains
a @code{pointer} property, it defines the shape of the mouse cursor when
it is over the hot-spot.
@xref{Pointer Shapes}, for available pointer shapes.
@xref{Pointer Shape}, for available pointer shapes.
When you click the mouse when the mouse pointer is over a hot-spot, an
event is composed by combining the @var{id} of the hot-spot with the

View File

@ -975,6 +975,32 @@ comes back" twice.
@end example
@end defun
@defun looking-back regexp &optional limit
This function returns @code{t} if @var{regexp} matches text before
point, ending at point, and @code{nil} otherwise.
Because regular expression matching works only going forward, this is
implemented by searching backwards from point for a match that ends at
point. That can be quite slow if it has to search a long distance.
You can bound the time required by specifying @var{limit}, which says
not to search before @var{limit}. In this case, the match that is
found must begin at or after @var{limit}.
@example
@group
---------- Buffer: foo ----------
I read "@point{}The cat in the hat
comes back" twice.
---------- Buffer: foo ----------
(looking-back "read \"" 3)
@result{} t
(looking-back "read \"" 4)
@result{} nil
@end group
@end example
@end defun
@node POSIX Regexps
@section POSIX Regular Expression Searching

View File

@ -2989,12 +2989,11 @@ for possible pointer shapes.
@item line-spacing
@kindex line-spacing @r{(text property)}
A newline can have a @code{line-spacing} text or overlay property
that controls the height of the corresponding display line.
@c ??? Which display line is "corresponding"?
The @code{line-spacing} property overrides the default frame line
spacing and the buffer local @code{line-spacing} variable. We will
call the property value @var{line-spacing}.
A newline can have a @code{line-spacing} text or overlay property that
controls the height of the display line ending with that newline. The
property value overrides the default frame line spacing and the buffer
local @code{line-spacing} variable. We will call the property value
@var{line-spacing}.
If @var{line-spacing} is a positive integer, the value specifies
additional vertical space, below the display line, in pixels.
@ -3012,18 +3011,13 @@ is equivalent to using the @code{line-height} property.
@item line-height
@kindex line-height @r{(text property)}
A newline can have a @code{line-height} text or overlay property that
controls the total height of the corresponding display line.
@c ??? Which display line is "corresponding"?
controls the total height of the display line ending in that newline.
We will call the property value @var{line-height}.
If @var{line-height} is 0, the newline does not contribute to the
height of the display row; instead the height of the newline glyph is
reduced.
@c ??? That is not clear. Reduced how much?
In that case, any @code{line-spacing} property on
this newline is ignored. This can be used to tile small images or
image slices without adding blank areas between the images.
@c ??? Precisely which of these features does ``this'' mean?
If @var{line-height} is 0, the height of the line is determined solely
from its contents; nothing is added. Any @code{line-spacing} property
on this newline is ignored. This case is useful for tiling small
images or image slices without adding blank areas between the images.
If @var{line-height} is a positive integer, the value specifies the
minimum line height in pixels. The line's ascent height is

View File

@ -1,3 +1,63 @@
2004-09-28 Kim F. Storm <storm@cua.dk>
* display.texi (Display Custom) <indicate-buffer-boundaries>:
Align with new functionality.
2004-09-26 Jesper Harder <harder@ifa.au.dk>
* sieve.texi (Manage Sieve API): nil -> @code{nil}.
* pgg.texi (User Commands, Backend methods): do.
* gnus.texi: Markup fixes.
(Setting Process Marks): Fix `M P a' entry.
* emacs-mime: Fixes.
2004-09-23 Reiner Steib <Reiner.Steib@gmx.de>
* gnus-faq.texi ([5.12]): Fix code example for FQDN in Message-Ids
again.
Use 5.10 instead of 5.10.0.
2004-09-20 Lars Magne Ingebrigtsen <larsi@gnus.org>
* gnus.texi (Summary Mail Commands): S D e.
2004-09-20 Raymond Scholz <ray-2004@zonix.de> (tiny change)
* gnus.texi (Misc Article): Refer to `Summary Buffer Mode Line' in
the gnus-article-mode-line-format section.
2004-09-20 Helmut Waitzmann <Helmut.Waitzmann@web.de> (tiny change)
* gnus.texi (Various Summary Stuff): Fix the documentation for
gnus-newsgroup-variables.
2004-09-20 Reiner Steib <Reiner.Steib@gmx.de>
* gnus.texi (MIME Commands): Added
gnus-mime-display-multipart-as-mixed,
gnus-mime-display-multipart-alternative-as-mixed,
gnus-mime-display-multipart-related-as-mixed.
(Mail Source Customization): Clarify `mail-source-directory'.
(Splitting Mail): Mention gnus-group-find-new-groups.
(SpamOracle): Fixed typo.
* gnus-faq.texi: Untabify.
([6.3]): nnir.el is in contrib directory.
* message.texi (News Headers): Clarify how a unique ID is created.
* gnus.texi (Batching Agents): Fixed typo in example. Reported
by Hiroshi Fujishima <pooh@nature.tsukuba.ac.jp>.
2004-09-20 Andre Srinivasan <andre@e2open.com>
* gnus.texi (Group Parameters): Added more on hooks. (Small
change.)
2004-09-20 Florian Weimer <fw@deneb.enyo.de>
* gnus.texi (Charsets): Point to relevant section in emacs-mime.
2004-09-22 Luc Teirlinck <teirllm@auburn.edu>
* display.texi (Display Custom): Remove stray `@end defvar'.

View File

@ -1007,22 +1007,26 @@ This can be combined with up and down arrow bitmaps shown at the top
and bottom of the left or right fringe if the window can be scrolled
in either direction.
The buffer-local variable @code{indicate-buffer-boundaries} controls
The buffer-local variable @code{indicate-buffer-boundaries} controls
how the buffer boundaries and window scrolling is indicated in the
fringes.
If the value is @code{left} or @code{right}, both angle and arrow
If the value is @code{left} or @code{right}, both angle and arrow
bitmaps are displayed in the left or right fringe, respectively.
Any other non-@code{nil} value causes the bitmap on the top line to be
displayed in the left fringe, and the bitmap on the bottom line in the
right fringe.
If value is a cons @code{(angles . arrows)}, the car specifies the
position of the angle bitmaps, and the cdr specifies the position of
the arrow bitmaps. For example, @code{(t . right)} places the top
angle bitmap in left fringe, the bottom angle bitmap in right fringe,
and both arrow bitmaps in right fringe. To show just the angle
bitmaps in the left fringe, but no arrow bitmaps, use @code{(left . nil)}.
If value is an alist, each element @code{(@var{indicator} .
@var{position})} specifies the position of one of the indicators.
The @var{indicator} must be one of @code{top}, @code{bottom},
@code{up}, @code{down}, or @code{t} which specifies the default
position for the indicators not present in the alist.
The @var{position} is one of @code{left}, @code{right}, or @code{ni}
which specifies not to show this indicator.
For example, @code{((top . left) (t . right))} places the top angle
bitmap in left fringe, the bottom angle bitmap in right fringe, and
both arrow bitmaps in right fringe. To show just the angle bitmaps in
the left fringe, but no arrow bitmaps, use @code{((top . left)
(bottom . left))}.
@vindex default-indicate-buffer-boundaries
The value of the variable @code{default-indicate-buffer-boundaries}

View File

@ -328,7 +328,7 @@ you could say something like:
@item mm-inline-large-images
@vindex mm-inline-large-images
When displaying inline images that are larger than the window, XEmacs
When displaying inline images that are larger than the window, Emacs
does not enable scrolling, which means that you cannot see the whole
image. To prevent this, the library tries to determine the image size
before displaying it inline, and if it doesn't fit the window, the

View File

@ -102,7 +102,7 @@ Gnus is a Usenet Newsreader and Electronic Mail User Agent implemented
@menu
* [1.1]:: What is the latest version of Gnus?
* [1.2]:: What's new in 5.10.0?
* [1.2]:: What's new in 5.10?
* [1.3]:: Where and how to get Gnus?
* [1.4]:: What to do with the tarball now?
* [1.5]:: Which version of Emacs do I need?
@ -119,7 +119,7 @@ What is the latest version of Gnus?
Answer:
Jingle please: Gnus 5.10.0 is released, get it while it's
Jingle please: Gnus 5.10 is released, get it while it's
hot! As well as the step in version number is rather
small, Gnus 5.10 has tons of new features which you
shouldn't miss, however if you are cautious, you might
@ -131,7 +131,7 @@ Answer:
@end ifnottex
@subsubheading Question 1.2:
What's new in 5.10.0?
What's new in 5.10?
Answer:
@ -227,7 +227,7 @@ Which version of Emacs do I need?
Answer:
Gnus 5.10.0 requires an Emacs version that is greater
Gnus 5.10 requires an Emacs version that is greater
than or equal to Emacs 20.7 or XEmacs 21.1.
@ifnottex
@ -440,7 +440,7 @@ the line
@example
SET HOME=C:\myhome
@end example
@noindent
@ -548,9 +548,9 @@ Answer:
@example
(add-to-list 'gnus-secondary-select-methods
'(nntp "news.yourSecondProvider.net"))
'(nntp "news.yourSecondProvider.net"))
(add-to-list 'gnus-secondary-select-methods
'(nntp "news.yourThirdProvider.net"))
'(nntp "news.yourThirdProvider.net"))
@end example
@ifnottex
@ -745,9 +745,9 @@ Answer:
(add-to-list
'gnus-secondary-select-methods
'(nnimap "Give the baby a name"
(nnimap-address "imap.yourProvider.net")
(nnimap-port 143)
(nnimap-list-pattern "archive.*")))
(nnimap-address "imap.yourProvider.net")
(nnimap-port 143)
(nnimap-list-pattern "archive.*")))
@end example
@noindent
@ -877,7 +877,7 @@ Answer:
fetched when you enter a group and slow down the process of entering a group).
If you already use Gnus 5.10.0, you can say
If you already use Gnus 5.10, you can say
@samp{/o N}
In summary buffer to load the last N messages, this feature is not available in 5.8.8
@ -1000,7 +1000,7 @@ Answer:
Answer:
Only if you use Gnus 5.10.0 or younger. In this case you've got the
Only if you use Gnus 5.10 or younger. In this case you've got the
choice between w3, w3m, links, lynx and html2text, which
one is used can be specified in the variable
mm-text-html-renderer, so if you want links to render your
@ -1033,7 +1033,7 @@ Answer:
@samp{W Y f} gives you full deuglify.
See @samp{W Y C-h} or
have a look at the menus for other deuglifications).
Outlook deuglify is only available since Gnus 5.10.0.
Outlook deuglify is only available since Gnus 5.10.
@ifnottex
@node [4.9], [4.10], [4.8], FAQ 4 - Reading messages
@ -1204,8 +1204,8 @@ Answer:
@example
(gnus-add-configuration
'(article (vertical 1.0
(summary .35 point)
(article 1.0))))
(summary .35 point)
(article 1.0))))
@end example
@ -1252,7 +1252,7 @@ Answer:
sadly hard tabulators are broken in 5.8.8.
Since 5.10.0, Gnus offers you some very nice new specifiers,
Since 5.10, Gnus offers you some very nice new specifiers,
e.g. %B which draws a thread-tree and %&user-date which
gives you a date where the details are dependent of the
articles age. Here's an example which uses both:
@ -1771,7 +1771,7 @@ Answer:
@end example
@noindent
if you already use Gnus 5.10.0, if you still use 5.8.8 or
if you already use Gnus 5.10, if you still use 5.8.8 or
5.9 try this instead:
@ -1793,7 +1793,7 @@ Answer:
Answer:
Since 5.10.0 Gnus doesn't generate a sender header by
Since 5.10 Gnus doesn't generate a sender header by
default. For older Gnus' try this in ~/.gnus:
@ -1851,10 +1851,10 @@ Answer:
@end example
@noindent
in ~/.gnus. If you use Gnus 5.9 or ealier, you can use this
instead:
instead (works for newer versions a well):
@example
(eval-after-load "message"
'(let (myfqdn "yourmachine.yourdomain.tld");; <-- Edit this!
'(let ((fqdn "yourmachine.yourdomain.tld"));; <-- Edit this!
(if (boundp 'message-user-fqdn)
(setq message-user-fqdn fqdn)
(gnus-message 1 "Redefining `message-make-fqdn'.")
@ -2021,7 +2021,7 @@ Answer:
the raw message, look for the message-id, and say
@samp{M-^ the@@message.id RET} in a
summary buffer.
Since Gnus 5.10.0 there's also a Gnus interface for
Since Gnus 5.10 there's also a Gnus interface for
groups.google.com which you can call with
@samp{G W}) in group buffer.
@ -2046,9 +2046,9 @@ Answer:
engines and with the help of nnir you can search trough
the indexed mail and generate a temporary group with all
messages which met your search criteria. If this sound
cool to you get nnir.el from
@uref{ftp://ls6-ftp.cs.uni-dortmund.de/pub/src/emacs/}
or @uref{ftp://ftp.is.informatik.uni-duisburg.de/pub/src/emacs/}.
cool to you get nnir.el from the contrib directory of the Gnus
distribution or
@uref{http://quimby.gnus.org/cgi-bin/cvsweb.cgi/~checkout~/gnus/contrib/nnir.el?rev=HEAD&content-type=text/plain}
Instructions on how to use it are at the top of the file.
@ifnottex
@ -2231,7 +2231,7 @@ Answer:
later when you're offline. It kind of mimics offline
newsreaders like e.g. Forte Agent. If you want to use
the Agent place the following in ~/.gnus if you are
still using 5.8.8 or 5.9 (it's the default since 5.10.0):
still using 5.8.8 or 5.9 (it's the default since 5.10):
@example
@ -2524,7 +2524,7 @@ Answer:
@noindent
in ~/.emacs. If you don't care about width of CJK
characters or use Gnus 5.10.0 or younger together with a
characters or use Gnus 5.10 or younger together with a
recent GNU Emacs, you should say
@ -2538,7 +2538,7 @@ Answer:
two suggestions). Finally if you are still using 5.8.8
or 5.9 and experience speed problems with summary
buffer generation, you definitely should update to
5.10.0 since there quite some work on improving it has
5.10 since there quite some work on improving it has
been done.
@ifnottex

View File

@ -3013,11 +3013,23 @@ tag can be removed from the article subjects in the summary buffer for
the group by putting @code{(gnus-list-identifiers "DOCBOOK-APPS:")}
into the group parameters for the group.
This can also be used as a group-specific hook function, if you'd like.
If you want to hear a beep when you enter a group, you could put
something like @code{(dummy-variable (ding))} in the parameters of that
group. @code{dummy-variable} will be set to the result of the
@code{(ding)} form, but who cares?
This can also be used as a group-specific hook function. If you want to
hear a beep when you enter a group, you could put something like
@code{(dummy-variable (ding))} in the parameters of that group.
@code{dummy-variable} will be set to the (meaningless) result of the
@code{(ding)} form.
Alternatively, since the VARIABLE becomes local to the group, this
pattern can be used to temporarily change a hook. For example, if the
following is added to a group parameter
@lisp
(gnus-summary-prepared-hook
'(lambda nil (local-set-key "d" (local-key-binding "n"))))
@end lisp
when the group is entered, the 'd' key will not mark the article as
expired.
@end table
@ -5368,6 +5380,13 @@ to the @code{root} account, you may want to resend it to
This command understands the process/prefix convention
(@pxref{Process/Prefix}).
@item S D e
@kindex S D e (Summary)
@findex gnus-summary-resend-message-edit
Like the previous command, but will allow you to edit the message as
if it were a new message before resending.
@item S O m
@kindex S O m (Summary)
@findex gnus-uu-digest-mail-forward
@ -6187,7 +6206,7 @@ Mark all series that have already had some articles marked
@item M P a
@kindex M P a (Summary)
@findex gnus-uu-mark-all
Mark all articles in series order (@code{gnus-uu-mark-series}).
Mark all articles in series order (@code{gnus-uu-mark-all}).
@item M P b
@kindex M P b (Summary)
@ -9328,6 +9347,26 @@ Here's an example function the does the latter:
@item gnus-mime-multipart-functions
Alist of @acronym{MIME} multipart types and functions to handle them.
@vindex gnus-mime-display-multipart-alternative-as-mixed
@item gnus-mime-display-multipart-alternative-as-mixed
Display "multipart/alternative" parts as "multipart/mixed".
@vindex gnus-mime-display-multipart-related-as-mixed
@item gnus-mime-display-multipart-related-as-mixed
Display "multipart/related" parts as "multipart/mixed".
If displaying "text/html" is discouraged, see
@code{mm-discouraged-alternatives} in @ref{Display Customization,
Display Customization, , emacs-mime, Emacs-Mime Manual}. Images or
other material inside a "multipart/related" part might be overlooked
when this variable is nil.
@vindex gnus-mime-display-multipart-as-mixed
@item gnus-mime-display-multipart-as-mixed
Display "multipart" parts as "multipart/mixed". If t, it overrides nil
values of @code{gnus-mime-display-multipart-alternative-as-mixed} and
@code{gnus-mime-display-multipart-related-as-mixed}.
@vindex mm-file-name-rewrite-functions
@item mm-file-name-rewrite-functions
List of functions used for rewriting file names of @acronym{MIME} parts.
@ -9424,6 +9463,10 @@ encode using quoted-printable) or @code{t} (always use 8bit).
@cindex coding system aliases
@cindex preferred charset
@xref{Encoding Customization, , Encoding Customization, emacs-mime,
The Emacs MIME Manual}, for additional variables that control which
MIME charsets are used when sending messages.
Other charset tricks that may be useful, although not Gnus-specific:
If there are several @acronym{MIME} charsets that encode the same Emacs
@ -10136,11 +10179,19 @@ the list in one particular group:
@vindex gnus-newsgroup-variables
@item gnus-newsgroup-variables
A list of newsgroup (summary buffer) local variables, or cons of
variables and their default values (when the default values are not
@code{nil}), that should be made global while the summary buffer is
active. These variables can be used to set variables in the group
parameters while still allowing them to affect operations done in
other buffers. For example:
variables and their default expressions to be evalled (when the default
values are not @code{nil}), that should be made global while the summary
buffer is active.
Note: The default expressions will be evaluated (using function
@code{eval}) before assignment to the local variable rather than just
assigned to it. If the default expression is the symbol @code{global},
that symbol will not be evaluated but the global value of the local
variable will be used instead.
These variables can be used to set variables in the group parameters
while still allowing them to affect operations done in other
buffers. For example:
@lisp
(setq gnus-newsgroup-variables
@ -10149,6 +10200,7 @@ other buffers. For example:
"^From:\\|^Newsgroups:\\|^Subject:\\|^Date:\\|^To:")))
@end lisp
Also @pxref{Group Parameters}.
@end table
@ -11269,9 +11321,9 @@ no more new text to scroll in. The default is @code{nil}.
@vindex gnus-article-mode-line-format
@item gnus-article-mode-line-format
This variable is a format string along the same lines as
@code{gnus-summary-mode-line-format} (@pxref{Mode Line Formatting}). It
accepts the same format specifications as that variable, with two
extensions:
@code{gnus-summary-mode-line-format} (@pxref{Summary Buffer Mode
Line}). It accepts the same format specifications as that variable,
with two extensions:
@table @samp
@ -13203,7 +13255,9 @@ expression should @emph{always} be @samp{*} so that it matches any mails
that haven't been matched by any of the other regexps. (These rules are
processed from the beginning of the alist toward the end. The first
rule to make a match will ``win'', unless you have crossposting enabled.
In that case, all matching rules will ``win''.)
In that case, all matching rules will ``win''.) When new groups are
created by splitting mail, you may want to run
@code{gnus-group-find-new-groups} to see the new groups.
If you like to tinker with this yourself, you can set this variable to a
function of your choice. This function will be called without any
@ -13771,10 +13825,10 @@ If non-@code{nil}, ignore errors when reading mail from a mail source.
@item mail-source-directory
@vindex mail-source-directory
Directory where files (if any) will be stored. The default is
@file{~/Mail/}. At present, the only thing this is used for is to say
where the incoming files will be stored if the previous variable is
@code{nil}.
Directory where incoming mail source files (if any) will be stored. The
default is @file{~/Mail/}. At present, the only thing this is used for
is to say where the incoming files will be stored if the variable
@code{mail-source-delete-incoming} is @code{nil} or a number.
@item mail-source-incoming-file-prefix
@vindex mail-source-incoming-file-prefix
@ -16571,7 +16625,7 @@ follows:
This instructs the @code{imap.el} package to log any exchanges with
the server. The log is stored in the buffer @samp{*imap-log*}. Look
for error messages, which sometimes are tagged with the keyword
@code{BAD} - but when submitting a bug, make sure to include all the
@code{BAD}---but when submitting a bug, make sure to include all the
data.
@node Other Sources
@ -18246,8 +18300,8 @@ placeholders if you care (See @code{gnus-auto-goto-ignores}).
While it may be obvious to all, the only headers and articles
available while unplugged are those headers and articles that were
fetched into the Agent while previously plugged. To put it another
way, "If you forget to fetch something while plugged, you might have a
less than satisfying unplugged session". For this reason, the Agent
way, ``If you forget to fetch something while plugged, you might have a
less than satisfying unplugged session''. For this reason, the Agent
adds two visual effects to your summary buffer. These effects display
the download status of each article so that you always know which
articles will be available when unplugged.
@ -18624,7 +18678,7 @@ following incantation:
@example
#!/bin/sh
emacs -batch -l ~/.emacs -f -l ~/.gnus.el gnus-agent-batch >/dev/null 2>&1
emacs -batch -l ~/.emacs -l ~/.gnus.el gnus-agent-batch >/dev/null 2>&1
@end example
@ -20436,8 +20490,8 @@ something like:
...
@end example
Then that means "score on the from header of the grandparent of the
current article". An indirection is quite fast, but it's better to say:
Then that means ``score on the from header of the grandparent of the
current article''. An indirection is quite fast, but it's better to say:
@example
(1-
@ -22656,7 +22710,7 @@ entering a group. Thus, entering a group with unseen or unread
articles becomes the substitute for checking incoming mail. Whether
only unseen articles or all unread articles will be processed is
determined by the @code{spam-autodetect-recheck-messages}. When set
to t, unread messages will be rechecked.
to @code{t}, unread messages will be rechecked.
@code{spam-autodetect} grants the user at once more and less control
of spam filtering. The user will have more control over each group's

View File

@ -1551,8 +1551,8 @@ This optional header will be computed by Message.
@cindex Sun
@cindex i-did-not-set--mail-host-address--so-tickle-me
This required header will be generated by Message. A unique ID will be
created based on the date, time, user name and system name. For the
domain part, message will look (in this order) at
created based on the date, time, user name (for the local part) and the
domain part. For the domain part, message will look (in this order) at
@code{message-user-fqdn}, @code{system-name}, @code{mail-host-address}
and @code{message-user-mail-address} (i.e. @code{user-mail-address})
until a probably valid fully qualified domain name (FQDN) was found.

View File

@ -135,8 +135,9 @@ would be asked about the recipients.
If encryption is successful, it replaces the current region contents (in
the accessible portion) with the resulting data.
If optional argument @var{sign} is non-nil, the function is request to
do a combined sign and encrypt. This currently only work with GnuPG.
If optional argument @var{sign} is non-@code{nil}, the function is
request to do a combined sign and encrypt. This currently only work
with GnuPG.
@end deffn
@deffn Command pgg-decrypt-region start end
@ -301,9 +302,9 @@ keyrings.
@deffn Method pgg-scheme-encrypt-region scheme start end recipients &optional sign
Encrypt the current region between @var{start} and @var{end} for
@var{recipients}. If @var{sign} is non-nil, do a combined sign and
encrypt. If encryption is successful, it returns @code{t}, otherwise
@code{nil}.
@var{recipients}. If @var{sign} is non-@code{nil}, do a combined sign
and encrypt. If encryption is successful, it returns @code{t},
otherwise @code{nil}.
@end deffn
@deffn Method pgg-scheme-decrypt-region scheme start end

View File

@ -277,7 +277,7 @@ Sets the default port to use, the suggested port number is @code{2000}.
@item sieve-manage-log
@vindex sieve-manage-log
If non-nil, should be a string naming a buffer where a protocol trace
If non-@code{nil}, should be a string naming a buffer where a protocol trace
is dumped (for debugging purposes).
@end table
@ -313,7 +313,8 @@ List scripts on the server.
@item sieve-manage-havespace
@findex sieve-manage-havespace
Returns non-nil iff server have roam for a script of given size.
Returns non-@code{nil} iff server have roam for a script of given
size.
@item sieve-manage-getscript
@findex sieve-manage-getscript

View File

@ -1,3 +1,41 @@
2004-09-29 Kim F. Storm <storm@cua.dk>
* dispextern.h (valid_fringe_bitmap_p): Fix prototype.
* fringe.c (Vfringe_bitmaps): New variable.
(syms_of_fringe): DEFVAR_LISP it.
(valid_fringe_bitmap_p): Rename from valid_fringe_bitmap_id_p.
Change arg to Lisp_Object and fail if not an integer.
(get_fringe_bitmap_name, resolve_fringe_bitmap)
(destroy_fringe_bitmap): New functions.
(Fdestroy_fringe_bitmap): Change arg to bitmap symbol. Use
destroy_fringe_bitmap. Remove symbol from Vfringe_bitmaps and
clear its fringe property.
(init_fringe_bitmap): Use destroy_fringe_bitmap instead of
Fdestroy_fringe_bitmap.
(Fdefine_fringe_bitmap): Add BITMAP arg specifying new or existing
bitmap symbol; remove WHICH arg. Add symbol to Vfringe_bitmaps
and set fringe property. Signal error if no free slots.
(Fset_fringe_bitmap_face): Change arg to bitmap symbol.
(Ffringe_bitmaps_at_pos): Return bitmap symbols instead of numbers.
* xdisp.c (handle_single_display_prop): Fringe bitmaps are now
symbols with a fringe property.
2004-09-27 Kim F. Storm <storm@cua.dk>
* buffer.c (syms_of_buffer) <indicate-buffer-boundaries>:
Doc fix. Format may now be a symbol or alist, not a cons.
* fringe.c (update_window_fringes): Handle new formats of
indicate-buffer-boundaries (symbol or alist). No longer
allow a simple cons.
(Ffringe_bitmaps_at_pos): Use nil value for no bitmap.
2004-09-25 Jan Dj,Ad(Brv <jan.h.d@swipnet.se>
* config.in: Rebuild
2004-09-24 Jan Dj,Ad(Brv <jan.h.d@swipnet.se>
* config.in: Rebuild.

View File

@ -5698,16 +5698,20 @@ If non-nil, the first and last line of the buffer are marked in the fringe
of a window on window-systems with angle bitmaps, or if the window can be
scrolled, the top and bottom line of the window are marked with up and down
arrow bitmaps.
If value is `left' or `right', both angle and arrow bitmaps are displayed in
the left or right fringe, resp. Any other non-nil value causes the
bitmap on the top line to be displayed in the left fringe, and the
bitmap on the bottom line in the right fringe.
If value is a cons (ANGLES . ARROWS), the car specifies the position
of the angle bitmaps, and the cdr specifies the position of the arrow
bitmaps. For example, (t . right) places the top angle bitmap in left
fringe, the bottom angle bitmap in right fringe, and both arrow
If value is a symbol `left' or `right', both angle and arrow bitmaps
are displayed in the left or right fringe, resp.
If value is an alist, each element (INDICATOR . POSITION) specifies
the position of one of the indicators. INDICATOR is one of `top',
`bottom', `up', `down', or t, which specifies the default position,
and POSITION is one of `left', `right', or nil, meaning do not show
this indicator.
For example, ((top . left) (t . right)) places the top angle bitmap in
left fringe, the bottom angle bitmap in right fringe, and both arrow
bitmaps in right fringe. To show just the angle bitmaps in the left
fringe, but no arrow bitmaps, use (left . nil). */);
fringe, but no arrow bitmaps, use ((top . left) (bottom . left)). */);
DEFVAR_PER_BUFFER ("scroll-up-aggressively",
&current_buffer->scroll_up_aggressively, Qnil,

View File

@ -136,7 +136,7 @@ Boston, MA 02111-1307, USA. */
/* Define to 1 if you have the `euidaccess' function. */
#undef HAVE_EUIDACCESS
/* Define to 1 if this OS has exec shield. */
/* Define to 1 if this OS has exec shield and we can handle it. */
#undef HAVE_EXECSHIELD
/* Define to 1 if you have the <fcntl.h> header file. */

View File

@ -2634,7 +2634,7 @@ extern int x_intersect_rectangles P_ ((XRectangle *, XRectangle *,
/* Defined in fringe.c */
int valid_fringe_bitmap_id_p (int);
int valid_fringe_bitmap_p (Lisp_Object);
void draw_fringe_bitmap P_ ((struct window *, struct glyph_row *, int));
void draw_row_fringe_bitmaps P_ ((struct window *, struct glyph_row *));
void draw_window_fringes P_ ((struct window *));

View File

@ -31,12 +31,22 @@ Boston, MA 02111-1307, USA. */
#ifdef HAVE_WINDOW_SYSTEM
extern Lisp_Object Qfringe;
extern Lisp_Object Qtop, Qbottom, Qcenter;
extern Lisp_Object Qup, Qdown, Qleft, Qright;
/* Non-nil means that newline may flow into the right fringe. */
Lisp_Object Voverflow_newline_into_fringe;
/* List of known fringe bitmap symbols.
The fringe bitmap number is stored in the `fringe' property on
those symbols. Names for the built-in bitmaps are installed by
loading fringe.el.
*/
Lisp_Object Vfringe_bitmaps;
enum fringe_bitmap_type
{
@ -443,15 +453,90 @@ static int max_used_fringe_bitmap = MAX_STANDARD_FRINGE_BITMAPS;
/* Return 1 if FRINGE_ID is a valid fringe bitmap id. */
int
valid_fringe_bitmap_id_p (fringe_id)
int fringe_id;
valid_fringe_bitmap_p (bitmap)
Lisp_Object bitmap;
{
return (fringe_id >= NO_FRINGE_BITMAP
&& fringe_id < max_used_fringe_bitmap
&& (fringe_id < MAX_STANDARD_FRINGE_BITMAPS
|| fringe_bitmaps[fringe_id] != NULL));
int bn;
if (!INTEGERP (bitmap))
return 0;
bn = XINT (bitmap);
return (bn >= NO_FRINGE_BITMAP
&& bn < max_used_fringe_bitmap
&& (bn < MAX_STANDARD_FRINGE_BITMAPS
|| fringe_bitmaps[bn] != NULL));
}
/* Get fringe bitmap name for bitmap number BN.
Found by traversing Vfringe_bitmaps comparing BN to the
fringe property for each symbol.
Return BN if not found in Vfringe_bitmaps. */
static Lisp_Object
get_fringe_bitmap_name (bn)
int bn;
{
Lisp_Object bitmaps;
Lisp_Object num;
/* Zero means no bitmap -- return nil. */
if (bn <= 0)
return Qnil;
bitmaps = Vfringe_bitmaps;
num = make_number (bn);
while (CONSP (bitmaps))
{
Lisp_Object bitmap = XCAR (bitmaps);
if (EQ (num, Fget (bitmap, Qfringe)))
return bitmap;
bitmaps = XCDR (bitmaps);
}
return num;
}
/* Resolve a BITMAP parameter.
An INTEGER, corresponding to a bitmap number.
A STRING which is interned to a symbol.
A SYMBOL which has a fringe property which is a bitmap number.
*/
static int
resolve_fringe_bitmap (bitmap, namep)
Lisp_Object bitmap;
Lisp_Object *namep;
{
if (namep)
*namep = Qnil;
if (STRINGP (bitmap))
bitmap = intern (SDATA (bitmap));
if (SYMBOLP (bitmap))
{
if (namep)
*namep = bitmap;
bitmap = Fget (bitmap, Qfringe);
}
if (valid_fringe_bitmap_p (bitmap))
{
if (namep && NILP (*namep))
*namep = get_fringe_bitmap_name (XINT (bitmap));
return XINT (bitmap);
}
return -1;
}
/* Draw the bitmap WHICH in one of the left or right fringes of
window W. ROW is the glyph row for which to display the bitmap; it
determines the vertical position at which the bitmap has to be
@ -706,9 +791,10 @@ update_window_fringes (w, force_p)
int rn, nrows = w->current_matrix->nrows;
int y;
int redraw_p = 0;
Lisp_Object ind;
int boundary_pos = 0, arrow_pos = 0;
int empty_pos = 0;
Lisp_Object boundary_top = Qnil, boundary_bot = Qnil;
Lisp_Object arrow_top = Qnil, arrow_bot = Qnil;
Lisp_Object empty_pos;
Lisp_Object ind = Qnil;
if (w->pseudo_window_p)
return 0;
@ -716,23 +802,29 @@ update_window_fringes (w, force_p)
if (!MINI_WINDOW_P (w)
&& (ind = XBUFFER (w->buffer)->indicate_buffer_boundaries, !NILP (ind)))
{
int do_eob = 1, do_bob = 1;
Lisp_Object arrows;
if (CONSP (ind))
arrows = XCDR (ind), ind = XCAR (ind);
if (EQ (ind, Qleft) || EQ (ind, Qright))
boundary_top = boundary_bot = arrow_top = arrow_bot = ind;
else if (CONSP (ind) && CONSP (XCAR (ind)))
{
Lisp_Object pos;
if (pos = Fassq (Qt, ind), !NILP (pos))
boundary_top = boundary_bot = arrow_top = arrow_bot = XCDR (pos);
if (pos = Fassq (Qtop, ind), !NILP (pos))
boundary_top = XCDR (pos);
if (pos = Fassq (Qbottom, ind), !NILP (pos))
boundary_bot = XCDR (pos);
if (pos = Fassq (Qup, ind), !NILP (pos))
arrow_top = XCDR (pos);
if (pos = Fassq (Qdown, ind), !NILP (pos))
arrow_bot = XCDR (pos);
}
else
arrows = ind;
ind = Qnil;
}
if (EQ (ind, Qleft))
boundary_pos = -1;
else if (EQ (ind, Qright))
boundary_pos = 1;
if (EQ (arrows, Qleft))
arrow_pos = -1;
else if (EQ (arrows, Qright))
arrow_pos = 1;
if (!NILP (ind))
{
int do_eob = 1, do_bob = 1;
for (y = 0, rn = 0;
y < yb && rn < nrows;
@ -753,17 +845,17 @@ update_window_fringes (w, force_p)
row->indicate_bob_p = row->indicate_top_line_p = 0;
row->indicate_eob_p = row->indicate_bottom_line_p = 0;
if (!NILP (ind)
if (!NILP (boundary_top)
&& MATRIX_ROW_START_CHARPOS (row) <= BUF_BEGV (XBUFFER (w->buffer)))
row->indicate_bob_p = do_bob, do_bob = 0;
else if (!NILP (arrows)
else if (!NILP (arrow_top)
&& (WINDOW_WANTS_HEADER_LINE_P (w) ? 1 : 0) == rn)
row->indicate_top_line_p = 1;
if (!NILP (ind)
if (!NILP (boundary_bot)
&& MATRIX_ROW_END_CHARPOS (row) >= BUF_ZV (XBUFFER (w->buffer)))
row->indicate_eob_p = do_eob, do_eob = 0;
else if (!NILP (arrows)
else if (!NILP (arrow_bot)
&& y + row->height >= yb)
row->indicate_bottom_line_p = 1;
@ -775,10 +867,9 @@ update_window_fringes (w, force_p)
}
}
if (EQ (XBUFFER (w->buffer)->indicate_empty_lines, Qright))
empty_pos = 1;
else if (EQ (XBUFFER (w->buffer)->indicate_empty_lines, Qleft))
empty_pos = -1;
empty_pos = XBUFFER (w->buffer)->indicate_empty_lines;
if (!NILP (empty_pos) && !EQ (empty_pos, Qright))
empty_pos = WINDOW_LEFT_FRINGE_WIDTH (w) == 0 ? Qright : Qleft;
for (y = 0, rn = 0;
y < yb && rn < nrows;
@ -802,20 +893,20 @@ update_window_fringes (w, force_p)
left = row->left_user_fringe_bitmap;
left_face_id = row->left_user_fringe_face_id;
}
else if (row->indicate_bob_p && boundary_pos <= 0)
left = ((row->indicate_eob_p && boundary_pos < 0)
else if (row->indicate_bob_p && EQ (boundary_top, Qleft))
left = ((row->indicate_eob_p && EQ (boundary_bot, Qleft))
? LEFT_BRACKET_BITMAP : TOP_LEFT_ANGLE_BITMAP);
else if (row->indicate_eob_p && boundary_pos < 0)
else if (row->indicate_eob_p && EQ (boundary_bot, Qleft))
left = BOTTOM_LEFT_ANGLE_BITMAP;
else if (row->truncated_on_left_p)
left = LEFT_TRUNCATION_BITMAP;
else if (MATRIX_ROW_CONTINUATION_LINE_P (row))
left = CONTINUATION_LINE_BITMAP;
else if (row->indicate_empty_line_p && empty_pos <= 0)
else if (row->indicate_empty_line_p && EQ (empty_pos, Qleft))
left = ZV_LINE_BITMAP;
else if (row->indicate_top_line_p && arrow_pos <= 0)
else if (row->indicate_top_line_p && EQ (arrow_top, Qleft))
left = UP_ARROW_BITMAP;
else if (row->indicate_bottom_line_p && arrow_pos < 0)
else if (row->indicate_bottom_line_p && EQ (arrow_bot, Qleft))
left = DOWN_ARROW_BITMAP;
else
left = NO_FRINGE_BITMAP;
@ -828,22 +919,20 @@ update_window_fringes (w, force_p)
right = row->right_user_fringe_bitmap;
right_face_id = row->right_user_fringe_face_id;
}
else if (row->indicate_bob_p && boundary_pos > 0)
right = ((row->indicate_eob_p && boundary_pos >= 0)
else if (row->indicate_bob_p && EQ (boundary_top, Qright))
right = ((row->indicate_eob_p && EQ (boundary_bot, Qright))
? RIGHT_BRACKET_BITMAP : TOP_RIGHT_ANGLE_BITMAP);
else if (row->indicate_eob_p && boundary_pos >= 0)
else if (row->indicate_eob_p && EQ (boundary_bot, Qright))
right = BOTTOM_RIGHT_ANGLE_BITMAP;
else if (row->truncated_on_right_p)
right = RIGHT_TRUNCATION_BITMAP;
else if (row->continued_p)
right = CONTINUED_LINE_BITMAP;
else if (row->indicate_top_line_p && arrow_pos > 0)
else if (row->indicate_top_line_p && EQ (arrow_top, Qright))
right = UP_ARROW_BITMAP;
else if (row->indicate_bottom_line_p && arrow_pos >= 0)
else if (row->indicate_bottom_line_p && EQ (arrow_bot, Qright))
right = DOWN_ARROW_BITMAP;
else if (row->indicate_empty_line_p
&& (empty_pos > 0
|| (WINDOW_LEFT_FRINGE_WIDTH (w) == 0 && empty_pos == 0)))
else if (row->indicate_empty_line_p && EQ (empty_pos, Qright))
right = ZV_LINE_BITMAP;
else
right = NO_FRINGE_BITMAP;
@ -978,19 +1067,12 @@ compute_fringe_widths (f, redraw)
redraw_frame (f);
}
DEFUN ("destroy-fringe-bitmap", Fdestroy_fringe_bitmap, Sdestroy_fringe_bitmap,
1, 1, 0,
doc: /* Destroy fringe bitmap WHICH.
If WHICH overrides a standard fringe bitmap, the original bitmap is restored. */)
(which)
Lisp_Object which;
{
int n;
struct fringe_bitmap **fbp;
CHECK_NUMBER (which);
if (n = XINT (which), n >= max_used_fringe_bitmap)
return Qnil;
void
destroy_fringe_bitmap (n)
int n;
{
struct fringe_bitmap **fbp;
fringe_faces[n] = FRINGE_FACE_ID;
@ -1006,7 +1088,31 @@ If WHICH overrides a standard fringe bitmap, the original bitmap is restored. *
while (max_used_fringe_bitmap > MAX_STANDARD_FRINGE_BITMAPS
&& fringe_bitmaps[max_used_fringe_bitmap - 1] == NULL)
max_used_fringe_bitmap--;
}
DEFUN ("destroy-fringe-bitmap", Fdestroy_fringe_bitmap, Sdestroy_fringe_bitmap,
1, 1, 0,
doc: /* Destroy fringe bitmap BITMAP.
If BITMAP overrides a standard fringe bitmap, the original bitmap is restored. */)
(bitmap)
Lisp_Object bitmap;
{
int n;
Lisp_Object sym;
n = resolve_fringe_bitmap (bitmap, &sym);
if (n < 0)
return Qnil;
destroy_fringe_bitmap (n);
if (SYMBOLP (sym))
{
Vfringe_bitmaps = Fdelq (sym, Vfringe_bitmaps);
/* It would be better to remove the fringe property. */
Fput (sym, Qfringe, Qnil);
}
return Qnil;
}
@ -1077,7 +1183,7 @@ init_fringe_bitmap (which, fb, once_p)
if (!once_p)
{
Fdestroy_fringe_bitmap (make_number (which));
destroy_fringe_bitmap (which);
if (rif->define_fringe_bitmap)
rif->define_fringe_bitmap (which, fb->bits, fb->height, fb->width);
@ -1090,26 +1196,32 @@ init_fringe_bitmap (which, fb, once_p)
DEFUN ("define-fringe-bitmap", Fdefine_fringe_bitmap, Sdefine_fringe_bitmap,
1, 5, 0,
doc: /* Define a fringe bitmap from BITS of height HEIGHT and width WIDTH.
2, 5, 0,
doc: /* Define fringe bitmap BITMAP from BITS of size HEIGHT x WIDTH.
BITMAP is a symbol or string naming the new fringe bitmap.
BITS is either a string or a vector of integers.
HEIGHT is height of bitmap. If HEIGHT is nil, use length of BITS.
WIDTH must be an integer between 1 and 16, or nil which defaults to 8.
Optional fourth arg ALIGN may be one of `top', `center', or `bottom',
Optional fifth arg ALIGN may be one of `top', `center', or `bottom',
indicating the positioning of the bitmap relative to the rows where it
is used; the default is to center the bitmap. Fourth arg may also be a
list (ALIGN PERIODIC) where PERIODIC non-nil specifies that the bitmap
should be repeated.
Optional fifth argument WHICH is bitmap number to redefine.
Return new bitmap number, or nil of no more free bitmap slots. */)
(bits, height, width, align, which)
Lisp_Object bits, height, width, align, which;
If BITMAP already exists, the existing definition is replaced. */)
(bitmap, bits, height, width, align)
Lisp_Object bitmap, bits, height, width, align;
{
Lisp_Object len;
int n, h, i, j;
unsigned short *b;
struct fringe_bitmap fb, *xfb;
int fill1 = 0, fill2 = 0;
Lisp_Object sym;
n = resolve_fringe_bitmap (bitmap, &sym);
if (NILP (sym) || INTEGERP (sym))
sym = wrong_type_argument (Qsymbolp, bitmap);
if (!STRINGP (bits) && !VECTORP (bits))
bits = wrong_type_argument (Qstringp, bits);
@ -1162,7 +1274,7 @@ Return new bitmap number, or nil of no more free bitmap slots. */)
else if (!NILP (align) && !EQ (align, Qcenter))
error ("Bad align argument");
if (NILP (which))
if (n < 0)
{
if (max_used_fringe_bitmap < MAX_FRINGE_BITMAPS)
n = max_used_fringe_bitmap++;
@ -1174,16 +1286,11 @@ Return new bitmap number, or nil of no more free bitmap slots. */)
if (fringe_bitmaps[n] == NULL)
break;
if (n == MAX_FRINGE_BITMAPS)
return Qnil;
error ("Cannot define more fringe bitmaps");
}
which = make_number (n);
}
else
{
CHECK_NUMBER (which);
n = XINT (which);
if (n <= NO_FRINGE_BITMAP || n >= MAX_FRINGE_BITMAPS)
error ("Invalid fringe bitmap number");
Vfringe_bitmaps = Fcons (sym, Vfringe_bitmaps);
Fput (sym, Qfringe, make_number (n));
}
fb.dynamic = 1;
@ -1211,21 +1318,22 @@ Return new bitmap number, or nil of no more free bitmap slots. */)
init_fringe_bitmap (n, xfb, 0);
return which;
return sym;
}
DEFUN ("set-fringe-bitmap-face", Fset_fringe_bitmap_face, Sset_fringe_bitmap_face,
1, 2, 0,
doc: /* Set face for fringe bitmap FRINGE-ID to FACE.
doc: /* Set face for fringe bitmap BITMAP to FACE.
If FACE is nil, reset face to default fringe face. */)
(fringe_id, face)
Lisp_Object fringe_id, face;
(bitmap, face)
Lisp_Object bitmap, face;
{
int bn;
int face_id;
CHECK_NUMBER (fringe_id);
if (!valid_fringe_bitmap_id_p (XINT (fringe_id)))
error ("Invalid fringe id");
bn = resolve_fringe_bitmap (bitmap, 0);
if (bn < 0)
error ("Undefined fringe bitmap");
if (!NILP (face))
{
@ -1236,7 +1344,7 @@ If FACE is nil, reset face to default fringe face. */)
else
face_id = FRINGE_FACE_ID;
fringe_faces [XINT (fringe_id)] = face_id;
fringe_faces [bn] = face_id;
return Qnil;
}
@ -1247,7 +1355,8 @@ DEFUN ("fringe-bitmaps-at-pos", Ffringe_bitmaps_at_pos, Sfringe_bitmaps_at_pos,
If WINDOW is nil, use selected window. If POS is nil, use value of point
in that window. Return value is a cons (LEFT . RIGHT) where LEFT and RIGHT
are the fringe bitmap numbers for the bitmaps in the left and right fringe,
resp. Return nil if POS is not visible in WINDOW. */)
resp. If left or right fringe is empty, the corresponding element is nil.
Return nil if POS is not visible in WINDOW. */)
(pos, window)
Lisp_Object pos, window;
{
@ -1274,8 +1383,8 @@ resp. Return nil if POS is not visible in WINDOW. */)
row = MATRIX_FIRST_TEXT_ROW (w->current_matrix);
row = row_containing_pos (w, textpos, row, NULL, 0);
if (row)
return Fcons (make_number (row->left_fringe_bitmap),
make_number (row->right_fringe_bitmap));
return Fcons (get_fringe_bitmap_name (row->left_fringe_bitmap),
get_fringe_bitmap_name (row->right_fringe_bitmap));
else
return Qnil;
}
@ -1288,7 +1397,6 @@ resp. Return nil if POS is not visible in WINDOW. */)
void
syms_of_fringe ()
{
defsubr (&Sdestroy_fringe_bitmap);
defsubr (&Sdefine_fringe_bitmap);
defsubr (&Sfringe_bitmaps_at_pos);
@ -1303,6 +1411,10 @@ is at the final newline, the cursor is shown in the right fringe.
If nil, also continue lines which are exactly as wide as the window. */);
Voverflow_newline_into_fringe = Qt;
DEFVAR_LISP ("fringe-bitmaps", &Vfringe_bitmaps,
doc: /* List of fringe bitmap symbols.
You must (require 'fringe) to use fringe bitmap symbols in your programs." */);
Vfringe_bitmaps = Qnil;
}
/* Initialize this module when Emacs starts. */

View File

@ -308,6 +308,7 @@ extern Lisp_Object Qheight;
extern Lisp_Object QCwidth, QCheight, QCascent;
extern Lisp_Object Qscroll_bar;
extern Lisp_Object Qcursor;
extern Lisp_Object Qfringe;
/* Non-nil means highlight trailing whitespace. */
@ -3581,8 +3582,9 @@ handle_single_display_prop (it, prop, object, position,
#ifdef HAVE_WINDOW_SYSTEM
value = XCAR (XCDR (prop));
if (!NUMBERP (value)
|| !valid_fringe_bitmap_id_p (XINT (value)))
if (!SYMBOLP (value)
|| (value = Fget (value, Qfringe),
!valid_fringe_bitmap_p (value)))
return 0;
if (CONSP (XCDR (XCDR (prop))))