summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorhut <hut@lavabit.com>2010-09-21 23:30:49 +0200
committerhut <hut@lavabit.com>2010-09-21 23:41:42 +0200
commite07d8b03612ede6ae75947d0d8ba71346aa894e1 (patch)
tree57d2a2695f8cf00035a83fce854f1d4c23ef15ae
parentdc0c43951d505307f39c9902cac5b7c53e6964a9 (diff)
downloadranger-e07d8b03612ede6ae75947d0d8ba71346aa894e1.tar.gz
ranger.__init__: improved __init__.py
-rw-r--r--ranger/__init__.py53
-rw-r--r--ranger/defaults/commands.py2
2 files changed, 31 insertions, 24 deletions
diff --git a/ranger/__init__.py b/ranger/__init__.py
index 1f8cc324..f0fab087 100644
--- a/ranger/__init__.py
+++ b/ranger/__init__.py
@@ -15,55 +15,64 @@
 
 """Ranger - file browser for the unix terminal"""
 
-import os
-import sys
+from os import path, environ
+from os.path import join as _join
 from ranger.ext.openstruct import OpenStruct
+from sys import argv
 
+# Information
 __license__ = 'GPL3'
 __version__ = '1.3.0'
-__credits__ = 'Roman Zimbelmann'
-__author__ = 'Roman Zimbelmann'
-__maintainer__ = 'Roman Zimbelmann'
+__author__ = __maintainer__ = 'Roman Zimbelmann'
 __email__ = 'romanz@lavabit.com'
 
-__copyright__ = """
-Copyright (C) 2009, 2010  Roman Zimbelmann <romanz@lavabit.com>
-"""
-
+# Constants
 USAGE = '%prog [options] [path/filename]'
-if 'XDG_CONFIG_HOME' in os.environ and os.environ['XDG_CONFIG_HOME']:
-	DEFAULT_CONFDIR = os.environ['XDG_CONFIG_HOME'] + '/ranger'
+RANGERDIR = path.dirname(__file__)
+LOGFILE = '/tmp/errorlog'
+if 'XDG_CONFIG_HOME' in environ and environ['XDG_CONFIG_HOME']:
+	DEFAULT_CONFDIR = environ['XDG_CONFIG_HOME'] + '/ranger'
 else:
 	DEFAULT_CONFDIR = '~/.config/ranger'
-RANGERDIR = os.path.dirname(__file__)
-LOGFILE = '/tmp/errorlog'
-arg = OpenStruct(
-		debug=False, clean=False, confdir=DEFAULT_CONFDIR,
+DEBUG = ('-d' in argv or '--debug' in argv) and ('--' not in argv or
+	(('-d' in argv and argv.index('-d') < argv.index('--')) or
+	('--debug' in argv and argv.index('--debug') < argv.index('--'))))
+
+# Get some valid arguments before actually parsing them in main()
+arg = OpenStruct(debug=DEBUG, clean=False, confdir=DEFAULT_CONFDIR,
 		mode=0, flags='', targets=[])
 
-#for python3-only versions, this could be replaced with:
-#def log(*objects, start='ranger:', sep=' ', end='\n'):
-#	print(start, *objects, end=end, sep=sep, file=open(LOGFILE, 'a'))
+# Debugging features.  These will be activated when run with --debug.
+# Example usage in the code:
+# import ranger; ranger.log("hello world")
 def log(*objects, **keywords):
 	"""
 	Writes objects to a logfile (for the purpose of debugging only.)
 	Has the same arguments as print() in python3.
 	"""
-	if LOGFILE is None or arg.clean:
-		return
+	if LOGFILE is None or not arg.debug or arg.clean: return
 	start = 'start' in keywords and keywords['start'] or 'ranger:'
 	sep   =   'sep' in keywords and keywords['sep']   or ' '
 	_file =  'file' in keywords and keywords['file']  or open(LOGFILE, 'a')
 	end   =   'end' in keywords and keywords['end']   or '\n'
 	_file.write(sep.join(map(str, (start, ) + objects)) + end)
 
+def log_traceback():
+	if LOGFILE is None or not arg.debug or arg.clean: return
+	import traceback
+	traceback.print_stack(file=open(LOGFILE, 'a'))
+
+# Handy functions
 def relpath_conf(*paths):
 	"""returns the path relative to rangers configuration directory"""
 	if arg.clean:
 		assert 0, "Should not access relpath_conf in clean mode!"
 	else:
-		return os.path.join(arg.confdir, *paths)
+		return _join(arg.confdir, *paths)
 
 def relpath(*paths):
 	"""returns the path relative to rangers library directory"""
-	return os.path.join(RANGERDIR, *paths)
+	return _join(RANGERDIR, *paths)
+
+# Clean up
+del environ, OpenStruct, argv
diff --git a/ranger/defaults/commands.py b/ranger/defaults/commands.py
index d3c05023..b61d5a5a 100644
--- a/ranger/defaults/commands.py
+++ b/ranger/defaults/commands.py
@@ -308,8 +308,6 @@ class set(Command):
 
 	def tab(self):
 		line = parse(self.line)
-		from ranger import log
-		log(line.parse_setting_line())
 		name, value, name_done = line.parse_setting_line()
 		settings = self.fm.settings
 		if not name:
'>305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349