comparison lisp/wid-edit.el @ 22422:1eba71735142

(widget-specify-secret): New function. (widget-after-change): Use it. (widget-specify-field): Use it.
author Richard M. Stallman <rms@gnu.org>
date Wed, 10 Jun 1998 05:08:04 +0000
parents b23a720f3b4f
children 9c7650b90c06
comparison
equal deleted inserted replaced
22421:b23a720f3b4f 22422:1eba71735142
337 (overlay-put overlay 'field widget) 337 (overlay-put overlay 'field widget)
338 (overlay-put overlay 'local-map map) 338 (overlay-put overlay 'local-map map)
339 (overlay-put overlay 'keymap map) 339 (overlay-put overlay 'keymap map)
340 (overlay-put overlay 'face face) 340 (overlay-put overlay 'face face)
341 (overlay-put overlay 'balloon-help help-echo) 341 (overlay-put overlay 'balloon-help help-echo)
342 (overlay-put overlay 'help-echo help-echo))) 342 (overlay-put overlay 'help-echo help-echo))
343 (widget-specify-secret widget))
344
345 (defun widget-specify-secret (field)
346 "Replace text in FIELD with value of `:secret', if non-nil."
347 (let ((secret (widget-get field :secret))
348 (size (widget-get field :size)))
349 (when secret
350 (let ((begin (widget-field-start field))
351 (end (widget-field-end field)))
352 (when size
353 (while (and (> end begin)
354 (eq (char-after (1- end)) ?\ ))
355 (setq end (1- end))))
356 (while (< begin end)
357 (let ((old (char-after begin)))
358 (unless (eq old secret)
359 (subst-char-in-region begin (1+ begin) old secret)
360 (put-text-property begin (1+ begin) 'secret old))
361 (setq begin (1+ begin))))))))
343 362
344 (defun widget-specify-button (widget from to) 363 (defun widget-specify-button (widget from to)
345 "Specify button for WIDGET between FROM and TO." 364 "Specify button for WIDGET between FROM and TO."
346 (let ((face (widget-apply widget :button-face-get)) 365 (let ((face (widget-apply widget :button-face-get))
347 (help-echo (widget-get widget :help-echo)) 366 (help-echo (widget-get widget :help-echo))
1234 (let ((field (widget-field-find from)) 1253 (let ((field (widget-field-find from))
1235 (other (widget-field-find to))) 1254 (other (widget-field-find to)))
1236 (when field 1255 (when field
1237 (unless (eq field other) 1256 (unless (eq field other)
1238 (debug "Change in different fields")) 1257 (debug "Change in different fields"))
1239 (let ((size (widget-get field :size)) 1258 (let ((size (widget-get field :size)))
1240 (secret (widget-get field :secret)))
1241 (when size 1259 (when size
1242 (let ((begin (widget-field-start field)) 1260 (let ((begin (widget-field-start field))
1243 (end (widget-field-end field))) 1261 (end (widget-field-end field)))
1244 (cond ((< (- end begin) size) 1262 (cond ((< (- end begin) size)
1245 ;; Field too small. 1263 ;; Field too small.
1257 (save-excursion 1275 (save-excursion
1258 (goto-char end) 1276 (goto-char end)
1259 (while (and (eq (preceding-char) ?\ ) 1277 (while (and (eq (preceding-char) ?\ )
1260 (> (point) begin)) 1278 (> (point) begin))
1261 (delete-backward-char 1))))))) 1279 (delete-backward-char 1)))))))
1262 (when secret 1280 (widget-specify-secret field))
1263 (let ((begin (widget-field-start field))
1264 (end (widget-field-end field)))
1265 (when size
1266 (while (and (> end begin)
1267 (eq (char-after (1- end)) ?\ ))
1268 (setq end (1- end))))
1269 (while (< begin end)
1270 (let ((old (char-after begin)))
1271 (unless (eq old secret)
1272 (subst-char-in-region begin (1+ begin) old secret)
1273 (put-text-property begin (1+ begin) 'secret old))
1274 (setq begin (1+ begin)))))))
1275 (widget-apply field :notify field))) 1281 (widget-apply field :notify field)))
1276 (error (debug "After Change")))) 1282 (error (debug "After Change"))))
1277 1283
1278 ;;; Widget Functions 1284 ;;; Widget Functions
1279 ;; 1285 ;;