Ru-Board.club
← Вернуться в раздел «Тестирование»

» SciTE Ru-Board Edition

Автор: mozers
Дата сообщения: 23.06.2007 01:02
chupakabra
Отлично Кратенько и в самую суть. Если не утвердят - вместе пойдем им морду бить
Автор: mozers
Дата сообщения: 24.06.2007 14:57
Обновление:
Цитата:
Дмитрий Маслов 24.06.07 16:00
-----------------------------
[AbbrevFixCaretPos] - Исправлена бага в аббревиатурах если в сокращении есть \t то курсор позиционировался не верно
SciTEBase.cxx

-----------------------------
[no_wornings] - убрана причина ворнинга (недостижимый код)
SciTEProps.cxx, SciTEWinDlg.cxx, SciTEWin.cxx

-----------------------------
[OnKey] - расширена функция луа OnKey, теперь в нее передается также нажатый символ
MultiplexExtension.h, MultiplexExtension.cxx, LuaExtension.h, LuaExtension.cxx, Extender.h, SingleThreadExtension.cxx, SingleThreadExtension.h, SciTEWin.cxx

-----------------------------
[ToolsMax] - исправлена бага с шоткатами из-за смены IDM_TOOLS
SciTEWin.cxx
Автор: mozers
Дата сообщения: 25.06.2007 12:45
Обнаружил неприятную багу в SciTE 1.74.
Не работает
Код: autocomplete.*.ignorecase=1
Автор: chupakabra
Дата сообщения: 25.06.2007 14:31
mozers
Как воспроизвести? У меня вроде работает.
Автор: mozers
Дата сообщения: 25.06.2007 15:48
chupakabra
Открываем любой файл (например, test.js)
Пишем в нем любое сокращение, естественно имеющееся в подключенном jscript.abbrev (например, readfile)
Нажимаем Ctrl+B - вставляется целая процедура.
Пишем ReadFile, Нажимаем Ctrl+B - хрен на глаз - Can't find! No match abbreviation!
Запости в багтрекер (ты уж знаешь что и как...) Только про сообщение не говори (оно только в SciTE-Ru возникает. Нейловский молча глючит)
В 1.73 такого бага не было.
Автор: chupakabra
Дата сообщения: 25.06.2007 17:07
Что-то не получается у меня сделать так чтобы на 1.73 это работало...

Добавлено:
В документации сказано что autocomplete.*.ignorecase - это для списков автозавершения, к аббревиатурам это вроде не относится.
Автор: BioInfo
Дата сообщения: 25.06.2007 22:21

Цитата:
4. Необходимо сделать чтобы аббревиатуры выпадали в подсказках, т.е. я набрал знакомый набор буков, а он мне подсказку мол можно закончить так.

Реализовал я такую штуку... И вот тут нарисовалось несколько проблем
1.
Мой скрипт обрабатывает момент что может быть несколько аббривиатур с одним именем
if=if x ~= 0 then\n\t|\nend
if=kal
Однако редактор по ctrl+b вставляет только последний.
Стоит ли делать отдельный файл с аббривиатурами?
2.
В принципе можно, конечно и прикрутить чтобы распознавал такую штуку
#in=#include ""
#in=#include <>
Однако редактор такое вообще не переварит.
Надо?
Сейчас расшифровывает только слово и это слово не включает #, т.е. в редакторе так сделано что # это разделитель слов...
Может для # делать исключение? Т.е. включать его в слово...
Кто нить знает почему его не включили? В каком нить языке # используется как разделитель?
Можно, в принципе, сделать только для С++, в других языках такое нужно?
3.
Когда аббривиатура слишком длинно расшифровывается, то вываливается слишком длинный широкий список.
4.
Сделал что разделителем строк в выпадающем списке является символ •
Надеюсь никто не будет придумывать аббривиатуры с его использованием... Также интересно в других языках этот символ печатными перекрывается.

Это вопросы по скриптам lua, а не по коду редактора...

А вот теперь по коду:
кто нить шарит в этом lua?
Мне нужно запихнуть функцию InsertAbbreviation в editor:InsertAbbreviation(str)
есть функция которую должно это вызывать (editor:InsertAbbreviation(str)) - cf_editor_insert_abbrev
То что сейчас вызывается по editor: - это все сообщения, по этому просто так вставить не могу... Нужно новое сообщение делать и прочие гадости.
Смог только вставить сюда: scite. - да только это не совсем верно получается с точки зрения логики (scite.InsertAbbreviation(str))

mozers
Еле нашел свой пост со тем какие скрипты необходимы, ты бы вынес это в "Нерешенные задачи", тем более что их пора обновлять

Цитата:
Пишем ReadFile, Нажимаем Ctrl+B - хрен на глаз

С моим чудо скриптом такой проблемы нет
Автор: mozers
Дата сообщения: 26.06.2007 00:30
chupakabra
Цитата:
Что-то не получается у меня сделать так чтобы на 1.73 это работало...
Точно так. Не работает, поскольку не работало никогда
И как я этой неправедливости раньше не замечал
Цитата:
В документации сказано что autocomplete.*.ignorecase - это для списков автозавершения
ДА, все абсолютно верно
Добрые программеры, хачу такой же параметр для abbrev!

BioInfo
Не хочу вновь начинать тот давний спор о необходимости и рациональности.
Если твой скрипт придется по душе пользователям - значит ты прав.
Я люблю красиво написанные скрипты, но мне кажется что проблему с регистром символов при вставке по Ctrl+B проще решить добавлением одной строчки в исходники.
"Нерешенные задачи" обновлю.
Автор: vladvro
Дата сообщения: 26.06.2007 08:29
BioInfo
Цитата:
кто выдает сообщения в таком формате, примеры сообщений...
Лови...

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

Цитата:
есть функция которую должно это вызывать (editor:InsertAbbreviation(str)) - cf_editor_insert_abbrev
То что сейчас вызывается по editor: - это все сообщения, по этому просто так вставить не могу... Нужно новое сообщение делать и прочие гадости.
Смог только вставить сюда: scite. - да только это не совсем верно получается с точки зрения логики (scite.InsertAbbreviation(str))

с точки зрения логики, функции editor: являются функциями ядра Scintilla, а твоя функция как раз относится к объекту scite, т.е. к самому редактору.

Добавлено:
нашел баг, вызванный модификацией [OnKey]
если повесить шоткаты:
Код: user.shortcuts=$(user.shortcuts)\
Alt+Left|IDM_PREVFILE|\
Alt+Right|IDM_NEXTFILE|
Автор: BioInfo
Дата сообщения: 26.06.2007 13:11
mozers

Цитата:
Добрые программеры, хачу такой же параметр для abbrev!


Цитата:
но мне кажется что проблему с регистром символов при вставке
по Ctrl+B проще решить добавлением одной строчки в исходники.

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

Цитата:
Не хочу вновь начинать тот давний спор о необходимости и рациональности.
Если твой скрипт придется по душе пользователям - значит ты прав.

Я вообще никого не заставляю использовать мои скрипты, не хотите не надо. Но факт остается фактом, в моем скрипте данный вопрос решен.

vladvro

Цитата:
нашел баг, вызванный модификацией [OnKey]

Баг не зависит от шоткатов, связан просто с клавишей Alt.
Я уже испугался что придется мега фичу отключать, но все таки пофиксил.


Цитата:
с точки зрения логики, функции editor: являются функциями ядра Scintilla, а твоя функция как раз относится к объекту scite, т.е. к самому редактору.

Я наверно мыслю в ООП ключе... Уговорил что не нужно парится

И еще я исправил ЧУДОВИЩНУЮ несправедливость :
editor.LexerLanguage работала только в одну сторону, в сторону установить лексер. Все поправил, теперь можно также и считать имя лексера
Теперь можно вообще избавится от COMMON.lua (я так полагаю, что он оставался только из-за GetLexerName).
Вечером все отошлю mozers.
Автор: vladvro
Дата сообщения: 26.06.2007 14:20
Всем
сваял скрипт для преобразования формата файла сессии скайта от старого к новому [more]
session-converter.lua
Код: [no]--[[[/no]
[no]SciTE Session files converter[/no]
[no]Version: 1.0[/no]
[no]Autor: VladVRO[/no]
[no]---------------------------------------------------[/no]
[no]Description:[/no]
[no] конвертирует содержимое открытого в редакторе файла сессии SciTE из старого[/no]
[no] формата (до версии 1.74) в новый формат.[/no]

[no]Для подключения добавьте в свой файл .properties следующие строки:[/no]
[no] command.name.125.*=Преобразовать файл сессии[/no]
[no] command.125.*=dofile $(SciteDefaultHome)\tools\session-converter.lua[/no]
[no] command.mode.125.*=subsystem:lua,savebefore:no[/no]

[no]---------------------------------------------------[/no]
[no]]][/no]

editor:SelectAll()
local text = editor:GetSelText()
local new = [no]"# SciTE session file\n\n"[/no]
local n = 0

local text = text..[no]"\n"[/no]
for str in string.gfind(text, [no]"([^\n]*)\n"[/no]) do
for cur, pos, bm, name in string.gfind(str, [no]"<pos=(%-*)([0-9]+)[ bm=]*([0-9,]*)> (.+)"[/no]) do
[no]-- read next line[/no]
n = n + 1
new = new..[no]"buffer."[/no]..n..[no]".path="[/no]..name..[no]"\n"[/no]
new = new..[no]"buffer."[/no]..n..[no]".position="[/no]..pos..[no]"\n"[/no]
if cur == [no]"-"[/no] then
new = new..[no]"buffer."[/no]..n..[no]".current=1\n"[/no]
end
if bm ~= [no]""[/no] then
new = new..[no]"buffer."[/no]..n..[no]".bookmarks="[/no]..bm..[no]"\n"[/no]
end
new = new..[no]"\n"[/no]
end
end

[no]-- update text in editor[/no]
editor:ReplaceSel(new)
Автор: BioInfo
Дата сообщения: 26.06.2007 18:54
Обновил скрипт smartcomment.lua.
Выставляю еще один скрипт на суд общественности - [more=abbrevlist.lua]abbrevlist.lua
Код: [no]-- SciTE Abbreviation in UserList[/no]
[no]-- Version: 1.0[/no]
[no]-- Autor: Dmitry Maslov[/no]
[no]---------------------------------------------------[/no]
[no]-- При вводе слова, если это сокращение то вызывается список аббривиатур[/no]
[no]-- Работу со списками подсмотрел в AutocompleteObject.lua (автор: mozers)[/no]
[no]-- Примечание:[/no]
[no]-- 1. Использует выподающий список № 11[/no]
[no]-- 2. Полностью автономен (нужно подключить в SciTEStartup.lua)[/no]
[no]---------------------------------------------------[/no]

local function GetWordLeft()
editor:WordLeftExtend()
[no]-- обрабатываем # в cpp[/no]
if editor.LexerLanguage == [no]'cpp'[/no] and editor.CharAt[editor.SelectionStart-1] == 35 then
editor:CharLeftExtend()
end
local sel_text = editor:GetSelText()
editor:CharRight()
return sel_text
end

local function InsertProp(sel_value)
editor:WordLeftExtend()
[no]-- обрабатываем # в cpp[/no]
if editor.LexerLanguage == [no]'cpp'[/no] and editor.CharAt[editor.SelectionStart-1] == 35 then
editor:CharLeftExtend()
end
editor:DeleteBack()
scite.InsertAbbreviation(sel_value)
return true
end

local function Abbrev()

local abb_file = io.open(props[[no]"SciteDefaultHome"[/no]]..[no]"\\abbrev\\"[/no]..editor.LexerLanguage..[no]".abbrev"[/no])
if not abb_file then
abb_file = io.open(props[[no]"SciteDefaultHome"[/no]]..[no]"\\home\\abbrev.properties"[/no])
if not abb_file then
return false
end
end

local currword = GetWordLeft()
local len_currword = string.len(currword)
if len_currword < 1 then
return false
end

local user_list = {}
for line in abb_file:lines() do
local abbrev_word = string.sub(line,1,len_currword)
if string.sub(line,len_currword+1,len_currword+1)==[no]'='[/no] and
string.upper(abbrev_word) == string.upper(currword) then
local str_method = string.sub(line,len_currword+2)
table.insert (user_list,str_method)
end
end
abb_file:close()
local list_count = table.getn(user_list)
if list_count > 0 then
local s = table.concat(user_list, [no]'•'[/no])
if s ~= [no]''[/no] then
local sep = editor.AutoCSeparator
editor.AutoCSeparator = string.byte([no]'•'[/no])
editor:UserListShow(11, s)
editor.AutoCSeparator = sep
return true
end
end
return false
end

[no]-- Добавляем свой обработчик события OnChar[/no]
local old_OnChar = OnChar
function OnChar(char)
if old_OnChar and old_OnChar(char) then
return true
end
if char ~= [no]' '[/no] and Abbrev() then return true end
return false
end

[no]-- Add user event handler OnUserListSelection[/no]
local old_OnUserListSelection = OnUserListSelection
function OnUserListSelection(tp,sel_value)
local result
if old_OnUserListSelection then result = old_OnUserListSelection(tp,sel_value) end
if tp == 11 then
if InsertProp(sel_value) then return true end
end
return result
end
Автор: mozers
Дата сообщения: 27.06.2007 00:38
Обновление:
Цитата:
Дмитрий Маслов 26.06.07 20:03
-----------------------------
[GetLexerLanguage] - добавлено сообщение к scitilla позволяющее получить имя текущего лексера
Scintilla.h, ScintillaBase.cxx, IFaceTable.cxx, LuaExtension.cxx

-----------------------------
[AbbrevRefactoring] - добавлено возможность вставить аббривиатуру из луа InsertAbbreviation(строка), где "строка" - это текст аббривиатуры
Extender.h, LuaExtension.cxx, SciTEBase.cxx, SciTEBase.h

-----------------------------
[OnKey] - Пофиксил багу при нажатии alt
SciTEWin.cxx

-----------------------------
[ExtendedContextMenu] - если контекстные меню не заданы, то отображаются стандартные
SciTEBase.cxx, SciTEBase.h

========================================================
VladVRO 26.06.07 14:52
-----------------------------
[SubMenu][ExtendedContextMenu] - Исправлен баг с выходом за границы буфера, приводящий к падению редактора, при задании более 100 дополнительных пунктов меню Tools.
Компилил во втором часу ночи, сливая вслепую исправления 2х уважаемых авторов. Если где апшибся - звиняйте...
Автор: mozers
Дата сообщения: 28.06.2007 10:21
Вот что ответил Neil Hodgson одному парню, который предложил включить код формирования многоуровнего меню (он его взял на scite.ruteam.ru) в официальную версию:
Код: IIRC there were worse problems when I looked at the implementation:
there was some strange protection from recursion code that did not make
much sense and adding a cascading menu item could remove a later menu item.

You should first consider exactly what the cascading menu is (Does
it add to the Tools menu or replace an existing item? Where is it
positioned?) and how different commands are to cooperate to appear on a
particular cascading menu. You have to understand the difference between
the different platform menu implementations. On Windows, new items can
be inserted but not on GTK+ where they are replaced and can be shown or
hidden.
Автор: BioInfo
Дата сообщения: 28.06.2007 11:54
mozers

Цитата:
можно сказать Нейлу что все названные проблемы уже давно решены?

Ну даже хз, я в принципе сделал класс отвечающий за меню... Вот только реализации методов под GTK естественно нет.
В цитате он утверждает что в меню GTK нельзя вставить пункт, его можно только заменить, показать или спрятать. В GTK я не силен, но уверен что у проблемы у этой есть решение. Примерный алгоритм я уже озвучивал выше.
Это единственная названная им проблема.
В остальном он только вопросы задавал: каскадное меню добавляется в тулз меню или заменяет его элемент? Где оно позиционируется?
Ответ: каскадное меню добавляется в тулз меню в самый верх.

З.Ы. Не понял чего он там про рекурсию говорил, вроде как все пашет... Может он сказал так: "я не врубаюсь че там за заморочки с рекурсией?"

Резюме: Если мы сделаем реализацию под GTK, то можно будет сказать что все проблемы решены Сейчас работает только под виндой (а под GTK вообще не компилится)
Автор: mozers
Дата сообщения: 28.06.2007 12:52
BioInfo
Все ясно. Т.е. можно показывать всему миру что мы тут насочиняли?
То, что нет реализации под GTK - нестрашно (за это никто критиковать не посмеет - лишь бы компилилось без ошибок).
А вот за то, что заменили дизайн тулбара не дав возможности выбрать по своему вкусу - тут, я думаю, пройдутся...

Пытаюсь свести описания всех доработок из SciTE.Ru_kernel_changes.txt в один файл с пунктами Interface, Extention, Bugfix и перевести все на инглиш...
Автор: vladvro
Дата сообщения: 28.06.2007 16:49
BioInfo mozers

Цитата:
Если мы сделаем реализацию под GTK, то можно будет сказать что все проблемы решены

возразить нечего

а по поводу:
Цитата:
some strange protection from recursion code that did not make
much sense

странной и непонятной защиты от рекурсии

мысль возникла - может Нейл это и не меню говорил, а про другое из нашего кода...
Автор: mozers
Дата сообщения: 29.06.2007 13:58
Выкладываю тестовый вариант новой сборки SciTE-Ru
Очень прошу внимательно все проверить.
При замеченных ошибках, прошу сразу предоставлять исправленный вариант.
Новые фичи прошу не делать (в этот релиз они уже не войдут).
Автор: chupakabra
Дата сообщения: 29.06.2007 14:19
mozers
Как отключить этот Session Manager, что появился в новой версии? Он кстати глючит: двойной клие по списку - диалог Runtime Error occured, закрываем окошко - два раза вылазит Just-in-time debugging.

Добавлено:
А что это за новая функция, которая автоматом скобки расставляет? Как отключить? Автоиндентация неверно с ней работает, пишем так:
if (c) {
// курсор переходит на эту строку и редактор вставляет два отступа перед ним
}

И еще пожелание, этот салатовый цвет, которым подсвечиваются скобки парные, он по-моему несколько ядовитый. Может его заменить на какой-то более приятный для глаз (розовый к примеру или сиреневый)?
Автор: BioInfo
Дата сообщения: 29.06.2007 15:44
chupakabra

Цитата:
А что это за новая функция, которая автоматом скобки расставляет? Как отключить?

Это делает мой скрипт:
dofile (props["SciteDefaultHome"].."\\tools\\smartcomment.lua")
Поставь в глобальных настройках
braces.autoclose=0
И скобки автоматом расставлять не будет, что касается "фичи" в cpp то это дело поправлю...

vladvro

Цитата:
мысль возникла - может Нейл это и не меню говорил, а про другое из нашего кода...

Нет, это про меню сказано (adding a cascading menu item could remove a later menu item)
"Другое" он еще скорее всего не видел
Там я конечно сильно нафигарил всего, можно было бы проще, если бы работа была построена по другому...
Автор: vladvro
Дата сообщения: 29.06.2007 15:48
mozers
Session Manager и правда глючит, надо его отключить в сборке

chupakabra
комментарим:
SciTEStartup.lua строка 65
Код: dofile (props[[no]"SciteDefaultHome"[/no]]..[no]"\\tools\\SessionManager\\SessionManager.lua"[/no])
Автор: chupakabra
Дата сообщения: 29.06.2007 17:08
vladvro

Цитата:
эту подсветку желательно делать максимально контрастной, предлагаю тогда подсвечивать фоном

По моему, теперь стало гораздо лучше.
Автор: BioInfo
Дата сообщения: 29.06.2007 18:44
chupakabra
Обновил скрипт smartcomment.lua.
Как сейчас, нормально?

Цитата:
Автоиндентация неверно с ней работает

Что такое автоиндексация и в чем выражается ее неверная работа?
Автор: chupakabra
Дата сообщения: 29.06.2007 19:46
BioInfo
Автоиндентация - автоматическая расстановка отступов. С новой версией вставляется один отступ, как и положено.
Автор: BioInfo
Дата сообщения: 29.06.2007 21:18
chupakabra
Пользуешься abbrevlist.lua ?
Вкупе с аббривиатурами для C++ должен давать положительные отзывы
Хотелось бы услышать твой комментарий.
Автор: chupakabra
Дата сообщения: 29.06.2007 22:38
BioInfo, нет, не пользуюсь, не привык ещё видимо.
Автор: mozers
Дата сообщения: 30.06.2007 01:33
C учетом высказанных замечаний и присланных правок, (VladVRO - отдельное спасибо за помощь в подготовке документации. BioInfo - тоже) сборка обновлена.
Автор: chupakabra
Дата сообщения: 30.06.2007 11:26
Проблему со скриптом AutocompleteObject.lua, который меняет комментарий // copy на // Copy, так и не исправили.
Автор: BioInfo
Дата сообщения: 30.06.2007 13:14
Товарищи, напишите, плиз, скрипт который перезапускает редактор... Запарился уже...


Цитата:
встаю на начало любой строки (home), нажимаю на shift, нажимаю вперед - не выделяется!


Продолжение эпопеи
В самое начало первой строчки (главное чтобы строчка была не пустая), нажимаем пробел и вуаля...
Блин, что за солдатские приколы?

mozers

Цитата:
Нейлу отбить или сами поправим?

Вот лучше об этом отбей.
Автор: mozers
Дата сообщения: 30.06.2007 21:35
chupakabra
Скрипт поправил. Попозднее выложу...
А проблема то старинная и никем увы так и не решенная - как, зная расширение файла найти какой api файл он использует? (Нейл ответил просто - нельзя.)

BioInfo
Цитата:
Товарищи, напишите, плиз, скрипт который перезапускает редактор...
Пожалуйста
Restart.js
Код: [no]// SciTE Restarter[/no]
[no]// Version: 1.1[/no]
[no]// Autor: mozers™[/no]
[no]// ------------------------------------------------[/no]
[no]// Description:[/no]
[no]// Перезапускает SciTE (требуется SciTE.Helper)[/no]
[no]// Подключение:[/no]
[no]// command.name.26.*=Restart SciTE[/no]
[no]// command.26.*=wscript "$(SciteDefaultHome)\tools\Restart.js"[/no]
[no]// command.mode.26.*=subsystem:windows,replaceselection:no,savebefore:no,quiet:yes[/no]
[no]// ------------------------------------------------[/no]
var WshShell = new ActiveXObject([no]"WScript.Shell"[/no]);
try {
var SciTE=new ActiveXObject([no]"SciTE.Helper"[/no]);
} catch(e) {
WScript.Echo([no]"Please install SciTE Helper before!"[/no]);
WScript.Quit(1);
}
var scite_path = [no]'"'[/no]+SciTE.Props([no]"SciteDefaultHome"[/no])+[no]'\\SciTE.exe"'[/no];
SciTE.MenuCommand(140); [no]//IDM_QUIT[/no]
WScript.Sleep(1500);
WshShell.Run(scite_path,1,false);

Страницы: 1234567891011121314151617181920212223242526

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


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