<p>Apfelweinsprung mit Präfix zum Öffnen des Puffers in einem anderen Fenster?</p>

Erstellt am 13. März 2015  ·  28Kommentare  ·  Quelle: clojure-emacs/cider

Das Lesen der Quelle einer der von mir aufgerufenen Funktionen ist der häufigste Anwendungsfall für mich mit cider-jump . Um die Aufrufseite und die Funktionsdefinition nebeneinander anzuzeigen, muss ich jetzt M-. C-x 3 C-x o C-x b <RET> . Es wäre schön, wenn der Sprung im anderen Fenster passieren würde, wenn cider-jump-to-var ein Präfix gegeben wurde.

Das könnte für cider-jump-to-resource auch cool sein

Hilfreichster Kommentar

Ich hätte trotzdem gerne eine schnelle Möglichkeit, zum Symbol unter dem Punkt zu navigieren,
ohne eine Mini-Puffer-Eingabeaufforderung zu erhalten - gibt es eine Möglichkeit, dies zu tun
erreicht? nrepl-jump ist das Ding, das ich 10 Mal pro Minute benutzt habe, also bin ich es nicht
überhaupt glücklich mit dieser Änderung.

Am 23. März 2015 um 19:28 schrieb Vitalie Spinu [email protected] :

Dies ist kaum eine Verbesserung gegenüber der einfachen Eingabe von M-. -

Es ist eine große Verbesserung, wenn Sie die richtigen Vervollständigungen erhalten (siehe #699
https://github.com/clojure-emacs/cider/issues/699). Die Standardliste
Vervollständigungen sollten nicht nur das Symbol am Punkt enthalten, sondern auch die
umgebenden Funktionsaufruf, Klasse oder Methode.

Die eigentliche Vervollständigungsliste sollte idealerweise alle definierten Symbole enthalten
innerhalb einer Sitzung.


Antworten Sie direkt auf diese E-Mail oder zeigen Sie sie auf GitHub an
https://github.com/clojure-emacs/cider/issues/1014#issuecomment -85158715
.

Alle 28 Kommentare

Dies wäre einfach umzusetzen. Sowohl cider-jump-to-var als auch cider-jump-to-resource verwenden cider-jump-to , das ein optionales other-window -Argument hat, das genau das tut, was Sie wollen.

Das Problem liegt in der Bedienbarkeit. Das Präfix C-u wird bereits von cider-jump-to-var für das manuelle Einfügen des Kandidaten verwendet. Meine persönliche Meinung (detailliert erklärt in Nr. 699) ist, dass das aktuelle Verhalten nicht standardisiert und ineffizient ist. Cider sollte immer eine Eingabeaufforderung mit einem Standardkandidaten anzeigen, wie es andere Emacs-Pakete tun. Wenn #699 behoben ist, wird das aktuelle C-u freigegeben und könnte für etwas Nützlicheres wie das von Ihnen vorgeschlagene other-window -Verhalten verwendet werden.

Ich sagte es schon einmal - PRs willkommen. Ich stimme zu, dass viele Dinge poliert werden müssen, aber leider habe ich wenig Zeit, mich mit diesem Geldautomaten zu beschäftigen.

In einem ähnlichen Zusammenhang - eine Alternative zum Präfix wären alternative Tastenkombinationen (wie C-x 4 f ), die an alternative Befehle gebunden sind.

@expez Ich habe dies sowohl für jump-to-var als auch für jump-to-resource, aber es hängt von # 1031 ab, also müssen wir abwarten, wie das geht. Nicht cool, Anfragen zu stapeln. In der Zwischenzeit ist es in meinem Repo, wenn Sie es wollen.

@EricGebhart super ! :+1: Ich habe gerade ein weiteres Problem mit dem Code geöffnet, den Sie gerade berühren, wenn Sie mehr tun möchten :)

Kombinieren Sie cider-jump-to-var und cider-jump-to-resource : https://github.com/clojure-emacs/cider/issues/1032

Soweit ich das beurteilen kann, bedeutet dies, dass ich jetzt M- muss. (Apfelwein-Sprung) dann Return drücken, um zu springen. Dies ist kaum eine Verbesserung gegenüber der einfachen Eingabe von M-. - Gibt es eine alternative Funktion, die ich an M- binden kann. ?

Dies ist kaum eine Verbesserung gegenüber der einfachen Eingabe von M-. -

Es ist eine große Verbesserung, wenn Sie die richtigen Vervollständigungen erhalten (siehe # 699). Die Liste der Standardvervollständigungen sollte nicht nur das Symbol am Punkt enthalten, sondern auch den umgebenden Funktionsaufruf, die Klasse oder die Methode.

Die eigentliche Vervollständigungsliste sollte idealerweise alle innerhalb einer Sitzung definierten Symbole enthalten.

Ich hätte trotzdem gerne eine schnelle Möglichkeit, zum Symbol unter dem Punkt zu navigieren,
ohne eine Mini-Puffer-Eingabeaufforderung zu erhalten - gibt es eine Möglichkeit, dies zu tun
erreicht? nrepl-jump ist das Ding, das ich 10 Mal pro Minute benutzt habe, also bin ich es nicht
überhaupt glücklich mit dieser Änderung.

Am 23. März 2015 um 19:28 schrieb Vitalie Spinu [email protected] :

Dies ist kaum eine Verbesserung gegenüber der einfachen Eingabe von M-. -

Es ist eine große Verbesserung, wenn Sie die richtigen Vervollständigungen erhalten (siehe #699
https://github.com/clojure-emacs/cider/issues/699). Die Standardliste
Vervollständigungen sollten nicht nur das Symbol am Punkt enthalten, sondern auch die
umgebenden Funktionsaufruf, Klasse oder Methode.

Die eigentliche Vervollständigungsliste sollte idealerweise alle definierten Symbole enthalten
innerhalb einer Sitzung.


Antworten Sie direkt auf diese E-Mail oder zeigen Sie sie auf GitHub an
https://github.com/clojure-emacs/cider/issues/1014#issuecomment -85158715
.

Mit #1036 könnten wir die zusätzliche Bindung verwenden, um eine Funktion aufzurufen, die nicht auffordert. Jump-to-resource-or-var ist derzeit beiden Tastenkombinationen in dieser Anfrage zugeordnet. Wir könnten die beiden Bindungen für eine verwenden, die auffordert, und eine, die dies nicht tut.

Es wäre auch schön, die anderen Abschlusswerte für denjenigen zu erhalten, der auffordert. Ein Schritt auf einmal.

Also, wenn Sie die Wahl hätten. M-. oder Cc M-. Eines, das auffordert, und eines, das nicht auffordert. Ich würde M- wählen. veranlassen. Aber das liegt daran, dass ich die Version ohne Eingabeaufforderung ärgerlich finde. @danskarda könnte auch an diesem Thread interessiert sein.

Wenn ich die Wahl hätte, definitiv M-. für die No-Prompt-Version, wie es war
Vor. Ich weiß, dass jeder einen einzigartigen Entwicklungsstil hat, aber für mich
nrepl-jump macht 75 % des Wertes von CIDER aus – ohne würde ich gar nicht
Cider installieren. Ich bin sicher, dass andere, die noch nicht aktualisiert haben, sich darüber beschweren werden
die Regression bestehender Funktionalität, um schnell in ein Symbol zu springen.

Am 23. März 2015 um 21:26 schrieb Eric Gebhart [email protected] :

Also, wenn Sie die Wahl hätten. M-. oder Cc M-. Eine, die auffordert und eine, die
fordert nicht auf. Ich würde M- wählen. veranlassen. Aber das ist, weil ich finde
die Non-Prompt-Version nervt. @danskarda https://github.com/danskarda
könnte dieser Thread auch interessieren.


Antworten Sie direkt auf diese E-Mail oder zeigen Sie sie auf GitHub an
https://github.com/clojure-emacs/cider/issues/1014#issuecomment -85205027
.

OK. Ich denke, wir müssen uns dann mit der Implementierung einer Benutzeroption befassen, aber das würde wieder einen hässlichen Code ergeben.

Ich hätte trotzdem gerne eine schnelle Möglichkeit, zum Symbol unter dem Punkt zu navigieren,

Sie ignorieren die Zeit, die benötigt wird, um zum gewünschten Symbol zu navigieren und dann zurück zu dem Punkt, an dem Sie sich vor der Anfrage befanden.

definitiv M-. für die No-Prompt-Version,

Alle emacs arbeiten prompt, und das aus guten Gründen (siehe noch einmal #699). Ich hoffe also, dass wir das nicht rückgängig machen.

Alle emacs arbeiten prompt, und das aus guten Gründen (siehe noch einmal #699). Ich hoffe also, dass wir das nicht rückgängig machen

Sie zitieren hier _Ihre eigenen Kommentare_.

Alle Emacs arbeiten mit Eingabeaufforderung??? Nein tut es nicht. Zum Beispiel bringt Strg-F keine Eingabeaufforderung. Es wäre ernsthaft ärgerlich, wenn Sie fragen würden, wie viele Zeichen Sie vorrücken möchten.

Ich ärgere mich darüber. Es hat meinen Entwicklungsfluss heute Abend ernsthaft gestört, ich konnte mich einfach nicht auf das Schreiben von Code konzentrieren, weil diese Änderung mich zwang, nach einer Problemumgehung zu suchen, was mich zu diesem Problem führte.

Wenn Sie mit der Behebung von Problemen herumspielen, tun Sie dies mit neuen Tastenkombinationen und überzeugen Sie die Leute, zu migrieren. Tastenbelegungen liegen mir sehr am Herzen, sie sind mit meinem Muskelgedächtnis verdrahtet, einige von ihnen verwenden Emacs seit mehr als 20 Jahren. Ich kann mich nicht erinnern, dass sich eine Veränderung jemals so unwillkommen angefühlt hätte. Und früher oder später wird meine Erfahrung von möglicherweise Hunderten, vielleicht Tausenden anderer Clojure-Emacs-Entwickler wiederholt, die sich auf das aktuelle „Feeling“ von nrepl-jump verlassen. Daher denke ich, dass dies eine Überlegung wert ist. Wenn ich alleine hier bin, dann hacke ich einen Workaround. Aber meine Vorhersage ist, dass andere auf diesen Thread springen und sich darüber beschweren werden, weil es ein echtes Ärgernis ist. Die Leute verwenden CIDER, um echte Arbeit zu erledigen. Es ist ein großes Ärgernis, wenn CIDER-Entwickler etwas tun, das Ihnen den Boden unter den Füßen wegzieht.

Warum haben Sie nicht einfach eine Benutzeroption, wann die Eingabeaufforderung angezeigt werden soll? Es scheint, als würden die meisten Leute nur wollen, dass alle Befehle konsistent auf eine von drei Arten funktionieren:

  • always : Das neue Verhalten zeigt immer die Eingabeaufforderung, aber standardmäßig das Symbol am Punkt
  • dwim : Zeigt die Eingabeaufforderung nur an, wenn die Verwendung des Symbols an der Stelle fehlgeschlagen ist
  • never : Probieren Sie einfach das Symbol an der Stelle aus und fragen Sie nie nach

Ich werde morgen eine PR dafür machen, wenn das vernünftig klingt.

Klingt vernünftig. Ich kann akzeptieren, dass die neue Funktionalität nützlich ist, wenn sich Ihr Punkt nicht auf einem Symbol befindet. Aber wenn ja, dann ist es furchtbar nervig, nach einer Bestätigung zu fragen. nrepl-jump ist ein so wichtiger Navigationsbefehl für den Clojure-Entwickler, wenn Sie große Projekte haben, es ist nicht so etwas wie das Suchen einer Datei, in der eine Eingabeaufforderung erwartet wird. Ihre 'dwim'-Option scheint also der vernünftigste Kompromiss zu sein, der zweit sinnvollste ist die Bereitstellung von Benutzeroptionen - aber der Vorbehalt ist, dass es eine weitere Sache ist, bei der Entwickler voneinander abweichen können, und das macht die Arbeit an den Emacs-Setups anderer Leute etwas unangenehmer.

@chichli Schlägst du vor, dass wir eine Einstellung für diese drei Möglichkeiten haben?

Klingt vernünftig. Ich kann akzeptieren, dass die neue Funktionalität nützlich ist, wenn sich Ihr Punkt nicht auf einem Symbol befindet. Aber wenn ja, dann ist es furchtbar nervig, nach einer Bestätigung zu fragen.

Es ist auch die Norm in Emacs. :-) Aber ja - ich bin damit einverstanden, eine Konfiguration dafür zu haben, und ich habe sie bereits vorgeschlagen. Der vorherige Ausfall war eine etwas bedauerliche Entscheidung, aber ich denke, es ist den Leuten gewachsen.

@cichli Grünes Licht von mir für die vorgeschlagene Änderung.

Es ist auch die Norm in Emacs

Sowohl Sie als auch @vspinu scheinen zu glauben, dass dies der Fall ist, aber ich denke nicht, dass dies richtig ist. Emacs hat zwei Klassen von Sprungbefehlen:

  1. find-library , find-function , find-variable usw., die immer eine Eingabeaufforderung darstellen, aber alles verwenden, was aktuell ist, um einen guten Standardwert bereitzustellen.
  2. Befehle nach dem Vorbild von find-tag , die auf das Symbol an diesem Punkt einwirken und zu dieser Stelle springen.

Alle Programmiermodi, die ich regelmäßig verwende, haben eine Variante von find-tag . Und die traditionelle Tastenkombination ist M-. (da find-tag diese verwendet). Hier sind ein paar Beispiele:

robe-jump für Ruby, elisp-slime-nav für Elisp, slime-nav für Common Lisp, tern-find-definition für Javascript und vorher cider-jump-to-var für Clojure.

Ich denke, wir sollten etwas hinzufügen, das 1) abdeckt, und die Funktionalität in 2) intakt lassen (mit Ausnahme dieser Anfrage für eine Variante von find-tag-other-window ).

Einige Beispiele für nützliche find-* , die wir verwenden könnten, um 1) zu lösen, sind find-ns und find-var . find-ns ist ein vollständiger Lesevorgang aller verfügbaren Namespaces und find-symbol ist ein vollständiger Lesevorgang der Vereinigung aller öffentlichen Variablen.

Befehle nach dem Vorbild von find-tag, die auf das Symbol an diesem Punkt einwirken und zu dieser Stelle springen.

Tut mir leid, Sie diesbezüglich zu korrigieren, aber find-tag in Emacs fordert tatsächlich auf.

robe-jump für ruby, elisp-slime-nav für elisp, slime-nav für common lisp, tern-find-definition für javascript und zuvor cider-jump-to-var für clojure.

Nur eine Vermutung, es begann mit Schleim und alle anderen entfalteten sich. Wenn Sie das Standardverhalten in CIDER beibehalten, wird das Problem weiter verwurzelt.

Wenn Sie einen Slime-Hintergrund haben, ist es wirklich schwierig für Sie, die Ineffizienz dieses Paradigmas zu erkennen. Sie können das Problem deutlich sehen, wenn Sie ganz neu darin sind. Es ist besonders schlecht für Dokumentationsbefehle.

Ich hasse es, mich zu wiederholen, aber denken wir kurz nach, wie navigiert man zum Symbol? Wahrscheinlich Cn/Cp/Mf ... oder ich suche dann M-. . Ist es nicht besser, M- zu treffen? Geben Sie zuerst ein paar Buchstaben ein (ido angenommen) und dann RET ? Riesiger Bonus - es hält Ihren Arbeitsplatz intakt!

[...] wie navigiert man zum Symbol?

Ich verwende ace-jump , aber ich verstehe, worauf Sie hinauswollen. Ein sehr großer Teil meiner Verwendung besteht tatsächlich darin, das Symbol nachzuschlagen, das ich gerade geschrieben habe, um die Frage zu beantworten: "Tut das wirklich das, was ich denke, dass es tut?".

Beim Lesen der Quelle habe ich mir tatsächlich angewöhnt, den Cursor zusammen mit meinen Augen zu bewegen, um das Springen zu erleichtern, wenn die Arbeit delegiert wird und ich diesem Codepfad folgen möchte. Offensichtlich sind einige schlechte Angewohnheiten tief verwurzelt, weil man immer auf den Punkt gehandelt hat.

Nur meine 0,02 $, aber als Benutzer von M-. Vor allem im Zusammenhang mit TAGS-indizierten C-Projekten begrüße ich es, das Zielsymbol an der Eingabeaufforderung auswählen zu können, anstatt nur zu dem springen zu können, was ich textlich zur Hand habe. Ein extra RET dauert überhaupt nicht lange und ich verstehe ehrlich gesagt das Geländer dagegen nicht.

Ich würde stark für den obigen Vorschlag von @cichli stimmen und den Schmerz von @malcolmsparks fühlen, wenn auch nicht ganz so viszeral.

@malcolmsparks danke, dass du so stark darüber gestritten hast, das ist auch für mich wichtig.

+1 @malcolmsparks Dies ist für eine reibungslose Entwicklung unerlässlich. Es klingt nach einem polarisierenden Thema, daher klingt die Option, den Standardschlüssel nach Wahl des Benutzers an eines der beiden Verhaltensweisen zu binden, nach dem sinnvollsten Ansatz.

Ich mag auch die neue Standardeinstellung nicht.

Wenn Sie einen Slime-Hintergrund haben, ist es wirklich schwierig für Sie, die Ineffizienz dieses Paradigmas zu erkennen. Sie können das Problem deutlich sehen, wenn Sie ganz neu darin sind.

Hast du einen Slime-Hintergrund? Ich denke, Sie unterschätzen stark, wie störend es ist, eine Eingabeaufforderung ständig doppelt überprüfen zu müssen, wenn Sie schnell M-. und M-, verwenden, um herumzuspringen. Normalerweise verwende ich M-. mehrmals schnell hintereinander, während ich dem Codefluss mehrere Ebenen nach unten folge, also ist es nicht nur ein zusätzlicher Tastendruck, sondern das Doppelte einer willkürlichen Anzahl von Tastenanschlägen.

Ich möchte auch die erneute Aktivierung der Option never anfordern. Ich verwende M-. häufig nur, um herauszufinden, ob eine bestimmte Variable definiert ist (zum Beispiel, wenn ich nicht sicher bin, ob ich mich an den Namen einer Funktion richtig erinnere). Eine Eingabeaufforderung, wenn keine var vorhanden ist, bedeutet zusätzliche C-g , um aus dem nutzlosen Eingabeaufforderungsmodus herauszukommen.

Ich möchte auch die erneute Aktivierung der Nie-Option anfordern. Ich benutze häufig M-. nur um herauszufinden, ob eine bestimmte Variable definiert ist (zum Beispiel, wenn ich nicht sicher bin, ob ich mich an den Namen einer Funktion richtig erinnere). Eine Eingabeaufforderung, wenn keine var vorhanden ist, bedeutet ein zusätzliches Cg, um aus dem nutzlosen Eingabeaufforderungsmodus herauszukommen.

Dies steuert mehr als nur M-. , also wird es nicht passieren. Ich habe das schon oft gesagt - die Leute denken an diese Befehle als etwas, das nur an einem bestimmten Punkt funktionieren soll, aber das sind sie nicht. Meiner Meinung nach ist es ziemlich praktisch, nicht zu etwas gehen zu müssen, um seinen Code oder seine Dokumentation zu sehen.

Wenn Sie es nicht mögen, ändern Sie es einfach - es ist aus einem bestimmten Grund konfigurierbar. :-)

Hast du einen Slime-Hintergrund? Ich denke, Sie unterschätzen stark, wie störend es ist, eine Eingabeaufforderung ständig doppelt überprüfen zu müssen, wenn Sie M- schnell verwenden. und M-, um herumzuspringen. Ich benutze normalerweise M-. mehrmals in schneller Folge, während ich dem Codefluss mehrere Ebenen nach unten folge, also ist es nicht nur ein zusätzlicher Tastendruck, es ist das Doppelte einer beliebigen Anzahl von Tastenanschlägen.

Ja, ich will. Ich benutze es seit über 5 Jahren. Aus diesem Grund wurde ein Großteil der Funktionalität in CIDER ursprünglich nach SLIME modelliert. Aber CIDER ist seine eigene Anwendung und folgt seinem eigenen Weg - die Tatsache, dass sich etwas in SLIME auf irgendeine Weise verhält, macht es nicht zum besten/richtigen Weg. Es gibt viele Leute, die mit einigen Entscheidungen von SLIME unzufrieden sind (die schließlich zur Gründung des SLY-Projekts führten).

Was die Usability-Probleme der Standardeinstellung betrifft - es ist nur ein weiterer Tastendruck. Ich programmiere viel in Emacs Lisp und bin daran gewöhnt, da es das Standardverhalten von Emacs für Befehle wie find-tag , describe-function usw. ist.

Die Leute halten diese Befehle für etwas, das nur an einem bestimmten Punkt funktionieren soll, aber das sind sie nicht

Wenn die Leute so über sie denken, warum nicht das Verhalten beibehalten, das die Leute erwarten? Das Prinzip der geringsten Überraschung würde vorschreiben, dass die Software, wenn es eine weit verbreitete Erwartung gibt, diese erfüllen sollte. Was ist gewonnen, wenn man dieses Prinzip hier absichtlich bricht?

Meiner Meinung nach ist es ziemlich praktisch, nicht zu etwas gehen zu müssen, um seinen Code oder seine Dokumentation zu sehen.

Einverstanden, aber es ist nicht erforderlich, eine vorhandene Tastenkombination aufzuheben, um diese neue Funktion hinzuzufügen. Warum nicht das alte Verhalten beibehalten, mit C-u M-. oder (meiner Meinung nach vorzugsweise, da es wirklich wenig Beziehung zwischen dem Nachschlagen des Symbols an diesem Punkt und dem Nachschlagen eines beliebigen Symbols gibt) einer anderen unabhängigen Tastenkombination für das neue Verhalten?

Wenn die Leute so über sie denken, warum nicht das Verhalten beibehalten, das die Leute erwarten? Das Prinzip der geringsten Überraschung würde vorschreiben, dass die Software, wenn es eine weit verbreitete Erwartung gibt, diese erfüllen sollte. Was ist gewonnen, wenn man dieses Prinzip hier absichtlich bricht?

Sie gehen davon aus, dass die meisten CIDER-Benutzer ehemalige SLIME-Benutzer sind und dass sie dieses spezielle SLIME-Verhalten tatsächlich genossen haben. Dies kann oder kann der Fall sein, aber wir müssen konkrete Daten haben, um eine solche Behauptung zu untermauern. Ich habe diese Änderung akzeptiert, als sie vorgeschlagen wurde, weil die Argumente dafür stark und vernünftig waren, nicht weil ich jemanden verärgern wollte. Den Menschen wurde die Möglichkeit gegeben, das alte Verhalten beizubehalten, daher sehe ich nicht, was es noch zu diskutieren gibt für eine so triviale Änderung.

Einverstanden, aber es ist nicht erforderlich, eine vorhandene Tastenkombination aufzuheben, um diese neue Funktion hinzuzufügen. Warum nicht das alte Verhalten beibehalten, mit Cu M-. oder (IMO vorzugsweise, da es wirklich wenig Beziehung zwischen dem Nachschlagen des Symbols an diesem Punkt und dem Nachschlagen eines beliebigen Symbols gibt) eine andere nicht verwandte Tastenkombination für das neue Verhalten?

Wir haben das auch besprochen, aber wir sind schon knapp an (guten) freien Tastenbelegungen und wir müssen die vorhandenen tatsächlich komprimieren (indem wir sie in Submaps packen). Es gibt nur wenige Tasten auf einer Tastatur. :-)

PS Wir haben den Befehlen, die von der Konfiguration betroffen sind, bereits Unterstützung für Präfix-Argumente hinzugefügt - sie kehren das konfigurierte Verhalten um, was meiner Meinung nach ein ziemlich gutes Setup ist.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen

Verwandte Themen

Reefersleep picture Reefersleep  ·  8Kommentare

xificurC picture xificurC  ·  5Kommentare

vijaykiran picture vijaykiran  ·  9Kommentare

oskarkv picture oskarkv  ·  5Kommentare

lilactown picture lilactown  ·  5Kommentare