Support configured system editors - #1301

Closed
Jeccoman wants to merge 1 commit into
pingdotgg:mainfrom
Jeccoman:feat/editor-env-support
Closed

Support configured system editors#1301
Jeccoman wants to merge 1 commit into
pingdotgg:mainfrom
Jeccoman:feat/editor-env-support

Conversation

@Jeccoman

@JeccomanJeccoman commented Mar 22, 2026

Copy link
Copy Markdown

What Changed

This updates the open-in-editor flow to respect VISUAL and EDITOR when resolving available editors and launching files. If the configured command matches a known editor, the existing editor option is reused. If it points to another runnable editor, a System Editor option is shown instead. The change also adds tests covering configured known editors and unknown configured commands.

Why

Users with a preferred editor configured through VISUAL or EDITOR could still be blocked by the current hardcoded editor detection flow. This keeps the existing behavior for known editors while allowing configured system editors to work without requiring a dedicated built-in entry first.

Checklist

  • [1 ] This PR is small and focused
  • [1 ] I explained what changed and why
  • I included before/after screenshots for any UI changes
  • I included a video for animation/interaction changes

Note

Add system editor support via VISUAL/EDITOR environment variables

  • Reads VISUAL and EDITOR env vars to detect a user-configured system editor, tokenizing the command with basic quote handling and matching it against known built-in editor IDs.
  • Adds 'system-editor' as a recognized editor ID in the contracts and surfaces it as a "System Editor" option in the editor picker when available.
  • resolveAvailableEditors now includes the configured editor even when its default binary is not on PATH, and lists 'system-editor' for unknown-but-available commands.
  • resolveEditorLaunch uses the configured command and args when launching 'system-editor', applies --goto for file:line:col targets, and returns an explicit error if 'system-editor' is requested but no env var is configured.
  • Behavioral Change: known editors (e.g. VS Code) can now launch via the configured VISUAL/EDITOR path instead of their default binary when the default is absent from PATH.

Macroscope summarized f9c2f48.

@coderabbitai

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: a8b45c7a-f9fd-4ba5-b5b1-ab197c5eaa6d

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Tip

Migrating from UI to YAML configuration.

Use the @coderabbitai configuration command in a PR comment to get a dump of all your UI settings in YAML format. You can then edit this YAML file and upload it to the root of your repository to configure CodeRabbit programmatically.

@github-actionsgithub-actionsBot added size:L 100-499 changed lines (additions + deletions). vouch:unvouched PR author is not yet trusted in the VOUCHED list. labels Mar 22, 2026
@juliusmarminge

Copy link
Copy Markdown
Member

Closing as part of an open-PR triage — same feature as #1102, and both predate the editor-subsystem rework on main (#2659, #2475, #1974), so neither rebases cleanly anymore. A fresh take against current main would be welcome. Thanks!

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:L100-499 changed lines (additions + deletions).vouch:unvouchedPR author is not yet trusted in the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@Jeccoman@juliusmarminge
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Support configured system editors - #1301

Closed
Jeccoman wants to merge 1 commit into
pingdotgg:mainfrom
Jeccoman:feat/editor-env-support
Closed

Support configured system editors#1301
Jeccoman wants to merge 1 commit into
pingdotgg:mainfrom
Jeccoman:feat/editor-env-support

Conversation

@Jeccoman

@JeccomanJeccoman commented Mar 22, 2026

Copy link
Copy Markdown

What Changed

This updates the open-in-editor flow to respect VISUAL and EDITOR when resolving available editors and launching files. If the configured command matches a known editor, the existing editor option is reused. If it points to another runnable editor, a System Editor option is shown instead. The change also adds tests covering configured known editors and unknown configured commands.

Why

Users with a preferred editor configured through VISUAL or EDITOR could still be blocked by the current hardcoded editor detection flow. This keeps the existing behavior for known editors while allowing configured system editors to work without requiring a dedicated built-in entry first.

Checklist

  • [1 ] This PR is small and focused
  • [1 ] I explained what changed and why
  • I included before/after screenshots for any UI changes
  • I included a video for animation/interaction changes

Note

Add system editor support via VISUAL/EDITOR environment variables

  • Reads VISUAL and EDITOR env vars to detect a user-configured system editor, tokenizing the command with basic quote handling and matching it against known built-in editor IDs.
  • Adds 'system-editor' as a recognized editor ID in the contracts and surfaces it as a "System Editor" option in the editor picker when available.
  • resolveAvailableEditors now includes the configured editor even when its default binary is not on PATH, and lists 'system-editor' for unknown-but-available commands.
  • resolveEditorLaunch uses the configured command and args when launching 'system-editor', applies --goto for file:line:col targets, and returns an explicit error if 'system-editor' is requested but no env var is configured.
  • Behavioral Change: known editors (e.g. VS Code) can now launch via the configured VISUAL/EDITOR path instead of their default binary when the default is absent from PATH.

Macroscope summarized f9c2f48.

@coderabbitai

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: a8b45c7a-f9fd-4ba5-b5b1-ab197c5eaa6d

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Tip

Migrating from UI to YAML configuration.

Use the @coderabbitai configuration command in a PR comment to get a dump of all your UI settings in YAML format. You can then edit this YAML file and upload it to the root of your repository to configure CodeRabbit programmatically.

@github-actionsgithub-actionsBot added size:L 100-499 changed lines (additions + deletions). vouch:unvouched PR author is not yet trusted in the VOUCHED list. labels Mar 22, 2026
@juliusmarminge

Copy link
Copy Markdown
Member

Closing as part of an open-PR triage — same feature as #1102, and both predate the editor-subsystem rework on main (#2659, #2475, #1974), so neither rebases cleanly anymore. A fresh take against current main would be welcome. Thanks!

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:L100-499 changed lines (additions + deletions).vouch:unvouchedPR author is not yet trusted in the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@Jeccoman@juliusmarminge
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Support configured system editors - #1301

Closed
Jeccoman wants to merge 1 commit into
pingdotgg:mainfrom
Jeccoman:feat/editor-env-support
Closed

Support configured system editors#1301
Jeccoman wants to merge 1 commit into
pingdotgg:mainfrom
Jeccoman:feat/editor-env-support

Conversation

@Jeccoman

@JeccomanJeccoman commented Mar 22, 2026

Copy link
Copy Markdown

What Changed

This updates the open-in-editor flow to respect VISUAL and EDITOR when resolving available editors and launching files. If the configured command matches a known editor, the existing editor option is reused. If it points to another runnable editor, a System Editor option is shown instead. The change also adds tests covering configured known editors and unknown configured commands.

Why

Users with a preferred editor configured through VISUAL or EDITOR could still be blocked by the current hardcoded editor detection flow. This keeps the existing behavior for known editors while allowing configured system editors to work without requiring a dedicated built-in entry first.

Checklist

  • [1 ] This PR is small and focused
  • [1 ] I explained what changed and why
  • I included before/after screenshots for any UI changes
  • I included a video for animation/interaction changes

Note

Add system editor support via VISUAL/EDITOR environment variables

  • Reads VISUAL and EDITOR env vars to detect a user-configured system editor, tokenizing the command with basic quote handling and matching it against known built-in editor IDs.
  • Adds 'system-editor' as a recognized editor ID in the contracts and surfaces it as a "System Editor" option in the editor picker when available.
  • resolveAvailableEditors now includes the configured editor even when its default binary is not on PATH, and lists 'system-editor' for unknown-but-available commands.
  • resolveEditorLaunch uses the configured command and args when launching 'system-editor', applies --goto for file:line:col targets, and returns an explicit error if 'system-editor' is requested but no env var is configured.
  • Behavioral Change: known editors (e.g. VS Code) can now launch via the configured VISUAL/EDITOR path instead of their default binary when the default is absent from PATH.

Macroscope summarized f9c2f48.

@coderabbitai

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: a8b45c7a-f9fd-4ba5-b5b1-ab197c5eaa6d

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Tip

Migrating from UI to YAML configuration.

Use the @coderabbitai configuration command in a PR comment to get a dump of all your UI settings in YAML format. You can then edit this YAML file and upload it to the root of your repository to configure CodeRabbit programmatically.

@github-actionsgithub-actionsBot added size:L 100-499 changed lines (additions + deletions). vouch:unvouched PR author is not yet trusted in the VOUCHED list. labels Mar 22, 2026
@juliusmarminge

Copy link
Copy Markdown
Member

Closing as part of an open-PR triage — same feature as #1102, and both predate the editor-subsystem rework on main (#2659, #2475, #1974), so neither rebases cleanly anymore. A fresh take against current main would be welcome. Thanks!

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:L100-499 changed lines (additions + deletions).vouch:unvouchedPR author is not yet trusted in the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@Jeccoman@juliusmarminge
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Support configured system editors - #1301

Closed
Jeccoman wants to merge 1 commit into
pingdotgg:mainfrom
Jeccoman:feat/editor-env-support
Closed

Support configured system editors#1301
Jeccoman wants to merge 1 commit into
pingdotgg:mainfrom
Jeccoman:feat/editor-env-support

Conversation

@Jeccoman

@JeccomanJeccoman commented Mar 22, 2026

Copy link
Copy Markdown

What Changed

This updates the open-in-editor flow to respect VISUAL and EDITOR when resolving available editors and launching files. If the configured command matches a known editor, the existing editor option is reused. If it points to another runnable editor, a System Editor option is shown instead. The change also adds tests covering configured known editors and unknown configured commands.

Why

Users with a preferred editor configured through VISUAL or EDITOR could still be blocked by the current hardcoded editor detection flow. This keeps the existing behavior for known editors while allowing configured system editors to work without requiring a dedicated built-in entry first.

Checklist

  • [1 ] This PR is small and focused
  • [1 ] I explained what changed and why
  • I included before/after screenshots for any UI changes
  • I included a video for animation/interaction changes

Note

Add system editor support via VISUAL/EDITOR environment variables

  • Reads VISUAL and EDITOR env vars to detect a user-configured system editor, tokenizing the command with basic quote handling and matching it against known built-in editor IDs.
  • Adds 'system-editor' as a recognized editor ID in the contracts and surfaces it as a "System Editor" option in the editor picker when available.
  • resolveAvailableEditors now includes the configured editor even when its default binary is not on PATH, and lists 'system-editor' for unknown-but-available commands.
  • resolveEditorLaunch uses the configured command and args when launching 'system-editor', applies --goto for file:line:col targets, and returns an explicit error if 'system-editor' is requested but no env var is configured.
  • Behavioral Change: known editors (e.g. VS Code) can now launch via the configured VISUAL/EDITOR path instead of their default binary when the default is absent from PATH.

Macroscope summarized f9c2f48.

@coderabbitai

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: a8b45c7a-f9fd-4ba5-b5b1-ab197c5eaa6d

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Tip

Migrating from UI to YAML configuration.

Use the @coderabbitai configuration command in a PR comment to get a dump of all your UI settings in YAML format. You can then edit this YAML file and upload it to the root of your repository to configure CodeRabbit programmatically.

@github-actionsgithub-actionsBot added size:L 100-499 changed lines (additions + deletions). vouch:unvouched PR author is not yet trusted in the VOUCHED list. labels Mar 22, 2026
@juliusmarminge

Copy link
Copy Markdown
Member

Closing as part of an open-PR triage — same feature as #1102, and both predate the editor-subsystem rework on main (#2659, #2475, #1974), so neither rebases cleanly anymore. A fresh take against current main would be welcome. Thanks!

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:L100-499 changed lines (additions + deletions).vouch:unvouchedPR author is not yet trusted in the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@Jeccoman@juliusmarminge
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Support configured system editors - #1301

Closed
Jeccoman wants to merge 1 commit into
pingdotgg:mainfrom
Jeccoman:feat/editor-env-support
Closed

Support configured system editors#1301
Jeccoman wants to merge 1 commit into
pingdotgg:mainfrom
Jeccoman:feat/editor-env-support

Conversation

@Jeccoman

@JeccomanJeccoman commented Mar 22, 2026

Copy link
Copy Markdown

What Changed

This updates the open-in-editor flow to respect VISUAL and EDITOR when resolving available editors and launching files. If the configured command matches a known editor, the existing editor option is reused. If it points to another runnable editor, a System Editor option is shown instead. The change also adds tests covering configured known editors and unknown configured commands.

Why

Users with a preferred editor configured through VISUAL or EDITOR could still be blocked by the current hardcoded editor detection flow. This keeps the existing behavior for known editors while allowing configured system editors to work without requiring a dedicated built-in entry first.

Checklist

  • [1 ] This PR is small and focused
  • [1 ] I explained what changed and why
  • I included before/after screenshots for any UI changes
  • I included a video for animation/interaction changes

Note

Add system editor support via VISUAL/EDITOR environment variables

  • Reads VISUAL and EDITOR env vars to detect a user-configured system editor, tokenizing the command with basic quote handling and matching it against known built-in editor IDs.
  • Adds 'system-editor' as a recognized editor ID in the contracts and surfaces it as a "System Editor" option in the editor picker when available.
  • resolveAvailableEditors now includes the configured editor even when its default binary is not on PATH, and lists 'system-editor' for unknown-but-available commands.
  • resolveEditorLaunch uses the configured command and args when launching 'system-editor', applies --goto for file:line:col targets, and returns an explicit error if 'system-editor' is requested but no env var is configured.
  • Behavioral Change: known editors (e.g. VS Code) can now launch via the configured VISUAL/EDITOR path instead of their default binary when the default is absent from PATH.

Macroscope summarized f9c2f48.

@coderabbitai

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: a8b45c7a-f9fd-4ba5-b5b1-ab197c5eaa6d

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Tip

Migrating from UI to YAML configuration.

Use the @coderabbitai configuration command in a PR comment to get a dump of all your UI settings in YAML format. You can then edit this YAML file and upload it to the root of your repository to configure CodeRabbit programmatically.

@github-actionsgithub-actionsBot added size:L 100-499 changed lines (additions + deletions). vouch:unvouched PR author is not yet trusted in the VOUCHED list. labels Mar 22, 2026
@juliusmarminge

Copy link
Copy Markdown
Member

Closing as part of an open-PR triage — same feature as #1102, and both predate the editor-subsystem rework on main (#2659, #2475, #1974), so neither rebases cleanly anymore. A fresh take against current main would be welcome. Thanks!

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:L100-499 changed lines (additions + deletions).vouch:unvouchedPR author is not yet trusted in the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@Jeccoman@juliusmarminge
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Support configured system editors - #1301

Closed
Jeccoman wants to merge 1 commit into
pingdotgg:mainfrom
Jeccoman:feat/editor-env-support
Closed

Support configured system editors#1301
Jeccoman wants to merge 1 commit into
pingdotgg:mainfrom
Jeccoman:feat/editor-env-support

Conversation

@Jeccoman

@JeccomanJeccoman commented Mar 22, 2026

Copy link
Copy Markdown

What Changed

This updates the open-in-editor flow to respect VISUAL and EDITOR when resolving available editors and launching files. If the configured command matches a known editor, the existing editor option is reused. If it points to another runnable editor, a System Editor option is shown instead. The change also adds tests covering configured known editors and unknown configured commands.

Why

Users with a preferred editor configured through VISUAL or EDITOR could still be blocked by the current hardcoded editor detection flow. This keeps the existing behavior for known editors while allowing configured system editors to work without requiring a dedicated built-in entry first.

Checklist

  • [1 ] This PR is small and focused
  • [1 ] I explained what changed and why
  • I included before/after screenshots for any UI changes
  • I included a video for animation/interaction changes

Note

Add system editor support via VISUAL/EDITOR environment variables

  • Reads VISUAL and EDITOR env vars to detect a user-configured system editor, tokenizing the command with basic quote handling and matching it against known built-in editor IDs.
  • Adds 'system-editor' as a recognized editor ID in the contracts and surfaces it as a "System Editor" option in the editor picker when available.
  • resolveAvailableEditors now includes the configured editor even when its default binary is not on PATH, and lists 'system-editor' for unknown-but-available commands.
  • resolveEditorLaunch uses the configured command and args when launching 'system-editor', applies --goto for file:line:col targets, and returns an explicit error if 'system-editor' is requested but no env var is configured.
  • Behavioral Change: known editors (e.g. VS Code) can now launch via the configured VISUAL/EDITOR path instead of their default binary when the default is absent from PATH.

Macroscope summarized f9c2f48.

@coderabbitai

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: a8b45c7a-f9fd-4ba5-b5b1-ab197c5eaa6d

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Tip

Migrating from UI to YAML configuration.

Use the @coderabbitai configuration command in a PR comment to get a dump of all your UI settings in YAML format. You can then edit this YAML file and upload it to the root of your repository to configure CodeRabbit programmatically.

@github-actionsgithub-actionsBot added size:L 100-499 changed lines (additions + deletions). vouch:unvouched PR author is not yet trusted in the VOUCHED list. labels Mar 22, 2026
@juliusmarminge

Copy link
Copy Markdown
Member

Closing as part of an open-PR triage — same feature as #1102, and both predate the editor-subsystem rework on main (#2659, #2475, #1974), so neither rebases cleanly anymore. A fresh take against current main would be welcome. Thanks!

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:L100-499 changed lines (additions + deletions).vouch:unvouchedPR author is not yet trusted in the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@Jeccoman@juliusmarminge
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Support configured system editors - #1301

Closed
Jeccoman wants to merge 1 commit into
pingdotgg:mainfrom
Jeccoman:feat/editor-env-support
Closed

Support configured system editors#1301
Jeccoman wants to merge 1 commit into
pingdotgg:mainfrom
Jeccoman:feat/editor-env-support

Conversation

@Jeccoman

@JeccomanJeccoman commented Mar 22, 2026

Copy link
Copy Markdown

What Changed

This updates the open-in-editor flow to respect VISUAL and EDITOR when resolving available editors and launching files. If the configured command matches a known editor, the existing editor option is reused. If it points to another runnable editor, a System Editor option is shown instead. The change also adds tests covering configured known editors and unknown configured commands.

Why

Users with a preferred editor configured through VISUAL or EDITOR could still be blocked by the current hardcoded editor detection flow. This keeps the existing behavior for known editors while allowing configured system editors to work without requiring a dedicated built-in entry first.

Checklist

  • [1 ] This PR is small and focused
  • [1 ] I explained what changed and why
  • I included before/after screenshots for any UI changes
  • I included a video for animation/interaction changes

Note

Add system editor support via VISUAL/EDITOR environment variables

  • Reads VISUAL and EDITOR env vars to detect a user-configured system editor, tokenizing the command with basic quote handling and matching it against known built-in editor IDs.
  • Adds 'system-editor' as a recognized editor ID in the contracts and surfaces it as a "System Editor" option in the editor picker when available.
  • resolveAvailableEditors now includes the configured editor even when its default binary is not on PATH, and lists 'system-editor' for unknown-but-available commands.
  • resolveEditorLaunch uses the configured command and args when launching 'system-editor', applies --goto for file:line:col targets, and returns an explicit error if 'system-editor' is requested but no env var is configured.
  • Behavioral Change: known editors (e.g. VS Code) can now launch via the configured VISUAL/EDITOR path instead of their default binary when the default is absent from PATH.

Macroscope summarized f9c2f48.

@coderabbitai

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: a8b45c7a-f9fd-4ba5-b5b1-ab197c5eaa6d

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Tip

Migrating from UI to YAML configuration.

Use the @coderabbitai configuration command in a PR comment to get a dump of all your UI settings in YAML format. You can then edit this YAML file and upload it to the root of your repository to configure CodeRabbit programmatically.

@github-actionsgithub-actionsBot added size:L 100-499 changed lines (additions + deletions). vouch:unvouched PR author is not yet trusted in the VOUCHED list. labels Mar 22, 2026
@juliusmarminge

Copy link
Copy Markdown
Member

Closing as part of an open-PR triage — same feature as #1102, and both predate the editor-subsystem rework on main (#2659, #2475, #1974), so neither rebases cleanly anymore. A fresh take against current main would be welcome. Thanks!

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:L100-499 changed lines (additions + deletions).vouch:unvouchedPR author is not yet trusted in the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@Jeccoman@juliusmarminge
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Support configured system editors - #1301

Closed
Jeccoman wants to merge 1 commit into
pingdotgg:mainfrom
Jeccoman:feat/editor-env-support
Closed

Support configured system editors#1301
Jeccoman wants to merge 1 commit into
pingdotgg:mainfrom
Jeccoman:feat/editor-env-support

Conversation

@Jeccoman

@JeccomanJeccoman commented Mar 22, 2026

Copy link
Copy Markdown

What Changed

This updates the open-in-editor flow to respect VISUAL and EDITOR when resolving available editors and launching files. If the configured command matches a known editor, the existing editor option is reused. If it points to another runnable editor, a System Editor option is shown instead. The change also adds tests covering configured known editors and unknown configured commands.

Why

Users with a preferred editor configured through VISUAL or EDITOR could still be blocked by the current hardcoded editor detection flow. This keeps the existing behavior for known editors while allowing configured system editors to work without requiring a dedicated built-in entry first.

Checklist

  • [1 ] This PR is small and focused
  • [1 ] I explained what changed and why
  • I included before/after screenshots for any UI changes
  • I included a video for animation/interaction changes

Note

Add system editor support via VISUAL/EDITOR environment variables

  • Reads VISUAL and EDITOR env vars to detect a user-configured system editor, tokenizing the command with basic quote handling and matching it against known built-in editor IDs.
  • Adds 'system-editor' as a recognized editor ID in the contracts and surfaces it as a "System Editor" option in the editor picker when available.
  • resolveAvailableEditors now includes the configured editor even when its default binary is not on PATH, and lists 'system-editor' for unknown-but-available commands.
  • resolveEditorLaunch uses the configured command and args when launching 'system-editor', applies --goto for file:line:col targets, and returns an explicit error if 'system-editor' is requested but no env var is configured.
  • Behavioral Change: known editors (e.g. VS Code) can now launch via the configured VISUAL/EDITOR path instead of their default binary when the default is absent from PATH.

Macroscope summarized f9c2f48.

@coderabbitai

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: a8b45c7a-f9fd-4ba5-b5b1-ab197c5eaa6d

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Tip

Migrating from UI to YAML configuration.

Use the @coderabbitai configuration command in a PR comment to get a dump of all your UI settings in YAML format. You can then edit this YAML file and upload it to the root of your repository to configure CodeRabbit programmatically.

@github-actionsgithub-actionsBot added size:L 100-499 changed lines (additions + deletions). vouch:unvouched PR author is not yet trusted in the VOUCHED list. labels Mar 22, 2026
@juliusmarminge

Copy link
Copy Markdown
Member

Closing as part of an open-PR triage — same feature as #1102, and both predate the editor-subsystem rework on main (#2659, #2475, #1974), so neither rebases cleanly anymore. A fresh take against current main would be welcome. Thanks!

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:L100-499 changed lines (additions + deletions).vouch:unvouchedPR author is not yet trusted in the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@Jeccoman@juliusmarminge