~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/help.py

  • Committer: Jelmer Vernooij
  • Date: 2012-02-20 14:15:25 UTC
  • mto: (6471.1.4 iter-child-entries)
  • mto: This revision was merged to the branch mainline in revision 6472.
  • Revision ID: jelmer@samba.org-20120220141525-9azkfei62st8yc7w
Use inventories directly in fewer places.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright (C) 2004, 2005, 2006 Canonical Ltd
 
1
# Copyright (C) 2005-2011 Canonical Ltd
2
2
#
3
3
# This program is free software; you can redistribute it and/or modify
4
4
# it under the terms of the GNU General Public License as published by
14
14
# along with this program; if not, write to the Free Software
15
15
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
16
16
 
 
17
from __future__ import absolute_import
 
18
 
17
19
# TODO: Some way to get a list of external commands (defined by shell
18
20
# scripts) so that they can be included in the help listing as well.
19
21
# It should be enough to just list the plugin directory and look for
22
24
# TODO: `help commands --all` should show hidden commands
23
25
 
24
26
import sys
25
 
import textwrap
26
27
 
27
28
from bzrlib import (
28
29
    commands as _mod_commands,
30
31
    help_topics,
31
32
    osutils,
32
33
    plugin,
33
 
    symbol_versioning,
 
34
    utextwrap,
34
35
    )
35
36
 
36
37
 
45
46
    try:
46
47
        topics = indices.search(topic)
47
48
        shadowed_terms = []
48
 
        for index, topic in topics[1:]:
 
49
        for index, topic_obj in topics[1:]:
49
50
            shadowed_terms.append('%s%s' % (index.prefix,
50
 
                topic.get_help_topic()))
 
51
                topic_obj.get_help_topic()))
51
52
        source = topics[0][1]
52
53
        outfile.write(source.get_help_text(shadowed_terms))
53
54
    except errors.NoHelpTopic:
78
79
    shown_commands = [(n, o) for n, o in commands if o.hidden == hidden]
79
80
    max_name = max(len(n) for n, o in shown_commands)
80
81
    indent = ' ' * (max_name + 1)
81
 
    width = osutils.terminal_width() - 1
 
82
    width = osutils.terminal_width()
 
83
    if width is None:
 
84
        width = osutils.default_terminal_width
 
85
    # we need one extra space for terminals that wrap on last char
 
86
    width = width - 1
82
87
 
83
88
    for cmd_name, cmd_object in sorted(shown_commands):
84
89
        plugin_name = cmd_object.plugin_name()
93
98
        else:
94
99
            firstline = ''
95
100
        helpstring = '%-*s %s%s' % (max_name, cmd_name, firstline, plugin_name)
96
 
        lines = textwrap.wrap(helpstring, subsequent_indent=indent,
97
 
                              width=width)
 
101
        lines = utextwrap.wrap(
 
102
            helpstring, subsequent_indent=indent,
 
103
            width=width,
 
104
            break_long_words=False)
98
105
        for line in lines:
99
106
            out.append(line + '\n')
100
107
    return ''.join(out)
130
137
            help_topics.HelpTopicIndex(),
131
138
            _mod_commands.HelpCommandIndex(),
132
139
            plugin.PluginsHelpIndex(),
 
140
            help_topics.ConfigOptionHelpIndex(),
133
141
            ]
134
142
 
135
143
    def _check_prefix_uniqueness(self):