diff options
Diffstat (limited to 'lisp/progmodes/ruby-mode.el')
-rw-r--r-- | lisp/progmodes/ruby-mode.el | 69 |
1 files changed, 27 insertions, 42 deletions
diff --git a/lisp/progmodes/ruby-mode.el b/lisp/progmodes/ruby-mode.el index 5da5577c108..fbc6e424eb1 100644 --- a/lisp/progmodes/ruby-mode.el +++ b/lisp/progmodes/ruby-mode.el @@ -4,7 +4,7 @@ ;; Authors: Yukihiro Matsumoto ;; Nobuyoshi Nakada -;; URL: http://www.emacswiki.org/cgi-bin/wiki/RubyMode +;; URL: https://www.emacswiki.org/cgi-bin/wiki/RubyMode ;; Created: Fri Feb 4 14:49:13 JST 1994 ;; Keywords: languages ruby ;; Version: 1.2 @@ -28,13 +28,6 @@ ;; Provides font-locking, indentation support, and navigation for Ruby code. ;; -;; If you're installing manually, you should add this to your .emacs -;; file after putting it on your load path: -;; -;; (autoload 'ruby-mode "ruby-mode" "Major mode for ruby files" t) -;; (add-to-list 'auto-mode-alist '("\\.rb\\'" . ruby-mode)) -;; (add-to-list 'interpreter-mode-alist '("ruby" . ruby-mode)) -;; ;; Still needs more docstrings; search below for TODO. ;;; Code: @@ -142,12 +135,11 @@ This should only be called after matching against `ruby-here-doc-beg-re'." "Regexp to match symbols.") (defvar ruby-use-smie t) +(make-obsolete-variable 'ruby-use-smie nil "28.1") (defvar ruby-mode-map (let ((map (make-sparse-keymap))) (unless ruby-use-smie - (define-key map (kbd "M-C-b") 'ruby-backward-sexp) - (define-key map (kbd "M-C-f") 'ruby-forward-sexp) (define-key map (kbd "M-C-q") 'ruby-indent-exp)) (when ruby-use-smie (define-key map (kbd "M-C-d") 'smie-down-list)) @@ -170,14 +162,8 @@ This should only be called after matching against `ruby-here-doc-beg-re'." "--" ["Toggle String Quotes" ruby-toggle-string-quotes t] "--" - ["Backward Sexp" ruby-backward-sexp - :visible (not ruby-use-smie)] - ["Backward Sexp" backward-sexp - :visible ruby-use-smie] - ["Forward Sexp" ruby-forward-sexp - :visible (not ruby-use-smie)] - ["Forward Sexp" forward-sexp - :visible ruby-use-smie] + ["Backward Sexp" backward-sexp t] + ["Forward Sexp" forward-sexp t] ["Indent Sexp" ruby-indent-exp :visible (not ruby-use-smie)] ["Indent Sexp" prog-indent-sexp @@ -741,10 +727,10 @@ It is used when `ruby-encoding-magic-comment-style' is set to `custom'." (defun ruby-mode-variables () "Set up initial buffer-local variables for Ruby mode." (setq indent-tabs-mode ruby-indent-tabs-mode) - (if ruby-use-smie - (smie-setup ruby-smie-grammar #'ruby-smie-rules - :forward-token #'ruby-smie--forward-token - :backward-token #'ruby-smie--backward-token) + (smie-setup ruby-smie-grammar #'ruby-smie-rules + :forward-token #'ruby-smie--forward-token + :backward-token #'ruby-smie--backward-token) + (unless ruby-use-smie (setq-local indent-line-function #'ruby-indent-line)) (setq-local comment-start "# ") (setq-local comment-end "") @@ -801,7 +787,7 @@ The style of the comment is controlled by `ruby-encoding-magic-comment-style'." (let ((coding-system (ruby--detect-encoding))) (when coding-system (if (looking-at "^#!") (beginning-of-line 2)) - (cond ((looking-at "\\s *#\\s *.*\\(en\\)?coding\\s *:\\s *\\([-a-z0-9_]*\\)") + (cond ((looking-at "\\s *#.*\\(en\\)?coding\\s *:\\s *\\([-a-z0-9_]*\\)") ;; update existing encoding comment if necessary (unless (string= (match-string 2) coding-system) (goto-char (match-beginning 2)) @@ -1060,22 +1046,12 @@ delimiter." (goto-char (point)) ) ((looking-at "[\\[{(]") - (let ((deep (ruby-deep-indent-paren-p (char-after)))) - (if (and deep (or (not (eq (char-after) ?\{)) (ruby-expr-beg))) - (progn - (and (eq deep 'space) (looking-at ".\\s +[^# \t\n]") - (setq pnt (1- (match-end 0)))) - (setq nest (cons (cons (char-after (point)) pnt) nest)) - (setq pcol (cons (cons pnt depth) pcol)) - (setq depth 0)) - (setq nest (cons (cons (char-after (point)) pnt) nest)) - (setq depth (1+ depth)))) + (setq nest (cons (cons (char-after (point)) pnt) nest)) + (setq depth (1+ depth)) (goto-char pnt) ) ((looking-at "[])}]") - (if (ruby-deep-indent-paren-p (matching-paren (char-after))) - (setq depth (cdr (car pcol)) pcol (cdr pcol)) - (setq depth (1- depth))) + (setq depth (1- depth)) (setq nest (cdr nest)) (goto-char pnt)) ((looking-at ruby-block-end-re) @@ -1388,7 +1364,8 @@ move forward." The defun begins at or after the point. This function is called by `end-of-defun'." (interactive "p") - (ruby-forward-sexp) + (with-suppressed-warnings ((obsolete ruby-forward-sexp)) + (ruby-forward-sexp)) (let (case-fold-search) (when (looking-back (concat "^\\s *" ruby-block-end-re) (line-beginning-position)) @@ -1477,11 +1454,14 @@ With ARG, move out of multiple blocks." (defun ruby-forward-sexp (&optional arg) "Move forward across one balanced expression (sexp). With ARG, do it many times. Negative ARG means move backward." + (declare (obsolete forward-sexp "28.1")) ;; TODO: Document body (interactive "p") (cond (ruby-use-smie (forward-sexp arg)) - ((and (numberp arg) (< arg 0)) (ruby-backward-sexp (- arg))) + ((and (numberp arg) (< arg 0)) + (with-suppressed-warnings ((obsolete ruby-backward-sexp)) + (ruby-backward-sexp (- arg)))) (t (let ((i (or arg 1))) (condition-case nil @@ -1525,11 +1505,14 @@ With ARG, do it many times. Negative ARG means move backward." (defun ruby-backward-sexp (&optional arg) "Move backward across one balanced expression (sexp). With ARG, do it many times. Negative ARG means move forward." + (declare (obsolete backward-sexp "28.1")) ;; TODO: Document body (interactive "p") (cond (ruby-use-smie (backward-sexp arg)) - ((and (numberp arg) (< arg 0)) (ruby-forward-sexp (- arg))) + ((and (numberp arg) (< arg 0)) + (with-suppressed-warnings ((obsolete ruby-forward-sexp)) + (ruby-forward-sexp (- arg)))) (t (let ((i (or arg 1))) (condition-case nil @@ -1681,7 +1664,8 @@ See `add-log-current-defun-function'." (defun ruby-block-contains-point (pt) (save-excursion (save-match-data - (ruby-forward-sexp) + (with-suppressed-warnings ((obsolete ruby-forward-sexp)) + (ruby-forward-sexp)) (> (point) pt)))) (defun ruby-brace-to-do-end (orig end) @@ -1759,7 +1743,8 @@ If the result is do-end block, it will always be multiline." (progn (goto-char (or (match-beginning 1) (match-beginning 2))) (setq beg (point)) - (save-match-data (ruby-forward-sexp)) + (with-suppressed-warnings ((obsolete ruby-forward-sexp)) + (save-match-data (ruby-forward-sexp))) (setq end (point)) (> end start))) (if (match-beginning 1) @@ -2444,7 +2429,7 @@ If there is no Rubocop config file, Rubocop will be passed a flag "\\)" "\\|/" "\\(?:Gem\\|Rake\\|Cap\\|Thor" - "\\|Puppet\\|Berks" + "\\|Puppet\\|Berks\\|Brew" "\\|Vagrant\\|Guard\\|Pod\\)file" "\\)\\'")) 'ruby-mode)) |