CamelCase Navigation

  • Hallo zusammen,
    man kann mit dem Tastenkürzel STRG+Pfeiltasten zu Wort-Ende bzw. Wort-Anfang springen. Da ich diese Funktion sehr oft nutze, möchte ich sie erweitern.
    Ich möchte auch zu Ende oder Anfang, von Wörtern die im CamelCase geschrieben sind, springen.
    Leider ist mir keine Funktion oder Programm bekannt welches dieses Problem löst. Also dachte ich an AutoIt!
    Die Funktion HotKeys zu erstellen gibt es ja, aber wie komm ich an die Position des Cursors? ?(

  • [autoit]


    #include <Array.au3>
    $aMousePos = MouseGetPos()
    _Arraydisplay($aMousePos)

    [/autoit]

    weitere Informationen findest du in der Hilfe

    Gruß Marvin

  • Ähh Protex?? Was hatte das jetzt mit dem Thema zu tun??
    @mnowack: Du müsstest dazu bei Auslösung der Tastenkombination überprüfen, ob sich der Benutzer gerade in einem Textfeld befindet, dann noch in welcher Position und dann über das nächste/vorherige Wort ein Regex laufen lassen, bspw.

    Code
    [A-z][a-z]+

    als Markierung eines Teilwortes. Ist ein bisschen Arbeit, denke ich...

    Twitter: @L3viathan2142
    Benutze AutoIt persönlich nicht mehr, da ich keinen Windows-Rechner mehr besitze.

  • Ich hab es jetzt mal mit dem Clipboard gemacht, ist nur ein Beispiel, funktioniert auch aber ist eigentlich nur ein Workarround, da es relativ langsam ist.
    Ich denke mal, das die die Scripting Leute wie Bugfix da andere Methoden kennen ;)

    Der Hotkey

    [autoit]

    HotKeySet("^{LEFT}", "Searchleft")

    [/autoit]


    funktioniert übrigens nicht, die STRG Taste bleibt dadurch hängen

    Spoiler anzeigen
    [autoit]

    HotKeySet("r", "Searchright")
    HotKeySet("e", "Searchleft")

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    Sleep(10)
    WEnd

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func Searchright()
    Local $preopt, $originalclipboard, $Clipget
    $preopt = Opt("KeyDownDelay")
    Opt("KeyDownDelay", 0)
    $originalclipboard = ClipGet()
    Send("{SHIFTDOWN}")
    Send("{Right}")
    Send("{SHIFTUP}")
    Send("^c")
    Send("^c")
    $Clipget = Asc(ClipGet())
    If $Clipget > 96 And $Clipget < 123 Then
    While 1
    Send("{Left}{Right}")
    Send("{SHIFTDOWN}")
    Send("{Right}")
    Send("{SHIFTUP}")
    Send("^c")
    Send("^c")
    $Clipget = Asc(ClipGet())
    Switch $Clipget
    Case 65 To 90
    Send("{LEFT}")
    ExitLoop
    Case 13
    Send("{LEFT}")
    ExitLoop
    Case 0
    ExitLoop
    EndSwitch
    ClipPut("")
    WEnd
    ElseIf $Clipget > 64 And $Clipget < 91 Then
    While 1
    Send("{Left}{Right}")
    Send("{SHIFTDOWN}")
    Send("{Right}")
    Send("{SHIFTUP}")
    Send("^c")
    Send("^c")
    $Clipget = Asc(ClipGet())
    Switch $Clipget
    Case 97 To 122
    Send("{LEFT}")
    ExitLoop
    Case 13
    Send("{LEFT}")
    ExitLoop
    Case 0
    ExitLoop
    EndSwitch
    WEnd
    EndIf
    ClipPut($originalclipboard)
    Opt("KeyDownDelay", $preopt)
    EndFunc ;==>Searchright

    [/autoit] [autoit][/autoit] [autoit]

    Func Searchleft()
    Local $originalclipboard, $Clipget, $preopt
    $originalclipboard = ClipGet()
    $preopt = Opt("KeyDownDelay")
    Opt("KeyDownDelay", 0)
    Send("{SHIFTDOWN}")
    Send("{LEFT}")
    Send("{SHIFTUP}")
    Send("^c")
    Send("^c")
    $Clipget = Asc(ClipGet())
    If $Clipget > 96 And $Clipget < 123 Then
    While 1
    Send("{RIGHT}{LEFT}")
    Send("{SHIFTDOWN}")
    Send("{LEFT}")
    Send("{SHIFTUP}")
    Send("^c")
    Send("^c")
    $Clipget = Asc(ClipGet())
    Switch $Clipget
    Case 65 To 90
    Send("{RIGHT}")
    ExitLoop
    Case 13, 32
    Send("{RIGHT}")
    ExitLoop
    Case 0
    ExitLoop
    EndSwitch
    ClipPut("")
    WEnd
    ElseIf $Clipget > 64 And $Clipget < 91 Then
    While 1
    Send("{RIGHT}{LEFT}")
    Send("{SHIFTDOWN}")
    Send("{LEFT}")
    Send("{SHIFTUP}")
    Send("^c")
    Send("^c")
    $Clipget = Asc(ClipGet())
    Switch $Clipget
    Case 97 To 122
    Send("{RIGHT}")
    ExitLoop
    Case 13, 32
    Send("{RIGHT}")
    ExitLoop
    Case 0
    ExitLoop
    EndSwitch
    WEnd
    EndIf
    ClipPut($originalclipboard)
    Opt("KeyDownDelay", $preopt)
    EndFunc ;==>Searchleft

    [/autoit]
    • Offizieller Beitrag

    Da ich diese Funktion sehr oft nutze


    WO nutzt du das? Geht es dir um den SciTE-Editor oder um Fremdsoftware. Das ist entscheidend für die Herangehensweise.
    Falls es SciTE betrifft würde ich AutoIT keinesfalls verwenden, sondern LUA. Lua ist bereits in den Editor integriert und man braucht keine großartigen Verrenkungen zu machen um Positionen zu finden bzw. anzuspringen.