Я использую Emacs для Windows-XP с пакетом обновления 3 (SP3) GNU Emacs 22.3.1 (i386-mingw-nt5.1.2600) от 2008-09-07 на SOFT-MJASON
Когда я запускаю команду, в которой аргумент содержит метасимволы оболочки, моя область Emacs не передается команде через STDIN, как ожидалось. Я написал программу, чтобы убедиться, что это так:
## test.pl
my $lines = 0;
while (<STDIN>)
{
++$lines;
}
print "Input lines: $lines\n";
for (my $i = 0; $i < @ARGV; ++$i)
{
print "$i: [[$ARGV[$i]]]\n";
}
Например, если регион содержит:
a
b
И я запускаю: perl c:\bin\test.pl "<"
, я получаю:
Input lines: 0
0: [[<]]
Если вместо этого я запускаю: perl c:\bin\test.pl "-"
, я получаю:
Input lines: 2
0: [[-]]
Моя переменная окружения SHELL в Emacs имеет значение c:/emacs/bin/cmdproxy.exe
Это никогда не было проблемой, пока я не запустил последнюю версию Emacs. Кто-нибудь знает, как это исправить? (Я не заинтересован в использовании какой-либо оболочки Cygwin в качестве моей оболочки Emacs)
Редактировать:
Любой аргумент для test.pl, который я использую, который содержит метасимвол оболочки, имеет тот же эффект, что и использование «<». Например, передача «foo &» также приводит к «Input Lines: 0»
Точно так же любой аргумент test.pl, который я использую, но не содержит метасимвол оболочки, имеет тот же эффект, что и "-". Например, передача "foo" также приводит к «Input Lines: 2»