« first day (1628 days earlier)      last day (1552 days later) » 

6:01 PM
Right! There's also that pesticide derived from orange oil...but I don't think the coding world has an equivalent. You usually have to step on them one by one but every once in a while you find a nest...
 
Freeman's done a pretty good job of finding bugs.
Maybe he was the one that put them in initially only to "find" them later.
 
#Theyreontome
 
@Excelosaurus oh, but you only break stuff when you refactor without Rubberduck! ;-) — Mathieu Guindon 2 mins ago
"refactoring frenzy" in vanilla-VBE sounds scary
 
@Vogel612 Dogs do too, although they usually shouldn't.
 
6:11 PM
ya. snapping at bees is still the second favorite pastime of my parent's dog
 
LOL, ouch.
 
right after eating daisies
 
My dog's gotten herself stung a couple times. It's usually the bee's fault for getting stuck in her fur, though.
My sister's dog used to eat dandelions. She'd eat them flower, leaves, and root.
 
@MathieuGuindon Not sure I ever reached "frenzy" level, but BD the vanilla-VBE was all I had for adjusting code. (Not sure I called it refactoring back then)
 
My other sisters' dogs like to eat bunny poop.
 
6:16 PM
"BR" for "Before Rubberduck"? like, we're in year 4 AR?
 
Yeah, except I just pulled it from under you. :) Changed that to BD - Before Rubber duck
though I guess AD is somewhat ambiguous in that naming convention...
 
I don't think I thought that through very well...
 
Got my back out of whack, and it's pulling something in my inner thigh :(
 
smacks Hosch's back into whack
 
6:29 PM
That's a lot of ACK's.
 
Hotkeys like Ctrl+K, Ctrl+C needs to be added to Rubberduck... VS has me wanting moar from an IDE.
 
Comment?
VBA has a shortcut for that already.
 
Not Ctrl+K, Ctrl+C, which I now have in muscle memory.
 
Well, you know the real solution here...
Instead of making VBA into C#, let's just use C#?
Pretty soon you'll be saying VBA doesn't have lambdas.
 
@Hosch250 :laugh: If only it were that easy.
The more I use C# the more I want what it has in VBA.
 
6:34 PM
Well, like I said, you can probably get a job with C# now.
Although, I can't say I actually recommend it yet.
Because once you get a job in it, it'll be like a C# Worst Practices class.
 
I have to be able to not just use what I see in RD. I have to be able to create it and then use it myself.
 
Hahaha so true
 
So, you might as well take another year or so and learn it right the first time.
 
Can only follow RD's breadcrumbs for so long.
 
It's always best to work underneath your abilities up until you are pretty much the smartest guy in the room.
And that's a position you don't want to get into until you are actually on the language design team. And not even then :)
@MathieuGuindon Is my quick fix design still holding up?
 
6:38 PM
@Hosch250 Been there WRT Excel/VBA and a couple other things at work since I started.
Big fish in a small pond vs small fish in big ocean.
 
I thought of a potential slight improvement--instead of each fix declaring whether it can fix an inspection type, have each fix implement a Func<InspectionResult, bool>, or something, and have the quick fix inspect the result and declare whether it can fix it or not.
 
@Hosch250 so far so good yeah
 
I was thinking of it because I saw that issue about inspection design.
What's wrong with the current one, other than there being so blooming many?
 
Well we need to get the inspector to work with a single module at a time... which, given how each inspection freely accesses the RPS, isn't trivial
 
Are you sure this isn't an X/Y problem?
I think the real problem is just the inspection UI.
 
6:42 PM
don't forget the time to run them.
 
Yeah.
 
they've been uh... substantial.
 
Let's see...
I can potentially improve the time to run them.
And the UI could certainly be nicer.
 
if we can amortize the runtime per module, that'd be one way.
 
running all inspections when there's 30 of them isn't the same as when there's 300 of them. we need the design to scale.
 
6:43 PM
Yep.
 
One most significant annoyance for me, though is when it collapse 100+ results
 
@this Agree.
 
giving me with no way to fix them.
well review, rather.
 
@this we wouldn't need to do this if the only results were from the active module
 
Well, I'll try to find time to clean this whole mess up.
@MathieuGuindon That's why I say it's an X/Y problem.
 
6:44 PM
The other annoyance (which is also true of refactoring, too) is that we can't queue them up and execute them as a single action.
 
You are really just limiting the scope to fix a bigger issue.
 
That is particularly acute with rename, for example.
 
@this Agree.
 
I inherit a PoS procedure wtih 100 variables. 100 renames + 100 reparses? uhhhhh.....
 
Yep.
I wonder...
 
6:45 PM
@Hosch250 possibly... but then again why inspect 20 modules if you're only looking at one?
 
@MathieuGuindon Because that's like VS saying "Let's only show the errors from the open document, even though they block the build."
I want to see all errors if I'm going to be fixing them anyway.
And sometimes patterns of errors help me write regex to clean them up.
(Mostly when refactoring unit tests.)
 
I see it more as R# showing me diagnostics for the code I'm looking at
 
But, what VS does is shows all errors, even including those that are self-inflicted.
 
could be a setting: [x] Inspect all modules vs [ ] Inspect active module only
 
I can easily see someone first opening a bad project in RD and wanting to see all errors to identify patterns of problems to clean the code up.
 
6:47 PM
why add noise if we can't build due to this one blocking error.
 
@MathieuGuindon Ugh.
Put that on the window.
Let them filter it by type, module, severity, whatever they like.
 
@Hosch250 has a point. That is what I'd do when I'm taking over an inherited project and need to get a lay of the land.
 
But frankly I wouldn't work like that all the time. it'd get really noisy.
 
6:48 PM
Agree. But it should be on the window, not in the settings.
 
@MathieuGuindon "Inspect active project only" would probably be more useful for my typical use case.
2
 
ha, then there's that too
 
Or perhaps maybe use our fancy folder structure.
Then click the node you want to see.
And have a toggle "just this node" and "this node and all children".
 
that'd work as long you also support the individual vbcomponents.
(e.g. no folder required)
 
Yep, they'd be a dedicated node. It would be like the code explorer.
 
6:50 PM
one problem is processing 20 modules 100 times over when you're only interested in one module. another problem is dealing with thousands of results when you are interested in everything
 
Documents should default to a "DocumentClasses" pseudo folder or something like that.
 
IMO it's different problems, with different solutions
 
Really, though, I think the inspections can be sped up.
 
Caching?
 
one needs the results in the code pane, the other needs a toolwindow and some bloody virtualization or something
 
6:51 PM
That's what R# does.
 
@Comintern No, runtime.
Although, caches can help too.
 
@Comintern Long ago, I suggested providing a view similar to the PE and Mat didn't want that - why encourage bad organization?
 
@Comintern yup, and that's what RD needs to do too IMO
 
Most of the inspections are pretty damned quick. There are a couple that don't currently scale well though.
 
Exactly.
 
6:52 PM
Granted, the R# cache is the most likely thing to get screwed up...
 
Those are the ones that need special attention.
Although, you do know we don't just stream the results as we get them.
 
The big problem with the ones that don't scale well is that those tend to be the ones that can't be run in isolation.
I.e., procedure not used.
 
why not?
 
You can't run that on a single module.
 
sure you can
you still have the parser state... but you're only looking at the procedures in module X
 
6:54 PM
You can run in against modules that have changed, but you still need to do a full run for a baseline.
 
@Comintern Still not accurate.
C didn't change, but the declaration in it just lost it's only use when B changed.
But, as I said, we can almost certainly improve performance.
 
IInspectionResult.IsValid?
 
Wouldn't that just be the inspection itself?
 
Right now, VS's behavior seems to be defer showing error/warning until you open a document
 
6:56 PM
why invalidate every ProcedureNotUsed results when only 1 was changed?
 
So in that case, ProcedureNotUsed wouldn't be updated until you open the module containing the implementation. Right?
 
For one, they hold parser contexts or identifier references.
 
the more I think of it, the more I'd like an ambient context holding/caching the RPS, the code metrics... and the inspection results - then have a way to invalidate individual items, and reuse the items that are still valid
 
The parser contexts don't "go stale" unless there's a reparse of the module, but the identifier references aren't as simple.
Roselyn Duck?
 
Curious - when we reparse, what is the behavior of the stale context?
 
6:59 PM
ugh. if inspection results were annotating context nodes....
 
Invalidation is going to be a heck of a lot harder than you might think.
 
@this it hits the ditch
 
If context nodes were running inspections...
 
@MathieuGuindon We do for several of them.
 
really?
 
7:00 PM
@MathieuGuindon unable to parse the answer. :-) An exception is thrown? Or we just end up using something that's gibberish?
 
@this stale context is just discarded & replaced with a fresh one
context == parse tree
 
um.
so I have a inspection Foo referencing context 07..09. A parse is requested. The inspection Foo isn't changed in the interim but the context 07..09 is now something else.... If we forget to refresh Foo, it gets wrong context?
 
I'd imagine the old parse result would just not get GC'd. And if you tried to use it, you'd end up with trashed modules.
 
Ok. That's what I was worried about.
 
nah, you'd just get a Selection that's off
 
7:04 PM
Thus the trashed modules.
 
i.e. running a quickfix on Foo makes.. yeah, trash.
 
and the parser tree doesn't provide any events when it's been updated, right?
 
that's why we run inspections by default on successful parse
@this ParserState_OnStateChanged?
 
no, edit didn't make it - i meant to say parser tree
huh. Editing still shows it tree but the chat won't show the edited text. Yay me.
 
well the parse controller is in charge of everything involving the parser... we know when a parse tree is updated, because we're the ones doing it...
I'm missing something
 
7:07 PM
That wouldn't be horribly difficult to extend with ParserState_OnModuleChanged.
 
No, i was thinking too low.
 
parse trees don't get updated, they get outright replaced
 
Seems to me inspections could use a similar design to one that Max implemented for rewriting.
 
That's on reason I think having contexts inspect themselves would be a good performance direction - it would make inspection inherently lazy.
 
that way the inspections themselves don't have to manage the state.
 
7:09 PM
@Comintern works for parsetree inspections anyway
non-parsetree inspections though..
 
Why not?
For example, a letStatementContext could know to inspect itself to see if it needs Set.
 
DefaultProjectNameInspection attaches to what node?
 
The root node?
 
...root node of a parse tree is at module level
 
Hmm...
That would need 2 classes of inspection then.
 
7:11 PM
TBH that's the one inspection that's at project level I think
@Comintern we already do
there's IInspection, then there's IParseTreeInspection : IInspection
 
Right. It would still need multiple classes of inspection.
The difference between the 2 now is kind of artificial though.
It has more to do with availability of declarations and the stuff they carry around.
 
yeah
i.e. leaky abstraction
not sure what the solution is though
 
Meh, just a naming thing. IDeclarationInspection
I still want to play around with the idea of attaching the parse tree to the type library.
 
for editable project open in VBIDE?
 
Random notice: Bose earbuds are calibrated in different ranges for each bud.
 
7:16 PM
@this Yep.
 
So you can listen entirely in one ear.
 
I can definitely see us using parse trees for locked projects. But why a open/editable project?
 
It's interesting when there's a slide in range, and it goes from one ear to the other.
 
It doesn't necessarily have to come from the TypeInfo stuff though. We get enough information from a parse to generate one (at least for elements with code).
 
~confused~
 
7:17 PM
@this It ties the "Declaration" to the parse tree.
 
@this we don't get parse trees for locked projects
 
For example, you can determine your scope by walking the tree of the typelib.
 
@MathieuGuindon not now, but we can
 
no
we can get Declarations though
wait, what??
 
IINM, right now, those Declarations have no parser context attached.
 
7:18 PM
correct
IIUC typelib API doesn't give us any source code, just members/API
 
I read @Comintern's remarks to mean that we sic the typelib API on those and get a parse tree, then attach.... right?
 
"parse tree" involves source code
 
(or I'm mighty confused, which is nothing new)
 
What I'm thinking of would be something along the lines of subStmtContext implementing an interface like IComMember.
At that point it basically is a ModuleBodyElementDeclaration.
With children that implement ILocalVariable or something like that.
...and a collection of logic nodes to walk...
...etc.
 
I might be still confused but this really look to me it should serviced by a querying engine.
(which the DeclarationFinder is one, of sorts.)
 
7:24 PM
That's just an implementation detail though.
 
True
 
"I'm making a small concept operating system" doesn't quite add up with "I'm a beginner and I'm still learning VBA" in my mind. I've written VBA for over 15 years and I've no idea how I'd go about this. Heck I'd have to research doing this with current tech. I doubt you'll get anything meaningful without diving head-first into Win32 API and COM - stuff that's possibly well above your head right now. How about learning with a simpler project, like, some calculator app? — Mathieu Guindon 7 secs ago
 
Still not seeing how type lib helps out here, though.
i mean, the declarations already tell us what we need to know.... right?
 
Only because we gather all of the information that they'd ever possibly need to know up front.
 
7:26 PM
right now declarations either come from walking parse trees (i.e. source code), or from the COM collector (i.e. referenced COM libraries)
 
We take this huge tree and pound it flat to get Declarations.
(much better now than it used to be)
 
@MathieuGuindon i have a feeling he didn't mean operating system as in well, operating system.
 
ok but wth would you want to drag a frame around on a userform?
 
A Brainfuck debugger would be trivial in Excel.
 
IDK. But that's certainly not a OS thing.
 
7:28 PM
hunch is that they want to treat frames like windows
 
at very least a very very tiny slice of it.
 
and now they want to be able to move them on their "desktop"
aka form's client area
 
I wouldn't do that in VBA. The subclassing would be a PITA.
Theoretically possible though.
 
> I doubt you'll get anything meaningful without diving head-first into Win32 API and COM - stuff that's possibly well above your head right now.
 
...so far that you can't even see it up there.
 
7:30 PM
0
Q: Windows 7 Close, Minimize & Maximize Buttons Font Family

jj1064I am developing an Operating System. Could some tell me the font family used for the Windows 7 close, minimize and maximize buttons. (I am using an aero theme for my OS similar to Windows 7). I have tried Segeo MDL2 Assests but I still can't find the right icons.

definitely meant "OS" as in "OS"
 
Similar to Windows 7? In VBA?
 
.....
 
The pre-emptive multi-tasking is going to be a bitch.
 
> Threads: 1
 
So more like "Window" 7
 
7:32 PM
that's a laugh. Writing a OS from VBA.
On the bright side: it'll never BSOD; you'll get a Continue | Debug | End | Help dialog!!
 
TBH, one of the last things I wrote in C-64 BASIC was a program I saved on a disk I labelled "Windows 96". I had an arrow-shaped sprite that you moved around with the keyboard, and a menu bar from where you could list disk content and launch a file
#YoungAndClueless
 
i bet you got some good programming experience out of it, though.
 
@this YLOD - "Yellow Line Of Death"
3
 
lol
 
more than with the "Jurassic Park Admin Panel" menus I had coded based on descriptions in the book
 
7:35 PM
ok, that, I have a big issue with.
I mean, WTF, who wants a boxy 3-d navigation system?
Spectrum was a fun game, but it'd be a horrid OS.
 
You're going to need to look at how the OLE containers work. UserForms are composited at run-time, so anything "positional" relative to the form is handled via an interface extension. I'd start researching how fm20.dll works, then start reading up on object embedding. — Comintern 14 secs ago
 
lol no, that was just in the movie
 
i know. it just jogged my memory of that girl "hacking" by.... opening a file.
 
@MathieuGuindon o_O ?????
Are you sure they're "fonts" and not just "images"? — FreeMan 20 secs ago
 
Mathieu Guindon - It's only frame controls, text controls, image controls with icons, it's nothing that bad. I've programmed in VBA for 3 years, but I say I'm a begginer because i find it makes my life easier when understanding stuff. And, well this OS contains a calculator so.... I've done other languages and I know about Win32, API and COM. — jj1064 2 mins ago
too smug. not ready. no padawan.
 
7:43 PM
meh. let him try it out.
 
I'm already scared of how much code they've written for this "OS" already
 
Don't worry, I'm sure it'll be more functional than Windows 96. And much more buggier.
 
lol
anyway, voted to close. I like the term "begginer"
 
For "a more straightforward approach", that drifts pretty heavily to the right... — Comintern 8 secs ago
 
7:55 PM
Anyone that does engineering and uses sub/super scripting for formulas f(x) = x^2+2x+1 may find ablebits.com/office-addins-blog/2018/05/16/… useful.
Never thought about digging into the unicode section to find out where the characters are stored to allow their use in NumberFormats.
 
If it's a font, it'll probably be Segoe UI Symbol.
 
It's not a font. It's using unicode.
 
They do look like images on Win7 though
I mean the controlbox bittons
I mean the controlbox buttons
 
@IvenBach 🦄 says yes.
 
It's not a font, @this is a unicorn
 
8:01 PM
@IvenBach or you just use LaTeX?
 
lol
 
@Vogel612 Does it work inside of Excel?
 
why would you need formula typesetting in EXCEL?
???
 
This is Excel, do you even need to ask "why".
 
worst case you can generate yourself an image and use that
 
8:03 PM
Can't use an image in a number format.
 
@IvenBach that's like.... one of the primary motivators of a codereviewer
> "why tf are you doing it that way?"
 
#Reasons
 
@Vogel612 can LaTeX do spreadsheets?
 
with a bit of time and effort... sure
 
I really don't want rubbers strewn all over my spreadsheets.
 
8:04 PM
not the kind that auto-updates, but...
 
ah more like Word's table
 
Regarding the inspections, I think the biggest problem is that we do not cache them except when we really shouldn't.
Admittedly, cache invalidation will be a PITA.
 
@this except in a basically arbitrary format. so long as you can fit it into a pdf, LaTeX can deal with it
IIRC Word is only for properly printable stuff.
 
Btw, heads-up, I am in the process of getting the locked projects into RD.
2
 
yeah, the trouble is that it sounds like that if you need to write formulas in the correct notations, you'll have to use both together, and go to a lot of trouble between converting between the formula notation to Excel's formula expression.
 
8:07 PM
@M.Doerner ohhh shiny.
 
^^^^^
Can't wait for that.
 
We basically have all the pieces there.
 
actually... green release first ;)
and once it's in and vetted, that's another green release!
 
aw, it can wait another 6 months.
 
I was planning on making the PR WIP until the next release.
 
8:09 PM
@Vogel612 For a cell that calculates area from two different cells. =A1*A2 and have it show the result of 10 ft² with a number format.
 
ew. table headers ftw
 
This isn't in tables.
 
why?
 
The hardest part for the PR is the cache invalidation.
 
6 mins ago, by IvenBach
#Reasons
 
8:10 PM
#bleh ;)
 
It's the way higher ups want it.
 
but why do they want it that way?
like... be the annoying five year old when you get requirements
 
This isn't about requirements, at least I don't think so.
They went down this road before I came along and started fixing some of it.
 
"It's the way higher-ups want it" is a requirement in my book
 
@M.Doerner oh nice!!
 
8:19 PM
@Vogel612 not always a good requirement, but a requirement nonetheless...
I've been having inconsistent functionality in applying the Ignore once quick fix for Object variable {x} is assigned without the 'Set' keyword inspection.
getting this in the log:
2018-11-20 15:19:41.2588;ERROR-2.2.0.4175;Rubberduck.UI.ToDoItems.ToDoExplorerViewModel;System.Runtime.InteropServices.InvalidComObjectException: COM object that has been separated from its underlying RCW cannot be used.
   at System.StubHelpers.StubHelpers.GetCOMIPFromRCW(Object objSrc, IntPtr pCPCMD, IntPtr& ppTarget, Boolean& pfNeedsRelease)
   at Microsoft.Vbe.Interop._VBComponent.get_CodeModule()
   at Rubberduck.VBEditor.SafeComWrappers.VBA.VBComponent.get_CodeModule() in C:\projects\rubberduck\Rubberduck.VBEditor.VBA\SafeComWrappers\VB\VBComponent.cs:line 23
Not sure if that's the cause or not.
 
that seems familiar
 
It seems that I have to exit Excel then restart to make it work again.
 
I remember a while ago, we had a weird fix about opening a code pane
I think that got removed in a recent-ish PR
 
wow... that was weird... I just got asked to help because of my height! Other than by small children, that never happens!
 
Is uttering "oh the youth today" officially making me old?
Until it bites you in the rear end because you didn't bother understanding it. FWIW the concept of passing arguments by value or by reference is just as valid in C# and other languages, understanding it properly in VBA isn't wasted energy. Especially if you're any kind of serious about whatever it is that you're studying that makes you write code. — Mathieu Guindon 3 mins ago
#GetOffMyLawn
 
8:35 PM
@this I just closed/opened Excel and I'm getting no response from the quick fix at all... gunna open an issue.
 
w/ smae log entry, right?
 
#derp already opened it this morning...
 
@MathieuGuindon Yes.
 
@MathieuGuindon nah, just weepy
Interesting, I've just looked at TagSpaces version model. It's OSS hosted on GitHub. How do they get away with charging for versions vs me just going to GH and running it?
 
Nothing says all OSS is free..
 
8:46 PM
true, but especially since it's Java & JavaScript, what's to stop me from cloning the repository & just running the paid versions myself?
well, beyond "conscience" and "ethics"...
 
FWIW, there's a common model where it's free to self-host but you pay for hosted service
 
nothing. assuming the source code for the paid version is on github
 
@FreeMan That looks suspiciously like the issue with trying to load a type info from a non-ui thread.
 
I believe ELMAH is like that, too.
 
@Comintern no need to be suspicious of me!
@MathieuGuindon valid point...
Just wondering...
 
8:50 PM
When we get around to implement a setting where projects can be listed that should be treated as built-in, do we want to reload them when they get changed or do we want to ignore changes in them entirely?
This decised whether we store the content hash or not.
And it has an impact on how I will implement loading the locked projects.
 
@Comintern fwiw, can't find it atm but aiui but I'd double check a recentish PR that removed the accessing of codepane in order to return a codemodule.
there was a weird bug where one had to open codepane in order to access the codemodule
 
@FreeMan FWIW git supports versioning separate subdirectories in separate repositories
so they could have code that's not on GH, which you'd be paying for
 
@this It might have been closed already.
 

« first day (1628 days earlier)      last day (1552 days later) »