Что нового

SciTE UDF - Библиотека управления SciTE редактором

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
AutoIt: 3.3.10.2 - 3.3.12.0
Версия: 1.2

Категория: Автоматизация, Интеракция

Описание: Библиотека позволяющая управлять SciTE редактором.
Примечание: Тестировалось на SciTE 1.79 + 3.2.5.99.

Список функции:
[PUBLIC]
_SciTE_ChangeWorkingDir
_SciTE_CloseCurrentFile
_SciTE_ConsoleWrite
_SciTE_EnumProperties
_SciTE_ExportAs
_SciTE_ExpandProperties
_SciTE_Extender
_SciTE_FindText
_SciTE_GetAu3Extensions
_SciTE_GetCurrentFile
_SciTE_GetCurrentWord
_SciTE_WinGetHandleByPID
_SciTE_GetHomePath
_SciTE_GetSelection
_SciTE_GetProperty
_SciTE_GoToLine
_SciTE_InsertText
_SciTE_LoadSession
_SciTE_MacroCommand
_SciTE_MenuCommand
_SciTE_Open
_SciTE_OpenFile
_SciTE_Quit
_SciTE_ReloadProperties
_SciTE_ReplaceAll
_SciTE_ReplaceSelection
_SciTE_SaveAs
_SciTE_SaveSession
_SciTE_SetSelection
_SciTE_SetProperty
_SciTE_SetMainPID
_SciTE_SendCommand

[INTERNAL]
__SciTE_SendCommand
__SciTE_WM_COPYDATA

Пример:
Код:
#include "SciTE.au3"

;Run SciTE instance
$iSciTE_PID = _SciTE_Open('', 1)

;Set main SciTE Process ID
_SciTE_SetMainPID($iSciTE_PID)

;Close current document if any (last file might be open)
;~ _SciTE_CloseCurrentFile()

;Close all tabs
_SciTE_Extender('dostring scite.MenuCommand(IDM_CLOSEALL)')

;Create temp script file
$sFile = @TempDir & '\Test.au3'
FileClose(FileOpen($sFile, 2))

;Open created script file
_SciTE_OpenFile($sFile)

;Insert some code
_SciTE_InsertText('MsgBox(64, @ScriptName, "Hello World!", 2)' & @CRLF)

;Find "Hello" and replace it with "Hello SciTE's"
_SciTE_FindText('Hello', $SCFIND_MATCHCASE)
_SciTE_ReplaceSelection('Hello SciTE''s')

;Set cursor at the end of the document
_SciTE_SetSelection(-1, -1)

;Go/Run command (F5), run the code
;~ _SciTE_MenuCommand(303)
_SciTE_MenuCommand('IDM_GO')

;Open Find and Replace dialog using IDM_* constant string
_SciTE_MenuCommand('IDM_REPLACE')

;Wait 3.5 seconds and close the SciTE
Sleep(3500)

;We check if process still exists (can be closed by user), to prevent closure of all SciTE instances
If ProcessExists($iSciTE_PID) Then
	_SciTE_Close($iSciTE_PID)
	
	;Another method
	;_SciTE_Quit()
EndIf

;Delete temp script file
FileDelete($sFile)

Файл: SciTE.zip

История версий:
v1.2
* Исправлена проблема с инициализацией $iSCITE_MAIN_PID.
* Исправлена проблема с функцией _SciTE_ReplaceAll.
* Изменено возвращаемое значение от _SciTE_GetSelection (подробнее см. описание функции).
* Теперь функция _SciTE_MenuCommand принимает в качестве параметра $vCommand строку-константу в виде 'IDM_CONSTANT'.
+ Добавлена функция _SciTE_SetSelection для выделения текста по позиции.
+ Добавлена функция _SciTE_ExpandProperties для расширения переменных настроек до их настоящего значения.
+ Добавлена функция _SciTE_ConsoleRead для чтения текста из консоли SciTE.
+ Добавлен опциональный параметр $fOverwrite в функцию _SciTE_ConsoleWrite для записи в консоль с перезаписью текста.
+ Добавлен опциональный параметр $iFlags в функцию _SciTE_ReplaceAll (параметры поиска).
(подробнее см. описание функции)
+ Добавлены следующие опциональные параметры в функцию _SciTE_FindText:
$iFlags - Параметры поиска (константы указаны в описании функции)
$iStart - Начальная позиция поиска в документе
$fWrapAround - Начало поиска с начала документа, если не найдено с текущей позиции
(подробнее о параметрах см. описание функции)

v1.1
* Улучшена обработка инстанции SciTE.
+ Добавлены следующие функции:
_SciTE_Extender, _SciTE_WinGetHandleByPID, _SciTE_SetMainPID, _SciTE_SendCommand
(подробнее см. описание функции)
+ Добавлен опциональный параметр $sAutoIt_Dir в функцию _SciTE_GetHomePath (путь к AutoIt папке для поиска пути к SciTE).
+ Добавлен опциональный параметр $iWaitDE в функцию _SciTE_Open (для ожидания дескриптора DirectorExtension).

v1.0
* Первая публичная версия.

Источник: autoit-script.ru
Автор(ы): G.Sandler (CreatoR)
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
Прикольно, но почему-то, когда я запустил твой пример из SciTE (v1.79), то скрипт начал запускаться раз 20, а потом наконец выдал MsgBox().

:(
 
Автор
CreatoR

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
Yashied [?]
почему-то, когда я запустил твой пример из SciTE (v1.79), то скрипт начал запускаться раз 20, а потом наконец выдал MsgBox().
Странно.
Это в SciTE от 3.3.8.1?


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

Yashied [?]
скрипт начал запускаться раз 20, а потом наконец выдал MsgBox()
Проблема проявляется если опция «Open Files Here» включена.
У тебя SciTE Light?
 

asdf8

Скриптер
Сообщения
564
Репутация
152
Не хватает управления окном консоли.
И, еще, в __SciTE_GetDirectorHandle, по моему, для поиска окна директора, лучше использовать опциональный параметр PID процесса SciTE и искать окно для нужного PID (если он будет указан). То-же для функции _SciTE_GetHomePath, в которой, кстати строка
Код:
$sAutoIt_Dir = StringRegExpReplace(@AutoItExe, '\\[^\\]*$', '')

будет неправильно работать в скомпилированном скрипте.
 
Автор
CreatoR

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
asdf8 [?]
Не хватает управления окном консоли
Подробнее.

в __SciTE_GetDirectorHandle, по моему, для поиска окна директора, лучше использовать опциональный параметр PID процесса SciTE и искать окно для нужного PID (если он будет указан).
Тогда придётся в многие функции добавлять этот параметр.

То-же для функции _SciTE_GetHomePath
Эта функция возвращает путь либо к текущему SciTE, либо к тому что указан в реестре.

в которой, кстати строка
Это проверяется в последнюю очередь.
 

asdf8

Скриптер
Сообщения
564
Репутация
152
CreatoR [?]
Не хватает управления окном консоли
Подробнее.

_SciTE_ConsoleWrite уже есть, не хватает _SciTE_ConsoleGetText и _SciTE_ConsoleSetText (опционально для всего или выделенного текста).

в __SciTE_GetDirectorHandle, по моему, для поиска окна директора, лучше использовать опциональный параметр PID процесса SciTE и искать окно для нужного PID (если он будет указан).
Тогда придётся в многие функции добавлять этот параметр.

если программа с использованием этого UDF будет использоваться на компе без установленного AutoIt функция _SciTE_GetHomePath не найдет ничего, если SciTE не запущен.
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
CreatoR сказал(а):

Нет, полноценный, но для 3.3.6.1.


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

CreatoR сказал(а):
Проблема проявляется если опция «Open Files Here» включена.

Как ее отключить?
 
Автор
CreatoR

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
asdf8 [?]
если программа с использованием этого UDF будет использоваться на компе без установленного AutoIt функция _SciTE_GetHomePath не найдет ничего, если SciTE не запущен.
Ну эта библиотека как бы предназначена для совместной работы с AutoIt, для «SciTE4AutoIt3».

Yashied [?]
Как ее отключить?
Меню «Options -> Open Files Here».
 
Автор
CreatoR

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
Обновление...

v1.1
* Улучшена обработка инстанции SciTE.
+ Добавлены следующие функции:
_SciTE_Extender, _SciTE_WinGetHandleByPID, _SciTE_SetMainPID, _SciTE_SendCommand
(подробнее см. описание функции)
+ Добавлен опциональный параметр $sAutoIt_Dir в функцию _SciTE_GetHomePath (путь к AutoIt папке для поиска пути к SciTE).
+ Добавлен опциональный параметр $iWaitDE в функцию _SciTE_Open (для ожидания дескриптора DirectorExtension).
 
Автор
CreatoR

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
Обновление:

v1.2
* Исправлена проблема с инициализацией $iSCITE_MAIN_PID.
* Исправлена проблема с функцией _SciTE_ReplaceAll.
* Изменено возвращаемое значение от _SciTE_GetSelection (подробнее см. описание функции).
* Теперь функция _SciTE_MenuCommand принимает в качестве параметра $vCommand строку-константу в виде 'IDM_CONSTANT'.
+ Добавлена функция _SciTE_SetSelection для выделения текста по позиции.
+ Добавлена функция _SciTE_ExpandProperties для расширения переменных настроек до их настоящего значения.
+ Добавлена функция _SciTE_ConsoleRead для чтения текста из консоли SciTE.
+ Добавлен опциональный параметр $fOverwrite в функцию _SciTE_ConsoleWrite для записи в консоль с перезаписью текста.
+ Добавлен опциональный параметр $iFlags в функцию _SciTE_ReplaceAll (параметры поиска).
(подробнее см. описание функции)
+ Добавлены следующие опциональные параметры в функцию _SciTE_FindText:
$iFlags - Параметры поиска (константы указаны в описании функции)
$iStart - Начальная позиция поиска в документе
$fWrapAround - Начало поиска с начала документа, если не найдено с текущей позиции
(подробнее о параметрах см. описание функции)
 
Верх