aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStefan Monnier2020-09-24 23:02:06 -0400
committerStefan Monnier2020-09-24 23:02:06 -0400
commit09e07fb008abdd1f546d193bd87ecf61d9b7e809 (patch)
tree25a4da50912b434df009fd46e3cce753977400e6
parent040c30295e00bfabd207d917ab7bdfeee5aa0a09 (diff)
downloademacs-09e07fb008abdd1f546d193bd87ecf61d9b7e809.tar.gz
emacs-09e07fb008abdd1f546d193bd87ecf61d9b7e809.zip
* lisp/progmodes/ruby-mode.el (ruby-use-smie): Declare obsolete
(ruby-mode-map, ruby-mode-menu): Don't use ruby-for/backward-sexp any more. (ruby-mode-variables): Always setup SMIE navigation. Still obey `ruby-use-smie` for indentation. (ruby-forward-sexp, ruby-backward-sexp): Mark as obsolete.
-rw-r--r--etc/NEWS5
-rw-r--r--lisp/progmodes/ruby-mode.el40
2 files changed, 26 insertions, 19 deletions
diff --git a/etc/NEWS b/etc/NEWS
index 6bedd0347ee..9cd8aaa41c8 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -218,6 +218,11 @@ trying to be non-destructive.
218 218
219* Changes in Specialized Modes and Packages in Emacs 28.1 219* Changes in Specialized Modes and Packages in Emacs 28.1
220 220
221** Ruby mode
222*** 'ruby-use-smie' is declared obsolete
223SMIE is now always enabled and only 'ruby-use-smie' only controls
224whether indentation is done using SMIE or with the old ad-hoc code.
225
221--- 226---
222** Specific warnings can now be disabled from the warning buffer. 227** Specific warnings can now be disabled from the warning buffer.
223When a warning is displayed to the user, the resulting buffer now has 228When a warning is displayed to the user, the resulting buffer now has
diff --git a/lisp/progmodes/ruby-mode.el b/lisp/progmodes/ruby-mode.el
index 831acf87bf0..a11634bc9f0 100644
--- a/lisp/progmodes/ruby-mode.el
+++ b/lisp/progmodes/ruby-mode.el
@@ -142,12 +142,11 @@ This should only be called after matching against `ruby-here-doc-beg-re'."
142 "Regexp to match symbols.") 142 "Regexp to match symbols.")
143 143
144(defvar ruby-use-smie t) 144(defvar ruby-use-smie t)
145(make-obsolete-variable 'ruby-use-smie nil "28.1")
145 146
146(defvar ruby-mode-map 147(defvar ruby-mode-map
147 (let ((map (make-sparse-keymap))) 148 (let ((map (make-sparse-keymap)))
148 (unless ruby-use-smie 149 (unless ruby-use-smie
149 (define-key map (kbd "M-C-b") 'ruby-backward-sexp)
150 (define-key map (kbd "M-C-f") 'ruby-forward-sexp)
151 (define-key map (kbd "M-C-q") 'ruby-indent-exp)) 150 (define-key map (kbd "M-C-q") 'ruby-indent-exp))
152 (when ruby-use-smie 151 (when ruby-use-smie
153 (define-key map (kbd "M-C-d") 'smie-down-list)) 152 (define-key map (kbd "M-C-d") 'smie-down-list))
@@ -170,14 +169,8 @@ This should only be called after matching against `ruby-here-doc-beg-re'."
170 "--" 169 "--"
171 ["Toggle String Quotes" ruby-toggle-string-quotes t] 170 ["Toggle String Quotes" ruby-toggle-string-quotes t]
172 "--" 171 "--"
173 ["Backward Sexp" ruby-backward-sexp 172 ["Backward Sexp" backward-sexp t]
174 :visible (not ruby-use-smie)] 173 ["Forward Sexp" forward-sexp t]
175 ["Backward Sexp" backward-sexp
176 :visible ruby-use-smie]
177 ["Forward Sexp" ruby-forward-sexp
178 :visible (not ruby-use-smie)]
179 ["Forward Sexp" forward-sexp
180 :visible ruby-use-smie]
181 ["Indent Sexp" ruby-indent-exp 174 ["Indent Sexp" ruby-indent-exp
182 :visible (not ruby-use-smie)] 175 :visible (not ruby-use-smie)]
183 ["Indent Sexp" prog-indent-sexp 176 ["Indent Sexp" prog-indent-sexp
@@ -741,10 +734,10 @@ It is used when `ruby-encoding-magic-comment-style' is set to `custom'."
741(defun ruby-mode-variables () 734(defun ruby-mode-variables ()
742 "Set up initial buffer-local variables for Ruby mode." 735 "Set up initial buffer-local variables for Ruby mode."
743 (setq indent-tabs-mode ruby-indent-tabs-mode) 736 (setq indent-tabs-mode ruby-indent-tabs-mode)
744 (if ruby-use-smie 737 (smie-setup ruby-smie-grammar #'ruby-smie-rules
745 (smie-setup ruby-smie-grammar #'ruby-smie-rules 738 :forward-token #'ruby-smie--forward-token
746 :forward-token #'ruby-smie--forward-token 739 :backward-token #'ruby-smie--backward-token)
747 :backward-token #'ruby-smie--backward-token) 740 (unless ruby-use-smie
748 (setq-local indent-line-function #'ruby-indent-line)) 741 (setq-local indent-line-function #'ruby-indent-line))
749 (setq-local comment-start "# ") 742 (setq-local comment-start "# ")
750 (setq-local comment-end "") 743 (setq-local comment-end "")
@@ -1378,7 +1371,8 @@ move forward."
1378The defun begins at or after the point. This function is called 1371The defun begins at or after the point. This function is called
1379by `end-of-defun'." 1372by `end-of-defun'."
1380 (interactive "p") 1373 (interactive "p")
1381 (ruby-forward-sexp) 1374 (with-suppressed-warnings ((obsolete ruby-forward-sexp))
1375 (ruby-forward-sexp))
1382 (let (case-fold-search) 1376 (let (case-fold-search)
1383 (when (looking-back (concat "^\\s *" ruby-block-end-re) 1377 (when (looking-back (concat "^\\s *" ruby-block-end-re)
1384 (line-beginning-position)) 1378 (line-beginning-position))
@@ -1467,11 +1461,14 @@ With ARG, move out of multiple blocks."
1467(defun ruby-forward-sexp (&optional arg) 1461(defun ruby-forward-sexp (&optional arg)
1468 "Move forward across one balanced expression (sexp). 1462 "Move forward across one balanced expression (sexp).
1469With ARG, do it many times. Negative ARG means move backward." 1463With ARG, do it many times. Negative ARG means move backward."
1464 (declare (obsolete forward-sexp "28.1"))
1470 ;; TODO: Document body 1465 ;; TODO: Document body
1471 (interactive "p") 1466 (interactive "p")
1472 (cond 1467 (cond
1473 (ruby-use-smie (forward-sexp arg)) 1468 (ruby-use-smie (forward-sexp arg))
1474 ((and (numberp arg) (< arg 0)) (ruby-backward-sexp (- arg))) 1469 ((and (numberp arg) (< arg 0))
1470 (with-suppressed-warnings ((obsolete ruby-backward-sexp))
1471 (ruby-backward-sexp (- arg))))
1475 (t 1472 (t
1476 (let ((i (or arg 1))) 1473 (let ((i (or arg 1)))
1477 (condition-case nil 1474 (condition-case nil
@@ -1515,11 +1512,14 @@ With ARG, do it many times. Negative ARG means move backward."
1515(defun ruby-backward-sexp (&optional arg) 1512(defun ruby-backward-sexp (&optional arg)
1516 "Move backward across one balanced expression (sexp). 1513 "Move backward across one balanced expression (sexp).
1517With ARG, do it many times. Negative ARG means move forward." 1514With ARG, do it many times. Negative ARG means move forward."
1515 (declare (obsolete backward-sexp "28.1"))
1518 ;; TODO: Document body 1516 ;; TODO: Document body
1519 (interactive "p") 1517 (interactive "p")
1520 (cond 1518 (cond
1521 (ruby-use-smie (backward-sexp arg)) 1519 (ruby-use-smie (backward-sexp arg))
1522 ((and (numberp arg) (< arg 0)) (ruby-forward-sexp (- arg))) 1520 ((and (numberp arg) (< arg 0))
1521 (with-suppressed-warnings ((obsolete ruby-forward-sexp))
1522 (ruby-forward-sexp (- arg))))
1523 (t 1523 (t
1524 (let ((i (or arg 1))) 1524 (let ((i (or arg 1)))
1525 (condition-case nil 1525 (condition-case nil
@@ -1671,7 +1671,8 @@ See `add-log-current-defun-function'."
1671(defun ruby-block-contains-point (pt) 1671(defun ruby-block-contains-point (pt)
1672 (save-excursion 1672 (save-excursion
1673 (save-match-data 1673 (save-match-data
1674 (ruby-forward-sexp) 1674 (with-suppressed-warnings ((obsolete ruby-forward-sexp))
1675 (ruby-forward-sexp))
1675 (> (point) pt)))) 1676 (> (point) pt))))
1676 1677
1677(defun ruby-brace-to-do-end (orig end) 1678(defun ruby-brace-to-do-end (orig end)
@@ -1749,7 +1750,8 @@ If the result is do-end block, it will always be multiline."
1749 (progn 1750 (progn
1750 (goto-char (or (match-beginning 1) (match-beginning 2))) 1751 (goto-char (or (match-beginning 1) (match-beginning 2)))
1751 (setq beg (point)) 1752 (setq beg (point))
1752 (save-match-data (ruby-forward-sexp)) 1753 (with-suppressed-warnings ((obsolete ruby-forward-sexp))
1754 (save-match-data (ruby-forward-sexp)))
1753 (setq end (point)) 1755 (setq end (point))
1754 (> end start))) 1756 (> end start)))
1755 (if (match-beginning 1) 1757 (if (match-beginning 1)