сделать стартовой  |  добавить в избранное

   SciTE - редактор кода для программистов

Архив SciTE-форума


Автор: mimir, Отправлено:10:39 27-01-2006
Изначально есть 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, Отправлено:11:53 27-01-2006
mozers
ага, вроде заработала раскраска. спасибо.


Автор: mimir, Отправлено:13:00 27-01-2006
Как в скрипте можно взять текст из консоли по аналогии с editor:GetSelText().
Хочу подправить скрипт поиска файлов.
Автор: mozers, Отправлено:14:57 27-01-2006
mimir
Спасибо. Теперь все ясно

Цитата:
взять текст из консоли
Зачем так то? (Все равно что со скриншота Ворда распознавать текст в нем набираемый). Неужели нельзя сделать всю обработку текста до его вывода в консоль???
Автор: mimir, Отправлено:16:00 27-01-2006

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

Там все предельно просто - после того как получили текущую кодовую страницу
идет проверка на 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, Отправлено:00:25 28-01-2006
mimir

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

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

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

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

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


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

Автор: mimir, Отправлено:12:51 28-01-2006

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

Да.

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

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


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

Спасибо

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

???


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

Добавлено:
Ушло
Автор: mozers, Отправлено:22:13 28-01-2006
В общем так: Взял оригинальный скрипт, поудалял там какие то циклы непонятно зачем нужные, добавил запрос на ввод, если ничего не выделено, ну и оформил по человечески.
Файл 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, Отправлено:12:15 29-01-2006
Спасибо за скрипт вот только я ни как не могу найти DLL.
Может кто даст ссылку
Автор: mozers, Отправлено:12:28 29-01-2006
http://total.altruistic.ru/temp/scite/luaext.zip
Автор: mimir, Отправлено:18:07 29-01-2006
Не работает.
Автор: mirk, Отправлено:20:49 29-01-2006
На SciTE.ruteam.ru две новые статьи:
Интерфейс командной строки для SciTE
Утилита представляет собой интерфейс командной строки позволяющий выполнять различные команды, такие как: "Выполнить SciTE команду", "Открыть файл" и т.д.

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

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

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

Автор: mirk, Отправлено:01:14 30-01-2006

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


Странный вопрос, выкладывай конечно
Автор: mimir, Отправлено:07:12 30-01-2006

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

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

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

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


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

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

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

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

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

mirk
Лови Readme нету, но я думаю, разберешся.




1 / 2 / 3 / 4 / 5 / 6 / 7 / 8 / 9 / 10 / 11 / 12 / 13 / 14 / 15 / 16 / 17 / 18 / 19 / 20 / 21 / 22 / 23 / 24 / 25 / 26 / 27 / 28 / 29 / 30 / 31 / 32 / 33 / 34 / 35 / 36 / 37 / 38 / 39 / 40 / 41 / 42 / 43 / 44 / 45 / 46 / 47 / 48 / 49 / 50 / 51 / 52 / 53 / 54 / 55 / 56 / 57 / 58 / 59 / 60 / 61 / 62 / 63 / 64 / 65 / 66 / 67 / 68 / 69 / 70 / 71 / 72 / 73 / 74 / 75 / 76 / 77 / 78 / 79 / 80 / 81 / 82 / 83 / 84 / 85 / 86 / 87 / 88 / 89 / 90 / 91 / 92 / 93 / 94 / 95 / 96 / 97 / 98 / 99 / 100 / 101 / 102 / 103 / 104 / 105 / 106 / 107 / 108 / 109 / 110 / 111 / 112 / 113 / 114 / 115 / 116 / 117 / 118 / 119 / 120 / 121 / 122 / 123 / 124 / 125 / 126 / 127 / 128 / 129 / 130 / 131 / 132 / 133 / 134 / 135 / 136 / 137 / 138 / 139 / 140 / 141 / 142 / 143 / 144 / 145 / 146 / 147 / 148 / 149 / 150 / 151 / 152 / 153 / 154 / 155 / 156 / 157 / 158 / 159 / 160 / 161 / 162 / 163 / 164 / 165 / 166 / 167 / 168 / 169 / 170 / 171 / 172 / 173 / 174 / 175 / 176 / 177 / 178 / 179 / 180 / 181 / 182 / 183 / 184 / 185 / 186 / 187 / 188 / 189 / 190 / 191 / 192 / 193 / 194 / 195 / 196 / 197 / 198 / 199 / 200 / 201 / 202 / 203 / 204 / 205 / 206 / 207 / 208 / 209 / 210 / 211 / 212 / 213 /
SciTE © 2004 - 2011