From f946a6f8dbd68a435cc001b2cb58e09f1c99ab3a Mon Sep 17 00:00:00 2001 From: midichef <67946319+midichef@users.noreply.github.com> Date: Fri, 4 Oct 2024 13:20:15 -0700 Subject: [PATCH] [open-] fix opening a dir with an filetype extension --- visidata/_open.py | 13 ++++++++----- visidata/shell.py | 2 +- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/visidata/_open.py b/visidata/_open.py index 18d0a8d55..940c485b9 100644 --- a/visidata/_open.py +++ b/visidata/_open.py @@ -81,6 +81,10 @@ def guess_extension(vd, path): def openPath(vd, p, filetype=None, create=False): '''Call ``open_(p)`` or ``openurl_(p, filetype)``. Return constructed but unloaded sheet of appropriate type. If True, *create* will return a new, blank **Sheet** if file does not exist.''' + # allow user to assign a filetype to a pathname: options.set('filetype', 'csv', '-') + filetype = filetype or vd.options.getonly('filetype', str(p), None) #1710 + filetype = filetype or vd.options.getonly('filetype', 'global', None) + if p.scheme and not p.has_fp(): schemes = p.scheme.split('+') openfuncname = 'openurl_' + schemes[-1] @@ -94,8 +98,10 @@ def openPath(vd, p, filetype=None, create=False): if not p.exists() and not create: return None - if not filetype: - filetype = p.ext or vd.options.filetype + # assign filetype from extension, but only for files, not directories + if not p.is_dir(): #2547 + filetype = filetype or p.ext + filetype = filetype or vd.options.filetype filetype = filetype.lower() @@ -147,9 +153,6 @@ def openSource(vd, p, filetype=None, create=False, **kwargs): if isinstance(p, BaseSheet): return p - filetype = filetype or vd.options.getonly('filetype', str(p), '') #1710 - filetype = filetype or vd.options.getonly('filetype', 'global', '') - vs = None if isinstance(p, str): if '://' in p: diff --git a/visidata/shell.py b/visidata/shell.py index 3afd110d4..12a84b084 100644 --- a/visidata/shell.py +++ b/visidata/shell.py @@ -22,7 +22,7 @@ @VisiData.api def guess_dir(vd, p): if p.is_dir(): - return dict(filetype='dir') + return dict(filetype='dir', _likelihood=10) @VisiData.lazy_property