;; Kyle Jones <kyle_jones@wonderworks.com>
;; added "Exact match, then inexact" code
;; added support for include directive.
-;; Hrvoje Niksic <hniksic@srce.hr>
+;; Hrvoje Niksic <hniksic@xemacs.org>
;; various changes.
\f
(when (file-readable-p parent-tag-file)
(push parent-tag-file result)))
;; tag-table-alist
- (let ((key (or buffer-file-name
- (concat default-directory (buffer-name))))
- expression)
+ (let* ((key (or buffer-file-name
+ (concat default-directory (buffer-name))))
+ (key (if (eq system-type 'windows-nt)
+ (replace-in-string key "\\\\" "/")
+ key))
+ expression)
(dolist (item tag-table-alist)
(setq expression (car item))
;; If the car of the alist item is a string, apply it as a regexp
(defun buffer-tag-table-files ()
"Returns a list of all files referenced by all TAGS tables that
this buffer uses."
- (apply #'nconc
+ (apply #'append
(mapcar #'tag-table-files (buffer-tag-table-list))))
\f
((string-match "\\.scm\\'" filename)
'scheme-mode)
(t nil)))
+ (defvar c-mode-syntax-table)
(set-syntax-table (cond ((and (eq file-type 'c-mode)
c-mode-syntax-table)
c-mode-syntax-table)
(format "%s(default %s) " prompt default)
prompt)
tag-completion-table 'tag-completion-predicate nil nil
- 'find-tag-history))
- (if (string-equal tag-name "")
- ;; #### - This is a really LAME way of doing it! --Stig
- default ;indicate exact symbol match
- tag-name)))
+ 'find-tag-history default))
+ tag-name))
(defvar last-tag-data nil
"Information for continuing a tag search.
(t
(setq tag-table-currently-matching-exact t)))
;; \_ in the tagname is used to indicate a symbol boundary.
- (setq exact-tagname (concat "\\_" tagname "\\_"))
+ (setq exact-tagname (format "\C-?\\_%s\\_\C-a\\|\\_%s\\_" tagname tagname))
(while (string-match "\\\\_" exact-tagname)
(aset exact-tagname (1- (match-end 0)) ?b))
(save-excursion
;; tag searches?
(while (re-search-forward tag-target nil t)
(and (save-match-data
- (looking-at "[^\n\C-?]*\C-?"))
+ (save-excursion
+ (goto-char (match-beginning 0))
+ (looking-at "[^\n\C-?]*\C-?")))
;; If we're looking for inexact matches, skip
;; exact matches since we've visited them
;; already.
(if next "more " "")
(if exact "matching" "containing")
tagname))
+ (beginning-of-line)
(search-forward "\C-?")
(setq file (expand-file-name (file-of-tag)
;; In XEmacs, this needs to be
(cons buf startpos))))
;;;###autoload
+(defun find-tag-at-point (tagname &optional other-window)
+ "*Find tag whose name contains TAGNAME.
+Identical to `find-tag' but does not prompt for tag when called interactively;
+instead, uses tag around or before point."
+ (interactive (if current-prefix-arg
+ '(nil nil)
+ (list (find-tag-default) nil)))
+ (find-tag tagname other-window))
+
+;;;###autoload
(defun find-tag (tagname &optional other-window)
"*Find tag whose name contains TAGNAME.
Selects the buffer that the tag is contained in
the tag.
This version of this function supports multiple active tags tables,
-and completion.
+and completion. See also the commands `\\[push-tag-mark]' and
+`\\[pop-tag-mark]'.
Variables of note:
'(find-tag find-tag-other-window tags-loop-continue))))
(push-tag-mark))
(if other-window
- (pop-to-buffer tag-buf)
+ (pop-to-buffer tag-buf t)
(switch-to-buffer tag-buf))
(widen)
(push-mark)
;;;###autoload
(defun find-tag-other-window (tagname &optional next)
- "*Find tag whose name contains TAGNAME.
+ "*Find tag whose name contains TAGNAME, in another window.
Selects the buffer that the tag is contained in in another window
and puts point at its definition.
If TAGNAME is a null string, the expression in the buffer
\f
;; Sample uses of find-tag-hook and find-tag-default-hook
-;; This is wrong. We should either make this behaviour default and
+;; This is wrong. We should either make this behavior default and
;; back it up, or not use it at all. For now, I've commented it out.
;; --hniksic
(defcustom tag-mark-stack-max 16
"*The maximum number of elements kept on the mark-stack used
by tags-search. See also the commands `\\[push-tag-mark]' and
-and `\\[pop-tag-mark]'."
+`\\[pop-tag-mark]'."
:type 'integer
:group 'etags)
;;;###autoload (define-key esc-map "*" 'pop-tag-mark)
+;;;###autoload
(defun pop-tag-mark (arg)
"Go to last tag position.
`find-tag' maintains a mark-stack seperate from the \\[set-mark-command] mark-stack.
\f
(provide 'etags)
(provide 'tags)
+
+;;; etags.el ends here