Ticket #689: patch1.diff

File patch1.diff, 2.6 KB (added by s.ochsenknecht@…, 13 years ago)

patch

  • src/options_description.cpp

     
    7171
    7272            if (approx)
    7373            {
    74                 if (m_long_name.find(option) == 0)
    75                     if (m_long_name == option)
     74                if (m_long_name.find(option) == 0) {
     75                    if (m_long_name == option) {
    7676                        result = full_match;
    77                     else
     77                    } else {
    7878                        result = approximate_match;
     79                    }
     80                }
    7981            }
    8082            else
    8183            {
     
    209211
    210212    options_description::options_description(const string& caption,
    211213                                             unsigned line_length)
    212     : m_caption(caption), m_line_length(line_length)
     214    : m_caption(caption)
     215    , m_line_length(line_length)
    213216    {}
    214217
    215218    void
     
    502505
    503506            if (!opt.description().empty())
    504507            {
    505                 for(unsigned pad = first_column_width - ss.str().size();
    506                     pad > 0;
    507                     --pad)
     508                if (ss.str().size() >= first_column_width)
    508509                {
    509                     os.put(' ');
     510                   os.put('\n'); // first column is too long, lets put description in new line
     511                   for (unsigned pad = first_column_width; pad > 0; --pad)
     512                   {
     513                      os.put(' ');
     514                   }
     515                } else {
     516                   for(unsigned pad = first_column_width - ss.str().size(); pad > 0; --pad)
     517                   {
     518                      os.put(' ');
     519                   }
    510520                }
    511            
    512521                format_description(os, opt.description(),
    513522                                   first_column_width, line_length);
    514523            }
     
    531540            ss << "  " << opt.format_name() << ' ' << opt.format_parameter();
    532541            width = (max)(width, static_cast<unsigned>(ss.str().size()));           
    533542        }
     543        /* this is the column were description should start, if first
     544           column is longer, we go to a new line */
     545        unsigned start_of_description_column = m_line_length / 2;
     546
     547        width = (min)(width, start_of_description_column-1);
    534548       
    535549        /* add an additional space to improve readability */
    536550        ++width;
    537            
     551
    538552        /* The options formatting style is stolen from Subversion. */
    539553        for (i = 0; i < m_options.size(); ++i)
    540554        {