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

» SciTE - Open Source Text Editor for Windows & Linux

Автор: Voyager_plus
Дата сообщения: 14.09.2008 22:10
У меня еще была сборка 57. с другого сайта скачаная. Сейчас установил 59. Что здесь висит.
ЭЭЭ... Попробовал переустановить просто удалив предыдущую верси и распоковав эту... в результате сначала не хотела запусаться а после небольшого шаманства все встало в норму, только русская локализация не заработала пока. пошаманить еще видимо надо.
Нет, сразу после установки запускаться программа отказывается. А если убрать или переименовать файл свойств локализации больше не ругается.

Как обратно можно включить локализацию?
Автор: mozers
Дата сообщения: 15.09.2008 13:18
Voyager_plus
Принцип работы - таков.
В инсталляшке лежит файл locale_rus.properties
После инсталляции автоматом запускается WinIntegrator.hta
Если в нем выбрать язык интерфейса - "Russian" то файл locale.rus переименовывается в locale_rus.properties и мы получаем русский язык в SciTE.
Если выбор остался на "English" то ничего не меняется.
WinIntegrator можно запустить и потом (через меню или непосредственно) и через него сменить язык.
А можно просто переименовать файл вручную.
Автор: Voyager_plus
Дата сообщения: 15.09.2008 17:12
С локализацией разобрался. Сенкс.
Хотя WinIntegrator продолжает неизвестно как работать.
Автор: frs
Дата сообщения: 15.09.2008 18:18
Вариация на тему 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
Автор: vladvro
Дата сообщения: 15.09.2008 21:33
frs

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

минусы вижу отчетливо, особо для лексера cpp, как использумого наиболее активно, а вот плюсов увы не вижу, можно их перечислить, пожалуйста.
Автор: frs
Дата сообщения: 15.09.2008 21:58
плюсы - вместо дублирования строк паттерна на каждое расширение обходимся одной строкой
например для паскаля надо прописать 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
Дата сообщения: 15.09.2008 23:16
frs
Цитата:
вместо дублирования строк паттерна на каждое расширение обходимся одной строкой
Дублирование мне самому не очень... Но и твой вариант не понравился.

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

Мне кажется что можно привязать паттерн, соответствующий текущему лексеру к определенному рексепу... Надо подумать...
Автор: frs
Дата сообщения: 15.09.2008 23:34
Можно объединить методы, не лезть же каждый раз в 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
Автор: vladvro
Дата сообщения: 16.09.2008 00:19
frs

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

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

Код: [props['file.patterns.cpp']]="([^.,<>=\n]-[ :][^.,<>=\n%s]+[(][^.<>=)]-[)])[%s\/}]-%b{}",
Автор: vladvro
Дата сообщения: 16.09.2008 10:12
frs

Цитата:
Можно объединить методы, не лезть же каждый раз в SideBar добавляя недостающее расширение, если дефолтный паттерн не устраивает.

Верно.

mozers

Цитата:
Мне кажется что можно привязать паттерн, соответствующий текущему лексеру к определенному рексепу...

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

Добавлено:
немного поправил код
SideBar.lua [строка 297] : [more]
Код: ---------------------------------------------------------
-- List: Functions/Procedures
----------------------------------------------------------
list_func:on_double_click(function(idx)
local pos = list_func:get_item_data(idx)
if pos then
editor:GotoLine(pos)
editor.Focus = true
end
end
)

local FIND_FUNC_REG_EXP = {
[
'cpp']="([^.,<>=\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-.-):",
[
'*']="\n[local ]*[SsFf][Uu][BbNn][^ .]* ([^(]*%b())",
}
local FIND_FUNC_REG_EXP_LEX_IDX = {
[
'cpp']='cpp',
[
'js']='js',
[
'vb']='vbs',
[
'vbscript']='vbs',
[
'css']='css',
[
'pascal']='pas',
[
'python']='py',
}
local FIND_FUNC_REG_EXP_EXT_IDX = {}
local function fill_func_reg_exp_idx()
local patterns = {
[
props['file.patterns.cpp']]='cpp',
[
props['file.patterns.wsh']]='js',
[
props['file.patterns.vb']]='vbs',
[
props['file.patterns.wscript']]='vbs',
[
'*.css']='css',
[
props['file.patterns.pascal']]='pas',
[
props['file.patterns.py']]='py',
}
for i,v in pairs(patterns) do
for
ext in (i..';'):gfind("%*%.([^;]+);") do
FIND_FUNC_REG_EXP_EXT_IDX[ext] = v
end
end
end
fill_func_reg_exp_idx()

function fill_list_func()
list_func:clear()
local findPattern = FIND_FUNC_REG_EXP [FIND_FUNC_REG_EXP_EXT_IDX [props["FileExt"]]]
if not findPattern then
findPattern = FIND_FUNC_REG_EXP [FIND_FUNC_REG_EXP_LEX_IDX [editor.LexerLanguage]]
if not findPattern then
findPattern = FIND_FUNC_REG_EXP ['*']
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
Автор: frs
Дата сообщения: 16.09.2008 15:21
имхо на vb и vbs долны быть разные паттерны определения функций, см. мой вариант выше, хоть я туда не вписал Friend и т.п., всё равно он правильнее, чем использование паттерна vbs
Автор: LINKnv
Дата сообщения: 17.09.2008 10:21
По умолчанию скобки (скажем - для 'for' или 'array') в SciTE располагаются неудобно, приходится подгонять вручную.

Например, как добиться того, чтобы после открытия скобки цикла '{' этот цикл принимал следующую форму? :


Код: for (трёшь-мнёшь) {
...|
}
Автор: BioInfo
Дата сообщения: 17.09.2008 12:22
LINKnv
А для какого языка так надо?
Для с++ этим занимается smartbraces.lua
Что касается поведения по enter, то это в скрипте пока не сделано, нужно "Добаботать"
Автор: LINKnv
Дата сообщения: 17.09.2008 14:01
BioInfo
Ну конкретно сейчас - для PHP.
Автор: vladvro
Дата сообщения: 17.09.2008 15:11
Получил довольно забавный результат, сразу после запуска редактора переключился на другое окно,
это было окно медиа плеера:



боковая панель полностью функциональна, только слайдер не перемещается, но ширину панели меняет.

Автор: mozers
Дата сообщения: 17.09.2008 16:48
SciTE 1.76 SVN .60 beta Ru-Board Edition [Сборка 17.09.2008]
Полное описание пакета
Описание всех доработок ядра программы
Список всех изменений пакета

Новшества новой сборки вы увидите при первом запуске, поскольку вид у редактора с новым тулбаром и многофункциональной боковой панелью - совсем другой
Автор: frs
Дата сообщения: 17.09.2008 17:47
Побаловался на досуге с vbHelper'ом пока оно не надоело
Сырые промежуточные результаты закинул на хттп://rapidshare.com/files/146043588/Helper.rar.html. Авось кому пригодится и он доведет вещь до ума.
Автор: BioInfo
Дата сообщения: 17.09.2008 20:32
LINKnv
Замените тут
smartbraces.lua [строка 275] :
Код: if ( char == '{' ) and
( editor.LexerLanguage == 'cpp' or editor.LexerLanguage == 'css' or editor.LexerLanguage == 'hypertext' )
Автор: mozers
Дата сообщения: 17.09.2008 22:52
frs
Вот уж не думал чтобы все методы и свойства SciTE сделать методами и свойствами Helper-а... Но каждый автор мыслит по-своему...

BioInfo
Цитата:
искал пункт "Преобразовать код для публикации в форуме" в меню "Выделенный текст", может ему там самое место?
Может... Только код можно преобразовать и не выделяя его... Если откровенно, то пункт "Выделенный текст" мне вообще не нравится. Но лучшего варианта никто не придумал... (А точнее - лучший вариант будет только после выполнения Issue 5. Остальное - это жалкие попытки скрасить безобразие

Цитата:
При нажатии на Релоад стартап скриптс вылетает
подтверждаю. Это - из за gui.dll.
Надеюсь что вы, возлюбленные народом программеры, поправите это дело...
Автор: LINKnv
Дата сообщения: 18.09.2008 07:53

Цитата:
Замените тут
...
И тут
...

Спасибо BioInfo.

. . . . // удалено, разобрался..
Автор: vladvro
Дата сообщения: 18.09.2008 10:29
BioInfo

Цитата:
При нажатии на Релоад стартап скриптс вылетает, версию только что скачал.

да, все верно.
это происходит из-за того, что мы НЕ удалили старый объект боковой панели и пытаемся добавить новый.
в либе напроч отсутсвует функционал удаления панели, есть только set_panel, а обратной функции нет.
Автор: Raspberry_Jam
Дата сообщения: 18.09.2008 12:03
Подскажите, где найти дополнение, которое подсвечивает парные тэги в html?
P.s. В последней бэта-версии Sidebar явно нужно перенести в меню Вид
Автор: vladvro
Дата сообщения: 18.09.2008 16:20

Цитата:

Цитата: При нажатии на Релоад стартап скриптс вылетает, версию только что скачал.

это происходит из-за того, что мы НЕ удалили старый объект боковой панели и пытаемся добавить новый.
Автор: Raspberry_Jam
Дата сообщения: 18.09.2008 21:01
Спросил не то, что хотел Подскажите, где найти дополнение, которое с утилитой Tidy работает?
Автор: mozers
Дата сообщения: 21.09.2008 14:23
Raspberry_Jam
Последний чуть поправленный вариант.
У себя подключил так:SciTEUser.properties [строка 135] : [more]
Код: [HTML Tidy]
# ----------------------------------------------
#HTML Tidy
tidy=$(SciteDefaultHome)\tools\Tidy\Tidy.lua

command.submenu.parent.150.$(tagfiles)=1
command.submenu.name.150.$(tagfiles)=HTML Tidy

command.parent.150.$(tagfiles)=150
command.name.150.$(tagfiles)=HTML verify
command.mode.150.$(tagfiles)=subsystem:lua,savebefore
command.150.$(tagfiles)=dostring config='html' dofile(props['tidy'])

command.parent.151.$(tagfiles)=150
command.name.151.$(tagfiles)=HTML modify
command.mode.151.$(tagfiles)=subsystem:lua,savebefore
command.151.$(tagfiles)=dostring config='html' mode='modify' dofile(props['tidy'])

command.separator.152.$(tagfiles)=1
command.parent.152.$(tagfiles)=150
command.name.152.$(tagfiles)=XML verify
command.mode.152.$(tagfiles)=subsystem:lua,savebefore
command.152.$(tagfiles)=dostring config='xml' dofile (props["tidy"])

command.parent.153.$(tagfiles)=150
command.name.153.$(tagfiles)=XML modify
command.mode.153.$(tagfiles)=subsystem:lua,savebefore
command.153.$(tagfiles)=dostring config='xml' mode='modify' dofile (props["tidy"])

command.separator.154.$(tagfiles)=1
command.parent.154.$(tagfiles)=150
command.name.154.$(tagfiles)=HTML Word modify
command.mode.154.$(tagfiles)=subsystem:lua,savebefore
command.154.$(tagfiles)=dostring config='word' mode='modify' dofile (props["tidy"])

command.separator.4.$(tagfiles)=1
Автор: mozers
Дата сообщения: 21.09.2008 21:03
ALL
Задолбало меня при переходе на очередной букмарк искать курсор по всему экрану. То вверх улетит, то внизу окажется...
Решил реализовать давнее пожелание chupakabra и написал такой простенький скрипт.
Думаю что и вам понравится
Автор: redirector
Дата сообщения: 22.09.2008 11:40
А можно сделать так чтоб по Ctrl+TAB вкладки переключались не по порядку слева на право, а по порядку просмотра.
Например я правил листинг одного кода, нажал Ctrl+TAB и переключился на закладку листинга который правил перед этим?
Автор: vladvro
Дата сообщения: 22.09.2008 12:31
redirector

Цитата:
А можно сделать так чтоб по Ctrl+TAB вкладки переключались не по порядку слева на право, а по порядку просмотра.

да, можно, добавь в файл пользовательских настроек строчку:
buffers.zorder.switching=1
Автор: Tipulatoid
Дата сообщения: 22.09.2008 12:43
Подскажите пожалуйста, как в Scite Версия 1.76.58Ru-Board настроить горячие клавиши (удобно бы было Shift+Tab), чтоб при нажатии автоматом вставлялся знак ";" в начало текущей строки. Повторное нажатие - удаляло бы его
Автор: frs
Дата сообщения: 22.09.2008 13:05
Имхо, тебе нужен smartcomment.lua из предыдущих версий SciTE (к сожалению в текущей инкарнации smartcomment убита/поломана поддержка языков не поддерживающих блочных комментариев), только придётся перенастроить его с Ctrl+Q на Shift+Tab

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566

Предыдущая тема: Universal Share Downloader


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