diff options
| author | Richard M. Stallman | 1993-08-13 00:59:51 +0000 |
|---|---|---|
| committer | Richard M. Stallman | 1993-08-13 00:59:51 +0000 |
| commit | 11eb4275a3650d5083b3e7e705e5e614845270ab (patch) | |
| tree | b53be4faad5b51cd6f5f00692c1ea3cfa58d4408 | |
| parent | d3fc9c800db36784f1660fa48c8e684a45022527 (diff) | |
| download | emacs-11eb4275a3650d5083b3e7e705e5e614845270ab.tar.gz emacs-11eb4275a3650d5083b3e7e705e5e614845270ab.zip | |
New version from Fogel.
| -rw-r--r-- | lisp/bookmark.el | 310 |
1 files changed, 140 insertions, 170 deletions
diff --git a/lisp/bookmark.el b/lisp/bookmark.el index dda8147a389..e68835480d6 100644 --- a/lisp/bookmark.el +++ b/lisp/bookmark.el | |||
| @@ -5,7 +5,7 @@ | |||
| 5 | ;; Author: Karl Fogel <kfogel@cs.oberlin.edu> | 5 | ;; Author: Karl Fogel <kfogel@cs.oberlin.edu> |
| 6 | ;; Maintainer: FSF | 6 | ;; Maintainer: FSF |
| 7 | ;; Created: July, 1993 | 7 | ;; Created: July, 1993 |
| 8 | ;; Version: 1.7.2 | 8 | ;; Version: 1.7.3 (interim) |
| 9 | ;; Keywords: bookmarks, placeholders | 9 | ;; Keywords: bookmarks, placeholders |
| 10 | 10 | ||
| 11 | ;; This file is part of GNU Emacs. | 11 | ;; This file is part of GNU Emacs. |
| @@ -62,6 +62,12 @@ | |||
| 62 | ;; string-in-front in case the file has changed since the bookmark was | 62 | ;; string-in-front in case the file has changed since the bookmark was |
| 63 | ;; set. It will attempt to place the user before the changes, if | 63 | ;; set. It will attempt to place the user before the changes, if |
| 64 | ;; there were any. | 64 | ;; there were any. |
| 65 | ;; | ||
| 66 | ;; It is not advisable to sort the bookmark list when it is presented | ||
| 67 | ;; to the user, because it is already sorted in what is probably the | ||
| 68 | ;; most useful way: order of creation, with most recently created | ||
| 69 | ;; bookmarks coming first and older ones toward the end (renaming does | ||
| 70 | ;; not count as creating) -- which is what we want, most of the time. | ||
| 65 | 71 | ||
| 66 | ;;; Code: | 72 | ;;; Code: |
| 67 | 73 | ||
| @@ -79,7 +85,7 @@ | |||
| 79 | (defvar bookmark-map nil "This is a keymap containing bookmark | 85 | (defvar bookmark-map nil "This is a keymap containing bookmark |
| 80 | functions. It is not bound to any key by default: to bind it so | 86 | functions. It is not bound to any key by default: to bind it so |
| 81 | that you have a bookmark prefix, just use global-set-key and bind a | 87 | that you have a bookmark prefix, just use global-set-key and bind a |
| 82 | key of your choice to \'bookmark-map. All interactive bookmark | 88 | key of your choice to \`bookmark-map\'. All interactive bookmark |
| 83 | functions have a binding in this keymap.") | 89 | functions have a binding in this keymap.") |
| 84 | 90 | ||
| 85 | (define-prefix-command 'bookmark-map) | 91 | (define-prefix-command 'bookmark-map) |
| @@ -119,7 +125,7 @@ file easier.") | |||
| 119 | (make-variable-buffer-local 'bookmark-current-bookmark) | 125 | (make-variable-buffer-local 'bookmark-current-bookmark) |
| 120 | 126 | ||
| 121 | (defvar bookmark-save-flag t | 127 | (defvar bookmark-save-flag t |
| 122 | "*Nil means never save bookmarks, except when bookmark-save is | 128 | "*Nil means never save bookmarks, except when \`bookmark-save\' is |
| 123 | explicitly called \(\\[bookmark-save]\). | 129 | explicitly called \(\\[bookmark-save]\). |
| 124 | 130 | ||
| 125 | t means save bookmarks when Emacs is killed. | 131 | t means save bookmarks when Emacs is killed. |
| @@ -135,7 +141,7 @@ bookmark is to set this variable to 1 \(or 0, which produces the same | |||
| 135 | behavior.\) | 141 | behavior.\) |
| 136 | 142 | ||
| 137 | To specify the file in which to save them, modify the variable | 143 | To specify the file in which to save them, modify the variable |
| 138 | bookmark-file, which is \"~/.emacs-bkmrks\" by default.") | 144 | bookmark-file, which is \`~/.emacs-bkmrks\' by default.") |
| 139 | 145 | ||
| 140 | (defvar bookmark-alist-modification-count 0 | 146 | (defvar bookmark-alist-modification-count 0 |
| 141 | "Number of times the bookmark list has been modified since last | 147 | "Number of times the bookmark list has been modified since last |
| @@ -301,59 +307,55 @@ the list of bookmarks.\)" | |||
| 301 | 307 | ||
| 302 | (defun bookmark-jump (str) | 308 | (defun bookmark-jump (str) |
| 303 | "Go to the location saved in the bookmark BOOKMARK. You may have a | 309 | "Go to the location saved in the bookmark BOOKMARK. You may have a |
| 304 | problem using this function if the value of variable bookmark-alist | 310 | problem using this function if the value of variable \`bookmark-alist\' |
| 305 | is nil. If that happens, you need to load in some bookmarks. See | 311 | is nil. If that happens, you need to load in some bookmarks. See |
| 306 | help on function bookmark-load for more about this." | 312 | help on function \`bookmark-load\' for more about this." |
| 307 | (interactive (progn | 313 | (interactive (let ((completion-ignore-case |
| 308 | (bookmark-try-default-file) | ||
| 309 | (let ((completion-ignore-case | ||
| 310 | bookmark-completion-ignore-case)) | 314 | bookmark-completion-ignore-case)) |
| 311 | (list (completing-read | 315 | (list (completing-read |
| 312 | "Jump to bookmark: " | 316 | "Jump to bookmark: " |
| 313 | bookmark-alist | 317 | bookmark-alist |
| 314 | nil | 318 | nil |
| 315 | 0))))) | 319 | 0)))) |
| 316 | (let ((whereto-list (car (cdr (assoc str bookmark-alist))))) | 320 | (let ((whereto-list (car (cdr (assoc str bookmark-alist))))) |
| 317 | (let ((file (car whereto-list)) | 321 | (let ((file (car whereto-list)) |
| 318 | (forward-str (car (cdr whereto-list))) | 322 | (forward-str (car (cdr whereto-list))) |
| 319 | (behind-str (car (cdr (cdr whereto-list)))) | 323 | (behind-str (car (cdr (cdr whereto-list)))) |
| 320 | (place (car (cdr (cdr (cdr whereto-list)))))) | 324 | (place (car (cdr (cdr (cdr whereto-list)))))) |
| 321 | (if (file-exists-p (expand-file-name file)) | 325 | (if (file-exists-p (expand-file-name file)) |
| 322 | (progn | 326 | (progn |
| 323 | (find-file (expand-file-name file)) | 327 | (find-file (expand-file-name file)) |
| 324 | (goto-char place) | 328 | (goto-char place) |
| 325 | ;; Go searching forward first. Then, if forward-str exists and | 329 | ;; Go searching forward first. Then, if forward-str exists and |
| 326 | ;; was found in the file, we can search backward for behind-str. | 330 | ;; was found in the file, we can search backward for behind-str. |
| 327 | ;; Rationale is that if text was inserted between the two in the | 331 | ;; Rationale is that if text was inserted between the two in the |
| 328 | ;; file, it's better to be put before it so you can read it, | 332 | ;; file, it's better to be put before it so you can read it, |
| 329 | ;; rather than after and remain perhaps unaware of the changes. | 333 | ;; rather than after and remain perhaps unaware of the changes. |
| 330 | (if forward-str | 334 | (if forward-str |
| 331 | (if (search-forward forward-str (point-max) t) | 335 | (if (search-forward forward-str (point-max) t) |
| 332 | (backward-char bookmark-search-size))) | 336 | (backward-char bookmark-search-size))) |
| 333 | (if behind-str | 337 | (if behind-str |
| 334 | (if (search-backward behind-str (point-min) t) | 338 | (if (search-backward behind-str (point-min) t) |
| 335 | (forward-char bookmark-search-size))) | 339 | (forward-char bookmark-search-size))) |
| 336 | ;; added by db | 340 | ;; added by db |
| 337 | (setq bookmark-current-bookmark str)) | 341 | (setq bookmark-current-bookmark str)) |
| 338 | (error | 342 | (error |
| 339 | (concat "File " | 343 | (concat "File " |
| 340 | file | 344 | file |
| 341 | " does not exist. Suggest deleting bookmark \"" | 345 | " does not exist. Suggest deleting bookmark \"" |
| 342 | str | 346 | str |
| 343 | "\"")))))) | 347 | "\"")))))) |
| 344 | 348 | ||
| 345 | (defun bookmark-locate (str) | 349 | (defun bookmark-locate (str) |
| 346 | "Insert the name of the file associated with BOOKMARK \(as opposed | 350 | "Insert the name of the file associated with BOOKMARK \(as opposed |
| 347 | to the contents of that file\)." | 351 | to the contents of that file\)." |
| 348 | (interactive (progn | 352 | (interactive (let ((completion-ignore-case |
| 349 | (bookmark-try-default-file) | 353 | bookmark-completion-ignore-case)) |
| 350 | (let ((completion-ignore-case | 354 | (list (completing-read |
| 351 | bookmark-completion-ignore-case)) | 355 | "Insert bookmark location: " |
| 352 | (list (completing-read | 356 | bookmark-alist |
| 353 | "Insert bookmark location: " | 357 | nil |
| 354 | bookmark-alist | 358 | 0)))) |
| 355 | nil | ||
| 356 | 0))))) | ||
| 357 | (insert (car (car (cdr (assoc str bookmark-alist)))))) | 359 | (insert (car (car (cdr (assoc str bookmark-alist)))))) |
| 358 | 360 | ||
| 359 | (defun bookmark-rename (old) | 361 | (defun bookmark-rename (old) |
| @@ -361,14 +363,12 @@ to the contents of that file\)." | |||
| 361 | the new name, consecutive C-w\'s will insert consectutive words from | 363 | the new name, consecutive C-w\'s will insert consectutive words from |
| 362 | the text of the buffer into the new bookmark name, and C-v will insert | 364 | the text of the buffer into the new bookmark name, and C-v will insert |
| 363 | the name of the file." | 365 | the name of the file." |
| 364 | (interactive (progn | 366 | (interactive (let ((completion-ignore-case |
| 365 | (bookmark-try-default-file) | 367 | bookmark-completion-ignore-case)) |
| 366 | (let ((completion-ignore-case | 368 | (list (completing-read "Old bookmark name: " |
| 367 | bookmark-completion-ignore-case)) | 369 | bookmark-alist |
| 368 | (list (completing-read "Old bookmark name: " | 370 | nil |
| 369 | bookmark-alist | 371 | 0)))) |
| 370 | nil | ||
| 371 | 0))))) | ||
| 372 | (progn | 372 | (progn |
| 373 | (setq bookmark-current-point (point)) | 373 | (setq bookmark-current-point (point)) |
| 374 | (setq bookmark-yank-point (point)) | 374 | (setq bookmark-yank-point (point)) |
| @@ -395,17 +395,15 @@ the name of the file." | |||
| 395 | (defun bookmark-insert (str) | 395 | (defun bookmark-insert (str) |
| 396 | "Insert the text of the file pointed to by bookmark BOOKMARK. You | 396 | "Insert the text of the file pointed to by bookmark BOOKMARK. You |
| 397 | may have a problem using this function if the value of variable | 397 | may have a problem using this function if the value of variable |
| 398 | bookmark-alist is nil. If that happens, you need to load in some | 398 | \`bookmark-alist is nil\'. If that happens, you need to load in some |
| 399 | bookmarks. See help on function bookmark-load for more about this." | 399 | bookmarks. See help on function \`bookmark-load\' for more about this." |
| 400 | (interactive (progn | 400 | (interactive (let ((completion-ignore-case |
| 401 | (bookmark-try-default-file) | 401 | bookmark-completion-ignore-case)) |
| 402 | (let ((completion-ignore-case | 402 | (list (completing-read |
| 403 | bookmark-completion-ignore-case)) | 403 | "Insert bookmark contents: " |
| 404 | (list (completing-read | 404 | bookmark-alist |
| 405 | "Insert bookmark contents: " | 405 | nil |
| 406 | bookmark-alist | 406 | 0)))) |
| 407 | nil | ||
| 408 | 0))))) | ||
| 409 | (let ((whereto-list (car (cdr (assoc str bookmark-alist))))) | 407 | (let ((whereto-list (car (cdr (assoc str bookmark-alist))))) |
| 410 | (let ((file (car whereto-list))) | 408 | (let ((file (car whereto-list))) |
| 411 | (if (file-readable-p (expand-file-name file)) | 409 | (if (file-readable-p (expand-file-name file)) |
| @@ -429,49 +427,29 @@ bookmarks. See help on function bookmark-load for more about this." | |||
| 429 | (defun bookmark-delete (str) | 427 | (defun bookmark-delete (str) |
| 430 | "Delete the bookmark named NAME from the bookmark list. Removes | 428 | "Delete the bookmark named NAME from the bookmark list. Removes |
| 431 | only the first instance of a bookmark with that name. If there is | 429 | only the first instance of a bookmark with that name. If there is |
| 432 | another bookmark with the same name, it will become \"current\" as | 430 | another bookmark with the same name, it will take effect as soon as |
| 433 | soon as the old one is removed from the bookmark list. Defaults to | 431 | the old one is removed from the bookmark list. Defaults to the |
| 434 | the \"current\" bookmark \(that is, the one most recently set or | 432 | \"current\" bookmark \(that is, the one most recently used in this |
| 435 | jumped to in this file\). | 433 | file, if any\)." |
| 436 | |||
| 437 | With a prefix argument, deletes all bookmarks \(will prompt for | ||
| 438 | confirmation before such a drastic step, however.\) If you then save | ||
| 439 | the empty bookmark list, they will truly be deleted; otherwise you | ||
| 440 | will revert to the bookmarks saved in the default bookmark file | ||
| 441 | automatically the next time you jump to a bookmark, insert one, rename | ||
| 442 | one, or kill Emacs." | ||
| 443 | (interactive (let ((completion-ignore-case | 434 | (interactive (let ((completion-ignore-case |
| 444 | bookmark-completion-ignore-case)) | 435 | bookmark-completion-ignore-case)) |
| 445 | (list | 436 | (list |
| 446 | (if current-prefix-arg | 437 | (completing-read |
| 447 | nil | 438 | "Delete bookmark: " |
| 448 | (completing-read | 439 | bookmark-alist |
| 449 | "Delete bookmark: " | 440 | nil |
| 450 | bookmark-alist | 441 | 0 |
| 451 | nil | 442 | bookmark-current-bookmark)))) |
| 452 | 0 | 443 | (let ((will-go (assoc str bookmark-alist))) |
| 453 | bookmark-current-bookmark))))) | 444 | (setq bookmark-alist (delq will-go bookmark-alist)) |
| 454 | (if (null str) | 445 | ;; Added by db, nil bookmark-current-bookmark if the last |
| 455 | (if (y-or-n-p "Delete all bookmarks? ") | 446 | ;; occurence has been deleted |
| 456 | (progn | ||
| 457 | (setq bookmark-alist nil) | ||
| 458 | (message | ||
| 459 | (if (file-readable-p (expand-file-name bookmark-file)) | ||
| 460 | (format | ||
| 461 | "Will revert to bookmarks in %s, unless you save now." | ||
| 462 | bookmark-file) | ||
| 463 | "All bookmarks deleted."))) | ||
| 464 | (message "No bookmarks deleted.")) | ||
| 465 | (let ((will-go (assoc str bookmark-alist))) | ||
| 466 | (setq bookmark-alist (delq will-go bookmark-alist))) | ||
| 467 | ;; Added by db, nil bookmark-current-bookmark if the last | ||
| 468 | ;; occurence has been deleted | ||
| 469 | (or (assoc bookmark-current-bookmark bookmark-alist) | 447 | (or (assoc bookmark-current-bookmark bookmark-alist) |
| 470 | (setq bookmark-current-bookmark nil))) | 448 | (setq bookmark-current-bookmark nil))) |
| 471 | (setq bookmark-alist-modification-count | 449 | (setq bookmark-alist-modification-count |
| 472 | (1+ bookmark-alist-modification-count)) | 450 | (1+ bookmark-alist-modification-count)) |
| 473 | (if (bookmark-time-to-save-p) | 451 | (if (bookmark-time-to-save-p) |
| 474 | (bookmark-save))) | 452 | (bookmark-save))) |
| 475 | 453 | ||
| 476 | (defun bookmark-time-to-save-p (&optional last-time) | 454 | (defun bookmark-time-to-save-p (&optional last-time) |
| 477 | ;; By Gregory M. Saunders <saunders@cis.ohio-state.edu> | 455 | ;; By Gregory M. Saunders <saunders@cis.ohio-state.edu> |
| @@ -492,10 +470,9 @@ one, or kill Emacs." | |||
| 492 | (interactive) | 470 | (interactive) |
| 493 | (bookmark-save t)) | 471 | (bookmark-save t)) |
| 494 | 472 | ||
| 495 | (defun bookmark-save (&optional parg file) | 473 | (defun bookmark-save (&optional parg file) |
| 496 | "Saves currently defined bookmarks in the file defined by | 474 | "Saves currently defined bookmarks in the file defined by the |
| 497 | the variable bookmark-file. With a prefix arg, save it in file | 475 | variable \`bookmark-file\'. With a prefix arg, save it in file FILE. |
| 498 | FILE. | ||
| 499 | 476 | ||
| 500 | If you are calling this from Lisp, the two arguments are PREFIX-ARG | 477 | If you are calling this from Lisp, the two arguments are PREFIX-ARG |
| 501 | and FILE, and if you just want it to write to the default file, then | 478 | and FILE, and if you just want it to write to the default file, then |
| @@ -503,9 +480,10 @@ pass no arguments. Or pass in nil and FILE, and it will save in FILE | |||
| 503 | instead. If you pass in one argument, and it is non-nil, then the | 480 | instead. If you pass in one argument, and it is non-nil, then the |
| 504 | user will be interactively queried for a file to save in. | 481 | user will be interactively queried for a file to save in. |
| 505 | 482 | ||
| 506 | When you want to load in the bookmarks from a file, use bookmark-load, | 483 | When you want to load in the bookmarks from a file, use |
| 507 | \\[bookmark-load]. That function will prompt you for a file, | 484 | \\`bookmark-load\\', \\[bookmark-load]. That function will prompt you |
| 508 | defaulting to the file defined by variable bookmark-file." | 485 | for a file, defaulting to the file defined by variable |
| 486 | \`bookmark-file\'." | ||
| 509 | (interactive "P") | 487 | (interactive "P") |
| 510 | (cond | 488 | (cond |
| 511 | ((and (null parg) (null file)) | 489 | ((and (null parg) (null file)) |
| @@ -544,10 +522,9 @@ means don't display any messages while loading. | |||
| 544 | If you load a file that doesn't contain a proper bookmark alist, you | 522 | If you load a file that doesn't contain a proper bookmark alist, you |
| 545 | will corrupt Emacs\' bookmark list. Generally, you should only load | 523 | will corrupt Emacs\' bookmark list. Generally, you should only load |
| 546 | in files that were created with the bookmark functions in the first | 524 | in files that were created with the bookmark functions in the first |
| 547 | place. If the bookmark alist does become corrupted, just delete all | 525 | place. Your own personal bookmark file, \`~/.emacs-bkmrks\', is |
| 548 | bookmarks and your master bookmark-file will be automatically loaded | 526 | maintained automatically by Emacs; you should never need to load it |
| 549 | next time you try to go to a bookmark \(assuming that your bookmark | 527 | explicitly." |
| 550 | file itself is not corrupt, this will solve the problem\)." | ||
| 551 | (interactive | 528 | (interactive |
| 552 | (list (read-file-name | 529 | (list (read-file-name |
| 553 | (format "Load bookmarks from: (%s) " | 530 | (format "Load bookmarks from: (%s) " |
| @@ -579,16 +556,16 @@ file itself is not corrupt, this will solve the problem\)." | |||
| 579 | (message (format "Loading bookmarks from %s... done" file)))) | 556 | (message (format "Loading bookmarks from %s... done" file)))) |
| 580 | (error (format "Cannot read bookmark file %s." file)))) | 557 | (error (format "Cannot read bookmark file %s." file)))) |
| 581 | 558 | ||
| 582 | ;;;; bookmark menu stuff ;;;; | 559 | ;;;; bookmark menu bar stuff ;;;; |
| 560 | |||
| 561 | (defvar bookmark-menu-bar-length 70 "*Maximum length of a bookmark name | ||
| 562 | displayed on a menu.") | ||
| 583 | 563 | ||
| 584 | (defvar bookmark-enable-menus t | 564 | (defvar bookmark-enable-menu-bar t |
| 585 | "*Non-nil means put a bookmark menu on the menu bar \(assuming that | 565 | "*Non-nil means put a bookmark menu on the menu bar \(assuming that |
| 586 | you are running Emacs under a windowing system, such as X\).") | 566 | you are running Emacs under a windowing system, such as X\).") |
| 587 | 567 | ||
| 588 | (defvar bookmark-menu-length 70 "*Maximum length of a bookmark name | 568 | (defun bookmark-make-menu-bar-alist () |
| 589 | displayed on a menu.") | ||
| 590 | |||
| 591 | (defun bookmark-make-menu-alist () | ||
| 592 | (if (not bookmark-alist) | 569 | (if (not bookmark-alist) |
| 593 | (if (file-readable-p bookmark-file) | 570 | (if (file-readable-p bookmark-file) |
| 594 | (bookmark-load bookmark-file))) | 571 | (bookmark-load bookmark-file))) |
| @@ -596,17 +573,19 @@ displayed on a menu.") | |||
| 596 | (mapcar (lambda (cell) | 573 | (mapcar (lambda (cell) |
| 597 | (let ((str (car cell))) | 574 | (let ((str (car cell))) |
| 598 | (cons | 575 | (cons |
| 599 | (if (> (length str) bookmark-menu-length) | 576 | (if (> (length str) bookmark-menu-bar-length) |
| 600 | (substring str 0 bookmark-menu-length) | 577 | (substring str 0 bookmark-menu-bar-length) |
| 601 | str) | 578 | str) |
| 602 | str))) | 579 | str))) |
| 603 | bookmark-alist) | 580 | bookmark-alist) |
| 604 | (error "No bookmarks currently set."))) | 581 | (error "No bookmarks currently set."))) |
| 605 | 582 | ||
| 606 | (defun bookmark-make-menu-with-function (func-sym menu-label menu-str event) | 583 | (defun bookmark-make-menu-bar-with-function (func-sym |
| 584 | menu-label | ||
| 585 | menu-str event) | ||
| 607 | ;; help function for making menus that need to apply a bookmark | 586 | ;; help function for making menus that need to apply a bookmark |
| 608 | ;; function to a string. | 587 | ;; function to a string. |
| 609 | (let* ((menu (bookmark-make-menu-alist)) | 588 | (let* ((menu (bookmark-make-menu-bar-alist)) |
| 610 | (str (x-popup-menu event | 589 | (str (x-popup-menu event |
| 611 | (list menu-label | 590 | (list menu-label |
| 612 | (cons menu-str | 591 | (cons menu-str |
| @@ -614,65 +593,60 @@ displayed on a menu.") | |||
| 614 | (if str | 593 | (if str |
| 615 | (apply func-sym (list str))))) | 594 | (apply func-sym (list str))))) |
| 616 | 595 | ||
| 617 | (defun bookmark-menu-insert (event) | 596 | (defun bookmark-menu-bar-insert (event) |
| 618 | "Insert the text of the file pointed to by bookmark BOOKMARK. You | 597 | "Insert the text of the file pointed to by bookmark BOOKMARK. You |
| 619 | may have a problem using this function if the value of variable | 598 | may have a problem using this function if the value of variable |
| 620 | bookmark-alist is nil. If that happens, you need to load in some | 599 | \`bookmark-alist\' is nil. If that happens, you need to load in some |
| 621 | bookmarks. See help on function bookmark-load for more about this." | 600 | bookmarks. See help on function \`bookmark-load\' for more about this." |
| 622 | (interactive "e") | 601 | (interactive "e") |
| 623 | (bookmark-make-menu-with-function 'bookmark-insert | 602 | (bookmark-make-menu-bar-with-function 'bookmark-insert |
| 624 | "Bookmark Insert Menu" | 603 | "Bookmark Insert Menu" |
| 625 | "--- Insert Contents ---" | 604 | "--- Insert Contents ---" |
| 626 | event)) | 605 | event)) |
| 627 | 606 | ||
| 628 | (defun bookmark-menu-jump (event) | 607 | (defun bookmark-menu-bar-jump (event) |
| 629 | "Go to the location saved in the bookmark BOOKMARK. You may have a | 608 | "Go to the location saved in the bookmark BOOKMARK. You may have a |
| 630 | problem using this function if the value of variable bookmark-alist | 609 | problem using this function if the value of variable \`bookmark-alist\' |
| 631 | is nil. If that happens, you need to load in some bookmarks. See | 610 | is nil. If that happens, you need to load in some bookmarks. See |
| 632 | help on function bookmark-load for more about this." | 611 | help on function \`bookmark-load\' for more about this." |
| 633 | (interactive "e") | 612 | (interactive "e") |
| 634 | (bookmark-make-menu-with-function 'bookmark-jump | 613 | (bookmark-make-menu-bar-with-function 'bookmark-jump |
| 635 | "Bookmark Jump Menu" | 614 | "Bookmark Jump Menu" |
| 636 | "--- Jump to Bookmark ---" | 615 | "--- Jump to Bookmark ---" |
| 637 | event)) | 616 | event)) |
| 638 | 617 | ||
| 639 | (defun bookmark-menu-locate (event) | 618 | (defun bookmark-menu-bar-locate (event) |
| 640 | "Insert the name of the file associated with BOOKMARK \(as opposed | 619 | "Insert the name of the file associated with BOOKMARK \(as opposed |
| 641 | to the contents of that file\)." | 620 | to the contents of that file\)." |
| 642 | (interactive "e") | 621 | (interactive "e") |
| 643 | (bookmark-make-menu-with-function 'bookmark-locate | 622 | (bookmark-make-menu-bar-with-function 'bookmark-locate |
| 644 | "Bookmark Locate Menu" | 623 | "Bookmark Locate Menu" |
| 645 | "--- Insert Location ---" | 624 | "--- Insert Location ---" |
| 646 | event)) | 625 | event)) |
| 647 | 626 | ||
| 648 | (defun bookmark-menu-rename (event) | 627 | (defun bookmark-menu-bar-rename (event) |
| 649 | "Change the name of BOOKMARK to NEWNAME. While you are entering | 628 | "Change the name of BOOKMARK to NEWNAME. While you are entering |
| 650 | the new name, consecutive C-w\'s will insert consectutive words from | 629 | the new name, consecutive C-w\'s will insert consectutive words from |
| 651 | the text of the buffer into the new bookmark name, and C-v will insert | 630 | the text of the buffer into the new bookmark name, and C-v will insert |
| 652 | the name of the file." | 631 | the name of the file." |
| 653 | (interactive "e") | 632 | (interactive "e") |
| 654 | (bookmark-make-menu-with-function 'bookmark-rename | 633 | (bookmark-make-menu-bar-with-function 'bookmark-rename |
| 655 | "Bookmark Rename Menu" | 634 | "Bookmark Rename Menu" |
| 656 | "--- Rename Bookmark ---" | 635 | "--- Rename Bookmark ---" |
| 657 | event)) | 636 | event)) |
| 658 | 637 | ||
| 659 | (defun bookmark-menu-delete (event) | 638 | (defun bookmark-menu-bar-delete (event) |
| 660 | "Delete the bookmark named NAME from the bookmark list. Removes only | 639 | "Delete the bookmark named NAME from the bookmark list. Removes |
| 661 | the first instance of a bookmark with that name. If there is another | 640 | only the first instance of a bookmark with that name. If there is |
| 662 | bookmark with the same name, it will become \"current\" as soon as the | 641 | another bookmark with the same name, it will take effect as soon as |
| 663 | old one is removed from the bookmark list." | 642 | the old one is removed from the bookmark list." |
| 664 | (interactive "e") | 643 | (interactive "e") |
| 665 | (bookmark-make-menu-with-function 'bookmark-delete | 644 | (bookmark-make-menu-bar-with-function 'bookmark-delete |
| 666 | "Bookmark Delete Menu" | 645 | "Bookmark Delete Menu" |
| 667 | "--- Delete Bookmark ---" | 646 | "--- Delete Bookmark ---" |
| 668 | event)) | 647 | event)) |
| 669 | 648 | ||
| 670 | (defun bookmark-menu-delete-all () | 649 | (if (and bookmark-enable-menu-bar window-system) |
| 671 | (interactive) | ||
| 672 | (let ((current-prefix-arg t)) | ||
| 673 | (bookmark-delete nil))) | ||
| 674 | |||
| 675 | (if (and bookmark-enable-menus window-system) | ||
| 676 | (progn | 650 | (progn |
| 677 | (defvar menu-bar-bookmark-map | 651 | (defvar menu-bar-bookmark-map |
| 678 | (make-sparse-keymap "Bookmark functions")) | 652 | (make-sparse-keymap "Bookmark functions")) |
| @@ -694,83 +668,79 @@ old one is removed from the bookmark list." | |||
| 694 | '("Write \(to another file\)" . bookmark-write)) | 668 | '("Write \(to another file\)" . bookmark-write)) |
| 695 | 669 | ||
| 696 | (define-key menu-bar-bookmark-map [save] | 670 | (define-key menu-bar-bookmark-map [save] |
| 697 | '("Save \(in default file\)" . bookmark-save)) | 671 | '("Save \(in default file\)" . bookmark-save)) |
| 698 | 672 | ||
| 699 | (define-key menu-bar-bookmark-map [delete-all] | ||
| 700 | '(" Delete all bookmarks" . bookmark-menu-delete-all)) | ||
| 701 | |||
| 702 | (define-key menu-bar-bookmark-map [delete] | 673 | (define-key menu-bar-bookmark-map [delete] |
| 703 | '(" Delete a bookmark" . bookmark-menu-delete)) | 674 | '(" Delete a bookmark" . bookmark-menu-bar-delete)) |
| 704 | 675 | ||
| 705 | (define-key menu-bar-bookmark-map [rename] | 676 | (define-key menu-bar-bookmark-map [rename] |
| 706 | '(" Rename bookmark" . bookmark-menu-rename)) | 677 | '(" Rename bookmark" . bookmark-menu-bar-rename)) |
| 707 | 678 | ||
| 708 | (define-key menu-bar-bookmark-map [locate] | 679 | (define-key menu-bar-bookmark-map [locate] |
| 709 | '(" Insert location" . bookmark-menu-locate)) | 680 | '(" Insert location" . bookmark-menu-bar-locate)) |
| 710 | 681 | ||
| 711 | (define-key menu-bar-bookmark-map [insert] | 682 | (define-key menu-bar-bookmark-map [insert] |
| 712 | '(" Insert contents" . bookmark-menu-insert)) | 683 | '(" Insert contents" . bookmark-menu-bar-insert)) |
| 713 | 684 | ||
| 714 | (define-key menu-bar-bookmark-map [set] | 685 | (define-key menu-bar-bookmark-map [set] |
| 715 | '(" Set bookmark" . bookmark-set)) | 686 | '(" Set bookmark" . bookmark-set)) |
| 716 | 687 | ||
| 717 | (define-key menu-bar-bookmark-map [jump] | 688 | (define-key menu-bar-bookmark-map [jump] |
| 718 | '(" Go to bookmark" . bookmark-menu-jump)))) | 689 | '(" Go to bookmark" . bookmark-menu-bar-jump)))) |
| 719 | 690 | ||
| 720 | ;; not using properties because they make the menu sluggish in coming | 691 | ;; not using properties because they make the menu sluggish in coming |
| 721 | ;; up -- too many tests to make. Instead, choosing a useless menu | 692 | ;; up -- too many tests to make. Instead, choosing a useless menu |
| 722 | ;; item just gets you an error now (see | 693 | ;; item just gets you an error now (see |
| 723 | ;; bookmark-make-menu-with-function) | 694 | ;; bookmark-make-menu-bar-with-function) |
| 724 | ;; | 695 | ;; |
| 725 | ;; (put 'bookmark-menu-jump 'menu-enable | 696 | ;; (put 'bookmark-menu-bar-jump 'menu-enable |
| 726 | ;; '(or bookmark-alist | 697 | ;; '(or bookmark-alist |
| 727 | ;; (and (file-readable-p bookmark-file) | 698 | ;; (and (file-readable-p bookmark-file) |
| 728 | ;; (progn (bookmark-load bookmark-file) | 699 | ;; (progn (bookmark-load bookmark-file) |
| 729 | ;; bookmark-alist)))) | 700 | ;; bookmark-alist)))) |
| 730 | ;; | 701 | ;; |
| 731 | ;; (put 'bookmark-menu-insert 'menu-enable | 702 | ;; (put 'bookmark-menu-bar-insert 'menu-enable |
| 732 | ;; '(or bookmark-alist | 703 | ;; '(or bookmark-alist |
| 733 | ;; (and (file-readable-p bookmark-file) | 704 | ;; (and (file-readable-p bookmark-file) |
| 734 | ;; (progn (bookmark-load bookmark-file) | 705 | ;; (progn (bookmark-load bookmark-file) |
| 735 | ;; bookmark-alist)))) | 706 | ;; bookmark-alist)))) |
| 736 | ;; | 707 | ;; |
| 737 | ;; (put 'bookmark-menu-locate 'menu-enable | 708 | ;; (put 'bookmark-menu-bar-locate 'menu-enable |
| 738 | ;; '(or bookmark-alist | 709 | ;; '(or bookmark-alist |
| 739 | ;; (and (file-readable-p bookmark-file) | 710 | ;; (and (file-readable-p bookmark-file) |
| 740 | ;; (progn (bookmark-load bookmark-file) | 711 | ;; (progn (bookmark-load bookmark-file) |
| 741 | ;; bookmark-alist)))) | 712 | ;; bookmark-alist)))) |
| 742 | ;; | 713 | ;; |
| 743 | ;; (put 'bookmark-menu-rename 'menu-enable | 714 | ;; (put 'bookmark-menu-bar-rename 'menu-enable |
| 744 | ;; '(or bookmark-alist | 715 | ;; '(or bookmark-alist |
| 745 | ;; (and (file-readable-p bookmark-file) | 716 | ;; (and (file-readable-p bookmark-file) |
| 746 | ;; (progn (bookmark-load bookmark-file) | 717 | ;; (progn (bookmark-load bookmark-file) |
| 747 | ;; bookmark-alist)))) | 718 | ;; bookmark-alist)))) |
| 748 | ;; | 719 | ;; |
| 749 | ;; (put 'bookmark-menu-delete 'menu-enable | 720 | ;; (put 'bookmark-menu-bar-delete 'menu-enable |
| 750 | ;; '(or bookmark-alist | 721 | ;; '(or bookmark-alist |
| 751 | ;; (and (file-readable-p bookmark-file) | 722 | ;; (and (file-readable-p bookmark-file) |
| 752 | ;; (progn (bookmark-load bookmark-file) | 723 | ;; (progn (bookmark-load bookmark-file) |
| 753 | ;; bookmark-alist)))) | 724 | ;; bookmark-alist)))) |
| 754 | ;; | 725 | ;; |
| 755 | ;; (put 'bookmark-menu-save 'menu-enable | 726 | ;; (put 'bookmark-menu-bar-save 'menu-enable |
| 756 | ;; '(or bookmark-alist | 727 | ;; '(or bookmark-alist |
| 757 | ;; (and (file-readable-p bookmark-file) | 728 | ;; (and (file-readable-p bookmark-file) |
| 758 | ;; (progn (bookmark-load bookmark-file) | 729 | ;; (progn (bookmark-load bookmark-file) |
| 759 | ;; bookmark-alist)))) | 730 | ;; bookmark-alist)))) |
| 760 | ;; | 731 | ;; |
| 761 | ;; (put 'bookmark-menu-write 'menu-enable | 732 | ;; (put 'bookmark-menu-bar-write 'menu-enable |
| 762 | ;; '(or bookmark-alist | 733 | ;; '(or bookmark-alist |
| 763 | ;; (and (file-readable-p bookmark-file) | 734 | ;; (and (file-readable-p bookmark-file) |
| 764 | ;; (progn (bookmark-load bookmark-file) | 735 | ;; (progn (bookmark-load bookmark-file) |
| 765 | ;; bookmark-alist)))) | 736 | ;; bookmark-alist)))) |
| 766 | 737 | ||
| 767 | ;;;; end bookmark menu stuff ;;;; | 738 | ;;;; end bookmark menu-bar stuff ;;;; |
| 768 | 739 | ||
| 769 | ;; load the default bookmark file, if it exists, and the | 740 | ;; load the default bookmark file, if it exists, and the |
| 770 | ;; bookmark-alist is nil: | 741 | ;; bookmark-alist is nil: |
| 771 | (bookmark-try-default-file) | 742 | (bookmark-try-default-file) |
| 772 | 743 | ||
| 773 | |||
| 774 | (provide 'bookmark) | 744 | (provide 'bookmark) |
| 775 | 745 | ||
| 776 | ;;; bookmark.el ends here ;;; | 746 | ;;; bookmark.el ends here |