SciTE4AutoHotkey output debugging

Post your working scripts, libraries and tools
c4p
Posts: 17
Joined: 18 Jan 2017, 18:38

SciTE4AutoHotkey output debugging

16 Mar 2017, 20:22

Script allows output to SciTE4AutoHotKey console output
Includes lines numbers, elapsed time, and variable contents
Comments, suggestions, and improvements welcome

example output for code below
----
#007: [test] = 50, [a] = 5 (0 ms)
>"E:\AHK\Portable AHK\AutoHotkey\SciTE\..\AutoHotkey.exe" /ErrorStdOut "E:\AHK\Ideas\SciTEOut.ahk"
>Exit code: 0 Time: 0.2267
-----

Code: Select all

#Persistent
#SingleInstance, Force
; Heavy lifting of listlines credited to https://autohotkey.com/board/topic/58110-printing-listlines-into-a-file/#entry365156

test:= 50
a := 5
out("test,a")
return

out(vars, clear = 0,prependtext = "",appendtext = "") { 
ListLines, Off
oSciTE := ComObjActive("SciTE4AHK.Application")
if clear
  oSciTe.Message(0x111,420)
if prependtext
  oSciTE.Output(prependtext . "`n")
global  last
linenum := "#" . GetScriptLines(-1) . ": "
Loop, Parse, vars, CSV
{
  eval = % %A_LoopField%
  out := (out ? out . ", " : "") . "["  . A_LoopField .  "] = " . eval 
}
sincelast := (last ? A_TickCount - last : 0)
last := A_TickCount
oSciTE.Output(linenum . out . " (" . sincelast . " ms)" . "`n")
if appendtext
  oSciTE.Output(appendtext . "`n")
ListLines, On
Return
}

GetScriptLines(num = -1,linecodeboth = 0) {
  ; num: -1 = last line *default), 0 = all, 8 line #8
  ; linecodeboth: 0 = linenum (default), 1 = linecode, 2 = both
ListLines, Off ; prevent this from entering line history
  Section := "lines"
   DetectHiddenWindows, On 
   IfEqual Section,, SetEnv Section, Key 
   HidWin := WinExist(A_ScriptFullPath " - AutoHotkey v") 
   OldPar := DllCall("GetParent", UInt,HidWin) 
   GUI +LastFound 
   DllCall("SetParent", UInt,HidWin, UInt,WinExist("ahk_class Shell_TrayWnd")) 
   WinMenuSelectItem ahk_id %HidWin%,,View, %Section%
   Sleep 0 
   ControlGetText lines, Edit1, ahk_id %HidWin%
   WinHide ahk_id %HidWin% 
   DllCall("SetParent", UInt,HidWin, UInt,OldPar) 
   
if num = 0
  return lines
startpos := 1 , linenum := [], linecode:= []
Loop {
  RegExMatch(lines,"O)(?P<line>\d+):(?P<code>.*)",obj, startpos)
  startpos := obj.Pos["line"] + obj.Len["line"]
  if obj.Value["line"]
  {
      linenum.push(obj.Value["line"])
      ;strip time from code \s\(\d|.\),""
      linecode.push(obj.Value["code"])
  } else {
      break
  }
}
if num = -1
  num := linenum.MaxIndex() ; last line

if linecodeboth = 0
  result := linenum[num]
if linecodeboth = 1
  result := linecode[num]
if linecodeboth = 2
  result := linenum[num] . ":" . linecode[num]
ListLines, On
return result
}

Return to “Scripts and Functions”

Who is online

Users browsing this forum: najeeb and 50 guests