Skip to content
Open
Show file tree
Hide file tree
Changes from 1 commit
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