* lisp/progmodes/ruby-mode.el (ruby-mode): Add `ruby-mode-set-encoding'
authorDmitry Gutov <dgutov@yandex.ru>
Sun, 13 Oct 2013 21:35:31 +0000 (00:35 +0300)
committerDmitry Gutov <dgutov@yandex.ru>
Sun, 13 Oct 2013 21:35:31 +0000 (00:35 +0300)
to `after-save-hook' instead of `before-save-hook'.
(ruby-mode-set-encoding): Use the value of coding system used to
write the file.  Call `basic-save-buffer-1' after modifying the
buffer.

lisp/ChangeLog
lisp/progmodes/ruby-mode.el

index e3f3215..d7eedf1 100644 (file)
@@ -1,3 +1,11 @@
+2013-10-13  Dmitry Gutov  <dgutov@yandex.ru>
+
+       * progmodes/ruby-mode.el (ruby-mode): Add `ruby-mode-set-encoding'
+       to `after-save-hook' instead of `before-save-hook'.
+       (ruby-mode-set-encoding): Use the value of coding system used to
+       write the file.  Call `basic-save-buffer-1' after modifying the
+       buffer.
+
 2013-10-13  Alan Mackenzie  <acm@muc.de>
 
        Fix indentation/fontification of Java enum with
index dfc93a2..a06121e 100644 (file)
@@ -529,7 +529,7 @@ 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
+             (or save-buffer-coding-system
                  buffer-file-coding-system)))
         (if coding-system
             (setq coding-system
@@ -555,7 +555,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."
@@ -2017,11 +2019,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))