summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--TODO2
-rw-r--r--ranger/gui/widgets/browsercolumn.py25
2 files changed, 25 insertions, 2 deletions
diff --git a/TODO b/TODO
index efa27548..1c4ab908 100644
--- a/TODO
+++ b/TODO
@@ -34,7 +34,7 @@ General
    (X) #42  10/01/17  memorize directory for `` when using :cd
    (X) #43  10/01/18  internally treat the bookmarks ` and ' the same
    ( ) #44  10/01/18  more error messages :P
-   ( ) #47  10/01/19  less restricive auto preview
+   (X) #47  10/01/19  less restricive auto preview
    (X) #48  10/01/19  abbreviate commands with first unambiguous substring
 
 
diff --git a/ranger/gui/widgets/browsercolumn.py b/ranger/gui/widgets/browsercolumn.py
index 8544da19..c8a0cfe3 100644
--- a/ranger/gui/widgets/browsercolumn.py
+++ b/ranger/gui/widgets/browsercolumn.py
@@ -13,11 +13,33 @@
 # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 
 """The BrowserColumn widget displays the contents of a directory or file."""
+import re
 from time import time
 
 from . import Widget
 from .pager import Pager
 
+# Don't even try to preview files which mach this regular expression:
+PREVIEW_BLACKLIST = re.compile(r"""
+		# look at the extension:
+		\.(
+			# one character extensions:
+				[oa]
+			# media formats:
+				| avi | [mj]pe?g | mp\d | og[gmv] | wm[av] | mkv | flv
+				| png | bmp | vob | wav | mpc | flac | divx? | xcf | pdf
+			# binary files:
+				| torrent | class | so | img | py[co]
+			# containers:
+				| iso | rar | zip | 7z | tar | gz | bz
+		)
+		# ignore dummy suffixes:
+			(\.bak|~)?
+		# ignore fully numerical file extensions:
+			(\.\d+)*?
+		$
+""", re.VERBOSE | re.IGNORECASE)
+
 class BrowserColumn(Pager, Widget):
 	main_column = False
 	display_infostring = False
@@ -123,7 +145,8 @@ class BrowserColumn(Pager, Widget):
 			self.last_redraw_time = time()
 
 	def _preview_this_file(self, target):
-		return target.document and self.settings.preview_files
+		return not PREVIEW_BLACKLIST.search(target.basename) \
+				and self.settings.preview_files
 
 	def _draw_file(self):
 		"""Draw a preview of the file, if the settings allow it"""