Странное поведение с копией / вставкой в ​​FSI на Mac

StackOverflow https://stackoverflow.com/questions/2168713

Вопрос

Я вроде получил fsi.exe, работаю, как ожидалось, на Mac OS X (Snow Leopard) с моно. Я только что заметил немного странного поведения с вырезом и пастой, и мне было интересно, если бы кто-нибудь видел это.

Я определил следующие псевдонимы для FSI:

alias fsi='ledit mono ~/FSharp-1.9.7.8_2/bin/fsi.exe --gui-'

LEDIT - это утилита OCAML, которая, похоже, делает ввод клавиатуры правильно - без него FSI просто никогда не читает вход. Чтобы увидеть, что я имею в виду, попробуйте fsi.exe без LEDIT и введите

let square x = x * x;;

Без LEDIT это просто никогда не разбирает вход. Я имею в виду, что это никогда не возвращается в подсказку «>» после ввода строки. С помощью LEDIT, подсказка «>» возвращается немедленно.

Конечно, --gui- поддерживает FSI от отображения всех сообщений о отсутствии системы.

Так что это все, кажется, работает. Странность - это когда я копирую код и вставьте код в FSI, некоторые символы, кажется, повторяются снова и снова. Похоже, это обусловлено размером буфера, в которую я вставляю. Когда я вставляю небольшие фрагменты, кажется, нет проблем. Но если я встаю в большие куски, есть эта странность.

Если я сделаю следующее:

open System.IO;;

Затем вставьте этот фрагмент кода в FSI:

let buildFileList basepath filespec =
    seq {
        yield! Directory.GetFiles(basepath, filespec, System.IO.SearchOption.AllDirectories)
        }

Это работает нормально. Но если я копирую и вставку в большую кусок кода, заканчивающийся этим, он повторяет часть дохода! снова и снова. Кажется, как-то связано с FSI, пытаясь анализировать код, так как он вставлен, потому что тот же код вставлен, приведет к призванию ошибок анализа (например, FS0010), когда он вставлен в конце длинного куска, но не вызывает ошибку, когда Это изолирована.

Если я # загружаю весь файл, он так хорошо, так что я думаю, что мой код в порядке.

Эта странность в копировании / пасте, кажется, происходит как с и без LEDIT в командной строке. Я не против исследования этого вопроса себя, но я вроде ошеломлен, где я должен приступить к этому. Я копирую из GVIM, если это имеет значение, но у кого-нибудь есть идеи, где я мог бы продолжать пытаться изолировать причину этого странного поведения? Я полагаю, что я могу сначала взять дополнительный шаг копирования в Tequeptedit, а затем пытаюсь скопировать FSI, но любые идеи за пределы этого?

Внизу это: кто-нибудь еще видел это странное поведение? Если нет, какие-либо предложения о том, как я мог бы продолжать пытаться изолировать причину этого странного поведения?

Это было полезно?

Решение

Когда я столкнулся с этим поведением на моем Mac, я пошел другой маршрут. Вместо того, чтобы использовать ledit, Я работал fsiС. --readline вариант, видели ниже (где ${FSHARP} мой путь установки).

mono ${FSHARP}/fsi.exe --readline+ --gui-

Вы также можете проверить настройки терминала. Мой терминал (например) объявлен как xterm-color, и я не провел delete sends CTRL-H. Отказ Я думаю, что это единственные соответствующие настройки, но не держите меня к нему.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top