[SVN] Bookmarks

Benoit Gagnon b.gagnon at gmail.com
Fri Apr 13 14:54:39 UTC 2007


I'm a little surprised Apple doesn't provide nicer APIs for this stuff...

On 4/13/07, Allan Odgaard <throw-away-1 at macromates.com> wrote:
> 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 <adam.elliot at gmail.com> 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
> >>> textmate-dev at lists.macromates.com
> >>> http://lists.macromates.com/mailman/listinfo/textmate-dev
> >>>
> >>
> >> _______________________________________________
> >> textmate-dev mailing list
> >> textmate-dev at lists.macromates.com
> >> http://lists.macromates.com/mailman/listinfo/textmate-dev
> >
> >
> > _______________________________________________
> > textmate-dev mailing list
> > textmate-dev at lists.macromates.com
> > http://lists.macromates.com/mailman/listinfo/textmate-dev
>
>
> _______________________________________________
> textmate-dev mailing list
> textmate-dev at lists.macromates.com
> http://lists.macromates.com/mailman/listinfo/textmate-dev
>



More information about the textmate-dev mailing list