aboutsummaryrefslogtreecommitdiffstats
path: root/lisp
diff options
context:
space:
mode:
authorMiles Bader2004-09-29 07:22:20 +0000
committerMiles Bader2004-09-29 07:22:20 +0000
commit93952a2d5b2ba718f9d688dda216fed8621ec21e (patch)
treec4cda2097cdc4b8d07260702c7325b0fa1f6e30d /lisp
parent4148c3c9425939c1639f349b20a33b71fea72b8e (diff)
parentc1d7d28589c020b2b72d795638e100eda852d6aa (diff)
downloademacs-93952a2d5b2ba718f9d688dda216fed8621ec21e.tar.gz
emacs-93952a2d5b2ba718f9d688dda216fed8621ec21e.zip
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
Diffstat (limited to 'lisp')
-rw-r--r--lisp/ChangeLog79
-rw-r--r--lisp/calendar/diary-lib.el227
-rw-r--r--lisp/dired.el134
-rw-r--r--lisp/files.el3
-rw-r--r--lisp/fringe.el46
-rw-r--r--lisp/gnus/ChangeLog74
-rw-r--r--lisp/gnus/flow-fill.el2
-rw-r--r--lisp/gnus/gnus-art.el2
-rw-r--r--lisp/gnus/gnus-cache.el5
-rw-r--r--lisp/gnus/gnus-diary.el2
-rw-r--r--lisp/gnus/gnus-fun.el7
-rw-r--r--lisp/gnus/gnus-msg.el20
-rw-r--r--lisp/gnus/gnus-picon.el3
-rw-r--r--lisp/gnus/gnus.el39
-rw-r--r--lisp/gnus/html2text.el5
-rw-r--r--lisp/gnus/message.el2
-rw-r--r--lisp/gnus/mm-bodies.el11
-rw-r--r--lisp/gnus/mm-decode.el8
-rw-r--r--lisp/gnus/mm-util.el17
-rw-r--r--lisp/gnus/mml-sec.el2
-rw-r--r--lisp/gnus/mml-smime.el3
-rw-r--r--lisp/gnus/mml.el3
-rw-r--r--lisp/gnus/nnfolder.el2
-rw-r--r--lisp/gnus/nnheader.el4
-rw-r--r--lisp/gnus/nnml.el2
-rw-r--r--lisp/gnus/rfc2047.el35
-rw-r--r--lisp/gnus/spam.el6
-rw-r--r--lisp/printing.el26
-rw-r--r--lisp/progmodes/gdb-ui.el16
-rw-r--r--lisp/term.el167
-rw-r--r--lisp/textmodes/enriched.el2
31 files changed, 637 insertions, 317 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index a77f2206e58..187fc607c27 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,6 +1,79 @@
12004-09-28 Stefan <monnier@iro.umontreal.ca>
2
3 * dired.el (dired-view-command-alist): Use more efficient regexps.
4 Remove dubious arguments.
5 (dired-align-file): New function.
6 (dired-insert-directory): Use it.
7 (dired-move-to-end-of-filename): Make the " -> " search more specific.
8 (dired-buffers-for-dir): Remove unused var `pattern'.
9
102004-09-29 Kim F. Storm <storm@cua.dk>
11
12 * progmodes/gdb-ui.el (breakpoint): Define as fringe bitmap.
13 (gdb-mouse-toggle-breakpoint): Fix fringe-bitmaps-at-pos usage.
14 (gdb-put-breakpoint-icon): Use breakpoint bitmap.
15
16 * fringe.el (fringe-bitmap-p): New macro.
17 (fringe-bitmaps): Add standard fringe bitmaps on load.
18
192004-09-28 Matthew Mundell <matt@mundell.ukfsn.org> (tiny change)
20
21 * calendar/diary-lib.el (list-diary-entries): Save diary buffer
22 from diary display excursion. Store diary buffer's point for
23 `simple-diary-display'.
24 (simple-diary-display): Set window point and start when
25 displaying buffer, to preserve point.
26
272004-09-27 Luc Teirlinck <teirllm@auburn.edu>
28
29 * textmodes/enriched.el (enriched-translations): Replace defconst
30 with defvar.
31
322004-09-26 Vinicius Jose Latorre <viniciusjl@ig.com.br>
33
34 * printing.el: Doc fix.
35 (pr-version): New version number (6.8.1).
36 (pr-ps-file-using-ghostscript): Use make-temp-file instead of
37 make-temp-name.
38 (pr-delete-file): Check if file exists before deleting it. Reported by
39 Lennart Borgman <lennart.borgman.073@student.lu.se>.
40
412004-09-26 Stefan <monnier@iro.umontreal.ca>
42
43 * term.el (term-display-table): New variable.
44 (term-mode): Use it.
45 (term-exec-1): Set the coding system to binary.
46 (term-emulate-terminal): Decode the string before inserting it.
47
482004-09-26 Dan Nicolaescu <dann@ics.uci.edu>
49
50 * term.el (term-ansi-at-eval-string, term-ansi-default-fg)
51 (term-ansi-default-bg, term-ansi-current-temp): Delete unused
52 vars.
53 (map): Bind S-prior, S-next and S-insert.
54 (term-mode): Set `indent-tabs-mode' to nil.
55 (term-paste): New function to be bound to S-insert.
56 (term-send-del, term-send-backspace): Change the strings sent.
57 (term-termcap-format): Synchronyze with etc/e/eterm.ti.
58 (term-handle-colors-array): Fix handling of underline and reverse.
59 (term-handle-ansi-escape): Do not handle smcup/rmcup. Add
60 comments.
61 (term-erase-in-line): Fix comparison.
62 (term-emulate-terminal): Fix line wrap handling.
63 (term-start-output-log): Renamed from `term-set-output-log'.
64 (term-stop-output-log): Renamed from `term-stop-photo'.
65 (term-switch-to-alternate-sub-buffer): Comment out, unused.
66
672004-09-25 Stefan <monnier@iro.umontreal.ca>
68
69 * dired.el (dired-move-to-filename): Don't output a message if
70 raise-error is non-nil. Fix return position and value.
71
72 * files.el (insert-directory): Obey --dired even with symlinks.
73
12004-09-25 Lars Hansen <larsh@math.ku.dk> 742004-09-25 Lars Hansen <larsh@math.ku.dk>
2 75
3 * ls-lisp.el (ls-lisp-format): Mark file names with poperty 76 * ls-lisp.el (ls-lisp-format): Mark file names with property
4 dired-filename. 77 dired-filename.
5 78
62004-09-25 Kim F. Storm <storm@cua.dk> 792004-09-25 Kim F. Storm <storm@cua.dk>
@@ -21,8 +94,8 @@
21 it, and show completions. 94 it, and show completions.
22 (ido-all-completions): Let bind ido-directory-too-big to nil. 95 (ido-all-completions): Let bind ido-directory-too-big to nil.
23 (ido-exhibit): Handle ido-directory-too-big. 96 (ido-exhibit): Handle ido-directory-too-big.
24 (ido-read-buffer): Handle fallback to read-buffer. Init 97 (ido-read-buffer): Handle fallback to read-buffer.
25 ido-directory-too-big. 98 Init ido-directory-too-big.
26 (ido-read-file-name, ido-read-directory-name, ido-completing-read): 99 (ido-read-file-name, ido-read-directory-name, ido-completing-read):
27 Init ido-directory-too-big. 100 Init ido-directory-too-big.
28 101
diff --git a/lisp/calendar/diary-lib.el b/lisp/calendar/diary-lib.el
index 45bb3c0e4c0..945119f06df 100644
--- a/lisp/calendar/diary-lib.el
+++ b/lisp/calendar/diary-lib.el
@@ -4,6 +4,7 @@
4;; Free Software Foundation, Inc. 4;; Free Software Foundation, Inc.
5 5
6;; Author: Edward M. Reingold <reingold@cs.uiuc.edu> 6;; Author: Edward M. Reingold <reingold@cs.uiuc.edu>
7;; Maintainer: Glenn Morris <gmorris@ast.cam.ac.uk>
7;; Keywords: calendar 8;; Keywords: calendar
8 9
9;; This file is part of GNU Emacs. 10;; This file is part of GNU Emacs.
@@ -296,6 +297,8 @@ Only used if `diary-header-line-flag' is non-nil."
296 :type 'sexp 297 :type 'sexp
297 :version "21.4") 298 :version "21.4")
298 299
300(defvar diary-saved-point) ; internal
301
299(defun list-diary-entries (date number) 302(defun list-diary-entries (date number)
300 "Create and display a buffer containing the relevant lines in diary-file. 303 "Create and display a buffer containing the relevant lines in diary-file.
301The arguments are DATE and NUMBER; the entries selected are those 304The arguments are DATE and NUMBER; the entries selected are those
@@ -345,112 +348,116 @@ These hooks have the following distinct roles:
345 (set-buffer diary-buffer) 348 (set-buffer diary-buffer)
346 (or (verify-visited-file-modtime diary-buffer) 349 (or (verify-visited-file-modtime diary-buffer)
347 (revert-buffer t t)))) 350 (revert-buffer t t))))
348 (setq file-glob-attrs (nth 1 (diary-pull-attrs nil ""))) 351 ;; d-s-p is passed to the diary display function.
349 (setq selective-display t) 352 (let ((diary-saved-point (point)))
350 (setq selective-display-ellipses nil) 353 (save-excursion
351 (if diary-header-line-flag 354 (setq file-glob-attrs (nth 1 (diary-pull-attrs nil "")))
352 (setq header-line-format diary-header-line-format)) 355 (setq selective-display t)
353 (setq old-diary-syntax-table (syntax-table)) 356 (setq selective-display-ellipses nil)
354 (set-syntax-table diary-syntax-table) 357 (if diary-header-line-flag
355 (unwind-protect 358 (setq header-line-format diary-header-line-format))
356 (let ((buffer-read-only nil) 359 (setq old-diary-syntax-table (syntax-table))
357 (diary-modified (buffer-modified-p)) 360 (set-syntax-table diary-syntax-table)
358 (mark (regexp-quote diary-nonmarking-symbol))) 361 (unwind-protect
359 ;; First and last characters must be ^M or \n for 362 (let ((buffer-read-only nil)
360 ;; selective display to work properly 363 (diary-modified (buffer-modified-p))
361 (goto-char (1- (point-max))) 364 (mark (regexp-quote diary-nonmarking-symbol)))
362 (if (not (looking-at "\^M\\|\n")) 365 ;; First and last characters must be ^M or \n for
363 (progn 366 ;; selective display to work properly
364 (goto-char (point-max)) 367 (goto-char (1- (point-max)))
365 (insert "\^M"))) 368 (if (not (looking-at "\^M\\|\n"))
366 (goto-char (point-min)) 369 (progn
367 (if (not (looking-at "\^M\\|\n")) 370 (goto-char (point-max))
368 (insert "\^M")) 371 (insert "\^M")))
369 (subst-char-in-region (point-min) (point-max) ?\n ?\^M t) 372 (goto-char (point-min))
370 (calendar-for-loop i from 1 to number do 373 (if (not (looking-at "\^M\\|\n"))
371 (let ((d diary-date-forms) 374 (insert "\^M"))
372 (month (extract-calendar-month date)) 375 (subst-char-in-region (point-min) (point-max) ?\n ?\^M t)
373 (day (extract-calendar-day date)) 376 (calendar-for-loop
374 (year (extract-calendar-year date)) 377 i from 1 to number do
375 (entry-found (list-sexp-diary-entries date))) 378 (let ((d diary-date-forms)
376 (while d 379 (month (extract-calendar-month date))
377 (let* 380 (day (extract-calendar-day date))
378 ((date-form (if (equal (car (car d)) 'backup) 381 (year (extract-calendar-year date))
379 (cdr (car d)) 382 (entry-found (list-sexp-diary-entries date)))
380 (car d))) 383 (while d
381 (backup (equal (car (car d)) 'backup)) 384 (let*
382 (dayname 385 ((date-form (if (equal (car (car d)) 'backup)
383 (format "%s\\|%s\\.?" 386 (cdr (car d))
384 (calendar-day-name date) 387 (car d)))
385 (calendar-day-name date 'abbrev))) 388 (backup (equal (car (car d)) 'backup))
386 (monthname 389 (dayname
387 (format "\\*\\|%s\\|%s\\.?" 390 (format "%s\\|%s\\.?"
388 (calendar-month-name month) 391 (calendar-day-name date)
389 (calendar-month-name month 'abbrev))) 392 (calendar-day-name date 'abbrev)))
390 (month (concat "\\*\\|0*" (int-to-string month))) 393 (monthname
391 (day (concat "\\*\\|0*" (int-to-string day))) 394 (format "\\*\\|%s\\|%s\\.?"
392 (year 395 (calendar-month-name month)
393 (concat 396 (calendar-month-name month 'abbrev)))
394 "\\*\\|0*" (int-to-string year) 397 (month (concat "\\*\\|0*" (int-to-string month)))
395 (if abbreviated-calendar-year 398 (day (concat "\\*\\|0*" (int-to-string day)))
396 (concat "\\|" (format "%02d" (% year 100))) 399 (year
397 ""))) 400 (concat
398 (regexp 401 "\\*\\|0*" (int-to-string year)
399 (concat 402 (if abbreviated-calendar-year
400 "\\(\\`\\|\^M\\|\n\\)" mark "?\\(" 403 (concat "\\|" (format "%02d" (% year 100)))
401 (mapconcat 'eval date-form "\\)\\(") 404 "")))
402 "\\)")) 405 (regexp
403 (case-fold-search t)) 406 (concat
404 (goto-char (point-min)) 407 "\\(\\`\\|\^M\\|\n\\)" mark "?\\("
405 (while (re-search-forward regexp nil t) 408 (mapconcat 'eval date-form "\\)\\(")
406 (if backup (re-search-backward "\\<" nil t)) 409 "\\)"))
407 (if (and (or (char-equal (preceding-char) ?\^M) 410 (case-fold-search t))
408 (char-equal (preceding-char) ?\n)) 411 (goto-char (point-min))
409 (not (looking-at " \\|\^I"))) 412 (while (re-search-forward regexp nil t)
410 ;; Diary entry that consists only of date. 413 (if backup (re-search-backward "\\<" nil t))
411 (backward-char 1) 414 (if (and (or (char-equal (preceding-char) ?\^M)
412 ;; Found a nonempty diary entry--make it visible and 415 (char-equal (preceding-char) ?\n))
413 ;; add it to the list. 416 (not (looking-at " \\|\^I")))
414 (setq entry-found t) 417 ;; Diary entry that consists only of date.
415 (let ((entry-start (point)) 418 (backward-char 1)
416 date-start temp) 419 ;; Found a nonempty diary entry--make it
417 (re-search-backward "\^M\\|\n\\|\\`") 420 ;; visible and add it to the list.
418 (setq date-start (point)) 421 (setq entry-found t)
419 (re-search-forward "\^M\\|\n" nil t 2) 422 (let ((entry-start (point))
420 (while (looking-at " \\|\^I") 423 date-start temp)
421 (re-search-forward "\^M\\|\n" nil t)) 424 (re-search-backward "\^M\\|\n\\|\\`")
422 (backward-char 1) 425 (setq date-start (point))
423 (subst-char-in-region date-start 426 (re-search-forward "\^M\\|\n" nil t 2)
424 (point) ?\^M ?\n t) 427 (while (looking-at " \\|\^I")
425 (setq entry (buffer-substring entry-start (point)) 428 (re-search-forward "\^M\\|\n" nil t))
426 temp (diary-pull-attrs entry file-glob-attrs) 429 (backward-char 1)
427 entry (nth 0 temp)) 430 (subst-char-in-region date-start
428 (add-to-diary-list 431 (point) ?\^M ?\n t)
429 date 432 (setq entry (buffer-substring entry-start (point))
430 entry 433 temp (diary-pull-attrs entry file-glob-attrs)
431 (buffer-substring 434 entry (nth 0 temp))
432 (1+ date-start) (1- entry-start)) 435 (add-to-diary-list
433 (copy-marker entry-start) (nth 1 temp)))))) 436 date
434 (setq d (cdr d))) 437 entry
435 (or entry-found 438 (buffer-substring
436 (not diary-list-include-blanks) 439 (1+ date-start) (1- entry-start))
437 (setq diary-entries-list 440 (copy-marker entry-start) (nth 1 temp))))))
438 (append diary-entries-list 441 (setq d (cdr d)))
439 (list (list date "" "" "" ""))))) 442 (or entry-found
440 (setq date 443 (not diary-list-include-blanks)
441 (calendar-gregorian-from-absolute 444 (setq diary-entries-list
442 (1+ (calendar-absolute-from-gregorian date)))) 445 (append diary-entries-list
443 (setq entry-found nil))) 446 (list (list date "" "" "" "")))))
444 (set-buffer-modified-p diary-modified)) 447 (setq date
445 (set-syntax-table old-diary-syntax-table)) 448 (calendar-gregorian-from-absolute
446 (goto-char (point-min)) 449 (1+ (calendar-absolute-from-gregorian date))))
447 (run-hooks 'nongregorian-diary-listing-hook 450 (setq entry-found nil)))
448 'list-diary-entries-hook) 451 (set-buffer-modified-p diary-modified))
449 (if diary-display-hook 452 (set-syntax-table old-diary-syntax-table))
450 (run-hooks 'diary-display-hook) 453 (goto-char (point-min))
451 (simple-diary-display)) 454 (run-hooks 'nongregorian-diary-listing-hook
452 (run-hooks 'diary-hook) 455 'list-diary-entries-hook)
453 diary-entries-list)))) 456 (if diary-display-hook
457 (run-hooks 'diary-display-hook)
458 (simple-diary-display))
459 (run-hooks 'diary-hook)
460 diary-entries-list))))))
454 461
455(defun include-other-diary-files () 462(defun include-other-diary-files ()
456 "Include the diary entries from other diary files with those of diary-file. 463 "Include the diary entries from other diary files with those of diary-file.
@@ -528,8 +535,12 @@ changing the variable `diary-include-string'."
528 (setq buffer-read-only t) 535 (setq buffer-read-only t)
529 (display-buffer holiday-buffer) 536 (display-buffer holiday-buffer)
530 (message "No diary entries for %s" date-string)) 537 (message "No diary entries for %s" date-string))
531 (display-buffer (find-buffer-visiting 538 (with-current-buffer
532 (substitute-in-file-name diary-file))) 539 (find-buffer-visiting (substitute-in-file-name diary-file))
540 (let ((window (display-buffer (current-buffer))))
541 ;; d-s-p is passed from list-diary-entries.
542 (set-window-point window diary-saved-point)
543 (set-window-start window (point-min))))
533 (message "Preparing diary...done")))) 544 (message "Preparing diary...done"))))
534 545
535(defface diary-button-face '((((type pc) (class color)) 546(defface diary-button-face '((((type pc) (class color))
diff --git a/lisp/dired.el b/lisp/dired.el
index 43eec9408d4..96b2905337e 100644
--- a/lisp/dired.el
+++ b/lisp/dired.el
@@ -202,10 +202,11 @@ with the buffer narrowed to the listing."
202 202
203;; Fixme: This should use mailcap. 203;; Fixme: This should use mailcap.
204(defcustom dired-view-command-alist 204(defcustom dired-view-command-alist
205 '(("[.]\\(ps\\|ps_pages\\|eps\\)\\'" . "gv -spartan -color -watch %s") 205 '(("\\.\\(ps\\|ps_pages\\|eps\\)\\'" . "gv %s")
206 ("[.]pdf\\'" . "xpdf %s") 206 ("\\.pdf\\'" . "xpdf %s")
207 ("[.]\\(jpe?g\\|gif\\|png\\)\\'" . "eog %s") 207 ;; ("\\.pod\\'" . "perldoc %s")
208 ("[.]dvi\\'" . "xdvi -sidemargin 0.5 -topmargin 1 %s")) 208 ("\\.\\(jpe?g\\|gif\\|png\\)\\'" . "eog %s")
209 ("\\.dvi\\'" . "xdvi %s"))
209 "Alist specifying how to view special types of files. 210 "Alist specifying how to view special types of files.
210Each element has the form (REGEXP . SHELL-COMMAND). 211Each element has the form (REGEXP . SHELL-COMMAND).
211When the file name matches REGEXP, `dired-view-file' 212When the file name matches REGEXP, `dired-view-file'
@@ -797,6 +798,112 @@ wildcards, erases the buffer, and builds the subdir-alist anew
797 (dired-insert-directory dir dired-actual-switches 798 (dired-insert-directory dir dired-actual-switches
798 file-list (not file-list) t))))) 799 file-list (not file-list) t)))))
799 800
801(defun dired-align-file (beg end)
802 "Align the fields of a file to the ones of surrounding lines.
803BEG..END is the line where the file info is located."
804 ;; Some versions of ls try to adjust the size of each field so as to just
805 ;; hold the largest element ("largest" in the current invocation, of
806 ;; course). So when a single line is output, the size of each field is
807 ;; just big enough for that one output. Thus when dired refreshes one
808 ;; line, the alignment if this line w.r.t the rest is messed up because
809 ;; the fields of that one line will generally be smaller.
810 ;;
811 ;; To work around this problem, we here add spaces to try and re-align the
812 ;; fields as needed. Since this is purely aesthetic, it is of utmost
813 ;; importance that it doesn't mess up anything like
814 ;; `dired-move-to-filename'. To this end, we limit ourselves to adding
815 ;; spaces only, and to only add them at places where there was already at
816 ;; least one space. This way, as long as `dired-move-to-filename-regexp'
817 ;; always matches spaces with "*" or "+", we know we haven't made anything
818 ;; worse. There is one spot where the exact number of spaces is
819 ;; important, which is just before the actual filename, so we refrain from
820 ;; adding spaces there (and within the filename as well, of course).
821 (save-excursion
822 (let (file file-col other other-col)
823 ;; Check the there is indeed a file, and that there is anoter adjacent
824 ;; file with which to align, and that additional spaces are needed to
825 ;; align the filenames.
826 (when (and (setq file (progn (goto-char beg)
827 (dired-move-to-filename nil end)))
828 (setq file-col (current-column))
829 (setq other
830 (or (and (goto-char beg)
831 (zerop (forward-line -1))
832 (dired-move-to-filename))
833 (and (goto-char beg)
834 (zerop (forward-line 1))
835 (dired-move-to-filename))))
836 (setq other-col (current-column))
837 (/= file other)
838 ;; Make sure there is some work left to do.
839 (> other-col file-col))
840 ;; If we've only looked at the line above, check to see if the line
841 ;; below exists as well and if so, align with the shorter one.
842 (when (and (< other file)
843 (goto-char beg)
844 (zerop (forward-line 1))
845 (dired-move-to-filename))
846 (let ((alt-col (current-column)))
847 (when (< alt-col other-col)
848 (setq other-col alt-col)
849 (setq other (point)))))
850 ;; Keep positions uptodate when we insert stuff.
851 (if (> other file) (setq other (copy-marker other)))
852 (setq file (copy-marker file))
853 ;; Main loop.
854 (goto-char beg)
855 (while (and (> other-col file-col)
856 (skip-chars-forward "^ ")
857 ;; Skip the spaces, and make sure there's at least one.
858 (> (skip-chars-forward " ") 0)
859 ;; Don't touch anything just before (and after) the
860 ;; beginning of the filename.
861 (> file (point)))
862 ;; We're now just in front of a field, with a space behind us.
863 (let* ((curcol (current-column))
864 ;; Nums are right-aligned.
865 (num-align (looking-at "[0-9]"))
866 ;; Let's look at the other line, in the same column: we
867 ;; should be either near the end of the previous field, or
868 ;; in the space between that field and the next.
869 ;; [ Of course, it's also possible that we're already within
870 ;; the next field or even past it, but that's unlikely since
871 ;; other-col > file-col. ]
872 ;; Let's find the distance to the alignment-point (either
873 ;; the beginning or the end of the next field, depending on
874 ;; whether this field is left or right aligned).
875 (align-pt-offset
876 (save-excursion
877 (goto-char other)
878 (move-to-column curcol)
879 (when (looking-at
880 (concat
881 (if (eq (char-before) ?\ ) " *" "[^ ]* *")
882 (if num-align "[0-9][^ ]*")))
883 (- (match-end 0) (match-beginning 0)))))
884 ;; Now, the number of spaces to insert is align-pt-offset
885 ;; minus the distance to the equivalent point on the
886 ;; current line.
887 (spaces
888 (if (not num-align)
889 align-pt-offset
890 (and align-pt-offset
891 (save-excursion
892 (skip-chars-forward "^ ")
893 (- align-pt-offset (- (current-column) curcol)))))))
894 (when (and spaces (> spaces 0))
895 (setq file-col (+ spaces file-col))
896 (if (> file-col other-col)
897 (setq spaces (- spaces (- file-col other-col))))
898 (insert-char ?\s spaces)
899 ;; Let's just make really sure we did not mess up.
900 (unless (save-excursion
901 (equal (dired-move-to-filename) (marker-position file)))
902 ;; Damn! We messed up: let's revert the change.
903 (delete-char (- spaces))))))
904 (set-marker file nil)))))
905
906
800(defun dired-insert-directory (dir switches &optional file-list wildcard hdr) 907(defun dired-insert-directory (dir switches &optional file-list wildcard hdr)
801 "Insert a directory listing of DIR, Dired style. 908 "Insert a directory listing of DIR, Dired style.
802Use SWITCHES to make the listings. 909Use SWITCHES to make the listings.
@@ -815,7 +922,10 @@ If HDR is non-nil, insert a header line with the directory name."
815 ;; with the new value of dired-move-to-filename-regexp. 922 ;; with the new value of dired-move-to-filename-regexp.
816 (if file-list 923 (if file-list
817 (dolist (f file-list) 924 (dolist (f file-list)
818 (insert-directory f switches nil nil)) 925 (let ((beg (point)))
926 (insert-directory f switches nil nil)
927 ;; Re-align fields, if necessary.
928 (dired-align-file beg (point))))
819 (insert-directory dir switches wildcard (not wildcard))) 929 (insert-directory dir switches wildcard (not wildcard)))
820 ;; Quote certain characters, unless ls quoted them for us. 930 ;; Quote certain characters, unless ls quoted them for us.
821 (if (not (string-match "b" dired-actual-switches)) 931 (if (not (string-match "b" dired-actual-switches))
@@ -1762,6 +1872,8 @@ regardless of the language.")
1762;; Move to first char of filename on this line. 1872;; Move to first char of filename on this line.
1763;; Returns position (point) or nil if no filename on this line." 1873;; Returns position (point) or nil if no filename on this line."
1764(defun dired-move-to-filename (&optional raise-error eol) 1874(defun dired-move-to-filename (&optional raise-error eol)
1875 "Move to the beginning of the filename on the current line.
1876Return the position of the beginning of the filename, or nil if none found."
1765 ;; This is the UNIX version. 1877 ;; This is the UNIX version.
1766 (or eol (setq eol (line-end-position))) 1878 (or eol (setq eol (line-end-position)))
1767 (beginning-of-line) 1879 (beginning-of-line)
@@ -1774,8 +1886,10 @@ regardless of the language.")
1774 (goto-char (match-end 0))) 1886 (goto-char (match-end 0)))
1775 ((re-search-forward dired-permission-flags-regexp eol t) 1887 ((re-search-forward dired-permission-flags-regexp eol t)
1776 ;; Ha! There *is* a file. Our regexp-from-hell just failed to find it. 1888 ;; Ha! There *is* a file. Our regexp-from-hell just failed to find it.
1777 (funcall (if raise-error 'error 'message) 1889 (if raise-error
1778 "Unrecognized line! Check dired-move-to-filename-regexp")) 1890 (error "Unrecognized line! Check dired-move-to-filename-regexp"))
1891 (beginning-of-line)
1892 nil)
1779 (raise-error 1893 (raise-error
1780 (error "No file on this line"))))) 1894 (error "No file on this line")))))
1781 1895
@@ -1818,9 +1932,9 @@ regardless of the language.")
1818 (or no-error (error "No file on this line")))) 1932 (or no-error (error "No file on this line"))))
1819 ;; Move point to end of name: 1933 ;; Move point to end of name:
1820 (if symlink 1934 (if symlink
1821 (if (search-forward " ->" eol t) 1935 (if (search-forward " -> " eol t)
1822 (progn 1936 (progn
1823 (forward-char -3) 1937 (forward-char -4)
1824 (and used-F 1938 (and used-F
1825 dired-ls-F-marks-symlinks 1939 dired-ls-F-marks-symlinks
1826 (eq (preceding-char) ?@) ;; did ls really mark the link? 1940 (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]."
1885;; As a side effect, killed dired buffers for DIR are removed from 1999;; As a side effect, killed dired buffers for DIR are removed from
1886;; dired-buffers. 2000;; dired-buffers.
1887 (setq dir (file-name-as-directory dir)) 2001 (setq dir (file-name-as-directory dir))
1888 (let ((alist dired-buffers) result elt buf pattern) 2002 (let ((alist dired-buffers) result elt buf)
1889 (while alist 2003 (while alist
1890 (setq elt (car alist) 2004 (setq elt (car alist)
1891 buf (cdr elt)) 2005 buf (cdr elt))
diff --git a/lisp/files.el b/lisp/files.el
index 962fd483c2c..aaed1395275 100644
--- a/lisp/files.el
+++ b/lisp/files.el
@@ -4376,7 +4376,8 @@ normally equivalent short `-D' option is just passed on to
4376 (while (< (point) end) 4376 (while (< (point) end)
4377 (let ((start (+ beg (read (current-buffer)))) 4377 (let ((start (+ beg (read (current-buffer))))
4378 (end (+ beg (read (current-buffer))))) 4378 (end (+ beg (read (current-buffer)))))
4379 (if (= (char-after end) ?\n) 4379 (if (memq (char-after end) '(?\n ?\ ))
4380 ;; End is followed by \n or by " -> ".
4380 (put-text-property start end 'dired-filename t) 4381 (put-text-property start end 'dired-filename t)
4381 ;; It seems that we can't trust ls's output as to 4382 ;; It seems that we can't trust ls's output as to
4382 ;; byte positions of filenames. 4383 ;; byte positions of filenames.
diff --git a/lisp/fringe.el b/lisp/fringe.el
index f52ecdf64d2..07c93d39f40 100644
--- a/lisp/fringe.el
+++ b/lisp/fringe.el
@@ -37,27 +37,29 @@
37 37
38;; Standard fringe bitmaps 38;; Standard fringe bitmaps
39 39
40(defconst no-fringe-bitmap 0) 40(defmacro fringe-bitmap-p (symbol)
41(defconst undef-fringe-bitmap 1) 41 "Return non-nil if SYMBOL is a fringe bitmap."
42(defconst left-truncation-fringe-bitmap 2) 42 `(get ,symbol 'fringe))
43(defconst right-truncation-fringe-bitmap 3) 43
44(defconst up-arrow-fringe-bitmap 4) 44(defvar fringe-bitmaps)
45(defconst down-arrow-fringe-bitmap 5) 45
46(defconst continued-line-fringe-bitmap 6) 46(unless (get 'left-truncation 'fringe)
47(defconst continuation-line-fringe-bitmap 7) 47 (let ((bitmaps '(left-truncation right-truncation
48(defconst overlay-arrow-fringe-bitmap 8) 48 up-arrow down-arrow
49(defconst top-left-angle-fringe-bitmap 9) 49 continued-line continuation-line
50(defconst top-right-angle-fringe-bitmap 10) 50 overlay-arrow
51(defconst bottom-left-angle-fringe-bitmap 11) 51 top-left-angle top-right-angle
52(defconst bottom-right-angle-fringe-bitmap 12) 52 bottom-left-angle bottom-right-angle
53(defconst left-bracket-fringe-bitmap 13) 53 left-bracket right-bracket
54(defconst right-bracket-fringe-bitmap 14) 54 filled-box-cursor hollow-box-cursor hollow-square
55(defconst filled-box-cursor-fringe-bitmap 15) 55 bar-cursor hbar-cursor
56(defconst hollow-box-cursor-fringe-bitmap 16) 56 empty-line))
57(defconst hollow-square-fringe-bitmap 17) 57 (bn 2))
58(defconst bar-cursor-fringe-bitmap 18) 58 (while bitmaps
59(defconst hbar-cursor-fringe-bitmap 19) 59 (push (car bitmaps) fringe-bitmaps)
60(defconst empty-line-fringe-bitmap 20) 60 (put (car bitmaps) 'fringe bn)
61 (setq bitmaps (cdr bitmaps)
62 bn (1+ bn)))))
61 63
62 64
63;; Control presence of fringes 65;; Control presence of fringes
@@ -228,7 +230,7 @@ SIDE must be the symbol `left' or `right'."
228 (window-fringes)) 230 (window-fringes))
229 0) 231 0)
230 (float (frame-char-width)))) 232 (float (frame-char-width))))
231 233
232(provide 'fringe) 234(provide 'fringe)
233 235
234;;; arch-tag: 6611ef60-0869-47ed-8b93-587ee7d3ff5d 236;;; arch-tag: 6611ef60-0869-47ed-8b93-587ee7d3ff5d
diff --git a/lisp/gnus/ChangeLog b/lisp/gnus/ChangeLog
index 60ad776347c..3cdda661e86 100644
--- a/lisp/gnus/ChangeLog
+++ b/lisp/gnus/ChangeLog
@@ -1,3 +1,77 @@
12004-09-28 Jesper Harder <harder@ifa.au.dk>
2
3 * gnus-picon.el: Require cl.
4
5 * mml-sec.el (mml-signencrypt-style): Don't depend on Gnus.
6
7 * mml-smime.el: Require cl. Autoload message-fetch-field.
8
9 * gnus-fun.el: Require gnus-ems and gnus-util.
10
11 * gnus-diary.el (gnus-diary-header-schedule): caddr -> car (cddr
12
13 * gnus-art.el (gnus-article-edit-mode): Define before first
14 reference.
15
16 * gnus.el (gnus-method-to-server): Move defsubst before first use.
17
18 * spam.el (spam-check-spamoracle, spam-spamoracle-learn): Fix
19 format string mismatch.
20 * nnml.el (nnml-request-set-mark, nnml-save-marks): do.
21 * nnfolder.el (nnfolder-request-set-mark, nnfolder-save-marks): do.
22
232004-09-27 Reiner Steib <Reiner.Steib@gmx.de>
24
25 * gnus.el (gnus-version-number): Set to 5.11.
26
272004-09-27 Katsumi Yamaoka <yamaoka@jpl.org>
28
29 * mm-decode.el (mm-copy-to-buffer): Don't use set-buffer-multibyte.
30
312004-09-26 Jesper Harder <harder@ifa.au.dk>
32
33 * gnus-msg.el (gnus-post-news): Use blank Newsgroups line if
34 GROUP is a virtual group.
35
36 * mm-util.el (mm-charset-synonym-alist): Remove obsolete entries
37 for big5 and gb2312.
38
39 * rfc2047.el (rfc2047-pad-base64): Deal with more cases of invalid
40 padding.
41
42 * mm-bodies.el (mm-7bit-chars): Don't include \r.
43
44 * mml.el (mml-compute-boundary-1): Don't uncompress files.
45
46 * rfc2047.el (rfc2047-qp-or-base64): New function to reduce
47 dependencies.
48 (rfc2047-encode): Use it.
49
50 * flow-fill.el: Typo.
51
52 * mml.el (mml-generate-mime-1): Don't use format=flowed with
53 inline PGP.
54
55 * gnus.el (gnus-getenv-nntpserver): Strip whitespace.
56
57 * gnus-cache.el (gnus-cache-save-buffers): Check if buffer is
58 alive. Reported by Laurent Martelli <laurent@aopsys.com>.
59
60 * mm-util.el (mm-image-load-path): Handle nil in load-path.
61 From Christian Neukirchen <chneukirchen@yahoo.de>.
62
63 * html2text.el (html2text-replace-list): Add &amp; and &apos;.
64
65 * nnheader.el (nnheader-max-head-length): Increase to 8192.
66
67 * message.el (message-clone-locals): Clone sendmail and smtp
68 variables.
69
702004-09-23 Reiner Steib <Reiner.Steib@gmx.de>
71
72 * gnus-msg.el (gnus-configure-posting-styles): Narrow to headers
73 in `header' match. Reported by Svend Tollak Munkejord.
74
12004-09-20 Stefan Monnier <monnier@iro.umontreal.ca> 752004-09-20 Stefan Monnier <monnier@iro.umontreal.ca>
2 76
3 * mm-decode.el (mm-copy-to-buffer): Preserve the data's unibyteness. 77 * mm-decode.el (mm-copy-to-buffer): Preserve the data's unibyteness.
diff --git a/lisp/gnus/flow-fill.el b/lisp/gnus/flow-fill.el
index a22f2a5af07..8a8098727fe 100644
--- a/lisp/gnus/flow-fill.el
+++ b/lisp/gnus/flow-fill.el
@@ -1,4 +1,4 @@
1;;; flow-fill.el --- interprete RFC2646 "flowed" text 1;;; flow-fill.el --- interpret RFC2646 "flowed" text
2 2
3;; Copyright (C) 2000, 2001, 2002, 2003 Free Software Foundation, Inc. 3;; Copyright (C) 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
4 4
diff --git a/lisp/gnus/gnus-art.el b/lisp/gnus/gnus-art.el
index 5544c28f967..d4dbe1319e0 100644
--- a/lisp/gnus/gnus-art.el
+++ b/lisp/gnus/gnus-art.el
@@ -1464,6 +1464,8 @@ Initialized from `text-mode-syntax-table.")
1464 1464
1465(defvar gnus-inhibit-hiding nil) 1465(defvar gnus-inhibit-hiding nil)
1466 1466
1467(defvar gnus-article-edit-mode nil)
1468
1467;;; Macros for dealing with the article buffer. 1469;;; Macros for dealing with the article buffer.
1468 1470
1469(defmacro gnus-with-article-headers (&rest forms) 1471(defmacro gnus-with-article-headers (&rest forms)
diff --git a/lisp/gnus/gnus-cache.el b/lisp/gnus/gnus-cache.el
index bc09b3a2368..99e77b18f68 100644
--- a/lisp/gnus/gnus-cache.el
+++ b/lisp/gnus/gnus-cache.el
@@ -125,9 +125,8 @@ it's not cached."
125 (overview-file (gnus-cache-file-name 125 (overview-file (gnus-cache-file-name
126 (car gnus-cache-buffer) ".overview"))) 126 (car gnus-cache-buffer) ".overview")))
127 ;; write the overview only if it was modified 127 ;; write the overview only if it was modified
128 (when (buffer-modified-p buffer) 128 (when (and (buffer-live-p buffer) (buffer-modified-p buffer))
129 (save-excursion 129 (with-current-buffer buffer
130 (set-buffer buffer)
131 (if (> (buffer-size) 0) 130 (if (> (buffer-size) 0)
132 ;; Non-empty overview, write it to a file. 131 ;; Non-empty overview, write it to a file.
133 (let ((coding-system-for-write 132 (let ((coding-system-for-write
diff --git a/lisp/gnus/gnus-diary.el b/lisp/gnus/gnus-diary.el
index 120b812c209..e82d77fa58b 100644
--- a/lisp/gnus/gnus-diary.el
+++ b/lisp/gnus/gnus-diary.el
@@ -204,7 +204,7 @@ There are currently two built-in format functions:
204 (let ((head (cdr (assoc (intern (format "X-Diary-%s" (car elt))) 204 (let ((head (cdr (assoc (intern (format "X-Diary-%s" (car elt)))
205 headers)))) 205 headers))))
206 (when head 206 (when head
207 (nndiary-parse-schedule-value head (cadr elt) (caddr elt))))) 207 (nndiary-parse-schedule-value head (cadr elt) (car (cddr elt))))))
208 nndiary-headers)) 208 nndiary-headers))
209 209
210;; #### NOTE: Gnus sometimes gives me a HEADER not corresponding to any 210;; #### NOTE: Gnus sometimes gives me a HEADER not corresponding to any
diff --git a/lisp/gnus/gnus-fun.el b/lisp/gnus/gnus-fun.el
index 087c30da5df..82282e084f7 100644
--- a/lisp/gnus/gnus-fun.el
+++ b/lisp/gnus/gnus-fun.el
@@ -26,8 +26,11 @@
26;;; Code: 26;;; Code:
27 27
28(eval-when-compile 28(eval-when-compile
29 (require 'cl) 29 (require 'cl))
30 (require 'mm-util)) 30
31(require 'mm-util)
32(require 'gnus-ems)
33(require 'gnus-util)
31 34
32(defcustom gnus-x-face-directory (expand-file-name "x-faces" gnus-directory) 35(defcustom gnus-x-face-directory (expand-file-name "x-faces" gnus-directory)
33 "*Directory where X-Face PBM files are stored." 36 "*Directory where X-Face PBM files are stored."
diff --git a/lisp/gnus/gnus-msg.el b/lisp/gnus/gnus-msg.el
index f986e451c02..33531e7f8a4 100644
--- a/lisp/gnus/gnus-msg.el
+++ b/lisp/gnus/gnus-msg.el
@@ -915,7 +915,9 @@ header line with the old Message-ID."
915 (not to-address))) 915 (not to-address)))
916 ;; This is news. 916 ;; This is news.
917 (if post 917 (if post
918 (message-news (or to-group group)) 918 (message-news
919 (or to-group
920 (and (not (gnus-virtual-group-p pgroup)) group)))
919 (set-buffer gnus-article-copy) 921 (set-buffer gnus-article-copy)
920 (gnus-msg-treat-broken-reply-to) 922 (gnus-msg-treat-broken-reply-to)
921 (message-followup (if (or newsgroup-p force-news) 923 (message-followup (if (or newsgroup-p force-news)
@@ -1801,9 +1803,11 @@ this is a reply."
1801 ;; Obsolete format of header match. 1803 ;; Obsolete format of header match.
1802 (and (gnus-buffer-live-p gnus-article-copy) 1804 (and (gnus-buffer-live-p gnus-article-copy)
1803 (with-current-buffer gnus-article-copy 1805 (with-current-buffer gnus-article-copy
1804 (let ((header (message-fetch-field (pop style)))) 1806 (save-restriction
1805 (and header 1807 (nnheader-narrow-to-headers)
1806 (string-match (pop style) header)))))) 1808 (let ((header (message-fetch-field (pop style))))
1809 (and header
1810 (string-match (pop style) header)))))))
1807 ((or (symbolp match) 1811 ((or (symbolp match)
1808 (functionp match)) 1812 (functionp match))
1809 (cond 1813 (cond
@@ -1819,9 +1823,11 @@ this is a reply."
1819 ;; New format of header match. 1823 ;; New format of header match.
1820 (and (gnus-buffer-live-p gnus-article-copy) 1824 (and (gnus-buffer-live-p gnus-article-copy)
1821 (with-current-buffer gnus-article-copy 1825 (with-current-buffer gnus-article-copy
1822 (let ((header (message-fetch-field (nth 1 match)))) 1826 (save-restriction
1823 (and header 1827 (nnheader-narrow-to-headers)
1824 (string-match (nth 2 match) header)))))) 1828 (let ((header (message-fetch-field (nth 1 match))))
1829 (and header
1830 (string-match (nth 2 match) header)))))))
1825 (t 1831 (t
1826 ;; This is a form to be evaled. 1832 ;; This is a form to be evaled.
1827 (eval match))))) 1833 (eval match)))))
diff --git a/lisp/gnus/gnus-picon.el b/lisp/gnus/gnus-picon.el
index dbb96333d75..817696ed974 100644
--- a/lisp/gnus/gnus-picon.el
+++ b/lisp/gnus/gnus-picon.el
@@ -40,8 +40,9 @@
40;; 40;;
41;;; Code: 41;;; Code:
42 42
43(eval-when-compile (require 'cl))
44
43(require 'gnus) 45(require 'gnus)
44(require 'custom)
45(require 'gnus-art) 46(require 'gnus-art)
46 47
47;;; User variables: 48;;; User variables:
diff --git a/lisp/gnus/gnus.el b/lisp/gnus/gnus.el
index 3b7c8c916d8..28ef2c22a15 100644
--- a/lisp/gnus/gnus.el
+++ b/lisp/gnus/gnus.el
@@ -282,7 +282,7 @@ is restarted, and sometimes reloaded."
282 :link '(custom-manual "(gnus)Exiting Gnus") 282 :link '(custom-manual "(gnus)Exiting Gnus")
283 :group 'gnus) 283 :group 'gnus)
284 284
285(defconst gnus-version-number "5.10.6" 285(defconst gnus-version-number "5.11"
286 "Version number for this version of Gnus.") 286 "Version number for this version of Gnus.")
287 287
288(defconst gnus-version (format "Gnus v%s" gnus-version-number) 288(defconst gnus-version (format "Gnus v%s" gnus-version-number)
@@ -1104,9 +1104,8 @@ Check the NNTPSERVER environment variable and the
1104 (and (file-readable-p gnus-nntpserver-file) 1104 (and (file-readable-p gnus-nntpserver-file)
1105 (with-temp-buffer 1105 (with-temp-buffer
1106 (insert-file-contents gnus-nntpserver-file) 1106 (insert-file-contents gnus-nntpserver-file)
1107 (let ((name (buffer-string))) 1107 (when (re-search-forward "[^ \t\n\r]+" nil t)
1108 (unless (string-match "\\`[ \t\n]*$" name) 1108 (match-string 0))))))
1109 name))))))
1110 1109
1111(defcustom gnus-select-method 1110(defcustom gnus-select-method
1112 (condition-case nil 1111 (condition-case nil
@@ -3309,38 +3308,6 @@ that that variable is buffer-local to the summary buffers."
3309 (push (cons server result) gnus-server-method-cache)) 3308 (push (cons server result) gnus-server-method-cache))
3310 result))) 3309 result)))
3311 3310
3312(defsubst gnus-method-to-server (method)
3313 (catch 'server-name
3314 (setq method (or method gnus-select-method))
3315
3316 ;; Perhaps it is already in the cache.
3317 (mapc (lambda (name-method)
3318 (if (equal (cdr name-method) method)
3319 (throw 'server-name (car name-method))))
3320 gnus-server-method-cache)
3321
3322 (mapc
3323 (lambda (server-alist)
3324 (mapc (lambda (name-method)
3325 (when (gnus-methods-equal-p (cdr name-method) method)
3326 (unless (member name-method gnus-server-method-cache)
3327 (push name-method gnus-server-method-cache))
3328 (throw 'server-name (car name-method))))
3329 server-alist))
3330 (let ((alists (list gnus-server-alist
3331 gnus-predefined-server-alist)))
3332 (if gnus-select-method
3333 (push (list (cons "native" gnus-select-method)) alists))
3334 alists))
3335
3336 (let* ((name (if (member (cadr method) '(nil ""))
3337 (format "%s" (car method))
3338 (format "%s:%s" (car method) (cadr method))))
3339 (name-method (cons name method)))
3340 (unless (member name-method gnus-server-method-cache)
3341 (push name-method gnus-server-method-cache))
3342 name)))
3343
3344(defsubst gnus-server-get-method (group method) 3311(defsubst gnus-server-get-method (group method)
3345 ;; Input either a server name, and extended server name, or a 3312 ;; Input either a server name, and extended server name, or a
3346 ;; select method, and return a select method. 3313 ;; select method, and return a select method.
diff --git a/lisp/gnus/html2text.el b/lisp/gnus/html2text.el
index f2aefbef993..6f1ef3b0289 100644
--- a/lisp/gnus/html2text.el
+++ b/lisp/gnus/html2text.el
@@ -1,5 +1,5 @@
1;;; html2text.el --- a simple html to plain text converter 1;;; html2text.el --- a simple html to plain text converter
2;; Copyright (C) 2002, 2003 Free Software Foundation, Inc. 2;; Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc.
3 3
4;; Author: Joakim Hove <hove@phys.ntnu.no> 4;; Author: Joakim Hove <hove@phys.ntnu.no>
5 5
@@ -42,7 +42,8 @@
42(defvar html2text-format-single-element-list '(("hr" . html2text-clean-hr))) 42(defvar html2text-format-single-element-list '(("hr" . html2text-clean-hr)))
43 43
44(defvar html2text-replace-list 44(defvar html2text-replace-list
45 '(("&nbsp;" . " ") ("&gt;" . ">") ("&lt;" . "<") ("&quot;" . "\"")) 45 '(("&nbsp;" . " ") ("&gt;" . ">") ("&lt;" . "<") ("&quot;" . "\"")
46 ("&amp;" . "&") ("&apos;" . "'"))
46 "The map of entity to text. 47 "The map of entity to text.
47 48
48This is an alist were each element is a dotted pair consisting of an 49This is an alist were each element is a dotted pair consisting of an
diff --git a/lisp/gnus/message.el b/lisp/gnus/message.el
index 21c386b86ce..8e5edbc048a 100644
--- a/lisp/gnus/message.el
+++ b/lisp/gnus/message.el
@@ -6685,7 +6685,7 @@ regexp VARSTR."
6685 (let ((locals (save-excursion 6685 (let ((locals (save-excursion
6686 (set-buffer buffer) 6686 (set-buffer buffer)
6687 (buffer-local-variables))) 6687 (buffer-local-variables)))
6688 (regexp "^gnus\\|^nn\\|^message\\|^user-mail-address")) 6688 (regexp "^gnus\\|^nn\\|^message\\|^sendmail\\|^smtp\\|^user-mail-address"))
6689 (mapcar 6689 (mapcar
6690 (lambda (local) 6690 (lambda (local)
6691 (when (and (consp local) 6691 (when (and (consp local)
diff --git a/lisp/gnus/mm-bodies.el b/lisp/gnus/mm-bodies.el
index 40b920bb70d..ad2239a22b8 100644
--- a/lisp/gnus/mm-bodies.el
+++ b/lisp/gnus/mm-bodies.el
@@ -38,9 +38,16 @@
38(require 'rfc2047) 38(require 'rfc2047)
39(require 'mm-encode) 39(require 'mm-encode)
40 40
41;; 8bit treatment gets any char except: 0x32 - 0x7f, CR, LF, TAB, BEL, 41;; 8bit treatment gets any char except: 0x32 - 0x7f, LF, TAB, BEL,
42;; BS, vertical TAB, form feed, and ^_ 42;; BS, vertical TAB, form feed, and ^_
43(defvar mm-7bit-chars "\x20-\x7f\r\n\t\x7\x8\xb\xc\x1f") 43;;
44;; Note that CR is *not* included, as that would allow a non-paired CR
45;; in the body contrary to RFC 2822:
46;;
47;; - CR and LF MUST only occur together as CRLF; they MUST NOT
48;; appear independently in the body.
49
50(defvar mm-7bit-chars "\x20-\x7f\n\t\x7\x8\xb\xc\x1f")
44 51
45(defcustom mm-body-charset-encoding-alist 52(defcustom mm-body-charset-encoding-alist
46 '((iso-2022-jp . 7bit) 53 '((iso-2022-jp . 7bit)
diff --git a/lisp/gnus/mm-decode.el b/lisp/gnus/mm-decode.el
index ff05393415d..51ec38dc387 100644
--- a/lisp/gnus/mm-decode.el
+++ b/lisp/gnus/mm-decode.el
@@ -623,14 +623,14 @@ Postpone undisplaying of viewers for types in
623 "Copy the contents of the current buffer to a fresh buffer." 623 "Copy the contents of the current buffer to a fresh buffer."
624 (save-excursion 624 (save-excursion
625 (let ((obuf (current-buffer)) 625 (let ((obuf (current-buffer))
626 (multibyte enable-multibyte-characters)
627 beg) 626 beg)
628 (goto-char (point-min)) 627 (goto-char (point-min))
629 (search-forward-regexp "^\n" nil t) 628 (search-forward-regexp "^\n" nil t)
630 (setq beg (point)) 629 (setq beg (point))
631 (set-buffer (generate-new-buffer " *mm*")) 630 (set-buffer
632 ;; Preserve the data's unibyteness (for url-insert-file-contents). 631 ;; Preserve the data's unibyteness (for url-insert-file-contents).
633 (set-buffer-multibyte multibyte) 632 (let ((default-enable-multibyte-characters (mm-multibyte-p)))
633 (generate-new-buffer " *mm*")))
634 (insert-buffer-substring obuf beg) 634 (insert-buffer-substring obuf beg)
635 (current-buffer)))) 635 (current-buffer))))
636 636
diff --git a/lisp/gnus/mm-util.el b/lisp/gnus/mm-util.el
index 55c3fd33bc2..3831e1a07ce 100644
--- a/lisp/gnus/mm-util.el
+++ b/lisp/gnus/mm-util.el
@@ -133,15 +133,9 @@ In XEmacs, also return non-nil if CS is a coding system object."
133 133
134(defvar mm-charset-synonym-alist 134(defvar mm-charset-synonym-alist
135 `( 135 `(
136 ;; Perfectly fine? A valid MIME name, anyhow.
137 ,@(unless (mm-coding-system-p 'big5)
138 '((big5 . cn-big5)))
139 ;; Not in XEmacs, but it's not a proper MIME charset anyhow. 136 ;; Not in XEmacs, but it's not a proper MIME charset anyhow.
140 ,@(unless (mm-coding-system-p 'x-ctext) 137 ,@(unless (mm-coding-system-p 'x-ctext)
141 '((x-ctext . ctext))) 138 '((x-ctext . ctext)))
142 ;; Apparently not defined in Emacs 20, but is a valid MIME name.
143 ,@(unless (mm-coding-system-p 'gb2312)
144 '((gb2312 . cn-gb-2312)))
145 ;; ISO-8859-15 is very similar to ISO-8859-1. But it's _different_! 139 ;; ISO-8859-15 is very similar to ISO-8859-1. But it's _different_!
146 ,@(unless (mm-coding-system-p 'iso-8859-15) 140 ,@(unless (mm-coding-system-p 'iso-8859-15)
147 '((iso-8859-15 . iso-8859-1))) 141 '((iso-8859-15 . iso-8859-1)))
@@ -727,11 +721,12 @@ If INHIBIT is non-nil, inhibit `mm-inhibit-file-name-handlers'."
727(defun mm-image-load-path (&optional package) 721(defun mm-image-load-path (&optional package)
728 (let (dir result) 722 (let (dir result)
729 (dolist (path load-path (nreverse result)) 723 (dolist (path load-path (nreverse result))
730 (if (file-directory-p 724 (when (and path
731 (setq dir (concat (file-name-directory 725 (file-directory-p
732 (directory-file-name path)) 726 (setq dir (concat (file-name-directory
733 "etc/" (or package "gnus/")))) 727 (directory-file-name path))
734 (push dir result)) 728 "etc/" (or package "gnus/")))))
729 (push dir result))
735 (push path result)))) 730 (push path result))))
736 731
737;; Fixme: This doesn't look useful where it's used. 732;; Fixme: This doesn't look useful where it's used.
diff --git a/lisp/gnus/mml-sec.el b/lisp/gnus/mml-sec.el
index c9f5cb80190..b8107364411 100644
--- a/lisp/gnus/mml-sec.el
+++ b/lisp/gnus/mml-sec.el
@@ -113,7 +113,7 @@ You can also customize or set `mml-signencrypt-style-alist' instead."
113 (setf (second style-item) style) 113 (setf (second style-item) style)
114 ;; otherwise, just return the current value 114 ;; otherwise, just return the current value
115 (second style-item)) 115 (second style-item))
116 (gnus-message 3 "Warning, attempt to set invalid signencrypt-style")))) 116 (message "Warning, attempt to set invalid signencrypt style"))))
117 117
118;;; Security functions 118;;; Security functions
119 119
diff --git a/lisp/gnus/mml-smime.el b/lisp/gnus/mml-smime.el
index 596585afc72..3313d6a4118 100644
--- a/lisp/gnus/mml-smime.el
+++ b/lisp/gnus/mml-smime.el
@@ -25,9 +25,12 @@
25 25
26;;; Code: 26;;; Code:
27 27
28(eval-when-compile (require 'cl))
29
28(require 'smime) 30(require 'smime)
29(require 'mm-decode) 31(require 'mm-decode)
30(autoload 'message-narrow-to-headers "message") 32(autoload 'message-narrow-to-headers "message")
33(autoload 'message-fetch-field "message")
31 34
32(defun mml-smime-sign (cont) 35(defun mml-smime-sign (cont)
33 (when (null smime-keys) 36 (when (null smime-keys)
diff --git a/lisp/gnus/mml.el b/lisp/gnus/mml.el
index c8f1c030acc..1843cf2068d 100644
--- a/lisp/gnus/mml.el
+++ b/lisp/gnus/mml.el
@@ -449,6 +449,7 @@ If MML is non-nil, return the buffer up till the correspondent mml tag."
449 ;; actually are hard newlines in the text. 449 ;; actually are hard newlines in the text.
450 (let (use-hard-newlines) 450 (let (use-hard-newlines)
451 (when (and (string= type "text/plain") 451 (when (and (string= type "text/plain")
452 (not (string= (cdr (assq 'sign cont)) "pgp"))
452 (or (null (assq 'format cont)) 453 (or (null (assq 'format cont))
453 (string= (cdr (assq 'format cont)) 454 (string= (cdr (assq 'format cont))
454 "flowed")) 455 "flowed"))
@@ -590,7 +591,7 @@ If MML is non-nil, return the buffer up till the correspondent mml tag."
590 (insert-buffer-substring (cdr (assq 'buffer cont)))) 591 (insert-buffer-substring (cdr (assq 'buffer cont))))
591 ((and (setq filename (cdr (assq 'filename cont))) 592 ((and (setq filename (cdr (assq 'filename cont)))
592 (not (equal (cdr (assq 'nofile cont)) "yes"))) 593 (not (equal (cdr (assq 'nofile cont)) "yes")))
593 (mm-insert-file-contents filename)) 594 (mm-insert-file-contents filename nil nil nil nil t))
594 (t 595 (t
595 (insert (cdr (assq 'contents cont))))) 596 (insert (cdr (assq 'contents cont)))))
596 (goto-char (point-min)) 597 (goto-char (point-min))
diff --git a/lisp/gnus/nnfolder.el b/lisp/gnus/nnfolder.el
index 142202cb4d2..369631ce653 100644
--- a/lisp/gnus/nnfolder.el
+++ b/lisp/gnus/nnfolder.el
@@ -1174,7 +1174,7 @@ This command does not work if you use short group names."
1174 (let ((range (nth 0 action)) 1174 (let ((range (nth 0 action))
1175 (what (nth 1 action)) 1175 (what (nth 1 action))
1176 (marks (nth 2 action))) 1176 (marks (nth 2 action)))
1177 (assert (or (eq what 'add) (eq what 'del)) t 1177 (assert (or (eq what 'add) (eq what 'del)) nil
1178 "Unknown request-set-mark action: %s" what) 1178 "Unknown request-set-mark action: %s" what)
1179 (dolist (mark marks) 1179 (dolist (mark marks)
1180 (setq nnfolder-marks (gnus-update-alist-soft 1180 (setq nnfolder-marks (gnus-update-alist-soft
diff --git a/lisp/gnus/nnheader.el b/lisp/gnus/nnheader.el
index 0ff82c69523..1b6ec636734 100644
--- a/lisp/gnus/nnheader.el
+++ b/lisp/gnus/nnheader.el
@@ -1,7 +1,7 @@
1;;; nnheader.el --- header access macros for Gnus and its backends 1;;; nnheader.el --- header access macros for Gnus and its backends
2 2
3;; Copyright (C) 1987, 1988, 1989, 1990, 1993, 1994, 1995, 1996, 3;; Copyright (C) 1987, 1988, 1989, 1990, 1993, 1994, 1995, 1996,
4;; 1997, 1998, 2000, 2001, 2002, 2003 4;; 1997, 1998, 2000, 2001, 2002, 2003, 2004
5;; Free Software Foundation, Inc. 5;; Free Software Foundation, Inc.
6 6
7;; Author: Masanobu UMEDA <umerin@flab.flab.fujitsu.junet> 7;; Author: Masanobu UMEDA <umerin@flab.flab.fujitsu.junet>
@@ -58,7 +58,7 @@ they will keep on jabbering all the time."
58 :group 'gnus-server 58 :group 'gnus-server
59 :type 'boolean) 59 :type 'boolean)
60 60
61(defvar nnheader-max-head-length 4096 61(defvar nnheader-max-head-length 8192
62 "*Max length of the head of articles. 62 "*Max length of the head of articles.
63 63
64Value is an integer, nil, or t. nil means read in chunks of a file 64Value is an integer, nil, or t. nil means read in chunks of a file
diff --git a/lisp/gnus/nnml.el b/lisp/gnus/nnml.el
index cb820b094c1..4a9cfd32943 100644
--- a/lisp/gnus/nnml.el
+++ b/lisp/gnus/nnml.el
@@ -923,7 +923,7 @@ Use the nov database for the current group if available."
923 (let ((range (nth 0 action)) 923 (let ((range (nth 0 action))
924 (what (nth 1 action)) 924 (what (nth 1 action))
925 (marks (nth 2 action))) 925 (marks (nth 2 action)))
926 (assert (or (eq what 'add) (eq what 'del)) t 926 (assert (or (eq what 'add) (eq what 'del)) nil
927 "Unknown request-set-mark action: %s" what) 927 "Unknown request-set-mark action: %s" what)
928 (dolist (mark marks) 928 (dolist (mark marks)
929 (setq nnml-marks (gnus-update-alist-soft 929 (setq nnml-marks (gnus-update-alist-soft
diff --git a/lisp/gnus/rfc2047.el b/lisp/gnus/rfc2047.el
index 978bec3c361..cbb5a1fc5b0 100644
--- a/lisp/gnus/rfc2047.el
+++ b/lisp/gnus/rfc2047.el
@@ -126,6 +126,25 @@ quoted-printable and base64 respectively.")
126;;; Functions for encoding RFC2047 messages 126;;; Functions for encoding RFC2047 messages
127;;; 127;;;
128 128
129(defun rfc2047-qp-or-base64 ()
130 "Return the type with which to encode the buffer.
131This is either `base64' or `quoted-printable'."
132 (save-excursion
133 (let ((limit (min (point-max) (+ 2000 (point-min))))
134 (n8bit 0))
135 (goto-char (point-min))
136 (skip-chars-forward "\x20-\x7f\r\n\t" limit)
137 (while (< (point) limit)
138 (incf n8bit)
139 (forward-char 1)
140 (skip-chars-forward "\x20-\x7f\r\n\t" limit))
141 (if (or (< (* 6 n8bit) (- limit (point-min)))
142 ;; Don't base64, say, a short line with a single
143 ;; non-ASCII char when splitting parts by charset.
144 (= n8bit 1))
145 'quoted-printable
146 'base64))))
147
129(defun rfc2047-narrow-to-field () 148(defun rfc2047-narrow-to-field ()
130 "Narrow the buffer to the header on the current line." 149 "Narrow the buffer to the header on the current line."
131 (beginning-of-line) 150 (beginning-of-line)
@@ -411,7 +430,7 @@ By default, the region is treated as containing addresses (see
411 ;; encoding, choose the one that's shorter. 430 ;; encoding, choose the one that's shorter.
412 (save-restriction 431 (save-restriction
413 (narrow-to-region b e) 432 (narrow-to-region b e)
414 (if (eq (mm-qp-or-base64) 'base64) 433 (if (eq (rfc2047-qp-or-base64) 'base64)
415 'B 434 'B
416 'Q)))) 435 'Q))))
417 (start (concat 436 (start (concat
@@ -720,11 +739,15 @@ decodable."
720 ;; Be more liberal to accept buggy base64 strings. If 739 ;; Be more liberal to accept buggy base64 strings. If
721 ;; base64-decode-string accepts buggy strings, this function could 740 ;; base64-decode-string accepts buggy strings, this function could
722 ;; be aliased to identity. 741 ;; be aliased to identity.
723 (case (mod (length string) 4) 742 (if (= 0 (mod (length string) 4))
724 (0 string) 743 string
725 (1 string) ;; Error, don't pad it. 744 (when (string-match "=+$" string)
726 (2 (concat string "==")) 745 (setq string (substring string 0 (match-beginning 0))))
727 (3 (concat string "=")))) 746 (case (mod (length string) 4)
747 (0 string)
748 (1 string) ;; Error, don't pad it.
749 (2 (concat string "=="))
750 (3 (concat string "=")))))
728 751
729(defun rfc2047-decode (charset encoding string) 752(defun rfc2047-decode (charset encoding string)
730 "Decode STRING from the given MIME CHARSET in the given ENCODING. 753 "Decode STRING from the given MIME CHARSET in the given ENCODING.
diff --git a/lisp/gnus/spam.el b/lisp/gnus/spam.el
index 6fb99db157a..85534f3828c 100644
--- a/lisp/gnus/spam.el
+++ b/lisp/gnus/spam.el
@@ -1746,7 +1746,7 @@ REMOVE not nil, remove the ADDRESSES."
1746 (goto-char (point-min)) 1746 (goto-char (point-min))
1747 (when (re-search-forward "^X-Spam: yes;" nil t) 1747 (when (re-search-forward "^X-Spam: yes;" nil t)
1748 spam-split-group)) 1748 spam-split-group))
1749 (error "Error running spamoracle" status)))))))) 1749 (error "Error running spamoracle: %s" status))))))))
1750 1750
1751(defun spam-spamoracle-learn (articles article-is-spam-p &optional unregister) 1751(defun spam-spamoracle-learn (articles article-is-spam-p &optional unregister)
1752 "Run spamoracle in training mode." 1752 "Run spamoracle in training mode."
@@ -1768,8 +1768,8 @@ REMOVE not nil, remove the ADDRESSES."
1768 `("-f" ,spam-spamoracle-database 1768 `("-f" ,spam-spamoracle-database
1769 "add" ,arg) 1769 "add" ,arg)
1770 `("add" ,arg))))) 1770 `("add" ,arg)))))
1771 (when (not (eq 0 status)) 1771 (unless (eq 0 status)
1772 (error "Error running spamoracle" status))))))) 1772 (error "Error running spamoracle: %s" status)))))))
1773 1773
1774(defun spam-spamoracle-learn-ham (articles &optional unregister) 1774(defun spam-spamoracle-learn-ham (articles &optional unregister)
1775 (spam-spamoracle-learn articles nil unregister)) 1775 (spam-spamoracle-learn articles nil unregister))
diff --git a/lisp/printing.el b/lisp/printing.el
index a406e09b8c0..3efb53111fd 100644
--- a/lisp/printing.el
+++ b/lisp/printing.el
@@ -5,13 +5,13 @@
5 5
6;; Author: Vinicius Jose Latorre <viniciusjl@ig.com.br> 6;; Author: Vinicius Jose Latorre <viniciusjl@ig.com.br>
7;; Maintainer: Vinicius Jose Latorre <viniciusjl@ig.com.br> 7;; Maintainer: Vinicius Jose Latorre <viniciusjl@ig.com.br>
8;; Time-stamp: <2004/09/21 22:51:58 vinicius> 8;; Time-stamp: <2004/09/26 22:11:24 vinicius>
9;; Keywords: wp, print, PostScript 9;; Keywords: wp, print, PostScript
10;; Version: 6.8 10;; Version: 6.8.1
11;; X-URL: http://www.cpqd.com.br/~vinicius/emacs/ 11;; X-URL: http://www.cpqd.com.br/~vinicius/emacs/
12 12
13(defconst pr-version "6.8" 13(defconst pr-version "6.8.1"
14 "printing.el, v 6.8 <2004/09/21 vinicius> 14 "printing.el, v 6.8.1 <2004/09/26 vinicius>
15 15
16Please send all bug fixes and enhancements to 16Please send all bug fixes and enhancements to
17 Vinicius Jose Latorre <viniciusjl@ig.com.br> 17 Vinicius Jose Latorre <viniciusjl@ig.com.br>
@@ -125,16 +125,16 @@ Please send all bug fixes and enhancements to
125;; Novices (First Users) 125;; Novices (First Users)
126;; --------------------- 126;; ---------------------
127;; 127;;
128;; First of all, take a glance of printing documentation only to have an idea 128;; First of all, see printing documentation only to get an idea of what
129;; of what `printing' is capable. 129;; `printing' is capable.
130;; 130;;
131;; Then try to set the variables: `pr-ps-name', `pr-ps-printer-alist', 131;; Then try to set the variables: `pr-ps-name', `pr-ps-printer-alist',
132;; `pr-txt-name', `pr-txt-printer-alist' and `pr-path-alist'. These variables 132;; `pr-txt-name', `pr-txt-printer-alist' and `pr-path-alist'. These variables
133;; are the main variables for printing processing. 133;; are the main variables for printing processing.
134;; 134;;
135;; Now, please, see these variables documentation more in deep. You can do 135;; Now, please, see these variables documentation deeper. You can do this by
136;; this by typing C-h v pr-ps-name RET (for example) if you already loaded 136;; typing C-h v pr-ps-name RET (for example) if you already loaded printing
137;; printing package, or by browsing printing.el source file. 137;; package, or by browsing printing.el source file.
138;; 138;;
139;; If the documentation isn't clear or if you find a way to improve the 139;; If the documentation isn't clear or if you find a way to improve the
140;; documentation, please, send an email to maintainer. All printing users 140;; documentation, please, send an email to maintainer. All printing users
@@ -263,7 +263,8 @@ Please send all bug fixes and enhancements to
263;; in Windows. The gsprint utility is faster than ghostscript to print 263;; in Windows. The gsprint utility is faster than ghostscript to print
264;; monochrome PostScript. 264;; monochrome PostScript.
265;; 265;;
266;; The efficiency is similar to print non-monochrome PostScript file. 266;; To print non-monochrome PostScript file, the efficiency of ghostscript
267;; is similar to gsprint.
267;; 268;;
268;; Also the gsprint utility comes together with gsview distribution. 269;; Also the gsprint utility comes together with gsview distribution.
269;; 270;;
@@ -3887,7 +3888,7 @@ image in a file with that name."
3887 (interactive (list (pr-ps-infile-preprint "Print preview "))) 3888 (interactive (list (pr-ps-infile-preprint "Print preview ")))
3888 (and (stringp filename) (file-exists-p filename) 3889 (and (stringp filename) (file-exists-p filename)
3889 (let* ((file (pr-expand-file-name filename)) 3890 (let* ((file (pr-expand-file-name filename))
3890 (tempfile (pr-dosify-file-name (make-temp-name file)))) 3891 (tempfile (pr-dosify-file-name (make-temp-file file))))
3891 ;; gs use 3892 ;; gs use
3892 (pr-call-process pr-gs-command 3893 (pr-call-process pr-gs-command
3893 (format "-sDEVICE=%s" pr-gs-device) 3894 (format "-sDEVICE=%s" pr-gs-device)
@@ -5221,7 +5222,8 @@ non-nil."
5221 5222
5222 5223
5223(defun pr-delete-file (file) 5224(defun pr-delete-file (file)
5224 (and pr-delete-temp-file (delete-file file))) 5225 (and pr-delete-temp-file (file-exists-p file)
5226 (delete-file file)))
5225 5227
5226 5228
5227(defun pr-expand-file-name (filename) 5229(defun pr-expand-file-name (filename)
diff --git a/lisp/progmodes/gdb-ui.el b/lisp/progmodes/gdb-ui.el
index 1972074fdb1..612a2034e00 100644
--- a/lisp/progmodes/gdb-ui.el
+++ b/lisp/progmodes/gdb-ui.el
@@ -1069,8 +1069,9 @@ static char *magick[] = {
1069(defvar breakpoint-disabled-icon nil 1069(defvar breakpoint-disabled-icon nil
1070 "Icon for disabled breakpoint in display margin") 1070 "Icon for disabled breakpoint in display margin")
1071 1071
1072(defvar breakpoint-bitmap nil 1072;; Bitmap for breakpoint in fringe
1073 "Bitmap for breakpoint in fringe") 1073(define-fringe-bitmap 'breakpoint
1074 "\x3c\x7e\xff\xff\xff\xff\x7e\x3c")
1074 1075
1075(defface breakpoint-enabled-bitmap-face 1076(defface breakpoint-enabled-bitmap-face
1076 '((t 1077 '((t
@@ -1140,9 +1141,8 @@ static char *magick[] = {
1140 (save-excursion 1141 (save-excursion
1141 (goto-char (posn-point posn)) 1142 (goto-char (posn-point posn))
1142 (if (or (posn-object posn) 1143 (if (or (posn-object posn)
1143 (and breakpoint-bitmap 1144 (eq (car (fringe-bitmaps-at-pos (posn-point posn)))
1144 (eq (car (fringe-bitmaps-at-pos (posn-point posn))) 1145 'breakpoint))
1145 breakpoint-bitmap)))
1146 (gud-remove nil) 1146 (gud-remove nil)
1147 (gud-break nil))))))) 1147 (gud-break nil)))))))
1148 1148
@@ -1831,11 +1831,7 @@ BUFFER nil or omitted means use the current buffer."
1831 (if (>= (car (window-fringes)) 8) 1831 (if (>= (car (window-fringes)) 8)
1832 (gdb-put-string 1832 (gdb-put-string
1833 nil (1+ start) 1833 nil (1+ start)
1834 `(left-fringe 1834 `(left-fringe breakpoint
1835 ,(or breakpoint-bitmap
1836 (setq breakpoint-bitmap
1837 (define-fringe-bitmap
1838 "\x3c\x7e\xff\xff\xff\xff\x7e\x3c")))
1839 ,(if enabled 1835 ,(if enabled
1840 'breakpoint-enabled-bitmap-face 1836 'breakpoint-enabled-bitmap-face
1841 'breakpoint-disabled-bitmap-face))) 1837 'breakpoint-disabled-bitmap-face)))
diff --git a/lisp/term.el b/lisp/term.el
index 7991e74c5e9..35bb74834b5 100644
--- a/lisp/term.el
+++ b/lisp/term.el
@@ -1,6 +1,6 @@
1;;; term.el --- general command interpreter in a window stuff 1;;; term.el --- general command interpreter in a window stuff
2 2
3;;; Copyright (C) 1988, 1990, 1992, 1994, 1995 Free Software Foundation, Inc. 3;;; Copyright (C) 1988, 1990, 1992, 1994, 1995, 2004 Free Software Foundation, Inc.
4 4
5;; Author: Per Bothner <bothner@cygnus.com> 5;; Author: Per Bothner <bothner@cygnus.com>
6;; Based on comint mode written by: Olin Shivers <shivers@cs.cmu.edu> 6;; Based on comint mode written by: Olin Shivers <shivers@cs.cmu.edu>
@@ -676,7 +676,6 @@ Buffer local variable.")
676(defvar term-terminal-menu) 676(defvar term-terminal-menu)
677 677
678;;; Let's silence the byte-compiler -mm 678;;; Let's silence the byte-compiler -mm
679(defvar term-ansi-at-eval-string nil)
680(defvar term-ansi-at-host nil) 679(defvar term-ansi-at-host nil)
681(defvar term-ansi-at-dir nil) 680(defvar term-ansi-at-dir nil)
682(defvar term-ansi-at-user nil) 681(defvar term-ansi-at-user nil)
@@ -692,9 +691,6 @@ Buffer local variable.")
692(defvar term-ansi-current-highlight 0) 691(defvar term-ansi-current-highlight 0)
693(defvar term-ansi-current-reverse 0) 692(defvar term-ansi-current-reverse 0)
694(defvar term-ansi-current-invisible 0) 693(defvar term-ansi-current-invisible 0)
695(defvar term-ansi-default-fg 0)
696(defvar term-ansi-default-bg 0)
697(defvar term-ansi-current-temp 0)
698 694
699;;; Four should be enough, if you want more, just add. -mm 695;;; Four should be enough, if you want more, just add. -mm
700(defvar term-terminal-more-parameters 0) 696(defvar term-terminal-more-parameters 0)
@@ -915,6 +911,9 @@ is buffer-local.")
915 (define-key term-raw-map [backspace] 'term-send-backspace) 911 (define-key term-raw-map [backspace] 'term-send-backspace)
916 (define-key term-raw-map [home] 'term-send-home) 912 (define-key term-raw-map [home] 'term-send-home)
917 (define-key term-raw-map [end] 'term-send-end) 913 (define-key term-raw-map [end] 'term-send-end)
914 (define-key term-raw-map [S-prior] 'scroll-down)
915 (define-key term-raw-map [S-next] 'scroll-up)
916 (define-key term-raw-map [S-insert] 'term-paste)
918 (define-key term-raw-map [prior] 'term-send-prior) 917 (define-key term-raw-map [prior] 'term-send-prior)
919 (define-key term-raw-map [next] 'term-send-next))) 918 (define-key term-raw-map [next] 'term-send-next)))
920 919
@@ -930,6 +929,27 @@ is buffer-local.")
930 929
931(put 'term-mode 'mode-class 'special) 930(put 'term-mode 'mode-class 'special)
932 931
932
933;;; Use this variable as a display table for `term-mode'.
934(defvar term-display-table
935 (let ((dt (or (copy-sequence standard-display-table)
936 (make-display-table)))
937 i)
938 ;; avoid changing the display table for ^J
939 (setq i 0)
940 (while (< i 10)
941 (aset dt i (vector i))
942 (setq i (1+ i)))
943 (setq i 11)
944 (while (< i 32)
945 (aset dt i (vector i))
946 (setq i (1+ i)))
947 (setq i 128)
948 (while (< i 256)
949 (aset dt i (vector i))
950 (setq i (1+ i)))
951 dt))
952
933(defun term-mode () 953(defun term-mode ()
934 "Major mode for interacting with an inferior interpreter. 954 "Major mode for interacting with an inferior interpreter.
935The interpreter name is same as buffer name, sans the asterisks. 955The 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'."
979 (setq major-mode 'term-mode) 999 (setq major-mode 'term-mode)
980 (setq mode-name "Term") 1000 (setq mode-name "Term")
981 (use-local-map term-mode-map) 1001 (use-local-map term-mode-map)
1002 ;; we do not want indent to sneak in any tabs
1003 (setq indent-tabs-mode nil)
1004 (setq buffer-display-table term-display-table)
982 (make-local-variable 'term-home-marker) 1005 (make-local-variable 'term-home-marker)
983 (setq term-home-marker (copy-marker 0)) 1006 (setq term-home-marker (copy-marker 0))
984 (make-local-variable 'term-saved-home-marker) 1007 (make-local-variable 'term-saved-home-marker)
@@ -1182,6 +1205,11 @@ without any interpretation."
1182 ((eq arg '-) -1) 1205 ((eq arg '-) -1)
1183 (t (1- arg))))))) 1206 (t (1- arg)))))))
1184 1207
1208(defun term-paste ()
1209 "Insert the last stretch of killed text at point."
1210 (interactive)
1211 (term-send-raw-string (current-kill 0)))
1212
1185;; Which would be better: "\e[A" or "\eOA"? readline accepts either. 1213;; Which would be better: "\e[A" or "\eOA"? readline accepts either.
1186;; For my configuration it's definitely better \eOA but YMMV. -mm 1214;; For my configuration it's definitely better \eOA but YMMV. -mm
1187;; For example: vi works with \eOA while elm wants \e[A ... 1215;; For example: vi works with \eOA while elm wants \e[A ...
@@ -1193,8 +1221,8 @@ without any interpretation."
1193(defun term-send-end () (interactive) (term-send-raw-string "\e[4~")) 1221(defun term-send-end () (interactive) (term-send-raw-string "\e[4~"))
1194(defun term-send-prior () (interactive) (term-send-raw-string "\e[5~")) 1222(defun term-send-prior () (interactive) (term-send-raw-string "\e[5~"))
1195(defun term-send-next () (interactive) (term-send-raw-string "\e[6~")) 1223(defun term-send-next () (interactive) (term-send-raw-string "\e[6~"))
1196(defun term-send-del () (interactive) (term-send-raw-string "\C-?")) 1224(defun term-send-del () (interactive) (term-send-raw-string "\e[3~"))
1197(defun term-send-backspace () (interactive) (term-send-raw-string "\C-H")) 1225(defun term-send-backspace () (interactive) (term-send-raw-string "\C-?"))
1198 1226
1199(defun term-char-mode () 1227(defun term-char-mode ()
1200 "Switch to char (\"raw\") sub-mode of term mode. 1228 "Switch to char (\"raw\") sub-mode of term mode.
@@ -1364,14 +1392,15 @@ The main purpose is to get rid of the local keymap."
1364 "%s%s:li#%d:co#%d:cl=\\E[H\\E[J:cd=\\E[J:bs:am:xn:cm=\\E[%%i%%d;%%dH\ 1392 "%s%s:li#%d:co#%d:cl=\\E[H\\E[J:cd=\\E[J:bs:am:xn:cm=\\E[%%i%%d;%%dH\
1365:nd=\\E[C:up=\\E[A:ce=\\E[K:ho=\\E[H:pt\ 1393:nd=\\E[C:up=\\E[A:ce=\\E[K:ho=\\E[H:pt\
1366:al=\\E[L:dl=\\E[M:DL=\\E[%%dM:AL=\\E[%%dL:cs=\\E[%%i%%d;%%dr:sf=^J\ 1394:al=\\E[L:dl=\\E[M:DL=\\E[%%dM:AL=\\E[%%dL:cs=\\E[%%i%%d;%%dr:sf=^J\
1367:te=\\E[2J\\E[?47l\\E8:ti=\\E7\\E[?47h\
1368:dc=\\E[P:DC=\\E[%%dP:IC=\\E[%%d@:im=\\E[4h:ei=\\E[4l:mi:\ 1395:dc=\\E[P:DC=\\E[%%dP:IC=\\E[%%d@:im=\\E[4h:ei=\\E[4l:mi:\
1369:so=\\E[7m:se=\\E[m:us=\\E[4m:ue=\\E[m:md=\\E[1m:mr=\\E[7m:me=\\E[m\ 1396:so=\\E[7m:se=\\E[m:us=\\E[4m:ue=\\E[m:md=\\E[1m:mr=\\E[7m:me=\\E[m\
1370:UP=\\E[%%dA:DO=\\E[%%dB:LE=\\E[%%dD:RI=\\E[%%dC\ 1397:UP=\\E[%%dA:DO=\\E[%%dB:LE=\\E[%%dD:RI=\\E[%%dC\
1371:kl=\\EOD:kd=\\EOB:kr=\\EOC:ku=\\EOA:kN=\\E[6~:kP=\\E[5~:@7=\\E[4~:kh=\\E[1~\ 1398:kl=\\EOD:kd=\\EOB:kr=\\EOC:ku=\\EOA:kN=\\E[6~:kP=\\E[5~:@7=\\E[4~:kh=\\E[1~\
1372:mk=\\E[8m:cb=\\E[1K:op=\\E[39;49m:Co#8:pa#64:AB=\\E[4%%dm:AF=\\E[3%%dm:cr=^M\ 1399:mk=\\E[8m:cb=\\E[1K:op=\\E[39;49m:Co#8:pa#64:AB=\\E[4%%dm:AF=\\E[3%%dm:cr=^M\
1373:bl=^G:do=^J:le=^H:ta=^I:se=\E[27m:ue=\E24m:" 1400:bl=^G:do=^J:le=^H:ta=^I:se=\E[27m:ue=\E24m\
1401:kb=^?:kD=^[[3~:sc=\E7:rc=\E8:"
1374;;; : -undefine ic 1402;;; : -undefine ic
1403;;; don't define :te=\\E[2J\\E[?47l\\E8:ti=\\E7\\E[?47h\
1375 "termcap capabilities supported") 1404 "termcap capabilities supported")
1376 1405
1377;;; This auxiliary function cranks up the process for term-exec in 1406;;; 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."
1398 (process-connection-type t) 1427 (process-connection-type t)
1399 ;; We should suppress conversion of end-of-line format. 1428 ;; We should suppress conversion of end-of-line format.
1400 (inhibit-eol-conversion t) 1429 (inhibit-eol-conversion t)
1401 ;; inhibit-eol-conversion doesn't seem to do the job, but this does. 1430 ;; The process's output contains not just chars but also binary
1402 (coding-system-for-read 'unknown-unix) 1431 ;; escape codes, so we need to see the raw output. We will have to
1403 ) 1432 ;; do the decoding by hand on the parts that are made of chars.
1433 (coding-system-for-read 'binary))
1404 (apply 'start-process name buffer 1434 (apply 'start-process name buffer
1405 "/bin/sh" "-c" 1435 "/bin/sh" "-c"
1406 (format "stty -nl echo rows %d columns %d sane 2>/dev/null;\ 1436 (format "stty -nl echo rows %d columns %d sane 2>/dev/null;\
@@ -2691,7 +2721,12 @@ See `term-prompt-regexp'."
2691 (if (not funny) (setq funny str-length)) 2721 (if (not funny) (setq funny str-length))
2692 (cond ((> funny i) 2722 (cond ((> funny i)
2693 (cond ((eq term-terminal-state 1) 2723 (cond ((eq term-terminal-state 1)
2694 (term-move-columns 1) 2724 ;; We are in state 1, we need to wrap
2725 ;; around. Go to the beginning of
2726 ;; the next line and switch to state
2727 ;; 0.
2728 (term-down 1)
2729 (term-move-columns (- (term-current-column)))
2695 (setq term-terminal-state 0))) 2730 (setq term-terminal-state 0)))
2696 (setq count (- funny i)) 2731 (setq count (- funny i))
2697 (setq temp (- (+ (term-horizontal-column) count) 2732 (setq temp (- (+ (term-horizontal-column) count)
@@ -2700,6 +2735,7 @@ See `term-prompt-regexp'."
2700 ((> count temp) ;; Some chars fit. 2735 ((> count temp) ;; Some chars fit.
2701 ;; This iteration, handle only what fits. 2736 ;; This iteration, handle only what fits.
2702 (setq count (- count temp)) 2737 (setq count (- count temp))
2738 (setq temp 0)
2703 (setq funny (+ count i))) 2739 (setq funny (+ count i)))
2704 ((or (not (or term-pager-count 2740 ((or (not (or term-pager-count
2705 term-scroll-with-delete)) 2741 term-scroll-with-delete))
@@ -2720,7 +2756,7 @@ See `term-prompt-regexp'."
2720 ;; following point if not eob nor insert-mode. 2756 ;; following point if not eob nor insert-mode.
2721 (let ((old-column (current-column)) 2757 (let ((old-column (current-column))
2722 columns pos) 2758 columns pos)
2723 (insert (substring str i funny)) 2759 (insert (decode-coding-string (substring str i funny) locale-coding-system))
2724 (setq term-current-column (current-column) 2760 (setq term-current-column (current-column)
2725 columns (- term-current-column old-column)) 2761 columns (- term-current-column old-column))
2726 (when (not (or (eobp) term-insert-mode)) 2762 (when (not (or (eobp) term-insert-mode))
@@ -2739,7 +2775,7 @@ See `term-prompt-regexp'."
2739 (setq term-terminal-state 1))) 2775 (setq term-terminal-state 1)))
2740 (setq i (1- funny))) 2776 (setq i (1- funny)))
2741 ((and (setq term-terminal-state 0) 2777 ((and (setq term-terminal-state 0)
2742 (eq char ?\^I)) ; TAB 2778 (eq char ?\^I)) ; TAB (terminfo: ht)
2743 ;; FIXME: Does not handle line wrap! 2779 ;; FIXME: Does not handle line wrap!
2744 (setq count (term-current-column)) 2780 (setq count (term-current-column))
2745 (setq count (+ count 8 (- (mod count 8)))) 2781 (setq count (+ count 8 (- (mod count 8))))
@@ -2766,7 +2802,7 @@ See `term-prompt-regexp'."
2766 (if (not (and term-kill-echo-list 2802 (if (not (and term-kill-echo-list
2767 (term-check-kill-echo-list))) 2803 (term-check-kill-echo-list)))
2768 (term-down 1 t))) 2804 (term-down 1 t)))
2769 ((eq char ?\b) 2805 ((eq char ?\b) ;; (terminfo: cub1)
2770 (term-move-columns -1)) 2806 (term-move-columns -1))
2771 ((eq char ?\033) ; Escape 2807 ((eq char ?\033) ; Escape
2772 (setq term-terminal-state 2)) 2808 (setq term-terminal-state 2))
@@ -2816,13 +2852,13 @@ See `term-prompt-regexp'."
2816 ((eq char ?M) ;; scroll reversed 2852 ((eq char ?M) ;; scroll reversed
2817 (term-insert-lines 1) 2853 (term-insert-lines 1)
2818 (setq term-terminal-state 0)) 2854 (setq term-terminal-state 0))
2819 ((eq char ?7) ;; Save cursor 2855 ((eq char ?7) ;; Save cursor (terminfo: sc)
2820 (term-handle-deferred-scroll) 2856 (term-handle-deferred-scroll)
2821 (setq term-saved-cursor 2857 (setq term-saved-cursor
2822 (cons (term-current-row) 2858 (cons (term-current-row)
2823 (term-horizontal-column))) 2859 (term-horizontal-column)))
2824 (setq term-terminal-state 0)) 2860 (setq term-terminal-state 0))
2825 ((eq char ?8) ;; Restore cursor 2861 ((eq char ?8) ;; Restore cursor (terminfo: rc)
2826 (if term-saved-cursor 2862 (if term-saved-cursor
2827 (term-goto (car term-saved-cursor) 2863 (term-goto (car term-saved-cursor)
2828 (cdr term-saved-cursor))) 2864 (cdr term-saved-cursor)))
@@ -2974,13 +3010,13 @@ See `term-prompt-regexp'."
2974 ((eq parameter 8) 3010 ((eq parameter 8)
2975 (setq term-ansi-current-invisible 1)) 3011 (setq term-ansi-current-invisible 1))
2976 3012
2977;;; Reset reverse (i.e. terminfo rmso) 3013;;; Reset underline (i.e. terminfo rmul)
2978 ((eq parameter 24) 3014 ((eq parameter 24)
2979 (setq term-ansi-current-reverse 0)) 3015 (setq term-ansi-current-underline 0))
2980 3016
2981;;; Reset underline (i.e. terminfo rmul) 3017;;; Reset reverse (i.e. terminfo rmso)
2982 ((eq parameter 27) 3018 ((eq parameter 27)
2983 (setq term-ansi-current-underline 0)) 3019 (setq term-ansi-current-reverse 0))
2984 3020
2985;;; Foreground 3021;;; Foreground
2986 ((and (>= parameter 30) (<= parameter 37)) 3022 ((and (>= parameter 30) (<= parameter 37))
@@ -3095,7 +3131,7 @@ See `term-prompt-regexp'."
3095 (term-goto 3131 (term-goto
3096 (1- term-terminal-previous-parameter) 3132 (1- term-terminal-previous-parameter)
3097 (1- term-terminal-parameter))) 3133 (1- term-terminal-parameter)))
3098 ;; \E[A - cursor up 3134 ;; \E[A - cursor up (terminfo: cuu1)
3099 ((eq char ?A) 3135 ((eq char ?A)
3100 (term-handle-deferred-scroll) 3136 (term-handle-deferred-scroll)
3101 (term-down (- (max 1 term-terminal-parameter)) t)) 3137 (term-down (- (max 1 term-terminal-parameter)) t))
@@ -3108,13 +3144,13 @@ See `term-prompt-regexp'."
3108 ;; \E[D - cursor left 3144 ;; \E[D - cursor left
3109 ((eq char ?D) 3145 ((eq char ?D)
3110 (term-move-columns (- (max 1 term-terminal-parameter)))) 3146 (term-move-columns (- (max 1 term-terminal-parameter))))
3111 ;; \E[J - clear to end of screen 3147 ;; \E[J - clear to end of screen (terminfo: ed, clear)
3112 ((eq char ?J) 3148 ((eq char ?J)
3113 (term-erase-in-display term-terminal-parameter)) 3149 (term-erase-in-display term-terminal-parameter))
3114 ;; \E[K - clear to end of line 3150 ;; \E[K - clear to end of line (terminfo: el, el1)
3115 ((eq char ?K) 3151 ((eq char ?K)
3116 (term-erase-in-line term-terminal-parameter)) 3152 (term-erase-in-line term-terminal-parameter))
3117 ;; \E[L - insert lines 3153 ;; \E[L - insert lines (terminfo: il, il1)
3118 ((eq char ?L) 3154 ((eq char ?L)
3119 (term-insert-lines (max 1 term-terminal-parameter))) 3155 (term-insert-lines (max 1 term-terminal-parameter)))
3120 ;; \E[M - delete lines 3156 ;; \E[M - delete lines
@@ -3128,19 +3164,22 @@ See `term-prompt-regexp'."
3128 (term-insert-spaces (max 1 term-terminal-parameter))) 3164 (term-insert-spaces (max 1 term-terminal-parameter)))
3129 ;; \E[?h - DEC Private Mode Set 3165 ;; \E[?h - DEC Private Mode Set
3130 ((eq char ?h) 3166 ((eq char ?h)
3131 (cond ((eq term-terminal-parameter 4) 3167 (cond ((eq term-terminal-parameter 4) ;; (terminfo: smir)
3132 (setq term-insert-mode t)) 3168 (setq term-insert-mode t))
3133 ((eq term-terminal-parameter 47) 3169 ;; ((eq term-terminal-parameter 47) ;; (terminfo: smcup)
3134 (term-switch-to-alternate-sub-buffer t)))) 3170 ;; (term-switch-to-alternate-sub-buffer t))
3171 ))
3135 ;; \E[?l - DEC Private Mode Reset 3172 ;; \E[?l - DEC Private Mode Reset
3136 ((eq char ?l) 3173 ((eq char ?l)
3137 (cond ((eq term-terminal-parameter 4) 3174 (cond ((eq term-terminal-parameter 4) ;; (terminfo: rmir)
3138 (setq term-insert-mode nil)) 3175 (setq term-insert-mode nil))
3139 ((eq term-terminal-parameter 47) 3176 ;; ((eq term-terminal-parameter 47) ;; (terminfo: rmcup)
3140 (term-switch-to-alternate-sub-buffer nil)))) 3177 ;; (term-switch-to-alternate-sub-buffer nil))
3178 ))
3141 3179
3142;;; Modified to allow ansi coloring -mm 3180;;; Modified to allow ansi coloring -mm
3143 ;; \E[m - Set/reset standard mode 3181 ;; \E[m - Set/reset modes, set bg/fg
3182 ;;(terminfo: smso,rmso,smul,rmul,rev,bold,sgr0,invis,op,setab,setaf)
3144 ((eq char ?m) 3183 ((eq char ?m)
3145 (when (= term-terminal-more-parameters 1) 3184 (when (= term-terminal-more-parameters 1)
3146 (if (>= term-terminal-previous-parameter-4 0) 3185 (if (>= term-terminal-previous-parameter-4 0)
@@ -3184,32 +3223,32 @@ The top-most line is line 0."
3184 (not (and (= term-scroll-start 0) 3223 (not (and (= term-scroll-start 0)
3185 (= term-scroll-end term-height)))))) 3224 (= term-scroll-end term-height))))))
3186 3225
3187(defun term-switch-to-alternate-sub-buffer (set) 3226;; (defun term-switch-to-alternate-sub-buffer (set)
3188 ;; If asked to switch to (from) the alternate sub-buffer, and already (not) 3227;; ;; If asked to switch to (from) the alternate sub-buffer, and already (not)
3189 ;; using it, do nothing. This test is needed for some programs (including 3228;; ;; using it, do nothing. This test is needed for some programs (including
3190 ;; Emacs) that emit the ti termcap string twice, for unknown reason. 3229;; ;; Emacs) that emit the ti termcap string twice, for unknown reason.
3191 (term-handle-deferred-scroll) 3230;; (term-handle-deferred-scroll)
3192 (if (eq set (not (term-using-alternate-sub-buffer))) 3231;; (if (eq set (not (term-using-alternate-sub-buffer)))
3193 (let ((row (term-current-row)) 3232;; (let ((row (term-current-row))
3194 (col (term-horizontal-column))) 3233;; (col (term-horizontal-column)))
3195 (cond (set 3234;; (cond (set
3196 (goto-char (point-max)) 3235;; (goto-char (point-max))
3197 (if (not (eq (preceding-char) ?\n)) 3236;; (if (not (eq (preceding-char) ?\n))
3198 (term-insert-char ?\n 1)) 3237;; (term-insert-char ?\n 1))
3199 (setq term-scroll-with-delete t) 3238;; (setq term-scroll-with-delete t)
3200 (setq term-saved-home-marker (copy-marker term-home-marker)) 3239;; (setq term-saved-home-marker (copy-marker term-home-marker))
3201 (set-marker term-home-marker (point))) 3240;; (set-marker term-home-marker (point)))
3202 (t 3241;; (t
3203 (setq term-scroll-with-delete 3242;; (setq term-scroll-with-delete
3204 (not (and (= term-scroll-start 0) 3243;; (not (and (= term-scroll-start 0)
3205 (= term-scroll-end term-height)))) 3244;; (= term-scroll-end term-height))))
3206 (set-marker term-home-marker term-saved-home-marker) 3245;; (set-marker term-home-marker term-saved-home-marker)
3207 (set-marker term-saved-home-marker nil) 3246;; (set-marker term-saved-home-marker nil)
3208 (setq term-saved-home-marker nil) 3247;; (setq term-saved-home-marker nil)
3209 (goto-char term-home-marker))) 3248;; (goto-char term-home-marker)))
3210 (setq term-current-column nil) 3249;; (setq term-current-column nil)
3211 (setq term-current-row 0) 3250;; (setq term-current-row 0)
3212 (term-goto row col)))) 3251;; (term-goto row col))))
3213 3252
3214;; Default value for the symbol term-command-hook. 3253;; Default value for the symbol term-command-hook.
3215 3254
@@ -3519,11 +3558,11 @@ all pending output has been dealt with."))
3519 (if (not (bolp)) (insert-before-markers ?\n))) 3558 (if (not (bolp)) (insert-before-markers ?\n)))
3520 3559
3521(defun term-erase-in-line (kind) 3560(defun term-erase-in-line (kind)
3522 (if (> kind 1) ;; erase left of point 3561 (if (= kind 1) ;; erase left of point
3523 (let ((cols (term-horizontal-column)) (saved-point (point))) 3562 (let ((cols (term-horizontal-column)) (saved-point (point)))
3524 (term-vertical-motion 0) 3563 (term-vertical-motion 0)
3525 (delete-region (point) saved-point) 3564 (delete-region (point) saved-point)
3526 (term-insert-char ?\n cols))) 3565 (term-insert-char ? cols)))
3527 (if (not (eq kind 1)) ;; erase right of point 3566 (if (not (eq kind 1)) ;; erase right of point
3528 (let ((saved-point (point)) 3567 (let ((saved-point (point))
3529 (wrapped (and (zerop (term-horizontal-column)) 3568 (wrapped (and (zerop (term-horizontal-column))
@@ -3622,7 +3661,7 @@ Should only be called when point is at the start of a screen line."
3622 (term-insert-char ?\n lines) 3661 (term-insert-char ?\n lines)
3623 (goto-char start))) 3662 (goto-char start)))
3624 3663
3625(defun term-set-output-log (name) 3664(defun term-start-output-log (name)
3626 "Record raw inferior process output in a buffer." 3665 "Record raw inferior process output in a buffer."
3627 (interactive (list (if term-log-buffer 3666 (interactive (list (if term-log-buffer
3628 nil 3667 nil
@@ -3644,10 +3683,10 @@ Should only be called when point is at the start of a screen line."
3644 (message "Recording terminal emulator output into buffer \"%s\"" 3683 (message "Recording terminal emulator output into buffer \"%s\""
3645 (buffer-name term-log-buffer)))) 3684 (buffer-name term-log-buffer))))
3646 3685
3647(defun term-stop-photo () 3686(defun term-stop-output-log ()
3648 "Discontinue raw inferior process logging." 3687 "Discontinue raw inferior process logging."
3649 (interactive) 3688 (interactive)
3650 (term-set-output-log nil)) 3689 (term-start-output-log nil))
3651 3690
3652(defun term-show-maximum-output () 3691(defun term-show-maximum-output ()
3653 "Put the end of the buffer at the bottom of the window." 3692 "Put the end of the buffer at the bottom of the window."
diff --git a/lisp/textmodes/enriched.el b/lisp/textmodes/enriched.el
index 4db493803ef..c2ed47cb48d 100644
--- a/lisp/textmodes/enriched.el
+++ b/lisp/textmodes/enriched.el
@@ -102,7 +102,7 @@ expression, which is evaluated to get the string to insert.")
102(defconst enriched-annotation-regexp "<\\(/\\)?\\([-A-Za-z0-9]+\\)>" 102(defconst enriched-annotation-regexp "<\\(/\\)?\\([-A-Za-z0-9]+\\)>"
103 "Regular expression matching enriched-text annotations.") 103 "Regular expression matching enriched-text annotations.")
104 104
105(defconst enriched-translations 105(defvar enriched-translations
106 '((face (bold-italic "bold" "italic") 106 '((face (bold-italic "bold" "italic")
107 (bold "bold") 107 (bold "bold")
108 (italic "italic") 108 (italic "italic")