Mercurial > emacs
changeset 22950:606be1490be7
(speedbar-edit-line, speedbar-buffer-kill-buffer,
speedbar-buffer-revert-buffer): Updated buffer finding regex to
handle the [?] tag.
(speedbar-find-selected-file): New function.
(speedbar-clear-current-file): Uses `speedbar-find-selected-file'
(speedbar-update-current-file): Uses `speedbar-find-selected-file',
and now `speedbar-last-selected-file' is defined as the path name
to the file, not just the file itself.
(speedbar-center-buffer-smartly): Fixed center error to handle
the whole buffer.
(speedbar-delete-subblock): Rewrote to be more robust, less clever.
(speedbar-timer-fn): Removed short display time for messages.
author | Eric M. Ludlam <zappo@gnu.org> |
---|---|
date | Sat, 08 Aug 1998 21:20:51 +0000 |
parents | 3f75d6c8ef33 |
children | 19b3899582b4 |
files | lisp/speedbar.el |
diffstat | 1 files changed, 47 insertions(+), 37 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/speedbar.el Sat Aug 08 20:45:28 1998 +0000 +++ b/lisp/speedbar.el Sat Aug 08 21:20:51 1998 +0000 @@ -3,9 +3,9 @@ ;;; Copyright (C) 1996, 97, 98 Free Software Foundation ;; Author: Eric M. Ludlam <zappo@gnu.org> -;; Version: 0.7.1 +;; Version: 0.7.2 ;; Keywords: file, tags, tools -;; X-RCS: $Id: speedbar.el,v 1.5 1998/08/03 17:47:39 zappo Exp zappo $ +;; X-RCS: $Id: speedbar.el,v 1.6 1998/08/04 13:58:39 zappo Exp zappo $ ;; This file is part of GNU Emacs. @@ -2551,7 +2551,6 @@ (progn (message "Updating speedbar to special mode: %s...done" major-mode) - (sit-for 1) (message nil)))) ;; Update all the contents if directories change! (if (or (member (expand-file-name default-directory) @@ -2572,7 +2571,6 @@ (progn (message "Updating speedbar to: %s...done" default-directory) - (sit-for 1) (message nil))))) (select-frame af)) ;; Now run stealthy updates of time-consuming items @@ -2609,19 +2607,36 @@ (run-hooks 'speedbar-scanner-reset-hook) ) +(defun speedbar-find-selected-file (file) + "Goto the line where FILE is." + (goto-char (point-min)) + (let ((m nil)) + (while (and (setq m (re-search-forward + (concat " \\(" (file-name-nondirectory file) + "\\)\\(" speedbar-indicator-regex "\\)?\n") + nil t)) + (not (string= file + (concat + (speedbar-line-path + (save-excursion + (goto-char (match-beginning 0)) + (beginning-of-line) + (save-match-data + (looking-at "[0-9]+:") + (string-to-number (match-string 0))))) + (match-string 1)))))) + (if m + (progn + (goto-char (match-beginning 1)) + (match-string 1))))) + (defun speedbar-clear-current-file () "Locate the file thought to be current, and remove its highlighting." (save-excursion (set-buffer speedbar-buffer) (if speedbar-last-selected-file (speedbar-with-writable - (goto-char (point-min)) - (if (and - speedbar-last-selected-file - (re-search-forward - (concat " \\(" (regexp-quote speedbar-last-selected-file) - "\\)\\(" speedbar-indicator-regex "\\)?\n") - nil t)) + (if (speedbar-find-selected-file speedbar-last-selected-file) (put-text-property (match-beginning 1) (match-end 1) 'face @@ -2640,7 +2655,7 @@ nil))) (select-frame lastf) rf))) - (newcf (if newcfd (file-name-nondirectory newcfd))) + (newcf (if newcfd newcfd)) (lastb (current-buffer)) (sucf-recursive (boundp 'sucf-recursive)) (case-fold-search t)) @@ -2659,15 +2674,12 @@ ;; now highlight the new one. (set-buffer speedbar-buffer) (speedbar-with-writable - (goto-char (point-min)) - (if (re-search-forward - (concat " \\(" (regexp-quote newcf) "\\)\\(" - speedbar-indicator-regex "\\)?$") nil t) - ;; put the property on it - (put-text-property (match-beginning 1) - (match-end 1) - 'face - 'speedbar-selected-face) + (if (speedbar-find-selected-file newcf) + ;; put the property on it + (put-text-property (match-beginning 1) + (match-end 1) + 'face + 'speedbar-selected-face) ;; Oops, it's not in the list. Should it be? (if (and (string-match speedbar-file-regexp newcf) (string= (file-name-directory newcfd) @@ -2675,8 +2687,7 @@ ;; yes, it is (we will ignore unknowns for now...) (progn (speedbar-refresh) - (if (re-search-forward - (concat " \\(" (regexp-quote newcf) "\\)\n") nil t) + (if (speedbar-find-selected-file newcf) ;; put the property on it (put-text-property (match-beginning 1) (match-end 1) @@ -3089,7 +3100,7 @@ (beginning-of-line) ;; If this fails, then it is a non-standard click, and as such, ;; perfectly allowed. - (if (re-search-forward "[]>}] [a-zA-Z0-9]" + (if (re-search-forward "[]>?}] [^ ]" (save-excursion (end-of-line) (point)) t) (speedbar-do-function-pointer) @@ -3168,16 +3179,15 @@ "Delete text from point to indentation level INDENT or greater. Handles end-of-sublist smartly." (speedbar-with-writable - (save-excursion - (end-of-line) (forward-char 1) - (while (and (not (save-excursion - (re-search-forward (format "^%d:" indent) - nil t))) - (>= indent 0)) - (setq indent (1- indent))) - (delete-region (point) (if (>= indent 0) - (match-beginning 0) - (point-max)))))) + (save-excursion + (end-of-line) (forward-char 1) + (let ((start (point))) + (while (and (looking-at "^\\([0-9]+\\):") + (> (string-to-int (match-string 1)) indent) + (not (eobp))) + (forward-line 1) + (beginning-of-line)) + (delete-region start (point)))))) (defun speedbar-dired (text token indent) "Speedbar click handler for directory expand button. @@ -3337,7 +3347,7 @@ (end-of-line) (if (re-search-backward exp nil t) (setq start (point)) - (error "Center error")) + (setq start (point-min))) (save-excursion ;Not sure about this part. (end-of-line) (setq p (point)) @@ -3665,7 +3675,7 @@ (beginning-of-line) ;; If this fails, then it is a non-standard click, and as such, ;; perfectly allowed. - (if (re-search-forward "[]>}] [a-zA-Z0-9]" + (if (re-search-forward "[]>?}] [^ ]" (save-excursion (end-of-line) (point)) t) (let ((text (progn @@ -3685,7 +3695,7 @@ (beginning-of-line) ;; If this fails, then it is a non-standard click, and as such, ;; perfectly allowed - (if (re-search-forward "[]>}] [a-zA-Z0-9]" + (if (re-search-forward "[]>?}] [^ ]" (save-excursion (end-of-line) (point)) t) (let ((text (progn