createSourceMark()
- From: Stefan Salewski <mail ssalewski de>
- To: gnome-devtools gnome org
- Subject: createSourceMark()
- Date: Thu, 23 Jun 2016 23:17:36 +0200
Have just added the first draft of "Goto definition" functionality to
the Nim GTK editor.
http://ssalewski.de/tmp/NEd-InputFont.png
Is it intended that createSourceMark() does only work when iter is at
the beginning of the line? For example, the code below does not
generate the visible mark (list add) as shown in the picture above when
I uncomment "discard iter.forwardChar". That behaviour may be ok, but
it was not clear to me reading the docs.
proc markLocation(view: var NimView; ln, cn: int) =
 var startIter, endIter, iter: TextIterObj
 view.freeErrors
 let buffer: gtksource.Buffer = gtksource.buffer(view.getBuffer)
 buffer.getStartIter(startIter)
 buffer.getEndIter(endIter)
 buffer.removeTagByName(ErrorTagName, startIter, endIter)
 for i in 0 .. MaxErrorTags:
    buffer.removeTagByName($i, startIter, endIter)
 buffer.removeSourceMarks(startIter, endIter, NullStr)
 view.showLinemarks = false
 var attrs = newMarkAttributes()
 var color = RGBAObj(red: 0.5, green: 0.5, blue: 0.5, alpha: 0.2)
 attrs.background = color
 attrs.iconName = "list-remove"
 view.setMarkAttributes(ErrorTagName, attrs, priority = 1)
 objectUnref(attrs)
 buffer.getIterAtLineIndex320(startIter, ln.cint, cn.cint)
 iter = startIter
 if iter.line == 0:
    discard iter.backwardLine
 else:
    discard iter.backwardLine
    discard iter.forwardLine
 #discard iter.forwardChar
 discard buffer.createSourceMark(NullStr, ErrorTagName, iter)
 let tag: TextTag = buffer.tagTable.lookup(ErrorTagName)
 assert(tag != nil)
 discard startiter.backwardChar
 if startIter.hasTag(tag):
    discard startIter.forwardToTagToggle(tag)
 discard startiter.forwardChar
 endIter = startIter
 iter = startIter
 discard iter.forwardToLineEnd
 discard endIter.forwardChar
 discard endIter.forwardFindChar(advanceErrorWord, userData = nil, limit = iter)
 buffer.applyTag(tag, startIter, endIter)
 view.showLinemarks = true
Another question, in the code above I needed 5 lines to move the cursor
at the start of the current line. Is there a simpler way?
[
Date Prev][
Date Next] [
Thread Prev][Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]