« first day (3113 days earlier)      last day (67 days later) » 

00:06
REFRESH!
[Minesweeper] 81 Games Played. 41 Bombs Used. 9915 Moves Performed. 10 New Users
[Rubberduck] 1 Synchronizations
 
5 hours later…
04:49
Got a huge chunk of Rubberduck.Parsing in now; deleted the "quick-parse" parser but kept the TextReader token stream provider. Next step is to orchestrate the real RDE quick-parse, so that'll be a preprocessor pass, then a SLL-to-LL fallback parse off of what I'm hoping to be a very small parse tree with just enough to figure out the module structure.
...and then a syntactic pass with the full grammar, if there hasn't been a keypress yet
that's when we'll get the syntax error and parse tree inspection squiggles
...and if the editor is still idling then we update the out-of-process metadata
(the declarations and their references), and then the other inspections get their updated results into the editor as new squiggles
maybe it's faster to skip the first pass, I wonder
not for worst-case scenarios full of ! bang operators
Inspections would only run project-wide if you asked for it
duh the first pass is for block completion, so yeah, a small parse tree that doesn't traverse procedure bodies
(except for delimited block statements)
 
7 hours later…
12:07
Mug rubberducked! :)
I presume you're simply plugging in modules from RD2 and wiring them in here, correct? You're not trying to rewrite all this stuff yourself, are you?
 
3 hours later…
15:13
@FreeMan lol yeah, mostly it's just copying files and adjusting namespaces, but I'm bringing the in the pieces one chunk at a time, making sure I know what everything is for and adjusting to the v3 paradigm - for example there's a new RubberduckEditor member in the CodeKind enum, and the parsing error strategies are slightly different.
15:30
whew! ;)
 
3 hours later…
18:48
0
Q: UDF to Generate Hyperlinks in Excel

GregBackground I am trying to recreate the functionality of HYPERLINK() on my own terms, as a custom UDF called Hyper_Link(). My ultimate goal is to have Hyper_Link() embed a URL that is longer than 255 characters, which is currently impossible with HYPERLINK(). I currently have a working prototype,...

 
2 hours later…
20:24
Just one comment regarding the declaration model, we should really stop having strong references to the contexts in there. The way it is right now any stray declaration can hold the entire module parse tree in memory. I think this is part of our memory problem.
20:35
Definitely! I'll clean this up while nothing depends on it!
3rd is a charm, RD3 will be the VBIDE add-in, no ifs no buts.
I think the minimal solution would be to use weak references. However, a selection and a qualified module name should also be enough to allow to retrieve the context if needed.
21:29
IIRC the reason we needed the context in the declaration was because we wanted to use the token position to find a declaration in the VBE, yeah?
21:54
I think there are a few inspections that use the context on a declaration or reference to determine whether there is a problem. We will have to see how to handle them in another way or give them another way to get access to the context.
I am still a bit unsure about how to properly handle the relation between declarations and their selection.
IIRC it depends what the declaration is; most of the time the selection is that of the identifier name, but I think there might be a few exceptions to that
Maybe, we could do something in the same spirit as red green trees and only determine the selection on demand. This would remove the need to update the selection whenever something changes in the module. On the other hand, identifying when a declaration is no longer valid would become tricky.
We could leverage editor anchors, if they work as advertised it's really quick to update several thousands of them
the editor would automatically adjust the offsets for us
e.g. "Sub" at offset 47 becomes offset 49 as soon as a NEWLINE is added above
OTOH insert a NEWLINE and you immediately get a fresh tree; if an anchor gets removed we know a declaration is gone
That sounds useful. We'll, I guess we should first try to make it work with the new editor and then think about optimizing the parsing and updating.
My issue was more with the scenario that the user opens an existing module. The tricky part would be to associate the already existing declarations and references with the contexts.
Well, or when we try to navigate to a declaration in a module that is not open.
I still plan to do some research on how other projects handle the connection between semantic objects, parse trees and selections.
Specifically, I wanted to look at rust analyzer.
However, I first have to find some time to actually do it.
2
22:15
Yeah, one bite at a time is how we'll eat this elephant ducky!
All right, so tonight I'm working on getting the parser to work in the new editor, with the 3 passes (preprocessor, structure, syntax).
 
2 hours later…
23:51
[rubberduck-vba/Rubberduck] 1680 stars vs. [decalage2/oletools] 2286 stars

« first day (3113 days earlier)      last day (67 days later) »