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

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

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


Автор: mozers, Отправлено:20:50 18-01-2006
VictorGS
Цитата:
НО нигде в настройках "style.*.1=" у меня нету
Есть
Ты забыл поглядеть файлы, подключенные директивой import
Это, обычно .properties различных языков программирования. В твоем случае это - cpp.properties:
Код:
# Comment: /* */.
style.cpp.1=fore:#008000,$(font.code.comment.box)
# Line Comment: //.
style.cpp.2=fore:#008000,$(font.code.comment.line)
# Doc comment: block comments beginning with /** or /*!
style.cpp.3=$(colour.code.comment.doc),$(font.code.comment.doc)

Как видим, тут нехорошие люди пользуют как пользовательские переменные font.code.comment. которые удобно менять глобально (Щелк - и изменился стиль всех комментов во всех языках) так и фиксированные значения fore:#008000 (котрые надо менять в каждом из языков отдельно - поубивал бы...
Автор: ilyaor, Отправлено:09:01 19-01-2006
хм.. и верно - хрен ответили =) а насчёт первого поста - сие иллюзия =) был я на борде , правда давно сие было. а про данный редактор на русском точно больше нигде не пишут. даже непонятнопочем почему. ладно . уточним вопрос (продолжим тормозить )
итак - куда сие прописать
" ToolsCommand (8,'Перевести в ВЕРХНИЙ регистр','InvertCase U','Ctrl+Shift+U')
ToolsCommand (9,'Перевести в нижний регистр','InvertCase L','Ctrl+U')
ToolsCommand (10,'Увеличить шрифт','Zoom_In','Ctrl+KeypadPlus')
ToolsCommand (11,'Уменьшить шрифт','Zoom_Out','Ctrl+KeypadMinus')
ToolsCommand (32,'Проверка орфографии','SpellCheck $(SciteDefaultHome)\\tools\\SpellCheck.vbs','')" ???
как я понимаю - должен был заработать в тулз пунктик для автоматической установки ? так вот - нельзя ли поточнее написать процесс установким того пкнктика. вот. вопрос естественно к автору сего творения "- ======================================================
-- Функция для быстрого добавления команд в меню Tools
-- (Для тех, кому лень вручную прописывать 5 строк для каждой команды в .properties) "
пасибки заранее (иначе - дошШшвидания )

Автор: mozers, Отправлено:10:26 19-01-2006
ilyaor
Цитата:
и верно - хрен ответили =)
А что отвечать? Вопрос подключения и так подробно расписан.
Если ты не понимаешь - пиши на личный - будем выяснять где эти неясности.
Я даже не понимаю щас КАК написать, чтоб было понятнее
Если честно - догадываюсь где можно ошибиться... Но все это выливается в достаточно большую по объему статью, которую я все редактирую и редактирую...

Цитата:
итак - куда сие прописать
В SciTEStartup.lua
Или что там грузится у тебя по директиве
ext.lua.startup.script=$(SciteDefaultHome)\tools\SciTEStartup.lua

Все ToolsCommand будут работать (т.е. добавятся в меню Tools) только если в SciTEStartup.lua ты прописал соответствующую процедуру.
Если нет - забивай все эти команды в меню Tools ручками.

Команды эти сами ничего не делают - лишь вызывают соответствующие скрипты, которые и выполняют работу...
Ну RFTM короче...
Автор: ilyaor, Отправлено:10:50 19-01-2006
вот незадача . расскажу-таки что было на самом деле (разобралси я =))
думаю, что и другие могут на сие напороться..
ToolsCommand (*,'*','*','*') прописывать в вашем *.lua а не в User.properties , Global и тд ..
я-таки по наитию разделил сам скрипт "тулз" ..
не смешно , но зато про войну =) беспорно данный способ удобнее. поэксперементирую и може и что-нибудь своё стоящее сварганю. рид факин мануал тут не при чём =) спасибо за скорую помощь =)
Автор: mozers, Отправлено:10:52 20-01-2006
Вот и я тоже - разобрался

После долгих и мучительных поисков наконец то было найдено решение, позволяющее элегантно возвращать значение из внешних скриптов в редактор.
Заключается он в том, что результат необходимо писать в StdIn и тогда SciTE подхватит возвращаемое значение
Теперь открыта возможность полноценной работы с мощнейшими по возможностям WSH скриптами!
Потеснись LUA Ща мы такое изобразим что тебе и не снилось!!!

Вот полезный примерчик:
- Вызывает системный диалог выбора цвета
- Результат выбора заменяет выделенное в редакторе значение цвета

Те щас выделяем к примеру этот текст и выбираем в меню "Выбор цвета".
Скрипт сам найдет в выделенном вот этот #DF4FD0 цвет и в стандартном виндусовом окне выбора цвета, Вы сможете его сменить на другой. После выбора это значение автоматом перепишется.

Автор: Grisper, Отправлено:13:28 21-01-2006
У меня есть .api длф LUA
Как по-человечески сделать раскраску для них?

(Сейчас я просто добавил в lua.properties функции.)

ещё непонятно как сделать чтобы подкрашивались функции self:ISOpened
двоеточие не понимает =(
с точкой то же самое работает
(
в глобальных
chars.tochka=.
в луапропертис
word.chars.lua=$(chars.tochka)$(chars.alpha)$(chars.numeric)_%
)

Автор: mozers, Отправлено:01:18 22-01-2006
Grisper
Цитата:
У меня есть .api длф LUA
Как по-человечески сделать раскраску для них?

Чего красим то?
Файлы *.api или *.lua?
У LUA разработчики сами постаралиь. Имхо - нормальная раскраска.
Файлы .api хрен раскрасишь (слишком они разные по структуре, несмотря на одинаковое расширение).

Цитата:
ещё непонятно как сделать чтобы подкрашивались функции self:ISOpened

Еще непонятно с файлом какого расширения ты работаешь и как ты хочешь чтобы эти функции были раскрашены? Приведи кусок кода и раскрась его тут (прямо в своем посте) как тебе хочется. Иначе - просто непонятно что ты хочешь.

Автор: Grisper, Отправлено:01:29 22-01-2006
Красим LUA
хочу поменять цвет фона у self.QUESTNAME self:IsOpened Game.ShowId
3 разных цвета фона

пример кода :


Код:

QuestMy1 = {

QUESTNAME = "questmy1"
, STATE_OPENED = 1
, STATE_DONE = 2

, IsOpened = function (self)
return player[self.QUESTNAME.."state"]==self.STATE_OPENED
end

...

, Click1 = function (self, id)
Game.ShowId(id)
end

, Click2 = function (self, id)
if self:IsOpened() then self:Click1 (id) end
end

}

Автор: mozers, Отправлено:10:31 23-01-2006
Grisper
Разве это - LUA скрипт ??? Откуда такое ???
Автор: Grisper, Отправлено:12:02 23-01-2006
mozers
да, компилится и работает.
LUA как бы умеет объекты вполне себе
откуда - написал

вопрос прежний - как покрасить?

P.S. это LUA5

Автор: mozers, Отправлено:15:43 23-01-2006
Звиняй, дорогой. Серьезно уж что то очень...

Цитата:
Сейчас я просто добавил в lua.properties функции
Я бы поступил так же.

Цитата:
двоеточие не понимает
Похоже на правду Имхо - только лексер переписывать...
Если сам что придумаешь, не сочти за труд, - стуни сюда.

Может кто поквалифицированней ответит?
Автор: Grisper, Отправлено:16:14 23-01-2006

Цитата:
Похоже на правду Имхо - только лексер переписывать...

а где он? может попробую переписать

Добавлено:
Также интересует как вынести эти функции (их раскраску) в отдельный файл, чтоб потом с помощью import его подключить и не загромождать lua.properties
Автор: mozers, Отправлено:16:59 23-01-2006
Grisper
1. Лексер - это SciLexer.dll .В некоторых сборках (Sc1) интегрирован внутрь SciTE.exe. Сырцы - свободно на хомяке.
2. Так и выноси как хочешь, а потом подключишь (не понял в чем проблема
Главное - учесть тот момент, что значения параметров, расположенные по тексту ниже - главнее тех кто выше. Все.
Автор: mimir, Отправлено:08:58 24-01-2006
Вот уже больше недели использую SciTE, и очень доволен, но вот только folding в SQL немного глючит. Помогает либо заново подключить файл нестроек SQL или свернуть все.
Ни кто не сталкивался?
И еще если кому надо могу выложить текст комплита который берет слова из api и из файла.
Автор: dB6, Отправлено:17:01 24-01-2006
mimir

Цитата:
но вот только folding в SQL немного глючит

Он не только в SQL немного глючит
В PHP плохо понимает here-documents:/


Цитата:
И еще если кому надо могу выложить текст комплита который берет слова из api и из файла.

Выкладывай есесно! Посмотрим.
Автор: mimir, Отправлено:15:36 26-01-2006
Сижу ни диалапе такчто выкладываю
текст процедуры автокомплита для api+файл сдесь.
Работает и ладно

Начал разбираться с фолдингом SQL.
Может ктонибудь пытался раньше разбираться, буду рад любой помощи.

bool SciTEBase::StartAutoComplete() {
SString line = GetLine();
    int current = GetCaretInLine();
    if (current >= line.size())
        return false;

    int startword = current;
    // Autocompletion of pure numbers is mostly an annoyance
    bool allNumber = true;
    while (startword > 0 && wordCharacters.contains(line[startword - 1])) {
        startword--;
        if (line[startword] < '0' || line[startword] > '9') {
            allNumber = false;
        }
    }
    bool onlyOneWord=false;
    if (startword == current || allNumber)
        return true;
    SString root = line.substr(startword, current - startword);
    int doclen = LengthDocument();
    TextToFind ft = {{0, 0}, 0, {0, 0}};
    ft.lpstrText = const_cast<char*>(root.c_str());
    ft.chrg.cpMin = 0;
    ft.chrgText.cpMin = 0;
    ft.chrgText.cpMax = 0;
    int flags = SCFIND_WORDSTART | (autoCompleteIgnoreCase ? 0 : SCFIND_MATCHCASE);
    int posCurrentWord = SendEditor(SCI_GETCURRENTPOS) - root.length();
    unsigned int minWordLength = 0;
    unsigned int nwords = 0;

    // wordsNear contains a list of words separated by single spaces and with a space
    // at the start and end. This makes it easy to search for words.
    SString wordsNear;
    wordsNear.setsizegrowth(1000);
    wordsNear += " ";

    for (;;) {    // search all the document
        ft.chrg.cpMax = doclen;
        int posFind = SendEditorString(SCI_FINDTEXT, flags, reinterpret_cast<char *>(&ft));
        if (posFind == -1 || posFind >= doclen)
            break;
        if (posFind == posCurrentWord) {
            ft.chrg.cpMin = posFind + root.length();
            continue;
        }
        // Grab the word and put spaces around it
        const unsigned int wordMaxSize = 800;
        char wordstart[wordMaxSize];
        wordstart[0] = ' ';
        GetRange(wEditor, posFind, Platform::Minimum(posFind + wordMaxSize - 3, doclen), wordstart + 1);
        char *wordend = wordstart + 1 + root.length();
        while (iswordcharforsel(*wordend))            wordend++;
        *wordend++ = ' ';
        *wordend = '\0';
        unsigned int wordlen = wordend - wordstart - 2;
        if (wordlen > root.length()) {
            if (!wordsNear.contains(wordstart)) {    // add a new entry
                wordsNear += wordstart + 1;
                if (minWordLength < wordlen)
                     minWordLength = wordlen;

                nwords++;
                if (onlyOneWord && nwords > 1) {
                     return true;
                }
            }
        }
        ft.chrg.cpMin = posFind + wordlen;
    }
    
    if (apis) {
        char *words = apis.GetNearestWords(root.c_str(), root.length(),
                                              autoCompleteIgnoreCase, calltipParametersStart[0]);
        if (words) {
wordsNear += words;
            delete []words;
        }
    }

    size_t length = wordsNear.length();
if ((length > 2) && (!onlyOneWord || (minWordLength > root.length()))) {
        WordList wl;
        wl.Set(wordsNear.c_str());
        char *words = wl.GetNearestWords("", 0, autoCompleteIgnoreCase);
EliminateDuplicateWords(words);
        SendEditorString(SCI_AUTOCSHOW, root.length(), words);
        delete []words;
    } else {
        SendEditor(SCI_AUTOCCANCEL);
    }
    return true;

}


Автор: Grisper, Отправлено:16:04 26-01-2006
mozers
в lua.properties написано:

Цитата:
# I keep keywords5, 6, 7 & 8 for other libraries    


я вот хочу их заюзать чтобы покрасить функции Game.Init Game.ShowId одним стилем,
а Client.Init Client.ShowId другим
(сейчас я просто добавил эти имена в keywordclass2.lua4 keywordclass3.lua4)

что нужно в lua.properties прописать чтобы добавленное

Цитата:
keywords7.lua=Client.Init Client.ShowId

покрасилось в нужный мне цвет?

Автор: mozers, Отправлено:22:38 26-01-2006
Grisper
Я сделал так: В оригинальный lua.properties добавил
Код:
keywordclass5.lua5=Game.Init Game.ShowId
keywordclass6.lua5=Client.Init Client.ShowId
keywords5.$(file.patterns.lua)=$(keywordclass5.lua5)
keywords6.$(file.patterns.lua)=$(keywordclass6.lua5)

Файл test.lua у меня раскрасился так:
Код:
Game.Init
Game.ShowId

Client.Init
Client.ShowId

Точнее в оригинале разный не цвет сиволов, а цвет фона (просто этот форум не позволяет изменять цвет фона).
Т.е. как ты и хотел
Цитата:
Game.Init Game.ShowId одним стилем, а Client.Init Client.ShowId другим



Добавлено:
mimir
Извини, не понял (ну тупой я) как к SciTE подключить твой скрипт?
Встроенными средствами не получится? (надо устанавливать внешний обработчик)?
Я так понял что нажатие Ctrl+Enter после написания, допустим WScript. будет вызывать список вариантов завершения (WScript.Echo, WScript.Arguments, WScript.FullName,...), если таковые имеются в API-файле?
И, пожалуйста, поподробнее. Очень интересно.

Добавлено:
ALL
Хочу поделится с вами двумя серьезными багами SciTE, которые резко тормознули мой процесс автоматизации редактора
Файл test.vbs:
Код:
s = WScript.StdIn.ReadAll
WScript.Echo s
WScript.StdOut.Write s
из .properties:
Код:
command.name.47.*=replace_TEST
command.47.*=wscript "$(SciteDefaultHome)\tools\test.vbs"
command.input.47.*=$(CurrentSelection)
command.mode.47.*=subsystem:windows,replaceselection:auto,savebefore:no

Бестолковый скрипт читает выделенный в редакторе текст и меняет его на прочитанное (т.е. на то же самое). Все бы ничего, но
Баг №1: Если выделим русские символы, то с удивлением обнаружим, что они заменились на крякозяблы. Почему? А все потому что SciTE в StdIn отдает текст, всегда в кодировке UTF-8, игнорируя параметр character.set=204
Баг №2: Если мы запустим этот скрипт, ничего не выделив в редакторе, то получим классный зависон. Почему? Потому что SciTE в таком случае должен отдавать метку EndOfStream, а он не отдает ничего. Вот скрипт и виснет, ожидая конца потока.
Вот такие унылые баги
Люди добрые, для кого общение на английском не проблема - пробейте эти баги в офф. форуме - пусть разработчики почешутся. А я уж вам скриптов настрогаю...
Автор: mimir, Отправлено:07:09 27-01-2006
mozers

Цитата:
Извини, не понял (ну тупой я) как к SciTE подключить твой скрипт?


Все очень просто.
1. открыть SciTE.
2. Открыть SciteBase.cxx.
3. Заменить там функцию.
4. Компилируем.
5. Enjoy

Просьба сильно не пинать, я честно думал то что это исходник абсолютно понятно.
А с помощью скрипта этого сделать IMHO нельзя

Автор: mozers, Отправлено:08:58 27-01-2006
mimir
Так все таки:

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

Вообще круто, что ты на С пишешь. Может и баги, про которые я говорил, поправить можешь?



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