on *:tabcomp:*: { var %start = $editbox($active, 0).selstart var %end = $editbox($active, 0).selend if (%start != %end) { var %untouched = $left($1-, $calc(%start - 1)) if ($mid($1-, $calc(%end + 1), 0) > 0) { var %untouched2 = $mid($1-, $calc(%end + 1), $mid($1-, $calc(%end + 1), 0)) } else { var %untouched2 = $null } var %completetext = $noqt($mid($1-, %start, $calc(%end - %start))) } else { var %lastchar = %start if ($mid($1-, %start, 1) != $chr(32) && $mid($1-, %start, 0) > 0) { var %temp = $mid($1-, %start, $mid($1-, %start, 0)) if ($pos(%temp, $chr(32), 0) > 0) { var %lastchar = $calc(%start + $pos(%temp, $chr(32), 1) - 1) } else { var %lastchar = $calc($len($1-) + 1) } } var %text = $left($1-, $calc(%lastchar - 1)) if ($mid($1-, %lastchar, 0) > 0) { var %untouched2 = $mid($1-, %lastchar, $mid($1-, %lastchar, 0)) } else { var %untouched2 = $null } if ($0 == 1) { var %untouched = $null } else { var %untouched = $gettok(%text, 1- $+ $calc($numtok(%text, 32) - 1), 32) } var %completetext = $gettok(%text, $numtok(%text, 32), 32) if ($right(%text, 1) == ") { var %text = $left(%text, -1) } var %n = $pos(%text, ", 0) if (%n > 0) { var %pos = $pos(%text, ", %n) if (%pos == 1 || $mid(%text, $calc(%pos - 1), 1) == $chr(32)) { var %untouched = $left(%text, $calc(%pos - 1)) var %completetext = $right(%text, $calc(0 - %pos)) } } } if ($len(%completetext) == 0) { return } var %lastresult = $null if (%completetext == %filecompletion.result) { var %completetext = %filecompletion.pattern var %lastresult = %filecompletion.result } unset %filecompletion.* var %n = $pos(%completetext, \, 0) var %dir = $gettok($mircexe, 1- $+ $calc($numtok($mircexe, 92) - 1), 92) var %file = %completetext $+ * if ($nick($active, %completetext) != $null) { return } if (%n > 0) { var %dir = $gettok(%completetext, 1- $+ $calc(%n), $asc(\)) $+ \ var %file = $gettok(%completetext, $calc(%n + 1), $asc(\)) $+ * } if ($exists(%dir)) { var %complete = $null var %usenext = $false var %firstresult = $null var %i = 1 while (%i <= $finddir(%dir, %file, 0, 1)) { if (%usenext) { var %complete = $finddir(%dir, %file, %i, 1) var %usenext = $false break } if (%firstresult == $null) { var %firstresult = $finddir(%dir, %file, %i, 1) } if (%lastresult != $null && $finddir(%dir, %file, %i, 1) == %lastresult) { var %usenext = $true } inc %i 1 } var %i = 1 while (%i <= $findfile(%dir, %file, 0, 1)) { if (%complete != $null && %firstresult != $null) { break } if (%usenext) { var %complete = $findfile(%dir, %file, %i, 1) var %usenext = $false break } if (%firstresult == $null) { var %firstresult = $findfile(%dir, %file, %i, 1) } if (%lastresult != $null && $findfile(%dir, %file, %i, 1) == %lastresult) { var %usenext = $true } inc %i 1 } if (%complete == $null) { var %complete = %firstresult } if (%complete != $null) { if ($pos(%complete, $chr(32), 0) > 0) { var %complete = " $+ %complete $+ " } if (%untouched == $null) { var %e = $calc($len(%complete) + 1) var %b = %e if (%start != %end) { var %b = $calc(1) } } else { var %e = $calc($len(%untouched) + 1 + $len(%complete) + 1) var %b = %e if (%start != %end) { var %b = $calc($len(%untouched) + 2) } } editbox -ab $+ %b $+ e $+ %e %untouched %complete %untouched2 set %filecompletion.pattern %completetext set %filecompletion.result $noqt(%complete) halt } } }