diff options
| author | Dmitry Gutov | 2013-10-09 06:18:01 +0300 |
|---|---|---|
| committer | Dmitry Gutov | 2013-10-09 06:18:01 +0300 |
| commit | 238150c8ff55ab6d74f0fdcc7f163c8ee98c3749 (patch) | |
| tree | c349bb1dd0dca3f33983368d1aeb93b539d67532 /lisp/progmodes/ruby-mode.el | |
| parent | b0949cc4c9edcfea541ad72ee5e7579fac7466e1 (diff) | |
| download | emacs-238150c8ff55ab6d74f0fdcc7f163c8ee98c3749.tar.gz emacs-238150c8ff55ab6d74f0fdcc7f163c8ee98c3749.zip | |
* lisp/progmodes/ruby-mode.el (ruby-smie-rules): Indent after hanging
iuwu-mod token.
(ruby-smie--implicit-semi-p): Prohibit implicit semicolon after
hanging iuwu-mod token.
(ruby-smie--forward-token): Do not include a dot after a token in
that token.
(ruby-smie--backward-token): Likewise.
Diffstat (limited to 'lisp/progmodes/ruby-mode.el')
| -rw-r--r-- | lisp/progmodes/ruby-mode.el | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/lisp/progmodes/ruby-mode.el b/lisp/progmodes/ruby-mode.el index b34143dea17..f734dc50e47 100644 --- a/lisp/progmodes/ruby-mode.el +++ b/lisp/progmodes/ruby-mode.el | |||
| @@ -296,6 +296,9 @@ Also ignores spaces after parenthesis when 'space." | |||
| 296 | (let ((tok (save-excursion (ruby-smie--backward-token)))) | 296 | (let ((tok (save-excursion (ruby-smie--backward-token)))) |
| 297 | (or (equal tok "?") | 297 | (or (equal tok "?") |
| 298 | (string-match "\\`\\s." tok)))) | 298 | (string-match "\\`\\s." tok)))) |
| 299 | (and (eq (car (syntax-after (1- (point)))) 2) | ||
| 300 | (equal (save-excursion (ruby-smie--backward-token)) | ||
| 301 | "iuwu-mod")) | ||
| 299 | (save-excursion | 302 | (save-excursion |
| 300 | (forward-comment 1) | 303 | (forward-comment 1) |
| 301 | (eq (char-after) ?.)))))) | 304 | (eq (char-after) ?.)))))) |
| @@ -334,9 +337,6 @@ Also ignores spaces after parenthesis when 'space." | |||
| 334 | (if (looking-at ":\\s.+") | 337 | (if (looking-at ":\\s.+") |
| 335 | (progn (goto-char (match-end 0)) (match-string 0)) ;; bug#15208. | 338 | (progn (goto-char (match-end 0)) (match-string 0)) ;; bug#15208. |
| 336 | (let ((tok (smie-default-forward-token))) | 339 | (let ((tok (smie-default-forward-token))) |
| 337 | (when (eq ?. (char-after)) | ||
| 338 | (forward-char 1) | ||
| 339 | (setq tok (concat tok "." (ruby-smie--forward-id)))) | ||
| 340 | (cond | 340 | (cond |
| 341 | ((member tok '("unless" "if" "while" "until")) | 341 | ((member tok '("unless" "if" "while" "until")) |
| 342 | (if (save-excursion (forward-word -1) (ruby-smie--bosp)) | 342 | (if (save-excursion (forward-word -1) (ruby-smie--bosp)) |
| @@ -375,7 +375,7 @@ Also ignores spaces after parenthesis when 'space." | |||
| 375 | (let ((tok (smie-default-backward-token))) | 375 | (let ((tok (smie-default-backward-token))) |
| 376 | (when (eq ?. (char-before)) | 376 | (when (eq ?. (char-before)) |
| 377 | (forward-char -1) | 377 | (forward-char -1) |
| 378 | (setq tok (concat (ruby-smie--backward-id) "." tok))) | 378 | (setq tok (concat "." tok))) |
| 379 | (when (and (eq ?: (char-before)) (string-match "\\`\\s." tok)) | 379 | (when (and (eq ?: (char-before)) (string-match "\\`\\s." tok)) |
| 380 | (forward-char -1) (setq tok (concat ":" tok))) ;; bug#15208. | 380 | (forward-char -1) (setq tok (concat ":" tok))) ;; bug#15208. |
| 381 | (cond | 381 | (cond |
| @@ -394,6 +394,9 @@ Also ignores spaces after parenthesis when 'space." | |||
| 394 | (line-end-position)) | 394 | (line-end-position)) |
| 395 | (ruby-smie--backward-token)) ;Fully redundant. | 395 | (ruby-smie--backward-token)) ;Fully redundant. |
| 396 | (t ";"))) | 396 | (t ";"))) |
| 397 | ;; FIXME: We shouldn't merge the dot with preceding token here | ||
| 398 | ;; either, but not doing that breaks indentation of hanging | ||
| 399 | ;; method calls with dot on the first line. | ||
| 397 | ((equal tok ".") | 400 | ((equal tok ".") |
| 398 | (concat (ruby-smie--backward-id) tok)) | 401 | (concat (ruby-smie--backward-id) tok)) |
| 399 | (t tok))))))) | 402 | (t tok))))))) |
| @@ -419,7 +422,7 @@ Also ignores spaces after parenthesis when 'space." | |||
| 419 | ;; when the opening statement is hanging. | 422 | ;; when the opening statement is hanging. |
| 420 | (when (smie-rule-hanging-p) | 423 | (when (smie-rule-hanging-p) |
| 421 | (smie-backward-sexp 'halfsexp) (smie-indent-virtual))) | 424 | (smie-backward-sexp 'halfsexp) (smie-indent-virtual))) |
| 422 | (`(:after . "=") 2) | 425 | (`(:after . ,(or "=" "iuwu-mod")) 2) |
| 423 | (`(:before . "do") | 426 | (`(:before . "do") |
| 424 | (when (or (smie-rule-hanging-p) | 427 | (when (or (smie-rule-hanging-p) |
| 425 | (save-excursion | 428 | (save-excursion |