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

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

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


Автор: Grisper, Отправлено:15:56 17-04-2006
Имхо было бы удобно diff конфигов делать с предыдущей версией.
типа
добавлены файлы: \tools\1.lua
изменены файлы: \main.properties
line 127:
> a = 3
< a = 4
примерно так

для тех у кого сборка отличается сильно это было бы удобно имхо.

если лениво не будет - сделаю скрипт который такое делает, но может кто сделает всё же?
Автор: mozers, Отправлено:17:05 17-04-2006
Grisper
Скриптом - это еще можно (но только чтоб 1 кнопка и сразу результат), а вручную - не буду (влом). Меняются порой отдельные буквы, уточняются формулировки в комментах. Очень много всякой мелочи. Утонуть можно, если все детали отслеживать.

Еще хотел сказать насчет автодополнения из api. Поскольку атоматическое (после точки) - круто и удобно, но слишком не универсально - пришлось от него отказаться Пока остановился на таком варианте:

Цитата:
Пример использования:
Допустим, нам необходимо написать такую конструкцию:
WScript.Network.MapNetworkDrive "E:", "\\Server\Public"

- создаем файл с расширением VBS
- пишем в нем ws
- нажимем Сtrl+Enter (Завершить слово) и из раскрывшегося списка выбираем WScript.Network
- дописываем точку и первую букву метода .m
- нажимем Сtrl+Enter и из раскрывшегося списка выбираем MapNetworkDrive
- у нас получилось WScript.Network.MapNetworkDrive
- теперь достаточно добавить пробел или открыть круглую скобку - появится всплывающая подсказка по параметрам
- обратите внимание, что когда вы будете вписывать разделенные запятой параметры, во всплывающей подсказке будет подсвечивается текущий параметр.

Мне показалось, что в SciTE имеется ошибка:
Клавиатурные комбинации Сtrl+I и Сtrl+Enter отрабатывают идеентично и соответствуют "Завершить слово"
Та же команда "Завершить слово - Сtrl+Enter" через меню не срабатывает.
Зато через меню срабатывает команда "Завершить символ - Сtrl+I" но результат ее действия - завершение слова.
В итоге я так и не понял что это за команда "Завершить символ - Сtrl+I", как она работает и как ее вообще можно вызвать.



Ну и скриптов накопилось - куча, только их все перерабатывать надо...
Вообще твой и gansA скрипт (из тех что в сборке) объединить бы в один. А то твой стабильно работает, а у gansA функционалу больше но глюки...

Автор: yumaxg, Отправлено:19:13 17-04-2006

Цитата:
yumaxg
Поздравляю с первыми (и какими толковыми!) постами
Ты - крут


это очень приятно - есть много идей по плану атоматизации, первым делом хочетса поиска об'явления функции, при чем не просто поиск, а позиционирование курсора, и обьязательно в файлах проекта. Начал розбиратся из Filerx. Прошу высказивать идеи, универсальной системи для всех языков

Автор: mozers, Отправлено:23:44 17-04-2006
yumaxg
По скриптам:
у меня так и не заработал Хотя и условие (зачем анализировать стиль то тут? не просек) я упростил до минимума:
Код:
if charAdded == " " then
Abbreviations()
end
и путь к api (это так для каждого языка надо исправлять???) исправил на свой. Ну ничего забавного после нажатия на пробел у меня не происходит
А что вообще должно получится? Фраза твоя уж очень туманна:
Цитата:
скриптик автодополнения по нажатии пробела в редакторе после сокращения
Так вроде как SciTE и без скриптов все прекрасно автодополняет только настроить его надо соответствующе...
Поподробнее, пожалуйста...

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

Еще вопрос по LUA:
В чем разница и когда необходимо применять print , trace и _ALERT.
Я - так и разницы между ними не просекаю
Автор: Grisper, Отправлено:23:54 17-04-2006

Цитата:
Прошу высказивать идеи, универсальной системи для всех языков


у меня в луа конструкции вида:

Код:

MyObj1 = {
NPC1 = "vasya"
, NPC2 = "fedya"
}

_G[MyObj1.NPC1.."_init"] = function (npc_id)
...
end

вот их бы распарсить чтобы дубликаты отсечь...

Автор: dB6, Отправлено:13:32 18-04-2006
mozers
Тестил этот же скрипт (автодополнения).
Суть его в том, чтобы автоматически аббревиатуры из abbrev расшифровывались по нажатию пробела. Вместо того, чтобы нажимать Ctrl+B, например. Имхо, не очень удобно.
Можешь посмотреть [more=тут]
Код:
-- Expand abbreviations and show tooltip when appropriated. by Jos van der Zande (JdeB)
-- changed yumax#301170722
function Abbreviations()
-- get current word
from = editor:WordStartPosition(editor.CurrentPos-2)
to = editor:WordEndPosition(editor.CurrentPos-2)
curword = editor:textrange(from, to)
if string.sub(curword,1,1) == ' ' and string.sub(curword,2,2) == ' ' then
curword = string.sub(curword,3,-1)
from = from - 2;
end
print(from..' '..to..'-'..curword..'-'..editor.CurrentPos)
-- get possible replacement from abbrev.properties
local repword = ""
ext = props['FileExt']
--~ abbrev_file = props['abbrev.$(file.patterns.'..ext..')'];
abbrev_file = props['abbrev.properties'];
--~ print(abbrev_file)
--~ local f = io.open(abbrev_file)
local f = io.open(props['SciteDefaultHome'].."\\abbrev.properties")

if f ~= nil then
local Abbrevtxt = f:read('*a')
if Abbrevtxt then
f:close()
local rep_start = string.find(Abbrevtxt,"\n" .. string.lower(curword) .. "=")

-- print('-'..Abbrevtxt..'-'..curword..'-',rep_start,"-\n" .. string.lower(curword)..'-')
if rep_start ~= nil and rep_start ~= 0 then
rep_start = rep_start + string.len(curword) + 2
rep_end = string.find(Abbrevtxt .. "\n","\n",rep_start)-1
repword = string.sub(Abbrevtxt .. "\n",rep_start,rep_end)
-- _ALERT("rep_start:" ..rep_start.. "rep_end:"..rep_end )
end
end
end
-- if found process it
-- _ALERT("abbr:" .. curword .. " replaced by: " .. repword .. "|" )
if repword ~= nil and repword ~= "" then
-- get indent info
local s_indent = ""
if editor.LineIndentation[editor:LineFromPosition(editor.CurrentPos)] then
currentindent = editor.LineIndentation[editor:LineFromPosition(editor.CurrentPos)]
-- _ALERT(currentindent)
if editor.UseTabs then
n_idents = editor.LineIndentation[editor:LineFromPosition(editor.CurrentPos)] / editor.TabWidth
s_indent = string.rep("\t",n_idents)
else
n_idents = editor.LineIndentation[editor:LineFromPosition(editor.CurrentPos)]
s_indent = string.rep(" ",n_idents)
end
end
--end
-- remove current word
editor:remove(from, to +1)
-- replace text \n for LF plus the indent info
repword = string.gsub(repword, "\\n", "\n" .. s_indent)
-- replace text \t for TAB
repword = string.gsub(repword, "\\t", "\t")
-- find caret position in the word
tcaretpos = string.find(repword,"|")
-- when string to insert contains | then calculate the pos and remove it
if tcaretpos ~= nil and tcaretpos ~= 0 then
caretposword = string.find(repword,"|") -1
caretpos = from + string.find(repword,"|") -1
repword = string.gsub(repword, "|", "")
else
-- set caret pos to the end of the inserted string
caretposword = 0
caretpos = from + string.len(repword)
end
editor:insert(from,repword)
editor:GotoPos(caretpos)
--
-- try to create the tooltip()
-- get keyword/function name part infront of the (
braceopenpos = string.find(repword,"%(")
braceclosepos = string.find(repword,"%)")
-- when string to insert contains | then calculate the pos and remove it
--_ALERT(braceclosepos)
if braceclosepos ~= nil and braceclosepos < caretposword then
-- caret pos not inside the first function
repword = ""
elseif braceopenpos then
-- get keyword/function name part infront of the |
repword = string.sub(repword,1,braceopenpos-1)
elseif caretposword ~= 0 then
repword = string.sub(repword,1,caretposword)
else
repword = ""
end
--_ALERT("repword:" .. repword )
if repword ~= "" and braceopenpos then
f = io.open(props['SciteDefaultHome'].."\\api\\au3.api")
if f ~= nil then
local apitxt = f:read('*a')
if apitxt then
f:close()
local rep_start = string.find(string.lower(apitxt),"\n" .. string.lower(repword).."[\n ]")
if rep_start ~= nil then
rep_end = string.find(apitxt,"\n",rep_start+2)-1
repword = string.sub(apitxt,rep_start+1,rep_end)
-- put the description on the next line..
repword = string.gsub(repword, "%)", "%)\n",1)
editor:CallTipShow(caretpos, repword)
end
end
end
end
end
end
[/more] - правил для теста для единственного файла abbrev.properties, лежащего в каталоге SciTE.
Автор: Grisper, Отправлено:13:37 18-04-2006
dB6, согласен - не очень удобно.
мне проще Ctrl+B нажать когда нужно

Автор: mirk, Отправлено:15:31 18-04-2006

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

Эта функция есть в Менеджере проектов...
Автор: Grisper, Отправлено:15:36 18-04-2006
mirk
она очень криво там работает
если функция объявлена как _G["funcname"] = function () то не ищет
ищет только если строчка с function начинается
Автор: mirk, Отправлено:15:49 18-04-2006
Grisper
Все может быть, вот только ИМХО гораздо проще найти исходники этого менеджера и поправить их, чем разрабатывать, что-то концептуально новое...

Кстати, для этого, если разрабатывать с нуля, может подойти вот такой Gentee язык программирования, может работать как компилятор и как интерпретатор, к тому же он кроссплатформенный, а это ИМХО самое важное.

Если кому интересен язык, посмотрите уроки, очень занятная всечь

Автор: Grisper, Отправлено:15:57 18-04-2006
mirk
если писать, то да. согласен.
я к тому, что менеджер _сейчас_ не очень корректно работает
Автор: yumaxg, Отправлено:19:38 18-04-2006

Цитата:
Эта функция есть в Менеджере проектов...

я так понимаю в Менеджере проектов должен бить какойто Makefile по какому мы и будем строить проект + компилить и можем его нормально анализировать
при чём я предлагаемом менеджере не наблюдал поика в ФАЙЛАХ проэкта

а про многоплатформность (насколько понял исходники утеряны, а французкой думаю мало хто знает ) и для всех языков, я нак и не понял как можна изменить для этого настройки

+ все говорят о filerx но я так понял никто не пользуються (я вчера не имел времени разобратца с ним)
Пожалуста, раскажите ефективность его использования (может не стоит тратить времья)

Добавлено:

Цитата:
Так вроде как SciTE и без скриптов все прекрасно автодополняет только настроить его надо соответствующе...

мне к премеру быстрее набрать короткое сокращение (думаю тут в меня полетят помидоры, я про обычьные синтаксические конструкции{html і других многословных не берём})
тоесть появилась идея по пробелу... (стандартной функции в IFaceTable.cxx не нашлось к нещастью )
анализ стиля ну намерения были благие - оптимизация: ведь файлики сокращений могут бить не очень маленькими, а после каждого пробела его исполнять, както ...


Цитата:
Интересный. Правда накак не могу выдумать зачем он мне может понадобиться...
Подскажешь? - включим в сборку

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

(есть мечта оказатся когда нибуть от всяких вордов и перейти на tex)

Добавлено:


Цитата:
Ну и скриптов накопилось - куча, только их все перерабатывать надо...

также интересно их увидеть думаю у всех сообща найдётса больше времени для их тестировки и переработки
Автор: mozers, Отправлено:22:14 18-04-2006
yumaxg
В общем, резюмирую что я понял из того что сказал dB6 и ты:
Скрипт автоматически (после нажатия на пробел) заменяет сокращения на их полное сокращение хранящееся в файле abbrev.properties
Т.е. предназначен для тех, кто все свои сокращения хранит в одном единственном файле, помнит их все наизусть и к тому же ему лень нажимать Ctrl+B.
Лично мне не подходит ни по одному из 3-х условий
Что в скрипте делает упоминание об au3.api вообще непонятно...

2й скрипт тогда назовем так:
"Вставить выбранные (по Ctrl+F2) строки"
Я думаю, что применение ему найдется


Цитата:
все говорят о filerx но я так понял никто не пользуються
Точно так. Хоть бы кто разобрался с этим зверем. Написал бы заметку какую нить...
Я так только скрипты из него тырю для своих нужд
Кстати и SideWinder - штука довольно занятная...

Цитата:
также интересно их увидеть думаю у всех сообща найдётса больше времени для их тестировки и переработки
Да скрипты то в большинстве своем - довольно известные решения, надранные подряд без разбору откуда придется.
Если кому то интересно в этой мусорке поковыряться - выложу. Только приятных ощущений не гарантирую
Вот взять, к примеру - CleanDocWhitespace (в любой сборке имеется, в инете выложен повсюду)... Ну туфта же! Неужели всех удовлетворяет работа этого убожества? Или просто не пользуется никто реально?
А я бы не отказался от скрипта, который выставляет заданные промежутки между символами, устанавливает правильную табуляцию, исправляет регистр, и т.д. Короче превращает набранный в угаре в каком то левом блокноте код в аккуратно оформленную программу.
Глядя на некоторые примеры кода, проскакивающие и в нашем топике и в других, понимаю, что настоящих программистов проблема наглядной подачи материала нисколько не колышет
Автор: dB6, Отправлено:13:54 19-04-2006
mozers
Цитата:
Скрипт автоматически (после нажатия на пробел) заменяет сокращения на их полное сокращение хранящееся в файле abbrev.properties
Т.е. предназначен для тех, кто все свои сокращения хранит в одном единственном файле, помнит их все наизусть и к тому же ему лень нажимать Ctrl+B.

Не совсем так. Это я поправил скрипт (для теста), чтобы он юзал один файл abbrev.properties, а так он написан был с использованием разных файлов сокращений для разных языков:
Код:
ext = props['FileExt']
abbrev_file = props['abbrev.$(file.patterns.'..ext..')'];


Мне не подходит, потому что не "лень мне нажимать Ctrl+B" И слишком автоматическая замена - неудобна, имхо.


Цитата:
А я бы не отказался от скрипта, который выставляет заданные промежутки между символами, устанавливает правильную табуляцию, исправляет регистр, и т.д. Короче превращает набранный в угаре в каком то левом блокноте код в аккуратно оформленную программу.
Глядя на некоторые примеры кода, проскакивающие и в нашем топике и в других, понимаю, что настоящих программистов проблема наглядной подачи материала нисколько не колышет

Ну вот не надо Для конкретных языков есть свои конкретные программы/скрипты для "причесывания" кода. Так что особо не вижу смысла придумывать что-то очень уж "универсальное" - все равно не будет функциональней своих узкоспециализированных аналогов.
Да и код я стараюсь писать сразу нормально. Привычка

Автор: Grisper, Отправлено:14:06 19-04-2006

Цитата:
Ну вот не надо Для конкретных языков есть свои конкретные программы/скрипты для "причесывания" кода. Так что особо не вижу смысла придумывать что-то очень уж "универсальное" - все равно не будет функциональней своих узкоспециализированных аналогов.

Согласен. Для С/С++ есть AStyle, например. Писать самому такое - тяжко имхо.

А знает ли кто-нибудь для LUA автоформатер кода?
Автор: yumaxg, Отправлено:14:29 19-04-2006

Цитата:
Если кому то интересно в этой мусорке поковыряться - выложу. Только приятных ощущений не гарантирую [Image]


как раз при таком ковырянии и рождается истина ....
+ не выдумываются новые велосипеды

Автор: mirk, Отправлено:10:50 20-04-2006
В общем наваял на основе скрипта Grisper`a список TODO, FIXME и BUG для текущего файла:


Код:

command.name.5.*=BUG, FIXME, TODO
command.5.*=dofile $(SciteDefaultHome)\\lua\\ToDoList.lua
command.mode.5.*=subsystem:lua,savebefore:no


[more=Подробнее...]
function TrimString (sss)
-- удаляем двойные пробелы и всякое лишнее
local str1 = sss
while string.find(str1," ") do str1 = string.gsub(str1," "," ") end
str1 = string.gsub(str1,"_G "," ")
str1 = string.gsub(str1,"_G[[]","[")

-- удаляем пробелы слева
while (string.sub (str1,1,1)==" ") and (string.len(str1)>1) do str1 = string.sub(str1, 2) end
local bool_tochka = false
while (string.sub (str1,1,1)==",") and (string.len(str1)>1) do str1 = string.sub(str1, 2); bool_tochka = true end
while (string.sub (str1,1,1)==" ") and (string.len(str1)>1) do str1 = string.sub(str1, 2) end

-- Q.MyFunc(self, args) --> Q:MyFunc(args)
if string.find(str1,"self")
then
while string.find(str1,"self ") do str1 = string.gsub(str1,"self ","self") end
while string.find(str1,"self,") do str1 = string.gsub(str1,"self,","self") end
str1 = string.gsub(str1,"self","")
while string.find(str1," ") do str1 = string.gsub(str1," "," ") end
while string.find(str1,"[(] ") do str1 = string.gsub(str1,"[(] ","(") end
while string.find(str1," [)]") do str1 = string.gsub(str1," [)]",")") end
while string.find(str1," ") do str1 = string.gsub(str1," "," ") end
str1="self:"..str1
else
if bool_tochka then str1 = "."..str1 end
end

return str1
end

function SkipSubStrings (ss)
skip_table = {"@FIXME:", "@TODO:", "@BUG:"}
local ss1 = ss
for i,v in pairs (skip_table) do
ss1 = string.gsub(ss1,v," ")
end
ss1 = TrimString (ss1)
return ss1
end

--~ "@FIXME:", "@TODO:"
local sText = "@BUG:"
local flag = 0

output:ClearAll()

trace(">> BUG: <<\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"..SkipSubStrings (str).."\n")
m = l
end
s,e = editor:findtext(sText, flag, e+1)
end
trace("\n")
else
trace("> BUG не найдено!")
end
--

local sText = "@FIXME:"
local flag = 0

--~ output:ClearAll()

trace(">> FIXME: <<\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"..SkipSubStrings (str).."\n")
m = l
end
s,e = editor:findtext(sText, flag, e+1)
end
trace("\n")
else
trace("> FIXME не найдено!")
end

local sText = "@TODO:"
local flag = 0

--~ output:ClearAll()

trace(">> TODO: <<\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"..SkipSubStrings (str).."\n")
m = l
end
s,e = editor:findtext(sText, flag, e+1)
end
trace("\n")
else
trace("> TODO не найдено!")
end
[/more]


P.S. За код не ругать, так как писано в торопях(скажем, срочно понадобилось)


Добавлено:
UPDATE: Если с "чистотой" кода все согласны, то я выложу описание работы этого скрипта на сайте.
Автор: Grisper, Отправлено:22:51 20-04-2006
mirk
Скрипт полезный, только вот непонятно зачем там

Код:

str1 = string.gsub(str1,"_G "," ")

и прочий мусор остался =)

Для этого скрипта лучше вот так:

Код:

function TrimString (sss)
-- удаляем двойные пробелы и всякое лишнее
local str1 = sss
-- удаляем двойные пробелы
while string.find(str1," ") do str1 = string.gsub(str1," "," ") end
-- удаляем пробелы в начале строки
while (string.sub (str1,1,1)==" ") and (string.len(str1)>1) do str1 = string.sub(str1, 2) end
return str1
end


Автор: mirk, Отправлено:23:01 20-04-2006
Grisper
Полностью с вами согласен уважаемый, код ужасный, и это еще мягко сказано
Тут идеальным вариантом будет задание списка нужных директив в массиве, и исходя от этого плясать...

В ближайшее время возможно перепишу... Как допишу, так сразу же обрадую комунити заметкой на сайте

Автор: Grisper, Отправлено:23:16 20-04-2006
mirk
Ага, я свой скрипт тоже хотел из таблички задавать. Но лениво стало писать его



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