Repository navigation
fresh-editor 0.4.4
Immutable
release. Only release title and notes can be modified.
0.4.4
For live updates on Fresh, follow me on X.
Most options below can be changed in the Settings UI - run Open Settings from the command palette (
Ctrl+P).
Features
- Terminal text selection with the mouse - dragging on a live integrated terminal now selects text: the view pauses in place (pixel-identical) while you drag,
Ctrl+Ccopies, and copying or clicking away resumes the live grid; double/triple-click selects a word/line. Mouse events are forwarded to the program inside only when it actually asked for mouse reporting, andShift+drag selects even from a mouse-hungry program (xterm convention).
If a new mouse behavior gets in your way, disable it in the Settings UI (
Ctrl+Pβ Open Settings) - see Terminal > "Mouse Drag Selects" and Terminal > "Mouse Forwarding".
- Indent rainbow - color indentation guides by indent level via Editor > "Rainbow Indentation" and a six-color
indent_rainbow_1-indent_rainbow_6theme palette; also fixes a literal{level}placeholder leaking into translated locale strings (#2632, requested by @akarinotomoshibi, by @asukaminato0721). - Virtual space - the cursor can move past a line's end, like Visual Studio or Vim's
virtualedit. Enable with Editor > "Virtual Space" (onorblock), toggle per buffer via Toggle Virtual Space (Current Buffer). - Theme text attributes - syntax colors can now carry
bold/italic/underlined/dim/reversedmodifiers (#2638, by @asukaminato0721). - More languages highlighted - new grammars for gettext PO, m4, Xcode pbxproj, Metal, CUDA, HIP, Fortran, LLVM IR, and MLIR (#2593), plus fixed GLSL/HLSL/WGSL highlighting (#2553); both by @asukaminato0721.
NextPane/PrevPane- cycle through every split+tab pane as one flat list, distinct fromNextSplit/PrevSplitandNextWindow/PrevWindow; landing on a terminal now also switches it into terminal mode (#2562, by @masmu).- Orchestrator dock: organize workspaces into custom folders - create/rename/delete folders and move workspaces between them ("Move to Folderβ¦" via the context menu,
F2, right-click, or the palette); the layout survives a crash. The toolbar is condensed to a "New Taskβ¦" dropdown and a search field, with other filters in a collapsible section (#2703). - Search in Project: file filter - a new Files field limits project search & replace to comma-separated globs like
*.rsorsrc/**(#2699, by @asukaminato0721).
Bug Fixes
- LSP diagnostic fixes: the gutter marker,
F8target, hover, and panel now shift with inserted/deleted lines instead of freezing at the pre-edit position until the next save (#2602); and dismissing a hover popup no longer drops an unrelated error from the status bar, gutter, andF8navigation (#2601). - LSP Rename keeps focus - a cross-file F2 rename no longer jumps you to the definition's file at a stale cursor position (#2599).
- LSP now pulls diagnostics from every server configured for a language, not just the first - e.g. both
ruffandtyfor Python now stay live (#2615, reported by @ak24watch). - Format Buffer respects the selection - with an active selection and a server that supports range formatting, only the selected range is formatted instead of silently reformatting the whole file (#2605).
- Monorepo workspaces - a workspace whose root is not itself a git repo now gets full git support for its nested sub-projects: file-explorer git decorations, status-bar branch, and git blame / grep / find-file (#2369, by @can2049); Git Log and Git Grep were also fixed for monorepo layouts.
- Search & Replace fixes: match stepping (
Ctrl+Alt+β/β, Enter-open) now follows live edits instead of landing on a stale position (#2583); clicking a Search & Replace or Settings text field now positions the caret at the clicked column, and Settings fields also gainedHome/End, word motion, andShift-selection (#2573, reported by @asukaminato0721); and Search and Replace in Project's results panel now keeps exactly one focused element, soTab/Down/Upreach and highlight the results list correctly (#2664). - Vi mode fixes:
>>/<<indent operators now work, including visual/visual-line/visual-block and.repeat (#2438, #2606);i"/a"now search forward on the line instead of requiring the cursor already inside the quotes (#2439);a"includes trailing whitespace, matching Vim's:help aquote(#2604);j/kclamp to the line's last character on shorter lines instead of overshooting by one (#2442);cwstops at word end instead of eating the trailing whitespace likedw(#2437); and thef/t/F/Tfind-char motions now work with operators (df,ct, β¦) instead of hanging in operator-pending mode or deleting the wrong span (#2441). - Virtual space status bar tracks the cursor into virtual space instead of freezing at the last real position (#2577).
- Indentation guide staircase gap fixed when a block's opener is scrolled off-screen (#2679).
- Large file fixes: the
:Nline jump now offers a scan prompt instead of jumping to line 1 (#2597), the line-count scan no longer undercounts on the first pass (#2596), and editing a large line-wrapped file no longer stalls for ~1 second per keystroke (#2610). - Remote fixes: the integrated terminal now works when the remote's login shell is fish or any non-POSIX shell, instead of failing on
=syntax (#2584, reported by @demin-dmitriy); switching to a workspace on a stalled SSH link no longer freezes the editor, since a dead connection now fails at connect time instead of hanging during workspace restore; and diving into a disconnected SSH workspace from the dock now lands in that workspace's empty "Disconnected" shell with the failure reason and a retry, instead of the dock claiming a switch that never happened - dormant remote rows also show a backend badge anduser@hostdetail (#2570). - Terminal scrolling no longer pins a CPU core - auto-revert is now per-buffer (off for terminals), and terminal buffers never line-wrap (#2608, #2609).
- Per-split terminal scrollback - a terminal shown in two splits can now read scrollback in one split while the other keeps following live output (#2595).
- Tab bar scrolling now reveals the active tab with minimal movement instead of re-centering it on every switch (#2675).
- Bracketed paste now respects read-only buffers, matching typing and
Ctrl+V(#2674). - Whitespace indicator fixes: the master toggle now restores your configured indicators, not just tabs, when turned back on (#2579); and indicators now show in new/unsaved buffers and re-resolve after Set Language (#2580, reported by @braindevices).
- File Explorer fixes: the context menu now grabs the keyboard while open, so keys no longer leak into the tree underneath (#2587); and git decorations now cover nested sub-repos even when the workspace root is itself a git repo (#2592).
- Git Grep no-match is reported as "No matches", not an error (#2591).
- Orchestrator remembers workspaces after a crash and shows "Cancel" instead of "Quit" on the trust prompt (#2658).
- Command palette names no longer truncate at the start - the name column sizes to the longest visible name; only an overlong name is trimmed, at its tail (#2703).
- Compose mode: cursor movement no longer lags in large files - arrow keys used to re-run wrapping and concealment over the whole buffer on every keypress.
- Per-language settings now apply everywhere - language-dependent buffer settings (tab size, auto-close, whitespace indicators, word characters, etc.) were applied inconsistently depending on how a buffer was created, and didn't refresh when a buffer's language changed. They now resolve uniformly and re-apply on any language change.
- Wheel-scrolled tree views no longer snap back to the selected row when a plugin refreshes the tree; scrollbar drags on trees also work now.
Internals
- A round of flaky-e2e-test stabilization replaced fixed-delay waits with semantic waits across the vi-mode, LSP, review-diff, search-replace, and orchestrator-dock suites.