From 3210d166a7d6ba2ec91d9dd24e43bb40a050e692 Mon Sep 17 00:00:00 2001 From: Rob Newbould Date: Fri, 29 Nov 2013 13:14:31 +0000 Subject: [PATCH] Fix token color customization for CodeRay >= 1.1.0 See: https://github.com/rubychan/coderay/commit/e2acec3ef141725d2fc264e56d1aa18e838c6acf https://github.com/pry/pry/issues/1012#issuecomment-29213405 --- irb/escaped_colors.rb | 68 ++++++++++++++++++++++++++++++++++++ irb/pryrc | 77 +++++------------------------------------ irb/unescaped_colors.rb | 68 ++++++++++++++++++++++++++++++++++++ 3 files changed, 145 insertions(+), 68 deletions(-) create mode 100644 irb/escaped_colors.rb create mode 100644 irb/unescaped_colors.rb diff --git a/irb/escaped_colors.rb b/irb/escaped_colors.rb new file mode 100644 index 0000000..e1ba28d --- /dev/null +++ b/irb/escaped_colors.rb @@ -0,0 +1,68 @@ +TERM_TOKEN_COLORS = { + :attribute_name => "\e[33m", + :attribute_value => "\e[31m", + :binary => "\e[1;35m", + :char => { + :self => "\e[36m", :delimiter => "\e[34m" + }, + :class => "\e[1;35m", + :class_variable => "\e[36m", + :color => "\e[32m", + :comment => "\e[37m", + :complex => "\e[34m", + :constant => "\e[34m\e[4m", + :decoration => "\e[35m", + :definition => "\e[1;32m", + :directive => "\e[32m\e[4m", + :doc => "\e[46m", + :doctype => "\e[1;30m", + :doc_string => "\e[31m\e[4m", + :entity => "\e[33m", + :error => "\e[1;33m\e[41m", + :exception => "\e[1;31m", + :float => "\e[1;35m", + :function => "\e[1;34m", + :global_variable => "\e[42m", + :hex => "\e[1;36m", + :include => "\e[33m", + :integer => "\e[1;34m", + :key => "\e[35m", + :label => "\e[1;15m", + :local_variable => "\e[33m", + :octal => "\e[1;35m", + :operator_name => "\e[1;29m", + :predefined_constant => "\e[1;36m", + :predefined_type => "\e[1;30m", + :predefined => "\e[4m\e[1;34m", + :preprocessor => "\e[36m", + :pseudo_class => "\e[34m", + :regexp => { + :self => "\e[31m", + :content => "\e[31m", + :delimiter => "\e[1;29m", + :modifier => "\e[35m", + :function => "\e[1;29m" + }, + :reserved => "\e[1;31m", + :shell => { + :self => "\e[42m", + :content => "\e[1;29m", + :delimiter => "\e[37m", + }, + :string => { + :self => "\e[36m", + :modifier => "\e[1;32m", + :escape => "\e[1;36m", + :delimiter => "\e[1;32m", + }, + :symbol => "\e[1;31m", + :tag => "\e[34m", + :type => "\e[1;34m", + :value => "\e[36m", + :variable => "\e[34m", + + :insert => "\e[42m", + :delete => "\e[41m", + :change => "\e[44m", + :head => "\e[45m" +} diff --git a/irb/pryrc b/irb/pryrc index f236de2..36f47f4 100644 --- a/irb/pryrc +++ b/irb/pryrc @@ -91,74 +91,15 @@ end # color codes, but such is life. CodeRay.scan("example", :ruby).term # just to load necessary files # Token colors pulled from: https://github.com/rubychan/coderay/blob/master/lib/coderay/encoders/terminal.rb -TERM_TOKEN_COLORS = { - :attribute_name => '33', - :attribute_value => '31', - :binary => '1;35', - :char => { - :self => '36', :delimiter => '34' - }, - :class => '1;35', - :class_variable => '36', - :color => '32', - :comment => '37', - :complex => '34', - :constant => ['34', '4'], - :decoration => '35', - :definition => '1;32', - :directive => ['32', '4'], - :doc => '46', - :doctype => '1;30', - :doc_string => ['31', '4'], - :entity => '33', - :error => ['1;33', '41'], - :exception => '1;31', - :float => '1;35', - :function => '1;34', - :global_variable => '42', - :hex => '1;36', - :include => '33', - :integer => '1;34', - :key => '35', - :label => '1;15', - :local_variable => '33', - :octal => '1;35', - :operator_name => '1;29', - :predefined_constant => '1;36', - :predefined_type => '1;30', - :predefined => ['4', '1;34'], - :preprocessor => '36', - :pseudo_class => '34', - :regexp => { - :self => '31', - :content => '31', - :delimiter => '1;29', - :modifier => '35', - :function => '1;29' - }, - :reserved => '1;31', - :shell => { - :self => '42', - :content => '1;29', - :delimiter => '37', - }, - :string => { - :self => '36', - :modifier => '1;32', - :escape => '1;36', - :delimiter => '1;32', - }, - :symbol => '1;31', - :tag => '34', - :type => '1;34', - :value => '36', - :variable => '34', - - :insert => '42', - :delete => '41', - :change => '44', - :head => '45' -} + +$LOAD_PATH << File.dirname(File.realpath(__FILE__)) + +# In CodeRay >= 1.1.0 token colors are defined as pre-escaped ANSI codes +if CodeRay::VERSION >= "1.1.0" + require "escaped_colors" +else + require "unescaped_colors" +end module CodeRay module Encoders diff --git a/irb/unescaped_colors.rb b/irb/unescaped_colors.rb new file mode 100644 index 0000000..6580fc5 --- /dev/null +++ b/irb/unescaped_colors.rb @@ -0,0 +1,68 @@ +TERM_TOKEN_COLORS = { + :attribute_name => '33', + :attribute_value => '31', + :binary => '1;35', + :char => { + :self => '36', :delimiter => '34' + }, + :class => '1;35', + :class_variable => '36', + :color => '32', + :comment => '37', + :complex => '34', + :constant => ['34', '4'], + :decoration => '35', + :definition => '1;32', + :directive => ['32', '4'], + :doc => '46', + :doctype => '1;30', + :doc_string => ['31', '4'], + :entity => '33', + :error => ['1;33', '41'], + :exception => '1;31', + :float => '1;35', + :function => '1;34', + :global_variable => '42', + :hex => '1;36', + :include => '33', + :integer => '1;34', + :key => '35', + :label => '1;15', + :local_variable => '33', + :octal => '1;35', + :operator_name => '1;29', + :predefined_constant => '1;36', + :predefined_type => '1;30', + :predefined => ['4', '1;34'], + :preprocessor => '36', + :pseudo_class => '34', + :regexp => { + :self => '31', + :content => '31', + :delimiter => '1;29', + :modifier => '35', + :function => '1;29' + }, + :reserved => '1;31', + :shell => { + :self => '42', + :content => '1;29', + :delimiter => '37', + }, + :string => { + :self => '36', + :modifier => '1;32', + :escape => '1;36', + :delimiter => '1;32', + }, + :symbol => '1;31', + :tag => '34', + :type => '1;34', + :value => '36', + :variable => '34', + + :insert => '42', + :delete => '41', + :change => '44', + :head => '45' +}