Feature #13050
closedReadline: expose rl_completion_quote_character variable
Description
This patch makes the GNU Readline variable rl_completion_quote_character
available to Ruby users via a method called Readline.completion_quote_character
.
rl_completion_quote_character
returns the character used to quote the argument currently being tab completed, which lets users implement more complex quoting an escaping schemes. For example when using Ruby to build an interpreter for a shell-like language, if the current argument isn't being quoted, the user might want to escape spaces contained in the argument, but if the argument is being quoted, the user might want to leave spaces unescaped.
Here's an example:
require "readline"
COMPLETION_OPTIONS = [
"with several spaces",
]
Readline.completer_quote_characters = "\"'"
Readline.completion_proc = proc do |input|
matching_options = COMPLETION_OPTIONS.select { |o| o.start_with?(input) }
if Readline.completion_quote_character.nil?
matching_options.map { |o| o.gsub(" ", "\\ ") }
else
matching_options
end
end
Readline.readline("> ", false)
This allows the user to input things like:
wit\t # => with\ several\ spaces
"wit\t # => "with several spaces"
The patch includes tests and documentation.
(Like #12659, this patch is an upstream contribution from the gitsh project: https://github.com/thoughtbot/gitsh)
Files