From: Mauro Aranda Date: Mon, 7 Oct 2019 01:59:43 +0000 (+0200) Subject: Only complete words inside of the string widget X-Git-Tag: emacs-27.0.90~1244 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=7d46b934ab60fdd58c46391636663ff85594c40b;p=emacs.git Only complete words inside of the string widget * lisp/wid-edit.el ('string widget): Peek the word that ispell-complete-word will try to complete, and only offer completions when the word is inside of the field (bug#11046). --- diff --git a/lisp/wid-edit.el b/lisp/wid-edit.el index a5999c0de8d..4d1a609809d 100644 --- a/lisp/wid-edit.el +++ b/lisp/wid-edit.el @@ -58,6 +58,10 @@ (require 'cl-lib) (eval-when-compile (require 'subr-x)) ; when-let +;; The `string' widget completion uses this. +(declare-function ispell-get-word "ispell" + (following &optional extra-otherchars)) + ;;; Compatibility. (defun widget-event-point (event) @@ -3074,7 +3078,12 @@ as the value." "A string." :tag "String" :format "%{%t%}: %v" - :complete-function 'ispell-complete-word + :complete (lambda (widget) + (require 'ispell) + (let ((start (save-excursion (nth 1 (ispell-get-word nil))))) + (if (< start (widget-field-start widget)) + (message "No word to complete inside field") + (ispell-complete-word)))) :prompt-history 'widget-string-prompt-value-history) (define-widget 'regexp 'string