From 7cd90128add168a27fc6e9b93756fbc0a3c65f8f Mon Sep 17 00:00:00 2001 From: Jonathan McCrohan Date: Sat, 3 Aug 2013 01:23:32 +0100 Subject: Imported Upstream version 1.6.1 --- NEWS | 6 ++++ .../transmission-remote-cli-bash-completion.sh | 31 ++++++++++++++++++++ transmission-remote-cli | 34 +++++++++++++--------- transmission-remote-cli-bash-completion.sh | 29 ------------------ 4 files changed, 58 insertions(+), 42 deletions(-) create mode 100644 completion/bash/transmission-remote-cli-bash-completion.sh delete mode 100644 transmission-remote-cli-bash-completion.sh diff --git a/NEWS b/NEWS index e9cbc6c..a783ba5 100644 --- a/NEWS +++ b/NEWS @@ -1,3 +1,9 @@ +1.6.1 2013-07-26 + BUGFIXES: + - Tab-complete files with regex characters ([,],?,*,...) + - Support for Transmission version 2.81 + + 1.6.0 2013-06-28 BUGFIXES: - Fix timestamps after year 2038 on 32-bit systems diff --git a/completion/bash/transmission-remote-cli-bash-completion.sh b/completion/bash/transmission-remote-cli-bash-completion.sh new file mode 100644 index 0000000..1a0e30b --- /dev/null +++ b/completion/bash/transmission-remote-cli-bash-completion.sh @@ -0,0 +1,31 @@ +# bash completion for transmission-remote-cli(1) -*- shell-script -*- + +_transmission-remote-cli () { + local cur prev opts + + _get_comp_words_by_ref cur prev + + opts="-h --help -v --version -c --connect -s --ssl -f --config --create-config -n --netrc --debug" + + if [[ ${cur} == -* ]] ; then + COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) + else + case "${prev}" in + -c|--connect) + # no completion, wait for user input + ;; + -f|--config) + # dirs and files + _filedir + ;; + *) + # dirs and torrents + _filedir torrent + ;; + esac + fi +} + +complete -F _transmission-remote-cli transmission-remote-cli + +# ex: ts=4 sw=4 et filetype=sh diff --git a/transmission-remote-cli b/transmission-remote-cli index bbb3ea9..1dcce92 100755 --- a/transmission-remote-cli +++ b/transmission-remote-cli @@ -16,10 +16,10 @@ # http://www.gnu.org/licenses/gpl-3.0.txt # ######################################################################## -VERSION = '1.6.0' +VERSION = '1.6.1' TRNSM_VERSION_MIN = '1.90' -TRNSM_VERSION_MAX = '2.80' +TRNSM_VERSION_MAX = '2.81' RPC_VERSION_MIN = 8 RPC_VERSION_MAX = 15 @@ -61,10 +61,11 @@ import curses.ascii from textwrap import wrap from subprocess import call, Popen import netrc -import glob import operator import urlparse +locale.setlocale(locale.LC_ALL, '') +ENCODING = locale.getpreferredencoding() or 'UTF-8' # optional features provided by non-standard modules features = {'dns':False, 'geoip':False, 'ipy':False} @@ -865,9 +866,6 @@ class Interface: self.compact_torrentlist = False # draw only one line for each torrent in compact mode self.exit_now = False - locale.setlocale(locale.LC_ALL, '') - self.encoding = locale.getpreferredencoding() or 'UTF-8' - self.keybindings = { ord('?'): self.call_list_key_bindings, curses.KEY_F1: self.call_list_key_bindings, @@ -990,7 +988,7 @@ class Interface: curses.endwin() def enc(self, text): - return text.encode(self.encoding, 'replace') + return text.encode(ENCODING, 'replace') def get_screen_size(self): time.sleep(0.1) # prevents curses.error on rapid resizing @@ -2788,6 +2786,8 @@ class Interface: win = self.window(height, width, message=message) win.keypad(True) show_cursor() + if not isinstance(input, unicode): + input = unicode(input, ENCODING) index = len(input) while True: # Cut the text into pages, each as long as the text field @@ -2798,7 +2798,7 @@ class Interface: color = (curses.color_pair(self.colors.id('dialog_important')) if self.highlight_dialog else curses.color_pair(self.colors.id('dialog'))) - win.addstr(height - 2, 2, displaytext.ljust(textwidth), color) + win.addstr(height - 2, 2, self.enc(displaytext.ljust(textwidth)), color) win.move(height - 2, displayindex + 2) c = win.getch() if c == 27 or c == curses.KEY_BREAK: @@ -2834,15 +2834,23 @@ class Interface: hide_cursor() return input elif c >= 32 and c < 127: - input = input[:index] + chr(c) + (index < len(input) and input[index:] or '') + input = input[:index] + unicode(chr(c), ENCODING) + (index < len(input) and input[index:] or '') index += 1 if on_change: on_change(input) elif c == ord('\t') and tab_complete: - possible_choices = glob.glob(tilde2homedir(input)+'*') + (dirname, filename) = os.path.split(tilde2homedir(input)) + if not dirname: + dirname = unicode(os.getcwd()) + try: + possible_choices = [ choice for choice in os.listdir(dirname) + if choice.startswith(filename) ] + except OSError: + continue; if tab_complete == 'dirs': - possible_choices = [ d for d in possible_choices if os.path.isdir(d) ] + possible_choices = [ d for d in possible_choices + if os.path.isdir(os.path.join(dirname, d)) ] if(possible_choices): - input = os.path.commonprefix(possible_choices) + input = os.path.join(dirname, os.path.commonprefix(possible_choices)) if len(possible_choices) == 1 and os.path.isdir(input) and input.endswith(os.sep) == False: input += os.sep input = homedir2tilde(input) @@ -3308,7 +3316,7 @@ def ljust_columns(text, max_width, padchar=' '): def len_columns(text): """ Returns the amount of columns that would occupy. """ if type(text) == type(str()): - text = unicode(text) + text = unicode(text, ENCODING) columns = 0 for character in text: columns += 2 if unicodedata.east_asian_width(character) in ('W', 'F') else 1 diff --git a/transmission-remote-cli-bash-completion.sh b/transmission-remote-cli-bash-completion.sh deleted file mode 100644 index 53e7f36..0000000 --- a/transmission-remote-cli-bash-completion.sh +++ /dev/null @@ -1,29 +0,0 @@ -#!/bin/bash - -_transmission-remote-cli () { - local cur prev opts - - _get_comp_words_by_ref cur prev - - opts="-h --help -v --version -c --connect -s --ssl -f --config --create-config -n --netrc --debug" - - if [[ ${cur} == -* ]] ; then - COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) - else - case "${prev}" in - -c|--connect) - # no completion, wait for user input - ;; - -f|--config) - # dirs and files - _filedir - ;; - *) - # dirs and torrents - _filedir torrent - ;; - esac - fi -} - -complete -F _transmission-remote-cli transmission-remote-cli -- cgit v1.2.3