Commit graph

336 commits

Author SHA1 Message Date
Dmitry Gutov
c2d6c639cf Match special globals in Ruby better
* lisp/progmodes/ruby-mode.el (ruby-expression-expansion-re):
Match special global variables without curlies, too.
(ruby-font-lock-keywords): Simplify the matcher for special global
variables.  Don't require a non-word character after the variable.

Fixes: debbugs:17057
2014-03-24 10:53:56 +02:00
Dmitry Gutov
1fc8f6559a Fix bug#17050
* lisp/progmodes/ruby-mode.el (ruby-smie-rules):
Add indentation rule for ` @ '.
2014-03-21 06:26:39 +02:00
Dmitry Gutov
1f44df94fa * lisp/progmodes/ruby-mode.el (ruby-font-lock-keywords): Fontify
multiple adjacent negation chars.

Fixes: debbugs:17004
2014-03-13 15:37:27 +02:00
Dmitry Gutov
1850913d96 * lisp/progmodes/ruby-mode.el (ruby-font-lock-keywords): Highlight
regexp options.

Fixes: debbugs:16914
2014-03-02 00:04:59 +02:00
Dmitry Gutov
dfdb365c4c * lisp/progmodes/ruby-mode.el (ruby-smie-rules): Handle the
inconsistent second element of the list returned by
`smie-indent--parent'.
(ruby-font-lock-keywords): Disqualify any identifier before `=' as
method call.
2014-02-23 10:26:40 +02:00
Dmitry Gutov
62f9502226 * lisp/progmodes/ruby-mode.el (ruby-smie-rules): Don't indent specially
after `=>'.

Fixes: debbugs:16811
2014-02-23 07:53:53 +02:00
Dmitry Gutov
cb8f50a75c * lisp/progmodes/ruby-mode.el (auto-mode-alist): Add missing "or". 2014-02-21 17:39:17 +02:00
Dmitry Gutov
6da8227cfa * lisp/progmodes/ruby-mode.el (ruby-font-lock-keywords): `private',
`protected' and `public' can also be called without arguments.
2014-02-03 17:59:39 +02:00
Dmitry Gutov
68e004e0cd Fix bug#16610
* lisp/progmodes/ruby-mode.el (ruby-font-lock-keywords): For built-ins
that require arguments, check that they're followed by something that
looks like argument.
2014-02-01 19:06:08 +02:00
Dmitry Gutov
a09beb3df2 Fix bug#16609
* lisp/progmodes/ruby-mode.el (ruby-smie--implicit-semi-p): Check for
`:' before binary operators.  Don't check for `:'
before `[' and `(', or their syntax status.  A percent literal
can't end with either.
2014-02-01 16:54:58 +02:00
Dmitry Gutov
2f313daf4a Fixup the documentation for the previous change
* etc/NEWS: Mention `ruby-align-chained-calls'.

* lisp/progmodes/ruby-mode.el (ruby-align-chained-calls): Update the
  docstring and add :version tag.

Fixes: debbugs:16593
2014-01-31 19:33:12 +02:00
Dmitry Gutov
e2a67bd08e Implement user option ruby-align-chained-calls
* lisp/progmodes/ruby-mode.el (ruby-align-chained-calls): New option.
(ruby-smie-grammar): Make "." right-associative.  Make its priority
lower than the ternary and all binary operators.
(ruby-smie-rules): Indent "(" relative to the first non-"."
parent, or the first "." parent at indentation.  Use
`ruby-align-chained-calls' for indentation of "." tokens.

* test/automated/ruby-mode-tests.el (ruby-align-chained-calls):
New test.

Fixes: debbugs:16593
2014-01-31 19:13:49 +02:00
Dmitry Gutov
fb3d479c91 ruby-mode: Align def...end to the beginning of statement
* lisp/progmodes/ruby-mode.el (ruby-alignable-keywords): New constant.
(ruby-align-to-stmt-keywords): Change the default value.  Use
`ruby-alignable-keywords' to generate the possible customization
choices.
(ruby-smie-rules): Instead of using a hardcoded list of alignable
keywords, check against the value of `ruby-alignable-keywords'
(http://lists.gnu.org/archive/html/emacs-devel/2014-01/msg01439.html).
2014-01-17 05:15:02 +02:00
Bozhidar Batsov
dd80671031 * lisp/progmodes/ruby-mode.el (auto-mode-alist): Add .podspec and Podfile. 2014-01-10 18:32:45 +02:00
Paul Eggert
ba3189039a Update copyright year to 2014 by running admin/update-copyright. 2014-01-01 07:43:34 +00:00
Glenn Morris
9c5a5c7700 Every defcustom should specify its type
* apropos.el (apropos-match-face):
* calculator.el (calculator-displayer):
* dabbrev.el (dabbrev-search-these-buffers-only):
* face-remap.el (buffer-face-mode-face):
* simple.el (yank-handled-properties):
* emacs-lisp/testcover.el (testcover-potentially-1value-functions):
* mail/footnote.el (footnote-mode-line-string, footnote-prefix):
* mail/hashcash.el (hashcash-accept-resources, hashcash-program)
(hashcash-double-spend-database):
* progmodes/ruby-mode.el (ruby-deep-indent-paren)
(ruby-deep-indent-paren-style):
* textmodes/flyspell.el (flyspell-auto-correct-binding):
* textmodes/rst.el (rst-toc-indent, rst-toc-insert-style)
(rst-toc-insert-number-separator, rst-toc-insert-max-level):
* vc/pcvs-defs.el (cvs-minor-mode-prefix):
* erc/erc-log.el (erc-log-file-coding-system):
* gnus/gnus-sieve.el (gnus-sieve-select-method):
* gnus/gravatar.el (gravatar-automatic-caching, gravatar-cache-ttl)
(gravatar-rating, gravatar-size):
* gnus/message.el (message-minibuffer-local-map):
* gnus/sieve-manage.el (sieve-manage-authenticators)
(sieve-manage-authenticator-alist):
Specify custom types.

* mail/hashcash.el (hashcash-program): Rename from hashcash-path.
Update callers.
2013-12-28 00:21:33 -08:00
Dmitry Gutov
1f87a56cc7 * lisp/progmodes/ruby-mode.el (ruby--electric-indent-p): Improve the
comments.  Handle electric indent after typing `?' and `!'.
2013-12-22 22:38:26 +02:00
Dmitry Gutov
f235149801 * lisp/progmodes/ruby-mode.el (ruby-smie--implicit-semi-p): Return t
after `{'.  We need it after block openers, and it doesn't seem
to hurt after hash openers.
2013-12-22 08:04:40 +02:00
Dmitry Gutov
6cddebc11b Integrate ruby-mode with electric-indent-mode better
* lisp/progmodes/ruby-mode.el (ruby--at-indentation-p): New function,
extracted from `ruby-smie-rules'.
(ruby--electric-indent-chars): New variable.
(ruby--electric-indent-p): New function.
(ruby-mode): Use `electric-indent-functions' instead of
`electric-indent-chars'.
2013-12-22 06:57:00 +02:00
Dmitry Gutov
65a1da00fe * lisp/progmodes/ruby-mode.el (ruby-align-to-stmt-keywords): Tweak the
docstring.
(ruby-smie-rules): Indent plus one level after `=>'.
2013-12-22 04:31:21 +02:00
Dmitry Gutov
b520f210b1 * lisp/progmodes/ruby-mode.el (ruby-align-to-stmt-keywords): New
option. 
(ruby-smie--indent-to-stmt-p): Use it.
(ruby-smie-rules): Revert the logic in the handling of `when'.
Expand the `begin' clause to handle `ruby-align-to-stmt-keywords'.
(ruby-deep-arglist, ruby-deep-indent-paren)
(ruby-deep-indent-paren-style): Update docstrings to note that the
vars don't have any effect with SMIE.

* test/automated/ruby-mode-tests.el: Add tests for
`ruby-align-to-stmt-keywords'.

* test/indent/ruby.rb: Update examples to reflect the lack of change in
default indentation of `begin' blocks.

Fixes: debbugs:16182
2013-12-20 07:20:33 +02:00
Dmitry Gutov
ce41edb426 * lisp/progmodes/ruby-mode.el (ruby-smie-rules): Indent middle-of-block
keywords to their parent.
2013-12-19 07:06:24 +02:00
Dmitry Gutov
7e1549c91d * lisp/progmodes/ruby-mode.el (ruby-smie--args-separator-p): Allow the
first arg to be a string (fixed dead code), or an operator symbol.
(ruby-smie--forward-token): Tokenize ` @ ' before strings and
operator symbols.
(ruby-smie-rules): Remove parent token check in the `.' clause, it
did nothing.  Don't respond to `(:after ".")', it will be called
with :before anyway.  Remove the ` @ ' rule, it didn't seem to
change anything.  Only return indentation for binary operators
when they are hanging.  De-dent opening paren when its parent is
`.', otherwise it looks bad when the dot is not at bol or eol.

Fixes: debbugs:16182
2013-12-19 06:21:44 +02:00
Dmitry Gutov
35b249a653 * lisp/progmodes/ruby-mode.el (ruby-smie-rules): Indent ternary if. 2013-12-17 14:04:23 +02:00
Dmitry Gutov
660efa1a14 Fix comment from the last change to `ruby-smie-rules' 2013-12-14 15:57:58 +02:00
Dmitry Gutov
276bc3337b Fix bug#16118
* lisp/progmodes/ruby-mode.el (ruby-smie-rules): Return nil before
open-paren tokens when preceded by a open-paren, too.
(ruby-smie-rules): Handle virtual indentation after open-paren
tokens specially.  If there is code between it and eol, return the
column where is starts.

* test/indent/ruby.rb: New examples.
2013-12-14 08:46:13 +02:00
Dmitry Gutov
8212d9c0da * lisp/progmodes/ruby-mode.el (ruby-smie--implicit-semi-p): Return t
after the end of a percent literal.
2013-12-09 06:19:16 +02:00
Cameron Desautels
8f48d13181 * lisp/progmodes/ruby-mode.el (ruby-forward-string): Document.
Handle caret-delimited strings.

Fixes: debbugs:16079
2013-12-09 05:43:34 +02:00
Dmitry Gutov
ff8c976420 * lisp/progmodes/ruby-mode.el (ruby-accurate-end-of-block): When
`ruby-use-smie' is t, use `smie-forward-sexp' instead of
`ruby-parse-partial'.

Fixes: debbugs:16078
2013-12-09 05:27:21 +02:00
Dmitry Gutov
fa834a93da * lisp/progmodes/ruby-mode.el (ruby-syntax-propertize-function): Touch
up the last change.
2013-12-06 16:24:10 +02:00
Dmitry Gutov
af67e79a52 Fix Bug#15874
* lisp/progmodes/ruby-mode.el (ruby-mode-syntax-table): Don't modify
syntax for `?'.
(ruby-expr-beg): Expect that `!' will have syntax class "symbol"
where appropriate already.
(ruby-syntax-propertize-function): Propertize `?' and `!' at the
end of method names.
2013-12-06 06:22:08 +02:00
Bozhidar Batsov
15ba218206 * progmodes/ruby-mode.el (ruby-custom-encoding-magic-comment-template),
(ruby-encoding-magic-comment-style): Add :version.
2013-11-22 14:36:38 +02:00
Bozhidar Batsov
d19ffd647d * lisp/progmodes/ruby-mode.el (ruby-custom-encoding-magic-comment-template):
Improve docstring.
2013-11-22 14:28:23 +02:00
Bozhidar Batsov
638af3a10f * lisp/progmodes/ruby-mode.el (ruby-custom-encoding-magic-comment-template):
Change default to "# encoding: %s" to differentiate it from the
default Ruby encoding comment template.
2013-11-20 12:52:07 +02:00
Adam Sokolnicki
56cd894e90 * lisp/progmodes/ruby-mode.el (ruby-toggle-block): Don't stop at
interpolation curlies.

Fixes: debbugs:15914
2013-11-17 23:39:13 +02:00
Dmitry Gutov
43cebc237c * lisp/progmodes/ruby-mode.el (ruby-font-lock-keywords): End regexp for
nil/self/true/false with "end of symbol".
2013-11-15 20:09:10 +02:00
Bozhidar Batsov
99f5d0744e * lisp/progmodes/ruby-mode.el (ruby-mode-set-encoding):
Fix and simplify encoding comment update logic.
2013-11-14 14:39:41 +02:00
Bozhidar Batsov
6c1bf08604 * lisp/progmodes/ruby-mode.el (ruby-mode-set-encoding):
Add support for always inserting an utf-8 encoding comment.
2013-11-14 12:35:49 +02:00
Dmitry Gutov
7b08f97e71 * lisp/progmodes/ruby-mode.el (ruby-smie-grammar): Disambiguate between
binary "|" operator and closing block args delimiter.  Remove
FIXME comment referring to Ruby 1.8-only syntax.
(ruby-smie--implicit-semi-p): Not after "|" operator.
(ruby-smie--closing-pipe-p): New function.
(ruby-smie--forward-token, ruby-smie--backward-token): Use it.
(ruby-smie-rules): Indent after "|".
2013-11-12 16:15:14 +02:00
Dmitry Gutov
1629a32997 * lisp/progmodes/ruby-mode.el (ruby-smie--implicit-semi-p):
Not after "||".
(ruby-smie-rules): Indent non-hanging "begin" blocks as part of
their parent.
2013-11-09 01:59:56 +02:00
Stefan Monnier
ad16897ceb * lisp/progmodes/ruby-mode.el: Don't require cl any more. Use pcase instead.
(ruby-font-lock-keywords): Use backquote.
2013-11-08 17:53:41 -05:00
Bozhidar Batsov
25864c18c5 * lisp/progmodes/ruby-mode.el (ruby-mode-set-encoding):
Fix incorrect case conditions.
2013-11-08 23:41:25 +02:00
Dmitry Gutov
ffa2df72a8 * lisp/progmodes/ruby-mode.el (ruby-smie--forward-token)
(ruby-smie--backward-token): Only consider full-string matches.
2013-11-08 23:23:11 +02:00
Bozhidar Batsov
71731c0338 * lisp/progmodes/ruby-mode.el (ruby-mode-set-encoding): Use
`ruby-encoding-magic-comment-style' to control the
style of the auto-inserted encoding comment.
2013-11-08 18:01:55 +02:00
Dmitry Gutov
da3b328da0 * lisp/progmodes/ruby-mode.el (ruby-smie--indent-to-stmt): Use
`smie-backward-sexp' with token argument.
2013-11-08 13:22:52 +02:00
Dmitry Gutov
1f92392383 * lisp/progmodes/ruby-mode.el (ruby-smie-grammar): Improve precedences
of "and", "or", "&&" and "||".
(ruby-smie--args-separator-p): Prohibit keyword "do" as the first
argument.  Prohibit opening curly brace because it could only be a
block opener in that position.
(ruby-smie--forward-token, ruby-smie--backward-token): Separate
"|" from "&" or "*" going after it.  That can happen in block
arguments.
(ruby-smie--indent-to-stmt): New function, seeks the end of
previous statement or beginning of buffer.
(ruby-smie-rules): Use it.
(ruby-smie-rules): Check if there's a ":" before a curly block
opener candidate; if there is, it's a hash.

* test/indent/ruby.rb: New examples.
2013-11-08 04:31:51 +02:00
Dmitry Gutov
1d1c86daf7 * lisp/progmodes/ruby-mode.el (ruby-smie--implicit-semi-p):
No implicit semi after "^", "and" or "or".
(ruby-smie-grammar): New tokens: "and" and "or".
(ruby-smie--args-separator-p): Fix the check for tokens at POS.
Exclude "and" and "or".  Remove "do" in order to work around token
priorities.
(ruby-smie-rules): Add all infix tokens.  Handle the case of
beginning-of-buffer.
2013-11-07 05:02:01 +02:00
Dmitry Gutov
b420ccfc4c * lisp/progmodes/ruby-mode.el (ruby-smie-grammar): Lower priority of
"." compared to "do".
2013-11-07 03:58:12 +02:00
Bozhidar Batsov
03177f98c9 * lisp/progmodes/ruby-mode.el: Improve a few error messages. 2013-11-05 18:28:40 +02:00
Bozhidar Batsov
ae93bc7480 * lisp/progmodes/ruby-mode.el (ruby-mode): Remove incorrect text from docstring. 2013-11-05 11:30:15 +02:00