« first day (1292 days earlier)      last day (1888 days later) » 

6:02 PM
the inputbox should have its own property on the Vm to bind
You should then have the OnPropertyChanged(nameof(InspectionSettings)) called in the setter
then within the InspectionSettings, you should read the content of the inputbox.
 
I'd try to leverage something built into the grid control, if it exists
 
#NeedToLearnMore
 
^
That's why I'm attempting to solve this.
It's the only way I'll learn.
 
it's entirely possible the grid doesn't have anything prebuilt for that though
 
I'm pretty sure that it does..
 
6:07 PM
remind me - wasn't that a customized control we created ourselves?
 
the GroupingGrid, yes. but it's based on an existing one
 
gotcha
 
ListCollectionView InspectionSettings is what everything is contained within
 
and even so, anything is 100% customizable in XAML
 
@AndrzejO Welcome to the pond!
 
6:08 PM
except for that silly dropdown arrow. :\
well it is customizable but last time I looked it meant opening up the control template.... waaaayyyyyy too complicated
 
yup
hence why there's no damned dropdown arrow on these menu buttons :)
 
OK, I just pushed what I have.
 
i just wanna ShowDropdownButton=Always, for goodness' sake.
 
It recovers, but it doesn't do anything.
 
maybe that's what we can get Hosch to do? Gimme us sane dropdown arrows?
 
6:10 PM
@Hosch250 what does that mean?
 
The parse always "succeeds".
 
will we get Error if there were?
 
Nope.
 
Hm. I just realized. Refactorings assumes that they are operable if parser is successful
 
I haven't been able to hack that to work. I need to think about design some before I finish that.
 
6:11 PM
we need to update those so that they are disabled if we've selected a block of code that failed to parse
 
It's in my ANTLR-recovery branch on my repo.
@this Nah, they actually take that into account.
 
oh? Cool.
 
the parse tree should have error nodes when that's the case
it's these nodes we'll want to red-squiggle
 
cos for EM, I think there was a check like RubberduckParserState.State == OK in the command or soemthing
which would be now incorrect, I think?
 
not incorrect, just irrelevant
 
I have just tested the logging of COM releases and I really thing that we should only log that in debug builds: we release quite a lot.
 
we'll need some HasErrorNodes extension method if such a method doesn't already exist on IParseTree
 
TFL.
 
@M.Doerner the only thing that need to be in release is if there's an error condition (e.g. when _release is non-zero
the rest can be a trace.
 
I made them warnings, but we usually get trace level from users if there is a bug.
 
6:16 PM
oh, i thought trace wasn't hte default
is there something lower than that?
 
The default is NoLogging.
Threre are hundreds of COM releases.
 
just for my clarity -- Debug < Trace < Warning < Error ? or is it Trace < Debug < Warning < Error?
 
And quite a lot fail.
Trace>Debug>Info>Warning>Error>Fatal, I think.
 
^ yup
 
well, poop
if we already ask users to use Trace for troubleshooting, that might be too much
DeepTrace>Trace>Debug>Info>Warning>Error>Fatal?
 
6:19 PM
To be fair, we already generate walls of text on trace level in the reference resolver.
 
I'm thinking primarily about what we currently do when we are helping users troubleshoot
 
We just ask them for a log and usually we get the trace level.
 
I see
thinkinga bout it more, if we had DeepTrace, they might just select that anyway
 
and we'd just have bigger log
meh. I'm fine with it being at the Trace level
since it's not the default
and we can come up with a strategy to parse the wall of text if we really need to.
what I do want, is that we are able to collect COM info from users
 
6:21 PM
Btw, the logging in the reference resolver takes a considerable amount of its runtime.
 
cos from what I saw, it's going to be very hard to reproduce.
so it's better that we are able to collect all info we can from user's environment
so I vote to leave them at Trace
 
Then we should really make sure that before we release the next time, we are doing things right. I am seeing soo many failed releases.
 
hmm. interesting.
any patterns to the failed releases?
and exactly how do we fail to release them?
 
I have not really investigated so far.
 
Oh ok. and just before you run down that rabbit hole
did your change still allow you to exit cleanly?
 
6:25 PM
Yes
 
well, that's very very good
 
Same amount of errors as before.
 
so we now have much more information but no new errors. Excellent!
 
I have just added capturing the exception failing the release.
That will make the wall of text quite a bit larger.
 
just realized now - it's very possible that the reason last attempt in 2.0 bricked could very well because we did not unsubscribe the events which was fixed very recently in one of pRs while we were releasing everyting.
Well, that might necessitate us to write a log parser but if that's what we must do, then we shall do.
heck, just dump it in Excel
slap a table on it
boom, filtering!
 
6:29 PM
hehe.. that's quite exactly what I do
(with my VBA LogManager outputs anyway)
 
curious - does your LogManager split fields?
I think our logs are just one big sentence ATM. Would be good to split them so they are more amenable to filtering
 
the LogManager isn't responsible for log message formatting :)
but the DefaultLogMessageFormatter does this:
Private Function ILogMessageFormatter_FormatMessage(ByVal level As LogLevel, ByVal loggerName As String, ByVal message As String) As String
    ILogMessageFormatter_FormatMessage = Format$(Now, "YYYY-MM-DD hh:mm:ss") & vbTab & loggerName & vbTab & FormatLogLevel(level) & vbTab & message
End Function
so, yeah
 
ok so yeah, it's tab-delimited.
 
Ah, my bad.
Nothing failed
I just have been blind.
 
what was it that you missed?
 
6:31 PM
I have been modifying a finally block, not a catch block.
 
ah, that'd make a big difference. :)
 
stupid me
 
it's monday.
 
@M.Doerner if you are stupid, Humanity is doomed
=)
 
^
 
6:32 PM
@this LOL.
@Mat'sMug It is anyway.
 
yeah I know. just don't tell my kids just yet.
 
so in fact, we are now releasing everything correctly, @M.Doerner?
 
Want to bet on how long it is before they realize they didn't ask to be born?
@this AFAWK.
 
sucks even more to be their kids
 
Which is partly why I'm not interested in having kids.
 
6:34 PM
@this wait so crashing on exit has nothing to do with releasing any of the COM objects???
 
it's only one of factors
the other access violations that @M.Doerner was observing is long after the vbe7.dll has unloaded
which may be.... 1) the CLR runtime is trying to access COM object when it shouldn't have been, 2) VBE is confused about who owns the COM object, 3) our Win32 handlers are all wrong, 3) @this doesn't know what he's talking about
But having more data than we originally had --- that's a big step forward because now we can point to something that's working right and rule it out from our list of possible causes.
as opposite to playing lotteries.
 
#ANewHope
 
hello everyone.
 
hi!
 
Looks like you're talking about the COM issue you wanted me to look at.
 
6:42 PM
yeah
 
So you're releasing all COM objects explicitly at disconnection now? Do you mind if I run it through my COM proxy logger to check that
?
 
@M.Doerner can you push what you've got to [next]?
 
Really, we are not failing on the ones we do release.
This does not mean that we release everything.
 
Right, it's probably worth me redoing the log anyway for you, as it will give you some clues as to what you're not yet releasing properly (if any)
 
last I tried releasing everything this is what I was getting:
that was quite a while ago though
 
6:45 PM
that means you released it too early
 
releasing too early
^
 
Oh hi, @WaynePhillipsEA.
 
I am right in the process to do my git routine to push to the PR.
 
howdi!
 
Hi
 
6:47 PM
So, you are the VB Watchdog guy?
 
While @M.Doerner is working on the push - do you think it's possible that the access violations we observer could be not anything to do with COM?
Yes, @Hosch250
 
yup, that's me
 
@WaynePhillipsEA did you glance at our source code? anything glaringly stupid jumping at you?
 
@this anything is possible :)
 
6:48 PM
heh. should have known better than to ask
 
I had a quick look. lots of possibilities. Like the window hooks
 
not sure if I mentioned that but it may help to note that we have some win32 handler stuff to intercept WM messages yeah
that
apparently it was because we weren't getting what we needed from VBIDE api
 
yeah, not exactly .net friendly
 
so the guy, @comintern, set it up
he was the RD's "COM expert" who got everyone that far along.
 
yeah, I can appreciate you'd need some window hooks to do some of your magic
 
6:49 PM
the VBIDE/Extensibility API isn't quite extensibility friendly for all I've seen
 
VBIDE is crap for events
 
@this I did that. I know I have other things wrong, no results are showing when I type anything in. But it only filters when I click OK which isn't what I expected with the binding.
 
bbl got to see to the kids
 
@IvenBach Try setting the binding to update on property changed.
 
come back anytime!
 
6:51 PM
See you.
 
@IvenBach hence the need for the previous line that you linked, as @Hosch250 said.
 
@Hosch250 I don't understand what you're saying.
It's my lack of coding experience.
 
Show me what you have.
 
private string _inspectionSettingsFilter;
public string InspectionSettingsFilter
{
    get => _inspectionSettingsFilter;
    set
    {
        if (_inspectionSettingsFilter != value)
        {
            _inspectionSettingsFilter = value;
            OnPropertyChanged(nameof(InspectionSettings));
        }
    }
}
private ListCollectionView _inspectionSettings;
public ListCollectionView InspectionSettings
{
    get
    {
        if (string.IsNullOrEmpty(_inspectionSettingsFilter))
        {
            _inspectionSettings.Filter = null;
 
And the XAML?
 
6:54 PM
                    <DockPanel Background="DarkGray" FlowDirection="LeftToRight">
                        <StackPanel Orientation="Horizontal" DockPanel.Dock="Left">
                            <Label Foreground="White"
                               FontWeight="SemiBold"
                               Content="{Resx ResxName=Rubberduck.UI.RubberduckUI, Key=CodeInspectionSettings_InspectionSeveritySettingsLabel}">
                            </Label>
                        </StackPanel>
                        <StackPanel Orientation="Horizontal" DockPanel.Dock="Right">
 
What do you see when you press , here? Text="{Binding InspectionSettingsFilter^}"
 
While RD is running?
 
No.
NVM, I got it in my IDE.
Stick this at the caret: , UpdateSourceTrigger=PropertyChanged
Otherwise, it won't update the binding until the textbox loses focus.
 
Even then it wasn't.
So I get what that addition does. Text="{Binding inspectionFilter, UpdateSourceTrigger=PropertyChanged}" tells it to update whenever it changes IE key is pressed.
 
no, whenever the property changes
 
6:59 PM
Whenever the UI or VM property changes.
 
which may or may not be because of a keypress
 
Words fail me again...
 
we'll make you a perfect little pedant before you know it
 
It's going to take a long while for that to occur.
hitting a key doesn't cause the property to change. I have F9 breakpoints on both get and set of InspectionSettingsFilter.
 
7:03 PM
Had the wrong name for the binding... #FailingFaster
 
[rubberduck-vba/Rubberduck] build for commit a398ebbc on unknown branch: AppVeyor build failed
BUILD FAILURE!
 
Interesting
 
Should a CodeInspectionSetting.Description ever be null? I'm getting another one in language opportunities without a description. Wasn't that tied to a config file?
 
Something went wrong in the build process on AppVeyor.
It cannot find some files.
 
@IvenBach they need to have a description...
 
7:14 PM
Stepping out for a bit. Can't focus.
 
@M.Doerner I'll have a look in a few moments.. can't right now
 
np
 
@Mat'sMug I'm getting one that doesn't. You helped me delete a config file before that caused any blank ones to be properly generated. Do you remember which it is?
On a positive note I was able to achieve the filter properly.
 
@IvenBach Hi Iven! Hi All1
 
If you have any questions about RD don't hesitate to ask.
@Mat'sMug ^ That's the null Description I'm getting.
 
7:28 PM
@IvenBach the config file - there's only one
%appdata%\Rubberduck\Rubberduck.config
 
#WordFail
 
Hrm... Still didn't fix it.
 
typo in the resource key name?
(assuming there's a resource key for it)
 
[rubberduck-vba/Rubberduck] build for commit 43e75ddc on unknown branch: AppVeyor build succeeded
 
7:38 PM
I don't see it in the resource.
Confused as to where it's getting the initial values from then.
 
look at the xaml bindings; they're binding to a property of InspectionSetting. then look at how that property is implemented
it's fetching a specific resource key
 
@M.Doerner hmm seems the post-build copy is pointing to \Debug
> C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\15.0\Bin\Microsoft.Common.CurrentVersion.targets(5‌​074,5): error MSB3073: The command "copy "C:\projects\rubberduck\Rubberduck.Inspections\bin\Release\Rubberduck.Inspection‌​s.dll" "C:\projects\rubberduck\RetailCoder.VBE\bin\Debug" /Y" exited with code 1.
check your .yml, line 50
 
> I've recently discovered the code explorer that Rubberduck provides; looks great. I'd like to replace the default explorer with it permanently, but every time I close and reopen Excel, the Code Explorer window loses its docking (so I have to go into the Rubberduck menu to get it back)

Is there a way to keep the window docked, or if not, could this feature be added? Even better might be to have the Rubberduck Explorer replace the normal explorer after the first parsing.
> Related: https://github.com/rubberduck-vba/Rubberduck/issues/3214
Duplicate: https://github.com/rubberduck-vba/Rubberduck/issues/3215

Long story short: we know. We're working on it :)
> See also #3615 and #3614
 
AFAICT it looks like it's binding to InspectionSettings.LocalizedName which doesn't exist.
 
7:51 PM
if it didn't exist, then none of the inspections would have a description
 
<controls:GroupingGrid ItemsSource="{Binding InspectionSettings}" ... confuses me. I don't understand how the binding can reference itself when the file is InspectionSettings.xaml
 
it's not referencing itself
remember all bindings are against a DataContext
and the DataContext is inherited, for every single node, from the parent
and we make that an instance of InspectionSettingsViewModel at the top-level node
 
d:DataContext="{d:DesignInstance {x:Type settings:InspectionSettingsViewModel}, IsDesignTimeCreatable=False}" is the main context for the user control.
 
which means the GroupingGrid's ItemsSource is binding to InspectionSettingsViewModel.InspectionSettings property
..which is assigned in the constructor:
        InspectionSettings = new ListCollectionView(
                config.UserSettings.CodeInspectionSettings.CodeInspections.ToList());
..which pulls a bunch of CodeInspectionSetting instances from the configuration
and, oh look!
=)
so this is the resource key:
 InspectionsUI.ResourceManager.GetString(Name + "Name", CultureInfo.CurrentUICulture);
 
^ I'm working through your breadcrumb trail here. I'll be a few minutes.
@Mat'sMug Mr smiley is taunting me. I'll pay him back with good PR one day.
 
7:58 PM
 
IIRC the Name is literally the type name, e.g. FoobarInspection
so the resource key for that would be FoobarInspectionName
 

« first day (1292 days earlier)      last day (1888 days later) »