Что нового

Шаблоны аббревиатур для SciTE

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
В SciTE4AutoIt есть такое полезное чудо как аббревиатуры.
Например, если ввести на новой строке cw и нажать пробел, то оно расширяется в
Код:
ConsoleWrite(, @LF) ;Так у меня


Так вот, эти аббревиатуры можно изменять, удалять, и естественно добавлять свои.

Делается это в двух файлах:
1. %userprofile%\abbrev.properties - содержит аббревиатуры и их значения
2. ...\SciTE\properties\au3.keywords.abbreviations.properties - содержит указатели на аббревиатуры (чтобы SciTE их мог распознать)

Добавляем аббревиатуры:
Я обычно нахожу секцию #; -- Templates -- в «abbrev.properties» и добавляю под неё.

* Тестирование регулярных выражений
Код:
setupre=$vTest = '|'\n\n$sRet = StringRegExpReplace($vTest, '', '')\n\nConsoleWrite($sRet & @LF)\n

* Шаблон создания нового проекта
Код:
project=#Region Header\n\n#CS\n\tName:\t\t\t\t\n\tAuthor:\t\t\t\tCopyright © 2011 MyCorp, www.autoit-script.ru. All rights reserved.\n\tAutoIt version:\t\t3.3.6.1\n\t\n\tHistory:\n\t\n#CE\n\n#NoTrayIcon\n\n\n#EndRegion Header\n\n#Region Global Variables\n\n\n\n#EndRegion Global Variables\n\n#Region Options\n\n\n\n#EndRegion Options\n\n#Region HotKeys\n\n\n\n#EndRegion HotKeys\n\n#Region GUI\n\n\n\n#EndRegion GUI\n\n#Region Main Loop\n\n\n\n#EndRegion Main Loop\n\n#Region Program Functions\n\n\n\n#EndRegion Program Functions

* Шаблон создания новой библиотеки
Код:
udfproject=#Region Header\n\n#CS\n\tName:\t\t\t\t\n\tAuthor:\t\t\t\tCopyright © 2011 MyCorp, www.autoit-script.ru. All rights reserved.\n\tAutoIt version:\t\t3.3.6.1\n\tUDF version:\t\t\n\t\n\tHistory:\n\t\n#CE\n\n;Includes\n#include-once\n\n\n#EndRegion Header\n\n#Region Global Variables\n\n\n\n#EndRegion Global Variables\n\n#Region User Variables\n\n\n\n#EndRegion User Variables\n\n#Region Public Functions\n\n\n\n#EndRegion Public Functions\n\n#Region Internal Functions\n\n\n\n#EndRegion Internal Functions

* Тестирования скорости обработки кода
Код:
timetest=Global $iRepeat_Test = 10\nGlobal $aTests[$iRepeat_Test+1] = [$iRepeat_Test]\nGlobal $iTotal_Tests = 0\n\nFor $x = 1 To $iRepeat_Test\n\t$iTimer = TimerInit()\n\t\n\t;=== CODE TEST ====\n\t\n\t;=== CODE TEST ===\n\t\n\t$aTests[$x] = Round(TimerDiff($iTimer), 3)\n\t$iTotal_Tests += $aTests[$x]\n\tConsoleWrite("Test #" & $x & ": " & $aTests[$x] & " ms" & @LF)\nNext\n\n$iAverage = Round($iTotal_Tests / $iRepeat_Test, 3)\nConsoleWrite("======================" & @LF & "Tests Average: " & $iAverage & @LF & "======================" & @LF)



И указатели для этих шаблонов (для «au3.keywords.abbreviations.properties»):
Код:
au3.keywords.abbrev=... \
    setupre selectloop project udfproject timetest
 

gregaz

AutoIT Гуру
Сообщения
1,166
Репутация
299
CreatoR [?]
Так вот, эти аббревиатуры можно изменять, удалять, и естественно добавлять свои.

Только можно это делать не вручную.

Когда-то делал что-то подобное для себя: (Фрагмент скрипта в 1 строку)
Код:
Func _TextToString($sText)
	If Not $sText Then Return
	$sText=StringStripWS ( $sText, 2 )
	$sRez=StringRegExpReplace( $sText , "([\\|])" , "\1\1" )
	$sRez=StringRegExpReplace( $sRez , "\r\n" , "\\n" )
	$sRez=StringRegExpReplace( $sRez , "(?:\t|\s{3,4})" , "\\t")
	$sRezult=StringReplace( $sRez , "\t " , "\t") & "\n"
	Return $sRezult
EndFunc

Можно сподобить подобное сразу для записи в файл



Добавлено:
Сообщение автоматически объединено:

Ну и проверочный вариант:(Обратный)
Код:
Func _StringToText($sString)
	If Not $sString Then Return
	$sRez=StringRegExpReplace( $sString , "([\\|])([\\|])" , "\1" )
	$sRez=StringReplace( $sRez , "\n" , @CRLF )
	$sRez=StringReplace( $sRez , "\t" , @TAB )
	Return $sRez
EndFunc
 
Автор
CreatoR

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
gregaz [?]
Фрагмент скрипта в 1 строку
Это не совсем правильная замена. Во-первых после \r нужно ставить знак вопроса, т.к символ возврата каретки может и не присутствовать. А во-вторых, слеш не нужно нужно заменять (“отменять”), да и вертикальную черту тоже (она в любом случае не попадает в текст, это указывает на позицию курсора).

Код:
$sCode = ClipGet()
_SciTE_AbbrevCodeToLine($sCode)
ConsoleWrite($sCode & @LF)

Func _SciTE_AbbrevCodeToLine(ByRef $sAbbrCode)
    If StringLen($sAbbrCode) = 0 Then Return
	
    $sAbbrCode = StringRegExpReplace($sAbbrCode, "\r?\n" , "\\n")
    $sAbbrCode = StringRegExpReplace($sAbbrCode, "(?:\t|\h{3,4})", "\\t")
EndFunc

Func _SciTE_AbbrevLineToCode(ByRef $sAbbrLine)
    If StringLen($sAbbrLine) = 0 Then Return
	
    $sAbbrLine = StringReplace($sAbbrLine , "\n", @CRLF)
    $sAbbrLine = StringReplace($sAbbrLine, "\t", @TAB)
EndFunc
 
Верх