Context Sensitive Help in Any Editor -- by Rajat

Auto Hotkey

Context Sensitive Help in Any Editor -- by Rajat

This script makes Ctrl+2 (or another hotkey of your choice) show the help file page for the selected AutoHotkey command or keyword. If nothing is selected, the command name will be extracted from the beginning of the current line.

Download This Script  |  Other Sample Scripts  |  Home

; The hotkey below uses the clipboard to provide compatibility with the maximum
; number of editors (since ControlGet doesn't work with most advanced editors).
; It restores the original clipboard contents afterward, but as plain text,
; which seems better than nothing.

$^2::
; The following values are in effect only for the duration of this hotkey thread.
; Therefore, there is no need to change them back to their original values
; because that is done automatically when the thread ends:
SetWinDelay 10
SetKeyDelay 0

C_ClipboardPrev := clipboard
clipboard := ""
; Use the highlighted word if there is one (since sometimes the user might
; intentionally highlight something that isn't a command):
Send, ^c
ClipWait, 0.1
if ErrorLevel <> 0
{
    ; Get the entire line because editors treat cursor navigation keys differently:
    Send, {home}+{end}^c
    ClipWait, 0.2
    if ErrorLevel <> 0  ; Rare, so no error is reported.
    {
        clipboard := C_ClipboardPrev
        return
    }
}
C_Cmd := Trim(clipboard)  ; This will trim leading and trailing tabs & spaces.
clipboard := C_ClipboardPrev  ; Restore the original clipboard for the user.
Loop, parse, %C_Cmd%, %A_Space%`,  ; The first space or comma is the end of the command.
{
    C_Cmd := A_LoopField
    break ; i.e. we only need one interation.
}
if !WinExist("AutoHotkey Help")
{
    ; Determine AutoHotkey's location:
    RegRead, ahk_dir, HKEY_LOCAL_MACHINE\SOFTWARE\AutoHotkey, InstallDir
    if ErrorLevel  ; Not found, so look for it in some other common locations.
    {
        if A_AhkPath
            SplitPath, %A_AhkPath%,, ahk_dir
        else if FileExist("..\..\AutoHotkey.chm")
            ahk_dir := "..\.."
        else if FileExist("%A_ProgramFiles%\AutoHotkey\AutoHotkey.chm")
            ahk_dir := "%A_ProgramFiles%\AutoHotkey"
        else
        {
            MsgBox Could not find the AutoHotkey folder.
            return
        }
    }
    Run %ahk_dir%\AutoHotkey.chm
    WinWait AutoHotkey Help
}
; The above has set the "last found" window which we use below:
WinActivate
WinWaitActive
StrReplace, C_Cmd, %C_Cmd%, #, {#}
send, !n{home}+{end}%C_Cmd%{enter}
return