emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] scratch/last-cedet-merge 307b510 09/50: semantic: Deal wit


From: David Engster
Subject: [Emacs-diffs] scratch/last-cedet-merge 307b510 09/50: semantic: Deal with missing prefix when completing symbol
Date: Wed, 25 Jan 2017 22:15:20 +0000 (UTC)

branch: scratch/last-cedet-merge
commit 307b510f7609b6a26a5a120b2f11cffb7453c859
Author: Eric Ludlam <address@hidden>
Commit: David Engster <address@hidden>

    semantic: Deal with missing prefix when completing symbol
    
    * lisp/cedet/semantic/ia.el (semantic-ia-complete-symbol): Protect
     against a nil prefix.
     (semantic-ia-complete-symbol-menu): If bounds are empty (no prefix),
     don't delete region.
---
 lisp/cedet/semantic/ia.el |    8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/lisp/cedet/semantic/ia.el b/lisp/cedet/semantic/ia.el
index 4696388..b17af9a 100644
--- a/lisp/cedet/semantic/ia.el
+++ b/lisp/cedet/semantic/ia.el
@@ -123,7 +123,7 @@ Completion options are calculated with 
`semantic-analyze-possible-completions'."
              ;; the smart completion engine sometimes fails.
              (semantic-complete-symbol))
        ;; Use try completion to seek a common substring.
-       (let* ((completion-ignore-case (string= (downcase pre) pre))
+       (let* ((completion-ignore-case (and pre (string= (downcase pre) pre)))
               (tc (try-completion (or pre "")  syms)))
          (if (and (stringp tc) (not (string= tc (or pre ""))))
              (let ((tok (semantic-find-first-tag-by-name
@@ -188,7 +188,11 @@ Completion options are calculated with 
`semantic-analyze-possible-completions'."
        (when ans
          (if (not (semantic-tag-p ans))
              (setq ans (aref (cdr ans) 0)))
-         (delete-region (car (oref a bounds)) (cdr (oref a bounds)))
+         (with-slots ((bnds bounds)) a
+            ;; bounds could be nil if we are completing an empty prefix string
+            ;; (e.g. type constrained within a function argument list)
+            (when (and (car bnds) (cdr bnds))
+              (delete-region (car bnds) (cdr bnds))))
          (semantic-ia-insert-tag ans))
        ))))
 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]