summary refs log tree commit diff stats
path: root/code/fm/fm.rb
diff options
context:
space:
mode:
Diffstat (limited to 'code/fm/fm.rb')
-rw-r--r--code/fm/fm.rb49
1 files changed, 29 insertions, 20 deletions
diff --git a/code/fm/fm.rb b/code/fm/fm.rb
index 5033c161..91b17f2d 100644
--- a/code/fm/fm.rb
+++ b/code/fm/fm.rb
@@ -1,3 +1,5 @@
+require 'thread'
+
 OPTIONS = {
 	'hidden' => false,
 	'sort' => :name,
@@ -18,6 +20,8 @@ module Fm
 	def self.initialize(pwd=nil)
 		@bars = []
 		@bars_thread = nil
+
+		@entering_directory = true
 		
 		@buffer = ''
 		@pwd = nil
@@ -27,33 +31,28 @@ module Fm
 		@trash = File.expand_path('~/.trash')
 		pwd ||= Dir.getwd
 
-		# `' and `` are the original PWD unless overwritten by .fmrc
+		# `' and `` are the original PWD unless overwritten by .rangerrc
 		@memory = {
 			'`' => pwd,
 			'\'' => pwd
 		}
 
-		# Read the .fmrc
-		@fmrc = File.expand_path('~/.fmrc')
-		if (File.exists?(@fmrc))
-			loaded = Marshal.load(File.read(@fmrc)) rescue nil
-			if Hash === loaded
-				@memory.update(loaded)
+		# Read the .rangerrc
+		@rangerrc = File.expand_path('~/.rangerrc')
+		if (File.exists?(@rangerrc))
+			content = File.read(@rangerrc)
+			unless content.empty?
+				loaded = Marshal.load() rescue nil
+				if Hash === loaded
+					@memory.update(loaded)
+				end
 			end
 		end
+		@dump_config_on_exit = true
 
 		# `0 is always the original PWD
 		@memory['0'] = pwd
 
-		# Give me some way to redraw screen while waiting for
-		# input from CLI.geti
-
-#		for i in 1..20
-#			eval "Signal.trap(#{i}) do
-#				log #{i}
-#				exit if #{i} == 9 end"
-#		end
-
 		boot_up(pwd)
 	end
 
@@ -90,10 +89,15 @@ module Fm
 	end
 
 	def dump
-		remember_dir
-		dumped = Marshal.dump(@memory)
-		File.open(@fmrc, 'w') do |f|
-			f.write(dumped)
+		if defined? @dump_config_on_exit
+			begin
+				remember_dir
+				dumped = Marshal.dump(@memory)
+				File.open(@rangerrc, 'w') do |f|
+					f.write(dumped)
+				end
+			rescue Exception
+			end
 		end
 	end
 
@@ -198,6 +202,7 @@ module Fm
 			end
 		end
 
+		@entering_directory = true
 		Dir.chdir(@pwd.path)
 	end
 
@@ -270,5 +275,9 @@ module Fm
 			@bars_thread = nil
 		end
 	end
+
+	def getfiles()
+		@marked.empty? ? [currentfile] : @marked
+	end
 end