changeset 12555:a2a2aa391773

(dabbrev--search): Don't let spurious match in middle of word obscure real match at start of same word.
author Karl Heuer <kwzh@gnu.org>
date Mon, 17 Jul 1995 22:48:39 +0000
parents fdc58e7e37c2
children fb1b760f6636
files lisp/dabbrev.el
diffstat 1 files changed, 22 insertions(+), 22 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/dabbrev.el	Mon Jul 17 22:48:06 1995 +0000
+++ b/lisp/dabbrev.el	Mon Jul 17 22:48:39 1995 +0000
@@ -789,38 +789,38 @@
 		    (if reverse
 			(re-search-backward pattern1 nil t)
 		      (re-search-forward pattern1 nil t)))
-	  (cond
-	   ((progn
-	      (goto-char (match-beginning 0))
-	      (dabbrev--goto-start-of-abbrev)
-	      (/= (point) (match-beginning 0)))
-	    ;; Prefix of found abbreviation not OK
-	    nil)
-	   (t
-	    (goto-char (match-beginning 0))
+	  (goto-char (match-beginning 0))
+	  ;; In case we matched in the middle of a word,
+	  ;; back up to start of word and verify we still match.
+	  (dabbrev--goto-start-of-abbrev)
+
+	  (if (not (looking-at pattern1))
+	      nil
+	    ;; We have a truly valid match.  Find the end.
 	    (re-search-forward pattern2)
 	    (setq found-string
 		  (buffer-substring (match-beginning 1) (match-end 1)))
 	    (and ignore-case (setq found-string (downcase found-string)))
-	    ;; Throw away if found in table
+	    ;; Ignore this match if it's already in the table.
 	    (if (dabbrev-filter-elements
 		 table-string dabbrev--last-table
 		 (string= found-string table-string))
-		(setq found-string nil))))
+		(setq found-string nil)))
+	  ;; Prepare to continue searching.
 	  (if reverse
 	      (goto-char (match-beginning 0))
 	    (goto-char (match-end 0))))
-	(cond
-	 (found-string
-	  ;;--------------------------------
-	  ;; Put in `dabbrev--last-table' and decide if we should return
-	  ;; result or (downcase result)
-	  ;;--------------------------------
-	  (setq dabbrev--last-table (cons found-string dabbrev--last-table))
-	  (let ((result (buffer-substring (match-beginning 0) (match-end 0))))
-	    (if (and ignore-case (eval dabbrev-case-replace))
-		(downcase result)
-	      result))))))))
+	;; If we found something, use it.
+	(if found-string
+	    ;; Put it into `dabbrev--last-table'
+	    ;; and return it (either downcased, or as is).
+	    (let ((result
+		   (buffer-substring (match-beginning 0) (match-end 0))))
+	      (setq dabbrev--last-table
+		    (cons found-string dabbrev--last-table))
+	      (if (and ignore-case (eval dabbrev-case-replace))
+		  (downcase result)
+		result)))))))
 
 (provide 'dabbrev)