summary refs log tree commit diff stats
path: root/ranger.py
blob: 8a2d596764e069e87a147e144220148140359ac1 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
#!/usr/bin/python
# coding=utf-8

# An embedded shell script. Assuming this file is /usr/bin/ranger,
# this hack allows you to use the cd-after-exit feature by typing:
# source ranger ranger
# Now when you quit ranger, it should change the directory of the
# parent shell to where you have last been in ranger.
# Works with at least bash and zsh.
"""":
if [ $1 ]; then
	cd "`$1 --cd-after-exit $@ 3>&1 1>&2 2>&3 3>&-`"
else
	echo "use with: source path/to/ranger.py path/to/ranger.py"
fi
return 1
"""

from ranger.fm import FM
from ranger.environment import Environment
from ranger.command import CommandList
from ranger.conf import keys, options
from ranger.gui.defaultui import DefaultUI as UI
from ranger.conf.colorschemes.snow import MyColorScheme

import sys, os, locale

try:
	assert sys.argv[1] == '--cd-after-exit'
	cd_after_exit = True
	sys.stderr = sys.stdout
	del sys.argv[1]
except:
	cd_after_exit = False

# TODO: Parse arguments

# TODO: load config

os.stat_float_times(True)
locale.setlocale(locale.LC_ALL, 'en_US.utf8')

try:
	path = os.path.abspath('.')
	opt = options.dummy()

	env = Environment(opt)
	commandlist = CommandList()
	colorscheme = MyColorScheme()
	keys.initialize_commands(commandlist)

	my_ui = UI(env, commandlist, colorscheme)
	my_fm = FM(env)
	my_fm.feed(path, my_ui)
	my_fm.run()

finally:
	try:
		my_ui.exit()
	except:
		pass

	if cd_after_exit:
		try:
			sys.__stderr__.write(env.pwd.path)
		except:
			pass