* Re: [Emacs-diffs] trunk r114533: Revert 114527 [not found] <E1VSVZF-0008Rg-4r@vcs.savannah.gnu.org> @ 2013-10-05 18:43 ` Stefan Monnier 2013-10-05 18:52 ` Dmitry Gutov 0 siblings, 1 reply; 8+ messages in thread From: Stefan Monnier @ 2013-10-05 18:43 UTC (permalink / raw) To: Dmitry Gutov; +Cc: emacs-devel > `last-coding-system-used' is unreliable: it can be modified by other > functions in `after-save-hook'. Indeed. Why not use buffer-file-coding-system? Stefan ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [Emacs-diffs] trunk r114533: Revert 114527 2013-10-05 18:43 ` [Emacs-diffs] trunk r114533: Revert 114527 Stefan Monnier @ 2013-10-05 18:52 ` Dmitry Gutov 2013-10-05 19:02 ` Eli Zaretskii 0 siblings, 1 reply; 8+ messages in thread From: Dmitry Gutov @ 2013-10-05 18:52 UTC (permalink / raw) To: Stefan Monnier; +Cc: emacs-devel On 05.10.2013 21:43, Stefan Monnier wrote: >> `last-coding-system-used' is unreliable: it can be modified by other >> functions in `after-save-hook'. > > Indeed. Why not use buffer-file-coding-system? Because its value doesn't change (from the initial `undecided-unix') even after the buffer is saved with new, non-ASCII characters. Should this be considered a bug? So far I've decided to use `select-safe-coding-system-function', but it just adds to the mess: === modified file 'lisp/progmodes/ruby-mode.el' --- lisp/progmodes/ruby-mode.el 2013-10-05 17:21:22 +0000 +++ lisp/progmodes/ruby-mode.el 2013-10-05 18:49:48 +0000 @@ -452,6 +452,9 @@ (let ((coding-system (or coding-system-for-write buffer-file-coding-system))) + (when (string-match-p "\\`undecided-" (symbol-name coding-system)) + (setq coding-system (funcall select-safe-coding-system-function + (point-min) (point-max) nil #'identity))) (if coding-system (setq coding-system (or (coding-system-get coding-system 'mime-charset) ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [Emacs-diffs] trunk r114533: Revert 114527 2013-10-05 18:52 ` Dmitry Gutov @ 2013-10-05 19:02 ` Eli Zaretskii 2013-10-05 19:16 ` Dmitry Gutov 0 siblings, 1 reply; 8+ messages in thread From: Eli Zaretskii @ 2013-10-05 19:02 UTC (permalink / raw) To: Dmitry Gutov; +Cc: monnier, emacs-devel > Date: Sat, 05 Oct 2013 21:52:14 +0300 > From: Dmitry Gutov <dgutov@yandex.ru> > Cc: emacs-devel@gnu.org > > On 05.10.2013 21:43, Stefan Monnier wrote: > >> `last-coding-system-used' is unreliable: it can be modified by other > >> functions in `after-save-hook'. > > > > Indeed. Why not use buffer-file-coding-system? > > Because its value doesn't change (from the initial `undecided-unix') > even after the buffer is saved with new, non-ASCII characters. Didn't Emacs asked you to select an encoding when you saved? Also, what were the non-ASCII characters, and what is your default-buffer-file-coding-system? > So far I've decided to use `select-safe-coding-system-function', but it > just adds to the mess: Please describe the issue from the beginning, I cannot find it in the mailing list archives. It's hard to judge the solution without knowing the details of the problem. ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [Emacs-diffs] trunk r114533: Revert 114527 2013-10-05 19:02 ` Eli Zaretskii @ 2013-10-05 19:16 ` Dmitry Gutov 2013-10-05 19:38 ` Eli Zaretskii 0 siblings, 1 reply; 8+ messages in thread From: Dmitry Gutov @ 2013-10-05 19:16 UTC (permalink / raw) To: Eli Zaretskii; +Cc: monnier, emacs-devel On 05.10.2013 22:02, Eli Zaretskii wrote: >> Because its value doesn't change (from the initial `undecided-unix') >> even after the buffer is saved with new, non-ASCII characters. > > Didn't Emacs asked you to select an encoding when you saved? Nope, it saves the file correctly automatically. > Also, what were the non-ASCII characters, Some cyrillic characters, for example: фывапролд > and what is your > default-buffer-file-coding-system? utf-8-unix >> So far I've decided to use `select-safe-coding-system-function', but it >> just adds to the mess: > > Please describe the issue from the beginning, I cannot find it in the > mailing list archives. It's hard to judge the solution without > knowing the details of the problem. Sorry, at first I thought I had the solution (with last-coding-system-used), so I didn't start the discussion. Scenario: 1. Open an .rb file, written in ASCII (buffer-file-coding-system will be undecided-unix). 2. Switch to the Russian layout (usually that happens by accident, but sometimes even on purpose, according to my colleagues), type some text in Russian, press `C-x C-s'. 3. The file is saved fine, but buffer-file-coding-system is still undecided-unix. And `ruby-mode-set-encoding', from before-save-hook, has inserted `# coding: undecided' at the beginning of the file. If I kill the buffer, then open the file again, buffer-file-coding-system is now utf-8-unix. If I make a modification and save the buffer now, the first line is changed to the correct `# -*- coding: utf-8 -*-'. ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [Emacs-diffs] trunk r114533: Revert 114527 2013-10-05 19:16 ` Dmitry Gutov @ 2013-10-05 19:38 ` Eli Zaretskii 2013-10-05 20:03 ` Dmitry Gutov 0 siblings, 1 reply; 8+ messages in thread From: Eli Zaretskii @ 2013-10-05 19:38 UTC (permalink / raw) To: Dmitry Gutov; +Cc: monnier, emacs-devel > Date: Sat, 05 Oct 2013 22:16:36 +0300 > From: Dmitry Gutov <dgutov@yandex.ru> > CC: monnier@iro.umontreal.ca, emacs-devel@gnu.org > > If I kill the buffer, then open the file again, > buffer-file-coding-system is now utf-8-unix. If I make a modification > and save the buffer now, the first line is changed to the correct `# -*- > coding: utf-8 -*-'. "Changed"? You mean, there was an existing coding: cookie in the file before you typed the cyrillic characters? If so, what did that original coding cookie say? Also, do you see the same behavior with Emacs 24.3? I think it is OK to silently save the buffer with UTF-8, if that's your default, but the value of buffer-file-coding-system should in that case change to UTF-8. ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [Emacs-diffs] trunk r114533: Revert 114527 2013-10-05 19:38 ` Eli Zaretskii @ 2013-10-05 20:03 ` Dmitry Gutov 2013-10-06 2:40 ` Eli Zaretskii 0 siblings, 1 reply; 8+ messages in thread From: Dmitry Gutov @ 2013-10-05 20:03 UTC (permalink / raw) To: Eli Zaretskii; +Cc: monnier, emacs-devel On 05.10.2013 22:38, Eli Zaretskii wrote: >> Date: Sat, 05 Oct 2013 22:16:36 +0300 >> From: Dmitry Gutov <dgutov@yandex.ru> >> CC: monnier@iro.umontreal.ca, emacs-devel@gnu.org >> >> If I kill the buffer, then open the file again, >> buffer-file-coding-system is now utf-8-unix. If I make a modification >> and save the buffer now, the first line is changed to the correct `# -*- >> coding: utf-8 -*-'. > > "Changed"? You mean, there was an existing coding: cookie in the file > before you typed the cyrillic characters? If so, what did that > original coding cookie say? No, that's a continuation of the scenario. That's what happens if I kill the modified buffer with the newly-added `# coding: undecided`, and then reopen it. The presence of the `# coding' line is not particularly important. The fact that the file has some cyrillic characters in it, however, makes the buffer open with buffer-file-coding-system `utf-8-unix'. > Also, do you see the same behavior with Emacs 24.3? Yes and no. The `ruby-mode-set-encoding' bug is there, because it uses `before-save-hook', but `buffer-file-coding-system' does change after the buffer is saved, in accordance with your preference below. So I don't need to kill and reopen the buffer. Just making another change and saving sets `coding:` comment to the right value (as long as the second change leaves at least some non-ASCII characters in the buffer). > I think it is OK to silently save the buffer with UTF-8, if that's > your default, but the value of buffer-file-coding-system should in > that case change to UTF-8. Should I file a bug, or..? ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [Emacs-diffs] trunk r114533: Revert 114527 2013-10-05 20:03 ` Dmitry Gutov @ 2013-10-06 2:40 ` Eli Zaretskii 2013-10-06 2:44 ` Dmitry Gutov 0 siblings, 1 reply; 8+ messages in thread From: Eli Zaretskii @ 2013-10-06 2:40 UTC (permalink / raw) To: Dmitry Gutov; +Cc: monnier, emacs-devel > Date: Sat, 05 Oct 2013 23:03:14 +0300 > From: Dmitry Gutov <dgutov@yandex.ru> > CC: monnier@iro.umontreal.ca, emacs-devel@gnu.org > > The presence of the `# coding' line is not particularly important. You are wrong, the presence of the cookie changes a lot how encoding and decoding works. So it is very important. > Should I file a bug, or..? Yes, but please include a test case starting with "emacs -Q" and a file that initially has only ASCII characters, and no 'coding' cookies. Also, please keep the ruby mode out of the scenario (unless then the problem goes away). Thanks. ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [Emacs-diffs] trunk r114533: Revert 114527 2013-10-06 2:40 ` Eli Zaretskii @ 2013-10-06 2:44 ` Dmitry Gutov 0 siblings, 0 replies; 8+ messages in thread From: Dmitry Gutov @ 2013-10-06 2:44 UTC (permalink / raw) To: Eli Zaretskii; +Cc: emacs-devel On 06.10.2013 05:40, Eli Zaretskii wrote: >> Date: Sat, 05 Oct 2013 23:03:14 +0300 >> From: Dmitry Gutov <dgutov@yandex.ru> >> CC: monnier@iro.umontreal.ca, emacs-devel@gnu.org >> >> The presence of the `# coding' line is not particularly important. > > You are wrong, the presence of the cookie changes a lot how encoding > and decoding works. So it is very important. I mean, in this case. `# coding: undecided' doesn't change anything if the file contains actual non-ASCII characters. >> Should I file a bug, or..? > > Yes, but please include a test case starting with "emacs -Q" and a > file that initially has only ASCII characters, and no 'coding' > cookies. Also, please keep the ruby mode out of the scenario (unless > then the problem goes away). Here you go: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=15535#8 ^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2013-10-06 2:44 UTC | newest] Thread overview: 8+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- [not found] <E1VSVZF-0008Rg-4r@vcs.savannah.gnu.org> 2013-10-05 18:43 ` [Emacs-diffs] trunk r114533: Revert 114527 Stefan Monnier 2013-10-05 18:52 ` Dmitry Gutov 2013-10-05 19:02 ` Eli Zaretskii 2013-10-05 19:16 ` Dmitry Gutov 2013-10-05 19:38 ` Eli Zaretskii 2013-10-05 20:03 ` Dmitry Gutov 2013-10-06 2:40 ` Eli Zaretskii 2013-10-06 2:44 ` Dmitry Gutov
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.