Im Forum frameusers-de kam die Frage auf nach einem Tastaturkürzel, mit dessen Hilfe man nur den Inhalt eines Elements markieren könnte.
Markus Wiedenmaier präsentierte daraufhin eine Lösung mit ExtendScript für FrameMaker 10, seinen Code habe ich nach FrameScript übertragen, die wichtigsten Zeilen folgen. Die aktuelle Version kann hier geladen werden:
Das Skript muss installiert werden und erstellt zur Zeit zwei Menüpunkte am Ende des Menüs „Element“, die Tastenkürzel sind Esc h e t
(highlight element text) bzw. Esc h e c
(highlight element content).
Event Initialize
If (Session.ProductIsStructured)
Local lvMenu lvCmd;
Get Object Type(Menu) Name('ElementMenu') NewVar(lvMenu);
New Command Name('SWAT_CMD_SELECTELEMENTTEXT')
Label('Select text node') Shortcut('\!het')
NewVar(lvCmd) EventProc(SelectText)
AddTo(lvMenu) EnabledWhen(EnableNeedsDocpOnly);
Set lvCmd.KeyboardShortcutLabel = 'Esc h e t';
New Command Name('SWAT_CMD_SELECTELEMENTCONTENT')
Label('Select element content') Shortcut('\!hec')
NewVar(lvCmd) EventProc(SelectContent)
AddTo(lvMenu) EnabledWhen(EnableNeedsDocpOnly);
Set lvCmd.KeyboardShortcutLabel = 'Esc h e c';
EndIf
EndEvent
Event SelectText
Local lvDoc(Session.ActiveDoc);
Local lvSel(lvDoc.ElementSelection);
Set lvSel.Begin.Offset = 0;
Set lvSel.End.Offset = ObjEndOffset;
Local lvTextRange;
// EUtl.Convert{} requires version 5
Set lvTextRange = EUtl.Convert{lvSel, 'TextRange'};
Set lvDoc.TextSelection = lvTextRange;
EndEvent
Event SelectContent
Local lvDoc(Session.ActiveDoc);
Local lvSel(lvDoc.ElementSelection);
Local lvCurrentElement;
If (lvSel.Begin.Child
and lvSel.Begin.Child.ElementDef
and lvSel.Begin.Offset = 0)
Set lvCurrentElement = lvSel.Begin.Child;
Else
Set lvCurrentElement = lvSel.Begin.Parent;
EndIf
Local lvTextRange;
Set lvTextRange = lvCurrentElement.TextRange;
Set lvTextRange.Begin.Offset = lvTextRange.Begin.Offset + 1;
Set lvDoc.TextSelection = lvTextRange;
EndEvent