Mercurial > emacs
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 ;; |