summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorTakashi Kokubun <takashikkbn@gmail.com>2019-05-25 21:39:11 -0700
committerTakashi Kokubun <takashikkbn@gmail.com>2019-05-25 22:07:32 -0700
commit8aba3b7a04738c8cebcf3d4ecacd57199d976ae2 (patch)
tree2391e85562065aabea6305f1652b15d6ecd25173 /lib
parent13f58eccdab374ab14d33a6882c52e048cb52e3c (diff)
Fix more unintended syntax highlights
See tests for what kind of things are fixed.
Diffstat (limited to 'lib')
-rw-r--r--lib/irb/color.rb29
1 files changed, 11 insertions, 18 deletions
diff --git a/lib/irb/color.rb b/lib/irb/color.rb
index 82f1ca810f..269b1228fa 100644
--- a/lib/irb/color.rb
+++ b/lib/irb/color.rb
@@ -15,7 +15,7 @@ module IRB # :nodoc:
CYAN = 36
TOKEN_KEYWORDS = {
- on_kw: ['nil', 'self', 'true', 'false'],
+ on_kw: ['nil', 'self', 'true', 'false', '__FILE__'],
on_const: ['ENV'],
}
@@ -23,19 +23,19 @@ module IRB # :nodoc:
TOKEN_SEQ_EXPRS = {
on_CHAR: [[BLUE, BOLD], [Ripper::EXPR_END]],
on_const: [[BLUE, BOLD, UNDERLINE], [Ripper::EXPR_ARG, Ripper::EXPR_CMDARG, Ripper::EXPR_ENDFN]],
- on_embexpr_beg: [[RED], [Ripper::EXPR_BEG, Ripper::EXPR_END, Ripper::EXPR_FNAME]],
- on_embexpr_end: [[RED], [Ripper::EXPR_BEG, Ripper::EXPR_END, Ripper::EXPR_ENDFN, Ripper::EXPR_CMDARG]],
+ on_embexpr_beg: [[RED], [Ripper::EXPR_BEG, Ripper::EXPR_END, Ripper::EXPR_CMDARG, Ripper::EXPR_FNAME, Ripper::EXPR_ARG]],
+ on_embexpr_end: [[RED], [Ripper::EXPR_BEG, Ripper::EXPR_END, Ripper::EXPR_CMDARG, Ripper::EXPR_ENDFN, Ripper::EXPR_ARG]],
on_embvar: [[RED], [Ripper::EXPR_BEG]],
on_heredoc_beg: [[RED], [Ripper::EXPR_BEG]],
on_heredoc_end: [[RED], [Ripper::EXPR_BEG]],
on_ident: [[BLUE, BOLD], [Ripper::EXPR_ENDFN]],
on_int: [[BLUE, BOLD], [Ripper::EXPR_END]],
on_float: [[MAGENTA, BOLD], [Ripper::EXPR_END]],
- on_kw: [[GREEN], [Ripper::EXPR_ARG, Ripper::EXPR_CLASS, Ripper::EXPR_BEG, Ripper::EXPR_END, Ripper::EXPR_FNAME]],
+ on_kw: [[GREEN], [Ripper::EXPR_ARG, Ripper::EXPR_CLASS, Ripper::EXPR_BEG, Ripper::EXPR_END, Ripper::EXPR_FNAME, Ripper::EXPR_MID]],
on_label: [[MAGENTA], [Ripper::EXPR_LABELED]],
on_label_end: [[RED], [Ripper::EXPR_BEG]],
- on_qwords_beg: [[RED], [Ripper::EXPR_BEG]],
- on_qsymbols_beg: [[RED], [Ripper::EXPR_BEG]],
+ on_qwords_beg: [[RED], [Ripper::EXPR_BEG, Ripper::EXPR_CMDARG]],
+ on_qsymbols_beg: [[RED], [Ripper::EXPR_BEG, Ripper::EXPR_CMDARG]],
on_regexp_beg: [[RED, BOLD], [Ripper::EXPR_BEG]],
on_regexp_end: [[RED, BOLD], [Ripper::EXPR_BEG]],
on_symbeg: [[YELLOW], [Ripper::EXPR_FNAME]],
@@ -43,17 +43,8 @@ module IRB # :nodoc:
on_tstring_content: [[RED], [Ripper::EXPR_BEG, Ripper::EXPR_END, Ripper::EXPR_ARG, Ripper::EXPR_CMDARG, Ripper::EXPR_FNAME]],
on_tstring_end: [[RED], [Ripper::EXPR_END]],
}
- SYMBOL_SEQ_OVERRIDES = {
- on_const: [YELLOW],
- on_embexpr_beg: [YELLOW],
- on_embexpr_end: [YELLOW],
- on_ident: [YELLOW],
- on_tstring_content: [YELLOW],
- on_tstring_end: [YELLOW],
- }
rescue NameError
TOKEN_SEQ_EXPRS = {}
- SYMBOL_SEQ_OVERRIDES = {}
end
class << self
@@ -118,10 +109,12 @@ module IRB # :nodoc:
def dispatch_seq(token, expr, str, in_symbol:)
if token == :on_comment
[BLUE, BOLD]
+ elsif in_symbol
+ [YELLOW]
elsif TOKEN_KEYWORDS.fetch(token, []).include?(str)
[CYAN, BOLD]
elsif (seq, exprs = TOKEN_SEQ_EXPRS[token]; exprs&.any? { |e| (expr & e) != 0 })
- SYMBOL_SEQ_OVERRIDES.fetch(in_symbol ? token : nil, seq)
+ seq
else
nil
end
@@ -141,8 +134,8 @@ module IRB # :nodoc:
case token
when :on_symbeg
@stack << true
- when :on_ident
- if @stack.last # Pop only when it's :sym
+ when :on_ident, :on_op, :on_const, :on_ivar
+ if @stack.last # Pop only when it's Symbol
@stack.pop
return prev_state
end