Skip to content

Commit 72d11a4

Browse files
committed
Merge branch 'next' of https://github.com/rubberduck-vba/Rubberduck into HostApplicationDocument
# Conflicts: # Rubberduck.Core/Navigation/CodeExplorer/CodeExplorerComponentViewModel.cs
2 parents b0ca35f + 0aaf7c1 commit 72d11a4

36 files changed

+555
-319
lines changed

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -181,3 +181,5 @@ Installers/
181181

182182
CodeGraphData/
183183
/Rubberduck.Deployment/Properties/launchSettings.json
184+
/Rubberduck.Deployment/Rubberduck.API.idl
185+
/Rubberduck.Deployment/Rubberduck.idl

Rubberduck.CodeAnalysis/Inspections/Concrete/VariableNotUsedInspection.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ protected override IEnumerable<IInspectionResult> DoGetInspectionResults()
2222
.Where(declaration =>
2323
!declaration.IsWithEvents
2424
&& !IsIgnoringInspectionResultFor(declaration, AnnotationName)
25-
&& declaration.References.All(reference => reference.IsAssignment));
25+
&& !declaration.References.Any());
2626

2727
return declarations.Select(issue =>
2828
new DeclarationInspectionResult(this,

Rubberduck.CodeAnalysis/Inspections/Results/IdentifierReferenceInspectionResult.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ public IdentifierReferenceInspectionResult(IInspection inspection, string descri
2525
private static QualifiedMemberName? GetQualifiedMemberName(RubberduckParserState state, IdentifierReference reference)
2626
{
2727
var members = state.DeclarationFinder.Members(reference.QualifiedModuleName);
28-
return members.SingleOrDefault(m => m.Selection.Contains(reference.Selection))?.QualifiedName;
28+
return members.SingleOrDefault(m => reference.Context.IsDescendentOf(m.Context))?.QualifiedName;
2929
}
3030
}
3131
}

Rubberduck.CodeAnalysis/QuickFixes/RemoveUnassignedVariableUsageQuickFix.cs

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.Linq;
14
using Antlr4.Runtime;
25
using Rubberduck.Inspections.Abstract;
36
using Rubberduck.Inspections.Concrete;
47
using Rubberduck.Parsing;
58
using Rubberduck.Parsing.Grammar;
69
using Rubberduck.Parsing.Inspections.Abstract;
7-
using Rubberduck.Parsing.Symbols;
810
using Rubberduck.Parsing.VBA;
911

1012
namespace Rubberduck.Inspections.QuickFixes
@@ -23,8 +25,26 @@ public override void Fix(IInspectionResult result)
2325
{
2426
var rewriter = _state.GetRewriter(result.QualifiedSelection.QualifiedName);
2527

28+
if (result.Context.Parent.Parent is VBAParser.WithStmtContext withContext)
29+
{
30+
var lines = withContext.GetText().Replace("\r", string.Empty).Split('\n');
31+
// Assume that the End With is at the appropriate indentation level for the block. Note that this could
32+
// over-indent or under-indent some lines if statement separators are being used, but meh.
33+
var padding = new string(' ', lines.Last().IndexOf(Tokens.End, StringComparison.Ordinal));
34+
35+
var replacement = new List<string>
36+
{
37+
$"{Tokens.CommentMarker}TODO - {result.Description}",
38+
$"{Tokens.CommentMarker}{padding}{lines.First()}"
39+
};
40+
replacement.AddRange(lines.Skip(1)
41+
.Select(line => Tokens.CommentMarker + line));
42+
43+
rewriter.Replace(withContext, string.Join(Environment.NewLine, replacement));
44+
return;
45+
}
2646
var assignmentContext = result.Context.GetAncestor<VBAParser.LetStmtContext>() ??
27-
(ParserRuleContext)result.Context.GetAncestor<VBAParser.CallStmtContext>();
47+
(ParserRuleContext)result.Context.GetAncestor<VBAParser.CallStmtContext>();
2848

2949
rewriter.Remove(assignmentContext);
3050
}

Rubberduck.Core/Common/RubberduckHooks.cs

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,19 @@ public class RubberduckHooks : SubclassingWindow, IRubberduckHooks
1919
private readonly IList<IAttachable> _hooks = new List<IAttachable>();
2020
private static readonly Logger Logger = LogManager.GetCurrentClassLogger();
2121

22-
public RubberduckHooks(IVBE vbe, IGeneralConfigService config, HotkeyFactory hotkeyFactory, AutoCompleteService autoComplete)
23-
: base((IntPtr)vbe.MainWindow.HWnd, (IntPtr)vbe.MainWindow.HWnd)
22+
private static IntPtr GetVbeMainWindowPtr(IVBE vbe)
23+
{
24+
using (var window = vbe.MainWindow)
25+
{
26+
return (IntPtr)window.HWnd;
27+
}
28+
}
29+
30+
private RubberduckHooks(IntPtr ptr) : base(ptr, ptr) { }
31+
32+
public RubberduckHooks(IVBE vbe, IGeneralConfigService config, HotkeyFactory hotkeyFactory,
33+
AutoCompleteService autoComplete)
34+
: this(GetVbeMainWindowPtr(vbe))
2435
{
2536
_config = config;
2637
_hotkeyFactory = hotkeyFactory;

Rubberduck.Core/Properties/Settings.Designer.cs

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Rubberduck.Core/UI/Command/ExportAllCommand.cs

Lines changed: 21 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
using NLog;
44
using Rubberduck.VBEditor.SafeComWrappers.Abstract;
55
using Rubberduck.Navigation.CodeExplorer;
6-
using Rubberduck.UI.CodeExplorer.Commands;
76
using Rubberduck.Resources;
87
using Rubberduck.VBEditor.SafeComWrappers;
98

@@ -32,17 +31,32 @@ protected override bool EvaluateCanExecute(object parameter)
3231
return false;
3332
}
3433

35-
var projectNode = parameter as CodeExplorerProjectViewModel;
36-
37-
var project = parameter as IVBProject;
38-
39-
return Evaluate(projectNode?.Declaration.Project ?? project ?? _vbe.ActiveVBProject);
34+
switch (parameter)
35+
{
36+
case CodeExplorerProjectViewModel projectNode:
37+
return Evaluate(projectNode.Declaration.Project);
38+
case IVBProject project:
39+
return Evaluate(project);
40+
}
4041

42+
using (var activeProject = _vbe.ActiveVBProject)
43+
{
44+
return Evaluate(activeProject);
45+
}
4146
}
4247

4348
private bool Evaluate(IVBProject project)
4449
{
45-
return project != null && !project.IsWrappingNullReference && project.VBComponents.Count > 0;
50+
if (project == null || project.IsWrappingNullReference)
51+
{
52+
return false;
53+
}
54+
55+
using (var compontents = project.VBComponents)
56+
{
57+
return compontents.Count > 0;
58+
}
59+
4660
}
4761

4862
protected override void OnExecute(object parameter)

Rubberduck.Core/UI/Command/FindAllReferencesCommand.cs

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -192,24 +192,24 @@ private Declaration FindTarget(object parameter)
192192
return declaration;
193193
}
194194

195-
bool findDesigner;
196195
using (var activePane = _vbe.ActiveCodePane)
197196
{
197+
bool findDesigner;
198198
using (var selectedComponent = _vbe.SelectedVBComponent)
199199
{
200-
findDesigner = activePane != null && !activePane.IsWrappingNullReference
201-
&& (selectedComponent?.HasDesigner ?? false);
200+
findDesigner = activePane != null && !activePane.IsWrappingNullReference
201+
&& (selectedComponent?.HasDesigner ?? false);
202202
}
203-
}
204203

205-
return findDesigner
206-
? FindFormDesignerTarget()
207-
: FindCodePaneTarget();
204+
return findDesigner
205+
? FindFormDesignerTarget()
206+
: FindCodePaneTarget(activePane);
207+
}
208208
}
209209

210-
private Declaration FindCodePaneTarget()
210+
private Declaration FindCodePaneTarget(ICodePane codePane)
211211
{
212-
return _state.FindSelectedDeclaration(_vbe.ActiveCodePane);
212+
return _state.FindSelectedDeclaration(codePane);
213213
}
214214

215215
private Declaration FindFormDesignerTarget(QualifiedModuleName? qualifiedModuleName = null)

Rubberduck.Core/UI/Command/IndentCurrentProjectCommand.cs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,11 @@ public IndentCurrentProjectCommand(IVBE vbe, IIndenter indenter, RubberduckParse
2323

2424
protected override bool EvaluateCanExecute(object parameter)
2525
{
26-
return !_vbe.ActiveVBProject.IsWrappingNullReference && _vbe.ActiveVBProject.Protection != ProjectProtection.Locked;
26+
using (var vbProject = _vbe.ActiveVBProject)
27+
{
28+
return !vbProject.IsWrappingNullReference &&
29+
vbProject.Protection != ProjectProtection.Locked;
30+
}
2731
}
2832

2933
protected override void OnExecute(object parameter)

Rubberduck.Core/UI/Command/MenuItems/CommandBars/AppCommandBarBase.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -224,7 +224,7 @@ private void child_Click(object sender, CommandBarButtonClickEventArgs e)
224224
ICommandMenuItem item;
225225
try
226226
{
227-
item = _items.Select(kvp => kvp.Key).SingleOrDefault(menu => menu.GetType().FullName == e.Control.Tag);
227+
item = _items.Select(kvp => kvp.Key).SingleOrDefault(menu => menu.GetType().FullName == e.Tag);
228228
}
229229
catch (COMException exception)
230230
{
@@ -236,7 +236,7 @@ private void child_Click(object sender, CommandBarButtonClickEventArgs e)
236236
return;
237237
}
238238

239-
Logger.Debug("({0}) Executing click handler for commandbar item '{1}', hash code {2}", GetHashCode(), e.Control.Caption, e.Control.Target.GetHashCode());
239+
Logger.Debug("({0}) Executing click handler for commandbar item '{1}', hash code {2}", GetHashCode(), e.Caption, e.TargetHashCode);
240240
item.Command.Execute(null);
241241
}
242242
}

0 commit comments

Comments
 (0)