diff options
author | Akinori MUSHA <knu@iDaemons.org> | 2013-10-14 03:23:29 +0300 |
---|---|---|
committer | Dmitry Gutov <dgutov@yandex.ru> | 2013-10-14 03:23:29 +0300 |
commit | e70181b829d01a7a674c099978688347427a5f33 (patch) | |
tree | d766f743d6b64a38d9eb1725c24fe9ecbdd0209c | |
parent | a5d38e349aab01f93468fe950e6f4ecbd0fee1e0 (diff) | |
download | emacs-e70181b829d01a7a674c099978688347427a5f33.tar.gz |
* progmodes/ruby-mode.el (ruby-encoding-map): Add a mapping from
`japanese-cp932' to `cp932' to fix the problem where saving a
source file written in Shift_JIS twice would end up having
`coding: japanese-cp932' which Ruby could not recognize.
(ruby-mode-set-encoding): Add support for encodings mapped to nil
in `ruby-encoding-map'.
(ruby-encoding-map): Map `us-ascii' to nil by default, meaning it
doesn't need to be explicitly declared in magic comment.
(ruby-encoding-map): Add type declaration for better customize UI.
-rw-r--r-- | lisp/ChangeLog | 14 | ||||
-rw-r--r-- | lisp/progmodes/ruby-mode.el | 51 |
2 files changed, 43 insertions, 22 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 1f74b3b2d1f..9410366f0c2 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,15 @@ +2013-10-14 Akinori MUSHA <knu@iDaemons.org> + + * progmodes/ruby-mode.el (ruby-encoding-map): Add a mapping from + `japanese-cp932' to `cp932' to fix the problem where saving a + source file written in Shift_JIS twice would end up having + `coding: japanese-cp932' which Ruby could not recognize. + (ruby-mode-set-encoding): Add support for encodings mapped to nil + in `ruby-encoding-map'. + (ruby-encoding-map): Map `us-ascii' to nil by default, meaning it + doesn't need to be explicitly declared in magic comment. + (ruby-encoding-map): Add type declaration for better customize UI. + 2013-10-13 Glenn Morris <rgm@gnu.org> * progmodes/sh-script.el (sh-mark-line, sh-learn-buffer-indent): @@ -54,7 +66,7 @@ 2013-10-12 Stefan Monnier <monnier@iro.umontreal.ca> * progmodes/ruby-mode.el (ruby-smie-grammar): Add rule for paren-free - method calls (bug#bug#15594). + method calls (bug#15594). (ruby-smie--args-separator-p): New function. (ruby-smie--forward-token, ruby-smie--backward-token): Use it to recognize paren-free method calls. diff --git a/lisp/progmodes/ruby-mode.el b/lisp/progmodes/ruby-mode.el index a06121ed639..3441c35de35 100644 --- a/lisp/progmodes/ruby-mode.el +++ b/lisp/progmodes/ruby-mode.el @@ -217,8 +217,15 @@ Also ignores spaces after parenthesis when 'space." "Default deep indent style." :options '(t nil space) :group 'ruby) -(defcustom ruby-encoding-map '((shift_jis . cp932) (shift-jis . cp932)) - "Alist to map encoding name from Emacs to Ruby." +(defcustom ruby-encoding-map + '((us-ascii . nil) ;; Do not put coding: us-ascii + (shift-jis . cp932) ;; Emacs charset name of Shift_JIS + (shift_jis . cp932) ;; MIME charset name of Shift_JIS + (japanese-cp932 . cp932)) ;; Emacs charset name of CP932 + "Alist to map encoding name from Emacs to Ruby. +Associating an encoding name with nil means it needs not be +explicitly declared in magic comment." + :type '(repeat (cons (symbol :tag "From") (symbol :tag "To"))) :group 'ruby) (defcustom ruby-insert-encoding-magic-comment t @@ -538,26 +545,28 @@ Also ignores spaces after parenthesis when 'space." (setq coding-system (if coding-system (symbol-name - (or (and ruby-use-encoding-map - (cdr (assq coding-system ruby-encoding-map))) - coding-system)) + (if ruby-use-encoding-map + (let ((elt (assq coding-system ruby-encoding-map))) + (if elt (cdr elt) coding-system)) + 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) - (goto-char (match-beginning 2)) - (delete-region (point) (match-end 2)) - (and (looking-at "-\*-") - (let ((n (skip-chars-backward " "))) - (cond ((= n 0) (insert " ") (backward-char)) - ((= n -1) (insert " ")) - ((forward-char))))) - (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)))))) + (when 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) + (goto-char (match-beginning 2)) + (delete-region (point) (match-end 2)) + (and (looking-at "-\*-") + (let ((n (skip-chars-backward " "))) + (cond ((= n 0) (insert " ") (backward-char)) + ((= n -1) (insert " ")) + ((forward-char))))) + (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))))))) (defun ruby-current-indentation () "Return the indentation level of current line." |