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

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

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


Автор: vladvro, Отправлено:00:49 10-09-2008
VladimirUlyanov

Цитата:
api.$(file.patterns.java)=$(SciteDefaultHome)\api\java150.api
word.characters.$(file.patterns.java)=$(word.chars.cxx)

для использования этих конструкций требуется дать определение для file.patterns.java, т.к. в сборке такого нет.
например так:
Код:
file.patterns.java=*.java


Цитата:
calltip.java.word.characters=$(chars.alpha)$(chars.numeric)_
calltip.java.parameters.start=(
calltip.java.parameters.separators=,

это работать не будет, так как в этих параметрах указывается имя лексера, а лексером для java является cpp.
Собственно поэтому и определение для java файлов находится в файле cpp.properties, но это так, к сведению, понятно, что все это можно переопределить в файле настроек пользователя.
Автор: VladimirUlyanov, Отправлено:08:13 10-09-2008
Спасибо, vladvro. Теперь заработало. Итоговый список добавлений:

file.patterns.java=*.java
lexer.$(file.patterns.java)=cpp
autocomplete.java.start.characters=.
word.characters.$(file.patterns.java)=$(word.chars.cxx)
calltip.java.word.characters=$(chars.alpha)$(chars.numeric)_
calltip.java.parameters.start=(
calltip.java.parameters.separators=,

Только при показе подсказки для конструкторов класса Вместо списка - всего одна строка со стрелочками вверх-вниз. Как-нибудь можно определять количество строк в данном всплывающем меню?
Автор: vladvro, Отправлено:13:44 10-09-2008
VladimirUlyanov

Цитата:
autocomplete.java.start.characters=.
calltip.java.word.characters=$(chars.alpha)$(chars.numeric)_
calltip.java.parameters.start=(
calltip.java.parameters.separators=,

можно убрать, как я уже писал выше определять надо для лексера, а это cpp, а не java, а для него в сборке уже есть идентичные определения.

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

если я правильно понял, то это должно помоч
Код:
calltip.cpp.show.per.page=3

Автор: kort19, Отправлено:17:07 10-09-2008
Ну молодцы,мужики.Работаю с MASM-ом, у них там qeditor бесит просто.Ваше творение его в глубокой жопе оставило.Очень приятно работать!!!Самое главное то, что весь интерфейс можно под себя подогнать.СПАСИБО!!!
Автор: vectoroc, Отправлено:17:59 10-09-2008
BioInfo
Немного неточно выразился. При переносе скобки на следующую строку перед скобкой ещё ставится дополнительный таб, вот это меня и раздражало. Закомментировав указанные строки, я решил свою проблему с табами.


Автор: frs, Отправлено:20:01 12-09-2008
Ради развлечения чуток переделал CodePoster - пару функций убрал, одну переделал. Не думаю, что он от этого стал лучше. Кидаю просто как образец кода для интересующихся.

code-poster3.lua : [more]
Код:

-- Code Poster 2 
-- комменты скипнул, для сокращения поста
---------------------------------------------------

function DEC_HEX(IN)
local B,K,OUT,I,D=16,"0123456789ABCDEF","",0
while IN>0 do
I=I+1
IN,D=math.floor(IN/B),math.mod(IN,B)+1
OUT=string.sub(K,D,D)..OUT
end
OUT = string.match("000000"..OUT,'%x%x%x%x%x%x$')
OUT = string.gsub(OUT,'(%x%x)(%x%x)(%x%x)','%3%2%1')
return OUT
end

local function
ReplaceForumTag(pos)
local tag = editor:textrange(pos+1, pos+3)
if string.sub(tag, 1, 1) == "/" then
tag = editor:textrange(pos+2, pos+4)
end
if
tag == "b]" or tag == "i]" or tag == "s]" or tag == "u]" or tag == "st" or tag == "c]" or tag == "ce" or tag == "su" or tag == "si" or tag == "co" or tag == "fo" or tag == "qu" or tag == "q]" or tag == "no" or tag == "hr" or tag == "ur" or tag == "em" or tag == "im" or tag == "li" or tag == "*]" or tag == "ta" or tag == "tr" or tag == "br" or tag == "#]" or tag == "mo" then
return
"[no][[/no]no][[no][[/no]/no]"
else
return
"["
end
end

-----------------------------------

local sel_start = editor.SelectionStart
local sel_end = editor.SelectionEnd
local line_start = editor:LineFromPosition(sel_start)+1
-- Если ничего не выделено, то берем весь текст
if sel_start == sel_end then
line_start = 0
sel_start = 0
sel_end = editor:PositionFromLine(editor.LineCount)
end

local
fore
local fore_old = 0
local italics
local italics_old = false
local
bold
local bold_old = false
local
forum_text =""
-----------------------------------
for i = sel_start, sel_end-1 do
local
char = editor:textrange(i,i+1)
if char == "\t" then char = string.rep(" ", props["tabsize"]) end
if
char == "[" then char = ReplaceForumTag(i) end
if not
string.find(char,"%s") then
local
style_num = editor.StyleAt[no][[/no]i]
--------------------------------------------
italics = editor.StyleItalic[no][[/no]style_num]
if italics ~= italics_old then
if
italics then
forum_text = forum_text.."[no][[/no]i]"
else
forum_text = forum_text.."[no][[/no]/i]"
end
italics_old = italics
end
--------------------------------------------
bold = editor.StyleBold[no][[/no]style_num]
if bold ~= bold_old then
if
bold then
forum_text = forum_text.."[no][[/no]b]"
else
forum_text = forum_text.."[no][[/no]/b]"
end
bold_old = bold
end
--------------------------------------------
fore = editor.StyleFore[no][[/no]style_num]
if fore ~= fore_old and fore_old ~= 0 then
forum_text = forum_text.."[no][[/no]/color]"
end
if
fore ~= fore_old and fore ~= 0 then
forum_text = forum_text.."[no][[/no]color=#"..DEC_HEX(fore).."]"
end
fore_old = fore
end
forum_text = forum_text..char
end
-----------------------------------
if fore ~= 0 then
forum_text = forum_text.."[no][[/no]/color]"
end
if
italics then
forum_text = forum_text.."[no][[/no]/i]"
end
if
bold then
forum_text = forum_text.."[no][[/no]/b]"
end
-----------------------------------

local header = "[no][[/no]b][no][[/no]color=Blue]"..props["FileNameExt"].."[no][[/no]/color][no][[/no]/b]"
if line_start ~= 0 then
header = header.." [no][[/no]s][[no][[/no]b]строка "..line_start.."[no][[/no]/b]][no][[/no]/s]"
end
local
more = ""
local more_end = ""
if editor:LineFromPosition(sel_end) - line_start > 10 then
more = "[no][[/no]more]"
more_end = "[no][[/no]/more]"
end

forum_text = header.." : "..more.."[no][[/no]code]"..forum_text.."[no][[/no]/code]"..more_end
editor:CopyText(forum_text)
shell.msgbox ("Код для форума успешно сформирован\n и помещен в буфер обмена", "Формирование кода для форума")
[/more]
Автор: mozers, Отправлено:12:33 13-09-2008
frs
Не скажу за других, но меня всегда привлекало внутреннее содержимое скриптов больше, нежели их внешнее поведение.
Твой скрипт выдает код форума байт-в-байт такой же как и прежний вариант. Но вот то, как он его формирует мне показалось более заслуживающим внимание общественности
Думаю, что надо обновить code-poster.lua в сборке.
Автор: frs, Отправлено:23:07 13-09-2008
извиняюсь за торопливость, в 102-й строке должно быть
if fore ~= 0 then
вместо
if fore ~= nil then
Автор: mozers, Отправлено:09:20 14-09-2008
ALL
Вот что Нейл ответил мне по поводу официального форума http://groups.google.com/group/scite-interest/
Цитата:
> scite-interest will work?

The scite-interest group appears to be deleted. The accounts of
Kein-Hong Man and myself have been banned from all Google Groups. It
is possible the 'polartest' spammer did this and it is also possible
that Google did this in response to the spamming. Kein-Hong is trying
to resolve the situation but so far we have not received any response
from Google.

Neil

Автор: Voyager_plus, Отправлено:19:25 14-09-2008
Установил себе толко что SciTE попробовал зарегистрировать расширения и добавить в контекстное меню "Open qith SciTE", с помощью WinIntegrator а мне выдается ошибка

Цитата:
Строка 260
Символ: 3
Ошибка: Неверная ссылка на корень в разделе реестра "HKCR\*\shell\Open with SciTE".
Код: 0

У меня Vista хотя от этого не должно зависеть вроде.
Что-то я торможу и не могу въехать в чем собственно проблема.
Автор: mozers, Отправлено:20:43 14-09-2008
Voyager_plus
WinIntegrator на Vista не тестировался. Возможно там контекстное меню по другому добавляется... У меня Висты нету, поэтому исправить ошибку сможем только вместе.
Пришли мне на mozers(собака)mail.ru экспорт ветки [HKEY_CLASSES_ROOT\*]

Добавлено:
А вообще похоже что у тебя SciTE_WinIntegrator.hta - битый, поскольку эта ошибка если и возникнет, то никак не в 260 строке, а в 351.
Автор: Voyager_plus, Отправлено:23:10 14-09-2008
У меня еще была сборка 57. с другого сайта скачаная. Сейчас установил 59. Что здесь висит.
ЭЭЭ... Попробовал переустановить просто удалив предыдущую верси и распоковав эту... в результате сначала не хотела запусаться а после небольшого шаманства все встало в норму, только русская локализация не заработала пока. пошаманить еще видимо надо.
Нет, сразу после установки запускаться программа отказывается. А если убрать или переименовать файл свойств локализации больше не ругается.

Как обратно можно включить локализацию?
Автор: mozers, Отправлено:14:18 15-09-2008
Voyager_plus
Принцип работы - таков.
В инсталляшке лежит файл locale_rus.properties
После инсталляции автоматом запускается WinIntegrator.hta
Если в нем выбрать язык интерфейса - "Russian" то файл locale.rus переименовывается в locale_rus.properties и мы получаем русский язык в SciTE.
Если выбор остался на "English" то ничего не меняется.
WinIntegrator можно запустить и потом (через меню или непосредственно) и через него сменить язык.
А можно просто переименовать файл вручную.
Автор: Voyager_plus, Отправлено:18:12 15-09-2008
С локализацией разобрался. Сенкс.
Хотя WinIntegrator продолжает неизвестно как работать.
Автор: frs, Отправлено:19:18 15-09-2008
Вариация на тему SideBar - перепривязал определения функций к лексеру вместо расширения. Из минусов - js функции теперь определяются по cpp строке, но, имхо, плюсы перевешивают.
М.б. в будущем стоит воткнуть паттерны функций в language.properties?
SideBar2.lua: [more]
Код:
function fill_list_func()
list_func:clear()

local findRegExp1 = {
cpp="([^.,<>=\n]-[ :][^.,<>=\n%s]+[(][^.<>=)]-[)])[%s\/}]-%b{}",
vb="(\n[Public ]*[Private ]*[SsFfP][Uur][BbNno][^\r]-)\r",
vbscript="(\n[SsFf][Uu][BbNn][^\r]-)\r",
css="([%w.#-_]+)[%s}]-%b{}",
pascal="\n[pPfF][rRuU][oOnN][cC][eEtT][dDiI][uUoO][rRnN].(.-%b().-)\n",
python="\n%s-([dc][el][fa]%s-.-):"
}
-- js="(\n[^,<>\n]-function[^(]-%b())[^{]-%b{}",
local findPattern = findRegExp1 [editor.LexerLanguage]

if findPattern == nil then
findPattern = "\n[local ]*[SsFf][Uu][BbNn][^ .]* ([^(]*%b())"
end
local
textAll = editor:GetText()
local startPos, endPos, findString
startPos = 1
while true do
startPos, endPos, findString = string.find(textAll, findPattern, startPos)
if startPos == nil then break end
findString = findString:gsub("[\r\n]", ""):gsub("%s+", " ")
local line_number = editor:LineFromPosition(startPos)
list_func:add_item(findString, line_number)
startPos = endPos + 1
end
end
[/more]
Автор: vladvro, Отправлено:22:33 15-09-2008
frs

Цитата:
перепривязал определения функций к лексеру вместо расширения. Из минусов - js функции теперь определяются по cpp строке, но, имхо, плюсы перевешивают.

минусы вижу отчетливо, особо для лексера cpp, как использумого наиболее активно, а вот плюсов увы не вижу, можно их перечислить, пожалуйста.
Автор: frs, Отправлено:22:58 15-09-2008
плюсы - вместо дублирования строк паттерна на каждое расширение обходимся одной строкой
например для паскаля надо прописать 6 строк
file.patterns.pascal=*.dpr;*.dpk;*.pas;*.dfm;*.inc;*.pp
для бейсика восемь
file.patterns.vb=*.vb;*.bas;*.frm;*.cls;*.ctl;*.pag;*.dsr;*.dob
и т.д. и т.п.
для универсализации возможно было бы лучше прописывать паттерны на соответствующие file.patterns.lang из lang.properties, тогда для cpp лексера получится около 9-ти паттернов (да и те можно объединить), а не прописывать кучу сходных на каждое расширение, см. список.
file.patterns.cpp=*.c;*.cc;*.cpp;*.cxx;*.h;*.hh;*.hpp;*.hxx;*.sma
file.patterns.cplusplus=*.cc;*.cpp;*.cxx
file.patterns.test=*.pln;*.inc;*.t
file.patterns.cs=*.cs
file.patterns.rc=*.rc;*.rc2;*.dlg
file.patterns.idl=*.idl;*.odl
file.patterns.flash=*.as;*.asc;*.jsfl
file.patterns.ch=*.ch;*.chf;*.chs
file.patterns.wsh=*.js;*.wsf
+ dlg rc rc2 mak

ещё плюс в том, что я могу сменить подсветку текущего файла и перепоймать список функций в соответствии с назначенной мной подсветкой/лексером
Автор: mozers, Отправлено:00:16 16-09-2008
frs
Цитата:
вместо дублирования строк паттерна на каждое расширение обходимся одной строкой
Дублирование мне самому не очень... Но и твой вариант не понравился.

Цитата:
ещё плюс в том, что я могу сменить подсветку текущего файла и перепоймать список функций
А оно надо?

Мне кажется что можно привязать паттерн, соответствующий текущему лексеру к определенному рексепу... Надо подумать...
Автор: frs, Отправлено:00:34 16-09-2008
Можно объединить методы, не лезть же каждый раз в SideBar добавляя недостающее расширение, если дефолтный паттерн не устраивает.
SideBar2.lua [строка 228] : [more]
Код:
function fill_list_func()
list_func:clear()
local findRegExp = {
[
'cxx']="([^.,<>=\n]-[ :][^.,<>=\n%s]+[(][^.<>=)]-[)])[%s\/}]-%b{}",
[
'c']="([^.,<>=\n]-[ :][^.,<>=\n%s]+[(][^.<>=)]-[)])[%s\/}]-%b{}",
[
'h']="([^.,<>=\n]-[ :][^.,<>=\n%s]+[(][^.<>=)]-[)])[%s\/}]-%b{}",
[
'js']="(\n[^,<>\n]-function[^(]-%b())[^{]-%b{}",
[
'vbs']="(\n[SsFf][Uu][BbNn][^\r]-)\r",
[
'css']="([%w.#-_]+)[%s}]-%b{}",
[
'pas']="\n[pPfF][rRuU][oOnN][cC][eEtT][dDiI][uUoO][rRnN].(.-%b().-)\n",
[
'py']="\n%s-([dc][el][fa]%s-.-):"
}
local findRegExp1 = {
cpp="([^.,<>=\n]-[ :][^.,<>=\n%s]+[(][^.<>=)]-[)])[%s\/}]-%b{}",
js="(\n[^,<>\n]-function[^(]-%b())[^{]-%b{}",
vb="(\n[Public ]*[Private ]*[SsFfP][Uur][BbNno][^\r]-)\r",
vbscript="(\n[SsFf][Uu][BbNn][^\r]-)\r",
css="([%w.#-_]+)[%s}]-%b{}",
pascal="\n[pPfF][rRuU][oOnN][cC][eEtT][dDiI][uUoO][rRnN].(.-%b().-)\n",
python="\n%s-([dc][el][fa]%s-.-):"
}
local findPattern = findRegExp [props["FileExt"]]

if findPattern == nil then
local
findPattern = findRegExp1 [editor.LexerLanguage]
if findPattern == nil then
findPattern = "\n[local ]*[SsFf][Uu][BbNn][^ .]* ([^(]*%b())"
end
end
local
textAll = editor:GetText()
local startPos, endPos, findString
startPos = 1
while true do
startPos, endPos, findString = string.find(textAll, findPattern, startPos)
if startPos == nil then break end
findString = findString:gsub("[\r\n]", ""):gsub("%s+", " ")
local line_number = editor:LineFromPosition(startPos)
list_func:add_item(findString, line_number)
startPos = endPos + 1
end
end
[/more]

Цитата:
А оно надо?
Мне оказалось полезно. Я протестировал кучу паттернов под различные языки не заводя и не разыскивая по компу файлов с соответствущими расширениями. В реальной практике у меня бывают под рукой текстовые файлы типа описаний программ или алгоритмов с включенными примерами кода одновременно на разных языках.
Автор: vladvro, Отправлено:01:19 16-09-2008
frs

Цитата:
плюсы - вместо дублирования строк паттерна на каждое расширение обходимся одной строкой
например для паскаля надо прописать 6 строк
file.patterns.pascal=*.dpr;*.dpk;*.pas;*.dfm;*.inc;*.pp
...

особого смысла экономить на этом я не вижу, но и дублировать смысла нет, но кто мешает привязать выражение сразу к ряду расширений, и взять их из файла настроек:

Код:
[props['file.patterns.cpp']]="([^.,<>=\n]-[ :][^.,<>=\n%s]+[(][^.<>=)]-[)])[%s\/}]-%b{}",


Цитата:
ещё плюс в том, что я могу сменить подсветку текущего файла и перепоймать список функций в соответствии с назначенной мной подсветкой/лексером

вот в этом смысл вижу, но полагаю, что надо оставить приоритет на расширении и добавить анализ по лексеру, если по расширению не нашли.



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