From: Dmitry Gutov Date: Sat, 5 Oct 2013 02:26:39 +0000 (+0300) Subject: * lisp/progmodes/ruby-mode.el (ruby-mode): Add `ruby-mode-set-encoding' X-Git-Tag: emacs-24.3.90~173^2^2~42^2~45^2~387^2~1383 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=0106e5b3990b556bf7641fa646a4b049bf543297;p=emacs.git * lisp/progmodes/ruby-mode.el (ruby-mode): Add `ruby-mode-set-encoding' to `after-save-hook' instead of `before-save-hook', because then we know exactly what encoding was used to write the file. (ruby-mode-set-encoding): Use `last-coding-system-used' instead of guessing. Call `basic-save-buffer-1' after modifying the buffer. --- diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 427c7394bff..a31ceec74a8 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,11 @@ +2013-10-05 Dmitry Gutov + + * progmodes/ruby-mode.el (ruby-mode): Add `ruby-mode-set-encoding' + to `after-save-hook' instead of `before-save-hook', because then + we know exactly what encoding was used to write the file. + (ruby-mode-set-encoding): Use `last-coding-system-used' instead of + guessing. Call `basic-save-buffer-1' after modifying the buffer. + 2013-10-04 Xue Fuqiao * vc/vc-svn.el (vc-svn-find-admin-dir): diff --git a/lisp/progmodes/ruby-mode.el b/lisp/progmodes/ruby-mode.el index 95206c15390..8abf8fedefb 100644 --- a/lisp/progmodes/ruby-mode.el +++ b/lisp/progmodes/ruby-mode.el @@ -450,19 +450,13 @@ Also ignores spaces after parenthesis when 'space." (when (re-search-forward "[^\0-\177]" nil t) (goto-char (point-min)) (let ((coding-system - (or coding-system-for-write - buffer-file-coding-system))) - (if coding-system - (setq coding-system - (or (coding-system-get coding-system 'mime-charset) - (coding-system-change-eol-conversion coding-system nil)))) + (or (coding-system-get last-coding-system-used 'mime-charset) + (coding-system-change-eol-conversion ast-coding-system-used + nil)))) (setq coding-system - (if coding-system - (symbol-name - (or (and ruby-use-encoding-map - (cdr (assq coding-system ruby-encoding-map))) - coding-system)) - "ascii-8bit")) + (symbol-name (or (and ruby-use-encoding-map + (cdr (assq coding-system ruby-encoding-map))) + coding-system))) (if (looking-at "^#!") (beginning-of-line 2)) (cond ((looking-at "\\s *#.*-\*-\\s *\\(en\\)?coding\\s *:\\s *\\([-a-z0-9_]*\\)\\s *\\(;\\|-\*-\\)") (unless (string= (match-string 2) coding-system) @@ -476,7 +470,9 @@ Also ignores spaces after parenthesis when 'space." (insert coding-system))) ((looking-at "\\s *#.*coding\\s *[:=]")) (t (when ruby-insert-encoding-magic-comment - (insert "# -*- coding: " coding-system " -*-\n")))))))) + (insert "# -*- coding: " coding-system " -*-\n")))) + (when (buffer-modified-p) + (basic-save-buffer-1)))))) (defun ruby-current-indentation () "Return the indentation level of current line." @@ -1934,11 +1930,7 @@ The variable `ruby-indent-level' controls the amount of indentation. (set (make-local-variable 'end-of-defun-function) 'ruby-end-of-defun) - (add-hook - (cond ((boundp 'before-save-hook) 'before-save-hook) - ((boundp 'write-contents-functions) 'write-contents-functions) - ((boundp 'write-contents-hooks) 'write-contents-hooks)) - 'ruby-mode-set-encoding nil 'local) + (add-hook 'after-save-hook 'ruby-mode-set-encoding nil 'local) (set (make-local-variable 'electric-indent-chars) (append '(?\{ ?\}) electric-indent-chars))