diff options
| author | Stefan Monnier | 2020-09-24 23:02:06 -0400 |
|---|---|---|
| committer | Stefan Monnier | 2020-09-24 23:02:06 -0400 |
| commit | 09e07fb008abdd1f546d193bd87ecf61d9b7e809 (patch) | |
| tree | 25a4da50912b434df009fd46e3cce753977400e6 | |
| parent | 040c30295e00bfabd207d917ab7bdfeee5aa0a09 (diff) | |
| download | emacs-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/NEWS | 5 | ||||
| -rw-r--r-- | lisp/progmodes/ruby-mode.el | 40 |
2 files changed, 26 insertions, 19 deletions
| @@ -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 | ||
| 223 | SMIE is now always enabled and only 'ruby-use-smie' only controls | ||
| 224 | whether 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. |
| 223 | When a warning is displayed to the user, the resulting buffer now has | 228 | When 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." | |||
| 1378 | The defun begins at or after the point. This function is called | 1371 | The defun begins at or after the point. This function is called |
| 1379 | by `end-of-defun'." | 1372 | by `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). |
| 1469 | With ARG, do it many times. Negative ARG means move backward." | 1463 | With 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). |
| 1517 | With ARG, do it many times. Negative ARG means move forward." | 1514 | With 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) |