From: ruby@... Date: 2017-01-29T01:01:20+00:00 Subject: [ruby-core:79297] [Ruby trunk Feature#13050] Readline: expose rl_completion_quote_character variable Issue #13050 has been updated by George Brocklehurst. I should have mentioned in my previous comment: I also tested Readline with multi-byte quote characters, and got back only the value of the first byte from `rl_completion_quote_character`. Anything else I can do to move this forward? ---------------------------------------- Feature #13050: Readline: expose rl_completion_quote_character variable https://bugs.ruby-lang.org/issues/13050#change-62710 * Author: George Brocklehurst * Status: Feedback * Priority: Normal * Assignee: * Target version: ---------------------------------------- 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: ~~~ ruby 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-------------------------------- readline_completion_quote_character.patch (4.43 KB) -- https://bugs.ruby-lang.org/ Unsubscribe: <mailto:ruby-core-request@ruby-lang.org?subject=unsubscribe> <http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>