On 8-Jan-08, at 12:43 PM, Charilaos Skiadas wrote:
On Jan 8, 2008, at 10:47 AM, Thomas Aylott - subtleGradient wrote:
On Jan 7, 2008, at 10:47 PM, Luke Daley wrote:
On 08/01/2008, at 10:54 AM, Alain O'Dea wrote:
I would like to be able to query the current file or other
project files for symbols based on scope. I would also like to be
able to query for symbols with a common instance of a parent scope.
For illustrative purposes I will use JavaScript-like syntax and
JS DOM-like API:
// get all atoms in the current document
document.getSymbolsByScope("source.erlang meta.function.erlang
meta.structure.tuple.erlang
constant.other.symbol.unquoted.erlang");
// get all atoms in the current function
currentFunction = currentScope.getAncestorByScope("source.erlang
meta.function.erlang");
currentFunction.getSymbolsByScope("source.erlang
meta.function.erlang meta.structure.tuple.erlang
constant.other.symbol.unquoted.erlang");
// get all functions in the current module
document.getSymbolsByScope("source.erlang meta.function");
+1 on all of that from me.
Also, if you could find the closest something from the caret, that
would be very handy.
LD.
Sounds wonderful.
There's already a way to get the scoped out xml of the current file.
Maybe there's already some kind of xml thing you can use to do it?
Every language on earth parses xml. I'm sure something exists that
can be modified to do what you say.
I would love to have something that was really easy to use though.
I had at some point created a "ScopeHandler" ruby class specifically
for this purpose, it kind of works but is not very satisfactory, and
pretty slow on even moderately sized documents. But someone might be
inspired by it:
http://skiadas.dcostanet.net/afterthought/the-scopehandler-class/
It's not exactly what Alain describes above, but perhaps it might be
used to get ideas. It would indeed be wonderful to have something
like this out of the box.
—Thomas Aylott – subtleGradient—
Haris Skiadas
Department of Mathematics and Computer Science
Hanover College
I like how the ScopeHandler works. Some of the cost of the slowness
could be mitigated if the class were run in a background process that
serviced scope queries on cached AST/DOM information. Reparsing the
complete AST/DOM of a document for each scope query (such as code
completion would use) would make it impractically slow even with the
most efficient possible XML parser.
TextMate does identify the scopes and appears to do so as it scans the
document based on seeing the highlighter at work on my less than
stellar PPC Mac mini. If TextMate fired notifications of these scopes
as they were encountered a subscriber process could build and track
the AST/DOM itself. This would make it unnecessary for TextMate to
carry around the memory expensive complete AST/DOM. Bundle developers
could then implement code completion with a whatever subset of AST/DOM/
scope events they need.
_______________________________________________
textmate-dev mailing list
[email protected]
http://lists.macromates.com/mailman/listinfo/textmate-dev