changeset 106444:a72f79f89185

* bindings.el (complete-symbol): Call semantic-ia-complete-symbol if possible. * cedet/semantic/ia.el (semantic-ia-complete-symbol): Make argument optional.
author Chong Yidong <cyd@stupidchicken.com>
date Sat, 05 Dec 2009 22:01:00 +0000
parents 137fd69c176a
children 68f4d89d2fe9
files lisp/ChangeLog lisp/bindings.el lisp/cedet/semantic/ia.el lisp/progmodes/etags.el
diffstat 4 files changed, 30 insertions(+), 18 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/ChangeLog	Sat Dec 05 21:33:48 2009 +0000
+++ b/lisp/ChangeLog	Sat Dec 05 22:01:00 2009 +0000
@@ -1,5 +1,11 @@
 2009-12-05  Chong Yidong  <cyd@stupidchicken.com>
 
+	* bindings.el (complete-symbol): Call semantic-ia-complete-symbol
+	if possible.
+
+	* cedet/semantic/ia.el (semantic-ia-complete-symbol): Make
+	argument optional.
+
 	* shell.el (shell): Require ansi-color (Bug#5113).
 
 	* ansi-color.el (ansi-color-for-comint-mode): Default to t.
--- a/lisp/bindings.el	Sat Dec 05 21:33:48 2009 +0000
+++ b/lisp/bindings.el	Sat Dec 05 22:01:00 2009 +0000
@@ -671,23 +671,28 @@
 
 (define-key esc-map "\t" 'complete-symbol)
 
-(defun complete-symbol (arg) "\
-Perform tags completion on the text around point.
-Completes to the set of names listed in the current tags table.
-The string to complete is chosen in the same way as the default
-for \\[find-tag] (which see).
+(defun complete-symbol (arg)
+  "Perform tags completion on the text around point.
+If a tags table is loaded, call `complete-tag'.
+Otherwise, if Semantic is active, call `semantic-ia-complete-symbol'.
 
 With a prefix argument, this command does completion within
 the collection of symbols listed in the index of the manual for the
 language you are using."
   (interactive "P")
-  (if arg
-      (info-complete-symbol)
-    (if (fboundp 'complete-tag)
-	(complete-tag)
-      ;; Don't autoload etags if we have no tags table.
-      (error "%s" (substitute-command-keys
-	      "No tags table loaded; use \\[visit-tags-table] to load one")))))
+  (cond (arg
+	 (info-complete-symbol))
+	((or tags-table-list tags-file-name)
+	 (complete-tag))
+	((and (fboundp 'semantic-ia-complete-symbol)
+	      (fboundp 'semantic-active-p)
+	      (semantic-active-p))
+	 (semantic-ia-complete-symbol))
+	(t
+	 (error "%s"
+		(substitute-command-keys
+		 "No completions available; use \\[visit-tags-table] \
+or \\[semantic-mode]")))))
 
 ;; Reduce total amount of space we must allocate during this function
 ;; that we will not need to keep permanently.
--- a/lisp/cedet/semantic/ia.el	Sat Dec 05 21:33:48 2009 +0000
+++ b/lisp/cedet/semantic/ia.el	Sat Dec 05 22:01:00 2009 +0000
@@ -105,19 +105,21 @@
     symbols))
 
 ;;;###autoload
-(defun semantic-ia-complete-symbol (point)
-  "Complete the current symbol at POINT.
+(defun semantic-ia-complete-symbol (&optional pos)
+  "Complete the current symbol at POS.
+If POS is nil, default to point.
 Completion options are calculated with `semantic-analyze-possible-completions'."
   (interactive "d")
+  (or pos (setq pos (point)))
   ;; Calculating completions is a two step process.
   ;;
   ;; The first analyzer the current context, which finds tags
   ;; for all the stuff that may be references by the code around
-  ;; POINT.
+  ;; POS.
   ;;
   ;; The second step derives completions from that context.
-  (let* ((a (semantic-analyze-current-context point))
-	 (syms (semantic-ia-get-completions a point))
+  (let* ((a (semantic-analyze-current-context pos))
+	 (syms (semantic-ia-get-completions a pos))
 	 (pre (car (reverse (oref a prefix))))
 	 )
     ;; If PRE was actually an already completed symbol, it doesn't
--- a/lisp/progmodes/etags.el	Sat Dec 05 21:33:48 2009 +0000
+++ b/lisp/progmodes/etags.el	Sat Dec 05 22:01:00 2009 +0000
@@ -2027,7 +2027,6 @@
   (interactive)
   (quit-window t (selected-window)))
 
-;; Note, there is another definition of this function in bindings.el.
 ;;;###autoload
 (defun complete-tag ()
   "Perform tags completion on the text around point.