2
Scala REPLのタブ補完の出力は、新しい行を開始する前に左から右にソートされた項目を使用して行全体を読み込みます。これは私には気分が悪い。私は新しい列を始める前に上から下にソートされたリストを読むことに慣れています。代わりに列を読み込むように出力を変更する方法はありますか?ScalaのREPLタブの補完では、列全体ではなく列が読み込まれますか?
Scala REPLのタブ補完の出力は、新しい行を開始する前に左から右にソートされた項目を使用して行全体を読み込みます。これは私には気分が悪い。私は新しい列を始める前に上から下にソートされたリストを読むことに慣れています。代わりに列を読み込むように出力を変更する方法はありますか?ScalaのREPLタブの補完では、列全体ではなく列が読み込まれますか?
Scala REPL jlineを正しく使用するために使用してください。 jlineのコードを見れば、CandidateListCompletionHandler.printCandidates(...)
reader.printColumns(candidates)
と呼ぶことができます。ここにコピー/ペーストしています。
あなたが見ることができるように、ラインモードではなくcolomnモードで補完候補をソートする方法はありません。できるだけjlineにパッチを当ててscala/lib /ディレクトリに置き換えるのが一番良いかもしれません。
public void printColumns(final Collection stuff) throws IOException {
if ((stuff == null) || (stuff.size() == 0)) {
return;
}
int width = getTermwidth();
int maxwidth = 0;
for (Iterator i = stuff.iterator(); i.hasNext(); maxwidth = Math.max(
maxwidth, i.next().toString().length())) {
;
}
StringBuffer line = new StringBuffer();
int showLines;
if (usePagination)
showLines = getTermheight() - 1; // page limit
else
showLines = Integer.MAX_VALUE;
for (Iterator i = stuff.iterator(); i.hasNext();) {
String cur = (String) i.next();
if ((line.length() + maxwidth) > width) {
printString(line.toString().trim());
printNewline();
line.setLength(0);
if (--showLines == 0) { // Overflow
printString(loc.getString("display-more"));
flushConsole();
int c = readVirtualKey();
if (c == '\r' || c == '\n')
showLines = 1; // one step forward
else if (c != 'q')
showLines = getTermheight() - 1; // page forward
back(loc.getString("display-more").length());
if (c == 'q')
break; // cancel
}
}
pad(cur, maxwidth + 3, line);
}
if (line.length() > 0) {
printString(line.toString().trim());
printNewline();
line.setLength(0);
}
}
拡張チケットを登録できますか?それが構成可能だったなら、それはいいだろう... – soc