Code: Select all
#y::
AutoTrim Off ; Retain any leading and trailing whitespace on the clipboard.
ClipboardOld = %ClipboardAll%
Clipboard = ; Must start off blank for detection to work.
Send ^c
ClipWait 1
if ErrorLevel ; ClipWait timed out.
return
; Replace CRLF and/or LF with `n for use in a "send-raw" hotstring:
; The same is done for any other characters that might otherwise
; be a problem in raw mode:
StringReplace, Hotstring, Clipboard, ``, ````, All ; Do this replacement first to avoid interfering with the others below.
StringReplace, Hotstring, Hotstring, `r`n, ``r, All ; Using `r works better than `n in MS Word, etc.
StringReplace, Hotstring, Hotstring, `n, ``r, All
StringReplace, Hotstring, Hotstring, %A_Tab%, ``t, All
StringReplace, Hotstring, Hotstring, `;, ```;, All
Clipboard = %ClipboardOld% ; Restore previous contents of clipboard.
; This will move the InputBox's caret to a more friendly position:
SetTimer, MoveCaret, 10
; Show the InputBox, providing the default hotstring:
InputBox, Hotstring, Nova correção, Forneça a palavra correta no lado direito. É possível também editar o lado esquerdo.`n`nExemplo`n::dso::dos,,,,,,,,::%Hotstring%::%Hotstring%
if ErrorLevel <> 0 ; The user pressed Cancel.
return
; Otherwise, add the hotstring and reload the script:
FileAppend, `n%Hotstring%, %A_ScriptFullPath% ; Put a `n at the beginning in case file lacks a blank line at its end.
Reload
Sleep 200 ; If successful, the reload will close this instance during the Sleep, so the line below will never be reached.
MsgBox, 4,, The hotstring just added appears to be improperly formatted. Would you like to open the script for editing? Note that the bad hotstring is at the bottom of the script.
IfMsgBox, Yes, Edit
return
MoveCaret:
IfWinNotActive, Nova correção
return
; Otherwise, move the InputBox's insertion point to where the user will type the abbreviation.
Send {HOME}
Loop % StrLen(Hotstring) + 4
SendInput {Right}
SetTimer, MoveCaret, Off
SendInput {Ctrl down}{Shift down}{Right}{Ctrl up}{Shift up}
return
1. Shows an InputBox when you press Win + y and you have previously selected text.
2. The edit field defaults do the selected text in a basic hotstring syntax, like ::text::text.
3. The caret is placed right after the colon so you can edit the hotstring output.
4. You edit the hotstring, press OK and it's appended to the end of the file.
5. If you press Win + y with no previously selected text, nothing happens.
What I want is item 5 to be different. Instead of nothing happening, I would like the InpuBox to also show up, but with no default text in the edit field so I can type my own. I tried doing it, but I keep messing my Ifs