« first day (996 days earlier)      last day (2184 days later) » 

12:01 AM
RELOAD!
[Cardshifter/Cardshifter] 3 commits. 1 issue comment. 37 additions. 3 deletions.
[rubberduck-vba/Rubberduck] 24 commits. 3 opened issues. 5 closed issues. 10 issue comments. 704 additions. 478 deletions.
[VSDiagnostics/VSDiagnostics] 1 opened issue. 1 issue comment.
 
I need to parse a project property once, and only once, when it is first added. Any suggestions on where I should add that?
 
Probably the best way to do it would be to attach a listener to the VBProjects events. The much more difficult problem is going to be figuring out where to store the data. We're currently creating and destroying wrappers for the same projects all over the place.
 
hmm, I'll get the reading part done first, and work out where to cache it later.
 
I need to play around with that function for caching data in the RCW...
Ugh. The EncapsulateField tests are mostly just testing the mocked behavior.
And none of them assume a scenario where a Variant property will have both a Let and a Set.
 
12:33 AM
Public Property Get Name() As Variant
    If VarType(fizz) = vbObject Then
        Set Name = fizz
    Else
        Name = fizz
    End If
End Property
Much better.
 
wouldn't TypeOf fizz Is Object, or IsObject(fizz) be better than VarType(fizz)?
 
[rubberduck-vba/Rubberduck] build for commit 439aaaca on unknown branch: AppVeyor build failed
BUILD FAILURE!
 
huh, TypeOf var Is Object will throw if var is Nothing. Inspection for use of TypeOf?
 
@ThunderFrame I was thinking that VarType was more efficient. I think that TypeOf ... Is and IsObject use late bound calls internally.
I.e. testing to see if they implement IDispatch.
 
@Comintern How do you see that?
 
12:59 AM
Pure blind speculation.
 
type and pray test?
 
Actually, according to Paul Lomax they're the same.
IsObject is simply a “convenience” function that is roughly equivalent to the
following Visual Basic user-defined function:
Private Function IsObject(varObj As Variant) As Boolean
If VarType(varObj) = vbObject Then
IsObject = True
Else
IsObject = False
End If
End Function
 
Given TypeOf throws if var Is Nothing, it looks like it might be late-bound calls, but I Suspect IsObject is doing the same vartype test?
huh, snap
 
IsObject is arguably more readable though.
 
[rubberduck-vba/Rubberduck] BZngr [commented on RetailCoder.VBE/Inspections/Results/AssignedByValParameterInspectionResult.cs]‌​(github.com/rubberduck-vba/Rubberduck/pull/…) of pull request #2733: Remove Regex-Replaces/Raw String ops from #2660 part 2
 
1:10 AM
@Duga @BZngr - Did you test that in the VBE in addition to unit tests? Any changes to RubberduckModule will pass all the tests but blow up spectacularly when you run it.
 
Yes, I ran it in the VBE.
 
That's a lesson I learned the hard way. That file is twitchy as hell.
 
I was very unwilling to modify it, but it seemed to be the only solution. I'm open to other approaches ifor sure!
 
I'm guessing you ran into the same issue with the default factory binding that I did with the folder browser. I'm like you on that one - I try not to touch it if I can.
 
1:51 AM
@BZngr FWIW injecting dependencies of dependencies (of dependencies...) is not "correct" DI - e.g. that view factory is a dependency of the quickfix, but the quickfix is a dependency of the inspection result, which is a dependency of the inspection.. the problem is that we're not doing proper DI here; inspections should probably not be newing up results directly. By doing that we're breaking the injection chain and making things much messier than they should be
So until we figure out a cleaner way, injecting the quickfixes'' dependencies into the inspections is really the only solution for now
Because that's where the injection chain is stopping; beyond that we're instantiating things ourselves
the role of Ninject is to create all objects, and thus to manage their lifetimes
 
The funny? part is that we're injecting things that we really need to be newing up (anything that crosses the interop barrier) and not injecting the stuff that should be injected.
 
yeah.. I think you're right - the COM stuff is a bit beyond what ninject was made for
 
The stuff that Ninject can't reliably manage the lifetime of is what's biting us in the ass.
 
^
I guess that's what "learning it the hard way" means ;-)
I genuinely thought there'd be no problem with that
... for some stupid reason
 
Although TBH, if _DockableWindowHost didn't have to inherit from UserControl we'd be all good...
I'm able to manage the lifespan of literally everything other than that.
 
2:00 AM
I'd love to jump in with an insightful comment here...but at this point, I'm just happy to get my code to complile.
 
@BZngr DI feels awkwardly backwards at first - for a reason: it requires inversion of control (IoC), which literally flips everything around - once you get the hang of it though, it's the best thing since sliced bread =)
 
Hmmm... Carlos mentions that "Toolwindows host ActiveX UserDocuments inside, but UserDocuments don't exist in .NET."
 
The best read I can recommend about it is Mark Seemann's Dependency Injection in .NET (Manning)
 
I wonder what it would take to just import and re-implement the stupid interface in .NET.
2
 
hmm
you might be onto something here
 
2:05 AM
I'll check out the book. Thanks!
 
OLE viewer apparently doesn't have a registered interface for either UserDocument or IUserDocument.
 
=)
@Comintern yet it happily takes a winforms UserControl instance??
 
It does have Document though.
I think this is the key one: PSOAInterface {00020424-0000-0000-C000- 000000000046}
 
On another note, should Extract Method be disabled?
I'm considering disabling/hiding the feature for 2.0.12, given how borked it is
arguably source control is just as borked though
 
I may poke around in source control a bit tomorrow. There were enough filepath building errors that I might have inadvertently fixed some stuff I didn't intend to.
But I'm thinking disabling extract method is probably a good idea. Are there any cases where it works?
 
2:19 AM
@Comintern even the cases that do work, work without a UI/preview
I consider that a serious regression from 1.4.3, even if the theory behind the new code is more sound.
 
Huh. There's nothing to the UserControl interfaces at all. Looking at in the OB now.
I'm guessing all we need to implement is IContainerControl.
@Mat'sMug Practically good code beats theoretically good code hands down.
Hmmm...
public virtual object InitializeLifetimeService()
    Member of System.MarshalByRefObject

Summary:
Obtains a lifetime service object to control the lifetime policy for this instance.

Returns:
An object of type System.Runtime.Remoting.Lifetime.ILease used to control the lifetime policy for this instance. This is the current lifetime service object for this instance if one exists; otherwise, a new lifetime service object initialized to the value of the System.Runtime.Remoting.Lifetime.LifetimeServices.LeaseManagerPollTime property.
 
Huh, that sounds important
 
Yeah. I've never really looked that closely at the MarshalByRefObject before - never really needed to get that far into the weeds.
I wonder what an override to that is supposed to look like.
Interesting...
> Whenever an MBR object is remoted outside an application domain, a lifetime lease is created for that object. Each application domain contains a lease manager that is responsible for administering leases in its domain. The lease manager periodically examines all leases for expired lease times.
> If a lease has expired, the lease manager sends a request to its list of sponsors for that object and queries whether any of them commit to renew the lease. If no sponsor renews the lease, the lease manager removes the lease, the object is deleted, and its memory is reclaimed by garbage collection. An object's lifetime, then, can be much longer than its lifetime lease, if renewed more than once by a sponsor or by continually being called by clients.
 
> Note - this disables a bunch of tests that should have been failing, but were only testing mocked behavior. This will need another round of refactoring before it's worthwhile to re-enable\re-write the tests.
[rubberduck-vba/Rubberduck] build for commit 6d17b954 on unknown branch: AppVeyor build failed
BUILD FAILURE!
[rubberduck-vba/Rubberduck] build for commit 600fac44 on unknown branch: AppVeyor build failed
BUILD FAILURE!
 
3:10 AM
O Hai, Document Interface.
 
wait, EnvDTE is the VS extensibility model?
 
Apparently so.
I wonder if this interface is hiding in the dark recesses of VBE7.dll somewhere...
 
3:28 AM
Mar 27 '15 at 14:20, by RubberDuck
> Visual Studio 6.0 Extensibility dte.olb The DTE add-in object model
Microsoft Add-In Designer msaddndr.olb The IDTExtensibility interface
1
Q: Getting the instance of EnvDTE.Debugger in VS2010

MyrtleI'm trying to create a Visual Studio Integration Package project which will display data from the debugger. So I found the EnvDTE namespace, that looks to give me the needed classes and methods. According to the documentation for VS2005, the following code should be used to get an instance of the...

 
 
4 hours later…
7:23 AM
@FreeMan I haven't read any of them (yet), but I just found 100+ free eBooks that SyncFusion offers for free. There are books on Git and GitHub (and also lots on C#, OOP, SOLID etc).
They may well be compromised by the sponsorship, but they might still be useful
 
 
2 hours later…
9:11 AM
Agreed with @ThunderFrame regarding about SyncFusion. Enjoyed reading statistics with Excel even.
 
 
6 hours later…
3:17 PM
@Comintern huh, would a codepane implement that?
 
3:28 PM
I'm not exactly sure if the VBE objects can use those interfaces or not. I found a couple references to Office installing a envdte .dll, but I don't know if they would marshal to the .NET version or not. They look really familiar though.
 
I'd be very surprised if they could
 
^
My thought was to see if _DockableWindowHost could implement one of the interfaces in there instead of UserControl. That Document interface also looks suspiciously similar to the OLEObject interfaces in Office.
 
4:11 PM
I am currently trying to implement saving the module to module references. About that I have a disgn question:
Where should the references live?
My first though was the ModuleStates. However, that entail heavy use of QMNs, of which I know that they are not liked very much.
My second thought was that I could add them to ProceduralModuleDeclaration and ClassModuleDeclaration.
But then, is there a good way to get a module declaration given an IVBComponent?
 
4:28 PM
I'd lean toward ModuleState personally. Is there any reason the ModuleState couldn't hold a IVBComponent reference?
@M.Doerner The problem with the QMNs was that we were holding 10s of thousands of IVBComponent references on the Declaration objects and incurring a ton of COM interop overhead because of it. ModuleState would seem like a more reasonable place to have those references assuming that we cache the Name property to be used for the lookups. IIR we're already subscribing to name change events on VBComponents, so it shouldn't be difficult to keep the lookups in synch.
 
 
3 hours later…
8:38 PM
Morning all, would the recent news about preventing Win32 on Win 10 be any concern for RD project? Just learn that certain apps needs to be converted to work. mspoweruser.com/… And mspoweruser.com/…
 
> Just a clarifying question. When you say "setting it up on the command line", are you talking about the native git shell, or the COM lib via the immediate window?
 
@PeterMTaylor - Shouldn't be an issue. It appears to be a settable option, and I'm guessing that it will backfire harder than Windows 8 getting rid of the "classic" desktop. Looking forward to the explosion of blog posts explaining how to turn it off.
 
> @rubberduck203 - I'm referring to using the git shell (or Command Prompt\PowerShell with git extensions).
 
9:04 PM
Til then. :) @Comintern.
 
9:16 PM
> A quick look at the `GitProvider` leads me to believe that the issue is somewhere in the UI layer.

https://github.com/rubberduck-vba/Rubberduck/blob/next/Rubberduck.SourceControl/GitProvider.cs#L102

We don't modify the file path/URI in any way at the library level.
This could be confirmed by using a raw `GitProvider` to clone a repository on the file system.

https://github.com/rubberduck-vba/Rubberduck/wiki/Source-Control-API#clone

If we can confirm the underlying lib works, th
> That sounds right. I think there are some places where it's making the assumption that the path separator in the remote is /.
> That sounds right. I think there are some places where it's making the assumption that the path separator in the remote is /.
 
9:34 PM
> I don't think we need to convert anything to Unix style, but I could be wrong. It's been a very long time since I worked on that code.
 
 
2 hours later…
11:04 PM
Regarding default control names: The Office UI language determines the default control names. Under an English UI, a control might be named Command1 or CommandButton1, whereas in German, the control would be named Befehl1. But a VBA project might be shared between users with different UI languages, so perhaps the meaningful names inspection should look for the UNION of control names across multiple languages?
 
11:19 PM
I thought it would always fire off an inspection result if the name ended with a number.
 
11:38 PM
Ah, OK, then I just need to special case Access' NavigationSubform (of which, there can be only one) which doesn't have a numeric suffix.
 
11:51 PM
I wonder how much stuff I need to gut from App before we can close #1258? I think I just deleted over half of it.
 

« first day (996 days earlier)      last day (2184 days later) »