Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions docs/docs/config.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,7 @@ wsh editconfig
| editor:inlinediff | bool | set to true to show diffs inline instead of side-by-side, false for side-by-side (defaults to undefined which uses Monaco's responsive behavior) |
| preview:showhiddenfiles | bool | set to false to disable showing hidden files in the directory preview (defaults to true) |
| preview:defaultsort <VersionBadge version="v0.14.2" /> | string | sets the default sort column for directory preview. `"name"` (default) sorts alphabetically by name ascending; `"modtime"` sorts by last modified time descending (newest first) |
| preview:openfileinnewblock <VersionBadge version="v0.15" /> | bool | set to true to open files in a new preview block when double-clicking or pressing Enter in the directory preview, instead of replacing the current block (defaults to false; directories still navigate in place) |
| markdown:fontsize | float64 | font size for the normal text when rendering markdown in preview. headers are scaled up from this size, (default 14px) |
| markdown:fixedfontsize | float64 | font size for the code blocks when rendering markdown in preview (default is 12px) |
| web:openlinksinternally | bool | set to false to open web links in external browser |
Expand Down
26 changes: 23 additions & 3 deletions frontend/app/view/preview/preview-directory.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
// SPDX-License-Identifier: Apache-2.0

import { ContextMenuModel } from "@/app/store/contextmenu";
import { createBlock } from "@/app/store/global";
import { globalStore } from "@/app/store/jotaiStore";
import { TabRpcClient } from "@/app/store/wshrpcutil";
import { useWaveEnv } from "@/app/waveenv/waveenv";
Expand Down Expand Up @@ -501,6 +502,7 @@ type TableRowProps = {
function TableRow({ model, row, focusIndex, setFocusIndex, setSearch, idx, handleFileContextMenu }: TableRowProps) {
const dirPath = useAtomValue(model.statFilePath);
const connection = useAtomValue(model.connection);
const openFileInNewBlock = useAtomValue(model.env.getSettingsKeyAtom("preview:openfileinnewblock")) ?? false;

const dragItem: DraggedFile = {
relName: row.getValue("name") as string,
Expand Down Expand Up @@ -530,7 +532,15 @@ function TableRow({ model, row, focusIndex, setFocusIndex, setSearch, idx, handl
data-rowindex={idx}
onDoubleClick={() => {
const newFileName = row.getValue("path") as string;
model.goHistory(newFileName);
if (openFileInNewBlock && !row.original.isdir) {
fireAndForget(() =>
createBlock({
meta: { view: "preview", file: newFileName, connection },
})
);
} else {
model.goHistory(newFileName);
}
setSearch("");
globalStore.set(model.directorySearchActive, false);
}}
Expand Down Expand Up @@ -569,6 +579,7 @@ function DirectoryPreview({ model }: DirectoryPreviewProps) {
const [selectedPath, setSelectedPath] = useState("");
const [refreshVersion, setRefreshVersion] = useAtom(model.refreshVersion);
const conn = useAtomValue(model.connection);
const openFileInNewBlock = useAtomValue(env.getSettingsKeyAtom("preview:openfileinnewblock")) ?? false;
const blockData = useAtomValue(model.blockAtom);
const finfo = useAtomValue(model.statFile);
const dirPath = finfo?.path;
Expand Down Expand Up @@ -662,7 +673,16 @@ function DirectoryPreview({ model }: DirectoryPreviewProps) {
if (filteredData.length == 0) {
return;
}
model.goHistory(selectedPath);
const selectedFinfo = filteredData.find((f) => f.path == selectedPath);
if (openFileInNewBlock && selectedFinfo != null && !selectedFinfo.isdir) {
fireAndForget(() =>
createBlock({
meta: { view: "preview", file: selectedFinfo.path, connection: conn },
})
);
} else {
model.goHistory(selectedPath);
}
setSearchText("");
globalStore.set(model.directorySearchActive, false);
return true;
Expand Down Expand Up @@ -692,7 +712,7 @@ function DirectoryPreview({ model }: DirectoryPreviewProps) {
return () => {
model.directoryKeyDownHandler = null;
};
}, [filteredData, selectedPath, searchText]);
}, [filteredData, selectedPath, searchText, conn, openFileInNewBlock]);

useEffect(() => {
if (filteredData.length != 0 && focusIndex > filteredData.length - 1) {
Expand Down
4 changes: 3 additions & 1 deletion frontend/app/view/preview/previewenv.ts
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,8 @@ export type PreviewEnv = WaveEnvSubset<{
object: WaveEnv["services"]["object"];
};
wos: WaveEnv["wos"];
getSettingsKeyAtom: SettingsKeyAtomFnType<"preview:showhiddenfiles" | "editor:fontsize" | "preview:defaultsort">;
getSettingsKeyAtom: SettingsKeyAtomFnType<
"preview:showhiddenfiles" | "editor:fontsize" | "preview:defaultsort" | "preview:openfileinnewblock"
>;
getConnStatusAtom: WaveEnv["getConnStatusAtom"];
}>;
2 changes: 2 additions & 0 deletions frontend/types/gotypes.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1444,6 +1444,7 @@ declare global {
"markdown:fixedfontsize"?: number;
"preview:showhiddenfiles"?: boolean;
"preview:defaultsort"?: string;
"preview:openfileinnewblock"?: boolean;
"tab:preset"?: string;
"tab:confirmclose"?: boolean;
"tab:background"?: string;
Expand Down Expand Up @@ -1589,6 +1590,7 @@ declare global {
"debug:panictype"?: string;
"block:view"?: string;
"block:controller"?: string;
"block:subblock"?: boolean;
"ai:backendtype"?: string;
"ai:local"?: boolean;
"wsh:cmd"?: string;
Expand Down
1 change: 1 addition & 0 deletions pkg/wconfig/metaconsts.go
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,7 @@ const (

ConfigKey_PreviewShowHiddenFiles = "preview:showhiddenfiles"
ConfigKey_PreviewDefaultSort = "preview:defaultsort"
ConfigKey_PreviewOpenFileInNewBlock = "preview:openfileinnewblock"

ConfigKey_TabPreset = "tab:preset"
ConfigKey_TabConfirmClose = "tab:confirmclose"
Expand Down
5 changes: 3 additions & 2 deletions pkg/wconfig/settingsconfig.go
Original file line number Diff line number Diff line change
Expand Up @@ -133,8 +133,9 @@ type SettingsType struct {
MarkdownFontSize float64 `json:"markdown:fontsize,omitempty"`
MarkdownFixedFontSize float64 `json:"markdown:fixedfontsize,omitempty"`

PreviewShowHiddenFiles *bool `json:"preview:showhiddenfiles,omitempty"`
PreviewDefaultSort string `json:"preview:defaultsort,omitempty" jsonschema:"enum=name,enum=modtime"`
PreviewShowHiddenFiles *bool `json:"preview:showhiddenfiles,omitempty"`
PreviewDefaultSort string `json:"preview:defaultsort,omitempty" jsonschema:"enum=name,enum=modtime"`
PreviewOpenFileInNewBlock bool `json:"preview:openfileinnewblock,omitempty"`

TabPreset string `json:"tab:preset,omitempty"`
TabConfirmClose bool `json:"tab:confirmclose,omitempty"`
Expand Down
3 changes: 3 additions & 0 deletions schema/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -232,6 +232,9 @@
"modtime"
]
},
"preview:openfileinnewblock": {
"type": "boolean"
},
"tab:preset": {
"type": "string"
},
Expand Down