codemirror - jump to line

Begonnen von Benni, 01 Juni 2016, 22:03:07

Vorheriges Thema - Nächstes Thema

Benni

Hallo rapster,

von betateilchen wurde in einem anderen Thread die Möglichkeit erwähnt, in codemirror mittels Alt+G eine bestimmte Zeile anspringen zu können, was aber weder bei mir, noch bei anderen Usern zu funktionieren scheint.

Laut codemirror-Homepage ist das auch als Addon konzipiert und das wird derzeit anscheinend nicht im codemirror in FHEM mitgeliefert.

Daher mal als freundliche Anfrage von mir: könntest du das evtl. in einem zukünftigen Release mit aufnehmen? Wäre schon ein äußerst praktisches Feature  8)

Noch eine Frage: Kann ich so ein Addon auch selbst einbinden und wenn ja, wie?

Danke dir schon mal!  :)

VG Benni.


rapster

#1
Hi,

kannst du ab morgigem Update über den neuen codemirrorParam
jumpToLine:true
aktivieren. => http://www.fhemwiki.de/wiki/Konfiguration#Syntaxhervorhebung

Eine Funktion um weitere Addons dynamisch über ein codemirrorParam nachzuladen werde ich erstmal nicht reinbauen, da die Anfrage bisher auch sehr gering war :)
Nicht dass sonst z.B. eine neue codemirror Version eingecheckt wird und irgend ein altes Addon von jemanden zerlegt anschließend alles  ;D

Wünsche gerne posten, wenns schnell gehen soll kannst du mir auch gerne einen vorher getesteten Patch zukommen lassen ;) (https://sourceforge.net/p/fhem/code/11593/)

PS, ALT+G wird z.B. durch LastPass überschrieben und jump-to-line startet in dem Fall nicht. Muss ich mal guckn ob man den Key noch anpassen kann...

Gruß Claudiu

Benni

#2
Hallo Claudiu,

das ging ja mal flott!  :)

Vielen Dank!

Gruß Benni.

PS: Das keyMapping steckt ja, wenn ich es richtig sehe, direkt in jump_to_line.ps drin:

e.keyMap["default"]["Alt-G"]="jumpToLine"

und wenn ich es weiter richtig verstanden habe, lassen sich auch eigene keyMaps nachladen, ähnlich den Addons. Evtl. ließe sich das so, ggf. über eine FHEM-spezifische keyMap umbiegen.

PPS: Auf meinem Mac unter Chrome gibt es übrigens kein Problem mit LastPass!

betateilchen

Das ging ja schnell :) Super, danke!
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

rapster

#4
 :)

Ja richtig, das Keymap ist bei manchen Addons direkt im File konfiguriert, allerdings habe ich versucht bisher alle Addons nicht anzufassen um diese problemlos gegen neue Versionen von Codemirror tauschen zu können.

Habe eben noch den neuen codemirrorParam 'jumpToLine_extraKey' eingecheckt mit dem wie im Beispielbild eine andere Taste konfiguriert werden kann.

betateilchen

#5
komisch... gleiche Konfiguration auf zwei Sytemen. Auf einem funktioniert das jumpToLine, auf dem anderen nicht.

edit: spontane Wunderheilung? (vermutlich eher ein Cache-Problem der js-Dateien...)
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Benni

Hallo Claudiu,

habe gestern beim Stöbern auf der Codemirror-Homepage entdeckt, dass es auch ein relativ umfangreiches keyMapping für einen quasi VIM-Modus gibt, was mir als VIM-Fan echt gut gefällt.

Ich habe es zwischenzeitlich auch hinbekommen, das Mapping analog zu den Addons in fhem_codemirror.js zu laden. Asserdem muss noch das cm_Attribut keyMap auf "vim" gesetzt werden. Und de vim.js habe ich nach /opt/fhem/www/codemirror kopiert

Bei mir läuft das inzwischen und ich find's nur gut!

Auszug meiner Änderung aus fhem_codemirror.js:


     if (cm_attr.keyMap) {
         cm_active++; loadScript("codemirror/"+cm_attr.keyMap+".js", function(){cm_loaded++;} );
     }


Du ahnst was jetzt kommt? ....  8)

Da die vim.js aber relativ groß ist, sehe ich ein, dass du die wahrscheinlich nicht standardmäßig mit ausliefern willst, zumal die vim-fans wohl auch eher wenige sein dürften.

Allerdings wäre es schön, wenn man die fhem_codmirror.js, wie o.a. (oder ähnlich) erweitern könnte, damit ich die Änderung nicht nach jedem Update wieder manuell einfügen muss. Das ganze dürfte so ja nur Auswirkungen haben, wenn das Attribut keyMap (auf "vim") gesetzt ist. Wenn dann die vim.js vorhanden ist würde sie auch geladen. Fehlt sie in diesem Fall, lädt allerdings codemirror aufgrund des Fehlers überhaupt nicht. Evtl. lässt sich ja vor loadScript auch noch prüfen, ob die Datei überhaupt vorhanden ist. (Sorry, aber javaScript ist leider nicht so meins).

VG Benni.

justme1968

hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Elektrolurch

Zitat:
Das ging ja schnell...

Dafür habe ich mich gestern anraunzen lassen müssen, dasws ich Codemirror nicht kannte. Der Punkt war zwar in Zusammenhang mit der configdb z.T. oof-Topic, aber anscheinend bin ich nicht der einzige gewesen, für den diese Feature Neuland waren.
Manchmal sind die zunächst scheinbar "dummen" Fragen doch befruchtend...

Ich hatte natürlich das auch gleich ausprobieert und auch bei mir ging alt+g nicht. Dachte schon, es läge mal wieder an meiner "Unfähigkeit" und habe mich dann schon gar nicht mehr getraut, noch Mal nachzufragen.

Elektrolurch

configDB und Windows befreite Zone!

rapster

Hi,

sehr cool das mit der vim.js, da ich auch sehr gerne vim verwende wurde es direkt mal aktiviert  :)

Habe deinen Vorschlag und eine minimized Version der vim.js (69KB) vorhin eingecheckt.

Kann über den codemirrorParam
{ "keyMap":"vim" }
aktiviert werden, oder ein anderes keyMap.js File welches vom user in fhem/www/codemirror/<keyMapName>.js abgelegt wurde.

Werde nicht prüfen ob es die Datei gibt, ist das selbe wie ein Tippfehler im codemirrorParam, codemirror läd in dem Fall einfach nicht und der Fehler wird in der JS Konsole angezeigt.
Fhem bleibt ja weiterhin voll Funktionsfähig und editierbar.


@Elektrolurch: Klappt es denn nun mit dem codemirrorParam jumpToLine_extraKey?

Gruß
Claudiu

justme1968

klasse. funktionier wunderbar.

danke
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Benni

#11
Zitat von: rapster am 03 Juni 2016, 13:12:45
Habe deinen Vorschlag und eine minimized Version der vim.js (69KB) vorhin eingecheckt.

Super! Es gibt wohl doch ein paar mehr vim-Fans hier als gedacht ;)
Und wieder extra schnell umgesetzt! 8)

Vielen Dank!
Gruß Benni.


Elektrolurch

Zitat:
@Elektrolurch: Klappt es denn nun mit dem codemirrorParam jumpToLine_extraKey?

Gruß
Claudiu

Leider nicht.
Habe:
attr WEB JavaScripts codemirrorParam jumpToLine:true
gesetzt. Tut sich aber auch nach einem Neustart von Browser und fhem nichst, wenn ich alt+g eingebe.
Im wiki-Beitrag zum CodeMirror scheint mir das im übrigen auch noch falsch angegeben zu sein, demnach müsste man "attr WEB codemirrorParam ..." angeben, was aber kein Attribut von WEB ist.
Was mache ich da falsch?

Außerdem ist mir aufgefallen, dass seit dem gestrigen Update der fhemweb.js bei jedem Bildschirmaufbau es ziemlich flackert, dh. es erscheint für eine deutliche Zeitspanne ein weißer Hintergrund, bevor der Screen wieder aktualisiert wird.

Elektrolurch
configDB und Windows befreite Zone!

marvin78

@Elektrolurch: codemirrorParam ist ein FHEMWEB Attribut und du solltest es so angeben:

attr WEB codemirrorParam {"jumpToLine":true}

JavaScripts ist ebenfalls ein FHEMWEB Attribut:

attr WEB JavaScripts codemirror/fhem_codemirror.js

(absichtlich keine Code-Tags verwendet)

rapster

Ja richtig, codemirrorParam ist ein TYPE=FHEMWEB Attribut.

Das Attr codemirrorParam muss immer in {} eingeschlossen werden, also z.B.
attr TYPE=FHEMWEB codemirrorParam { "height":"auto", "jumpToLine":true, "jumpToLine_extraKey":"Alt-H", "keyMap":"vim" }