Skip to content

Commit

Permalink
allow space in config value (#705)
Browse files Browse the repository at this point in the history
* allow space in config value

fix #657

* remove inline comments

* Revert "remove inline comments"

This reverts commit 2438347.

* refactoring

* remove unnecessary comment handling
  • Loading branch information
monkeyWzr committed May 26, 2024
1 parent a5b5298 commit d60f1e1
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 9 deletions.
17 changes: 9 additions & 8 deletions lib/reline/config.rb
Original file line number Diff line number Diff line change
Expand Up @@ -182,9 +182,10 @@ def read_lines(lines, file = nil)
next if if_stack.any? { |_no, skip| skip }

case line
when /^set +([^ ]+) +([^ ]+)/i
var, value = $1.downcase, $2
bind_variable(var, value)
when /^set +([^ ]+) +(.+)/i
# value ignores everything after a space, raw_value does not.
var, value, raw_value = $1.downcase, $2.partition(' ').first, $2
bind_variable(var, value, raw_value)
next
when /\s*("#{KEYSEQ_PATTERN}+")\s*:\s*(.*)\s*$/o
key, func_name = $1, $2
Expand Down Expand Up @@ -234,7 +235,7 @@ def handle_directive(directive, file, no, if_stack)
end
end

def bind_variable(name, value)
def bind_variable(name, value, raw_value)
case name
when 'history-size'
begin
Expand All @@ -259,7 +260,7 @@ def bind_variable(name, value)
when 'completion-query-items'
@completion_query_items = value.to_i
when 'isearch-terminators'
@isearch_terminators = retrieve_string(value)
@isearch_terminators = retrieve_string(raw_value)
when 'editing-mode'
case value
when 'emacs'
Expand Down Expand Up @@ -301,11 +302,11 @@ def bind_variable(name, value)
@show_mode_in_prompt = false
end
when 'vi-cmd-mode-string'
@vi_cmd_mode_string = retrieve_string(value)
@vi_cmd_mode_string = retrieve_string(raw_value)
when 'vi-ins-mode-string'
@vi_ins_mode_string = retrieve_string(value)
@vi_ins_mode_string = retrieve_string(raw_value)
when 'emacs-mode-string'
@emacs_mode_string = retrieve_string(value)
@emacs_mode_string = retrieve_string(raw_value)
when *VARIABLE_NAMES then
variable_name = :"@#{name.tr(?-, ?_)}"
instance_variable_set(variable_name, value.nil? || value == '1' || value == 'on')
Expand Down
12 changes: 11 additions & 1 deletion test/reline/test_config.rb
Original file line number Diff line number Diff line change
Expand Up @@ -459,6 +459,17 @@ def test_inputrc
ENV['INPUTRC'] = inputrc_backup
end

def test_inputrc_raw_value
@config.read_lines(<<~'LINES'.lines)
set editing-mode vi ignored-string
set vi-ins-mode-string aaa aaa
set vi-cmd-mode-string bbb ccc # comment
LINES
assert_equal :vi_insert, @config.instance_variable_get(:@editing_mode_label)
assert_equal 'aaa aaa', @config.vi_ins_mode_string
assert_equal 'bbb ccc # comment', @config.vi_cmd_mode_string
end

def test_inputrc_with_utf8
# This file is encoded by UTF-8 so this heredoc string is also UTF-8.
@config.read_lines(<<~'LINES'.lines)
Expand Down Expand Up @@ -542,4 +553,3 @@ def test_relative_xdg_config_home
ENV['HOME'] = home_backup
end
end

0 comments on commit d60f1e1

Please sign in to comment.