On 12. Apr 2007, at 06:48, Adam Elliot wrote:

Thank you very much, this is exactly what I was looking for!

The bookmarks are stored under the com.macromates.bookmarked_lines attribute name.

It is an array of line numbers (stored as a property list).

One caveat is that it is (likely) gzipped -- the reason for this is that extended attributes has a size limitation, and I did run into that when storing the values as their “raw” property lists.

There is no indicator of this, so you need to fetch the value, try to decompress is, and if that succeeds, parse it as a plist, otherwise try parse the raw value as a plist -- here is the code I use:

    ssize_t len = getxattr(path, key, NULL, 0, 0, 0);
    if(len <= 0)
        return nil;

    std::vector<char> v(len);
    if(getxattr(path, key, &v[0], v.size(), 0, 0) != -1)
    {
        uLongf destLen = 5 * v.size();
        std::vector<char> dest;
        int zlib_res = Z_BUF_ERROR;
        while(zlib_res == Z_BUF_ERROR && destLen < 1024*1024)
        {
            destLen <<= 2;
            dest = std::vector<char>(destLen);
zlib_res = uncompress((Bytef*)&dest[0], &destLen, (Bytef*)&v[0], v.size());
        }

        if(zlib_res == Z_OK)
        {
            dest.resize(destLen);
            dest.swap(v);
        }

res = [NSPropertyListSerialization propertyListFromData: [NSData dataWithBytes:&v[0] length:v.size()] mutabilityOption:NSPropertyListImmutable format:nil errorDescription:NULL];
    }


On 11-Apr-07, at 9:13 PM, Benoit Gagnon wrote:

from the TextMate help:

"19.4 Extended Attributes (Metadata)

Starting with Tiger, OS X supports setxattr and friends.

TextMate makes use of extended attributes to store the carets
position, bookmarks, what text is folded and is likely to make further
use of extended attributes in the future."

and from this site you should find useful information on how to get to
the values:

http://arstechnica.com/reviews/os/macosx-10.4.ars/7

On 4/11/07, Adam Elliot <[EMAIL PROTECTED]> wrote:
Is there a way to access the bookmarks added to a file so they can be
used in a bundle for adding break points to a debugger?

Thanks,
Adam

_______________________________________________
textmate-dev mailing list
[EMAIL PROTECTED]
http://lists.macromates.com/mailman/listinfo/textmate-dev


_______________________________________________
textmate-dev mailing list
[EMAIL PROTECTED]
http://lists.macromates.com/mailman/listinfo/textmate-dev


_______________________________________________
textmate-dev mailing list
[EMAIL PROTECTED]
http://lists.macromates.com/mailman/listinfo/textmate-dev


_______________________________________________
textmate-dev mailing list
[EMAIL PROTECTED]
http://lists.macromates.com/mailman/listinfo/textmate-dev

Reply via email to