If you need rtags() in R to give you an output, I use:

rtags(path = "/path/to/R/library/base", recursive = T, ofile =  "/home/whatever.tags")



On Thu, Nov 11, 2010 at 4:45 PM, Lex Trotman <elextr@gmail.com> wrote:
On 12 November 2010 02:32, Nick Treleaven <nick.treleaven@btinternet.com> wrote:
> On Thu, 11 Nov 2010 09:11:30 +1100
> Lex Trotman <elextr@gmail.com> wrote:
>
>> > However, even if geany -g worked on .R files, the approach would be
>> > difficult to apply in practice. It requires the user to specify .R
>> > files, and given the structure of R packages this could be a quickly
>> > become tedious. It would have been much easier if Geany accepted a
>> > path in which it could recursively scan (and parse) R files. The
>> > rtags() function can do that, so it might make sense to find a
>> > conversion route for etags files.
>> >
>>
>> Whats the structure of R packages?
>>
>> Presuming from the above that it is lot of files in nested directories
>> you could use find to run geany -g on them all.  Whilst that gives you
>> lots of tag files to open, I don't expect it to be too much slower
>> than one huge file.
>>
>> Otherwise patches are welcome.
>
> I'm not sure that reimplementing Unix find is something Geany should be
> doing really. But documenting how to do that in the manual would
> be a good idea.
>
> Supporting CTags format is something on the TODO list.
>
> You can 'see' the format in tagmanager/tm_tag.c in the tm_tag_write()
> function. That is just called repeatedly for each tag entry in the file.

Bah missed it :-)

The R source reveals

write.etags <-
   function(src,
            tokens, startlines, lines, nchars,
            ...,
            shorten.lines = c("token", "simple", "none"))
{
   ## extra 1 for newline
   shorten.lines <- match.arg(shorten.lines)
   offsets <- (cumsum(nchars + 1L) - (nchars + 1L))[startlines]
   lines <-
       switch(shorten.lines,
              none = lines,
              simple = sapply(strsplit(lines, "function", fixed =
TRUE), "[", 1),
              token = mapply(shorten.to.string, lines, tokens))
   tag.lines <-
       paste(sprintf("%s\x7f%s\x01%d,%d",
                     lines, tokens, startlines,
                     as.integer(offsets)),
             collapse = "\n")
   ## simpler format: tag.lines <- paste(sprintf("%s\x7f%d,%d",
lines, startlines, as.integer(offsets)), collapse = "\n")
   tagsize <- nchar(tag.lines, type = "bytes") + 1L
   cat("\x0c\n", src, ",", tagsize, "\n", tag.lines, "\n", sep = "", ...)
}

So someone who reads C and R can write a converter :-)

Cheers
Lex

>
> Nick
> _______________________________________________
> Geany-devel mailing list
> Geany-devel@uvena.de
> http://lists.uvena.de/cgi-bin/mailman/listinfo/geany-devel
>
_______________________________________________
Geany-devel mailing list
Geany-devel@uvena.de
http://lists.uvena.de/cgi-bin/mailman/listinfo/geany-devel