diff --git a/ChangeLog b/ChangeLog index 0600a19094..fd9b89069d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +Fri Oct 26 15:00:52 2007 Nobuyoshi Nakada + + * misc/ruby-style.el (ruby-style-{case,label}-indent): adjust for + labels inside switch block. + Fri Oct 26 05:48:57 UTC 2007 David Flanagan * array.c: raise IndexError for negative length in rb_ary_fill diff --git a/misc/ruby-style.el b/misc/ruby-style.el index 609c7509ba..6591581103 100644 --- a/misc/ruby-style.el +++ b/misc/ruby-style.el @@ -20,18 +20,22 @@ (defun ruby-style-case-indent (x) (save-excursion - (goto-char (cdr x)) - (if (looking-at "\\") '*))) + (unless (progn (backward-up-list) (back-to-indentation) + (> (point) (cdr x))) + (goto-char (cdr x)) + (if (looking-at "\\") '*)))) (defun ruby-style-label-indent (x) (save-excursion - (goto-char (cdr x)) - (condition-case () - (progn - (backward-up-list) - (backward-sexp 2) - (if (looking-at "\\") '/)) - (error)))) + (unless (progn (backward-up-list) (back-to-indentation) + (> (point) (cdr x))) + (goto-char (cdr x)) + (condition-case () + (progn + (backward-up-list) + (backward-sexp 2) + (if (looking-at "\\") '/)) + (error))))) (require 'cc-styles) (c-add-style diff --git a/parse.y b/parse.y index 65c1f6056b..355c9afa71 100644 --- a/parse.y +++ b/parse.y @@ -5870,11 +5870,11 @@ parser_yylex(struct parser_params *parser) space_seen++; break; case '.': { - if ((c = nextc()) != '.') { - pushback(c); - pushback('.'); - goto retry; - } + if ((c = nextc()) != '.') { + pushback(c); + pushback('.'); + goto retry; + } } default: pushback(c); @@ -5903,7 +5903,7 @@ parser_yylex(struct parser_params *parser) return tOP_ASGN; } pushback(c); - if (IS_ARG() && space_seen && !ISSPACE(c)){ + if (IS_ARG() && space_seen && !ISSPACE(c)) { rb_warning0("`*' interpreted as argument prefix"); c = tSTAR; } @@ -6084,8 +6084,8 @@ parser_yylex(struct parser_params *parser) compile_error(PARSER_ARG "incomplete character syntax"); return 0; } - if (rb_enc_isspace(c, parser->enc)){ - if (!IS_ARG()){ + if (rb_enc_isspace(c, parser->enc)) { + if (!IS_ARG()) { int c2 = 0; switch (c) { case ' ': @@ -6156,7 +6156,7 @@ parser_yylex(struct parser_params *parser) return tOP_ASGN; } pushback(c); - if (IS_ARG() && space_seen && !ISSPACE(c)){ + if (IS_ARG() && space_seen && !ISSPACE(c)) { rb_warning0("`&' interpreted as argument prefix"); c = tAMPER; }