Merge branch 'master' into pr/222

This commit is contained in:
Paul Tagliamonte 2013-07-06 13:45:29 -04:00
commit 8d96f68bd6
5 changed files with 90 additions and 33 deletions

View File

@ -14,4 +14,4 @@
* Thomas Ballinger <thomasballinger@gmail.com> * Thomas Ballinger <thomasballinger@gmail.com>
* Morten Linderud <mcfoxax@gmail.com> * Morten Linderud <mcfoxax@gmail.com>
* Guillermo Vayá <guivaya@gmail.com> * Guillermo Vayá <guivaya@gmail.com>
* Ralph Möritz <ralph.moeritz@outlook.com>

26
NEWS
View File

@ -1,3 +1,29 @@
Changes from Hy 0.9.8
[ Syntax Fixes ]
* Macros are now module-specific, and must be required when used. (KH)
* Added a few more string escapes to the compiler (Thomas Ballinger)
* Keywords are pseudo-callable again, to get the value out of a dict. (PT)
* Empty expression is now the same as an empty vector. (Guillermo Vaya)
[ Language Changes ]
* HyDicts (quoted dicts or internal HST repr) are now lists
that compiled down to dicts by the Compiler later on. (ND)
* Macros can be constants as well. (KH)
* Add eval-when-compile and eval-and-compile (KH)
* Add break and continue to Hy (Morten Linderud)
* Core language libraries added. As example, I've included `take` and
`drop` in this release. More to come (PT)
[ Misc. Fixes ]
* Ensure compiler errors are always "user friendly" (JD)
* Hy REPL quitter repr adjusted to match Hy syntax (Morten Linderud)
* Windows will no longer break due to missing readline (Ralph Moritz)
Changes from Hy 0.9.7 Changes from Hy 0.9.7
[ Syntax Fixes ] [ Syntax Fixes ]

View File

@ -24,28 +24,24 @@
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
# DEALINGS IN THE SOFTWARE. # DEALINGS IN THE SOFTWARE.
import ast
import code
import optparse import optparse
import os import code
import readline import ast
import sys import sys
import hy import hy
from hy.importer import ast_compile, import_buffer_to_module
from hy.lex.states import Idle, LexException from hy.lex.states import Idle, LexException
from hy.lex.machine import Machine from hy.lex.machine import Machine
from hy.compiler import hy_compile from hy.compiler import hy_compile
from hy.core import process from hy.core import process
from hy.importer import ast_compile, import_buffer_to_module from hy.completer import completion
import hy.completer
from hy.macros import macro, require
from hy.models.expression import HyExpression from hy.models.expression import HyExpression
from hy.models.string import HyString from hy.models.string import HyString
from hy.models.symbol import HySymbol from hy.models.symbol import HySymbol
from hy.macros import macro, require
_machine = Machine(Idle, 1, 0) _machine = Machine(Idle, 1, 0)
@ -185,23 +181,15 @@ def run_repl(hr=None):
sys.ps1 = "=> " sys.ps1 = "=> "
sys.ps2 = "... " sys.ps2 = "... "
history = os.path.expanduser("~/.hy-history") with completion():
readline.parse_and_bind("set blink-matching-paren on") if not hr:
hr = HyREPL()
try: hr.interact("{appname} {version}".format(
readline.read_history_file(history) appname=hy.__appname__,
except IOError: version=hy.__version__
open(history, 'a').close() ))
readline.parse_and_bind("tab: complete")
if not hr:
hr = HyREPL()
hr.interact("{appname} {version}".format(
appname=hy.__appname__,
version=hy.__version__
))
readline.write_history_file(history)
return 0 return 0

View File

@ -1,4 +1,11 @@
# Copyright (c) 2013 Paul Tagliamonte <paultag@debian.org> # Copyright (c) 2013 Paul Tagliamonte <paultag@debian.org>
# Copyright (c) 2013 Gergely Nagy <algernon@madhouse-project.org>
# Copyright (c) 2013 James King <james@agentultra.com>
# Copyright (c) 2013 Julien Danjou <julien@danjou.info>
# Copyright (c) 2013 Konrad Hinsen <konrad.hinsen@fastmail.net>
# Copyright (c) 2013 Thom Neale <twneale@gmail.com>
# Copyright (c) 2013 Will Kahn-Greene <willg@bluesock.org>
# Copyright (c) 2013 Ralph Moritz <ralph.moeritz@outlook.com>
# #
# Permission is hereby granted, free of charge, to any person obtaining a # Permission is hereby granted, free of charge, to any person obtaining a
# copy of this software and associated documentation files (the "Software"), # copy of this software and associated documentation files (the "Software"),
@ -18,6 +25,21 @@
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
# DEALINGS IN THE SOFTWARE. # DEALINGS IN THE SOFTWARE.
import os
from contextlib import contextmanager
docomplete = True
try:
import readline
except ImportError:
try:
import pyreadline.rlmain
import pyreadline.unicode_helper # NOQA
import readline
except ImportError:
docomplete = False
import hy.macros import hy.macros
import hy.compiler import hy.compiler
@ -58,10 +80,27 @@ class Completer(object):
return None return None
try: @contextmanager
import readline def completion(completer=None):
except ImportError: delims = "()[]{} "
pass if not completer:
else: completer = Completer()
readline.set_completer(Completer().complete)
readline.set_completer_delims("()[]{} ") if docomplete:
readline.set_completer(completer.complete)
readline.set_completer_delims(delims)
history = os.path.expanduser("~/.hy-history")
readline.parse_and_bind("set blink-matching-paren on")
try:
readline.read_history_file(history)
except IOError:
open(history, 'a').close()
readline.parse_and_bind("tab: complete")
yield
if docomplete:
readline.write_history_file(history)

View File

@ -22,16 +22,20 @@
from hy import __appname__, __version__ from hy import __appname__, __version__
from setuptools import setup from setuptools import setup
import os
long_description = """Hy is a Python <--> Lisp layer. It helps long_description = """Hy is a Python <--> Lisp layer. It helps
make things work nicer, and lets Python and the Hy lisp variant play make things work nicer, and lets Python and the Hy lisp variant play
nice together. """ nice together. """
install_requires = []
if os.name == 'nt':
install_requires.append('pyreadline==2.0')
setup( setup(
name=__appname__, name=__appname__,
version=__version__, version=__version__,
install_requires=install_requires,
scripts=[ scripts=[
"bin/hy", "bin/hy",
"bin/hyc", "bin/hyc",