« first day (1442 days earlier)      last day (1738 days later) » 
00:00 - 17:0017:00 - 00:00

5:00 PM
use conventions
e.g. a plugin always gets its own entry with a submenu
KISS
 
so Rubberduck > SomePlugin > EveryCommand
 
ditto for hte Ce's context menu
 
makes sense.. Rubberduck > Inspections > Disable in this module
 
what are you thinking what should go into the extensibility framework? thinking better and simpler if each plugins were their own islands with only access to 1) ability to describe menus (as discussed above), 2) ability to describe toolwindows (e.g. implement the IDockableWindowHost and we do the rest), 3) ability to see the parse tree and state and the SCWs? They don't need ot see the CE or the menu system or the addin framework itself... right?
 
correct
 
5:09 PM
The SCW part scares me the most, though.
 
I think the easiest way to figure out what plugins need, is to take some of the current functionality and make it a plugin
 
like inspections.
 
yeah
what's SCW?
 
safe com wrappers
 
5:10 PM
hmm. but inspections should never interact with SCW.
only with the parse tree
 
correct
 
SC?
 
SC would
 
yeah it has to interact with the SCWs.. :(
TBF, i'd rather provide an abstract view
 
but proper usage can (should) be documented anyway
@this a facade on top of the facade? :)
 
5:11 PM
the problem is that if plugins are their own VS project... no analyzer.
aren't we already standing on 1000 facades already? What's another facade?
 
lol
@this that's a showstopper right there
a plugin that wouldn't cleanup their stuff could take us down badly
and we wouldn't have any control over it
 
exactly - and i realized --- they woudln't have to have AV and CodeCov
i definitely don't want to be the next Eclipse.
their plugin system is abysmal
 
so we've just killed plugins right there then
 
damn
and what does that leaves SC & PM then?
those too contribute to a good IDE....
 
I guess we gotta pick our battles
 
5:20 PM
TBH, I think PM is #WorthIt. Sharing VBA code is way too hard than it should, IMO/E
and if we don't share, then it's hard to help people raise the level of standard.
 
SC and PM?
 
SC=Source Code --- PM =Package management
 
Ah.
FWIW, I think we should pull our facades out into a separate project.
Then anyone can use them without going through the pain we did.
For example, PM could be a completely separate project. It needs nothing but the SCWs and the import/export functionality, right?
 
I guess
(and yeah, it would be a separate project anyway)
 
agreed RE: project
not sure I follow the facade part. put exactly what in a project of its own?
the SCWs?
 
5:26 PM
isn't that already in its own project? not sure I like making additional dll's for the heck of it
I'm already not too warm about Rubberduck.Resources.dll
 
yeah, VBEEditor
 
FWIW, I don't like millions of projects either.
 
@MathieuGuindon sorry about that.
 
@this lol, that was my PR!
 
recall that it came because of my idea about separating the guid/progid because that was a cross-cutting concern.
 
5:29 PM
duck check: the risk is in handing out SCWs, but without doing that a plugin wouldn't be able to do anything useful...
?
 
that said, when Core does lean down to just UI, I totally can see resx files going back. Not sure where that leaves the guid/progid
@mansellan no if they have a SCW and they don't clean it up properly... memory leak galore
right now, SCW is still fragile (e.g. chained member access => memory leak)
 
yep that's what i meant
 
even if we did solve this, what about the code analyzer? AV? CodeCov?
a separate repo wouldn't have none of that.
 
and there's no way do abstract it? "Tell us what you want and we'll find \ do it for you"
 
unless rubberduck-vba owns them but that means MORE management.
not sure how one abstracts the code quality checks....
 
5:31 PM
@this if we can isolate properly, does it matter? worst case, the plugin is flakey but RD keeps on truckin'
(for 3rd party plugins i mean - any factored out from current RD would get proper CI)
 
Honest? I don't want a 3rd party plugin at this point.
maybe later later LATER but irght now, I'd prefer that the duck own it all
 
yes agreed - so we could set that up with AV, analysis etc
 
and TBH, managing AV,etc. is big PITA
2nd repo doubles that.
so... I'm not ready for a 2nd repo. I doubt anyone else is.
 
ok makes sense
 
5:37 PM
so if PM (and SC and whatever else) is going to happen, they'll have ot be a project withiin the Rubberduck repo.
again, recall we booted SC because it was causing so much pain
 
but for the 1st party plugins, could we not keep those in the main repo but still using a plugin system
 
OTOH, what does SC/PM need? They don't need the whole wrapper API
 
not without not making it a plugin.
 
Just some API
 
yep
 
5:39 PM
PM and SC mainly needs SCWs, basically. I don't think they give a hoot about the parse tree.
we can describe the menu and toolwindow like we discussed earlier
 
But if we expose an API that cleanly handles adding/removing/replacing modules, what do SC/PM need of SCWs?
 
ooooh
 
not sure they need the SCWs... surely just a "here's a module, please import it" API (PM)
^^
 
that's definitely clean
keep their dirty grubby paws off the SCWs
 
or a "Please let me know when a module goes dirty" API (SC)
#Simplifying
 
5:41 PM
exactly. so really a notification system + a facade (on top of facade ;-) ) to handle the import/export
 
yeah
 
@mansellan that could be exposed via parser state in theory
 
hmm, and we can use parser to tell us what modules there are, too
 
Rx maybe... events are problematic
 
but what about content hash for PM?
 
5:42 PM
Roslyn is the VS built-in equivalent of R#?
 
@IvenBach Roslyn is the compiler
 
1 hour ago, by Mathieu Guindon
long-term is to kill the inspection results dialog, and instead have R#/Roslyn-like popup-buttons in the code panes; makes sense to have the results as parse tree state then, no?
AFAIU we want red squiggly capabilities for code pane.
 
Yup
Or blue dotted underline... whatever
 
Roslyn being the compiler helps by compiling what is type in and then that is what get's parsed? I'm having a disconnect.
 
I think roslyn is more than just ocmpiler
it provides analysis and other stuff, too
 
5:46 PM
The compiler has multiple parts. There's the parser, and then a semantic pass and analyzers building on top of ot
 
so it's similar to R# but not equivalent (e.g. R# doesn't actually compile any code; it only analyze code like RD does but cannot compile)
 
Not "just" a compiler. It's able to do other things in addition to it.
 
R# can tell you if your code will build. Roslyn analyzers can make the build fail, but run as part of the build process
 
How can it make it fail but still run?
--/ /-- disconnect again
 
well it has to keep running to get the rest of code analyzed, no?
otherwise, you're back to VBA's nefarious "fix compile error one by one MWAHAHAHA!"
 
5:49 PM
VBA Says: "My code doesn't always compile, and when it doesn't, you get to fix the compile-time errors one by one."
 
(I absolutely hate that situation, never knowing how many compiler errors there are. Am I one typo away, or am I 10000000 bad stuff away? I WILL NEVER KNOW UNLESS I FIX THEM ONE BY AGONIZING ONE!!1!"
 
Nope, never been in than situation before. Not never.
 
it's worse when you inherit the codebase
if i wrote it, I at least can expect to ahve few compiler error and I'll be alright. But someone else's code... well....
 
@this just typos I guess ;-)
 
Not being able to test your own code's compilability because of someone else's work isn't pleasant.
 
5:58 PM
and there are lot of VBa projects out there that has never been "compiled" (explicitly via the menu or keyboard) for years.
they keep adding and adding and adding and adding and it's "it runs fine!"
Gaaaah
 
@IvenBach if the code doesn't compile, analyzers don't need/get to run. if the code compiles, analyzers can still send the build up in flames if they're specified to do that
 
@MathieuGuindon Actually, not quite.
Analyzers get run as the parse tree is created.
 
but not too far off either
 
Which is a heck of a lot more often than a compile happens.
 
if the parse tree isn't valid, what's the point of running analyzers?
 
6:01 PM
Speed.
 
And guess what?
They can run analyzers and all nodes but invalid ones.
 
running more code makes it go faster? confused
 
@this Makes it look like it to the user.
 
@DainIronfootIII ah, right
 
6:03 PM
ok that makes sense. OH that reminds me. Didn't we enable that for RD, too?
 
Well, I did a bunch of prelim work on it, but I broke most of the parser :(
So, I think it's rotting in a branch somewhere.
Our error system ATM relies entirely on getting one error at a time.
 
some 2000 commits behind lol
 
Yeah, that was back at Christmas :)
TBH, it's not that hard--until the tower falls around your ears.
 
I get the idea. I just need to code more C# to eventually better understand all your discussions.
 
@IvenBach Don't we all :)
 
6:05 PM
I'm lost on most of what gets discussed.
 
@this Use Paket if you don't want NuGet.
Ah man, VS is going down hard.
> Paket is a dependency manager for .NET and mono projects, which is designed to work well with NuGet packages and also enables referencing files directly from Git repositories or any HTTP resource. It enables precise and predictable control over what packages the projects within your application reference.
 
IDK. Does it have a DLL for backend like ZeroInstall?
and also, it won't be .NET - it's VBA code sooo....
 
Oh, you found something already? Carry on.
 
nuget package pretty assumes that it'll be .NET
 
Yeah. It works with JS files, though, so...
 
6:17 PM
asking you to specify a framework version, a specific language, etc.
cos those are "content"
in theory we can just build a content-only package but IDK. Feel really wrong.
it'd be really annoying if the nuget package with just VBA code was listed in public nuget repository and they put it in VS and go "WTF"
 
@this /shrug
 
who'd be searching for VBA nugets in VS though?
 
my point is that it wouldn't be filtered out
because we can't say "this ain't C#" (or .NET)
 
right. so the whole .net world would be like "hey wtf is going on with VBA these days?"
could be a good thing
"wait VBA has nuget packages now??!"
and every one of them would say "Rubberduck" somewhere
 
mindshare is a good thing.
TBF never heard of ZeroInstall (or Paket for that matter) until yesterday. Everyone knows what nuget is.
 
6:21 PM
^
I love the play with "nuggets" though
makes me wonder if the .net team @MS would love it as much
 
HOW DARE YOU POLLUTE OUR SACRED REPOSITORY WITH PROFANE CODE THAT IS VBA
 
@MathieuGuindon They wouldn't care.
The legal team might, though.
 
who owns nugget.org?
 
Nobody.
Nugget.com is registered with GoDaddy.
 
i'm amazed that it's not taken already
 
6:30 PM
allo allo
 
just to point it out, tho--- if we end up using nuget package... why not just use nuget.org?
 
if we end up using nuget, of course we'll use nuget.org
...if they let us :)
 
@DainIronfootIII IIRC that was also before the upgrade to ANTLR 4.6
 
@Vogel612 Twas.
 
 
2 hours later…
8:18 PM
> If you need anytime to have a debugging Skype session with me just contact me (Matthieu got my email).
 
8:56 PM
> I agree that the ability to browse and easily download / install trusted collections of modules has great value of itself. But I'd like to think there was a pathway from there to being later able to implement managed dependencies, as that allows the community to build ever upwards (think of how many NuGets take Json.Net as a dependency, for example).

IMO, one of the issues with SC was the use of external files to track project state - this had implications for portability and shared develop
> Just in case anyone needs a quick guide to aid PR....

Most of files are simply reogranization and thus can be skipped.

1) COM stuff

[RubberduckGuid](https://github.com/rubberduck-vba/Rubberduck/pull/3975/files#diff-9fe778a6e26c2eed55788ad235bbcb15)
[RubberduckProgId](https://github.com/rubberduck-vba/Rubberduck/pull/3975/files#diff-5cb4aac2a636218103f5b621b8c796a7)
[ApiProvider](https://github.com/rubberduck-vba/Rubberduck/pull/3975/files#diff-1e37877fec6b8f8019b0f71fc0015960)
[Par
 
#MemoToMyself stop making mega-PRs. Nobody like them....
 
@this that's not only you there ...
 
LOL. We've all had our share.
Especially when laying the groundwork for an architectural shift.
 
I know. I did not exactly plan that out well. "this is just a little clean up..... WTF where I am now?!?"
3
Mind, i'm pretty stoked with how it went, mainly because that solves a long standing problem with COM interop in .NET (e.g. renaming enums and customizing the type library).
 
Mar 14 at 17:50, by Vogel612
it's just that "while I was at it", I decided to do some more cleanup as well, and that's when everything went to hell and back
 
9:04 PM
LOL
but #worthit, I think
 
probably, yes
 
"... A scholarly father may be of some use in exploring ..." - even better, an old codger of a father in a ring might provide loads of snarky and acerbic comments :). — Edheldil 7 hours ago
Wow...
> lol, an extension method would do it. as for extension properties... we're not on C# 6, so even if you implement it and it ships with C# 8...
And turns out it is being implemented to ship with C# 8.
 
extension properties?
that feels .... wrong.
 
Yes.
Extension anything.
Even static extension methods.
 
9:11 PM
'bout time
 
So you can do Type.Foo().
 
soo .... "define anything anywhere and let the compiler figure out what the heck to call"?
 
Well, not quite. It uses the extension keyword.
 
sure, why not?
 
@mansellan retraceability and cohesion
 
9:12 PM
Meh
:-)
 
O HAI JAVASCRIPT! (wannabe)
 
I get that you can navigate to definition, but....
 
I love extension methods, and it really grinds my gears that props and statics (especially) are not there.
 
but.... why?
you're making C# more like javascript
 
9:14 PM
trivial example - class has FirstName {get;}, LastName {get;}. Extension has FullName {get;}.
 
@this Because you don't own hardly any code compared to what you use...
 
and yeah, i know names #Depend, but 5s example
the static one is really annoying. end up with StringHelper, EnumHelper... ad naseum
 
i think they finally got around to allowing "where T : Enum" too
 
9:16 PM
@mansellan Yes, C# 7.3
Also, Delegate and unmanaged, IIRC.
 
another nice one would be allowing params in the new() constraint. Must have a public ctor that looks like this
 
There is talk about defining something they call "shapes" so you can specify ctors other than new and methods by signature, etc.
 
hmm, ima vote on that
 
what does unmanaged does? (google gave me snow)
 
@this unsafe stuff.
 
9:18 PM
sorry , let me rephrase -- what unmanaged has to offer over unsafe ?
 
oh so I can make a generic out of C++ non-ref class then?
 
Basically.
Generic constrains are getting powerful.
But, I don't know where the mentioned "shapes" are on the roadmap. They were going to be a TON of work.
Might be C# 9/10.
 
9:39 PM
[rubberduck-vba/Rubberduck] build for commit 1709e3a4 on unknown branch: AppVeyor build succeeded
> # [Codecov](https://codecov.io/gh/rubberduck-vba/Rubberduck/pull/4006?src=pr&el=h1) Report
> Merging [#4006](https://codecov.io/gh/rubberduck-vba/Rubberduck/pull/4006?src=pr&el=desc) into [next](https://codecov.io/gh/rubberduck-vba/Rubberduck/commit/f86f7be13d15c8ba7610c1684c4576ce43784598?src=pr&el=desc) will **decrease** coverage by `0.13%`.
> The diff coverage is `32.84%`.


```diff
@@ Coverage Diff @@
## next #4006 +/- ##
=======================
[rubberduck-vba/Rubberduck] build for commit 1709e3a4 on unknown branch: 53.54% (target 0%)
 
10:10 PM
Anyone know why [^.] wrapping causes a regex to suddenly have an unclosed ) ?
[^.(0[1-9]|1[012])[- \/.](0[1-9]|[12][0-9]|3[01])[- \/.](19|20)[0-9]{2}]

pattern error of unclosed ) on first )

Where as
(0[1-9]|1[012])[- \/.](0[1-9]|[12][0-9]|3[01])[- \/.](19|20)[0-9]{2}

is fine.

Example string
xxx xxx 10/08/2008 xxxx

Used on https://regex101.com/
 
10:26 PM
@QHarr that seems like a bug in their regex-parser
if you put that through RDs RegexAssistant, does it exhibit the same problem?
 
Ooh...I don't, yet, know how to do that.... new toy!
 
@M.Doerner just to quickly check -- I'm addressing your feedback on SuspendParser and already ahve moved the bulk of code to the ParseCoordinator -- would you agree it's appropriate to use _cancellationSyncObject to lock the access for thread safety?
(this same token is used to manage the cancellation though it's not used to start parsing; that happens outside the lock block).
 
11:13 PM
Also, in the RunAllTestCommand we have this: private static readonly ParserState[] AllowedRunStates = { ParserState.ResolvedDeclarations, ParserState.ResolvingReferences, ParserState.Ready };
this smells because a command is saying what state we can run in, while the engine only look for Ready state.
 
11:42 PM
> # [Codecov](https://codecov.io/gh/rubberduck-vba/Rubberduck/pull/3956?src=pr&el=h1) Report
> Merging [#3956](https://codecov.io/gh/rubberduck-vba/Rubberduck/pull/3956?src=pr&el=desc) into [next](https://codecov.io/gh/rubberduck-vba/Rubberduck/commit/024eecde21aeca61da2cd9d66e2dfadfe0ed2be8?src=pr&el=desc) will **increase** coverage by `3.97%`.
> The diff coverage is `14.81%`.


```diff
@@ Coverage Diff @@
## next #3956 +/- ##
=======================
> Addressed most of @MDoerner 's comments and hopefully the revised version is now thread-safe.

However, what I could not come up with a clean way of specifying allowable state other than `Ready`. Originally, the test engine (actually the command) would allow running tests when state is in `ResolvingReferences`/`ResolvedDeclarations` in addition to `Ready` -- however if I pass it, I cannot make sense of what state the `SuspendParse` should set back as it would be an incorrect thing to do and
 
soo @QHarr how do you like your new toy?
 
> First, sorry for the late reply, but I was disabled for a couple of weeks. And sorry for expecting you translation my log (just read the first 2 lines and expected the rest to be english too).

I just managed to fix the error, but this one is not the initial.

The Error "The file or assembly ... or a dependency of it was not found" was caused by using an extracted source .zip (not my GIT-Version, because I wanted clean source files to prevent errors in my repository files distracting me fr
> First, sorry for the late reply, but I was disabled for a couple of weeks. And sorry for expecting you translation my log (just read the first 2 lines and expected the rest to be english too).

I just managed to fix the error, but this one is not the initial.

The Error "The file or assembly ... or a dependency of it was not found" was caused by using an extracted source .zip (not my GIT-Version, because I wanted clean source files to prevent errors in my repository files distracting me fr
[rubberduck-vba/Rubberduck] build for commit c82b58e0 on unknown branch: AppVeyor build succeeded
> # [Codecov](https://codecov.io/gh/rubberduck-vba/Rubberduck/pull/3956?src=pr&el=h1) Report
> Merging [#3956](https://codecov.io/gh/rubberduck-vba/Rubberduck/pull/3956?src=pr&el=desc) into [next](https://codecov.io/gh/rubberduck-vba/Rubberduck/commit/024eecde21aeca61da2cd9d66e2dfadfe0ed2be8?src=pr&el=desc) will **decrease** coverage by `0.07%`.
> The diff coverage is `24.03%`.


```diff
@@ Coverage Diff @@
## next #3956 +/- ##
=======================
[rubberduck-vba/Rubberduck] build for commit c82b58e0 on unknown branch: 53.74% (target 0%)
> First, sorry for the late reply, but I was disabled for a couple of weeks. And sorry for expecting you translation my log (just read the first 2 lines and expected the rest to be english too).

I just managed to fix the error, but this one is not the initial.

The Error "The file or assembly ... or a dependency of it was not found" was caused by using an extracted source .zip (not my GIT-Version, because I wanted clean source files to prevent errors in my repository files distracting me fr
 
^^ fixed formatting error
 
11:59 PM
> First, sorry for the late reply, but I was disabled for a couple of weeks. And sorry for expecting you translation my log (just read the first 2 lines and expected the rest to be english too).

I just managed to fix the error, but this one is not the initial.

The Error "The file or assembly ... or a dependency of it was not found" was caused by using an extracted source .zip (not my GIT-Version, because I wanted clean source files to prevent errors in my repository files distracting me fr
 
00:00 - 17:0017:00 - 00:00

« first day (1442 days earlier)      last day (1738 days later) »