summaryrefslogtreecommitdiff
path: root/lisp/progmodes/ruby-mode.el
diff options
context:
space:
mode:
Diffstat (limited to 'lisp/progmodes/ruby-mode.el')
-rw-r--r--lisp/progmodes/ruby-mode.el28
1 files changed, 18 insertions, 10 deletions
diff --git a/lisp/progmodes/ruby-mode.el b/lisp/progmodes/ruby-mode.el
index 8abf8fedefb..95206c15390 100644
--- a/lisp/progmodes/ruby-mode.el
+++ b/lisp/progmodes/ruby-mode.el
@@ -450,13 +450,19 @@ 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-get last-coding-system-used 'mime-charset)
- (coding-system-change-eol-conversion ast-coding-system-used
- nil))))
+ (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))))
(setq coding-system
- (symbol-name (or (and ruby-use-encoding-map
- (cdr (assq coding-system ruby-encoding-map)))
- coding-system)))
+ (if coding-system
+ (symbol-name
+ (or (and ruby-use-encoding-map
+ (cdr (assq coding-system ruby-encoding-map)))
+ coding-system))
+ "ascii-8bit"))
(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)
@@ -470,9 +476,7 @@ 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"))))
- (when (buffer-modified-p)
- (basic-save-buffer-1))))))
+ (insert "# -*- coding: " coding-system " -*-\n"))))))))
(defun ruby-current-indentation ()
"Return the indentation level of current line."
@@ -1930,7 +1934,11 @@ The variable `ruby-indent-level' controls the amount of indentation.
(set (make-local-variable 'end-of-defun-function)
'ruby-end-of-defun)
- (add-hook 'after-save-hook 'ruby-mode-set-encoding nil 'local)
+ (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)
(set (make-local-variable 'electric-indent-chars)
(append '(?\{ ?\}) electric-indent-chars))