2012-01-20 12 views
10

Lubię tworzyć Scala w Emacs i od czasu do czasu używam REPL do testowania fragmentów kodu lub ładowania i testowania kodu, który właśnie napisałem. Używam Scala 2.9.1, i zauważyłem, że kiedy otwieram REPL w buforze terminala, rzeczy są zasadniczo zepsute. W szczególności nie mogę usunąć żadnych znaków z bieżącego wiersza i nie mogę przesunąć kursora w tył w bieżącej linii. Jest to bardzo frustrujące, ponieważ w każdym momencie, kiedy coś mylę, muszę zacząć od nowa. Zastanawiam się, czy ktokolwiek inny ma ten problem używając Scala REPL pod Emacsem i czy ktoś ma potencjalne rozwiązanie.Scala REPL w Emacs

+0

W jaki sposób uruchamiasz program REPL w Emacs? – leedm777

+0

Otwieram nowy bufor z ansi-term. Następnie, w tym buforze terminala, uruchamiam REPL przez wywołanie "scala" bezpośrednio lub za pomocą konsoli sbt. Tak czy inaczej, ten problem wydaje się występować. – nomad

+1

Możesz mieć więcej szczęścia, otwierając nowy bufor z powłoką i uruchamiając scala lub sbt z powłoki. – leedm777

Odpowiedz

8

Uważam, że rlwrap (readline wrapper) dobrze gra z ansi-term i scala emacsa. Po prostu zadzwoń "rlwrap scala", a będziesz miał normalną edycję linii bash, a także historię, działającą poprawnie. Jako bonus, twoja historia obejmuje wiele inwokacji scala, więc nie stracisz wszystkiego, co wpisałeś po wyjściu ze Scala REPL.

Jeśli rlwrap nie działa dla ciebie, po prostu przejście do trybu liniowego w ansi-term (domyślnie Cx Cj) pozwoli ci na edycję w stylu emacs na linii, ale bez elementów powłoki takich jak historia i ukończenie.

Już wspomniano o Ensime, więc dodam tylko, że jest to doskonała opcja, jeśli nie masz nic przeciwko temu, co się dzieje.

+0

Dzięki za cynk. Wydaje mi się, że działa to całkiem dobrze. W rzeczywistości lubię podejście rlwrap w stosunku do podejścia Ensime, ponieważ daje mi historię poleceń. Obecnie jedynym ograniczeniem do wywoływania REPL przez Emacs przy użyciu metody rlwrap jest niemożność użycia funkcji uzupełniania tabulatorów. – nomad

+0

W jaki sposób zdobyliście TUZ w REPL poprzez emacs? – CodeKingPlusPlus

7

Możesz zainstalować ENSIME i follow instructions. Nie wiem o twoim sposobie wywoływania REPL, ale REPL dzwoni z ENSIME działa (pozwala przesuwać kursor do tyłu i kasować symbole, sprawdziłem).

+2

Dzięki za cynk. Wygląda na to, że wywołanie REPL z Ensime rozwiązuje ten problem, ale wprowadza kilka innych. W szczególności, REPL wywołany przez Ensime nie ma historii poleceń i nie wydaje się być zdolny do wykonania tab. – nomad

+1

+1 dla ENSIME, ENSIME jest cool –

Powiązane problemy