Changeset 99865c9 in git


Ignore:
Timestamp:
22/08/16 05:11:51 (3 years ago)
Author:
Olly Betts <olly@…>
Branches:
line_contents, master, stereo, travis-osx
Children:
76d5230
Parents:
9f55538
Message:

Convert caret range into highlight on source line

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/cavernlog.cc

    r9f55538 r99865c9  
    471471        end += n;
    472472
     473        wxString source_line;
     474        const wxChar * highlight = NULL;
     475
    473476        const unsigned char * p = buf;
    474477
     
    533536                case '\n': {
    534537                    if (cur.empty()) continue;
     538                    if (cur[0] == ' ') {
     539                        if (source_line.empty()) {
     540                            // Source line shown for context.  Store it so we
     541                            // can use the caret line to highlight it.
     542                            swap(source_line, cur);
     543                        } else {
     544                            size_t caret = cur.rfind('^');
     545                            if (caret != wxString::npos) {
     546                                size_t tilde = cur.rfind('~');
     547                                if (tilde == wxString::npos || tilde < caret) {
     548                                    tilde = caret;
     549                                }
     550                                cur = "&nbsp;";
     551                                // FIXME: Need to count each & entity as one character...
     552                                cur.append(source_line, 1, caret - 1);
     553                                cur.append("<b>");
     554                                cur.append(highlight ? highlight : wxT("<span \"color:green\">"));
     555                                cur.append(source_line, caret, tilde + 1 - caret);
     556                                cur.append("</span></b>");
     557                                cur.append(source_line, tilde + 1, wxString::npos);
     558                            } else {
     559                                swap(cur, source_line);
     560                            }
     561                            cur += "<br>\n";
     562                            AppendToPage(cur);
     563                            cur.clear();
     564                            source_line.clear();
     565                        }
     566                        continue;
     567                    }
    535568#ifndef __WXMSW__
    536569                    size_t colon = cur.find(':');
     
    581614                            if (cur.substr(offset, error_marker.size()) == error_marker) {
    582615                                // Show "error" marker in red.
    583                                 cur.insert(offset, wxT("<span style=\"color:red\">"));
     616                                highlight = wxT("<span style=\"color:red\">");
     617                                cur.insert(offset, highlight);
    584618                                offset += 24 + error_marker.size() - 1;
    585619                                cur.insert(offset, wxT("</span>"));
    586620                            } else if (cur.substr(offset, warning_marker.size()) == warning_marker) {
    587621                                // Show "warning" marker in orange.
    588                                 cur.insert(offset, wxT("<span style=\"color:orange\">"));
     622                                highlight = wxT("<span style=\"color:orange\">");
     623                                cur.insert(offset, highlight);
    589624                                offset += 27 + warning_marker.size() - 1;
    590625                                cur.insert(offset, wxT("</span>"));
     626                            } else {
     627                                highlight = NULL;
    591628                            }
    592629
Note: See TracChangeset for help on using the changeset viewer.