[txmt-dev] Re: Setting the background color of a specific line

Jacob Carlborg doob at me.com
Tue Apr 1 18:39:19 UTC 2014


On 2014-04-01 17:47, Allan Odgaard wrote:

> My thoughts on such feature is to place warning and error images in the
> gutter and allow mate as the interface:
>
>      "$TM_MATE" --line 32:3 --error "unexpected identifier" /path/to/file

I like this approach much better.

> This should also make it feel natural to use F2/⇧F2 for next/previous
> error/warning, as they would effectively be bookmarks with another icon
> and possibly tool tip or some other way to render the additional text.

Yeah, I was thinking of placing the additional text on the same line but 
to the right edge, where there's usually some space.

> As TextMate::Executor.run’s default error matching code is used by
> several bundles, it should be simple to have it call "$TM_MATE" and
> thereby add this feature to several existing build/run commands.

That's a good idea.

> There is partial support for the above already, see
> https://github.com/textmate/textmate/blob/master/Frameworks/document/src/document.h#L88
> — though extending ‘mate’ to allow setting marks is missing, so are
> icons for other than “search” and “bookmark”, see
> https://github.com/textmate/textmate/blob/master/Frameworks/OakTextView/src/OakDocumentView.mm#L698

Ok, cool, I'll have a look.

> As for the original question “I'm having trouble to get out the line_t
> which matches a given line number. How can I do that?
> ”. You’re not really supposed to work with line_t objects outside of the
> layout framework. You can query the layout to get coordinates for buffer
> offsets, but if you want to change rendering, then it should probably be
> added directly to layout_t (with an API that is then used by OakTextView).

That's basically what I've already done. I added a method to OakTextView 
for setting error messages for a given line. This would then, via some 
other method calls, set error messages for a line_t object. I have then 
modified "draw_background" in line_t to render a background color when 
there are error messages present.

My original problem still remains, I haven't been able to figure out how 
to get the line_t object that matches a given line number, to set the 
error messages.

I've added a method to layout_t where I'm trying to get the 
row/paragraph_t which contains the line I'm interested in. I've used the 
same code as "layout_t::line_record_for" [1] to get a row, but as soon 
as I access the row I get a segmentation fault.

Hmm, the problem might also be in paragraph_t when I'm trying to find 
the node which matches the line I'm interested in. Currently I'm using 
"iterator_at", but that's probably not right.

[1] 
https://github.com/textmate/textmate/blob/master/Frameworks/layout/src/layout.cc#L400-L403

-- 
/Jacob Carlborg



More information about the textmate-dev mailing list