~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/help.py

  • Committer: Canonical.com Patch Queue Manager
  • Date: 2010-03-11 13:47:06 UTC
  • mfrom: (5051.3.16 use-branch-open)
  • Revision ID: pqm@pqm.ubuntu.com-20100311134706-kaerqhx3lf7xn6rh
(Jelmer) Pass colocated branch names further down the call stack.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright (C) 2004, 2005, 2006 Canonical Ltd
 
1
# Copyright (C) 2005-2010 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
12
12
#
13
13
# You should have received a copy of the GNU General Public License
14
14
# along with this program; if not, write to the Free Software
15
 
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 
15
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
16
16
 
17
17
# TODO: Some way to get a list of external commands (defined by shell
18
18
# scripts) so that they can be included in the help listing as well.
48
48
        for index, topic in topics[1:]:
49
49
            shadowed_terms.append('%s%s' % (index.prefix,
50
50
                topic.get_help_topic()))
51
 
        outfile.write(topics[0][1].get_help_text(shadowed_terms))
 
51
        source = topics[0][1]
 
52
        outfile.write(source.get_help_text(shadowed_terms))
52
53
    except errors.NoHelpTopic:
53
54
        if alias is None:
54
55
            raise
72
73
        hidden = True
73
74
    else:
74
75
        hidden = False
75
 
    names = set(_mod_commands.builtin_command_names()) # to eliminate duplicates
76
 
    names.update(_mod_commands.plugin_command_names())
 
76
    names = list(_mod_commands.all_command_names())
77
77
    commands = ((n, _mod_commands.get_cmd_object(n)) for n in names)
78
78
    shown_commands = [(n, o) for n, o in commands if o.hidden == hidden]
79
79
    max_name = max(len(n) for n, o in shown_commands)
80
80
    indent = ' ' * (max_name + 1)
81
 
    width = osutils.terminal_width() - 1
 
81
    width = osutils.terminal_width()
 
82
    if width is None:
 
83
        width = osutils.default_terminal_width
 
84
    # we need one extra space for terminals that wrap on last char
 
85
    width = width - 1
82
86
 
83
87
    for cmd_name, cmd_object in sorted(shown_commands):
84
88
        plugin_name = cmd_object.plugin_name()
93
97
        else:
94
98
            firstline = ''
95
99
        helpstring = '%-*s %s%s' % (max_name, cmd_name, firstline, plugin_name)
96
 
        lines = textwrap.wrap(helpstring, subsequent_indent=indent,
97
 
                              width=width)
 
100
        lines = textwrap.wrap(
 
101
            helpstring, subsequent_indent=indent,
 
102
            width=width,
 
103
            break_long_words=False)
98
104
        for line in lines:
99
105
            out.append(line + '\n')
100
106
    return ''.join(out)
112
118
 
113
119
class HelpIndices(object):
114
120
    """Maintainer of help topics across multiple indices.
115
 
    
 
121
 
116
122
    It is currently separate to the HelpTopicRegistry because of its ordered
117
123
    nature, but possibly we should instead structure it as a search within the
118
124
    registry and add ordering and searching facilities to the registry. The
143
149
 
144
150
    def search(self, topic):
145
151
        """Search for topic across the help search path.
146
 
        
 
152
 
147
153
        :param topic: A string naming the help topic to search for.
148
154
        :raises: NoHelpTopic if none of the indexs in search_path have topic.
149
155
        :return: A list of HelpTopics which matched 'topic'.