about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorKartik K. Agaram <vc@akkartik.com>2014-10-30 17:34:34 -0700
committerKartik K. Agaram <vc@akkartik.com>2014-10-30 17:34:34 -0700
commit13315b2a579d560c93f69aa033840e1c2facf67d (patch)
tree3c600151a689523073a4f9e11008150ef6a4349d
parent3eb350738277cf7694136550cf3560415a3b0a08 (diff)
downloadmu-13315b2a579d560c93f69aa033840e1c2facf67d.tar.gz
182
-rw-r--r--mu.arc3
-rw-r--r--mu.arc.t22
2 files changed, 24 insertions, 1 deletions
diff --git a/mu.arc b/mu.arc
index 19c8946d..df6aff2a 100644
--- a/mu.arc
+++ b/mu.arc
@@ -671,7 +671,8 @@
 (def maybe-add (arg offset idx)
   (unless (or (in ty.arg 'literal 'offset)
               (offset v.arg)
-              (~isa v.arg 'sym))
+              (~isa v.arg 'sym)
+              (in v.arg 'nil 'default-scope))
     (= (offset v.arg) idx)))
 
 ;; literate tangling system for reordering code
diff --git a/mu.arc.t b/mu.arc.t
index 96e7c866..6e8a0ad7 100644
--- a/mu.arc.t
+++ b/mu.arc.t
@@ -1368,6 +1368,17 @@
   (prn "F - convert-names renames symbolic names to integer offsets"))
 
 (reset)
+(new-trace "convert-names-nil")
+(if (~iso (convert-names
+            '(((x integer) <- copy (4 literal))
+              ((y integer) <- copy (2 literal))
+              ((nil integer) <- add (x integer) (y integer))))
+          '(((1 integer) <- copy (4 literal))
+            ((2 integer) <- copy (2 literal))
+            ((nil integer) <- add (1 integer) (2 integer))))
+  (prn "F - convert-names never renames nil"))
+
+(reset)
 (new-trace "convert-quotes-defer")
 (if (~iso (convert-quotes
             '(((1 integer) <- copy (4 literal))
@@ -1421,4 +1432,15 @@
   (if (no rep.last-routine!error)
     (prn "F - default-scope checks bounds")))
 
+(reset)
+(new-trace "convert-names-default-scope")
+(if (~iso (convert-names
+            '(((x integer) <- copy (4 literal))
+              ((y integer) <- copy (2 literal))
+              ((default-scope integer) <- add (x integer) (y integer))))
+          '(((1 integer) <- copy (4 literal))
+            ((2 integer) <- copy (2 literal))
+            ((default-scope integer) <- add (1 integer) (2 integer))))
+  (prn "F - convert-names never renames default-scope"))
+
 (reset)  ; end file with this to persist the trace for the final test
ackground-color: #fff0f0 } /* Literal.String.Delimiter */ .highlight .sd { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Doc */ .highlight .s2 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Double */ .highlight .se { color: #0044dd; background-color: #fff0f0 } /* Literal.String.Escape */ .highlight .sh { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Heredoc */ .highlight .si { color: #3333bb; background-color: #fff0f0 } /* Literal.String.Interpol */ .highlight .sx { color: #22bb22; background-color: #f0fff0 } /* Literal.String.Other */ .highlight .sr { color: #008800; background-color: #fff0ff } /* Literal.String.Regex */ .highlight .s1 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Single */ .highlight .ss { color: #aa6600; background-color: #fff0f0 } /* Literal.String.Symbol */ .highlight .bp { color: #003388 } /* Name.Builtin.Pseudo */ .highlight .fm { color: #0066bb; font-weight: bold } /* Name.Function.Magic */ .highlight .vc { color: #336699 } /* Name.Variable.Class */ .highlight .vg { color: #dd7700 } /* Name.Variable.Global */ .highlight .vi { color: #3333bb } /* Name.Variable.Instance */ .highlight .vm { color: #336699 } /* Name.Variable.Magic */ .highlight .il { color: #0000DD; font-weight: bold } /* Literal.Number.Integer.Long */
"""Ranger - file browser for the unix terminal"""

__copyright__ = 'none'
__license__ = 'GPL'
__version__ = '1.0.0'
__credits__ = 'hut'
__author__ = 'hut'
__maintainer__ = 'hut'
__email__ = 'hut@lavabit.com'

import os
import sys

# for easier access
from ranger.ext.debug import log, trace

CONFDIR = os.path.expanduser('~/.ranger')
RANGERDIR = os.path.dirname(__file__)

sys.path.append(CONFDIR)

USAGE = '''%s [options] [path/filename]'''

def main():
	"""initialize objects and run the filemanager"""
	try:
		import curses
	except ImportError as errormessage:
		print(errormessage)
		print('ranger requires the python curses module. Aborting.')
		sys.exit(1)

	from locale import setlocale, LC_ALL
	from optparse import OptionParser, SUPPRESS_HELP

	from ranger.fm import FM
	from ranger.container.environment import Environment
	from ranger.shared.settings import SettingsAware
	from ranger.gui.defaultui import DefaultUI as UI
	from ranger.fsobject.file import File

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

	# Parse options
	parser = OptionParser( usage = USAGE,
			version = 'ranger ' + __version__ )

	# Instead of using this directly, use the embedded
	# shell script by running ranger with:
	# source /path/to/ranger /path/to/ranger
	parser.add_option( '--cd-after-exit',
			action = 'store_true',
			dest = 'cd_after_exit',
			help = SUPPRESS_HELP )

	args, rest = parser.parse_args()

	log(sys.argv)
	if args.cd_after_exit:
		sys.stderr = sys.__stdout__
	
	# Initialize objects
	target = ' '.join(rest)
	if target:
		if not os.access(target, os.F_OK):
			print("File or directory doesn't exist: %s" % target)
			sys.exit(1)
		elif os.path.isfile(target):
			thefile = File(target)
			FM().execute_file(thefile)
			sys.exit(0)
		else:
			path = target
	else:
		path = '.'

	SettingsAware._setup()
	Environment(path)

	try:
		my_ui = UI()
		my_fm = FM(ui=my_ui)
		my_fm.stderr_to_out = args.cd_after_exit

		# Run the file manager
		my_fm.initialize()
		my_ui.initialize()
		my_fm.loop()
	finally:
		# Finish, clean up
		if 'my_ui' in vars():
			my_ui.destroy()
		if args.cd_after_exit:
			try: sys.__stderr__.write(my_fm.env.pwd.path)
			except: pass