handlers are now only used for non-text

This commit is contained in:
Lionel Dricot 2022-02-12 19:07:55 +01:00
parent 15b7591424
commit b85e9e8f04
2 changed files with 21 additions and 11 deletions

View File

@ -1,5 +1,11 @@
# Offpunk History
## 0.4 - Unreleased
- Pictures are now displayed directely in terminal (suggested by kelbot)
- Introducing the "open" command to open current page with external handler.
- "set width XX" will now work everywhere (thanks kelbot for reporting the bug)
- Improved syncing performances and multiple bug/crash fixes.
## 0.3 - Feb 11th 2022
New Features:
- Gopher supported natively (early version, might have many bugs)

View File

@ -134,7 +134,16 @@ _MAX_REDIRECTS = 5
_MAX_CACHE_SIZE = 10
_MAX_CACHE_AGE_SECS = 180
#_DEFAULT_LESS = "less -EXFRfM -PMurl\ lines\ \%lt-\%lb/\%L\ \%Pb\%$ %s"
_DEFAULT_LESS = "less -EXFRfMw %s"
# -E : quit when reaching end of file (to behave like "cat")
# -F : quit if content fits the screen (behave like "cat")
# -X : does not clear the screen
# -R : interpret ANSI colors correctly
# -f : suppress warning for some contents
# -M : long prompt (to have info about where you are in the file)
# -w : hilite the new first line after a page skip (space)
# -i : ignore case in search
_DEFAULT_CAT = "less -EXFRfMwi %s"
_DEFAULT_LESS = "less -XRfMwi %s"
#_DEFAULT_LESS = "batcat -p %s"
# Command abbreviations
@ -1426,7 +1435,7 @@ class GeminiClient(cmd.Cmd):
tmpf.write(rendered_body)
tmpf.close()
self.idx_filename = tmpf.name
cmd_str = self._get_handler_cmd("text/gemini")
cmd_str = _DEFAULT_CAT
subprocess.run(shlex.split(cmd_str % tmpf.name))
elif display :
cmd_str = self._get_handler_cmd(gi.get_mime())
@ -1945,11 +1954,8 @@ class GeminiClient(cmd.Cmd):
if fnmatch.fnmatch(mimetype, handled_mime):
break
else:
if mimetype.startswith("text/"):
cmd_str = _DEFAULT_LESS
else:
# Use "xdg-open" as a last resort.
cmd_str = "xdg-open %s"
cmd_str = "xdg-open %s"
self._debug("Using handler: %s" % cmd_str)
return cmd_str
@ -2502,9 +2508,8 @@ Use "less full" to see a complete html page instead of the article view.
if self.gi and args and args[0] == "full":
self._go_to_gi(self.gi,readable=False)
elif self.gi.is_cache_valid():
cmd_str = self._get_handler_cmd(self.gi.get_mime())
cmd_str = cmd_str % self._get_active_tmpfile()
subprocess.call("%s | less -RMw" % cmd_str, shell=True)
cmd_str = _DEFAULT_LESS % self._get_active_tmpfile()
subprocess.call(cmd_str, shell=True)
else:
self.do_go(self.gi.url)
@ -2521,8 +2526,7 @@ see "handler" command to set your own."""
@needs_gi
def do_fold(self, *args):
"""Run most recently visited item through "fold" command."""
cmd_str = self._get_handler_cmd(self.gi.get_mime())
cmd_str = cmd_str % self._get_active_tmpfile()
cmd_str = _DEFAULT_LESS % self._get_active_tmpfile()
subprocess.call("%s | fold -w 70 -s" % cmd_str, shell=True)
@restricted