]> git.eshelyaron.com Git - emacs.git/commitdiff
* bindings.el (complete-symbol): Call semantic-ia-complete-symbol if
authorChong Yidong <cyd@stupidchicken.com>
Sat, 5 Dec 2009 22:01:00 +0000 (22:01 +0000)
committerChong Yidong <cyd@stupidchicken.com>
Sat, 5 Dec 2009 22:01:00 +0000 (22:01 +0000)
possible.

* cedet/semantic/ia.el (semantic-ia-complete-symbol): Make argument
optional.

lisp/ChangeLog
lisp/bindings.el
lisp/cedet/semantic/ia.el
lisp/progmodes/etags.el

index d03ca93908815f990dfdfb193bbb2f38739eef0a..9ff951b09a30deaa9cef511754d0b03e3d982dc6 100644 (file)
@@ -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.
index c02980f04b254815342eb33491aaad120c42f4ed..64c57d112c738e786e8564b9754b7d550b6da387 100644 (file)
@@ -671,23 +671,28 @@ is okay.  See `mode-line-format'.")
 
 (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.
index 573f9fa867f1770537dd18ca59f020fcdc529c12..b0ae63011857d94ef27b23250812318d2057fad0 100644 (file)
@@ -105,19 +105,21 @@ Supports caching."
     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
index 2893fdfb76649f63f74f614ac4b276de2f9365ef..826063628260e74905930c2379eee7eddade08b1 100644 (file)
@@ -2027,7 +2027,6 @@ see the doc of that variable if you want to add names to the list."
   (interactive)
   (quit-window t (selected-window)))
 \f
-;; Note, there is another definition of this function in bindings.el.
 ;;;###autoload
 (defun complete-tag ()
   "Perform tags completion on the text around point.