« first day (685 days earlier)      last day (2495 days later) » 

12:01 AM
RELOAD!
[retailcoder/Rubberduck] 10 commits. 207 additions. 206 deletions.
[rubberduck-vba/Rubberduck] 17 commits. 1 opened issue. 1 closed issue. 2 issue comments. 2722 additions. 1193 deletions.
[Vannevelj/RoslynTester] 1 opened issue. 3 issue comments.
 
 
3 hours later…
2:44 AM
@Mat'sMug - Is the only reason SourceControlConfiguration is named that instead of SourceControlSettings so it will catch the correct binding convention or am I just missing something?
 
I would assume so.
 
Alright - I'm going to change it. It's been driving me nuts.
 
lol I renamed the whole settings namespace at one point because it was driving me nuts - I understand :-)
IIRC it used to be Rubberduck.Configuration, and then you had Rubberduck.UI.Settings... or vice-versa
 
I was going to mention I was getting sick of typing Rubberduck.Settings.GeneralSettings all over the place in the Rubberduck.UI.Settings namespace
 
Any ideas?
 
2:52 AM
I'm thinking that renaming the *Settingsobjects outside of that namespace to *Config.
 
I hope you have R# :-)
 
Configuration is a bit long when I'm building things like CodeInspectionConfigurationProvider.
God, I would never even attempt it without...
 
to be fair VS has improved quite a bit on that lately
 
Yeah, they're probably trying to run R# under.
So on issue #940, was there ever any decision made on loading methods?
 
none taken thus far
 
2:56 AM
Reason I ask is that when I sat down an hour ago to do my rethink-rewrite, I wound up with this:
 
I guess you should keep that in mind while refactoring
 
public interface IPersistanceService<T> where T : new()
{
    string FilePath { get; set; }
    void Save(T settings);
    T Load(T settings);
}
 
[fixed font] ;-)
 
doh!
 
I think it might be judicious to even factor string FilePath into its own interface, like..
 
2:58 AM
You can basically pass it a file path and a T and you'll get an XML file there.
 
public interface IPersistanceService<T> where T : new()
{
    void Save(T settings);
    T Load(T settings);
}
and then
public interface IFilePersistanceService<T> : IPersistanceService<T> where T : new()
{
    string FilePath { get; set; }
}
just in case
...or would that be YAGNI?
 
Makes sense, actually - the concrete implementation is class XmlPersistanceService<T> : IPersistanceService<T> where T : new()
 
public interface IRemotePersistanceService<T> : IPersistanceService<T> where T : new()
{
    Uri Location { get; set; }
}
 
I see no reason you couldn't have a class SqlServerPersistanceService<T> : IPersistanceService<T> where T : new()
 
you're reading my mind
 
3:01 AM
To bad I'd have to write that code again from scratch... Stupid work NDA.
 
you know, every single time I re-wrote something, it was better the 2nd time around :)
3
 
It would actually be the 3rd time, so it would have to rock.
 
lol
btw did you see the article I put up on RD News?
 
I did - you flatter too much #blush#.
That's actually the thing I love about open source - lots of fresh eyes.
 
wait, I haven't written anything about the Smart Indenter port :)
 
3:06 AM
You might want to hold off until I get all the kinks out...
Which reminds me - leave the end of line comments off when you're doing your demo ;-)
 
lol
I'm not flying to Amsterdam
I'll label the release as "alpha" and "pre-release" to be clear
the code explorer won't even be in there
 
IFilePersistanceService<T> is trivial to pull out, so I'm going to do it, YAGNI be damned. Maybe having the interface available will encourage a bunch of implementations.
 
I agree, and I support it. ISP is part of SOLID
 
I should put in a IniPersistanceService<T> for the old-timers.
 
LOL!
wait wait, RegistryPersistanceService<T> too
 
3:10 AM
MsgBoxAndPenPersistanceService<T> for the SO newbies who can't Debug.Print?
 
3:25 AM
@Comintern does this make any sense? I'm not sure about inheritance here:
    /// <summary>
    /// A <c>Dictionary&lt;ProjectId, Priority&gt;</c> that holds the order of a <see cref="Reference"/> for each <see cref="VBProject"/> that uses it.
    /// </summary>
    public class ReferencePriorityMap : Dictionary<int, int>
    {
        private readonly string _name;
        private readonly Guid _guid;

        public ReferencePriorityMap(string name, Guid guid)
        {
            _name = name;
            _guid = guid;
        }
    }
 
<int, int>?
 
yeah. ProjectId being the HelpFile .. oh wait, that's a string
<string, int> then
is it confusing though?
 
A bit. So you have ProjectId 1->M Reference 1 <-> Guid ?
ProjectId 1->M Guid 1 <-> 1 Index rather?
 
I think I can drop the name and only use the guid. I'll merely use it for Equals and GetHashCode, and well for knowing which dictionary to pull given a Reference
oh crap
 
I'd be more inclined to extend Reference with an Index property.
 
3:33 AM
project references are also in the precedence order
@Comintern I thought so too, but then I'd need one for each project
because every project can have the same reference with a different priority
and I don't want to load 45000 COM declarations per project if I can avoid it ;-)
 
I'd probably do something silly like IDictionary<Project, IDictionary<Reference, int>>, but then again I'm usually the only person who reads my code...
 
it's not too crazy actually
except Project isn't reliable, so that'd be the string / ProjectId
 
Right, just gets the idea across better than <string, <reference,int>>
 
yeah
 
Can lead to some impenetrable Linq expressions though. I'd say it depends on how you'd typically call it.
 
3:41 AM
can't be worse than the linq of code inspections and refactorings haha
 
foreach (var item in from item in foo.Where(p => p.Key.Equals(search)) from subitem in item.Value.Where(r => r.Key.Equals(reference)) select item)
R# needs a rubber duck sometimes.
 
4:35 AM
oh nice, VBAProject cannot reference another project named VBAProject, because "name conflicts"
that simplifies things a little
 
I think it's sad that I'm surprised by that.
 
lol
the VBE could very well disambiguate them by FullPath
 
The principle of least astonishment would dictate that it just pick one at random.
 
heck, I thought that was why you couldn't reference an unsaved project
yeah that whole "priority" thing is annoyingly messy
but it also means one cannot reference two versions of the same TLB/DLL
which also simplifies things a little
 
I might have to run some test at work with my intentionally broken Excel MDI.
I'm curious how it handles that. I got sick of only being able to have one top level Excel window, so I broke the MDI so I can have one Workbook open in each monitor.
 
4:41 AM
isn't that an option?
or, it was at one point
 
In an overly limiting way IIR.
Actually I think I have a VM here with it broken...
 
eh, I can never find anything in that Excel options dialog
 
I know, right?
 
Hey @ThunderFrame - is it just me or the download rate has pretty much doubled from 5-10 to 10-20 daily recently?
We're at 2700
 
Could be. If it wasn't such a pain to parse SE chat dates, I could tell.
That tool that installs VS6 under Windows 10, seems to get about 1000 downloads a week.
 
4:55 AM
we definitely need to look into a VS6 build for Rubberduck
@ThunderFrame I wonder how many of these downloaders think they're downloading VS6
 
Shouldn't really make much of a difference - they must have a reason to want VS6 in the first place. There's a ton of legacy code out there that is being maintained.
 
indeed
 
Hell, I wrote some of it.
 
at my last job I was maintaining VB6 code
 
I'm the go-to VB6 person at my current job actually - I'm front line COM support for our API from VB6 because I'm the only one who knows it. Makes me feel old - I should have kept my damn mouth shut...
 
5:08 AM
as the office's go-to VBA/Excel guy, I know the feeling ;-)
 
The thing wasn't even written with VB6 in mind either, which makes it much more fun...
...so, if you ever need to figure out how to access a library function that returns a c++ int[] over a COM interface in VBA...
 
yikes
 
MFC developers don't usually have VB6/VBA in mind...
 
what's MFC?
 
Microsoft Foundation Classes. It's the old c++ library set for Windows.
Interestingly enough, it's where data bound controls in VB6/VBA originate from.
 
5:21 AM
okay, I think I've got something viable here
        private readonly HashSet<ReferencePriorityMap> _references = new HashSet<ReferencePriorityMap>();

        private void LoadComReferences(IEnumerable<VBProject> projects)
        {
            foreach (var vbProject in projects)
            {
                var projectId = vbProject.ProjectId();
                for (var priority = 0; priority < vbProject.References.Count; priority++)
                {
                    var reference = vbProject.References.Item(priority);
                    var referenceId = reference.ReferenceId();
 
It's influenced heavily by MVC patterns, and binds controls to data natively.
It's actually harder to create unbound controls in MFC than bound ones.
 
interesting. I love binding in WPF, but can't recall the last time I used a databound anything in VBA, VB6, ..maybe I did in VB5... or VB4
...damn I'm old. yes, my first exposure to VB was VB4
 
Databound controls in VB6 used to drive me nuts. I'm too much the control freak.
 
ugh, nope. I need the IsLoaded flag on the map itself.
almost there...
ugh. whenever we're adding a reference, I need to flush everything because I can't be sure the user didn't change the order
I'm starting to hate this
wait no, I don't have to reload it. I can just change its priority. this might work...
 
5:44 AM
aaaaand it builds.
 
[retailcoder/Rubberduck] retailcoder pushed commit 9508e478 to next: added support for prioritized project references (ref. #1340)
[retailcoder/Rubberduck] retailcoder pushed commit b341c346 to next: fixed off-by-one (gotta love these lovely 1-based COM collections)
 
note to self: run the damn thing before pushing
gotcha: if no reference is added or removed, but they're just reordered, we don't get notified, so we can't update the priorities.
 
6:09 AM
[retailcoder/Rubberduck] retailcoder pushed commit c5ec9362 to next: removed references sink - no longer needed
 
@Duga we don't need to add/remove references, just make sure we're up-to-date when we're parsing.
 
[retailcoder/Rubberduck] retailcoder pushed commit d80b7b56 to next: removed unused IRubberduckParser interface members (only implementation was used)
 
public interface IRubberduckParser
{
    RubberduckParserState State { get; }
}
#TooSimple?
 
6:37 AM
[retailcoder/Rubberduck] retailcoder pushed commit 28baafca to next: parser state no longer remains stuck on 'Loading references' - parser is pretty much stable!
 
PR, then bedtime
 
> Also, added support for prioritized project references (for resolver edge-cases; @autoboosh you're up!)

Parser state reporting feels a bit jumpy, but everything seems to work.
[rubberduck-vba/Rubberduck] retailcoder pushed commit ad79a9df to next: in-progress - accounting for reference ordering per-project.
[rubberduck-vba/Rubberduck] retailcoder pushed commit 9508e478 to next: added support for prioritized project references (ref. #1340)
[rubberduck-vba/Rubberduck] retailcoder pushed commit b341c346 to next: fixed off-by-one (gotta love these lovely 1-based COM collections)
[rubberduck-vba/Rubberduck] retailcoder pushed commit c5ec9362 to next: removed references sink - no longer needed
[rubberduck-vba/Rubberduck] retailcoder pushed commit d80b7b56 to next: removed unused IRubberduckParser interface members (only implementation was used)
[rubberduck-vba/Rubberduck] retailcoder pushed commit 28baafca to next: parser state no longer remains stuck on 'Loading references' - parser is pretty much stable!
Merge pull request #1341 from retailcoder/next

Stabilized parser
[rubberduck-vba/Rubberduck] build for commit 28baafca on next: AppVeyor build cancelled
BUILD CANCELLED
[rubberduck-vba/Rubberduck] build for commit 6969fde8 on next: AppVeyor build succeeded
[retailcoder/Rubberduck] retailcoder pushed commit 8d739199 to next: disabled Code Explorer hotkey, hard-coded CanExecute=false in CodeExplorerCommand
> It's not implemented yet, it won't be in the v2.0a pre-release.
[rubberduck-vba/Rubberduck] retailcoder pushed commit 8d739199 to next: disabled Code Explorer hotkey, hard-coded CanExecute=false in CodeExplorerCommand
Merge pull request #1342 from retailcoder/next

Disabled Code Explorer
 
6:54 AM
todo: write release notes, switch to release config, create v2.0a tag, and tell the world.
 
[rubberduck-vba/Rubberduck] build for commit 61e0fb60 on next: AppVeyor build succeeded
 
 
2 hours later…
9:26 AM
@Mat'sMug @Comintern do you check if the HelpFile property is set to a helpfile, before you hijack it? Do you warn the user if overwriting a real helpfile path? Does the projectID in the helpfile property get persisted on project save? How do you know if the ProjectID was set by the current VBE session? What happens if the help file is set by VBA in the document's open event, or some other procedure?
 
 
3 hours later…
12:18 PM
@ThunderFrame we don't check, but we don't write anything unless it's empty. If it's not empty, it's assumed to be unique for all projects, and not changed at any time by the user - if it's the case, tough luck.
 
12:31 PM
But really.. nobody uses that :-)
 
0
Q: Modularise Project and Deduplicate Code By Loading External Modules On Startup

ChrisStarting point I kind-of inherited a VBA project at work that consists of a bunch of Word document templates that provide users with the tools they need to create documents according to company guidelines and to help them give all documents the same appearance. We use different templates for the ...

 
1:00 PM
^aaaaaand 5 upvotes
 
1:23 PM
@Mat'sMug sure, nobody uses that... But now that RD uses it, how does RD determine if the value is from the current VBE session?
 
1:36 PM
@ThunderFrame it doesn't. The only requirement is that no other project has the same value :-)
 
 
1 hour later…
2:55 PM
@Mat'sMug if the MVPs meeting presentation goes well, is there a tiny chance Rubberduck might go into a future version of office?
 
lol, I've no idea ...that'd mean Microsoft buys (seizes?) us though...
FWIW I don't think so :)
hi @Chris!
 
hi everyone. just lurking around listening for awhile. :-)
 
how long have you had Rubberduck for?
 
Me?
Or Chris?
 
lol, both :)
how did you guys get to know Rubberduck?
 
3:13 PM
From visiting this chatroom
And I haven't used it yet since I do all my VBA dev at work
And I am going to have to ask special permission to use Rubberduck
But since I've gotten better at VBA and my non-asleep at the wheel errors are getting more arcane and fewer people are able to help, I think I'm getting ready to start using some tools to assist
Plus Rubberduck can help with some of my asleep at the wheel errors so I can pretend I am smarter than I actually am
 
@puzzlepiece87 I'd suggest you wait for the actual 2.0 release then - the 2.0a pre-release I'm about to issue is not completely stable, and it's missing features (code explorer, namely - and the ability to configure a list of "okay" short names to ignore in the UseMeaningfulNames inspection)
 
3:29 PM
@Duga that one should help sleeping devs ;-)
 
Zak
@Mat'sMug Wait, there's going to be a pre-release?
 
♪
@Zak yeah, well.. I wanted 2.0 to come out full-featured with a bang, but MVP's are having a conference in Amsterdam this weekend, and I've been asked if it would be possible for them to present the Smart Indenter port...
 
@Mat'sMug: from the CR stackexchange I believe. Someone mentioned it somewhere over there and because the VBE misses out on many features I long wished it had, I thought I'd give it a try to improve usability.
 
@Zak the pre-release will include IDE-integrated source control btw
(I know you've been waiting for that one!)
 
Zak
@Mat'sMug YES!
 
3:43 PM
@Chris what features would you like to see in the VBE?
 
Zak
Honestly, I'd be perfectly happy with V1.4 source control, if the damned thing didn't crash whenever I try to open Excel.
 
@Mat'sMug: several things are already covered in RD, such as source control support, I just need some time to get used to it. I'll get back here once additional wishes come up, but I think I'll wait until release of 2.0 and have a look at that first.
 
the single feature I can't wait to release, is the 2.0 code explorer - did you see the RD News post about folders?
 
Zak
Oh yeah, folders, I REALLY want those too.
 
not in the pre-release though.. I haven't had a chance to get the explorer to work nicely, and it still needs a lot of work
 
4:26 PM
@Mat'sMug Agreed, that's my plan exactly.
 
4:51 PM
hey @SimonForsberg!
 
Boo.
Damn "rejoin favorite rooms" button...
 
bwahaha
 
In other news:
in Cardshifter TCG, 22 secs ago, by Duga
[Zomis/test] DugaBot pushed commit 93d402a6 to master: Automatic update
 
5:14 PM
@SimonForsberg what the...
 
5:53 PM
One week + one day later, the second person gets sick.
 
 
1 hour later…
7:20 PM
in Cardshifter TCG, 19 secs ago, by Simon Forsberg
@Duga lol
 
8:13 PM
@Mat'sMug So we write a GUID/hash to HelpFile, that is guaranteed to be unique across all sessions?
 
there is a minimal chance of hash collision between sessions, but get a lottery ticket if you hit that ;-)
 
I'm just concerned that if we ever want to hi-jack the Help, then the HelpFile property might be useful...
 
too bad... we need a stable ProjectId, and it's going into HelpFile =)
 
I understand the need. But doesn't that make the host document IsDirty = True, even for the default new document? Eg. I open Excel, it creates a document called Book1, which ordinarily I could close without being prompted to save changes, or that would close automatically if I opened a specific file.
That could lead to unexpected workooks being left open, orunexpected workbooks being the activeworkbook, and that could break a lot of (badly written) VBA that assumes there isn't going to be a dirty default workbook lingering around.
 
if you have a better alternative, I'm all ears
 
8:28 PM
hi-jacking is fun, and while the HelpFile property is a suitable victim, it seems there will be collateral damage.
 
the property doesn't get written to the vbproject until the VBE is opened and rubberduck is loaded
 
that helps
but it still changes the IsDirty flag.
 
no
just tested it
no prompt, and except an unhandled exception (a bug) with the event sinks, everything behaves normally
 
wow, so changing the VBProject property doesn't mark the host document as dirty?
 
no prompt
see, even Excel isn't using that property ;-)
 
8:32 PM
haha
maybe the project isn't considered valid until there's at least 1 module (or perhaps one control on a sheet).
 
then why would it prompt to save changes on close after all you do is type "Option Explicit" in "ThisWorkbook"?
I think it's more reasonable to say that changing the HelpFile property doesn't flip the IsDirty flag
 
Let's go with HelpFile, but it might be nice to test for a helpfile before overwriting it? Surely somebody is using that property somewhere?
 
I'm not overwriting it
I only write a hashcode if it's null/empty
whatever content is in there is the ProjectId and assumed to be unique across all opened projects
if you have two opened projects with the same HelpFile value, you break it
if you have two projects with the same HelpFile value, you deserve whatever you get anyway
 
hmm, so maybe the HelpFile property + the Project name make it uniquer
 
just open them one at a time, or in different instances
@ThunderFrame no, it has to be immutable
the first thing that the VBE does after loading a new project, is renaming it from Project1 to VBAProject
 
8:42 PM
Actually,if a user is actually using helpfile property, then it would seem likely that they would open 2 projects that both refer to the same helpfile, as they might very well compare version 1.1 with 1.0 version, and both would have the same HelpFile.
Rubberduck is enforcing the stereotype of developer's not writing help. ;-)
 
from the license all RD users accept:
> THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
 
sure - just need to make it eplicit in the ReadMe that HelpFiles are hijacked.
I guess another approach would be to edit the Interop assembly? Could we write our own property into the Interop, to get around the problem? Or is it still on the wrong side of the unmanaged fence, at that point?
 
we'll just make sure it's documented, in the release notes. it's already on RD news, in a blog entry that explains why we're doing that.
I'm not sure what you're alluding to... no way I'm going to modify MS's interop assemblies
 
9:12 PM
I don't think you can edit the official MS PIAs (because they're signed), but if you make the IA yourself, then use ILDASM, you can edit the file, then reassemble. TTGTW - but I'll try to find the article.
 
9:31 PM
TTQW
oh wait
 
[retailcoder/Rubberduck] retailcoder pushed commit 6791992e to next: remove built-in declarations for removed references
[retailcoder/Rubberduck] retailcoder pushed commit d30906f9 to next: random tweaks to mousehook and codepanerefactorrenamecommand
 
NOW I can
> [Rubberduck News] carlosq2014 is now following your blog
^^ just got this email :)
 
> This PR merely adds a new folder next to the existing Parsing.Grammar folder called "GrammarNext" which contains the rewritten grammar.

I realized that the new grammar broke too much, making it quite difficult to fix. So here's an alternative approach. How about we run two grammars parallel and slowly add all the new features until the new parser/resolver is ready to replace the existing one? Seems easier this way. Next up would be to introduce a declaration class hierarchy.
 
what does TTQW mean?
 
lol
Time To Quit Work
in other words, TTGH
 
9:35 PM
Time to quit whining.
 
Time To Go Home
 
time to get help?
 
you're working on rubberduck at work lol
the new parser broke too much
after commenting out the 30th class I gav eup
see PR comment
I still think it's worth it though, since it'll make everything else easier
 
let's spare that for 3.0 :)
now, it's crunch time - I want a 2.0a tag tomorrow!!!
 
9:38 PM
will v3 get a separate branch?
 
well, [next] will merge into [master] with the next release
then [next] will be for the next release...
 
ok
 
[rubberduck-vba/Rubberduck] build for commit 3047850c on unknown branch: AppVeyor build succeeded
 
so yeah, anything for v3 that would break 2.x should be on its own
I don't want to repeat the mistake of 1.x with 2.0, and not be able to release for a year...
 
want me to close that PR then?
and re-PR once the v3 branch is ready?
or how would you go about integrating that new grammar if at all?
 
9:41 PM
yeah let's do that
ugh good question
 
the problem is that everything else is dependent on it
 
IKR
anyway, bbl
 
ok cya
just realized I copied the wrong grammar anyway, good thing that PR got closed, drinking and coding really isn't a good idea
it's still the same old grammar haha
it did seem strangely familiar
 
10:02 PM
@Mat'sMug so you're going for a next major digit directly?
 
Hi guys :-)
 
Hi.
Are you the MVP interested in Rubberduck?
 
I am the MZ-Tools author
 
Ah. I thought I'd seen your name somewhere.
 
I am MVP too, but in the .NET / Visual Basic / Visual Studio categories, depending on what Microsoft decides each year
 
10:09 PM
We are the Rubberduck team; at least, I used to be, and I'm slated to work on it for 450 hours this summer.
I've not done anything for a month or two now.
 
Just wanted to say that you all are doing an incredible job on Rubberduck
5
 
If you are interested, Mat is going to alpha-release 2.0 by this Friday.
yesterday, by ThunderFrame
by 3.0, I'm hopeful he'll join us.
 
Who knows? ;-)
 
Obviously, some people think you did a good job on MZ-Tools too.
(I've never used it--I'm not a VBA dev.)
 
I am a former VB6 developer, I entered VBA-related stuff by accident
But I am not a VBA developer
 
10:12 PM
I know C# mainly, and I can figure out VB.NET (I hate it).
Who'd know that And doesn't have short-circuiting without your program crashing on you for no apparent reason?
 
I moved to VB.NET in 2002 and to C# in 2012
There can be some issues about Rubberduck that I think are not addressed:
1) COM-Shim (MZ-Tools doesn't use it yet, but I have figured out the strategy and a prototype)
2) Installation for the current user with no admin rights (I figured it out) and with admin rights if required (Office running with admin rights) in a single setup
3) RCW leaks
4) Support for non-Office VBA IDEs (CorelDRAW, AutoCAD, etc.)
5) Detection of Office 64-bit / Office 32-bit can be tricky, but it is not required
 
@CarlosQuintero those are supported in a way
 
Some of them are supported.
 
just unit-testing doesn't necessarily run
 
Yeah. We need the PIA to do unit testing.
Second, what does "RCW" mean?
 
10:20 PM
If you are interested in technical details let me know, I can provide some help
 
Sure we are.
 
and not all of them expose Application.Run, which makes invoking test methods a problem.
See the Outlook problem with running Tests
 
Also, what is COM-shim?
 
finally
 
RCW is a .NET thing for COM object (Runtime Callable Wrappers)
All the MSDN docs about COM Shim are about .NET-based Office add-ins, but .NET-based VBA add-ins require them too for proper isolation.
Basically an add-in can break other add-ins in the same (default) AppDomain
 
10:27 PM
@CarlosQuintero hi! It's an honor to see you here!
 
RCW leaks of an add-in can affect other add-ins, and a AFAIK a call to Marshal.FinalReleaseComObject from one add-in can break other add-in
Hi Mat's Mug :-)
 
@CarlosQuintero Uh oh.
 
@CarlosQuintero hi! I'm a 8.0 licence holder!
 
Did you buy? Thanks!
I can provide complimentary licenses (and refunds), just let me know
 
@CarlosQuintero yes, bought shortly after release. Had used and marketed 3.0 for a long time. We do support AutoCad and CorelDraw.
 
10:31 PM
So, how did you find RD?
 
@CarlosQuintero @Hosch250 is being modest. He works on Visual Studio extensibility too.
 
VSD, yeah. I really like that project.
I like small projects best.
RD is getting too big to be comfortable for me, although I'm glad it is getting big.
 
I discovered RD some months ago but I don't remember exactly how. I know that some Excel MVP commented it to me three weeks ago but I knew much before. I am not sure if someone reported me an incompatibility months ago but I haven't found the email
 
@Hosch250 but you did contribute to Roslyn ... and you complain about RD getting too big?
 
I only contributed to Roslyn a little bit.
 
10:34 PM
I am aware that MZ-Tools and other add-ins that use the MZ-Tools articles are not compatible because of the use of Interop Assemblies without a COM-Shim
 
Also, it makes up for its size because I learn so much.
 
The biggest challenge would be to get a stable LL keyhook to be able to parse the code "live" as it changes
 
I've not learned much new on RD lately, except what a pain WPF can be.
 
Without crashing everything that is
Just got home, bbl
 
Extensibility of MS IDEs is tough, as you may have discovered by now :-)
 
@CarlosQuintero we just solved a problem in a kludgy way. We needed an immutable ID for the vbProject, so we hijacked the HelpFile property to store our own hash. Did you have to overcome that problem? Also, I'd love to know your approach for getting the Host Application from the VBIDE?
 
@ThunderFrame Let me check my code
@ThunderFrame Marshal.BindToMoniker(projectFileFullName)
 
@CarlosQuintero what if the project isn't saved? .FullName throws a COMException right away... or wait, Marshal handles it?
 
@ThunderFrame I only needed to get the Host Application for Access because adding line numbers in VBA code opens the designers in the Access side and eventually you get out of memory if you don't close them
If the project is not saved...bad luck. But that would be rare, at least in my scenario
 
@Mat'sMug, and Access would have to have saved file....
 
10:45 PM
That might be possible.
 
@ThunderFrame Doesn't the setup check for Office? How is AutoCad, etc. supported?
 
@CarlosQuintero we have an IHostApplication and embed PIA types from the AutoCad and CorelDraw applications.
 
.NET 4.0 I guess...
I am still on .NET 2.0 because Windows 7 doesn't have .NET 4.0 pre-installed
 
Some VBA hosts don't have an Application.Run methods, like CorelDRAW
 
OK
I have to quit. I am from Spain and here it is almost 01:00 AM
 
10:54 PM
@CarlosQuintero we'd love to expand coverage to VB6. We're there any headaches in supporting VBA and VB6's VBIDE TLBs?
 
VBA extensibility is a subset of VB6 extensibility, that part is easy.
The problem are the MSForms
 
@CarlosQuintero OK, night.
 
We can continue other day, I am reachable on all channels
 
@RubberDuck ^^
 
Should the settings changed events fire if the provider detects that the config file has been manually edited?
...or is that over the top?
 
11:08 PM
Nice-to-have, but not critical.
 
Should just be a couple lines of code if I only check when it's loaded from the file. I'll skip the FindFirstChangeNotification stuff...
 
11:28 PM
@Vogel612 nah, just shaping what the targets would be for 3.0
@Hosch250 lol, in our "About" dialog, in the "Special Thanks" section!
 
Ah, right.
 
Without his MZ-Tools articles (and a bit of code too), there wouldn't be any docked toolwindows in RD
 
OK, so I have the IGeneralSettingsProvider raising LanguageChangedevents, but the Inspectorneeds to subscribe. It really shouldn't depend on IGeneralSettingsProvider (it uses an ICodeInspectionSettingsProvider instead).
So... I have a couple options - I can have the ICodeInspectionSettingsProvider subscribe and raise it's own events (which seems odd), or I can inject a dependency for IGeneralSettingsProvider into Inspector. Or something else entirely. Any thoughts on which is cleaner/makes more sense?
I guess it depends on whether there's any intention of pulling the code inspections into their own library at any point in the future.
 
11:56 PM
@Comintern that would be nice, we could evolve it into a plugin architecture and "snap-on" inspections. It's a hell of a stretch though!
 
I guess the question answers itself, doesn't it. If I make it easier to pull something out, I'm making the coupling looser.
 

« first day (685 days earlier)      last day (2495 days later) »