« first day (1009 days earlier)      last day (2171 days later) » 
00:00 - 06:0006:00 - 00:00

6:00 AM
hmm, seems more complicated than I anticipated
 
That's why I didn't do it the first time
 
[Hosch250/Rubberduck] Hosch250 pushed commit c801132c to Issue1380: Add alternating stripes
 
OK, I have all the functionality duplicated.
Shall I PR, or shall I wait until we figure out the changes display?
 
your pick
 
flips coin
I think I'll PR and have you review it. You don't have to merge it yet.
 
6:12 AM
[rubberduck-vba/Rubberduck] build for commit c801132c on unknown branch: AppVeyor build failed
BUILD FAILURE!
 
shrug
Whatever did I do?
 
6:28 AM
 
6:40 AM
[Hosch250/Rubberduck] Hosch250 pushed commit fd29fa64 to Issue1380: Remove a couple tests just testing the mocks
[rubberduck-vba/Rubberduck] build for commit fd29fa64 on unknown branch: AppVeyor build failed
BUILD FAILURE!
 
I have an extract method test failing on my machine :/
 
[Hosch250/Rubberduck] Hosch250 pushed commit 2beda59c to Issue1380: Reinstate quickfix
[rubberduck-vba/Rubberduck] build for commit 2beda59c on unknown branch: AppVeyor build succeeded
 
Seems to have passed there.
See you later.
 
night
 
7:44 AM
ok, now this is getting real
 
 
5 hours later…
1:07 PM
> Input and InputB were being created as Special Form SubroutineDeclarations, but they're functions, and they're declared in `_HiddenModule` as `_B_var_Input` and `_B_var_InputB`, so they can be created as Alias Form Declarations.

Likewise, `Array` is defined in `_HiddenModule`, so there's no need to Special-Form it.

I still can't get the `Width` procedure to resolve - I suspect there's a parser bug because Width's first argument is a file number that must be prefixed with a `#`.
[rubberduck-vba/Rubberduck] build for commit bcb78b03 on unknown branch: AppVeyor build failed
BUILD FAILURE!
> The RD context bar doesn't recognize the `Width` procedure in a usage like

```vb
Width #i, j
```

I suspect there's a parser bug because `Width`'s first argument is a file number that must be prefixed with a `#`.

Linking #1487 and #2834
 
@Duga GRRRRR
hmm, I was in the AliasDeclarations.cs, but I don't see how I could have broken 3 UntypedUsage tests...
 
 
2 hours later…
3:26 PM
> *Should* `Width` resolve to a function? VBA treats it as a function internally, but externally it's defined as a statement. The grammar for it appears to be correct:
```
// 5.4.5.7 Width Statement
widthStmt : WIDTH whiteSpace markedFileNumber whiteSpace? COMMA whiteSpace? lineWidth;
lineWidth : expression;
```
The VBE is similarly conflicted - it displays IntelliSense for it...

![untitled](https://cloud.githubusercontent.com/assets/8944005/23824389/749f09e0-063b-11e7-870f-71398c0e09b
 
 
1 hour later…
4:44 PM
You guys know some of the indenter setting names are inconsistent?
 
Hmm what do you mean? @Comintern ^^
 
@EBrown Names or behaviors?
 
@Comintern Names
        public bool ForceCompilerDirectivesInColumn1 { get; set; } = false;

        public bool ForceDebugStatementsInColumn1 { get; set; } = false;
 
Then yes. :-)
 
Both are labeled as 'Directives' (not 'Statements') in the UI
 
4:49 PM
ah, the names are correct, the groupings might be cheating a bit
 
^
TBH, organizing the settings is an nightmare.
If it were up to me, there would be public bool IndentationOn { get; set; } and that's it. You get @Comintern indentation. Deal.
 
LOL
 
Mocking the VBE UI in HTML/CSS is so counter-intuitive.
It's 2017 why can't we make a good UI? Lol
And it won't work right in Chrome or Safari I'd bet.
 
IIR you can export HTML directly from the AvalonEdit control. Not sure how useful that would be though.
 
UGH I have to design my own Checkbox from scratch to make it work right
 
4:59 PM
#ReinventTheSquareWheel
 
#WhatHaveIDone
#ImSorryHtmlAndCssGodsButItHadToBeDone
 
lol
 
Building this UI is such a PITA lol
 
OK, time to stop trying to revoke Excel's drag-drop handle and do something more productive.
 
5:02 PM
OMG I FIXED IT WTF HOW
 
I just realized that the indenter has another bug.
 
ours? or Bullen's?
 
Both. With enough nesting levels, the indentation can exceed the maximum code line length of the VBE.
 
ha
 
Do we care? That's a gigantic arrow.
 
5:04 PM
we could detect it and warn I guess
 
HOW DO I FIX THIS DAMN ALIGNMENT
 
or skip indenting a line that blows the max length
 
Oh snap
That's how
The evil, bastardized tricks I had to use to make my web-UI match the RD UI will never be spoken of again.
 
^Yeah, that's a problem.
 
hmm, cap it at 10?
 
5:08 PM
That seems much more reasonable. The side scroll in the preview pane looks ridiculous with my setting.
 
@Comintern Try 1e17 or something. ;)
 
LOL. "Intended":
Sub Test()
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          
 
@Comintern the TSR works, but the fact that WS/line continuations and other junk are in the parse tree is a PITA
Assert.AreEqual failed. Expected:<>. Actual:<
Private  bar As Long
>.

   at RubberduckTests.Postprocessing.CodeModuleExtensionTests.RemovesSpecificVariableInDeclarationList() in c:\Users\Mathieu\Documents\GitHub\Rubberduck\RubberduckTests\Postprocessing\CodeModuleExtensionTests.cs:line 148
oops, wrong expected code
still, notice the 2 spaces after Private
 
So if we put them in another channel, what does that break?
 
everything
so the TSR code needs to handle WS tokens, is all
at least it's one place
 
5:11 PM
Too bad so many of them are optional. That really makes it a PITA.
 
Assert.AreEqual failed. Expected:<
Private bar As Long
>. Actual:<
Private  bar As Long
>.
 
Indent spaces needs to be a uint. Surprisingly, negative values don't bomb though.
 
hmm, or we leave the WS tokens for the VBE to remove, and relax the expectations in the tests
nah
WS and continuations will be a problem if we pretend they don't exist
 
^
...as evidenced by how many continuation issues?
Hmmm... all of the integer settings in the indenter need to be unsigned.
HTH did I miss that?
 
lol
 
5:17 PM
I even put in public const int MinimumVerticalSpacing = 0;. :facepalm:
 
bbl
 
5:46 PM
Huh wtf
The latest The Ciber Crime Daily! http://paper.li/EdgarUlloa/1317433489?edition_id=51816880-0682-11e7-a350-0cc47a0d164b Thanks to @rubberduckvba @firox_ @JANIGAYL #anonymous #hack
 
?
 
Not sure what RD has to do with it, but glad it helped
 
WTH? "Anonymous Uses VBA for Hacking" is a much bigger scoop.
 
Any thoughts on the previewer?
 
What issue were you running into?
 
5:54 PM
Just UI issues. We could have dozens of changes to show.
VS's just shows the signature. No call sites.
OK, just one question: Properties.
 
It would be cool if they were "windowed" - i.e. forward and back buttons that showed each of the changes with a couple lines of code around it. That would be way too much work though.
 
Should I do the get, set, and let signatures?
 
Signature only sounds much more reasonable.
@Hosch250 I would.
 
I think I'll just reformat everything onto one line.
 
Oh wait, this is remove parameter, isn't it.
 
5:58 PM
That's how VS does it--it doesn't show the signature on multiple lines.
 
Gimme a sec - I forgot whether VBA properties support custom indexers.
Getters don't.
Oh wait - they do.
So yes - it should support property signatures.
 
Of course it will.
Should it show all the ones available, though, or just the getter, or just the one selected, or what?
 
For some reason I was thinking that VBA didn't support indexed properties. No clue where I got that idea...
Let me check to see if the parameter lists have to match.
 
They do, except for the last one.
 
Public Property Get Foo(bar As Long, baz As Long) As String
End Property

Public Property Let Foo(bar As Long, baz As Long, value As String)
End Property
Yep.
That makes me curious whether the refactor would currently break that code.
Regardless, I'd show whatever Get, Let, or Set members exist in the preview.
WTH does Enumerable.Repeat have a int for the count parameter?
 
6:12 PM
Shouldn't.
It knows to fix all of them, and it has tests to prove it.
 
 
So, that's how VS does it.
I'm inclined to think that is the easiest way.
 
[rubberduck-vba/Rubberduck] build for commit 75b54b3d on unknown branch: AppVeyor build succeeded
 
That way, I don't need to call the refactoring every time it changes.
The only question is whether VBA users are smart enough to realize it won't really add the modifier(s).
 
6:40 PM
@Comintern can we add "indent entire project"?
 
I don't see why not. I saw the reply...
 
> Line replacements the exceed the maximum line length are simply truncated by the VBE. This mangles code and leaves it uncompilable if the Indenter adds too much white-space to the beginning of a line. This is a bug that RD inherited from SmartIndenter - lines should only be indented up to a maximum width of 1024 characters.

Related, the VBE has a (ridiculous) maximum indentation level of 32. Since RD is falling back to the VBE setting if it isn't overridden by a user setting, RD should a
 
If you're going to respond with the list of bugs we fixed, don't forget that one^^^
 
Why do we reload the references every time now?
That used to be cached and only update when it changes.
 
7:01 PM
@Comintern sure.. hard to tell which are bugs in the original indenter though
 
I'll probably post a reply later this afternoon. I have the legacy SmartIndenter installed, so I've been flagging unit tests with a // Broken in VB6 SmartIndenter. comment when I run across them. It's probably only the tip of the iceberg though.
 
I posted a reply
(gosh I hate forums - my session expired in the middle of posting)
 
I just accidentally killed my Bonjour service. What does that do?
 
it's an Apple thing
 
7:14 PM
Should I restart my computer to get it back, or doesn't it matter?
 
I wouldn't bother
unless you need iTunes running
IIRC it's bonjour is Apple's update-checker
 
Nope, don't have that.
 
I almost have the previewer done.
Just checking the last changes.
 
> We intentionally left this out of the port from the legacy SmartIndenter because we frankly didn't see much of a use case for it (and it could potentially result in a cascade of opening code panes in a huge project). Now that the indenter is blazingly fast by comparison, this is mainly a constrained by what the user is willing to put up with.

Apparently users of the legacy version find this useful. See this [forum post](https://www.excelforum.com/excel-programming-vba-macros/1108949-smart
 
7:23 PM
Hey - FYI, I am still reliably getting the same null DeclarationFinder exception. I'm current with what was merged yesterday. It seems to be isolated to Debug mode whether I start directly from VS or attach to the process. When I launch Excel on its own...all is well.
 
Did I PR the change for that yet?
 
I saw something for NRE yesterday. Was that it?
 
@BZngr the exception shouldn't be thrown if you don't click anywhere in a code pane before launching the initial parse
 
Yeah, I think so. It just added a null conditional.
 
I'm not getting the chance to click anywhere before the exception occurs. Just opening the IDE causes it.
 
7:26 PM
@Mat'sMug That - should have also addressed the selection event too. Are you still getting errors if you change the cursor position during the initial parse?
 
nope
> Rubberduck perfectly worked for MSOffice hosts, when I tested it "for recruiting", but it broke down in ours 64-bit AutoCADs 2014 while VBE loading, so, it was easier to write self own simple tool for universally use while that time. But I will test it again for later :-)
 
@BZngr Check RubberduckParserState.FindSelectedDeclaration. Is this the code you have there?
public Declaration FindSelectedDeclaration(ICodePane activeCodePane, bool procedureLevelOnly = false)
{
    return DeclarationFinder?.FindSelectedDeclaration(activeCodePane);
}
 
Nope...missing the ? operator.
 
^ that's the bug.
And... there's the fix sitting in my unsynched commits.
2
 
7:33 PM
And...that does make it work! Great!
 
> Is it perhaps because the Procedure name is reused as a parameter name? Is that unique to this procedure?

Object Browser and OLEWoo both show it as a standard procedure.

![width](https://cloud.githubusercontent.com/assets/16574009/23826272/569b86a0-06ed-11e7-8abe-5e26c838ff06.png)

```
[helpcontext(0x000f65a4)]
void _stdcall Width(
[in] short FileNumber,
[in] short Width
);
```
[rubberduck-vba/Rubberduck] build for commit d0de73d5 on unknown branch: AppVeyor build succeeded
[rubberduck-vba/Rubberduck] build for commit 3144a437 on unknown branch: AppVeyor build succeeded
 
%&##!!$$$ frakken forum hides code blocks unless you're logged in ffs
and then it keeps dropping your session
I HATE FORUMS
 
> Yeah, I'm not sure exactly why they have it declared there and not the other file handling statements. I guess the main question. It does seem to be unique to Width though - none of the other file statements are declared anywhere. The Input* are all documented as both statements and procedures, but not Width. I wouldn't be surprised if that was added as a bug fix at some point, but who knows.
 
@Mat'sMug I listened to an interview with Joel Spolsky recently - he said SO was terrified for the first few years, that ExpertSexChange would just turn off their paywall. Then SO got critical mass, and EE did finally turn off the paywall, but about 8 years too late.
 
@Mat'sMug The only reason my session doesn't drop is because the damned scripts never complete.
 
There you go, @Mat'sMug.
 
[Hosch250/Rubberduck] Hosch250 pushed commit cd47c67c to Issue1380: Previewer
> Yeah, I'm not sure exactly why they have it declared there and not the other file handling statements. I guess the main question. It does seem to be unique to Width though - none of the other file statements are declared anywhere. The Input* are all documented as both statements and procedures, but not Width. I wouldn't be surprised if that was added as a bug fix at some point, but who knows.
 
Screenshot coming up from left-a field.
 
@Comintern make sure you Ctrl+A, Ctrl+C before you submit your reply
 
lol
 
7:43 PM
[rubberduck-vba/Rubberduck] build for commit cd47c67c on unknown branch: AppVeyor build succeeded
 
pats self on back
 
@Duga I'm going to go ahead and merge that for @BZngr.
 
@Hosch250 sweet!
 
@Comintern Thanks!
 
7:44 PM
[rubberduck-vba/Rubberduck] comintern pushed commit 70d58fbf to next: Null check DeclarationFinder - it won't exist pre-parse.
 
The refactoring (not the UI) seems to have a couple glitches when working with interfaces, even though the tests work...
Well, the UI reflects the glitches, but it isn't its fault.
I think it is something in the model, or something.
 
Looking good.
 
Just got up-to-date.
 
[Hosch250/Rubberduck] comintern pushed commit 70d58fbf to Issue1380: Null check DeclarationFinder - it won't exist pre-parse.
 
7:46 PM
I have 5 new TSR tests, one failing because of WS tokens (coming up with something to handle them) - yet 65 "old" tests are failing
 
[rubberduck-vba/Rubberduck] build for commit 612b9eda on next: AppVeyor build succeeded
[rubberduck-vba/Rubberduck] build for commit 8501cffc on unknown branch: AppVeyor build succeeded
 
Mergeable.
Although, hmm.
I might be able to clean some of it up a bit.
Eh, lunch time. Take a look and see what you think.
 
> Oh, but the file-handling statements Input and Input B *are* declared in `_HiddenModule` - they're just the pesky Aliased variety. My current PR fixes their declarations - If only I could work out what is breaking the tests.

```
BSTR _stdcall _B_str_InputB(
[in] long Number,
[in] short FileNumber
);
[helpcontext(0x000f735f)]
VARIANT _stdcall _B_var_InputB(
[in] long Number,
[in] short FileNumber
);
[helpcontext(0x000f735f)]
BSTR _stdcall _B_str_Input(
[in] long Number,
 
@Duga @ThunderFrame - Is it breaking the parser tests, or is it breaking in the resolver? I suspect this is similar to the Mid issue where the statement usage is colliding with the function usage.
 
Test Name:	UntypedFunctionUsage_IgnoreQuickFixWorks
Test FullName:	RubberduckTests.Inspections.UntypedFunctionUsageInspectionTests.UntypedFunctionUsage_IgnoreQuickFixWorks
Test Source:	C:\Users\Andrew\Documents\GitHub\Rubberduck\RubberduckTests\Inspections\UntypedFunctionUsageInspectionTests.cs : line 153
Test Outcome:	Failed
Test Duration:	0:00:00.0566929

Result StackTrace:
at System.Linq.Enumerable.First[TSource](IEnumerable`1 source)
   at RubberduckTests.Inspections.UntypedFunctionUsageInspectionTests.UntypedFunctionUsage_IgnoreQuickFixWorks() in C:\Users\Andrew\Documents\GitHub\Rubber
 
8:16 PM
@Comintern Width just doesn't get recognized at all. My PR does identify function usages of Input and InputB. Interestingly, the Input function takes arguments Number, #FileNumber, while Input statement takes #FileNumber, VarList (and VBE autocorrects an InputB statement to an Input statement)
 
> Actually there are several number of edge cases we test for, for which the single most effective "fix" involves a 50,000 V / 500 amp discharge in the keyboard.. or mouse... lol
Beep: Beep
duh
Much of the essence of building a program is, in fact, the debugging of the specification. - Fred Brooks (1986)
I think the only real reliable way to go is to implement a VBAParserBaseVisitor<string> for every statement the rewriter can rewrite
 
8:52 PM
Signing off. Feel free to review/merge that PR.
 
thanks @Hosch250!
 
9:45 PM
> RemovesSimpleVariableDeclaration : Passed
and it's going all the way up to the ModuleDeclarationsContext to locate the freakin' EndOfStatementContext to remove
> RemovesSingleVariableDeclarationWithLineContinuations : Passed
 
oh crap
parent could be a blockStmt (duh)
 
@Mat'sMug lol - though that was a comment on the PR for a second
@Duga - BUILD already
 
[rubberduck-vba/Rubberduck] build for commit 1b4e1810 on unknown branch: AppVeyor build succeeded (@ThunderFrame I don't build anything, I'm just the messenger!)
 
Good @Duga, good messenger girl
 
9:57 PM
Don't treat Simon's gf like a dog.
 
Was that @Duga using an AI to respond to my command?
 
cough sure
 
haha
HTH did that comment end up in the build event?
 
grrr
Assert.AreEqual failed. Expected:<
Sub DoSomething()
End Sub
>. Actual:<
Sub DoSomething()
    End Sub
>.
WS tokens are a frakken PITA
 
@ThunderFrame Mat edited Duga's message.
See the little pencil right there?
@Mat'sMug I believe you. Just let the IDE handle them.
 
10:04 PM
@Hosch250 Ah - Didn't realize the powers that come with SU
 
5 hours ago, by Mat's Mug
hmm, or we leave the WS tokens for the VBE to remove, and relax the expectations in the tests
 
In Roslyn, we just mark the nodes with Formatter.Annotation and let Roslyn fix the indentation.
@Mat'sMug That's what I did in the refactoring tests.
 
5 hours ago, by Mat's Mug
WS and continuations will be a problem if we pretend they don't exist
 
We acknowledge they exist, but we don't need to worry about redundant ones. That's what we have the indenter and the IDE for.
 
I used to work at a company that had a bot (called monkey) on a chat room. Type in =CONCAT("A","B","C") and monkey would have Excel resolve/evaluate the formula to a result. Type in !quoteadd username and it would add that user's most recent statement to a list of quotes. Type !quote and it would return a random quote.
 
10:08 PM
one of my favorites:
Apr 9 '15 at 13:01, by Mat's Mug
@RubberDuck We're programmers, we can do anything
 
a bot on this channel that had RD/RDWeb installed could offer: Type !Parse MsgBox prompt, vbInformation, title, helpfile, context and the bot could return the results to the chat...
 
10:21 PM
The "results" would be dozens of declarations?
 
results would be - does the line parse? list the constituent declarations
 
That would quickly become a huge mess.
 
 
10:36 PM
boy this is more complex than I thought
 
LOL.
What statements are you doing?
Maybe I can give a hand sometime.
GTG now.
 
@Hosch250 just a simple variable declaration.. I need to walk up to the parent context to determine which COMMA token to remove
*variable list
 
Well, if it was text, I'd say I already have it handled.
 
Sure, only in 20000 places
 
10:52 PM
LOL.
I think it is 3-4.
Yeah, it is very WET.
 
substring = Left(countryCode, 2)
^ Would it be information overload if the context text (with a selection inside countryCode), showed you the name/type of the countryCode variable and the name/type of Left's String parameter)? i.e. you'd have context about the variable AND where it is being used).
 
You typically don't need info about the parameter at that point.
 
IMO yes - and the context status text is already long enough to be clipped when long names are involved
 
11:08 PM
IKR - but a long custom function like FunctionDeclaration that has 13 parameters, it can be hard to know which argument you're working with, unless you delete and then reinsert a comma, in order to get the intellisense. (I have to do the same thing in VS, but maybe I'm missing something.)
 
Ctrl+i
 
is there a similar shortcut/command for VS?
 
no idea
 
Ctrl-Space.
Or Ctrl-J.
87
Q: Visual Studio keyboard shortcut to display intellisense

StanWhat's the keyboard shortcut for VS2005/2008 to display intellisense box if accidentally hit ESC and want the box come back again? Thanks.

 
that doesn't bring up the tooltip
 
11:17 PM
^
 
28
A: What's the default intellisense shortcut in vs2008?

Jon SkeetCtrl + Space for normal Intellisense, and Ctrl + Shift + Space for parameter Intellisense (e.g. to see what overloads are available in a method call which you've actually already filled in). I find the latter very handy :)

Ctrl+Shift+Space
 
ha - just found it
We have a few clashes with keyboard shortcuts in VBE... Ctrl+M should be "Import Module", but SmartIndenter co-opts it, Ctrl+Shift+I should be "Parameter Info", but RD co-opts it for "Show Inspections Window". Ctrl+R I can live with (although I'm not ready to fully surrender my Project Explorer just yet.
 
"Parameter info" is Ctrl+i in the VBE
and Ctrl+M was the original Smart Indenter hotkey for "indent module"
 
@Mat'sMug Actually, Ctrl+I is "Quick Info"
 
...and hotkeys can be reconfigured
 
11:25 PM
@Mat'sMug Should I start on the UI's for the rest of the refactorings, or should I wait until you have time to review the one?
 
go on
 
I know the original SI co-opted Ctrl+M, and that I can reconfigure hotkeys, but when there are so many free keys, it seems like we're burying some VBE functionality unnecessarily.
 
SI hijacked the "Print" hotkey too
IDK.. people review hotkey mappings, notice we're hijacking one they know and use, change it
 
@Mat'sMug The Printing Consumables industry still hasn't forgiven them...
 
[rubberduck-vba/Rubberduck] ThunderFrame pushed commit c2c319cc to next: Adds missing InputB token
[Hosch250/Rubberduck] retailcoder pushed 11 commits to Issue1380 (only showing some of them below)
[rubberduck-vba/Rubberduck] build for commit e07df9d8 on next: AppVeyor build succeeded
[rubberduck-vba/Rubberduck] build for commit ede0805d on unknown branch: AppVeyor build succeeded
 
11:36 PM
@Mat'sMug I know - Customization is easy (although I'm certain inertia stops many from bothering to adjust), but when co-opting built-in shortcuts users will undoubtedly choose different RD customizations if they want to restore the built-in shortcut, so, support/documentation becomes harder: "Did you press Ctrl+M, or whatever you have configured for Indent Module?"
 
...don't mention hotkeys in support/documentation - assume the user has configured them to whatever they like
it's configurable, assume it's configured
YESS!!!
                    startIndex = target.Context.Start.TokenIndex;
                    stopIndex = items[itemIndex + 1].Start.TokenIndex - 1;
                    return new RewriterInfo(startIndex, stopIndex);
bring 'em line continuations!
 
@Mat'sMug Sure, but a user asks "I pressed Ctrl+M" and Excel went boom. Support requires asking what the user has configured for Indent Module and/or if the user has customized Ctrl-M for anything else, before any other meaningful support can be offered.
avoid clashes by default, let the user customize their own clashes.
look how ---angry-- delighted @FreeMan was with being "customized"....
 
I assumed SI users would like the default hotkeys to be the same
 
maybe, but I'm sure there were some SI users that wanted their Import Module shortcut back
is there an open issue for the aliased string returning functions not displaying as the dollar-suffixed name?
 
11:58 PM
not sure
 
IIRC, it was working at one point
 
00:00 - 06:0006:00 - 00:00

« first day (1009 days earlier)      last day (2171 days later) »