') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ', 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ', 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ', 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); })(); add `Unnecessary` tag to unused var diagnostics by The-Briel-Deal · Pull Request #2387 · zigtools/zls · GitHub
Skip to content

add Unnecessary tag to unused var diagnostics - #2387

Merged
Techatrix merged 1 commit into
zigtools:masterfrom
The-Briel-Deal:zls_unnecessary_diagnostics
Jul 10, 2025
Merged

add Unnecessary tag to unused var diagnostics#2387
Techatrix merged 1 commit into
zigtools:masterfrom
The-Briel-Deal:zls_unnecessary_diagnostics

Conversation

@The-Briel-Deal

Copy link
Copy Markdown
Contributor

Problem: Currently unused var and const declarations produce a diagnostic error without lsp.types.DiagnosticTag.Unnecessary. This means that editors can't visually display that a variable is unused by dimming the highlight on the variable.

Solution: When ast-check produces a "unused local constant" or "unused local variable" diagnostic, we should add the Unnecessary tag to the LSP diagnostic.

@The-Briel-Deal
The-Briel-Dealforce-pushed the zls_unnecessary_diagnostics branch from c00063e to 76d60f1CompareJuly 2, 2025 18:04
Comment threadsrc/DiagnosticsCollection.zig Outdated
Comment threadtests/lsp_features/diagnostics.zig Outdated
@The-Briel-Deal
The-Briel-Dealforce-pushed the zls_unnecessary_diagnostics branch 4 times, most recently from d2ed12a to 06646bfCompareJuly 7, 2025 14:04
Comment threadsrc/DiagnosticsCollection.zig Outdated
@The-Briel-Deal
The-Briel-Dealforce-pushed the zls_unnecessary_diagnostics branch from 06646bf to e5bf19bCompareJuly 8, 2025 15:05
@The-Briel-Deal
The-Briel-Dealforce-pushed the zls_unnecessary_diagnostics branch from e5bf19b to 843420fCompareJuly 9, 2025 13:33
@The-Briel-Deal

Copy link
Copy Markdown
ContributorAuthor

It looks to me like CI was failing on the last run because I didn't have the version tags on my fork. All tests run from zig build test pass locally.

@Techatrix

Copy link
Copy Markdown
Member

There has been a recent breaking change in Zig which has caused the CI to fail. This will be addressed soon by #2394.

@The-Briel-Deal

Copy link
Copy Markdown
ContributorAuthor

There has been a recent breaking change in Zig which has caused the CI to fail. This will be addressed soon by #2394.

Ok thats good to hear, I just wanted to make sure it wasn't a problem on my side.

Problem: Currently unused var and const declarations produce a
diagnostic error without `lsp.types.DiagnosticTag.Unnecessary`. This
means that editors can't visually display that a variable is unused by
dimming the highlight on the variable.
Solution: When `ast-check` produces a "unused local constant" or "unused
local variable" diagnostic, we should add the Unnecessary tag to the LSP
diagnostic.
@Techatrix
Techatrixforce-pushed the zls_unnecessary_diagnostics branch from 843420f to 879f347CompareJuly 10, 2025 05:42
@Techatrix
Techatrix merged commit d87eba9 into zigtools:masterJul 10, 2025
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@The-Briel-Deal@Techatrix