* Changing of line format and undo @ 2006-06-20 22:15 Lennart Borgman 2006-06-21 3:23 ` Eli Zaretskii 0 siblings, 1 reply; 24+ messages in thread From: Lennart Borgman @ 2006-06-20 22:15 UTC (permalink / raw) If you change line endings this change is not saved to undo. Is this the expected behaviour? ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: Changing of line format and undo 2006-06-20 22:15 Changing of line format and undo Lennart Borgman @ 2006-06-21 3:23 ` Eli Zaretskii 2006-06-21 15:12 ` Lennart Borgman 0 siblings, 1 reply; 24+ messages in thread From: Eli Zaretskii @ 2006-06-21 3:23 UTC (permalink / raw) Cc: emacs-devel > Date: Wed, 21 Jun 2006 00:15:17 +0200 > From: Lennart Borgman <lennart.borgman.073@student.lu.se> > > If you change line endings this change is not saved to undo. Is this the > expected behaviour? If you mean "C-x RET f", then it doesn't really change anything. It just sets a buffer-local variable to some value. So there's nothing to undo. ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: Changing of line format and undo 2006-06-21 3:23 ` Eli Zaretskii @ 2006-06-21 15:12 ` Lennart Borgman 2006-06-21 15:14 ` David Kastrup 2006-06-21 21:54 ` Stuart D. Herring 0 siblings, 2 replies; 24+ messages in thread From: Lennart Borgman @ 2006-06-21 15:12 UTC (permalink / raw) Cc: emacs-devel Eli Zaretskii wrote: >> Date: Wed, 21 Jun 2006 00:15:17 +0200 >> From: Lennart Borgman <lennart.borgman.073@student.lu.se> >> >> If you change line endings this change is not saved to undo. Is this the >> expected behaviour? >> > > If you mean "C-x RET f", then it doesn't really change anything. It > just sets a buffer-local variable to some value. So there's nothing > to undo. > That is an internal Emacs perpective. From a users point of view there is truly a change. If you for example change the line endings the file will be saved with this new line endings. BTW should not changes of this kind also set the buffer to modified? ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: Changing of line format and undo 2006-06-21 15:12 ` Lennart Borgman @ 2006-06-21 15:14 ` David Kastrup 2006-06-21 15:50 ` Lennart Borgman 2006-06-21 21:54 ` Stuart D. Herring 1 sibling, 1 reply; 24+ messages in thread From: David Kastrup @ 2006-06-21 15:14 UTC (permalink / raw) Cc: Eli Zaretskii, emacs-devel Lennart Borgman <lennart.borgman.073@student.lu.se> writes: > Eli Zaretskii wrote: >>> Date: Wed, 21 Jun 2006 00:15:17 +0200 >>> From: Lennart Borgman <lennart.borgman.073@student.lu.se> >>> >>> If you change line endings this change is not saved to undo. Is >>> this the expected behaviour? >>> >> >> If you mean "C-x RET f", then it doesn't really change anything. It >> just sets a buffer-local variable to some value. So there's nothing >> to undo. >> > That is an internal Emacs perpective. From a users point of view there > is truly a change. If you for example change the line endings the file > will be saved with this new line endings. > > BTW should not changes of this kind also set the buffer to modified? What makes you think they don't? -- David Kastrup, Kriemhildstr. 15, 44793 Bochum ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: Changing of line format and undo 2006-06-21 15:14 ` David Kastrup @ 2006-06-21 15:50 ` Lennart Borgman 2006-06-21 16:31 ` David Kastrup 0 siblings, 1 reply; 24+ messages in thread From: Lennart Borgman @ 2006-06-21 15:50 UTC (permalink / raw) Cc: Eli Zaretskii, emacs-devel David Kastrup wrote: > Lennart Borgman <lennart.borgman.073@student.lu.se> writes: > > >> Eli Zaretskii wrote: >> >>>> Date: Wed, 21 Jun 2006 00:15:17 +0200 >>>> From: Lennart Borgman <lennart.borgman.073@student.lu.se> >>>> >>>> If you change line endings this change is not saved to undo. Is >>>> this the expected behaviour? >>>> >>>> >>> If you mean "C-x RET f", then it doesn't really change anything. It >>> just sets a buffer-local variable to some value. So there's nothing >>> to undo. >>> >>> >> That is an internal Emacs perpective. From a users point of view there >> is truly a change. If you for example change the line endings the file >> will be saved with this new line endings. >> >> BTW should not changes of this kind also set the buffer to modified? >> > > What makes you think they don't? > > Test this for example: (defun test-set-eol() (interactive) (let* ((coding buffer-file-coding-system) (new-coding (coding-system-change-eol-conversion coding 2))) (setq buffer-file-coding-system new-coding))) ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: Changing of line format and undo 2006-06-21 15:50 ` Lennart Borgman @ 2006-06-21 16:31 ` David Kastrup 2006-06-21 16:47 ` Lennart Borgman 0 siblings, 1 reply; 24+ messages in thread From: David Kastrup @ 2006-06-21 16:31 UTC (permalink / raw) Cc: Eli Zaretskii, emacs-devel Lennart Borgman <lennart.borgman.073@student.lu.se> writes: > David Kastrup wrote: >> Lennart Borgman <lennart.borgman.073@student.lu.se> writes: >> >> >>> Eli Zaretskii wrote: >>> >>>>> Date: Wed, 21 Jun 2006 00:15:17 +0200 >>>>> From: Lennart Borgman <lennart.borgman.073@student.lu.se> >>>>> >>>>> If you change line endings this change is not saved to undo. Is >>>>> this the expected behaviour? >>>>> >>>> If you mean "C-x RET f", then it doesn't really change anything. It >>>> just sets a buffer-local variable to some value. So there's nothing >>>> to undo. >>>> >>> That is an internal Emacs perpective. From a users point of view there >>> is truly a change. If you for example change the line endings the file >>> will be saved with this new line endings. >>> >>> BTW should not changes of this kind also set the buffer to modified? >>> >> >> What makes you think they don't? >> >> > Test this for example: > > (defun test-set-eol() > (interactive) > (let* ((coding buffer-file-coding-system) > (new-coding (coding-system-change-eol-conversion coding 2))) > (setq buffer-file-coding-system new-coding))) Very funny. setq most certainly does not trigger effects like a changed buffer modification flag. But setq is not a user-level command. Here is one that is: C-x RET f (translated from C-x <return> f) runs the command set-buffer-file-coding-system which is an interactive compiled Lisp function in `mule.el'. It is bound to C-x RET f, <menu-bar> <options> <mule> <set-various-coding-system> <set-buffer-file-coding-system>. (set-buffer-file-coding-system CODING-SYSTEM &optional FORCE NOMODIFY) Set the file coding-system of the current buffer to CODING-SYSTEM. This means that when you save the buffer, it will be converted according to CODING-SYSTEM. For a list of possible values of CODING-SYSTEM, use M-x list-coding-systems. If CODING-SYSTEM leaves the text conversion unspecified, or if it leaves the end-of-line conversion unspecified, FORCE controls what to do. If FORCE is nil, get the unspecified aspect (or aspects) from the buffer's previous `buffer-file-coding-system' value (if it is specified there). Otherwise, leave it unspecified. This marks the buffer modified so that the succeeding M-x save-buffer surely saves the buffer with CODING-SYSTEM. From a program, if you don't want to mark the buffer modified, specify t for NOMODIFY. If you know exactly what coding system you want to use, just set the variable `buffer-file-coding-system' directly. -- David Kastrup, Kriemhildstr. 15, 44793 Bochum ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: Changing of line format and undo 2006-06-21 16:31 ` David Kastrup @ 2006-06-21 16:47 ` Lennart Borgman 2006-06-21 17:31 ` Eli Zaretskii 2006-07-02 15:39 ` Stefan Monnier 0 siblings, 2 replies; 24+ messages in thread From: Lennart Borgman @ 2006-06-21 16:47 UTC (permalink / raw) Cc: Eli Zaretskii, emacs-devel David Kastrup wrote: > Lennart Borgman <lennart.borgman.073@student.lu.se> writes: > > >> David Kastrup wrote: >> >>> Lennart Borgman <lennart.borgman.073@student.lu.se> writes: >>> >>> >>> >>>> Eli Zaretskii wrote: >>>> >>>> >>>>>> Date: Wed, 21 Jun 2006 00:15:17 +0200 >>>>>> From: Lennart Borgman <lennart.borgman.073@student.lu.se> >>>>>> >>>>>> If you change line endings this change is not saved to undo. Is >>>>>> this the expected behaviour? >>>>>> >>>>>> >>>>> If you mean "C-x RET f", then it doesn't really change anything. It >>>>> just sets a buffer-local variable to some value. So there's nothing >>>>> to undo. >>>>> >>>>> >>>> That is an internal Emacs perpective. From a users point of view there >>>> is truly a change. If you for example change the line endings the file >>>> will be saved with this new line endings. >>>> >>>> BTW should not changes of this kind also set the buffer to modified? >>>> >>>> >>> What makes you think they don't? >>> >>> >>> >> Test this for example: >> >> (defun test-set-eol() >> (interactive) >> (let* ((coding buffer-file-coding-system) >> (new-coding (coding-system-change-eol-conversion coding 2))) >> (setq buffer-file-coding-system new-coding))) >> > > Very funny. setq most certainly does not trigger effects like a > changed buffer modification flag. But setq is not a user-level > command. Here is one that is: > Thanks, you are right ;-) Now I see what Eli meant. I still believe that everything that can result in changing an external file should go into the undo history but this is really a corner case of course. ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: Changing of line format and undo 2006-06-21 16:47 ` Lennart Borgman @ 2006-06-21 17:31 ` Eli Zaretskii 2006-07-02 15:39 ` Stefan Monnier 1 sibling, 0 replies; 24+ messages in thread From: Eli Zaretskii @ 2006-06-21 17:31 UTC (permalink / raw) Cc: emacs-devel > Date: Wed, 21 Jun 2006 18:47:27 +0200 > From: Lennart Borgman <lennart.borgman.073@student.lu.se> > Cc: Eli Zaretskii <eliz@gnu.org>, emacs-devel@gnu.org > > Thanks, you are right ;-) Now I see what Eli meant. I still believe that > everything that can result in changing an external file should go into > the undo history Undo saves changes to the _buffer_text_, not changes to the file on disk. Undo has no reasonable way of knowing whether the file on disk will change. ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: Changing of line format and undo 2006-06-21 16:47 ` Lennart Borgman 2006-06-21 17:31 ` Eli Zaretskii @ 2006-07-02 15:39 ` Stefan Monnier 2006-07-02 21:19 ` Kim F. Storm 2006-08-21 14:27 ` Kim F. Storm 1 sibling, 2 replies; 24+ messages in thread From: Stefan Monnier @ 2006-07-02 15:39 UTC (permalink / raw) Cc: Eli Zaretskii, emacs-devel > Thanks, you are right ;-) Now I see what Eli meant. I still believe that > everything that can result in changing an external file should go into the > undo history but this is really a corner case of course. You can change C-x RET f to do what you want by having it add (manually in elisp) an `apply' entry to buufer-undo-list. E.g. I've changed my set-buffer-multibyte to do that (waiting for post-22 to commit it). Stefan --- orig/src/buffer.c +++ mod/src/buffer.c @@ -2112,10 +2100,11 @@ { struct Lisp_Marker *tail, *markers; struct buffer *other; - int undo_enabled_p = !EQ (current_buffer->undo_list, Qt); int begv, zv; int narrowed = (BEG != BEGV || Z != ZV); int modified_p = !NILP (Fbuffer_modified_p (Qnil)); + Lisp_Object old_undo = current_buffer->undo_list; + struct gcpro gcpro1; if (current_buffer->base_buffer) error ("Cannot do `set-buffer-multibyte' on an indirect buffer"); @@ -2124,10 +2113,11 @@ if (NILP (flag) == NILP (current_buffer->enable_multibyte_characters)) return flag; - /* It would be better to update the list, - but this is good enough for now. */ - if (undo_enabled_p) - current_buffer->undo_list = Qt; + GCPRO1 (old_undo); + + /* Don't record these buffer changes. We will put a special undo entry + instead. */ + current_buffer->undo_list = Qt; /* If the cached position is for this buffer, clear it out. */ clear_charpos_cache (current_buffer); @@ -2327,8 +2317,18 @@ set_intervals_multibyte (1); } - if (undo_enabled_p) - current_buffer->undo_list = Qnil; + if (!EQ (old_undo, Qt)) + { + /* Represent all the above changes by a special undo entry. */ + extern Lisp_Object Qapply; + Lisp_Object args[3]; + args[0] = Qapply; + args[1] = Qset_buffer_multibyte; + args[2] = NILP (flag) ? Qt : Qnil; + current_buffer->undo_list = Fcons (Flist (3, args), old_undo); + } + + UNGCPRO; /* Changing the multibyteness of a buffer means that all windows showing that buffer must be updated thoroughly. */ ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: Changing of line format and undo 2006-07-02 15:39 ` Stefan Monnier @ 2006-07-02 21:19 ` Kim F. Storm 2006-07-03 15:05 ` Richard Stallman 2006-08-21 14:27 ` Kim F. Storm 1 sibling, 1 reply; 24+ messages in thread From: Kim F. Storm @ 2006-07-02 21:19 UTC (permalink / raw) Cc: Lennart Borgman, Eli Zaretskii, emacs-devel Stefan Monnier <monnier@iro.umontreal.ca> writes: >> Thanks, you are right ;-) Now I see what Eli meant. I still believe that >> everything that can result in changing an external file should go into the >> undo history but this is really a corner case of course. > > You can change C-x RET f to do what you want by having it add (manually in > elisp) an `apply' entry to buufer-undo-list. > > E.g. I've changed my set-buffer-multibyte to do that (waiting for post-22 > to commit it). I think this is an _excellent_ idea (and IMO the current behaviour is faulty). -- Kim F. Storm <storm@cua.dk> http://www.cua.dk ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: Changing of line format and undo 2006-07-02 21:19 ` Kim F. Storm @ 2006-07-03 15:05 ` Richard Stallman 2006-07-03 21:30 ` Lennart Borgman 0 siblings, 1 reply; 24+ messages in thread From: Richard Stallman @ 2006-07-03 15:05 UTC (permalink / raw) Cc: lennart.borgman.073, eliz, monnier, emacs-devel > E.g. I've changed my set-buffer-multibyte to do that (waiting for post-22 > to commit it). I think this is an _excellent_ idea (and IMO the current behaviour is faulty). Maybe this is a bug that should be fixed; can someone explain the problem to me? ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: Changing of line format and undo 2006-07-03 15:05 ` Richard Stallman @ 2006-07-03 21:30 ` Lennart Borgman 2006-07-04 12:55 ` Richard Stallman 0 siblings, 1 reply; 24+ messages in thread From: Lennart Borgman @ 2006-07-03 21:30 UTC (permalink / raw) Cc: eliz, emacs-devel, monnier, Kim F. Storm Richard Stallman wrote: > > E.g. I've changed my set-buffer-multibyte to do that (waiting for post-22 > > to commit it). > > I think this is an _excellent_ idea (and IMO the current behaviour is faulty). > > Maybe this is a bug that should be fixed; can someone explain the > problem to me? > I started the thread, see here: http://lists.gnu.org/archive/html/emacs-devel/2006-06/msg00512.html If you change line endings this change is not saved to undo. However it is a change that is written to the edited file. Therefore I think it should be saved to undo. It seemed quite hard to fix this but it seems like Stefan has a very good idea of how to do this. ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: Changing of line format and undo 2006-07-03 21:30 ` Lennart Borgman @ 2006-07-04 12:55 ` Richard Stallman 0 siblings, 0 replies; 24+ messages in thread From: Richard Stallman @ 2006-07-04 12:55 UTC (permalink / raw) Cc: eliz, emacs-devel, monnier, storm If you change line endings this change is not saved to undo. However it is a change that is written to the edited file. Therefore I think it should be saved to undo. It seemed quite hard to fix this but it seems like Stefan has a very good idea of how to do this. Let's try that change, and see how it works out. ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: Changing of line format and undo 2006-07-02 15:39 ` Stefan Monnier 2006-07-02 21:19 ` Kim F. Storm @ 2006-08-21 14:27 ` Kim F. Storm 2006-08-21 16:17 ` Stefan Monnier 2006-08-22 7:42 ` Richard Stallman 1 sibling, 2 replies; 24+ messages in thread From: Kim F. Storm @ 2006-08-21 14:27 UTC (permalink / raw) Cc: Lennart Borgman, Eli Zaretskii, emacs-devel In case you forgot: RMS agreed to install the following change in emacs 22. Stefan Monnier <monnier@iro.umontreal.ca> writes: >> Thanks, you are right ;-) Now I see what Eli meant. I still believe that >> everything that can result in changing an external file should go into the >> undo history but this is really a corner case of course. > > You can change C-x RET f to do what you want by having it add (manually in > elisp) an `apply' entry to buufer-undo-list. > > E.g. I've changed my set-buffer-multibyte to do that (waiting for post-22 > to commit it). > > > Stefan > > > --- orig/src/buffer.c > +++ mod/src/buffer.c > @@ -2112,10 +2100,11 @@ > { > struct Lisp_Marker *tail, *markers; > struct buffer *other; > - int undo_enabled_p = !EQ (current_buffer->undo_list, Qt); > int begv, zv; > int narrowed = (BEG != BEGV || Z != ZV); > int modified_p = !NILP (Fbuffer_modified_p (Qnil)); > + Lisp_Object old_undo = current_buffer->undo_list; > + struct gcpro gcpro1; > > if (current_buffer->base_buffer) > error ("Cannot do `set-buffer-multibyte' on an indirect buffer"); > @@ -2124,10 +2113,11 @@ > if (NILP (flag) == NILP (current_buffer->enable_multibyte_characters)) > return flag; > > - /* It would be better to update the list, > - but this is good enough for now. */ > - if (undo_enabled_p) > - current_buffer->undo_list = Qt; > + GCPRO1 (old_undo); > + > + /* Don't record these buffer changes. We will put a special undo entry > + instead. */ > + current_buffer->undo_list = Qt; > > /* If the cached position is for this buffer, clear it out. */ > clear_charpos_cache (current_buffer); > @@ -2327,8 +2317,18 @@ > set_intervals_multibyte (1); > } > > - if (undo_enabled_p) > - current_buffer->undo_list = Qnil; > + if (!EQ (old_undo, Qt)) > + { > + /* Represent all the above changes by a special undo entry. */ > + extern Lisp_Object Qapply; > + Lisp_Object args[3]; > + args[0] = Qapply; > + args[1] = Qset_buffer_multibyte; > + args[2] = NILP (flag) ? Qt : Qnil; > + current_buffer->undo_list = Fcons (Flist (3, args), old_undo); > + } > + > + UNGCPRO; > > /* Changing the multibyteness of a buffer means that all windows > showing that buffer must be updated thoroughly. */ -- Kim F. Storm <storm@cua.dk> http://www.cua.dk ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: Changing of line format and undo 2006-08-21 14:27 ` Kim F. Storm @ 2006-08-21 16:17 ` Stefan Monnier 2006-08-22 7:42 ` Richard Stallman 1 sibling, 0 replies; 24+ messages in thread From: Stefan Monnier @ 2006-08-21 16:17 UTC (permalink / raw) Cc: Lennart Borgman, Eli Zaretskii, emacs-devel > RMS agreed to install the following change in Emacs 22. Oh, did he? I must have missed it. If you want to install it, then please go ahead (I'm on the road right now). Otherwise I'll get to it later. Thanks, Stefan > Stefan Monnier <monnier@iro.umontreal.ca> writes: >>> Thanks, you are right ;-) Now I see what Eli meant. I still believe that >>> everything that can result in changing an external file should go into the >>> undo history but this is really a corner case of course. >> >> You can change C-x RET f to do what you want by having it add (manually in >> elisp) an `apply' entry to buufer-undo-list. >> >> E.g. I've changed my set-buffer-multibyte to do that (waiting for post-22 >> to commit it). >> >> >> Stefan >> >> >> --- orig/src/buffer.c >> +++ mod/src/buffer.c >> @@ -2112,10 +2100,11 @@ >> { >> struct Lisp_Marker *tail, *markers; >> struct buffer *other; >> - int undo_enabled_p = !EQ (current_buffer->undo_list, Qt); >> int begv, zv; >> int narrowed = (BEG != BEGV || Z != ZV); >> int modified_p = !NILP (Fbuffer_modified_p (Qnil)); >> + Lisp_Object old_undo = current_buffer->undo_list; >> + struct gcpro gcpro1; >> >> if (current_buffer->base_buffer) >> error ("Cannot do `set-buffer-multibyte' on an indirect buffer"); >> @@ -2124,10 +2113,11 @@ >> if (NILP (flag) == NILP (current_buffer->enable_multibyte_characters)) >> return flag; >> >> - /* It would be better to update the list, >> - but this is good enough for now. */ >> - if (undo_enabled_p) >> - current_buffer->undo_list = Qt; >> + GCPRO1 (old_undo); >> + >> + /* Don't record these buffer changes. We will put a special undo entry >> + instead. */ >> + current_buffer->undo_list = Qt; >> >> /* If the cached position is for this buffer, clear it out. */ >> clear_charpos_cache (current_buffer); >> @@ -2327,8 +2317,18 @@ >> set_intervals_multibyte (1); >> } >> >> - if (undo_enabled_p) >> - current_buffer->undo_list = Qnil; >> + if (!EQ (old_undo, Qt)) >> + { >> + /* Represent all the above changes by a special undo entry. */ >> + extern Lisp_Object Qapply; >> + Lisp_Object args[3]; >> + args[0] = Qapply; >> + args[1] = Qset_buffer_multibyte; >> + args[2] = NILP (flag) ? Qt : Qnil; >> + current_buffer->undo_list = Fcons (Flist (3, args), old_undo); >> + } >> + >> + UNGCPRO; >> >> /* Changing the multibyteness of a buffer means that all windows >> showing that buffer must be updated thoroughly. */ > -- > Kim F. Storm <storm@cua.dk> http://www.cua.dk ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: Changing of line format and undo 2006-08-21 14:27 ` Kim F. Storm 2006-08-21 16:17 ` Stefan Monnier @ 2006-08-22 7:42 ` Richard Stallman 2006-08-22 9:26 ` Kim F. Storm 1 sibling, 1 reply; 24+ messages in thread From: Richard Stallman @ 2006-08-22 7:42 UTC (permalink / raw) Cc: lennart.borgman.073, eliz, monnier, emacs-devel RMS agreed to install the following change in emacs 22. Would you please install that change? ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: Changing of line format and undo 2006-08-22 7:42 ` Richard Stallman @ 2006-08-22 9:26 ` Kim F. Storm 2006-08-22 9:39 ` Kim F. Storm 0 siblings, 1 reply; 24+ messages in thread From: Kim F. Storm @ 2006-08-22 9:26 UTC (permalink / raw) Cc: lennart.borgman.073, eliz, monnier, emacs-devel Richard Stallman <rms@gnu.org> writes: > RMS agreed to install the following change in emacs 22. > > Would you please install that change? Done. But I had to replace undefined symbol Qset_buffer_multibyte by intern ("set-buffer-multibyte") Stefan, is that ok? -- Kim F. Storm <storm@cua.dk> http://www.cua.dk ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: Changing of line format and undo 2006-08-22 9:26 ` Kim F. Storm @ 2006-08-22 9:39 ` Kim F. Storm 2006-08-23 4:06 ` Richard Stallman 0 siblings, 1 reply; 24+ messages in thread From: Kim F. Storm @ 2006-08-22 9:39 UTC (permalink / raw) Cc: lennart.borgman.073, eliz, monnier, emacs-devel storm@cua.dk (Kim F. Storm) writes: > Richard Stallman <rms@gnu.org> writes: > >> RMS agreed to install the following change in emacs 22. >> >> Would you please install that change? > > Done. BTW, this change does not fix the original problem of recording undo information for changing line endings; it only addresses undo for multibyte. -- Kim F. Storm <storm@cua.dk> http://www.cua.dk ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: Changing of line format and undo 2006-08-22 9:39 ` Kim F. Storm @ 2006-08-23 4:06 ` Richard Stallman 2006-08-23 4:11 ` Lennart Borgman 0 siblings, 1 reply; 24+ messages in thread From: Richard Stallman @ 2006-08-23 4:06 UTC (permalink / raw) Cc: lennart.borgman.073, eliz, monnier, emacs-devel BTW, this change does not fix the original problem of recording undo information for changing line endings; it only addresses undo for multibyte. set-buffer-multibyte changes the buffer contents, so it ought to be undoable. Changing buffer-file-coding-system does not change the buffer contents, so I am not sure it ought to be undoable. It only affects how the buffer will be saved. set-visited-file-name also affects how the buffer will be saved, and we did not make it undoable. I am not convinced it is correct to try to make undo cover changes in how the buffer would be saved. ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: Changing of line format and undo 2006-08-23 4:06 ` Richard Stallman @ 2006-08-23 4:11 ` Lennart Borgman 2006-08-28 9:52 ` Richard Stallman 0 siblings, 1 reply; 24+ messages in thread From: Lennart Borgman @ 2006-08-23 4:11 UTC (permalink / raw) Cc: eliz, emacs-devel, monnier, Kim F. Storm Richard Stallman wrote: > I am not convinced it is correct to try to make undo cover changes > in how the buffer would be saved. > See it from the users point of view. Is it not desireable then to be able to undo all changes that will be saved to disk? Or are there any logical problems regarding this (since undo is buffer specific) that can cause problems later? I can not find any. Saving is buffer specific. ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: Changing of line format and undo 2006-08-23 4:11 ` Lennart Borgman @ 2006-08-28 9:52 ` Richard Stallman 0 siblings, 0 replies; 24+ messages in thread From: Richard Stallman @ 2006-08-28 9:52 UTC (permalink / raw) Cc: eliz, emacs-devel, monnier, storm > I am not convinced it is correct to try to make undo cover changes > in how the buffer would be saved. > See it from the users point of view. Is it not desireable then to be able to undo all changes that will be saved to disk? The argument seems powerful, but it would seem to apply just as strongly to set-visited-file-name. Do you think set-visited-file-name should be an undoable buffer change? ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: Changing of line format and undo 2006-06-21 15:12 ` Lennart Borgman 2006-06-21 15:14 ` David Kastrup @ 2006-06-21 21:54 ` Stuart D. Herring 2006-06-21 22:45 ` Lennart Borgman 2006-06-22 3:24 ` Eli Zaretskii 1 sibling, 2 replies; 24+ messages in thread From: Stuart D. Herring @ 2006-06-21 21:54 UTC (permalink / raw) Cc: emacs-devel Lennart Borgman wrote: > Eli Zaretskii wrote: >> If you mean "C-x RET f", then it doesn't really change anything. It >> just sets a buffer-local variable to some value. So there's nothing >> to undo. >> > That is an internal Emacs perpective. From a users point of view there > is truly a change. If you for example change the line endings the file > will be saved with this new line endings. Doing (add-hook 'local-write-file-functions 'erase-buffer) also would change how files were written out. Changing how Emacs works (via variables like the coding systems, hooks, or outright rewriting functions) is not within the scope of the undo mechanism, which is for modifications to text, not Emacs. > BTW should not changes of this kind also set the buffer to modified? If and only if they should be undoable (which they shouldn't, IMHO). It would be very odd to have a buffer unmodified before and after an undo, or to be marked modified with no way (via undo) to remove that marking. Davis -- This product is sold by volume, not by mass. If it appears too dense or too sparse, it is because mass-energy conversion has occurred during shipping. ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: Changing of line format and undo 2006-06-21 21:54 ` Stuart D. Herring @ 2006-06-21 22:45 ` Lennart Borgman 2006-06-22 3:24 ` Eli Zaretskii 1 sibling, 0 replies; 24+ messages in thread From: Lennart Borgman @ 2006-06-21 22:45 UTC (permalink / raw) Cc: emacs-devel Stuart D. Herring wrote: > Lennart Borgman wrote: > >> Eli Zaretskii wrote: >> >>> If you mean "C-x RET f", then it doesn't really change anything. It >>> just sets a buffer-local variable to some value. So there's nothing >>> to undo. >>> >>> >> That is an internal Emacs perpective. From a users point of view there >> is truly a change. If you for example change the line endings the file >> will be saved with this new line endings. >> > > Doing > > (add-hook 'local-write-file-functions 'erase-buffer) > > also would change how files were written out. Changing how Emacs works > (via variables like the coding systems, hooks, or outright rewriting > functions) is not within the scope of the undo mechanism, which is for > modifications to text, not Emacs. > I would say that the line endings is a border case. I would expect most users to look like it like changing the text (even if that is not what is done internally). However I realize it is a lot of work to fix this border case and it is perhaps not worth the trouble. > >> BTW should not changes of this kind also set the buffer to modified? >> > > If and only if they should be undoable (which they shouldn't, IMHO). It > would be very odd to have a buffer unmodified before and after an undo, or > to be marked modified with no way (via undo) to remove that marking. > My mistake. As David pointed out the buffer is marked modified if you change the line endings in a supported way. It is natural to make the buffer modified since perhaps it will not get saved otherwise. Unfortunately this change is not undoable and that is a bit confusing sometimes. ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: Changing of line format and undo 2006-06-21 21:54 ` Stuart D. Herring 2006-06-21 22:45 ` Lennart Borgman @ 2006-06-22 3:24 ` Eli Zaretskii 1 sibling, 0 replies; 24+ messages in thread From: Eli Zaretskii @ 2006-06-22 3:24 UTC (permalink / raw) Cc: lennart.borgman.073, emacs-devel > Date: Wed, 21 Jun 2006 14:54:07 -0700 (PDT) > From: "Stuart D. Herring" <herring@lanl.gov> > Cc: emacs-devel@gnu.org > > > BTW should not changes of this kind also set the buffer to modified? > > If and only if they should be undoable ??? Why? > It would be very odd to have a buffer unmodified before and after > an undo, or to be marked modified with no way (via undo) to remove > that marking. It is very easy to ``undo'' the buffer-modified flag: type "M-~". ^ permalink raw reply [flat|nested] 24+ messages in thread
end of thread, other threads:[~2006-08-28 9:52 UTC | newest] Thread overview: 24+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2006-06-20 22:15 Changing of line format and undo Lennart Borgman 2006-06-21 3:23 ` Eli Zaretskii 2006-06-21 15:12 ` Lennart Borgman 2006-06-21 15:14 ` David Kastrup 2006-06-21 15:50 ` Lennart Borgman 2006-06-21 16:31 ` David Kastrup 2006-06-21 16:47 ` Lennart Borgman 2006-06-21 17:31 ` Eli Zaretskii 2006-07-02 15:39 ` Stefan Monnier 2006-07-02 21:19 ` Kim F. Storm 2006-07-03 15:05 ` Richard Stallman 2006-07-03 21:30 ` Lennart Borgman 2006-07-04 12:55 ` Richard Stallman 2006-08-21 14:27 ` Kim F. Storm 2006-08-21 16:17 ` Stefan Monnier 2006-08-22 7:42 ` Richard Stallman 2006-08-22 9:26 ` Kim F. Storm 2006-08-22 9:39 ` Kim F. Storm 2006-08-23 4:06 ` Richard Stallman 2006-08-23 4:11 ` Lennart Borgman 2006-08-28 9:52 ` Richard Stallman 2006-06-21 21:54 ` Stuart D. Herring 2006-06-21 22:45 ` Lennart Borgman 2006-06-22 3:24 ` Eli Zaretskii
Code repositories for project(s) associated with this public inbox https://git.savannah.gnu.org/cgit/emacs.git This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).