Commit Diff


commit - e03d121935fa33b6f6b81bc71cdf9e27aa8f9c22
commit + 63fe4ed00638fdb4e44feeb16c33bb9b6263d7ed
blob - dddd04b2e566fe3f0e11435b41a61e393b89aeb2
blob + 0fc49eb5c21f32a52551a168d27dd6c81e93a2cd
--- fm.1
+++ fm.1
@@ -96,6 +96,8 @@ Paste path
 Refresh and redraw screen.
 .It ^M
 Spawn a shell
+.It v
+View file with a pager.
 .It q
 Quit
 .Nm .
blob - 48d3e05d6ca1293c889cbac15fcf6f1efc96e0d7
blob + d4d03e8f16cedffd10d9404047118384e0be364e
--- fm.c
+++ fm.c
@@ -29,6 +29,10 @@
 
 #ifndef FM_SHELL
 #define FM_SHELL "/bin/sh"
+#endif
+
+#ifndef FM_PAGER
+#define FM_PAGER "/usr/bin/less"
 #endif
 
 #include "config.h"
@@ -1335,6 +1339,19 @@ cmd_shell(void)
 	if ((shell = getenv("SHELL")) == NULL)
 		shell = FM_SHELL;
 	spawn(shell, NULL);
+}
+
+static void
+cmd_view(void)
+{
+	const char *pager;
+
+	if (!fm.nfiles || S_ISDIR(EMODE(ESEL)))
+		return;
+
+	if ((pager = getenv("PAGER")) == NULL)
+		pager = FM_PAGER;
+	spawn(pager, ENAME(ESEL), NULL);
 }
 
 static void
@@ -1377,6 +1394,7 @@ loop(void)
 		{'p',		0,	cmd_up,			X_UPDV},
 		{'p',		K_CTRL,	cmd_up,			X_UPDV},
 		{'q',		0,	NULL,			X_QUIT},
+		{'v',		0,	cmd_view,		X_UPDV},
 		{'v',		K_META,	cmd_scroll_up,		X_UPDV},
 		{KEY_DOWN,	0,	cmd_scroll_down,	X_UPDV},
 		{KEY_NPAGE,	0,	cmd_scroll_down,	X_UPDV},