summaryrefslogtreecommitdiff
path: root/parse.y
diff options
context:
space:
mode:
authormatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2007-10-25 17:06:29 +0000
committermatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2007-10-25 17:06:29 +0000
commitbbe0af6be1f85ea93c3f5fe8ca1e100c784a01e9 (patch)
treedb59455f8c2b5ad54157e033b847df9da88b421a /parse.y
parent012b58b121ff499a6c811a3e7498e9a50145109b (diff)
* parse.y (parser_yylex): dot at the head of the line denote line
continuation from previous one to support fluent interface. [experimental] * misc/ruby-mode.el (ruby-calculate-indent): support fluent dot. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@13777 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'parse.y')
-rw-r--r--parse.y19
1 files changed, 19 insertions, 0 deletions
diff --git a/parse.y b/parse.y
index 8803ddff87..65c1f6056b 100644
--- a/parse.y
+++ b/parse.y
@@ -5863,6 +5863,25 @@ parser_yylex(struct parser_params *parser)
default:
break;
}
+ while ((c = nextc())) {
+ switch (c) {
+ case ' ': case '\t': case '\f': case '\r':
+ case '\13': /* '\v' */
+ space_seen++;
+ break;
+ case '.': {
+ if ((c = nextc()) != '.') {
+ pushback(c);
+ pushback('.');
+ goto retry;
+ }
+ }
+ default:
+ pushback(c);
+ goto normal_newline;
+ }
+ }
+ normal_newline:
command_start = Qtrue;
lex_state = EXPR_BEG;
return '\n';