Как правильно развиваться в репле с использованием Groovy - PullRequest
5 голосов
/ 14 марта 2012

Я новичок в работе с Groovy.Я привык к Python и Clojure, где я мог делать большую часть своего кодирования в REPL.Я пытаюсь сделать то же самое с Groovy, но я не уверен, что нашел способ, который подходит.

Плагин Groovy Eclipse предоставляет несколько интерактивных режимов, но ни один из них мне не подходит.

Первый способ загружает скрипт Groovy в консоль Groovy.Консоль кажется мне слабым редактором без каких-либо удобств Eclipse, таких как завершение табуляции.Есть несколько хороших возможностей для самоанализа, но на самом деле это не похоже на интерактивную разработку.

Второй способ запускает Groovy Shell на вкладке консоли Eclipse.Это дает мне REPL, который я хочу, но в Eclipse он выглядит очень неуклюжим.Там нет завершения вкладки.И я должен ввести «go» после ввода кода, который я хочу оценить.

Плагин Groovy Eclipse не разрезал его, но оболочка Groovy, включенная в отдельный дистрибутив Groovy, прекрасно работает.Он выполняет завершение табуляции (кроме имен классов) и оценивает код сразу после его ввода. Это тот, который задокументировал здесь .

Я немного глубже вник в различия междуREPL, который запускается в Eclipse и тот, который запускается из автономного дистрибутива с использованием сценария groovysh .Один из Eclipse является экземпляром 'groovy.ui.InteractiveShell' , а другой из сценария groovysh является экземпляром 'org.codehaus.groovy.tools.shell.Main' .И я нашел следующий код в скрипте groovysh

if [ "x$OLDSHELL" != "x" ]; then </br>
    startGroovy groovy.ui.InteractiveShell "$@"
else
    startGroovy org.codehaus.groovy.tools.shell.Main "$@"
fi

Приведенный выше код и этот поток сообщают мне groovy.ui.InteractiveShell уходит.

Возможно, в будущем планируется более тесно интегрировать новую оболочку в Eclipse?

В любом случае, мне удалось его взломать, чтобы я мог вызвать скрипт groovysh с classpath, необходимыми для работы с кодом из моего проекта Eclipse.Теперь я могу счастливо развиваться в REPL.Но это грязно, и я использую фляги в автономном дистрибутиве Groovy для запуска Groovy вместо тех, которые использовали мой проект Eclipse.Я полагаю, что может быть лучший способ.

Кто-нибудь нашел хороший способ интегрировать REPL, запускаемый из сценария groovysh и проекта в Eclipse.Или вы нашли общий лучший способ разработки с Groovy REPL?

Ответы [ 2 ]

2 голосов
/ 14 марта 2012

Не так много усилий ушло на интеграцию groovysh в groovy-eclipse.Основная причина в том, что groovysh использует всевозможные не отображаемые символы для указания таких вещей, как цвет, завершение и размещение каретки.Консоль Eclipse не обрабатывает их и выплевывает их как мусор.Кроме того, текущая реализация оболочки из Groovy не очень хорошо работает на окнах внутри Eclipse.Существуют некоторые несовместимости с библиотекой jline.

Если бы мы сделали некоторую интеграцию с groovysh, это было бы большое дело и большое переписывание.Я не против делать что-то подобное, но до сих пор никто не просил эту функцию (вы первый, кого я знаю).

Что не так с запуском groovysh из командной строки во время работыв затмении?(Это не риторический вопрос, я действительно хочу знать, какие функции отсутствуют.) Этот метод используется большинством разработчиков Groovy при работе внутри Eclipse.

0 голосов
/ 24 марта 2012

Я нашел хороший способ запустить groovysh в ITerm с помощью пользовательского пути к классам из Eclipse. Он специфичен для OSX и ITerm, но вы можете изменить его для вызова другой оболочки в зависимости от того, как вы передаете строку в оболочку для ее выполнения.


Настройка внешнего инструмента в Eclipse, который вызывает скрипт. Сценарий использует команды appleerScript для открытия нового окна ITerm и выполняет переданную команду.

Текст поля аргументов на изображении ниже:

"cd $ {project_loc} && /Users/harishtella/Developer/groovy/groovy-1.8.6/bin/groovysh -cp $ {project_loc} / bin: $ {project_loc} / src: $ {project_loc} / lib / *: $ {project_loc} / тест "

Переменная $ {project_loc} доступна при определении новых внешних инструментов. См. this для получения дополнительной информации.

enter image description here

Обязательно снимите флажок «распределить консоль» на вкладке «Общие»

enter image description here

вот тело сценария "iterm-with-command"

#!/bin/sh
# open a new iterm window and runs all the arguments passed in as a command
# in iterm
osascript <<-eof
tell application "iTerm"
    set myterm to (make new terminal)
tell myterm
    launch session "Default session"
        tell the last session
            set name to "console"
            write text "$@"
end tell
end tell
end tell
eof
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...