~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/help.py

  • Committer: John Arbash Meinel
  • Date: 2009-06-02 19:56:24 UTC
  • mto: This revision was merged to the branch mainline in revision 4469.
  • Revision ID: john@arbash-meinel.com-20090602195624-utljsyz0qgmq63lg
Add a chunks_to_gzip function.
This allows the _record_to_data code to build up a list of chunks,
rather than requiring a single string.
It should be ~ the same performance when using a single string, since
we are only adding a for() loop over the chunks and an if check.
We could possibly just remove the if check and not worry about adding
some empty strings in there.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright (C) 2005-2011 Canonical Ltd
 
1
# Copyright (C) 2004, 2005, 2006 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
22
22
# TODO: `help commands --all` should show hidden commands
23
23
 
24
24
import sys
 
25
import textwrap
25
26
 
26
27
from bzrlib import (
27
28
    commands as _mod_commands,
29
30
    help_topics,
30
31
    osutils,
31
32
    plugin,
32
 
    utextwrap,
 
33
    symbol_versioning,
33
34
    )
34
35
 
35
36
 
44
45
    try:
45
46
        topics = indices.search(topic)
46
47
        shadowed_terms = []
47
 
        for index, topic_obj in topics[1:]:
 
48
        for index, topic in topics[1:]:
48
49
            shadowed_terms.append('%s%s' % (index.prefix,
49
 
                topic_obj.get_help_topic()))
 
50
                topic.get_help_topic()))
50
51
        source = topics[0][1]
51
52
        outfile.write(source.get_help_text(shadowed_terms))
52
53
    except errors.NoHelpTopic:
72
73
        hidden = True
73
74
    else:
74
75
        hidden = False
75
 
    names = list(_mod_commands.all_command_names())
 
76
    names = set(_mod_commands.builtin_command_names()) # to eliminate duplicates
 
77
    names.update(_mod_commands.plugin_command_names())
76
78
    commands = ((n, _mod_commands.get_cmd_object(n)) for n in names)
77
79
    shown_commands = [(n, o) for n, o in commands if o.hidden == hidden]
78
80
    max_name = max(len(n) for n, o in shown_commands)
79
81
    indent = ' ' * (max_name + 1)
80
 
    width = osutils.terminal_width()
81
 
    if width is None:
82
 
        width = osutils.default_terminal_width
83
 
    # we need one extra space for terminals that wrap on last char
84
 
    width = width - 1
 
82
    width = osutils.terminal_width() - 1
85
83
 
86
84
    for cmd_name, cmd_object in sorted(shown_commands):
87
85
        plugin_name = cmd_object.plugin_name()
96
94
        else:
97
95
            firstline = ''
98
96
        helpstring = '%-*s %s%s' % (max_name, cmd_name, firstline, plugin_name)
99
 
        lines = utextwrap.wrap(
100
 
            helpstring, subsequent_indent=indent,
101
 
            width=width,
102
 
            break_long_words=False)
 
97
        lines = textwrap.wrap(helpstring, subsequent_indent=indent,
 
98
                              width=width)
103
99
        for line in lines:
104
100
            out.append(line + '\n')
105
101
    return ''.join(out)
135
131
            help_topics.HelpTopicIndex(),
136
132
            _mod_commands.HelpCommandIndex(),
137
133
            plugin.PluginsHelpIndex(),
138
 
            help_topics.ConfigOptionHelpIndex(),
139
134
            ]
140
135
 
141
136
    def _check_prefix_uniqueness(self):