Что нового

TidySource - аккуратный код в SciTE

Skif_off

Знающий
Сообщения
173
Репутация
12
asdf8
OffTopic:
Чтобы запустить TidySource, нужно:
- проверить, сохранён ли файл;
- вызвать пункт меню
Код:
-"AutoIt Tidy" Call("Log::Output", 1, '"%a\AkelFiles\Tools\AutoIt3Tidy\TidySource.exe" "%f" /NoGui /f1 /v0 /s1 /l1', "", "(?-s)^([^\(]*\()(\d+)(\) : )", '/FILE="' + pFile + '" /GOTOLINE=\2:1', -1, -1, 8194)
- если всё нормально (а так и есть в подавляющем большинстве случаев), то нужно закрыть панель вывода (она чаще закрыта);
- вызвать команду переоткрытия файла (у меня отключена опция слежения за изменением файла).
С AutoItToolsLog.js нужно только вызвать пункт меню и, что не очень удобно, посмотреть глазами в панель вывода и подтвердить её закрытие, если нет ошибок. Вот как раз участие пользователя хотел свести к минимуму :smile: Модифицировать TidySource как-то не хочется, надо будет уточнить, возможно ли получить текст из панели вывода.

Концепция несколько иная: чаще пользуюсь нескомпилированными скриптами с включенными include, поддержка в ОС добавлена так
%SystemRoot%\SysWOW64\AutoIt3.exe
AutoIt3_x64.exe -> %SystemRoot%\System32\AutoIt3.exe
AutoIt3_filetype1.ico и там, и там, плюс
Код:
[HKLM\SOFTWARE\Classes\.a3x] 
@="AutoIt3XScript" 
[HKLM\SOFTWARE\Classes\.au3] 
@="AutoIt3Script" 
[HKLM\SOFTWARE\Classes\AutoIt3Script] 
[HKLM\SOFTWARE\Classes\AutoIt3Script\DefaultIcon] 
@="AutoIt3_filetype1.ico" 
[HKLM\SOFTWARE\Classes\AutoIt3Script\Shell] 
@="Run" 
[HKLM\SOFTWARE\Classes\AutoIt3Script\Shell\Run] 
@="Run Script" 
[HKLM\SOFTWARE\Classes\AutoIt3Script\Shell\Run\Command] 
@="AutoIt3.exe \"%1\" %*" 
[HKLM\SOFTWARE\Classes\AutoIt3XScript] 
@="AutoIt v3 Encoded Script" 
[HKLM\SOFTWARE\Classes\AutoIt3XScript\DefaultIcon] 
@="AutoIt3_filetype3.ico" 
[HKLM\SOFTWARE\Classes\AutoIt3XScript\Shell] 
@="Run" 
[HKLM\SOFTWARE\Classes\AutoIt3XScript\Shell\Run] 
@="Run Script" 
[HKLM\SOFTWARE\Classes\AutoIt3XScript\Shell\Run\Command] 
@="AutoIt3.exe \"%1\" %*"
TidySource обычно используется после обфрускации или для чужого кода, SciTE4AutoIt3 - для компиляции или получения скрипта после обфрускатора, а так же в забористых случаях, когда MsgBox()/ClipPut()/запись в файл недостаточно.
 
Автор
A

asdf8

Скриптер
Сообщения
564
Репутация
152
OffTopic:

Skif_off [?]
Чтобы запустить TidySource, нужно:
Да - сложновато. В SciTe все это делает сам редактор.
Речь ведь идет о AkelPad ? В нем же вроде нет ни сворачивания блоков кода ни автодополнения? Для меня, например, это очень критично.
 

Skif_off

Знающий
Сообщения
173
Репутация
12
OffTopic:
asdf8 сказал(а):
Да - сложновато. В SciTe все это делает сам редактор.
Да нет, не сложно, просто предпочитаю открывать панель вывода при необходимости и не люблю, когда редактор автоматически перезагружает файл при изменении его сторонней программой :smile: К слову, скрипт заработал: получаю вывод, опускаю регистр и ищу в нём "error" или "ошибка".
Речь ведь идет о AkelPad ? В нем же вроде нет ни сворачивания блоков кода ни автодополнения?
Да, AkelPad, есть и сворачивание кода, и автодополнение (причём автодополнение лично меня не выбешивает так, как в SciTE), только у меня модифицированный файл подсветки синтаксиса (переменные и макросы подсвечены иначе, добавлена подсветка свойств и методов COM-объектов, UDF-функции, прочее).
 

Skif_off

Знающий
Сообщения
173
Репутация
12
asdf8
Не совсем понял, как должен работать параметр /f
Код:
    /f0 - не обрабатывать имена функции
    /f1 - по образцам из файлов "au3*.api" (по умолчанию)
    /f2 - по пользовательским правилам и по образцам из файлов "au3*.api"
с /f1 au3.api как будто не используется: регистр указанных в нём функций, ключевых слов и макросов не меняется. С /f2 становится как должно.
 
Автор
A

asdf8

Скриптер
Сообщения
564
Репутация
152
Skif_off [?]
с /f1 au3.api как будто не используется: регистр указанных в нём функций, ключевых слов и макросов не меняется. С /f2 становится как должно.
Мне трудно воспроизвести проблему, т.к. у меня TidySource сразу подключается к SciTe.
Если код завершения процесса = 0, то можно попробовать заменить функцию :
Код:
Func _GetApiInfo()
	If $sAPI Then Return
	Local $aPath, $sTmp, $aTmp, $file
	If SciTE_Init() Then
		$aPath = StringRegExp(SciTE_GetProperty('api.$(au3)'), '([^;]+)', 3)
	Else
		$aPath = _FileListToArray(@ScriptDir, 'au3*.api', 1, True)
	EndIf
	If IsArray($aPath) Then
		$sAPI = '|'
		For $i = 0 To UBound($aPath) - 1
			$aPath[$i] = StringStripWS($aPath[$i], 3)
			If FileExists($aPath[$i]) Then
				$sTmp = ''
				$file = FileOpen($aPath[$i], 0)
				If $file <> -1 Then
					$sTmp = FileRead($file)
					FileClose($file)
				EndIf
				$aTmp = StringRegExp($sTmp, '(?i)(?<=^|[\r\n])([#@_a-z0-9]+(?i:-once)?)', 3)
				If IsArray($aTmp) Then
					For $j = 0 To UBound($aTmp) - 1
						$sAPI &= $aTmp[$j] & '|'
					Next
				EndIf
			EndIf
		Next
		If $sAPI = '|' Then $sAPI = ''
	Else
		_ConsoleWrite($Lng_42 & @CRLF)
		$iErrOut = 2 ; Не удается найти указанный файл.
	EndIf
EndFunc


ps: это для компиляции/запуска на AutoIt 3.3.12.0
 

Skif_off

Знающий
Сообщения
173
Репутация
12
asdf8
Прошу прощения, попробовал запустить в консоли - всё как и задумано, покопался - дело в скрипте, из которого запускаю: достаточно было указать рабочий каталог и всё заработало.
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8 381
Репутация
2 381
asdf8
Пытаюсь использовать скомпилированную версию, но после чего не выводит в консоль процесс обработки, как это было раньше. В 1.2.0 такого не было.
 
Верх