« first day (1653 days earlier)      last day (1527 days later) » 

12:00 AM
RELOAD!
 
@M.Doerner I've been manually editing the designer file pending a fix to the build.
 
[rubberduck-vba/Rubberduck] 3 opened issues. 25 issue comments.
 
I do not really like that, but ok.
 
I don't like it much either, but it beats fighting it ATM.
 
Argh, typo in my manual entry.
 
12:50 AM
Darn, wrong assumption about the necessary member attribute position.
 
1:15 AM
Why does it alwys feel so good when a feature finally works?
 
The ducks I rescued from the claw machine.
My painting along with it's muse on top.
Make the best of a bad situation.
Co-worker: Why doesn't my Excel worksheet work?
Me: Ask the duck before you ask me.
 
1:43 AM
> This PR closes #4630 and closes #4626. This PR adds the new AddMissingAttributeQuickFix for the MissingAttributeInspection. At its core is the AttributesUpdater, which provides methods to add, remove and update attributes, both on members and modules. Moreover, this PR contains a complete rewrite of the MissingAttributeInspection that previously redid all the work already done regarding the annotations. Furthermore, all attribute annotations now expose the attribute and the values...
in separate properties. This makes matching to attributes easier. In addition, the matching behaviur t attributes has been changed. Whether there is an attribute fr a specific inspection now only depends on the attribute and not the vlaues, with one exception VB_Ext_Key, fr which the first vlaue , the key, is taken into account. As a consequence, an @Expsed annotation on a class module will never trigger the MissingAttributeInspection. That will be handeled by a future...
AttributeValueOutOfSyncInspectin. Finally, I added three new anntations: the @ModuleDescription annotation, which is module annotation corresponding to @Description for member;, the @ModuleAttribute annotation and the @MemberAttribute annotation. The latter two require at least two parameters. The first is the attribute name and the second the first value. These two allow attribute annotation synchronization for attributes for which we have ne dedicated annotation. I tested this...
both fr module and member attributes in the VBE and it works.
 
@IvenBach I think your picture captures the state of the duck even better than the original.
 
Irks me my landscape photos come out upside down. #LeftyCurse
 
2:05 AM
[rubberduck-vba/Rubberduck] build for commit f668115c on unknown branch: AppVeyor build succeeded
 
2:45 AM
> Wow, this is huge! Awesome work!!
 
@M.Doerner I'll definitely review the PR, but how do you feel about including it in 2.4? IMO along with the refs explorer that makes a solid release, and a nice xmas gift for our users! =)
 
 
3 hours later…
6:01 AM
 
6:33 AM
[rubberduck-vba/Rubberduck] build for commit 421c2137 on unknown branch: AppVeyor build succeeded
 
7:03 AM
 
 
5 hours later…
11:37 AM
> Yeah, that seems to solve the issue. Thanks, and sorry for not noticing the option.
 
@MathieuGuindon A late Xmas or new years gift.
 
12:13 PM
@MathieuGuindon I think the one fundamental part missing when you tried to implement this earlier was the attributes code context on the declarations that can have attributes.
I added that this summer.
 
 
2 hours later…
2:26 PM
@Duga very strange that should happen in Excel...
 
> Glad to hear that. To confirm, this was on Excel. 2013 or Excel 2016?
 
@mansellan agreed Maybe this is still a problem even on recent version?
 
 
So yeah definitely not a old host problem apparently
 
> Thanks! I'm a bit surprised that this exists still even on Excel 2016, we had presumed it was an issue for the older hosts, which is why this fix existed already. We may need to update the documentation to indicate it may be universally applicable. Again thanks for the update!
 
2:35 PM
I also wonder if that's actually a VBE problem, nothing to do. With hosts per se.
 
@this perhaps... it looks like kinda the opposite problem though - like WPF is not declaring the process DPI aware. Using the new setting "solves" it by giving Windows the job of scaling, but it shouldn't be needed...
 
> Just a long shot - do have have any other VBE addins loaded alongside RD?
 
@Duga two things of note though - DPI at 125% which AFAIU is the "threshold" point for different scaling strategies, and multiple monitors which could indicate an issue with "per monitor" DPI
 
> Yes, I also have the VBA Code Cleaner plugin, but that is all; this one.
> Thanks!, We'll try and repro, because it shouldn't be necessary to set that option here - as bclothier noted, it was added for very old VBA hosts.
[rubberduck-vba/Rubberduck] build for commit f9b81cbe on unknown branch: AppVeyor build succeeded
 
3:15 PM
@Duga hmm... COM add-in written in VB6
 
3:33 PM
[rubberduck-vba/Rubberduck] build for commit 94b8f77f on unknown branch: AppVeyor build succeeded
 
3:48 PM
 
4:09 PM
OK, somebody stop me.
I'm about to write a markdown parse with ANTLR and a WPF control to display it.
 
@Hosch250 STOP!!!
Looking into getting dual nationality with Germany
 
Sick of UK?
 
Keeping optoins open post-Brexit
If I want dual, I have to get it before we leave
Otherwise would have to give up UK to get German nationality
 
@Duga I could not even find a documentation of this mystical properties, not even in VB6 help files.
So I had to experiment a bit and got the following:
Hide this member
Attribute Something.VB_MemberFlags = "40"

Don't show in property browser
Attribute Something.VB_MemberFlags = "400"

User Interface Default
Attribute Something.VB_MemberFlags = "200"

Property is data bound
Attribute Something.VB_MemberFlags = "4"

This property binds to datafield
Attribute Something.VB_MemberFlags = "24"

Show in Databindings collection at design time
Attribute Something.VB_MemberFlags = "14"

Property will call CanPropertyChange before changing
Attribute Something.VB_MemberFlags = "c"
note that it's actually a hexadecimal string which explains why it's quoted as if it was a string.
Furthermore the databinding attribute is mandatory for all other data binding attributes, which is why they are Or'd with 4.
 
Interesting. VB6 apparently has several more special DispIDs that are not defined in COM documentations.
 
@this Those are all members of FUNCFLAGS.
 
ah, good catch!
apparently a subset?
(or maybe I don't know where the checkboxes are for the other flags)
 
Does it do anything with the ones that aren't checkboxed?
 
5:33 PM
i actually just tried w/ 1
(e.g. restricted)
VB6 seems to just ignore it.
 
FRequestEdit would be huge in Excel VBA.
 
of course, since it can't actually have restricted members.... right?
 
agreed but I don't think VBA will recognize that flag
I already know it doesn't consider the hidden flag which does work in VB6.
I think the attributes on the text file are more like a "request" than "order".
i'm a bit unsure if we need to be aware of VB6's other special dispid.
 
Which one is that?
 
5:36 PM
there are several
for example -520 => Appearance
 
For use on ActiveX controls?
 
I assume so.
there are other properties though
the left dropdown corresponds to the dispid/usermem_id
 
while the other 2 dropdowns writes VB_ProcData stuff. I assume that is what influence the appearance in an activex control designer.
 
@Duga I apparently can't use MD correctly today.
Hmm... it might be interesting to play with some of those and see what it spits out.
 
5:40 PM
I'd want to know if those have any relevance to RD's work.
for one I wasn't expecting to find more undocumented negative dispid. That can impact the assumptions about the dispid for instance.
 
Just for background, adding the hidden attribute is only used by the com collector atm, and nothing reads the value.
 
I included those mainly for use in a future RD object browser.
 
it's not being used to skip hidden members in the collection, right?
 
There's some other stuff in there that is being collected that isn't currently used anywhere.
 
The only thing I did there in my PR is to bring the add and has into sync.
 
5:45 PM
if we do end up with a new OB, those extra information, including the undocumented stuff from VB6 becomes relevant, I think.
 
I will fix the hidden attribute in my next PR.
 
that also implies that the COM collector probably is marking members wrongly (unlikely given that it's quoted and I don't think usermem_id is normally quoted)
and never ever actually marking any hidden members as actually hidden.
 
Argh, off to update designers manually again.
 
hmm. I probably should see if my PR can do something about that. Simply just edit a resx file and verify the designer updates, too, right?
 
@M.Doerner LOL - you think that's bad, you should try working on UI.
 
5:51 PM
I can imagine the pain.
 
you know, i saw a comment where a hack was to have a .NET framework .sln file that opens the same project as the one used by .NET core.
that way you can edit it using the .NET framework solution and get all designers & etc.
while the build uses the .NET core
 
I'm sure that's intuitive, right?
@Duga just to clarify will you at least fix the name?
 
No, my next PR branched off from that PR is half-way done already.
I will fix the attribute name there.
 
ah ok
 
5:55 PM
Should anything really need a fix in the current PR, I will push it in with that.
 
I think the VirtualBox host integration with Windows 10 has a really bad memory leak.
 
I've heard VB to be hit'n'miss.
 
For some values of VB?
 
:)
do you have hyper-v built-in?
 
In Linux Mint?
 
6:03 PM
ah could be a wee bit of problem.
 
I do have hardware VT-x enabled. I wonder if I should disable Hyper-V in the guest OS.
I don't really have a need for nested VMs...
 
6:41 PM
None of you interested in this:
4
Q: VBA Property calling Get instead of Let

3xGuyHello I'm trying to implement an interface so that I can have multiple models and can pass different models in to different methods. In this instance I am trying to set a workbook variable but can not seem to understand why this is calling get method instead of the let. The method that is settin...

or not enough info in the question?
 
@QHarr Answer incoming shortky.
 
6:58 PM
gotcha. Got the resx fixed.
just need to generalize it.
 
@M.Doerner yey. Thanks.
 
Interesting thing is that the specification of the Set statement has a stupid copy-paste error.
It states Proerty Let although it wants to state Property Set.
 
Interesting. This will work:
  <ItemGroup>
    <EmbeddedResource Update="**\*.resx">
      <Generator>PublicResXFileCodeGenerator</Generator>
      <LastGenOutput>$([System.String]::Copy('%(FileName)')).Designer.cs</LastGenOutput>
    </EmbeddedResource>
    <Compile Update="**\*.Designer.cs">
      <DesignTime>True</DesignTime>
      <AutoGen>True</AutoGen>
      <DependentUpon>$([System.String]::Copy('%(Filename)').Replace('.Designer', '')).resx</DependentUpon>
    </Compile>
  </ItemGroup>
but it has the unfortunate side effect in where that whenever any resx file is edited, csproj automatically adds hard-coded value version of the above.
 
@this Weren't we seeing something similar to that before?
 
as inconvenient as it may be, I'm inclined to leave both the globbed version and the hardcoded version. The globbing at least will ensure that if any new resource is added, it will be generated.
Yes but back then I didn't fully understand the causes.
 
7:07 PM
Will it attempt to compile them twice?
(not sure that I care)
 
I do not think so - msbuild won't do it
you'd get a build error if you re-include the code for compile twice
and I apparently cna build the project just fine in the spite of having both versions.
I'd rather keep things simple and have a working designer so I'm included to just let it do whatever
 
Interesting. I'm more inclined at this point to have the duplicates.
The manual edits are really tedious, and I need to do some work in the CE next so...
 
yeah, i hear you.
i'll do some more tests and update the deployment PR
 
:thumbs-up:
 
@M.Doerner Helpful answer thank you. +
 
7:16 PM
@Comintern no, it's an "Update" directive. So the already found compilation item is only updated, not duplicated
last to update within the csproj file wins
 
Ah, that makes sense.
 
in this case, it wasn't working until I chnaged from Resource to EmbeddedResource
 
ya, I don't know the difference between the two, though..
 
(as well adding the DesignTime and AutoGen)
apparently there is and the .resx files are supposed to be embedded (based on their Build Action property in VS)
eh.... we have resources files all over the map
6 projects, actually.... VBEditor, Resources, RegexAssistant, Resources, Parsing and Core.
let's see if using baseproject.csproj blow it up
I wonder if that is a contributing factor to Iven's inability to build. Though he said he pulled from the next, and cleaned out the bin/obj, if he still had a stale resx file, would that do it?
welp I done and broke the build
 
7:31 PM
It might. Iven's situation has me completely stumped.
 
though, you'd think that from a clean repo, that wouldn't happen
I could see how a dirty repo might have a stale file but he did try clone, IIRC.
 
This doesn't look right to me:
result.Setup(m => m.ComponentNames()).Returns(() => _vbComponents.Object.Select(component => component.Name).ToArray());
 
just confirming - are designers in the core working for you?
 
Does the result of the Select().ToArray() get evaluated when the anonymous function is created?
It doesn't seem like it should, but it's acting as if it does.
 
It should get evaluated when called.
 
7:39 PM
@this The xaml ones?
 
whatever
xaml or resources
 
@M.Doerner That's what I thought - Returns takes a Func<> as an argument. I'm still a bit stumped on the CE test setup thing.
I'll just clean it up and move on I guess...
 
I have to say, it is rather convenient that my yearling badges come up during winter bash. (free hat)
 
I should join a stack to take advantage of that for next year.
 
7:58 PM
What do I have to do to set an InspectionType for a new inspection other than adding an entry in Rubberduck.Core.App.Config?
 
[rubberduck-vba/Rubberduck] build for commit 39439883 on unknown branch: AppVeyor build succeeded
 
@M.Doerner IIR the only places you need it are Settings.settings, Settings.Designer.cs, and app.config. IIR the three files should be "linked" in the build, but I'd verify that you get changes in all 3 of them.
 
Ah, ok. The link probably broke.
Thank you VS for a non-resizable modal dialog that is taller than my monitor.
Hitting enter several times seems to have been the right thing to do.
Ok, that did not work.
Somehow, the default isnpection type does not want to change.
Ok, hitting enter was the wrong option.
@Comintern How do I properly change the setting in Settings.Settings?
 
8:35 PM
I'm trying to remember. I seem to remember it being a pain.
 
Found it: Open With -> Source Code Editor
The desinger is garbage.
 
^ That part I do remember.
That and copying and pasting huge sections of XML into a tiny textbox.
 
Using the source code editor is way easier.
 
Agreed. I think last time I just used NP++. I always forget about Open With...
 
> This PR is the next step after PR #4641 and based on that PR. DO NOT MERGE THIS BEFORE PR #4641!!! This PR introduces the new AttributeValueOutOfSyncInspection along with the corresponding AdjustAttributeValuesQuickFix. The inspection finds all instances of attribute annotations for which there is a corresponding attribute, but the value(s) do not match. So, it covers the empty spot of the MissingAttributeInspection. In particular, it deals with the @PredeclaredId and @Exposed...
annotations for which the corresponding attribute always exists in class modules. The AdjustAttributeValuesQuickFix does exactly what the name suggests. I verified that this works in the VBE using the example of the @PredeclaredId annotation.
 
8:50 PM
@Duga Technically, the label is not correct, but I think it good enough to serve as a reminder to merge the PRs in the right order.
 
Semantics. The "issue" would be "requires #4641".
 
It actually includes that PR, but not merging the first causes some commit messages to reference a non-merged PR and does not trigger the automatic issue closing.
 
> As discussed in review comments to PR #4641, we should centralize the magic attribute values like `VB_UserMemId = -4` for enumerators in one place and always retrieve them from there.

A natural canditate for where the corresponding information can live is the TypeLib API that already defines corresponding enums.
 
@Duga So we do not forget.
 
[rubberduck-vba/Rubberduck] build for commit 6948607e on unknown branch: AppVeyor build succeeded
 
9:35 PM
> I do not see any tests for the scenarios where an annotation is removed.

Suppose we have a class that contains the annotation `@Exposed`, and the attribute is set at `VB_Exposed = True`. I then remove the annotation from code pane. Will this fire an inspection in that scenario?
> There are only inspection results for annotations. When an annotation gets removed, there is no result.
That would be a situation for the no longer implemented `MissingAnnotationInspection`.
> I also wonder if we need to provide aliases. For example, `VB_UserMemId` is just `DispId`. If we choose to create a new enum `VbUserMemberId`, its members should probably remap to existing `WellKnownDispIds` enum.

Another advantage of aliased enum would allow us to add values that are apparently known only to VB but not COM in general, an example being `-520` which indicates its an `Appearance` member, whatever it means. This would help to keep the context straight at expense of extra compl
 
10:25 PM
OK, so dimming unused references seems to work. Should there be any sort of warning for attempting to remove a reference that is being used in the project?
 
@mansellan I stopped!
I got it working with MS's markdown parser and shoving crap into a richtextbox :)
 
MS has a markdown parser?
 
Yeah, on NuGet.
1 hour ago, by Hosch250
Yeah for https://docs.microsoft.com/en-us/dotnet/api/microsoft.toolkit.parsers.markdown.m‌​arkdowndocument?view=win-comm-toolkit-dotnet-stable.
I'm actually pretty proud of my thing now :)
 
Nice. I may have to check that out.
 
I'm too lazy to do a GIF ATM, but if you want, it's at github.com/hosch250/codenamecurlew
Next, I need to A) move stuff from being hardcoded to being stored in a JSON file or something.
B) start start writing .md's for the content.
C) perhaps write an editor so I can write the docs more easily and make sure I don't screw the JSON ever.
 
10:36 PM
@Comintern do we currently tell how many there are? May be useful in deciding whether to remove or not.
Hmm or maybe that's better as an inspection/ quickfix
 
@this We could - I'd just need to return the Count() as opposed to the Any(). The only downside would be not taking advantage of the early exit.
@this I was going to add an inspection too (next PR after this merges). I was thinking of the use case where, for example in the screenshot above, the user tries to remove the scripting runtime.
Message box - "You are about to remove a reference that could potentially break this project. Continue? [Yes] [No]"
 
For that functionality i think the messagebox is fine
They can click no then use the safe delete refactoring
 
On OK or Apply, or when they try to remove it from the ListView?
 
which probably is better than an inspection i think
i would say apply. #FailFast
 
OK
 
10:45 PM
No, Apply.
;-)
 
@this We have one now?
I've not done the settings UI yet--just defaulted it to the code page for now.
Next up: formatting code from the markdown nicely.
For now, I'm going to forego syntax highlighting.
Avalon edit doesn't look like it'll place nice being nested in the RTF format.
 
11:11 PM
@Hosch250 not yet.
 
11:56 PM
Interesting, when imporing a class module with the default attributes removed, it imports just fine. Moreover, after exporting, the defaults are there again.
With this being the case, I think I will add a RemoveAttributeQuickFix for the AttributeValueOutOfSyncInspection and the potential reimplementation of the MissingAnnotationInspection.
 

« first day (1653 days earlier)      last day (1527 days later) »