* lib/irb/completion.rb (IRB::InputCompletor::Operators): Add

overloadable negative operators.

* lib/irb/ruby-lex.rb (RubyLex#lex_init): Support overloadable
  negative operators.

* lib/irb/ruby-lex.rb (RubyLex#identify_identifier): Minus signs
  need to be escaped in regexp character class.

* misc/ruby-mode.el (ruby-font-lock-keywords, ruby-parse-partial):
  Support overloadable negative operators.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@23129 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
knu 2009-04-03 05:04:02 +00:00
Родитель 2b7279ba5f
Коммит ae846f9fb8
4 изменённых файлов: 22 добавлений и 13 удалений

Просмотреть файл

@ -1,3 +1,17 @@
Fri Apr 3 14:02:42 2009 Akinori MUSHA <knu@iDaemons.org>
* lib/irb/completion.rb (IRB::InputCompletor::Operators): Add
overloadable negative operators.
* lib/irb/ruby-lex.rb (RubyLex#lex_init): Support overloadable
negative operators.
* lib/irb/ruby-lex.rb (RubyLex#identify_identifier): Minus signs
need to be escaped in regexp character class.
* misc/ruby-mode.el (ruby-font-lock-keywords, ruby-parse-partial):
Support overloadable negative operators.
Fri Apr 3 12:45:55 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
* ext/extmk.rb: quotes arguments with spaces always.

Просмотреть файл

@ -184,7 +184,7 @@ module IRB
Operators = ["%", "&", "*", "**", "+", "-", "/",
"<", "<<", "<=", "<=>", "==", "===", "=~", ">", ">=", ">>",
"[]", "[]=", "^",]
"[]", "[]=", "^", "!", "!=", "!~"]
def self.select_message(receiver, message, candidates)
candidates.grep(/^#{message}/).collect do |e|

Просмотреть файл

@ -389,7 +389,8 @@ class RubyLex
"=", "==", "===",
"=~", "<=>",
"<", "<=",
">", ">=", ">>") do
">", ">=", ">>",
"!", "!=", "!~") do
|op, io|
case @lex_state
when EXPR_FNAME, EXPR_DOT
@ -400,12 +401,6 @@ class RubyLex
Token(op)
end
@OP.def_rules("!", "!=", "!~") do
|op, io|
@lex_state = EXPR_BEG
Token(op)
end
@OP.def_rules("<<") do
|op, io|
tk = nil
@ -822,11 +817,11 @@ class RubyLex
when "class"
valid = false unless peek_match?(/^\s*(<<|\w|::)/)
when "def"
valid = false if peek_match?(/^\s*(([+-\/*&\|^]|<<|>>|\|\||\&\&)=|\&\&|\|\|)/)
valid = false if peek_match?(/^\s*(([+\-\/*&\|^]|<<|>>|\|\||\&\&)=|\&\&|\|\|)/)
when "do"
valid = false if peek_match?(/^\s*([+-\/*]?=|\*|<|>|\&)/)
valid = false if peek_match?(/^\s*([+\-\/*]?=|\*|<|>|\&)/)
when *ENINDENT_CLAUSE
valid = false if peek_match?(/^\s*([+-\/*]?=|\*|<|>|\&|\|)/)
valid = false if peek_match?(/^\s*([+\-\/*]?=|\*|<|>|\&|\|)/)
else
# no nothing
end

Просмотреть файл

@ -646,7 +646,7 @@ The variable ruby-indent-level controls the amount of indentation.
((looking-at ":\\(['\"]\\)")
(goto-char (match-beginning 1))
(ruby-forward-string (buffer-substring (match-beginning 1) (match-end 1)) end))
((looking-at ":\\([-,.+*/%&|^~<>]=?\\|===?\\|<=>\\)")
((looking-at ":\\([-,.+*/%&|^~<>]=?\\|===?\\|<=>\\|![~=]?\\)")
(goto-char (match-end 0)))
((looking-at ":\\([a-zA-Z_][a-zA-Z_0-9]*[!?=]?\\)?")
(goto-char (match-end 0)))
@ -1386,7 +1386,7 @@ buffer position `limit' or the end of the buffer."
'("\\(^\\|[^_]\\)\\b\\([A-Z]+\\(\\w\\|_\\)*\\)"
2 font-lock-type-face)
;; symbols
'("\\(^\\|[^:]\\)\\(:\\([-+~]@?\\|[/%&|^`]\\|\\*\\*?\\|<\\(<\\|=>?\\)?\\|>[>=]?\\|===?\\|=~\\|\\[\\]=?\\|\\(\\w\\|_\\)+\\([!?=]\\|\\b_*\\)\\|#{[^}\n\\\\]*\\(\\\\.[^}\n\\\\]*\\)*}\\)\\)"
'("\\(^\\|[^:]\\)\\(:\\([-+~]@?\\|[/%&|^`]\\|\\*\\*?\\|<\\(<\\|=>?\\)?\\|>[>=]?\\|===?\\|=~\\|![~=]?\\|\\[\\]=?\\|\\(\\w\\|_\\)+\\([!?=]\\|\\b_*\\)\\|#{[^}\n\\\\]*\\(\\\\.[^}\n\\\\]*\\)*}\\)\\)"
2 font-lock-reference-face)
;; expression expansion
'("#\\({[^}\n\\\\]*\\(\\\\.[^}\n\\\\]*\\)*}\\|\\(\\$\\|@\\|@@\\)\\(\\w\\|_\\)+\\)"