任意编辑器中的上下文帮助__作者:Rajat

AutoHotKey

任意编辑器中的上下文帮助__作者:Rajat

此脚本设置 Ctrl+2 (或您选择的其他热键) 来显示选择的 AutoHotkey 命令或关键字的帮助文件页面. 如果没有选择任何内容, 那么会提取当前行开始处的命令名.

下载此脚本  |  其他示例脚本  |  主页

; 下面的热键使用剪贴板来实现与最大数目的
; 编辑器兼容 (因为 ControlGet 在大多数高级编辑器中无法工作).
; 它会在之后恢复剪贴板原来的内容, 但只是纯文本,
; 这样似乎比什么都不做要好.

$^2::
; 下面的值只在此热键执行期间有效.
; 因此, 不需要恢复它们原来的值
; 因为在线程结束时会自动进行这个操作:
SetWinDelay 10
SetKeyDelay 0
AutoTrim, On

if A_OSType = WIN32_WINDOWS  ; Windows 9x
    Sleep, 500  ; 提供一些时间让用户释放按键.

C_ClipboardPrev = %clipboard%
clipboard =
; 如果有高亮的单词, 则使用它 (因为有时用户可能
; 故意高亮一些不是命令的内容):
Send, ^c
ClipWait, 0.1
if ErrorLevel <> 0
{
    ; 获取整行, 因为编辑器编辑器可能对导航键进行不同的处理:
    Send, {home}+{end}^c
    ClipWait, 0.2
    if ErrorLevel <> 0  ; 罕见的情况, 所以不报告错误.
    {
        clipboard = %C_ClipboardPrev%
        return
    }
}
C_Cmd = %clipboard%  ; 这样会移除前导和尾随的 tab 和空格.
clipboard = %C_ClipboardPrev%  ; 恢复剪贴板为原来的内容.
Loop, parse, C_Cmd, %A_Space%`,  ; 命令末尾的首个空格或逗号.
{
    C_Cmd = %A_LoopField%
    break ; 即我们只需要循环一次.
}
IfWinNotExist, AutoHotkey Help
{
    ; 判断 AutoHotkey 的位置:
    RegRead, ahk_dir, HKEY_LOCAL_MACHINE, SOFTWARE\AutoHotkey, InstallDir
    if ErrorLevel  ; 没有找到, 所以在其他一些常见位置寻找.
    {
        if A_AhkPath
            SplitPath, A_AhkPath,, ahk_dir
        else IfExist ..\..\AutoHotkey.chm
            ahk_dir = ..\..
        else IfExist %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
}
; 上面设置了我们下面要使用的 "最后找到的" 窗口:
WinActivate
WinWaitActive
StringReplace, C_Cmd, C_Cmd, #, {#}
send, !n{home}+{end}%C_Cmd%{enter}
return