FHEM Forum

FHEM => Frontends => Thema gestartet von: Benni am 01 Juni 2016, 22:03:07

Titel: codemirror - jump to line
Beitrag von: Benni am 01 Juni 2016, 22:03:07
Hallo rapster,

von betateilchen wurde in einem anderen Thread (https://forum.fhem.de/index.php/topic,54055.msg457242.html#msg457242) 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 (https://codemirror.net/doc/manual.html#addons) 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.

Titel: Antw:codemirror - jump to line
Beitrag von: rapster am 01 Juni 2016, 23:55:41
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
Titel: Antw:codemirror - jump to line
Beitrag von: Benni am 02 Juni 2016, 06:58:56
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 (https://codemirror.net/doc/manual.html#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!
Titel: Antw:codemirror - jump to line
Beitrag von: betateilchen am 02 Juni 2016, 11:14:21
Das ging ja schnell :) Super, danke!
Titel: Antw:codemirror - jump to line
Beitrag von: rapster am 02 Juni 2016, 18:42:56
 :)

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.
Titel: Antw:codemirror - jump to line
Beitrag von: betateilchen am 02 Juni 2016, 22:42:32
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...)
Titel: Antw:codemirror - jump to line
Beitrag von: Benni am 03 Juni 2016, 10:22:38
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 (https://codemirror.net/doc/manual.html#vimapi) 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 (https://codemirror.net/keymap/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.
Titel: Antw:codemirror - jump to line
Beitrag von: justme1968 am 03 Juni 2016, 10:32:42
ja. bitte.

gruss
  andre
Titel: Antw:codemirror - jump to line
Beitrag von: Elektrolurch am 03 Juni 2016, 11:29:36
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

Titel: Antw:codemirror - jump to line
Beitrag von: rapster am 03 Juni 2016, 13:12:45
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
Titel: Antw:codemirror - jump to line
Beitrag von: justme1968 am 03 Juni 2016, 14:21:18
klasse. funktionier wunderbar.

danke
  andre
Titel: Antw:codemirror - jump to line
Beitrag von: Benni am 03 Juni 2016, 16:15:14
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.

Titel: Antw:codemirror - jump to line
Beitrag von: Elektrolurch am 03 Juni 2016, 17:17:42
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
Titel: Antw:codemirror - jump to line
Beitrag von: marvin78 am 03 Juni 2016, 17:23:38
@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)
Titel: Antw:codemirror - jump to line
Beitrag von: rapster am 03 Juni 2016, 17:47:04
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" }
Titel: Antw:codemirror - jump to line
Beitrag von: rapster am 03 Juni 2016, 17:52:17
Dein Attribut JavaScripts muss so aussehen, wie im Wiki beschrieben (seh da grad keinen Fehler :o), z.B so:
attr TYPE=FHEMWEB JavaScripts codemirror/fhem_codemirror.js

Das mit dem Bildschirmflackern ist mir noch nicht aufgefallen...

PS, wenn du ein codemirrorParam oder JavaScripts Attribut änderst, musst du FHEM nicht neustarten, es reicht die Seite im Browser zu reloaden, evtl. mit SHIFT+F5 reloaden.

Titel: Antw:codemirror - jump to line
Beitrag von: rapster am 03 Juni 2016, 17:56:39
Zitat von: Benni am 03 Juni 2016, 16:15:14
Super! Es gibt wohl doch ein paar mehr vim-Fans hier als gedacht ;)
Mindestens der vi ist eigentlich auf jeder Büchse drauf, evtl. kann man auch sagen "Man gewöhnt sich dran" ;D

Gruß
Claudiu
Titel: Antw:codemirror - jump to line
Beitrag von: Elektrolurch am 03 Juni 2016, 21:04:24
Zitat @rapster:
attr TYPE=FHEMWEB JavaScripts codemirror/fhem_codemirror.j

jetzt bin ich aber ganz verwirrt. Wo setze ich dann den Parameter, damit der goto Line - Befehl für den CodeMirror aktiviert wird?
Irgendwie war bezüglich des wiki-Artikels vom CodeMirror die Angaben nicht eindeutig oder mir entgeht da was, weil es in einem Bild steckt?

Elektrolurch
Titel: Antw:codemirror - jump to line
Beitrag von: rapster am 03 Juni 2016, 21:17:18
Dein Text verwirrt mich allerdings auch grad  ;D
Was für goto line Befehl? Aktiviert wird Codemirror von fhemweb.js, gabs da mal was mit goto :o  :D

Im Wiki http://www.fhemwiki.de/wiki/Konfiguration#Syntaxhervorhebung stehts doch genauso wie hier im Thread, oder bin ich blind :-)

Die Code Zeile die du kopiert hast, kannst du so bei dir in die cmd-line eintragen damit codemirror aktiviert wird.

Gruß
Claudiu
Titel: Antw:codemirror - jump to line
Beitrag von: rapster am 03 Juni 2016, 21:20:33
Evtl. könnte Rudi auch ein extra Attribut für codemirror einbauen, damit es einfach aktiviert werden kann ohne irgend einen Pfad kopieren zu müssen...
Titel: Antw:codemirror - jump to line
Beitrag von: betateilchen am 03 Juni 2016, 21:24:29
Zitat von: Elektrolurch am 03 Juni 2016, 21:04:24
jetzt bin ich aber ganz verwirrt. Wo setze ich dann den Parameter, damit der goto Line - Befehl für den CodeMirror aktiviert wird?

Du musst zuerst FHEMWEB mitteilen, dass Du codemirror überhaupt verwenden möchtest:

attr TYPE=FHEMWEB JavaScripts codemirror/fhem_codemirror.js

Erst dann kannst Du dem Editor überhaupt Parameter mitgeben, z.B. das jumpToLine:

attr TYPE=FHEMWEB codemirrorParam { "jumpToLine":true }

Du musst also in FHEMWEB zwei Attribute anpassen, um mit codemirror und jumpToLine zu arbeiten. Wenn Du nur die zweite Zeile eingibst, tut sich gar nichts, weil codemirror überhaupt nicht existiert.
Titel: Antw:codemirror - jump to line
Beitrag von: betateilchen am 03 Juni 2016, 21:25:24
Zitat von: rapster am 03 Juni 2016, 21:20:33
Evtl. könnte Rudi auch ein extra Attribut für codemirror einbauen, damit es einfach aktiviert werden kann ohne irgend einen Pfad kopieren zu müssen...

Das würde seiner Logik der nachladbaren js-Module widersprechen. Die Diskussion gab es schonmal.
Titel: Antw:codemirror - jump to line
Beitrag von: rapster am 03 Juni 2016, 21:28:13
Ah Okay, Danke für die Info ;)
Dann will ich mal die Diskussion nicht erneut antreten  ;D
Titel: Antw:codemirror - jump to line
Beitrag von: Elektrolurch am 04 Juni 2016, 16:57:59
Zitat:
Du musst zuerst FHEMWEB mitteilen, dass Du codemirror überhaupt verwenden möchtest:

Code: [Auswählen]
attr TYPE=FHEMWEB JavaScripts codemirror/fhem_codemirror.js

Erst dann kannst Du dem Editor überhaupt Parameter mitgeben, z.B. das jumpToLine:

Code: [Auswählen]
attr TYPE=FHEMWEB codemirrorParam { "jumpToLine":true }


Danke. Die Erklärung ist schlüssig und jetzt verstehe ich auch, wie es geht. Habe daraufhin noch Mal das wiki angesehen und daraus würde sich der Sachverhalt meiner Meinung nach so nicht erschliesen.
Ich bin davon ausgegangen, dass das "normale" Editierfeld bereits codemirror ist....

Nun geht es, aber leider nicht mit meinem Screenreader, der übernimmt nicht die Positionierungen auf dem Scrren. Vermutlich ist das ein prinzipielles Problem mit JavaScript - Anwendungen. Da gibt es so gut wie keine Zugriffsmöglichkeiten für Screenreader, es sei denn, der Java-Programmierer hat die Accessbridge  von Oracle mit eingebunden.

Trotzdem vielen Dank. Manchmal hängt es an ganz einfachen Dingen, da hilft auch 10x Lesen nicht.

Elektrolurch
Titel: Antw:codemirror - jump to line
Beitrag von: Benni am 05 Juni 2016, 07:23:42
Hallo Claudiu,

ich konnte das keyMap-Problem (s. bspw. hier: https://forum.fhem.de/index.php/topic,54253.msg458587/topicseen.html#msg458587)
bei mir inzwischen nachvollziehen.

Du belegst den Parameter keyMap in Zeile 19 per Default mit false

keyMap:              false,                                             


wenn ich diese Zeile rausnehme, dann funktioniert alles wieder so wie es soll, auch dann, wenn kein keyMapping verwendet verwendet wird/werden soll.

Eventuell ist auch das hier interessant: https://forum.fhem.de/index.php/topic,54253.msg458647.html#msg458647
Kann es sein, dass u.U. irgendwelche Browser-Erweiterungen hier in die Suppe spucken?
Gruß Benni.
Titel: Antw:codemirror - jump to line
Beitrag von: rapster am 05 Juni 2016, 16:43:45
Habs eingecheckt.
Denke dass keyMap von Codemirror selber schon in irgend einer Form verwendet wird.
Bei mir ist mir allerdings immer noch kein Problem aufgefallen :-)

Gruß Claudiu
Titel: Antw:codemirror - jump to line
Beitrag von: Benni am 05 Juni 2016, 16:47:08
Danke dir!  :)

Das Problem ist bei mir direkt nach FHEM-Update auf meiner Test- und Entwicklungsinstanz aufgetreten.

Gruß Benni.