diff options
| author | Karoly Lorentey | 2004-05-27 17:24:17 +0000 |
|---|---|---|
| committer | Karoly Lorentey | 2004-05-27 17:24:17 +0000 |
| commit | 4e1bb54039da0e3d5c84e231104703d62ace938d (patch) | |
| tree | f5bfbeec2c631db3e1a8de4aa3bfe37220580cad | |
| parent | f76e7db651b005bb697a188e4fe684fe25e29601 (diff) | |
| parent | 6c0afe12c98f63cc694e9fae5a05e5fd18afa636 (diff) | |
| download | emacs-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/ChangeLog | 43 | ||||
| -rw-r--r-- | lisp/emacs-lisp/lisp-mode.el | 8 | ||||
| -rw-r--r-- | lisp/files.el | 62 | ||||
| -rw-r--r-- | lisp/gs.el | 4 | ||||
| -rw-r--r-- | lisp/info.el | 148 | ||||
| -rw-r--r-- | lisp/progmodes/gdb-ui.el | 31 | ||||
| -rw-r--r-- | lisp/textmodes/texinfmt.el | 2 | ||||
| -rw-r--r-- | src/ChangeLog | 15 | ||||
| -rw-r--r-- | src/alloc.c | 29 | ||||
| -rw-r--r-- | src/process.c | 3 | ||||
| -rw-r--r-- | src/xdisp.c | 8 |
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 @@ | |||
| 1 | 2004-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 | |||
| 14 | 2004-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 | |||
| 20 | 2004-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 | |||
| 28 | 2004-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 | |||
| 1 | 2004-05-24 Nick Roberts <nickrob@gnu.org> | 37 | 2004-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 | ||
| 6 | 2004-05-24 Yoichi NAKAYAMA <yoichi@geiin.org> (tiny change) | 45 | 2004-05-24 Yoichi NAKAYAMA <yoichi@geiin.org> (tiny change) |
| 7 | 46 | ||
| @@ -2495,7 +2534,7 @@ | |||
| 2495 | 2004-03-28 Stefan Monnier <monnier@iro.umontreal.ca> | 2534 | 2004-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 | ||
| 2500 | 2004-03-27 Luc Teirlinck <teirllm@auburn.edu> | 2539 | 2004-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. |
| 2351 | If FILE is omitted, it defaults to the current Info file. | 2352 | If FILE is omitted, it defaults to the current Info file. |
| 2352 | First look in a list of cached index node names. Then scan Info file | 2353 | First look in a list of cached index node names. Then scan Info |
| 2353 | and its subfiles for nodes with index cookie. Then try index nodes | 2354 | file and its subfiles for nodes with the index cookie. Then try |
| 2354 | starting from the first node in the top level menu whose name | 2355 | to find index nodes starting from the first node in the top level |
| 2355 | contains the word \"Index\", plus any immediately following nodes | 2356 | menu whose name contains the word \"Index\", plus any immediately |
| 2356 | whose names also contain the word \"Index\"." | 2357 | following 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. |
| 2421 | If NODE is nil, check the current Info node. | 2426 | If NODE is nil, check the current Info node. |
| 2422 | If FILE is nil, check the current Info file." | 2427 | If 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. |
| 2925 | The name of the info file is prepended to the node name in parentheses." | 2948 | The name of the info file is prepended to the node name in parentheses. |
| 2926 | (interactive) | 2949 | With 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. | |||
| 380 | TOKEN is data related to this node. | 393 | TOKEN is data related to this node. |
| 381 | INDENT is the current indentation depth." | 394 | INDENT 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 @@ | |||
| 1 | 2004-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 | |||
| 6 | 2004-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 | |||
| 1 | 2004-05-23 K,Ba(Broly L,Bu(Brentey <lorentey@elte.hu> (tiny change) | 16 | 2004-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 | ||
| 2867 | union Lisp_Misc *marker_free_list; | 2867 | union Lisp_Misc *marker_free_list; |
| 2868 | 2868 | ||
| 2869 | /* Marker blocks which should be freed at end of GC. */ | ||
| 2870 | |||
| 2871 | struct 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 | ||
| 2871 | int n_marker_blocks; | 2875 | int 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); |