Skip to content

Commit

Permalink
fix: Only show spelling issues, not directives (#3263)
Browse files Browse the repository at this point in the history
  • Loading branch information
Jason3S committed May 15, 2024
1 parent 6302270 commit 9c3334b
Show file tree
Hide file tree
Showing 10 changed files with 60 additions and 33 deletions.
2 changes: 1 addition & 1 deletion packages/client/src/applyCorrections.mts
Original file line number Diff line number Diff line change
Expand Up @@ -198,7 +198,7 @@ export async function actionAutoFixSpellingIssues(uri?: Uri) {
const issueTracker = di.get('issueTracker');

const autoFixes = issueTracker
.getIssues(uri)
.getSpellingIssues(uri)
?.map((issue) => ({
issue,
suggestions: issue.providedSuggestions(),
Expand Down
2 changes: 1 addition & 1 deletion packages/client/src/codeAction.mts
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ export class SpellCheckerCodeActionProvider implements CodeActionProvider {
return [];
}

const diags = this.issueTracker.getIssues(document.uri)?.filter((diag) => diag.range.contains(range));
const diags = this.issueTracker.getSpellingIssues(document.uri)?.filter((diag) => diag.range.contains(range));
if (diags?.length !== 1) return [];
const pendingDiags = diags.map((diag) => this.diagToAction(document, diag));
return (await Promise.all(pendingDiags)).flatMap((action) => action);
Expand Down
2 changes: 1 addition & 1 deletion packages/client/src/decorators/decorateIssues.mts
Original file line number Diff line number Diff line change
Expand Up @@ -132,7 +132,7 @@ export class SpellingIssueDecorator implements Disposable {

let hasHidden = false;

const issues = (this.issueTracker.getIssues(doc.uri) || []).filter((issue) => {
const issues = (this.issueTracker.getSpellingIssues(doc.uri) || []).filter((issue) => {
const range = issue.range;
const hide = active.some((r) => r.intersection(range));
hasHidden ||= hide;
Expand Down
4 changes: 2 additions & 2 deletions packages/client/src/diags.mts
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ import { isDefined, uniqueFilter } from './util/index.js';
*/
export function getCSpellDiags(docUri: Uri | undefined, issueType?: IssueType): SpellingDiagnostic[] {
const issueTracker = getDependencies().issueTracker;
const diags = (docUri && issueTracker.getIssues(docUri))?.map((issue) => issue.diag) || [];
const diags = (docUri && issueTracker.getSpellingIssues(docUri))?.map((issue) => issue.diag) || [];
const cSpellDiags = filterDiags(diags).filter((d) => d.data?.issueType === issueType || (!d.data?.issueType && !issueType));
return cSpellDiags;
}
Expand Down Expand Up @@ -122,7 +122,7 @@ export function registerDiagWatcher(show: boolean, onShowChange: Event<boolean>)

for (const uri of uris) {
if (!useDiagnosticsCollectionForScheme(uri)) continue;
const diags = issueTracker.getIssues(uri);
const diags = issueTracker.getSpellingIssues(uri);
collection.set(
uri,
diags?.map((issue) => issue.diag),
Expand Down
4 changes: 2 additions & 2 deletions packages/client/src/diags.test.mts
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ describe('Validate diags', () => {
mockGetDependencies.mockImplementation(
() =>
({
issueTracker: { getIssues: vi.fn(implGetIssues) },
issueTracker: { getSpellingIssues: vi.fn(implGetIssues) },
}) as any,
);
});
Expand All @@ -34,7 +34,7 @@ describe('Validate diags', () => {
mockGetDependencies.mockImplementation(
() =>
({
issueTracker: { getIssues: vi.fn(() => []) },
issueTracker: { getSpellingIssues: vi.fn(() => []) },
}) as any,
);
const uri = Uri.parse(import.meta.url);
Expand Down
34 changes: 26 additions & 8 deletions packages/client/src/issueTracker.mts
Original file line number Diff line number Diff line change
Expand Up @@ -28,20 +28,38 @@ export class IssueTracker {
this.disposables.push(workspace.onDidCloseTextDocument((doc) => this.handleDocClose(doc)));
}

public getIssues(uri: Uri): SpellingCheckerIssuesCollection | undefined;
public getIssues(): [Uri, SpellingCheckerIssuesCollection][];
public getIssues(uri?: Uri): SpellingCheckerIssuesCollection | [Uri, SpellingCheckerIssuesCollection][] | undefined {
public getSpellingIssues(uri: Uri): SpellingCheckerIssuesCollection | undefined;
public getSpellingIssues(uri?: undefined): [Uri, SpellingCheckerIssuesCollection][];
public getSpellingIssues(
uri?: Uri | undefined,
): SpellingCheckerIssuesCollection | [Uri, SpellingCheckerIssuesCollection][] | undefined {
return uri
? this.getIssues(uri, (issue) => issue.isIssueTypeSpelling())
: this.getIssues(undefined, (issue) => issue.isIssueTypeSpelling());
}

public getDirectiveIssues(uri: Uri): SpellingCheckerIssuesCollection | undefined {
return this.getIssues(uri, (issue) => issue.isIssueTypeDirective());
}

public getIssues(uri: Uri, predicate?: (issue: SpellingCheckerIssue) => boolean): SpellingCheckerIssuesCollection | undefined;
public getIssues(uri?: undefined, predicate?: (issue: SpellingCheckerIssue) => boolean): [Uri, SpellingCheckerIssuesCollection][];
public getIssues(
uri?: Uri,
predicate?: (issue: SpellingCheckerIssue) => boolean,
): SpellingCheckerIssuesCollection | [Uri, SpellingCheckerIssuesCollection][] | undefined {
predicate ??= () => true;
if (!uri)
return [...this.issues.values()].map(
(d) => [d.uri, new SpellingCheckerIssuesCollection(d.issues)] as [Uri, SpellingCheckerIssuesCollection],
(d) => [d.uri, new SpellingCheckerIssuesCollection(d.issues.filter(predicate))] as [Uri, SpellingCheckerIssuesCollection],
);
const issues = this.issues.get(uri.toString())?.issues;
const issues = this.issues.get(uri.toString())?.issues.filter(predicate);
return issues ? new SpellingCheckerIssuesCollection(issues) : undefined;
}

public getIssueCount(uri?: Uri): number {
if (!uri) return [...this.issues.values()].reduce((a, b) => a + b.issues.length, 0);
return this.issues.get(uri.toString())?.issues.length || 0;
public getIssueCount(uri?: Uri, predicate: (issue: SpellingCheckerIssue) => boolean = (issue) => issue.isIssueTypeSpelling()): number {
if (!uri) return [...this.issues.values()].reduce((a, b) => a + b.issues.filter(predicate).length, 0);
return this.issues.get(uri.toString())?.issues.filter(predicate).length || 0;
}

public getUrisWithIssues(): Uri[] {
Expand Down
2 changes: 1 addition & 1 deletion packages/client/src/issueViewer/issuesViewerByFile.mts
Original file line number Diff line number Diff line change
Expand Up @@ -555,7 +555,7 @@ type SpellingIssue = SpellingCheckerIssue;

function collectIssuesByFile(context: Context): FileWithIssuesTreeItem[] {
const fileIssues: FileIssue[] = context.issueTracker
.getIssues()
.getSpellingIssues()
.map(([uri, issues]) => ({ uri, doc: findTextDocument(uri), issues: issues.getSpellingIssues() }));
const groupedByFile = groupIssues(fileIssues);

Expand Down
7 changes: 5 additions & 2 deletions packages/client/src/issueViewer/unknownWordsViewer.mts
Original file line number Diff line number Diff line change
Expand Up @@ -217,7 +217,7 @@ class WordIssueTreeItem extends IssueTreeItemBase {
});
this.suggestionsByDocument.set(document, suggestions || []);
this.conicalDocuments.add(findConicalDocument(document));
this.issues.push(issue);
return this.issues.push(issue);
}

getTreeItem(): TreeItem {
Expand Down Expand Up @@ -463,7 +463,10 @@ class IssueSuggestionTreeItem extends IssueTreeItemBase {
}

function collectIssues(context: Context): WordIssueTreeItem[] {
const issues = context.issueTracker.getIssues().flatMap(([_, issues]) => issues.issues);
const issues = context.issueTracker
.getSpellingIssues()
.flatMap(([_, issues]) => issues.issues)
.filter((issue) => issue.isIssueTypeSpelling());
const groupedByWord = new Map<string, WordIssueTreeItem>();
const getGroup = getResolve(groupedByWord, (word) => new WordIssueTreeItem(context, word));
issues.forEach(groupIssue);
Expand Down
2 changes: 1 addition & 1 deletion packages/client/src/languageStatus.mts
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@ export function createLanguageStatus(): Disposable {
function updateIssues() {
const id = 'cspell-issues';
const document = vscode.window.activeTextEditor?.document;
const issues = document ? getIssueTracker().getIssues(document.uri) : undefined;
const issues = document ? getIssueTracker().getSpellingIssues(document.uri) : undefined;
if (!issues?.length || !showLanguageStatusFields.issues) {
deleteItem(id);
return;
Expand Down
34 changes: 20 additions & 14 deletions packages/webview-ui/src/views/CSpellInfo.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -98,23 +98,29 @@
opacity: 80%;
}
.file-info dd {
margin: 0 0 0 80px;
padding: 0 0 0.5em 0;
}
@media (min-width: 240px) {
dl.file-info {
display: grid;
grid-gap: 4px 1em;
grid-template-columns: auto auto;
/*
margin-block-start: 0;
margin-block-end: 0.5em;
*/
}
.file-info dt {
float: left;
clear: left;
width: 110px;
/* color: green; */
}
.file-info dd {
margin: 0;
word-break: break-word;
/* grid-column-start: 2; */
}
/*
dt::after {
content: ':';
.file-info dt {
/* color: green; */
font-weight: bolder;
word-break: break-word;
}
}
*/
.dictionary-entry dd {
margin-inline-start: 0;
Expand Down

0 comments on commit 9c3334b

Please sign in to comment.