Mercurial > emacs
comparison lisp/wid-edit.el @ 33893:8b25bc5d3aa4
(widget-field-buffer, widget-field-start)
(widget-field-end): Handle widget field `pseudo-overlays'.
(widget-field-value-delete): Delete WIDGET from `widget-field-new'
if it's there instead of in `widget-field-list'.
author | Miles Bader <miles@gnu.org> |
---|---|
date | Mon, 27 Nov 2000 09:48:31 +0000 |
parents | d65847dea2c0 |
children | dd855bc086f3 |
comparison
equal
deleted
inserted
replaced
33892:12f5fea864e1 | 33893:8b25bc5d3aa4 |
---|---|
1091 field))) | 1091 field))) |
1092 | 1092 |
1093 (defun widget-field-buffer (widget) | 1093 (defun widget-field-buffer (widget) |
1094 "Return the start of WIDGET's editing field." | 1094 "Return the start of WIDGET's editing field." |
1095 (let ((overlay (widget-get widget :field-overlay))) | 1095 (let ((overlay (widget-get widget :field-overlay))) |
1096 (and overlay (overlay-buffer overlay)))) | 1096 (cond ((overlayp overlay) |
1097 (overlay-buffer overlay)) | |
1098 ((consp overlay) | |
1099 (marker-buffer (car overlay)))))) | |
1097 | 1100 |
1098 (defun widget-field-start (widget) | 1101 (defun widget-field-start (widget) |
1099 "Return the start of WIDGET's editing field." | 1102 "Return the start of WIDGET's editing field." |
1100 (let ((overlay (widget-get widget :field-overlay))) | 1103 (let ((overlay (widget-get widget :field-overlay))) |
1101 (and overlay (overlay-start overlay)))) | 1104 (if (overlayp overlay) |
1105 (overlay-start overlay) | |
1106 (car overlay)))) | |
1102 | 1107 |
1103 (defun widget-field-end (widget) | 1108 (defun widget-field-end (widget) |
1104 "Return the end of WIDGET's editing field." | 1109 "Return the end of WIDGET's editing field." |
1105 (let ((overlay (widget-get widget :field-overlay))) | 1110 (let ((overlay (widget-get widget :field-overlay))) |
1106 ;; Don't subtract one if local-map works at the end of the overlay, | 1111 ;; Don't subtract one if local-map works at the end of the overlay, |
1107 ;; or if a special `boundary' field has been added after the widget | 1112 ;; or if a special `boundary' field has been added after the widget |
1108 ;; field. | 1113 ;; field. |
1109 (and overlay | 1114 (if (overlayp overlay) |
1110 (if (and (not (eq (get-char-property (overlay-end overlay) | 1115 (if (and (not (eq (get-char-property (overlay-end overlay) |
1111 'field | 1116 'field |
1112 (widget-field-buffer widget)) | 1117 (widget-field-buffer widget)) |
1113 'boundary)) | 1118 'boundary)) |
1114 (or widget-field-add-space | 1119 (or widget-field-add-space |
1115 (null (widget-get widget :size)))) | 1120 (null (widget-get widget :size)))) |
1116 (1- (overlay-end overlay)) | 1121 (1- (overlay-end overlay)) |
1117 (overlay-end overlay))))) | 1122 (overlay-end overlay)) |
1123 (cdr overlay)))) | |
1118 | 1124 |
1119 (defun widget-field-find (pos) | 1125 (defun widget-field-find (pos) |
1120 "Return the field at POS. | 1126 "Return the field at POS. |
1121 Unlike (get-char-property POS 'field) this, works with empty fields too." | 1127 Unlike (get-char-property POS 'field) this, works with empty fields too." |
1122 (let ((fields widget-field-list) | 1128 (let ((fields widget-field-list) |
1743 (set-marker-insertion-type (car overlay) t))) | 1749 (set-marker-insertion-type (car overlay) t))) |
1744 | 1750 |
1745 (defun widget-field-value-delete (widget) | 1751 (defun widget-field-value-delete (widget) |
1746 "Remove the widget from the list of active editing fields." | 1752 "Remove the widget from the list of active editing fields." |
1747 (setq widget-field-list (delq widget widget-field-list)) | 1753 (setq widget-field-list (delq widget widget-field-list)) |
1754 (setq widget-field-new (delq widget widget-field-new)) | |
1748 ;; These are nil if the :format string doesn't contain `%v'. | 1755 ;; These are nil if the :format string doesn't contain `%v'. |
1749 (let ((overlay (widget-get widget :field-overlay))) | 1756 (let ((overlay (widget-get widget :field-overlay))) |
1750 (when (overlayp overlay) | 1757 (when (overlayp overlay) |
1751 (delete-overlay overlay)))) | 1758 (delete-overlay overlay)))) |
1752 | 1759 |