Переопределение ширины терминала в Mercurial

Некоторые команды Mercurial форматируют вывод по-разному в зависимости от ширины терминала. Это удобно, когда мне просто нужно посмотреть на вывод, но очень неудобно, когда вывод отправляется не на терминал, а скорее в канал или файл.

Есть ли способ, которым я могу переопределить ширину терминала и заставить Mercurial отформатировать вывод, оптимизированный для ширины, которую я указываю в командной строке?

Вот пример проблемы, с которой я столкнулся :

$ hg log --stat -r 4210 | wc
     10      37     375
$ hg log --stat -r 4210 | wc
     10      37     375
$ hg log --stat -r 4210 | wc
     10      37     512
$ hg log --stat -r 4210 | wc
     10      37     512
$ 

Я изменил размер окна в середине этой последовательности команд, и Mercurial начал производить другой вывод. Я хотел бы получить что-то вроде этого:

$ hg log --width 79 --stat -r 4210 | wc
     10      37     374
$ 

Где я могу как-то указать, что я хочу, чтобы вывод форматировался так, как если бы терминал имел ширину 79 символов, независимо от фактической ширины терминала.

1
задан 29 March 2015 в 12:25

1 ответ

Следующая функция может быть найдена в /usr/lib/python2.7/dist-packages/mercurial/ui.py:

def termwidth(self):
    '''how wide is the terminal in columns?
    '''
    if 'COLUMNS' in os.environ:
        try:
            return int(os.environ['COLUMNS'])
        except ValueError:
            pass
    return util.termwidth()

От этого ясно, что ответ должен просто записать COLUMNS=79 перед эти hg команда для достижения желаемого результата:

$ COLUMNS=79 hg log --stat -r 4210 | wc
     10      37     374
0
ответ дан 29 March 2015 в 12:25

Другие вопросы по тегам:

Похожие вопросы: