summary refs log tree commit diff stats
path: root/ranger/fm.py
diff options
context:
space:
mode:
Diffstat (limited to 'ranger/fm.py')
-rw-r--r--ranger/fm.py25
1 files changed, 18 insertions, 7 deletions
diff --git a/ranger/fm.py b/ranger/fm.py
index 5abb2a8e..43319836 100644
--- a/ranger/fm.py
+++ b/ranger/fm.py
@@ -2,16 +2,24 @@ from ranger.actions import Actions
 from ranger.container import Bookmarks
 from ranger import __version__
 
-USAGE = '''%s [options] [path/filename]'''
 CTRL_C = 3
+TICKS_BEFORE_COLLECTING_GARBAGE = 100
 
 class FM(Actions):
 	def __init__(self, ui = None, bookmarks = None):
+		"""Initialize FM."""
 		Actions.__init__(self)
 		self.ui = ui
+		self.bookmarks = bookmarks
 		self.apps = self.settings.apps.CustomApplications()
 
-		if bookmarks is None:
+		from ranger.shared import FileManagerAware
+		FileManagerAware.fm = self
+
+	def initialize(self):
+		"""If ui/bookmarks are None, they will be initialized here."""
+
+		if self.bookmarks is None:
 			self.bookmarks = Bookmarks()
 			self.bookmarks.load()
 
@@ -19,15 +27,18 @@ class FM(Actions):
 			self.bookmarks = bookmarks
 		self.bookmarks.enter_dir_function = self.enter_dir
 
-		from ranger.shared import FileManagerAware
-		FileManagerAware.fm = self
-
-	def loop(self):
 		if self.ui is None:
 			from ranger.gui.defaultui import DefaultUI
 			self.ui = DefaultUI()
 			self.ui.initialize()
 
+	def loop(self):
+		"""The main loop consists of:
+1. reloading bookmarks if outdated
+2. drawing and finalizing ui
+3. reading and handling user input
+4. after X loops: collecting unused directory objects"""
+
 		self.env.enter_dir(self.env.path)
 
 		gc_tick = 0
@@ -42,7 +53,7 @@ class FM(Actions):
 				self.ui.handle_key(key)
 
 				gc_tick += 1
-				if gc_tick > 10:
+				if gc_tick > TICKS_BEFORE_COLLECTING_GARBAGE:
 					gc_tick = 0
 					self.env.garbage_collect()