|
|
@@ -13,15 +13,26 @@ import path from "path"
|
|
|
import { LANGUAGE_EXTENSIONS } from "@/lsp/language"
|
|
|
import { Keybind } from "@/util/keybind"
|
|
|
import { Locale } from "@/util/locale"
|
|
|
+import { Global } from "@/global"
|
|
|
|
|
|
type PermissionStage = "permission" | "always" | "reject"
|
|
|
|
|
|
function normalizePath(input?: string) {
|
|
|
if (!input) return ""
|
|
|
- if (path.isAbsolute(input)) {
|
|
|
- return path.relative(process.cwd(), input) || "."
|
|
|
+
|
|
|
+ const cwd = process.cwd()
|
|
|
+ const home = Global.Path.home
|
|
|
+ const absolute = path.isAbsolute(input) ? input : path.resolve(cwd, input)
|
|
|
+ const relative = path.relative(cwd, absolute)
|
|
|
+
|
|
|
+ if (!relative) return "."
|
|
|
+ if (!relative.startsWith("..")) return relative
|
|
|
+
|
|
|
+ // outside cwd - use ~ or absolute
|
|
|
+ if (home && (absolute === home || absolute.startsWith(home + path.sep))) {
|
|
|
+ return absolute.replace(home, "~")
|
|
|
}
|
|
|
- return input
|
|
|
+ return absolute
|
|
|
}
|
|
|
|
|
|
function filetype(input?: string) {
|