[Geany-devel] Questions on inserting text & indentation

Colomban Wendling lists.ban at xxxxx
Thu Apr 29 17:13:25 UTC 2010


Nick Treleaven a écrit :
> On Thu, 29 Apr 2010 00:28:02 +0200
> Colomban Wendling <lists.ban at herbesfolles.org> wrote:
> 
>> In my GeanyGenDoc plugin I was using sci_insert_text() to insert the
>> generated documentation comment; but I wanted to be able to indent the
>> inserted comment to follow the indentation at the insertion position.
>>
>> I found editor_insert_text_block() which seemed quite interesting, but
>> it didn't do what I expected -- and still no indentation. Of course when
>> going a bit in the code, since I inserted my comment at the start of the
>> line, and editor_insert_text_block() adds the indentation that is found
>> between the start of the line and the insertion position… which are the
>> same in my case.
>> Then, I wondered how to fix my problem, and finally found a solution
>> that consists to insert at start of line + sci_get_line_indentation() [1].
>>
>> But I have some questions:
>> 1) How editor_insert_text_block() is meant to be used to get the right
>> indentation, since (if I'm right) we need to insert at the right
>> position in the first line? Is the solution I've found the right one, or
>> is there a cleaner/simpler solution?
> 
> Can you give a code example of what you're trying to do?
The real code can be found only through SF's VC viewer:
http://geany-plugins.svn.sourceforge.net/viewvc/geany-plugins/trunk/geanygendoc/src/ggd.c?revision=1316&view=markup#l_313

But let's explain a bit: I would insert a text block, and indent it to
respect the indentation of the insertion's line.
What I do is:
1) build a text block (line 326);
2) find *the line* at which insert it (I don't know the position, only
the line -- this is from a tag) at the start (lines 338-339);
3) convert that line information to position information as needed
(lines 340-343);
4) insert the text block (line 351).

Of course step 3 is an implementation detail, and it's where I have the
"problem".
My question is: "how am I supposed to insert a text block at the start
of a particular *line* for it to be indented as this line is indented?"

> 
>> 2) If this is a good way to proceed, could we have
>> sci_get_line_indentation() in the plugin API? Even though it is easy to
>> reproduce [2] it would be nicer to have it directly.
> 
> We can do, send a patch if you like. It sounds like it might be
> better to use editor_insert_text_block in this case.
Yeah I do so but it needs to already know at which *position* insert the
block. And the position where I want to insert is something like the
"smart start" of the line (start of the line + indentation).

Thanks for responding :)
Colomban



More information about the Devel mailing list