Ru-Board.club
← Вернуться в раздел «Программы»

» SciTE - Open Source Text Editor for Windows & Linux

Автор: mimir
Дата сообщения: 27.01.2006 09:39
Изначально есть 2 разных события.
1 - IDM_COMPLITEWORD - оно восникает при нажатии Ctrl+Enter.
2 - IDM_COMPLITE - оно по умолчанию не возникает.

Так вот обработчик события 1 берет слова только из самого файла, в то время как обработчик события 2 берет данные только из api файла. Я их просто соеденил.
Насчет

Цитата:
допустим WScript. будет вызывать список вариантов завершения (WScript.Echo, WScript.Arguments, WScript.FullName,...), если таковые имеются в API-файле?

там логика простая.
При наборе WScript и нажатии Ctrl+Space(у меня это IDM_COMPLITE) он найдет то что нужно, но если написать с точкой - нет, т.к. он воспримит "." как разделитель слова.
Набор разделителей задан жестко и для всех языков одинаковый.
Автор: Grisper
Дата сообщения: 27.01.2006 10:53
mozers
ага, вроде заработала раскраска. спасибо.

Автор: mimir
Дата сообщения: 27.01.2006 12:00
Как в скрипте можно взять текст из консоли по аналогии с editor:GetSelText().
Хочу подправить скрипт поиска файлов.
Автор: mozers
Дата сообщения: 27.01.2006 13:57
mimir
Спасибо. Теперь все ясно

Цитата:
взять текст из консоли
Зачем так то? (Все равно что со скриншота Ворда распознавать текст в нем набираемый). Неужели нельзя сделать всю обработку текста до его вывода в консоль???
Автор: mimir
Дата сообщения: 27.01.2006 15:00

Цитата:
Может и баги, про которые я говорил, поправить можешь?

Там все предельно просто - после того как получили текущую кодовую страницу
идет проверка на UTF8 и если это НЕ UTF8 идет перекодеровка в UTF8. в общем все как всегда. Это находиться в файле SciTEWin.cxx в районе строки 1860

Цитата:

    if (IsWindowsNT()) {
        UINT codePage = SendEditor(SCI_GETCODEPAGE);

        if (codePage != SC_CP_UTF8) {




Цитата:

Зачем так то? (Все равно что со скриншота Ворда распознавать текст в нем набираемый). Неужели нельзя сделать всю обработку текста до его вывода в консоль???


Я хочу в консоле набирать текс который надо найти. Сейчас приходиться набирать его в самом файле(а его размер переваливает за несколько тысяч строк), производить поиск, и удалять то что ввел - неудобно

Добавлено:
По поводу невыделения то вроде тоже сделал.
в файле SciTEWin.cxx

Цитата:

DWORD SciTEWin::ExecuteOne(const Job &jobToRun, bool &seenOutput) {
***
if (totalBytesToWrite > 0 && !(jobToRun.flags & jobQuiet)){
***
}

if (totalBytesToWrite <= 0 && !(jobToRun.flags & jobQuiet)) {
totalBytesToWrite = 1;
OutputAppendStringSynchronised("\0");
}
***
}

Но я неуверен что "\0" всегда правилен. Поживем увидем.
Автор: mozers
Дата сообщения: 27.01.2006 23:25
mimir

Цитата:
и если это НЕ UTF8 идет перекодеровка в UTF8
Так значит эти ... специально его перекодируют ???
Да... Редкая глупость.

Цитата:
Я хочу в консоле набирать текс который надо найти
Имхо передать в скрипт текст с консоли не получится.
Но можно же вводить нужный текст в InputBox.
Для WSH вообще проблем нет - там InputBox - встроенная функция.
Для LUA для того чтобы поиметь InputBox и MessageBox придется доставлять довольно громоздкую (313kB) библиотеку
Так что WSH рулит адназначна

Цитата:
По поводу невыделения то вроде тоже сделал.
Вах, СПАСИБО ОГРОМНОЕ
Обрисуй задачу скрипта. Он должен выводить в консоль список файлов из текущего каталога, содержащих заданный текст? Если ДА - то сочинить, думаю смогу...

Как я не хотел этого монстра (я про Visual Studio) ставить... да, видимо придется... Что то никто откомпиленный вариант выкладывать не собирается, а поглядеть на результат страсть как хочется.
mimir глянь в ПМ!
Автор: mimir
Дата сообщения: 28.01.2006 07:39
mozers

Цитата:
Обрисуй задачу скрипта.


Есть скрипт который ищет в файле выделенное слово и выводит в окно консоли Scite.
Так вот было бы очень удобно если бы можно было выделить там слово и так же произвести поиск.
Автор: mozers
Дата сообщения: 28.01.2006 11:36
mimir
Это ты про пробегавший ранее lua скрипт, который выводит в консоль строки с их номерами, содержащие искомый фрагмент?
Только не пойму зачем в консоли то выделять текст? Выдели нужный текст прямо на странице и запусти поиск по новой
Если смущает то, что результаты нового поиска сотрут предыдущие, то можно просто убрать output:ClearAll() из скрипта.
глянь в ПМ!
Автор: mimir
Дата сообщения: 28.01.2006 11:51

Цитата:
Это ты про пробегавший ранее lua скрипт

Да.

Цитата:
не пойму зачем в консоли то выделять текст?

Во первых для того чтобы его выделить его для начала надо найти, а включать поиск не просто лениво а и неудобно т.к. он перейдет к найденому слову. Приходиться пользоваться закладками или открывать второй файл.
А так набрал текст в консоли, нажал поиск, он вывел нужные строки и все. И почти всегда мне этого достаточно. Не нужно переходить с текуще позиции.


Цитата:
Если смущает то, что результаты нового поиска сотрут предыдущие, то можно просто убрать output:ClearAll() из скрипта.

Спасибо

Цитата:
глянь в ПМ!

???

Автор: mozers
Дата сообщения: 28.01.2006 13:19
mimir
Все понял. Попробую сделать чтоб было поудобнее.
"глянь в ПМ!" - это значит нажми графическую анимационную кнопку в правом верхнем углу этой страницы "Вам пришла почта!!!" (я тебе послал личное сообщение).
Автор: mimir
Дата сообщения: 28.01.2006 14:25
Я так и подумал сначало. Глянул - нету .
Щас пришло.

Добавлено:
Ушло
Автор: mozers
Дата сообщения: 28.01.2006 21:13
В общем так: Взял оригинальный скрипт, поудалял там какие то циклы непонятно зачем нужные, добавил запрос на ввод, если ничего не выделено, ну и оформил по человечески.
Файл FindText.lua:
Код: -- FindText v2
-- Автор: неизвесен
-- Источник: <http://forum.ruteam.ru/index.php?action=vthread&forum=22&topic=175>
-- Небольшие корректировки: mozers™ icq#256106175
-- Поиск выделенного на странице текста с выводом содержащих его строк в консоль
-- Для подключения добавьте в свой файл .properties следующие строки:
-- command.name.22.*=Поиск текста
-- command.22.*=dofile $(SciteDefaultHome)\tools\FindText.lua
-- command.mode.22.*=subsystem:lua,savebefore:no
-----------------------------------------------------------------------

local sText = editor:GetSelText()
local flag = 0

------------- начало блока -------------
-- Этот блок срабатывает, если Вы ничего не выделили
-- и позволяет задать текст для поиска в диалоговом окне.
-- Для работы необходимо установить библиотеку <http://total.altruistic.ru/temp/scite/luaext.zip> [222kB]
-- В противном случае просто закомментируйте этот блок.
if string.len(sText) == 0 then
local Init = loadlib(props['SciteDefaultHome']..'\\tools\\luaext\\LuaWin.dll', 'Init')
Init()
local bFlag, repText = win.InputBox('Текст для поиска:','Найти')
if bFlag then
sText = repText
end
end
------------- конец блока -------------

output:ClearAll()

if string.len(sText) > 0 then
trace('> Поиск текста: "'..sText..'"\n')
local s,e = editor:findtext(sText,flag,0)
local count = 0
if(s~=nil)then
local m = editor:LineFromPosition(s) - 1
while s do
local l = editor:LineFromPosition(s)
if l ~= m then
count = count + 1
local str = string.gsub(' '..editor:GetLine(l),'%s+',' ')
trace(':'..(l + 1)..':\t'..str..'\n')
m = l
end
s,e = editor:findtext(sText,flag,e+1)
end
trace('> Найдено: '..count..' вхождений\nДвойной щелчок на строке с результатом установит курсор на оригинальную строку')
else
trace('> Вхождений не найдено!')
end
else
trace('> Сначала выделите в редакторе текст, который необходимо найти!')
end
Автор: mimir
Дата сообщения: 29.01.2006 11:15
Спасибо за скрипт вот только я ни как не могу найти DLL.
Может кто даст ссылку
Автор: mozers
Дата сообщения: 29.01.2006 11:28
http://total.altruistic.ru/temp/scite/luaext.zip
Автор: mimir
Дата сообщения: 29.01.2006 17:07
Не работает.
Автор: mirk
Дата сообщения: 29.01.2006 19:49
На SciTE.ruteam.ru две новые статьи:
Интерфейс командной строки для SciTE
Утилита представляет собой интерфейс командной строки позволяющий выполнять различные команды, такие как: "Выполнить SciTE команду", "Открыть файл" и т.д.

Сортировка выделенного текста
Очень удобные в некоторых случаях функции прямой и обратной сортировки выделенного текста в редакторе
Автор: mozers
Дата сообщения: 29.01.2006 23:16
mimir
Откомпилировал твои варианты исправления ошибок SciTE.
Увы, но ничего не работает
Текст в StdIn все так же выводится исключительно в UTF-8.
Если текст не выделен, то приведенный мной тестовый скрипт вешает SciTE.
Жаль конечно, что ты даже не проверил эффект своих вариантов перед публикацией решения в форуме. Проверить то - элементарно...

Насчет того, что мой скрипт "не работает" - даже не знаю в чем может быть прокол. У меня все работает просто отлично. Пиши на личный, поскольку случай явно частный - будем разбираться.

mirk
Цитата:
Утилита представляет собой интерфейс командной строки позволяющий выполнять различные команды, такие как: "Выполнить SciTE команду", "Открыть файл" и т.д.
Я тут тоже для своих нужд утилитку маленькую сляпал. В качестве параметра позволяет задавать любую команду меню SciTE. Тоже что ли выложить?
Автор: mirk
Дата сообщения: 30.01.2006 00:14

Цитата:
Я тут тоже для своих нужд утилитку маленькую сляпал. В качестве параметра позволяет задавать любую команду меню SciTE. Тоже что ли выложить?


Странный вопрос, выкладывай конечно
Автор: mimir
Дата сообщения: 30.01.2006 06:12

Цитата:
Увы, но ничего не работает

А у меня не работает твой тестовый скрипт ну что.
Пишет

Цитата:
Ошибка выполнения Microsoft VBScript.
Объект не поддерживает это свойство или метод: 'WScript.StdIn'

На работе стоит 2000 там у меня все работает. Дома в консоли пишет нормальный русский текст.
1. На счет русского языка. Ты догадался поменять (codePage != SC_CP_UTF8) на(codePage == SC_CP_UTF8) или это очень сложно.
2. На счет невыделения на работе приду проверю, но оно работало это точно. У тебя к SelText добовляеться еще пробел(по крайне мере в если делать копи/паст из форума), может из-за этого, хотя у меня работало. Посмотри в консоли скрипт должен писаться без >>.
3. Я написал что неработает ссылка. Мог хотябы проеверить прежде чем постит в форум.


Добавлено:
На счет русских букв.
Там этот код встречаеться дважды. Еще в EncodingString(строка 1829), но в твоем скрипте она не вызываеться.
А в твоем случаи Нужна GetRangeInUIEncoding (строка 1863 как я и написал). На работе не успел все найти, а дома 98 и там это пофигу.
Автор: mozers
Дата сообщения: 30.01.2006 08:44
mimir
Цитата:
Объект не поддерживает это свойство или метод: 'WScript.StdIn'
Видимо надо обновить WSH.

Цитата:
Дома в консоли пишет нормальный русский текст
С консолью проблем никогда не было! Перекодировка происходит при выводе через StdOut (т.е. когда используешь command.input.)

Цитата:
Ты догадался поменять (codePage != SC_CP_UTF8) на(codePage == SC_CP_UTF8)
Ты не повершь, но ДА догадался

2. Вообще не понял о чем ты. (Какой SelText? Какой пробел? В какой консоли скрипт?) Вот тест на котором я проверяю работают твои решения или нет.

3. И ссылки я проверяю. Можешь убедиться сам.
(В коде скрипта, был грех, ошибся написал ../luaext.dll но после твоего сообщения исправил на ../luaext.zip)

mirk
Лови Readme нету, но я думаю, разберешся.
Автор: mimir
Дата сообщения: 30.01.2006 09:49
У меня все работает.
Я именно на этом тесте и проверяю. Могу выслать скриншоты.

Цитата:
Какой SelText? Какой пробел?


Цитата:
command.input.47.*=$(CurrentSelection)

пробел после $(CurrentSelection) также считаеться и поэтому если ни чего не выделено
StdOut содержит пробел. Именно поэтому у меня сначало эта ошибка не воспроизводилась. Но потом я ее нашол и исправил о чем я и написал (в пятницу).
как говориться RTFM

Цитата:
Space characters are significant so x =1 defines a variable called "x ".


Цитата:
В какой консоли скрипт?

Я имею ввиду консоль SciTE.
У меня выводяться:
1. Ни чего не выделено
>wscript "D:\Scite167\scite\boundscheck\Debug\tools\test.vbs"
NUL>Exit code: 0;
и выдает пустой MSGBOX
2. Русские буквы
>wscript "D:\Scite167\scite\boundscheck\Debug\tools\test.vbs"
>> фвыафыва
фвыафыва>Exit code: 0
и в MSGBOX также нормальные буквы и в тексте тоже заменяються

Цитата:
И ссылки я проверяю.

Не знаю, но скачать у меня ее не получаеться ни дома ни на работе.
Автор: mozers
Дата сообщения: 30.01.2006 10:38
mimir
Хрен знает что у меня было. Сейчас все сделал заново, откомпилил. Работают оба твоих решения по исправлению багов
Браво, гений!
luaext.zip послал на мыло и в ПМ еще одна ссылка и еще одна
Единственное маленькое уточнение: 0x4 - EoS (End of Stream, конец потока)
Автор: Grisper
Дата сообщения: 31.01.2006 08:29
Несколько вопросов:

1. Можно ли сделать чтобы окно вывода было внизу а не справа?
2. Можно ли добавить свои кнопки в панель инструментов.
3. Горячую клавишу на "Замену" (а то на поиск есть, а на замену нет)

Автор: mozers
Дата сообщения: 31.01.2006 09:11
Grisper
1. split.vertical=1
2. Нет
3. Вообще то есть (Ctrl+H) но можно создать и свой user.shortcuts=

mimir
При тестировании обхода зависания по StdIn выяснилось что твое решение работает только если в command.mode. нету параметра quiet:yes
Иначе - тот же зависон
Не использовать quiet:yes нехорошо с эстетических соображений (каждый раз после запуска скрипта открывается ненужное окно консоли).
Может сможешь как то поправить ???

ALL
Компиляция SciTE для чайников
SciTE 1.67 .1 Ru
Автор: Grisper
Дата сообщения: 31.01.2006 10:21
а в контекстное меню можно добавлять что-нибудь?
хочу поиск текста скриптик не из меню а по правому клику делать

Добавлено:
ещё странно ведет себя скрипт поиска текста
есть текстовый файл:

Цитата:

------- D:\Work\tbmmedia\dialogs\filling_dialogs_act2sb.sxc ------------
conversion failed at D:\Work\tbmmedia\declarations\xls_export\sxc2csv.pl line 94.

при поиске "filling_dialogs_act2sb.sxc" переходит куда нужно
при поиске "line 94" переходит на line94 файла sxc2csv.pl

как починить?
Автор: mimir
Дата сообщения: 31.01.2006 11:15
По поводу скрипта поиска текста.

1. Если нет ни одного вхождения то получаем ошибку.
надо добавить проверку типа

local s,e = editor:findtext(sText,flag,0)
local count = 0
>> if(s~=nil)then
local m = editor:LineFromPosition(s) - 1
while s do
2. Периодически вылетает АВ при использовании в данном скрипте luawin.dll.
Может кто сталкивался.

mozers

Цитата:
работает только если в command.mode. нету параметра quiet:yes

посмотри ПМ

Автор: mozers
Дата сообщения: 31.01.2006 13:05
Grisper

Цитата:
а в контекстное меню можно добавлять что-нибудь?

А "версию для печати" разок посмотреть? Все твои вопросы уже отвечались.
ДА можно. user.context.menu=

Цитата:
ещё странно ведет себя скрипт поиска текста
Угу. Забавно Как починить не знаю. Случай, можно сказать, уникальный.

mimir
1. Скрипт поправил
2. Я - нет

3. Круто ВСЕ РАБОТАЕТ Откомпилированный вариант обновил.
Может так и до abbrev.properties доберешься ?
Автор: Grisper
Дата сообщения: 31.01.2006 13:36

Цитата:
А "версию для печати" разок посмотреть? Все твои вопросы уже отвечались.
ДА можно. user.context.menu=


Код:
    user.context.menu=\
    ||\
    Find Text|????????????????|\
Автор: mozers
Дата сообщения: 31.01.2006 15:01
Grisper
2 клика:
http://www.google.com/search?hl=ru&q=site%3Aforum.ru-board.com+user.context.menu
http://forum.ru-board.com/topic.cgi?forum=5&topic=3215&start=320
и результат
http://forum.ru-board.com/topic.cgi?forum=5&topic=3215&start=323&limit=1
Автор: Grisper
Дата сообщения: 31.01.2006 17:11
mozers, угу спасибо

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869

Предыдущая тема: LeechGet


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.