1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2026-01-30 04:10:54 -08:00

Fix Ruby indentation with double splat as first block param

* lisp/progmodes/ruby-mode.el (ruby-smie--forward-token)
(ruby-smie--backward-token): Tokenize "**" separately from "|".
Problem reported at https://github.com/dgutov/robe/issues/136.
This commit is contained in:
Dmitry Gutov 2022-04-26 05:36:35 +03:00
parent 4a837b0c72
commit 39646c822b
2 changed files with 11 additions and 2 deletions

View file

@ -508,7 +508,7 @@ This only affects the output of the command `ruby-toggle-block'."
((member tok '("unless" "if" "while" "until"))
(if (save-excursion (forward-word-strictly -1) (ruby-smie--bosp))
tok "iuwu-mod"))
((string-match-p "\\`|[*&]?\\'" tok)
((string-match-p "\\`|[*&]*\\'" tok)
(forward-char (- 1 (length tok)))
(setq tok "|")
(cond
@ -561,7 +561,7 @@ This only affects the output of the command `ruby-toggle-block'."
((ruby-smie--closing-pipe-p) "closing-|")
(t tok)))
((string-match-p "\\`[^|]+|\\'" tok) "closing-|")
((string-match-p "\\`|[*&]\\'" tok)
((string-match-p "\\`|[*&]*\\'" tok)
(forward-char 1)
(substring tok 1))
((and (equal tok "") (eq ?\\ (char-before)) (looking-at "\n"))

View file

@ -491,3 +491,12 @@ in ['th', orig_text, 'en', trans_text]
in {'th' => orig_text, 'ja' => trans_text}
puts "Japanese translation: #{orig_text} => #{trans_text}"
end
# Tokenizing "**" and "|" separately.
def resolve(**args)
members = proc do |**args|
p(**args)
end
member.call(**args)
end