aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKaroly Lorentey2004-05-27 17:24:17 +0000
committerKaroly Lorentey2004-05-27 17:24:17 +0000
commit4e1bb54039da0e3d5c84e231104703d62ace938d (patch)
treef5bfbeec2c631db3e1a8de4aa3bfe37220580cad
parentf76e7db651b005bb697a188e4fe684fe25e29601 (diff)
parent6c0afe12c98f63cc694e9fae5a05e5fd18afa636 (diff)
downloademacs-4e1bb54039da0e3d5c84e231104703d62ace938d.tar.gz
emacs-4e1bb54039da0e3d5c84e231104703d62ace938d.zip
Merged in changes from CVS trunk.
Patches applied: * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-342 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-343 Update from CVS git-archimport-id: lorentey@elte.hu--2004/emacs--multi-tty--0--patch-178
-rw-r--r--lisp/ChangeLog43
-rw-r--r--lisp/emacs-lisp/lisp-mode.el8
-rw-r--r--lisp/files.el62
-rw-r--r--lisp/gs.el4
-rw-r--r--lisp/info.el148
-rw-r--r--lisp/progmodes/gdb-ui.el31
-rw-r--r--lisp/textmodes/texinfmt.el2
-rw-r--r--src/ChangeLog15
-rw-r--r--src/alloc.c29
-rw-r--r--src/process.c3
-rw-r--r--src/xdisp.c8
11 files changed, 244 insertions, 109 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index dee9b31a93f..9e5aad11082 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,7 +1,46 @@
12004-05-25 Juri Linkov <juri@jurta.org>
2
3 * info.el (Info-toc): Call Info-mode on intermediate buffer.
4 (Info-index-nodes): Enclose code in condition-case to catch errors.
5 (Info-index-node): Don't search all index nodes if request is only
6 for the current node and file is not in the cache of index nodes.
7 (Info-mode-map): Bind Info-copy-current-node-name to `w'
8 for consistency with dired-copy-filename-as-kill.
9 Bind `S' to Info-search-case-sensitively.
10 (Info-copy-current-node-name): New arg. With zero prefix arg put
11 the name inside a function call to `info'. Display copied text in
12 the echo area.
13
142004-05-25 Sam Steingold <sds@gnu.org>
15
16 * emacs-lisp/lisp-mode.el (lisp-find-tag-default): New function:
17 strip the package prefix from the symbol name, if any.
18 Make it the `find-tag-default-function' for `lisp-mode'.
19
202004-05-25 John Paul Wallington <jpw@gnu.org>
21
22 * gs.el (gs-load-image): Use `set-process-query-on-exit-flag'
23 instead of obsolete `process-kill-without-query'.
24
25 * textmodes/texinfmt.el (texinfo-indexvar-alist):
26 Declare as variable, not constant.
27
282004-05-25 Luc Teirlinck <teirllm@auburn.edu>
29
30 * files.el (find-file-noselect-1): Fix bug introduced by
31 Revision 1.694. As a side effect, `inhibit-read-only'
32 is again, by default, t during execution of
33 `find-file-not-found-functions'.
34 (insert-directory): Check that lines were really inserted by
35 the --dired switch, before erasing them.
36
12004-05-24 Nick Roberts <nickrob@gnu.org> 372004-05-24 Nick Roberts <nickrob@gnu.org>
2 38
3 * progmodes/gdb-ui.el (gdb-breakpoints-mode, gdb-frames-mode) 39 * progmodes/gdb-ui.el (gdb-breakpoints-mode, gdb-frames-mode)
4 (gdb-locals-mode): Check gud-minor-mode in gud-comint-buffer. 40 (gdb-locals-mode): Check gud-minor-mode in gud-comint-buffer.
41 (gdb-var-update, gdb-var-update-handler, gdb-var-delete)
42 (gdb-edit-value, gdb-speedbar-expand-node): Handle new value for
43 gud-minor-mode (gdbmi).
5 44
62004-05-24 Yoichi NAKAYAMA <yoichi@geiin.org> (tiny change) 452004-05-24 Yoichi NAKAYAMA <yoichi@geiin.org> (tiny change)
7 46
@@ -2495,7 +2534,7 @@
24952004-03-28 Stefan Monnier <monnier@iro.umontreal.ca> 25342004-03-28 Stefan Monnier <monnier@iro.umontreal.ca>
2496 2535
2497 * vc-hooks.el (vc-file-not-found-hook): Fix typo. 2536 * vc-hooks.el (vc-file-not-found-hook): Fix typo.
2498 From lorentey@elte.hu (L,Bu(Brentey K,Ba(Broly). 2537 From lorentey@elte.hu (L$,1 q(Brentey K,Aa(Broly).
2499 2538
25002004-03-27 Luc Teirlinck <teirllm@auburn.edu> 25392004-03-27 Luc Teirlinck <teirllm@auburn.edu>
2501 2540
diff --git a/lisp/emacs-lisp/lisp-mode.el b/lisp/emacs-lisp/lisp-mode.el
index 4057fe2968e..fcc6517b747 100644
--- a/lisp/emacs-lisp/lisp-mode.el
+++ b/lisp/emacs-lisp/lisp-mode.el
@@ -355,6 +355,14 @@ if that value is non-nil."
355 (setq imenu-case-fold-search t) 355 (setq imenu-case-fold-search t)
356 (set-syntax-table lisp-mode-syntax-table) 356 (set-syntax-table lisp-mode-syntax-table)
357 (run-mode-hooks 'lisp-mode-hook)) 357 (run-mode-hooks 'lisp-mode-hook))
358(put 'lisp-mode 'find-tag-default-function 'lisp-find-tag-default)
359
360(defun lisp-find-tag-default ()
361 (let ((default (find-tag-default)))
362 (when (stringp default)
363 (if (string-match ":+" default)
364 (substring default (match-end 0))
365 default))))
358 366
359;; Used in old LispM code. 367;; Used in old LispM code.
360(defalias 'common-lisp-mode 'lisp-mode) 368(defalias 'common-lisp-mode 'lisp-mode)
diff --git a/lisp/files.el b/lisp/files.el
index ccd30a4de30..06792a0d04e 100644
--- a/lisp/files.el
+++ b/lisp/files.el
@@ -1379,20 +1379,19 @@ that are visiting the various files."
1379 (signal 'file-error (list "File is not readable" 1379 (signal 'file-error (list "File is not readable"
1380 filename))) 1380 filename)))
1381 ;; Unconditionally set error 1381 ;; Unconditionally set error
1382 (setq error t))))) 1382 (setq error t)))
1383 (condition-case () 1383 (condition-case ()
1384 (let ((inhibit-read-only t)) 1384 (insert-file-contents filename t)
1385 (insert-file-contents filename t)) 1385 (file-error
1386 (file-error 1386 (when (and (file-exists-p filename)
1387 (when (and (file-exists-p filename) 1387 (not (file-readable-p filename)))
1388 (not (file-readable-p filename))) 1388 (kill-buffer buf)
1389 (kill-buffer buf) 1389 (signal 'file-error (list "File is not readable"
1390 (signal 'file-error (list "File is not readable" 1390 filename)))
1391 filename))) 1391 ;; Run find-file-not-found-hooks until one returns non-nil.
1392 ;; Run find-file-not-found-hooks until one returns non-nil. 1392 (or (run-hook-with-args-until-success 'find-file-not-found-functions)
1393 (or (run-hook-with-args-until-success 'find-file-not-found-functions) 1393 ;; If they fail too, set error.
1394 ;; If they fail too, set error. 1394 (setq error t))))))
1395 (setq error t))))
1396 ;; Record the file's truename, and maybe use that as visited name. 1395 ;; Record the file's truename, and maybe use that as visited name.
1397 (if (equal filename buffer-file-name) 1396 (if (equal filename buffer-file-name)
1398 (setq buffer-file-truename truename) 1397 (setq buffer-file-truename truename)
@@ -4336,21 +4335,26 @@ normally equivalent short `-D' option is just passed on to
4336 (when (looking-at "//SUBDIRED//") 4335 (when (looking-at "//SUBDIRED//")
4337 (delete-region (point) (progn (forward-line 1) (point))) 4336 (delete-region (point) (progn (forward-line 1) (point)))
4338 (forward-line -1)) 4337 (forward-line -1))
4339 (let ((end (line-end-position))) 4338 (if (looking-at "//DIRED//")
4340 (forward-word 1) 4339 (let ((end (line-end-position)))
4341 (forward-char 3) 4340 (forward-word 1)
4342 (while (< (point) end) 4341 (forward-char 3)
4343 (let ((start (+ beg (read (current-buffer)))) 4342 (while (< (point) end)
4344 (end (+ beg (read (current-buffer))))) 4343 (let ((start (+ beg (read (current-buffer))))
4345 (if (= (char-after end) ?\n) 4344 (end (+ beg (read (current-buffer)))))
4346 (put-text-property start end 'dired-filename t) 4345 (if (= (char-after end) ?\n)
4347 ;; It seems that we can't trust ls's output as to 4346 (put-text-property start end 'dired-filename t)
4348 ;; byte positions of filenames. 4347 ;; It seems that we can't trust ls's output as to
4349 (put-text-property beg (point) 'dired-filename nil) 4348 ;; byte positions of filenames.
4350 (end-of-line)))) 4349 (put-text-property beg (point) 'dired-filename nil)
4351 (goto-char end) 4350 (end-of-line))))
4352 (beginning-of-line) 4351 (goto-char end)
4353 (delete-region (point) (progn (forward-line 2) (point))))) 4352 (beginning-of-line)
4353 (delete-region (point) (progn (forward-line 2) (point))))
4354 (forward-line 1)
4355 (if (looking-at "//DIRED-OPTIONS//")
4356 (delete-region (point) (progn (forward-line 1) (point)))
4357 (forward-line 1))))
4354 4358
4355 ;; Now decode what read if necessary. 4359 ;; Now decode what read if necessary.
4356 (let ((coding (or coding-system-for-read 4360 (let ((coding (or coding-system-for-read
diff --git a/lisp/gs.el b/lisp/gs.el
index 284b18251ec..2c38a55f6df 100644
--- a/lisp/gs.el
+++ b/lisp/gs.el
@@ -1,6 +1,6 @@
1;;; gs.el --- interface to Ghostscript 1;;; gs.el --- interface to Ghostscript
2 2
3;; Copyright (C) 1998, 2001 Free Software Foundation, Inc. 3;; Copyright (C) 1998, 2001, 2004 Free Software Foundation, Inc.
4 4
5;; Maintainer: FSF 5;; Maintainer: FSF
6;; Keywords: internal 6;; Keywords: internal
@@ -197,7 +197,7 @@ the form \"WINDOW-ID PIXMAP-ID\". Value is non-nil if successful."
197 (setenv "GHOSTVIEW" window-and-pixmap-id) 197 (setenv "GHOSTVIEW" window-and-pixmap-id)
198 (setq gs (apply 'start-process "gs" "*GS*" gs-program 198 (setq gs (apply 'start-process "gs" "*GS*" gs-program
199 (gs-options gs-device file))) 199 (gs-options gs-device file)))
200 (process-kill-without-query gs) 200 (set-process-query-on-exit-flag gs nil)
201 gs) 201 gs)
202 nil)) 202 nil))
203 203
diff --git a/lisp/info.el b/lisp/info.el
index 9f32c17b544..84ee6ac5e79 100644
--- a/lisp/info.el
+++ b/lisp/info.el
@@ -1691,6 +1691,7 @@ If SAME-FILE is non-nil, do not move to a different Info file."
1691 (if (not (bobp)) 1691 (if (not (bobp))
1692 (let ((Info-hide-note-references 'hide) 1692 (let ((Info-hide-note-references 'hide)
1693 (Info-fontify-visited-nodes nil)) 1693 (Info-fontify-visited-nodes nil))
1694 (Info-mode)
1694 (setq Info-current-file "toc" Info-current-node "Top") 1695 (setq Info-current-file "toc" Info-current-node "Top")
1695 (Info-fontify-node))) 1696 (Info-fontify-node)))
1696 (goto-char (point-min)) 1697 (goto-char (point-min))
@@ -2349,78 +2350,97 @@ Each element has the form (INFO-FILE INDEX-NODE-NAMES-LIST).")
2349(defun Info-index-nodes (&optional file) 2350(defun Info-index-nodes (&optional file)
2350 "Return a list of names of all index nodes in Info FILE. 2351 "Return a list of names of all index nodes in Info FILE.
2351If FILE is omitted, it defaults to the current Info file. 2352If FILE is omitted, it defaults to the current Info file.
2352First look in a list of cached index node names. Then scan Info file 2353First look in a list of cached index node names. Then scan Info
2353and its subfiles for nodes with index cookie. Then try index nodes 2354file and its subfiles for nodes with the index cookie. Then try
2354starting from the first node in the top level menu whose name 2355to find index nodes starting from the first node in the top level
2355contains the word \"Index\", plus any immediately following nodes 2356menu whose name contains the word \"Index\", plus any immediately
2356whose names also contain the word \"Index\"." 2357following nodes whose names also contain the word \"Index\"."
2357 (or file (setq file Info-current-file)) 2358 (or file (setq file Info-current-file))
2358 (or (assoc file Info-index-nodes) 2359 (or (assoc file Info-index-nodes)
2359 ;; Skip virtual Info files 2360 ;; Skip virtual Info files
2360 (member file '("dir" "history" "toc" "apropos")) 2361 (and (member file '("dir" "history" "toc" "apropos"))
2362 (setq Info-index-nodes (cons (cons file nil) Info-index-nodes)))
2363 (not (stringp file))
2361 ;; Find nodes with index cookie 2364 ;; Find nodes with index cookie
2362 (let* ((default-directory (or (and (stringp file) 2365 (let* ((default-directory (or (and (stringp file)
2363 (file-name-directory 2366 (file-name-directory
2364 (setq file (Info-find-file file)))) 2367 (setq file (Info-find-file file))))
2365 default-directory)) 2368 default-directory))
2366 (main-file file) 2369 Info-history Info-history-list Info-fontify-maximum-menu-size
2367 (Info-fontify-maximum-menu-size nil) 2370 (main-file file) subfiles nodes node)
2368 subfiles nodes node Info-history Info-history-list) 2371 (condition-case nil
2369 (with-temp-buffer 2372 (with-temp-buffer
2370 (while (or main-file subfiles) 2373 (while (or main-file subfiles)
2371 (erase-buffer) 2374 (erase-buffer)
2372 (info-insert-file-contents (or main-file (car subfiles))) 2375 (info-insert-file-contents (or main-file (car subfiles)))
2373 (goto-char (point-min)) 2376 (goto-char (point-min))
2374 (while (search-forward "\0\10[index\0\10]" nil 'move) 2377 (while (search-forward "\0\b[index\0\b]" nil 'move)
2375 (save-excursion 2378 (save-excursion
2376 (re-search-backward "^\^_") 2379 (re-search-backward "^\^_")
2377 (search-forward "Node: ") 2380 (search-forward "Node: ")
2378 (setq nodes (cons (Info-following-node-name) nodes)))) 2381 (setq nodes (cons (Info-following-node-name) nodes))))
2379 (if main-file 2382 (if main-file
2380 (save-excursion 2383 (save-excursion
2381 (goto-char (point-min)) 2384 (goto-char (point-min))
2382 (if (search-forward "\n\^_\nIndirect:" nil t) 2385 (if (search-forward "\n\^_\nIndirect:" nil t)
2383 (let ((bound (save-excursion (search-forward "\n\^_" nil t)))) 2386 (let ((bound (save-excursion (search-forward "\n\^_" nil t))))
2384 (while (re-search-forward "^\\(.*\\): [0-9]+$" bound t) 2387 (while (re-search-forward "^\\(.*\\): [0-9]+$" bound t)
2385 (setq subfiles (cons (match-string-no-properties 1) 2388 (setq subfiles (cons (match-string-no-properties 1)
2386 subfiles))))) 2389 subfiles)))))
2387 (setq subfiles (nreverse subfiles) 2390 (setq subfiles (nreverse subfiles)
2388 main-file nil)) 2391 main-file nil))
2389 (setq subfiles (cdr subfiles))))) 2392 (setq subfiles (cdr subfiles)))))
2393 (error nil))
2390 (if nodes 2394 (if nodes
2391 (setq nodes (nreverse nodes) 2395 (setq nodes (nreverse nodes)
2392 Info-index-nodes (cons (cons file nodes) Info-index-nodes))) 2396 Info-index-nodes (cons (cons file nodes) Info-index-nodes)))
2393 nodes) 2397 nodes)
2394 ;; Find nodes with string "Index" in node names 2398 ;; Find nodes with the word "Index" in the node name
2395 (let ((Info-fontify-maximum-menu-size nil) 2399 (let ((case-fold-search t)
2396 (case-fold-search t) 2400 Info-history Info-history-list Info-fontify-maximum-menu-size
2397 nodes node Info-history Info-history-list) 2401 nodes node)
2398 (with-temp-buffer 2402 (condition-case nil
2399 (Info-mode) 2403 (with-temp-buffer
2400 (Info-find-node file "Top") 2404 (Info-mode)
2401 (when (and (search-forward "\n* menu:" nil t) 2405 (Info-find-node file "Top")
2402 (re-search-forward "\n\\* \\(.*\\<Index\\>\\)" nil t)) 2406 (when (and (search-forward "\n* menu:" nil t)
2403 (goto-char (match-beginning 1)) 2407 (re-search-forward "\n\\* \\(.*\\<Index\\>\\)" nil t))
2404 (setq nodes (list (Info-extract-menu-node-name))) 2408 (goto-char (match-beginning 1))
2405 (Info-goto-node (car nodes)) 2409 (setq nodes (list (Info-extract-menu-node-name)))
2406 (while (and (setq node (Info-extract-pointer "next" t)) 2410 (Info-goto-node (car nodes))
2407 (string-match "\\<Index\\>" node)) 2411 (while (and (setq node (Info-extract-pointer "next" t))
2408 (setq nodes (cons node nodes)) 2412 (string-match "\\<Index\\>" node))
2409 (Info-goto-node node)))) 2413 (setq nodes (cons node nodes))
2414 (Info-goto-node node))))
2415 (error nil))
2410 (if nodes 2416 (if nodes
2411 (setq nodes (nreverse nodes) 2417 (setq nodes (nreverse nodes)
2412 Info-index-nodes (cons (cons file nodes) Info-index-nodes))) 2418 Info-index-nodes (cons (cons file nodes) Info-index-nodes)))
2413 nodes) 2419 nodes)
2414 ;; Info file has no index nodes 2420 ;; If file has no index nodes, still add it to the cache
2415 (setq Info-index-nodes (cons (cons file nil) 2421 (setq Info-index-nodes (cons (cons file nil) Info-index-nodes)))
2416 Info-index-nodes)))
2417 (cdr (assoc file Info-index-nodes))) 2422 (cdr (assoc file Info-index-nodes)))
2418 2423
2419(defun Info-index-node (&optional node file) 2424(defun Info-index-node (&optional node file)
2420 "Return non-nil value if NODE is an index node. 2425 "Return non-nil value if NODE is an index node.
2421If NODE is nil, check the current Info node. 2426If NODE is nil, check the current Info node.
2422If FILE is nil, check the current Info file." 2427If FILE is nil, check the current Info file."
2423 (member (or node Info-current-node) (Info-index-nodes file))) 2428 (if (or (and node (not (equal node Info-current-node)))
2429 (assoc (or file Info-current-file) Info-index-nodes))
2430 (member (or node Info-current-node) (Info-index-nodes file))
2431 ;; Don't search all index nodes if request is only for the current node
2432 ;; and file is not in the cache of index nodes
2433 (or
2434 (save-match-data
2435 (string-match "\\<Index\\>" (or node Info-current-node "")))
2436 (save-excursion
2437 (goto-char (+ (or (save-excursion
2438 (search-backward "\n\^_" nil t))
2439 (point-min)) 2))
2440 (search-forward "\0\b[index\0\b]"
2441 (or (save-excursion
2442 (search-forward "\n\^_" nil t))
2443 (point-max)) t)))))
2424 2444
2425(defun Info-goto-index () 2445(defun Info-goto-index ()
2426 "Go to the first index node." 2446 "Go to the first index node."
@@ -2771,11 +2791,14 @@ if point is in a menu item description, follow that menu item."
2771 (define-key Info-mode-map "p" 'Info-prev) 2791 (define-key Info-mode-map "p" 'Info-prev)
2772 (define-key Info-mode-map "q" 'Info-exit) 2792 (define-key Info-mode-map "q" 'Info-exit)
2773 (define-key Info-mode-map "s" 'Info-search) 2793 (define-key Info-mode-map "s" 'Info-search)
2794 (define-key Info-mode-map "S" 'Info-search-case-sensitively)
2774 ;; For consistency with Rmail. 2795 ;; For consistency with Rmail.
2775 (define-key Info-mode-map "\M-s" 'Info-search) 2796 (define-key Info-mode-map "\M-s" 'Info-search)
2776 (define-key Info-mode-map "\M-n" 'clone-buffer) 2797 (define-key Info-mode-map "\M-n" 'clone-buffer)
2777 (define-key Info-mode-map "t" 'Info-top-node) 2798 (define-key Info-mode-map "t" 'Info-top-node)
2778 (define-key Info-mode-map "u" 'Info-up) 2799 (define-key Info-mode-map "u" 'Info-up)
2800 ;; For consistency with dired-copy-filename-as-kill.
2801 (define-key Info-mode-map "w" 'Info-copy-current-node-name)
2779 (define-key Info-mode-map "," 'Info-index-next) 2802 (define-key Info-mode-map "," 'Info-index-next)
2780 (define-key Info-mode-map "\177" 'Info-scroll-down) 2803 (define-key Info-mode-map "\177" 'Info-scroll-down)
2781 (define-key Info-mode-map [mouse-2] 'Info-mouse-follow-nearest-node) 2804 (define-key Info-mode-map [mouse-2] 'Info-mouse-follow-nearest-node)
@@ -2920,20 +2943,23 @@ if point is in a menu item description, follow that menu item."
2920 (error (ding)))) 2943 (error (ding))))
2921 2944
2922 2945
2923(defun Info-copy-current-node-name () 2946(defun Info-copy-current-node-name (&optional arg)
2924 "Put the name of the current info node into the kill ring. 2947 "Put the name of the current info node into the kill ring.
2925The name of the info file is prepended to the node name in parentheses." 2948The name of the info file is prepended to the node name in parentheses.
2926 (interactive) 2949With a zero prefix arg, put the name inside a function call to `info'."
2950 (interactive "P")
2927 (unless Info-current-node 2951 (unless Info-current-node
2928 (error "No current info node")) 2952 (error "No current info node"))
2929 (kill-new 2953 (let ((node (concat "(" (file-name-nondirectory
2930 (concat "(" 2954 (or (and (stringp Info-current-file)
2931 (file-name-nondirectory 2955 Info-current-file)
2932 (if (stringp Info-current-file) 2956 buffer-file-name
2933 Info-current-file 2957 ""))
2934 (or buffer-file-name ""))) 2958 ")" Info-current-node)))
2935 ")" 2959 (if (zerop (prefix-numeric-value arg))
2936 Info-current-node))) 2960 (setq node (concat "(info \"" node "\")")))
2961 (kill-new node)
2962 (message "%s" node)))
2937 2963
2938 2964
2939;; Info mode is suitable only for specially formatted data. 2965;; Info mode is suitable only for specially formatted data.
diff --git a/lisp/progmodes/gdb-ui.el b/lisp/progmodes/gdb-ui.el
index b376c380e98..6fce273f6ee 100644
--- a/lisp/progmodes/gdb-ui.el
+++ b/lisp/progmodes/gdb-ui.el
@@ -319,7 +319,11 @@ speedbar."
319(defun gdb-var-update () 319(defun gdb-var-update ()
320 (if (not (member 'gdb-var-update gdb-pending-triggers)) 320 (if (not (member 'gdb-var-update gdb-pending-triggers))
321 (progn 321 (progn
322 (gdb-enqueue-input (list "server interpreter mi \"-var-update *\"\n" 322 (gdb-enqueue-input
323 (list
324 (if (with-current-buffer gud-comint-buffer (eq gud-minor-mode 'gdba))
325 "server interpreter mi \"-var-update *\"\n"
326 "-var-update *\n")
323 'gdb-var-update-handler)) 327 'gdb-var-update-handler))
324 (push 'gdb-var-update gdb-pending-triggers)))) 328 (push 'gdb-var-update gdb-pending-triggers))))
325 329
@@ -331,8 +335,11 @@ speedbar."
331 (while (re-search-forward gdb-var-update-regexp nil t) 335 (while (re-search-forward gdb-var-update-regexp nil t)
332 (let ((varnum (match-string 1))) 336 (let ((varnum (match-string 1)))
333 (gdb-enqueue-input 337 (gdb-enqueue-input
334 (list (concat "server interpreter mi \"-var-evaluate-expression " 338 (list
335 varnum "\"\n") 339 (if (with-current-buffer gud-comint-buffer (eq gud-minor-mode 'gdba))
340 (concat "server interpreter mi \"-var-evaluate-expression "
341 varnum "\"\n")
342 (concat "-var-evaluate-expression " varnum "\n"))
336 `(lambda () (gdb-var-evaluate-expression-handler 343 `(lambda () (gdb-var-evaluate-expression-handler
337 ,varnum t))))))) 344 ,varnum t)))))))
338 (setq gdb-pending-triggers 345 (setq gdb-pending-triggers
@@ -349,8 +356,11 @@ speedbar."
349 (varnum (cadr var))) 356 (varnum (cadr var)))
350 (unless (string-match "\\." varnum) 357 (unless (string-match "\\." varnum)
351 (gdb-enqueue-input 358 (gdb-enqueue-input
352 (list (concat "server interpreter mi \"-var-delete " 359 (list
353 varnum "\"\n") 360 (if (with-current-buffer gud-comint-buffer
361 (eq gud-minor-mode 'gdba))
362 (concat "server interpreter mi \"-var-delete " varnum "\"\n")
363 (concat "-var-delete " varnum "\n"))
354 'ignore)) 364 'ignore))
355 (setq gdb-var-list (delq var gdb-var-list)) 365 (setq gdb-var-list (delq var gdb-var-list))
356 (dolist (varchild gdb-var-list) 366 (dolist (varchild gdb-var-list)
@@ -364,8 +374,11 @@ speedbar."
364 (varnum (cadr var)) (value)) 374 (varnum (cadr var)) (value))
365 (setq value (read-string "New value: ")) 375 (setq value (read-string "New value: "))
366 (gdb-enqueue-input 376 (gdb-enqueue-input
367 (list (concat "server interpreter mi \"-var-assign " 377 (list
368 varnum " " value "\"\n") 378 (if (with-current-buffer gud-comint-buffer
379 (eq gud-minor-mode 'gdba))
380 (concat "server interpreter mi \"-var-assign " varnum " " value "\"\n")
381 (concat "-var-assign " varnum " " value "\n"))
369 'ignore)))) 382 'ignore))))
370 383
371(defcustom gdb-show-changed-values t 384(defcustom gdb-show-changed-values t
@@ -380,7 +393,9 @@ TEXT is the text of the button we clicked on, a + or - item.
380TOKEN is data related to this node. 393TOKEN is data related to this node.
381INDENT is the current indentation depth." 394INDENT is the current indentation depth."
382 (cond ((string-match "+" text) ;expand this node 395 (cond ((string-match "+" text) ;expand this node
383 (gdb-var-list-children token)) 396 (if (with-current-buffer gud-comint-buffer (eq gud-minor-mode 'gdba))
397 (gdb-var-list-children token)
398 (gdbmi-var-list-children token)))
384 ((string-match "-" text) ;contract this node 399 ((string-match "-" text) ;contract this node
385 (dolist (var gdb-var-list) 400 (dolist (var gdb-var-list)
386 (if (string-match (concat token "\\.") (nth 1 var)) 401 (if (string-match (concat token "\\.") (nth 1 var))
diff --git a/lisp/textmodes/texinfmt.el b/lisp/textmodes/texinfmt.el
index 9a4d30bd904..cc382b70528 100644
--- a/lisp/textmodes/texinfmt.el
+++ b/lisp/textmodes/texinfmt.el
@@ -2899,7 +2899,7 @@ Default is to leave paragraph indentation as is."
2899 1)) 2899 1))
2900 (symbol-value indexvar))))) 2900 (symbol-value indexvar)))))
2901 2901
2902(defconst texinfo-indexvar-alist 2902(defvar texinfo-indexvar-alist
2903 '(("cp" . texinfo-cindex) 2903 '(("cp" . texinfo-cindex)
2904 ("fn" . texinfo-findex) 2904 ("fn" . texinfo-findex)
2905 ("vr" . texinfo-vindex) 2905 ("vr" . texinfo-vindex)
diff --git a/src/ChangeLog b/src/ChangeLog
index cbbf4ab09a7..f15b1e582d9 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,18 @@
12004-05-27 Kim F. Storm <storm@cua.dk>
2
3 * xdisp.c (back_to_previous_visible_line_start): Skip backwards
4 over display properties, e.g. images, that replace buffer text.
5
62004-05-25 Kim F. Storm <storm@cua.dk>
7
8 * alloc.c (marker_blocks_pending_free): New var.
9 (gc_sweep): Store free marker blocks on that list.
10 (Fgarbage_collect): Free them after undo-list cleanup.
11
12 * process.c (wait_reading_process_input): Check connect_wait_mask
13 before actually accepting connection in case it has already been
14 accepted due to recursion.
15
12004-05-23 K,Ba(Broly L,Bu(Brentey <lorentey@elte.hu> (tiny change) 162004-05-23 K,Ba(Broly L,Bu(Brentey <lorentey@elte.hu> (tiny change)
2 17
3 * coding.c (Fset_safe_terminal_coding_system_internal): Set 18 * coding.c (Fset_safe_terminal_coding_system_internal): Set
diff --git a/src/alloc.c b/src/alloc.c
index ae156d89f24..1d50f19e921 100644
--- a/src/alloc.c
+++ b/src/alloc.c
@@ -2866,6 +2866,10 @@ int marker_block_index;
2866 2866
2867union Lisp_Misc *marker_free_list; 2867union Lisp_Misc *marker_free_list;
2868 2868
2869/* Marker blocks which should be freed at end of GC. */
2870
2871struct marker_block *marker_blocks_pending_free;
2872
2869/* Total number of marker blocks now in use. */ 2873/* Total number of marker blocks now in use. */
2870 2874
2871int n_marker_blocks; 2875int n_marker_blocks;
@@ -2876,6 +2880,7 @@ init_marker ()
2876 marker_block = NULL; 2880 marker_block = NULL;
2877 marker_block_index = MARKER_BLOCK_SIZE; 2881 marker_block_index = MARKER_BLOCK_SIZE;
2878 marker_free_list = 0; 2882 marker_free_list = 0;
2883 marker_blocks_pending_free = 0;
2879 n_marker_blocks = 0; 2884 n_marker_blocks = 0;
2880} 2885}
2881 2886
@@ -4531,6 +4536,18 @@ returns nil, because real GC can't be done. */)
4531 } 4536 }
4532 } 4537 }
4533 4538
4539 /* Undo lists have been cleaned up, so we can free marker blocks now. */
4540
4541 {
4542 struct marker_block *mblk;
4543
4544 while ((mblk = marker_blocks_pending_free) != 0)
4545 {
4546 marker_blocks_pending_free = mblk->next;
4547 lisp_free (mblk);
4548 }
4549 }
4550
4534 /* Clear the mark bits that we set in certain root slots. */ 4551 /* Clear the mark bits that we set in certain root slots. */
4535 4552
4536 unmark_byte_stack (); 4553 unmark_byte_stack ();
@@ -5439,6 +5456,7 @@ gc_sweep ()
5439 register int num_free = 0, num_used = 0; 5456 register int num_free = 0, num_used = 0;
5440 5457
5441 marker_free_list = 0; 5458 marker_free_list = 0;
5459 marker_blocks_pending_free = 0;
5442 5460
5443 for (mblk = marker_block; mblk; mblk = *mprev) 5461 for (mblk = marker_block; mblk; mblk = *mprev)
5444 { 5462 {
@@ -5469,19 +5487,20 @@ gc_sweep ()
5469 /* If this block contains only free markers and we have already 5487 /* If this block contains only free markers and we have already
5470 seen more than two blocks worth of free markers then deallocate 5488 seen more than two blocks worth of free markers then deallocate
5471 this block. */ 5489 this block. */
5472#if 0
5473 /* There may still be pointers to these markers from a buffer's
5474 undo list, so don't free them. KFS 2004-05-21 /
5475 if (this_free == MARKER_BLOCK_SIZE && num_free > MARKER_BLOCK_SIZE) 5490 if (this_free == MARKER_BLOCK_SIZE && num_free > MARKER_BLOCK_SIZE)
5476 { 5491 {
5477 *mprev = mblk->next; 5492 *mprev = mblk->next;
5478 /* Unhook from the free list. */ 5493 /* Unhook from the free list. */
5479 marker_free_list = mblk->markers[0].u_free.chain; 5494 marker_free_list = mblk->markers[0].u_free.chain;
5480 lisp_free (mblk);
5481 n_marker_blocks--; 5495 n_marker_blocks--;
5496
5497 /* It is not safe to free the marker block at this stage,
5498 since there may still be pointers to these markers from
5499 a buffer's undo list. KFS 2004-05-25. */
5500 mblk->next = marker_blocks_pending_free;
5501 marker_blocks_pending_free = mblk;
5482 } 5502 }
5483 else 5503 else
5484#endif
5485 { 5504 {
5486 num_free += this_free; 5505 num_free += this_free;
5487 mprev = &mblk->next; 5506 mprev = &mblk->next;
diff --git a/src/process.c b/src/process.c
index d5e76b29b98..9d76b5bd1f9 100644
--- a/src/process.c
+++ b/src/process.c
@@ -4581,7 +4581,8 @@ wait_reading_process_input (time_limit, microsecs, read_kbd, do_display)
4581 } 4581 }
4582 } 4582 }
4583#ifdef NON_BLOCKING_CONNECT 4583#ifdef NON_BLOCKING_CONNECT
4584 if (check_connect && FD_ISSET (channel, &Connecting)) 4584 if (check_connect && FD_ISSET (channel, &Connecting)
4585 && FD_ISSET (channel, &connect_wait_mask))
4585 { 4586 {
4586 struct Lisp_Process *p; 4587 struct Lisp_Process *p;
4587 4588
diff --git a/src/xdisp.c b/src/xdisp.c
index cd62ce97f18..48f73c5c738 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -4559,6 +4559,14 @@ back_to_previous_visible_line_start (it)
4559 visible_p = 0; 4559 visible_p = 0;
4560 } 4560 }
4561 4561
4562 if (visible_p)
4563 {
4564 struct it it2 = *it;
4565
4566 if (handle_display_prop (&it2) == HANDLED_RETURN)
4567 visible_p = 0;
4568 }
4569
4562 /* Back one more newline if the current one is invisible. */ 4570 /* Back one more newline if the current one is invisible. */
4563 if (!visible_p) 4571 if (!visible_p)
4564 back_to_previous_line_start (it); 4572 back_to_previous_line_start (it);