diff options
| author | Lars Ingebrigtsen | 2016-02-02 18:00:02 +1100 |
|---|---|---|
| committer | Lars Ingebrigtsen | 2016-02-02 18:00:02 +1100 |
| commit | 57134666465488819ac1fe0678484eefb9bd7853 (patch) | |
| tree | 27ca2ff25df6aeefccecc4bfa17073d997e55ee7 /lisp | |
| parent | 51362d68d14af92799c65198a690f769b04d456d (diff) | |
| download | emacs-57134666465488819ac1fe0678484eefb9bd7853.tar.gz emacs-57134666465488819ac1fe0678484eefb9bd7853.zip | |
Fix editing undo changes in eww fields
* eww.el (eww-tag-form): Don't overwrite initial form data in text
fields.
(eww-process-text-input): Make `M-t' at the end of text fields work
better (bug#19085).
Diffstat (limited to 'lisp')
| -rw-r--r-- | lisp/net/eww.el | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/lisp/net/eww.el b/lisp/net/eww.el index 147ba5fcda7..7f98b5b8c7b 100644 --- a/lisp/net/eww.el +++ b/lisp/net/eww.el | |||
| @@ -921,6 +921,7 @@ network, but just re-display the HTML already fetched." | |||
| 921 | (let ((eww-form (list (cons :method (dom-attr dom 'method)) | 921 | (let ((eww-form (list (cons :method (dom-attr dom 'method)) |
| 922 | (cons :action (dom-attr dom 'action)))) | 922 | (cons :action (dom-attr dom 'action)))) |
| 923 | (start (point))) | 923 | (start (point))) |
| 924 | (insert "\n") | ||
| 924 | (shr-ensure-paragraph) | 925 | (shr-ensure-paragraph) |
| 925 | (shr-generic dom) | 926 | (shr-generic dom) |
| 926 | (unless (bolp) | 927 | (unless (bolp) |
| @@ -1030,6 +1031,7 @@ See URL `https://developer.mozilla.org/en-US/docs/Web/HTML/Element/Input'.") | |||
| 1030 | (1- end))))) | 1031 | (1- end))))) |
| 1031 | (let* ((form (get-text-property pos 'eww-form)) | 1032 | (let* ((form (get-text-property pos 'eww-form)) |
| 1032 | (properties (text-properties-at pos)) | 1033 | (properties (text-properties-at pos)) |
| 1034 | (buffer-undo-list t) | ||
| 1033 | (inhibit-read-only t) | 1035 | (inhibit-read-only t) |
| 1034 | (length (- end beg replace-length)) | 1036 | (length (- end beg replace-length)) |
| 1035 | (type (plist-get form :type))) | 1037 | (type (plist-get form :type))) |
| @@ -1050,13 +1052,13 @@ See URL `https://developer.mozilla.org/en-US/docs/Web/HTML/Element/Input'.") | |||
| 1050 | ((< length 0) | 1052 | ((< length 0) |
| 1051 | ;; Add padding. | 1053 | ;; Add padding. |
| 1052 | (save-excursion | 1054 | (save-excursion |
| 1053 | (goto-char (1- end)) | 1055 | (goto-char end) |
| 1054 | (goto-char | 1056 | (goto-char |
| 1055 | (if (equal type "textarea") | 1057 | (if (equal type "textarea") |
| 1056 | (1- (line-end-position)) | 1058 | (1- (line-end-position)) |
| 1057 | (1+ (eww-end-of-field)))) | 1059 | (1+ (eww-end-of-field)))) |
| 1058 | (let ((start (point))) | 1060 | (let ((start (point))) |
| 1059 | (insert (make-string (abs length) ? )) | 1061 | (insert (make-string (abs length) ? )) |
| 1060 | (set-text-properties start (point) properties)) | 1062 | (set-text-properties start (point) properties)) |
| 1061 | (goto-char (1- end))))) | 1063 | (goto-char (1- end))))) |
| 1062 | (set-text-properties (plist-get form :start) (plist-get form :end) | 1064 | (set-text-properties (plist-get form :start) (plist-get form :end) |
| @@ -1070,8 +1072,9 @@ See URL `https://developer.mozilla.org/en-US/docs/Web/HTML/Element/Input'.") | |||
| 1070 | (when (equal type "password") | 1072 | (when (equal type "password") |
| 1071 | ;; Display passwords as asterisks. | 1073 | ;; Display passwords as asterisks. |
| 1072 | (let ((start (eww-beginning-of-field))) | 1074 | (let ((start (eww-beginning-of-field))) |
| 1073 | (put-text-property start (+ start (length value)) | 1075 | (put-text-property |
| 1074 | 'display (make-string (length value) ?*))))))))) | 1076 | start (+ start (length value)) |
| 1077 | 'display (make-string (length value) ?*))))))))) | ||
| 1075 | 1078 | ||
| 1076 | (defun eww-tag-textarea (dom) | 1079 | (defun eww-tag-textarea (dom) |
| 1077 | (let ((start (point)) | 1080 | (let ((start (point)) |