Added emacs.py (for misc/py-connect.el).

posixpath.py: added undocumented expanndvars() (expands $VAR in string).
This commit is contained in:
Guido van Rossum 1992-08-09 13:54:50 +00:00
parent 21803b8a6f
commit 4732ccf642
2 changed files with 44 additions and 0 deletions

18
Lib/emacs.py Normal file
View file

@ -0,0 +1,18 @@
# Execute Emacs code from a Python interpreter.
# This code should be imported from a Python interpreter that is
# running as an inferior process of Emacs.
# See misc/py-connect.el for the companion Emacs lisp code.
# Author: Terrence M. Brannon.
start_marker = '+'
end_marker = '~'
def eval (string):
tmpstr = start_marker + '(' + string + ')' + end_marker
print tmpstr
def dired (directory):
eval( 'dired ' + '"' + directory + '"' )
def buffer_menu ():
eval( 'buffer-menu(buffer-list)' )

View file

@ -230,3 +230,29 @@ def expanduser(path):
return path
userhome = pwent[5]
return userhome + path[i:]
# Expand paths containing shell variable substitutions.
# This is done by piping it through the shell.
# Shell quoting characters (\ " ' `) are protected by a backslash.
# NB: a future version may avoid starting a subprocess and do the
# substitutions internally. This may slightly change the syntax
# for variables.
def expandvars(path):
if '$' not in path:
return path
q = ''
for c in path:
if c in ('\\', '"', '\'', '`'):
c = '\\' + c
q = q + c
d = '!'
if q == d:
d = '+'
p = posix.popen('cat <<' + d + '\n' + q + '\n' + d + '\n', 'r')
res = p.read()
del p
if res[-1:] == '\n':
res = res[:-1]
return res