* bug#23813: 24.5; undo warning while find-file @ 2016-06-21 11:48 ynyaaa 2016-07-09 12:27 ` Eli Zaretskii 0 siblings, 1 reply; 3+ messages in thread From: ynyaaa @ 2016-06-21 11:48 UTC (permalink / raw) To: 23813 When `post-read-conversion' changes the buffer many times, undo warning buffer popups. This may occur while `find-file', even though undo info is not needed. (let ((tmpfile "/tmp/test-hz.txt")) (with-temp-buffer (dotimes (i 100000) (insert "~{R;~}\n")) (write-region (point-min) (point-max) tmpfile) (let ((coding-system-for-read 'hz)) (find-file tmpfile)))) Evaluating the form above, *Warnings* buffer shows this text. Warning (undo): Buffer `test-hz.txt' undo info was 12765470 bytes long. The undo info was discarded because it exceeded `undo-outer-limit'. This is normal if you executed a command that made a huge change to the buffer. In that case, to prevent similar problems in the future, set `undo-outer-limit' to a value that is large enough to cover the maximum size of normal changes you expect a single command to make, but not so large that it might exceed the maximum memory allotted to Emacs. If you did not execute any such command, the situation is probably due to a bug and you should report it. You can disable the popping up of this buffer by adding the entry (undo discard-info) to the user option `warning-suppress-types', which is defined in the `warnings' library. In GNU Emacs 24.5.1 (i686-pc-mingw32) of 2015-04-11 on LEG570 Windowing system distributor `Microsoft Corp.', version 6.0.6002 Configured using: `configure --prefix=/c/usr --host=i686-pc-mingw32' Important settings: value of $LANG: JPN locale-coding-system: cp932 Major mode: Lisp Interaction Minor modes in effect: tooltip-mode: t electric-indent-mode: t mouse-wheel-mode: t tool-bar-mode: t menu-bar-mode: t file-name-shadow-mode: t global-font-lock-mode: t font-lock-mode: t blink-cursor-mode: t auto-composition-mode: t auto-encryption-mode: t auto-compression-mode: t line-number-mode: t transient-mark-mode: t Recent messages: Load-path shadows: None found. Features: (shadow sort gnus-util mail-extr emacsbug message format-spec rfc822 mml mml-sec mm-decode mm-bodies mm-encode mail-parse rfc2231 mailabbrev gmm-utils mailheader sendmail rfc2047 rfc2045 ietf-drums mm-util mail-prsvr mail-utils help-mode easymenu advice help-fns time-date japan-util tooltip electric uniquify ediff-hook vc-hooks lisp-float-type mwheel dos-w32 ls-lisp w32-common-fns disp-table w32-win w32-vars tool-bar dnd fontset image regexp-opt fringe tabulated-list newcomment lisp-mode prog-mode register page menu-bar rfn-eshadow timer select scroll-bar mouse jit-lock font-lock syntax facemenu font-core frame cham georgian utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao korean japanese hebrew greek romanian slovak czech european ethiopic indian cyrillic chinese case-table epa-hook jka-cmpr-hook help simple abbrev minibuffer nadvice loaddefs button faces cus-face macroexp files text-properties overlay sha1 md5 base64 format env code-pages mule custom widget hashtable-print-readable backquote make-network-process w32notify w32 multi-tty emacs) Memory information: ((conses 8 78016 6918) (symbols 32 17691 0) (miscs 32 35 158) (strings 16 11326 4298) (string-bytes 1 284552) (vectors 8 10542) (vector-slots 4 465337 5130) (floats 8 58 110) (intervals 28 210 0) (buffers 508 13)) ^ permalink raw reply [flat|nested] 3+ messages in thread
* bug#23813: 24.5; undo warning while find-file 2016-06-21 11:48 bug#23813: 24.5; undo warning while find-file ynyaaa @ 2016-07-09 12:27 ` Eli Zaretskii 2016-07-30 8:25 ` Eli Zaretskii 0 siblings, 1 reply; 3+ messages in thread From: Eli Zaretskii @ 2016-07-09 12:27 UTC (permalink / raw) To: ynyaaa, Phillip Lord; +Cc: 23813 > From: ynyaaa@gmail.com > Date: Tue, 21 Jun 2016 20:48:30 +0900 > > When `post-read-conversion' changes the buffer many times, > undo warning buffer popups. > This may occur while `find-file', even though undo info is not needed. > > (let ((tmpfile "/tmp/test-hz.txt")) > (with-temp-buffer > (dotimes (i 100000) (insert "~{R;~}\n")) > (write-region (point-min) (point-max) tmpfile) > (let ((coding-system-for-read 'hz)) > (find-file tmpfile)))) > > Evaluating the form above, *Warnings* buffer shows this text. > Warning (undo): Buffer `test-hz.txt' undo info was 12765470 bytes long. > The undo info was discarded because it exceeded `undo-outer-limit'. > > This is normal if you executed a command that made a huge change > to the buffer. In that case, to prevent similar problems in the > future, set `undo-outer-limit' to a value that is large enough to > cover the maximum size of normal changes you expect a single > command to make, but not so large that it might exceed the > maximum memory allotted to Emacs. > > If you did not execute any such command, the situation is > probably due to a bug and you should report it. > > You can disable the popping up of this buffer by adding the entry > (undo discard-info) to the user option `warning-suppress-types', > which is defined in the `warnings' library. Phillip, what do you think about the patch below? diff --git a/src/coding.c b/src/coding.c index 29c90f0..b959f7d 100644 --- a/src/coding.c +++ b/src/coding.c @@ -7851,6 +7851,15 @@ code_conversion_save (bool with_work_buf, bool multibyte) return workbuf; } +static void +coding_restore_undo_list (Lisp_Object arg) +{ + Lisp_Object undo_list = XCAR (arg); + struct buffer *buf = XBUFFER (XCDR (arg)); + + bset_undo_list (buf, undo_list); +} + void decode_coding_gap (struct coding_system *coding, ptrdiff_t chars, ptrdiff_t bytes) @@ -7963,13 +7972,19 @@ decode_coding_gap (struct coding_system *coding, { ptrdiff_t prev_Z = Z, prev_Z_BYTE = Z_BYTE; Lisp_Object val; + Lisp_Object undo_list = BVAR (current_buffer, undo_list); + ptrdiff_t count1 = SPECPDL_INDEX (); + record_unwind_protect (coding_restore_undo_list, + Fcons (undo_list, Fcurrent_buffer ())); + bset_undo_list (current_buffer, Qt); TEMP_SET_PT_BOTH (coding->dst_pos, coding->dst_pos_byte); val = call1 (CODING_ATTR_POST_READ (attrs), make_number (coding->produced_char)); CHECK_NATNUM (val); coding->produced_char += Z - prev_Z; coding->produced += Z_BYTE - prev_Z_BYTE; + unbind_to (count1, Qnil); } unbind_to (count, Qnil); @@ -8110,13 +8125,19 @@ decode_coding_object (struct coding_system *coding, { ptrdiff_t prev_Z = Z, prev_Z_BYTE = Z_BYTE; Lisp_Object val; + Lisp_Object undo_list = BVAR (current_buffer, undo_list); + ptrdiff_t count1 = SPECPDL_INDEX (); + record_unwind_protect (coding_restore_undo_list, + Fcons (undo_list, Fcurrent_buffer ())); + bset_undo_list (current_buffer, Qt); TEMP_SET_PT_BOTH (coding->dst_pos, coding->dst_pos_byte); val = safe_call1 (CODING_ATTR_POST_READ (attrs), make_number (coding->produced_char)); CHECK_NATNUM (val); coding->produced_char += Z - prev_Z; coding->produced += Z_BYTE - prev_Z_BYTE; + unbind_to (count1, Qnil); } if (EQ (dst_object, Qt)) ^ permalink raw reply related [flat|nested] 3+ messages in thread
* bug#23813: 24.5; undo warning while find-file 2016-07-09 12:27 ` Eli Zaretskii @ 2016-07-30 8:25 ` Eli Zaretskii 0 siblings, 0 replies; 3+ messages in thread From: Eli Zaretskii @ 2016-07-30 8:25 UTC (permalink / raw) To: ynyaaa; +Cc: 23813-done, phillip.lord > Date: Sat, 09 Jul 2016 15:27:47 +0300 > From: Eli Zaretskii <eliz@gnu.org> > Cc: 23813@debbugs.gnu.org > > > From: ynyaaa@gmail.com > > Date: Tue, 21 Jun 2016 20:48:30 +0900 > > > > When `post-read-conversion' changes the buffer many times, > > undo warning buffer popups. > > This may occur while `find-file', even though undo info is not needed. > > > > (let ((tmpfile "/tmp/test-hz.txt")) > > (with-temp-buffer > > (dotimes (i 100000) (insert "~{R;~}\n")) > > (write-region (point-min) (point-max) tmpfile) > > (let ((coding-system-for-read 'hz)) > > (find-file tmpfile)))) > > > > Evaluating the form above, *Warnings* buffer shows this text. > > Warning (undo): Buffer `test-hz.txt' undo info was 12765470 bytes long. > > The undo info was discarded because it exceeded `undo-outer-limit'. > > > > This is normal if you executed a command that made a huge change > > to the buffer. In that case, to prevent similar problems in the > > future, set `undo-outer-limit' to a value that is large enough to > > cover the maximum size of normal changes you expect a single > > command to make, but not so large that it might exceed the > > maximum memory allotted to Emacs. > > > > If you did not execute any such command, the situation is > > probably due to a bug and you should report it. > > > > You can disable the popping up of this buffer by adding the entry > > (undo discard-info) to the user option `warning-suppress-types', > > which is defined in the `warnings' library. > > Phillip, what do you think about the patch below? No comments, so I pushed the proposed change to the master branch, and I'm marking this bug done. Thanks. ^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2016-07-30 8:25 UTC | newest] Thread overview: 3+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2016-06-21 11:48 bug#23813: 24.5; undo warning while find-file ynyaaa 2016-07-09 12:27 ` Eli Zaretskii 2016-07-30 8:25 ` Eli Zaretskii
Code repositories for project(s) associated with this external index https://git.savannah.gnu.org/cgit/emacs.git https://git.savannah.gnu.org/cgit/emacs/org-mode.git This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.