« first day (1709 days earlier)      last day (1471 days later) » 
00:00 - 15:0015:00 - 23:00

3:00 PM
@M.Doerner I was not sure if there would be a sizable delay between the request and the parse, or that parse could get interrupted, an be further delayed.
@Comintern ask the octocat?
 
The recovery happens right after figuring out which modules have to be reparsed.
You should have about half a second to switch to another module after the rewrite starts.
Well, for attribute rewrites you have more time.
However, code panes closing and opening again might tell you that you probably shouldn't.
 
Oh wow - there's a useless feature. You can show all open issues in all repositories on GitHub.
> Showing 7,579,143 available issues
 
@Comintern hmm. the octocat has issues.
 
6,086,601 of those are closed though. Whew!
 
github.com/issues/assigned
^^ this is pretty useful
 
3:04 PM
If you find out where to open suggestion issues for github, I have a few regarding the mobile version.
 
That is useful.
AFAICT, the only place is on the github.com/contact page. I'll ask in my request if there's a better place to do that.
 
@M.Doerner IIRC the "contact us" thing is intended for opening issues
 
You'd think they'd use their own platform for that.
 
Surely you're not suggesting that the octocat eats dog food?
 
meh. GH issues aren't remotely well enough integrated in PM tools, though
at least yet
 
3:06 PM
Cat food.
 
so traditional PMs are going to have issues with issues
 
@Vogel612 yes, excellent way to be remembered about all the old issues you assigned to yourself in all your projects that you left unfinished...
 
Issues are meant to be used by programmers, and that shows
 
Hmm. I saw a bunch of apps for PM integration
 
@SimonForsberg Yea, it's downright disheartening sometimes
 
hmm looks like we have 300 releases now.
 
~sigh yea I have to clean up the ages old 2.2.0 prereleases
 
Hopefully it'll get easier without much manual clicking
 
I kinda need to finish automating that
We do have a project for that under the rubberduck-vba org
I just didn't get around to finishing that project
mostly because the functionality is not yet supported by octokit.net
 
Unrelated: I commented earlier on other issue about an COM exception from an inspection and it got me thinking. Am I correct to think that inspections no longer need COM access anymore once we have all the ComProjects? QuickFixes might need some COM access but definitely not inspections.... right?
 
3:23 PM
Sheet can be referred to by codename needs COM access
 
That's what I commented on - and no I don't think so.
 
I think a handful of inspections actually do some COM access, especially the host-specific ones are relevant there
 
See, we should be using the cached values from ComProject and its children.
 
> >
>
> FYI - it should be `%APPDATA%`, not `%APP_DATA%`. (the template has been fixed, sorry for the inconvenience!)

Thanks! Don't know how that underscore snuck in!
 
Since inspections are meant to be "read-only", I don't see any reasons for it to need to get to the actual COM objects (and throw exceptions). WE should be instead providing it with all the COM metadata it may need from a cache.
 
> Finally (as an aside), it seems odd that I need to send this through GitHub Support. I half-way expected that you'd be using your own platform for stuff like this. If someone else had "opened this issue" and you'd responded "no, we can't do that" on an "issues page", I wouldn't have spent 15 minutes composing this.
 
@this For the sheet can be referred to by codename, we need the properties of the underlying document object - that can't go on the ComProject - it should go on the DocumentDeclaration.
 
> I've seen discussion on the subject, but for the life of me cannot seem to find anything to get me started on how to actually use the PredeclaredID template (or any template for that matter). I'm probably just not looking in the right place.

A point in the right direction is much appreciated.
 
@Comintern Ok, but the point remains - we should have no reasons to need COM accesses for the inspections now that we can get all the metadata we need
 
3:37 PM
> These can currently be added via the Code Explorer:

![screenshot from 2019-02-09 09-35-56](https://user-images.githubusercontent.com/8944005/52522701-6bd98700-2c4e-11e9-90b6-4e5ceefce9a0.png)

If you have suggestions as to how to make this feature more discoverable, we're all ears.
 
aw man I broke the menu
 
@this Definitely agree.
Broke the menu?
 
 
You sure I didn't do that?
 
no it was fine just before - i was checking on the template menu
let me try to repro, one sec
 
3:41 PM
I'd assume me breaking it is the much more likely explanation.
 
yep, reproduced
but I didn't reproduce the other issue
so try this out -
on a new blank workbook, after the initial parse - select the project node
use the toolbar's Add button. You should see template listed and you should be able to get into the submenu.
(the first time I did, it was disabled. Next time, it was enabled)
dismiss the menu without doing anything
then on any node... say, Sheet1, right-click again, and navigate to the template submenu.
dismiss that again.
then go back to the toolbar's Add button. Blank menu
 
Hmmm... that sounds like a binding problem. Gimme a sec - let me run that in a debugger.
 
[rubberduck-vba/Rubberduck] build for commit 8b393935 on unknown branch: AppVeyor build succeeded
 
Should I add that to the issue?
 
Let me see what the output says.
Nothing on that binding. I'd open that as its own issue though.
Wonder what this is about?
> Exception thrown: 'System.IO.DirectoryNotFoundException' in Rubberduck.VBEditor.VBA.dll
 
3:53 PM
eh?
any more about the context?
 
It was during reference collection. I'm thinking I might just have a bad registry entry or something.
 
Back to the discoverability - TBH I do not like that I had to use a submenu. I originally wanted it to go to the bottom of the menu. However, WPF gets a bit uppity when you want to try mix static and dynamic contents for building a menu
 
It didn't seem to effect anything though. My main concern is that it wasn't handled or logged.
 
templates do does IO, though
 
@this Wouldn't that get you into a situation where your context menu could be like a foot long?
 
3:56 PM
possibly but 3 submenu deep is too much for me. I try to keep to 2 level deep rule
 
Hmmm... Based on where it was in the output, I don't think it was related to the templates unless we're doing that IO statically in a weird spot.
With context:
2019-02-09 09:44:31.4078;DEBUG;Rubberduck.Parsing.VBA.ParseCoordinator;Parsing run started. (thread 5).;
2019-02-09 09:44:31.4078;INFO;Rubberduck.Parsing.VBA.RubberduckParserState;RubberduckParserState (9) is invoking StateChanged (Started);
2019-02-09 09:44:31.5128;INFO;Rubberduck.Parsing.VBA.RubberduckParserState;RubberduckParserState (10) is invoking StateChanged (LoadingReference);
Exception thrown: 'System.IO.DirectoryNotFoundException' in Rubberduck.VBEditor.VBA.dll
2019-02-09 09:44:31.6478;DEBUG;Rubberduck.Parsing.Common.ParsingStageTimer;Loaded and unloaded referenced libraries in 3
 
besides, if that did become a problem, we should be able to come up with a More... or whatever.
 
I think it needs a dialog, with a simple "Add Template" menu item.
 
I can see a dialog if there's macros for it
but for a simple add? Please don't go VB6 on me.
woah, i got the blank menu on the right-click for a node. so it's not just the toolbar
 
I like short context menus. The key word is "context". If you have a context where you can do anything with it, you're either picking the incorrect context or leaking out of it IMO.
FML - sounds like it's breaking the binding completely.
 
4:03 PM
[rubberduck-vba/Rubberduck] build for commit 76bc3584 on unknown branch: AppVeyor build succeeded
 
The root WPF issue is that the context menu isn't really "inside" the visual tree of the control that exposes it.
There's a bit of gymnastics involved to bind on the placement site.
 
and i got the disabled menu, too. not sure how to repro that. Seems random
 
I think this might be the problem:
public ObservableCollection<Template> BuiltInTemplates =>
    new ObservableCollection<Template>(_templateProvider.GetTemplates().Where(t => !t.IsUserDefined)
        .OrderBy(t => t.Name));
Bet you anything the binding breaks when the ObservableCollection is newed up. It should probably be cleared and have the current item set added back into it.
That could potentially leak templates too I think.
 
> **Rubberduck version information**

Version 2.4.0.16922
OS: Microsoft Windows NT 6.1.7601 Service Pack 1, x64
Host Product: Microsoft Office 2010 x86
Host Version: 14.0.7227.5000
Host Executable: EXCEL.EXE

**Description**

If you use "Add" menu in a certain sequence, you can arrive to a blank menu next time you try to use the menu. Example:

Blank menu on toolbar:
![image](https://user-images.githubusercontent.com/2367644/52522715-9f1c1600-2c4e-11e9-865c-0693dc9202c2.png)

Blan
 
@Comintern As I told you before, I'm only merely your local WTF expert.
 
4:11 PM
I think I did that.
 
Hmm - not sure if it needs to be dynamic. Is there a point in enable adding template at runtime?
 
Not having to save, quit, then re-open the project after you add one?
 
I originally anticipated that it would be read only once
At least not for the built-in templates
 
The built-in ones can be static.
The user ones probably shouldn't be.
 
I think that was what I intended.
Probably not, no.
 
4:13 PM
They use pretty much the same code.
 
yeah, I didn't see a point in having one codebase for builtin and other for users.
 
public ObservableCollection<Template> UserDefinedTemplates =>
    new ObservableCollection<Template>(_templateProvider.GetTemplates().Where(t => t.IsUserDefined)
        .OrderBy(t => t.Name));
Minus the !.
 
then I screwed up.
 
Although if they use the same property (combined templates), both of them are dynamic.
 
yeah, those have a file on the filesystem
 
4:15 PM
FWIW, I've been fixing bindings like that in every dialog I've touched so far.
The blender missed that one though.
 
given that my changes was just before your CE PR, I probably copied from other bad examples.
 
Up to 4 rows of pinned code panes in VS. It's starting to look like skiwi's browser in there.
2
 
> Currently, nearly all handling of the selection of the code panes and the active selection use the ICodePanes and IVBE directly. Since we now have the ISelectionService, the access should get changed to use that instead.
> Fixed by PR #4693
 
4:31 PM
@M.Doerner Is IDeclarationFinderProvider intended for "public" use? I only need a DeclarationFinder in a command and didn't want to inject the whole parser state.
It has void RefreshDeclarationFinder(); on the interface though, and I'm pretty sure I wouldn't want to do that from a caller outside Rubberduck.Parsing.
 
4:54 PM
> Side note, this template is kind of superseded by the @Predeclared annotation: you can now easily make any class have a VB_PredeclaredId = True attribute value by simply adding this annotation, then parsing and reviewing inspection results under the "Rubberduck Opportunities" category: an inspection result will warn about the annotation being present without a corresponding attribute value, and a quick-fix can be applied to "synchronize" attributes with the annotations, either by removing
 
@Duga i guess the template is only good for convenience of creating a new blank class without having to type that extra mouthful of @PredeclaredId
 
@this does the template include the annotation? I can't recall..
 
yeah, I think you? someone else? added it
it originally didn't have it but at around the time of Max's PR merging, someone updated it.
Actually Max did
 
Ok cool
 
5:10 PM
#TIL amend last commit does not work well once pushed
 
5:25 PM
Can someone do me a favor and proof-read this answer to make sure everything makes sense?
0
A: Can I add Integer Items to VBA Dictionary byRef

Cominterntldr; No, you can't add an intrinsic type to a Scripting.Dictionary ByRef. VBA is not a managed (garbage collected) environment like .NET, so proper memory management would be impossible. For the second part of your question, the thing to keep in mind is that Dictionary is a COM object - when ...

Got nerd-sniped there.
 
[rubberduck-vba/Rubberduck] build for commit 4e289787 on unknown branch: AppVeyor build succeeded
 
"s-for-string" prefixing variable names is Hungarian Notation done wrong and I'll die on that hill. Thank you @spolsky for writing this awesome article, I must have linked to it a thousand times over the years... So many souls to save... https://www.joelonsoftware.com/2005/05/11/making-wrong-code-look-wrong/
 
5:45 PM
[rubberduck-vba/Rubberduck] build for commit 8e2518b1 on unknown branch: AppVeyor build succeeded
 
@Comintern um, VBA is garbage-collected....
It just does it by ref-counting, and there's much less management in comparison to .NET runtime but it is still basically garbage collected.
 
Is there a better term to contrast COM ref-counting to what the .NET GC does?
Dependency graphing?
 
I would probably point out that VBA is ref-counted GC while .NET is generational GC.
In computer science, garbage collection (GC) is a form of automatic memory management. The garbage collector, or just collector, attempts to reclaim garbage, or memory occupied by objects that are no longer in use by the program. Garbage collection was invented by John McCarthy around 1959 to simplify manual memory management in Lisp.Garbage collection is essentially the opposite of manual memory management, which requires the programmer to specify which objects to deallocate and return to the memory system. However, many systems use a combination of approaches, including other techniques such...
 
Perfect. This is why I sometimes need a proof-read. Thanks!
 
the strategies section is helpful
 
5:49 PM
Does .NET use Escape analysis?
 
uhh, IDK. I only understood it uses generational strategy.
 
Yeah, probably not.
> VBA is not the same type of managed environment as .NET (which uses generational garbage collection instead of reference counting), so proper memory management would be impossible.
Better?
 
Yes
 
I should probably point out that you can't do that with a .NET dictionary either...
 
6:15 PM
in Coding Projects and Factorio Heaven, 1 min ago, by Duga
[Zomis/Duga] Zomis pushed commit 2151e003 to develop: Disable ratingdiff task (I give up. Mug wins)
 
> Ahhhhhh! So *that* is the magic!



Thank you, Mathieu!



I am having fun learning to set up models, using the proxies, and presenters. It is beginning to become a little more familiar to me. I still don’t have my head around all of it in a way that it is second nature and not yet how I “think about” a solution. And I haven’t even begun the journey down the Unit Testing path.



RD is a pleasure to use, and I know that I don’t even comprehend all that it does.



Miley



From: Mathieu G
 
@Duga It's that time of year again!
 
@SimonForsberg LOL
 
6:43 PM
Regexes: Take one problem, and now you have 100.
 
7:33 PM
@skiwi oh? You're beginning to see the errors of your ways?
 
@Vogel612 No, it's just that regexes are not always the correct tool
 
~smiles innocently
~slowly starts emitting an eerie glow
 
8:00 PM
He comes? The pony destroyer comes?
 
~cracks a slightly too wide grin
doing this reminds me of the games I used to play with Shadow Wizard in the meta chat
 
I decided running the test under the cursor wasn't good enough. Why not the whole module?
 
8:55 PM
public IList<string> Parse(string text)
{
    return text.Split(new string[] { @"\n" }, StringSplitOptions.None);
}
 
> thunderduck.png?

![thunderduck](https://user-images.githubusercontent.com/8944005/52526241-4b73f180-2c7b-11e9-919b-a65a9c1e857d.png)
[rubberduck-vba/Rubberduck] build for commit d297bfaa on unknown branch: AppVeyor was unable to build non-mergeable pull request
BUILD FAILURE!
> This should be closed with #4717
> I'd consider this closed by #4717. The last remaining artifact (spinning until the mouse gets input) appears to be framework related, so I'm not sure there's anything we can do about it.
[rubberduck-vba/Rubberduck] comintern is playing around with a project card
> Should be closed by #4717.
[rubberduck-vba/Rubberduck] comintern is bored so why not move a project card
 
9:19 PM
@Vogel612 Apparently somebody already tried, github.com/Soothsilver/mtg-grammar/blob/master/mtg.g4
 
I'm not really surprised given the popularity of MTG
 
9:44 PM
@Comintern Looking at it now, the refresh method should really be on another interface extending IDeclarationFinderProvider.
One problem is that we start to run into problems registering the RubberduckParserState to more interfaces.
On the other hand, we could make the extended interface only as an explicit dependency of the IParsingCachService.
 
OK, that's kind of what I thought. What about just exposing a single IExternalParserState interface that covers all of the "safe" functionality?
Is it problematic to bind the same class to a bunch of interfaces? I'm not horribly familiar with the internals of CW.
 
I am not a huge fan of that since it violates the interface segregation principle more again.
 
True.
 
The problem in CW is that the generic registration method takes at most seven or so interfaces.
 
On the other hand, there's a fairly common set of dependencies on the parser state.
 
9:51 PM
Most things really only need the declaration finder.
 
I guess that probably more accurate than my impression - I've been working with the exceptions.
 
Some need the parsing management, but not necessarily the finder.
For example, the recoverers I introduced, only need the parsing management.
 
BTW, the selection service is convenient as hell.
 
Thx
 
This would otherwise have been 4 times as much code and a bunch of COM:
        private Declaration FindDeclarationFromSelection()
        {
            var active = _selectionService?.ActiveSelection();
            if (!active.HasValue)
            {
                return null;
            }

            return _finderProvider.DeclarationFinder.FindDeclarationsForSelection(active.Value)
                .SingleOrDefault(declaration => declaration.DeclarationType == DeclarationType.Procedure &&
                                                declaration.Annotations.Any(annotation => annotation is TestMethodAnnotation));
 
9:54 PM
Since I have to review all users of the selection anyway, because of the focus setting, I will move those user over to the service.
 
Eventually we'll want to go through and clean up a bunch of the commands that could use the same replacement.
 
Doing that will also lessen the danger of leaking COM wrappers.
 
I haven't looked that closely at the implementation yet, but I suspect it will improve UI responsiveness - all of the stuff that has CanExecute code that checks the selection can make things like menuing sluggish.
 
10:35 PM
The implementation does just the same we have always done.
When you want the active selection, it asks the VBE for the active code pane and that code pane for its QMN and selection.
 
00:00 - 15:0015:00 - 23:00

« first day (1709 days earlier)      last day (1471 days later) »