Hyperlinks für Funktions- und Ausdrucksaufrufe im SkripteditorWäre es im Skripteditor möglich, alle Aufrufe benutzerdefinierter Funktionen oder Ausdrücke als Hyperlinks zu gestalten?Zum Beispiel möchte ich irgendwo in meinem Skript auf eine Instanz von „myfunc“ klicken und mich vom Editor sofort zu der Stelle im Skript führen lassen, an der myfunc definiert ist.Und natürlich hätte ich auch gerne einen „Zurück“-Button, um zu der Stelle zurückzukehren, an der ich mich ursprünglich im Drehbuch befand.Das Gleiche gilt für Ausdrücke.
SkripterstellungBetreff: Hyperlinks für Funktions- und Ausdrucksaufrufe im SkripteditorHallo. Ich hoffe, es ist nicht zu spät dafür, aber ich wollte einfach noch mehr zu meiner ursprünglichen Wunschliste hinzufügen:
1. (bereits oben erwähnt) Durch Doppelklicken auf eine Benutzerfunktion oder einen Benutzerausdruck gelangt der Benutzer zur Definition im Skript.
2. (bereits oben erwähnt) Eine Schaltfläche „Zurück“, um den Benutzer zur ursprünglichen Position im Skript zurückzubringen.
3. (Neu) Durch einmaliges Klicken auf eine Benutzerfunktion, einen Ausdruck oder eine Variable werden automatisch alle Instanzen dieses Elements im Skript hervorgehoben.
4. (Neu) Eine Schaltfläche „Weiter“. Angenommen, der Benutzer hat auf Funktion A, dann auf B und dann auf C doppelgeklickt und dann „Zurück“ gedrückt, um zu Funktion B zurückzukehren. Mit der Schaltfläche „Weiter“ gelangen Sie zurück zu Funktion C.
5. (Neu) Wenn das Skriptfenster in zwei Teile geteilt wurde (z. B. rechts/links), möchte ich, dass die oben genannten Funktionen auf die aktuell aktive Teilung angewendet werden und nicht immer nur auf die Teilung auf der linken Seite.
6. (Neu) Ein Dropdown-Menü im Skriptfenster, das alle Benutzerfunktionen und -ausdrücke anzeigt. Wenn Sie eines auswählen, gelangt der Benutzer zu diesem Element im Skript.
Ich hoffe, diese machen Sinn und sind vernünftig. Danke!
Betreff: Hyperlinks für Funktions- und Ausdrucksaufrufe im Skripteditor – Status geändert in: BestätigtHallo @nikles , Danke für deinen Vorschlag! Wir haben Ihre Anfrage erfasst und werden sie prüfen.
Betreff: Hyperlinks für Funktions- und Ausdrucksaufrufe im SkripteditorEs wäre praktisch, eine benutzerdefinierte Funktion hervorzuheben und eine Funktionstaste zu drücken, um zur Definition zu gelangen.
Betreff: Hyperlinks für Funktions- und Ausdrucksaufrufe im SkripteditorHallo @gzmorgan0 Und @nikles , ich habe gerade eine aktualisierte Version des obigen Skripts veröffentlicht als JSL-Funktionsliste Add-in. Schauen Sie es sich an und lassen Sie mich wissen, wenn Sie Fragen haben.
Betreff: Hyperlinks für Funktions- und Ausdrucksaufrufe im SkripteditorDies ist eine Info zu dem, was ich heute verwende:
- Markieren Sie den Text und drücken Sie Strg+F oder Bearbeiten>Suchen>Suchen und drücken Sie Suchen, oder
- das Skript unten. Es handelt sich um ein Vorläuferskript eines JMP-Entwicklers. Er könnte eine aktualisierte Version haben, ich habe sie nicht in der Liste der freigegebenen Dateien und Add-Ins gesehen. Ich habe seinen Namen nicht gepostet, werde aber prüfen, ob er eine aktualisierte Version hat.Bei der Ausführung erstellt dieses Skript eine Anzeige aller derzeit geöffneten JSL-Skripte und listet die Zeilennummer der Funktionen auf. Durch einen Doppelklick gelangen Sie dorthin.
/*
Author: xxxxxx xxxxxxx
Copyright (c) 2016 by SAS Institute Inc., Cary, NC 27513, USA. All rights reserved.
*/
Names Default To Here( 1 );
getRoots = Function({searchCriteria=""},
wins = Window();
roots = {};
For( iWin = 1, iWin <= N Items( wins ), iWin++,
If( (wins[iWin] << window class name) == "Script",
tmpNode = Tree Node( wins[iWin] << Get Window Title );
tmpNode << Set Data( wins[iWin] );
tmpNode << Set Icon( "ScriptFile" );
If( searchCriteria != "",
If( !Contains( wins[iWin][Script Box( 1 )] << get text, searchCriteria ), Continue() )
);
lines = wins[iWin][Script Box( 1 )] << Get Lines();
For( iLine = 1, iLine <= N Items( lines ), iLine++,
fName = Regex( lines[iLine], "([a-z\d_\s]+)[\s]*=\s*function\s*\(", "\1", IGNORECASE );
/* () collect everything that matches this pattern [a-z alphabetical, \d digit, _ underscore, \s white space]
+ one or many, so there must be at least one of these items
[\s]* this is white space, but * says 0 or many
= must occur, that is, it is a part of the pattern
function must occur
\s* 0 or many instances of white space ( tab, space, new line)
( left parentheses is part of the pattern
If the pattern is found, \1 states to return the collection, that is the function name
*/
//"([a-z\d_=\s]+)[\s]*<<\s*xpath\s*\(", "\1", IGNORECASE );
If( !Is Missing( fName ),
tmpChildNode = Tree Node( Trim( fName ) || ": " || Char( iLine ) );
tmpChildNode << Set Data( iLine );
tmpChildNode << Set Icon( "FunctionIndex" );
tmpNode << Append( tmpChildNode );
);
);
Insert Into( roots, tmpNode );
)
);
Return(roots);
);
roots = getRoots();
goToLine = Function( {sb, lineNum},
sb << Set Line text( lineNum, sb << get line text(lineNum) );
);
nw = New Window( "JSL Function Manager",
H List Box(
Button Box("",<<SET icon=""></SET>