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

» SciTE - Open Source Text Editor for Windows & Linux

Автор: domo22
Дата сообщения: 17.02.2009 13:37
mozers

Цитата:
Забирай исправленный скрипт

Забираю, смотрю и радуюсь, скрипт твой работает хорошо. Но есть проблема - у него слабое здоровье, чуть что - сразу на "больничный". Больше всего он страдает от двух болезней:
1) неправильное направление начальной сортировки, часто из-за того, что скрипт определяет его по двум первым строкам выделенного массива. Вот если бы он определял порядок по первой и ПОСЛЕДНЕЙ строкам массива или еще как-то - ошибок было бы меньше.
2) неправильная сортировка из-за наличия в начале строк кавычек, причем кавычки бывают еще и 4-х типов: одиночные прямые ('), одиночные обратные (`), двойные прямые ("), двойные открывающие («). Любая из этих кавычек сразу же укладывает скрипт в постель, а встречаются они в строках с завидной регулярностью. Вот если бы скрипт игнорировал все эти начальные кавычки, было бы гораздо лучше.

В общем, можно ли данному скрипту сортировки сделать 'прививку', причем от двух болезней сразу?
Автор: TymurGubayev
Дата сообщения: 21.02.2009 01:12
domo22
[more=держи]

Код:
--[[--------------------------------------------------
SortText.lua
Authors: Tugarinov Sergey & mozers™
version 2.0
------------------------------------------------------
Sorting selected lines_tbl alphabetically and vice versa
Сортировка выделенных строк по алфавиту и наоборот

Connection:
    Set in a file .properties:
        command.name.37.*=Sorting of lines_tbl A… z / z… A
        command.37.*=dofile $(SciteDefaultHome)\tools\SortText.lua
        command.mode.37.*=subsystem:lua,savebefore:no
--]]--------------------------------------------------

local lines_tbl = {} -- Таблица со строками нашего текста
local sort_direction_decreasing = false -- Обратный порядок сортировки
local patt = [=[^[%s'"`«]*]=] --патерн для отбрасывания префикса, настраивается по желанию.

-- сравниваем две строки
local function CompareTwoLines(line1, line2)
    line1 = line1:gsub(patt, '')
    line2 = line2:gsub(patt, '')
    if sort_direction_decreasing then
        return (line1:lower() > line2:lower())
    else
        return (line1:lower() < line2:lower())
    end
end

-- автоматически определяем направление сортировки сравнивая две первые неравные строки
local function GetSortDirection()
    local n = #lines_tbl
    local prev_line = lines_tbl[n]:gsub(patt, '')
    for _, current_line in ipairs(lines_tbl) do
        if current_line:gsub(patt, '') ~= prev_line then
            return current_line:lower() > prev_line:lower()
        end
    end
end

local sel_text = editor:GetSelText()
local sel_start = editor.SelectionStart
local sel_end = editor.SelectionEnd
if sel_text ~= '' then
    local current_line = ''
    -- разделяем на строки и загоняем их в таблицу
    for current_line in sel_text:gmatch('[^\n]+') do
        lines_tbl[#lines_tbl+1] = current_line
    end
    if #lines_tbl > 2 then
        sort_direction_decreasing = GetSortDirection()
        -- сортируем строки в таблице
        table.sort(lines_tbl, CompareTwoLines)
        -- соединяем все строки из таблицы вместе
        local out_text = table.concat(lines_tbl, '\n')..'\n'
        editor:ReplaceSel(out_text)
    end
end
-- восстанавливаем выделение
editor:SetSel(sel_start, sel_end)
Автор: mozers
Дата сообщения: 21.02.2009 09:11
domo22
Идеи - толковые "Прививка" сделана

TymurGubayev
Ты в скрипте ошибочку маленькую допустил. В результате автоматический выбор направления сортировки вообще перестал работать.
Автор: vicbox777
Дата сообщения: 24.02.2009 15:12
Подскажите насчет записи макроса в SciTE. А то я открываю SciTЕ, записиваю макрос и он работает до закрытия SciTE. Когда открываю вновь приходится вновь записивать макрос, а хотельсь бы чтобы клацнуть на кнопку на панели инструментов ВЫПОЛНИТЬ МАКРОС мышкой и макрос выполнялся, даже после закрытия/открытия внов SciTE.
Автор: vladvro
Дата сообщения: 24.02.2009 17:43
vicbox777
Опции для записи макросов в файл, для сохранения между сессиями:
macro.autosave=1
macro.load.on.startup=1
По умолчанию в сборке они так и выставлены.
Но информация о том какой из макросов текущий (а их может быть много) после закрытия редактора теряется, попробуйте воспользоваться функцией Список макросов (Shift+F9), она позволяет выбрать и запустить один из ранее записанных макросов.
Автор: Onetai
Дата сообщения: 24.02.2009 20:43
Достали при наборе кода:

- автоматическое обрамление выделенного куска парными символами (вроде кавычек) вместо нормального его удаления (т.е., к примеру, выделяете в коде ненужную 1, печатаете ', но вместо удаления 1 и одной кавычки на её месте имеете '1');

- автоматический набор сразу двух парных символов при наборе только одного из них(кавычки, скобки -- особенно фигурные);

- автоматическое удаление табуляции при наборе закрывающей фигурной скобки (perl, js etc) -- для меня закрывающая фигурная скобка, съехавшая на одну табуляцию влево уменьшает читабельность кода.

Вопрос: как в настройках избавиться от всех этих расчудесностей?
Автор: agner
Дата сообщения: 24.02.2009 23:43
Помогите пожалуйста правильно подключить ctags к Scite (работаю со сборкой Ru-Board).

SciTEStartup.lua :
dofile (props["SciteDefaultHome"].."\\tools\\extman.lua")
dofile (props["SciteDefaultHome"].."\\tools\\ctagsx_alt.lua")

SciTE.properties (лежит в папке с исходниками и tag файлом) :
ctags.path.cxx=D:\Lab\Visual\Test\src\tags

При попытке найти тэг, выдается следующее

C:\Program Files\SciTE\tools\ctagsx_alt.lua:177: attempt to index upvalue 'tags' (a nil value)
>Lua: error occurred while processing command


В окне Replace есть возможность замены текста в открытых буферах, в окне Find - нет. Как включить ?
find.replace.advanced=1
Автор: mozers
Дата сообщения: 25.02.2009 10:12
Onetai
Цитата:
как в настройках избавиться от всех этих расчудесностей?
Закомментировать или приравнять к 0 параметр braces.autoclose.
Или закомментировать строчку подключения скрипта smartbraces.lua в SciTEStartup.lua.
Хотя, если привыкнуть (мне тоже вначале не понравилось что комп меня идиотом считает), то его работа покажется очень удобной

agner
Цитата:
В окне Replace есть возможность замены текста в открытых буферах, в окне Find - нет. Как включить ?
Кнопку "Поиск по всем открытым файлам"? А нет такой возможности.

Цитата:
подключить ctags к Scite
Во первых - можно вполне обойтись и без extman.lua. Во вторых - можно оттолкнутся от примера с подключением Tidy - тут все очень похоже...

Добавлено:
Чтобы народ привлечь к этой тулзе, ты бы написал реально работающую комстроку типа:
Код: ctags.exe -o --options file.htm
Автор: sstude
Дата сообщения: 25.02.2009 13:51
судя по этой ветке, у SciTE нет поддержки FTP ? т.е. чтоб я с сервера загружал страничку, правил её и обратно на сервер сохранял ? (как у Notepad++)

может не нашел, подскажите !
Автор: vladvro
Дата сообщения: 25.02.2009 14:36
sstude

Цитата:
судя по этой ветке, у SciTE нет поддержки FTP ? т.е. чтоб я с сервера загружал страничку, правил её и обратно на сервер сохранял ? (как у Notepad++)

Все верно, нет. И не планируется встраивать.
Я пользовал для аналогичного случая внешнюю тулзу работающую из командной строки, создав для ее использования пару-тройку пунктов в меню редактора и повесив на них шорткаты.
Автор: sstude
Дата сообщения: 25.02.2009 20:29
ftp по коммандной строке? есть пример какой-нибудь ?
Автор: Onetai
Дата сообщения: 25.02.2009 22:38
mozers

Цитата:
Закомментировать или приравнять к 0 параметр braces.autoclose.
Или закомментировать строчку подключения скрипта smartbraces.lua в SciTEStartup.lua.

Спасибо огромное.

UPD.
Счастье есть:

Код: -- Автозакрытие скобок
--~ dofile (props["SciteDefaultHome"].."\\tools\\braces_autoclose.lua")

-- Автозакрытие скобок
--dofile (props["SciteDefaultHome"].."\\tools\\smartbraces.lua")

-- Автозакрытие HTML тегов
--dofile (props["SciteDefaultHome"].."\\tools\\html_tags_autoclose.lua")
Автор: agner
Дата сообщения: 25.02.2009 23:25

Цитата:
Во первых - можно вполне обойтись и без extman.lua. Во вторых - можно оттолкнутся от примера с подключением Tidy - тут все очень похоже...

Заработал ctags. Для этого пришлось заменить ctagsdx.lua, взятый с http://lua-users.org/wiki/SciteTags, на ctagsdx.lua, входящий в состав scite_debug.


Цитата:
Чтобы народ привлечь к этой тулзе, ты бы написал реально работающую комстроку типа:
Код:ctags.exe -o --options file.htm
и, вкратце, что за радость мы поимеем если выполним такую команду

Ctags и csсope - довольно известные программерские тулзы для работы с кодом. Судя по тому, что поиск в архиве топика ничего не дал, в SciTE есть другие, возможно более удобные средства навигации по исходному коду. Буду рад о них узнать, т.к. познакомился с SciTE совсем недавно.
В большинстве случает достаточно в корне исходников указать ctags -R

SideBar довольно криво криво выводит список фунций - часть функций в него вообще не попадает, частично попадют левые строки, и при этом работает только с Си-файлами. Есть ли альтернативные плагины? Возможно есть аналог вимовского taglist'а (который также использует ctags) ?
Автор: vladvro
Дата сообщения: 26.02.2009 11:03
sstude

Цитата:
ftp по коммандной строке? есть пример какой-нибудь ?

конкретно для ftp нет, у меня был настроен доступ для rSync.
моя идея состояла в том, что я делал локальную копию структуры файлов, поэтому для навигации по папкам не требовалось делать что-то дополнительного.
мне хватило добавить пару команд: для закачки/обновления содержимого текущей папки и отправки текущего файла на сервер (предварительно сохранив его).
Автор: mozers
Дата сообщения: 26.02.2009 12:16
agner
До вчерашнего дня не работал с этой тулзой ни разу. А тут решил попробовать.
Список функций в SideBar порой сильно подтормаживает. Регсепы для разных языков программирования я уже задолбался править (то один ньюанс не учтешь, то - другой...). Поэтому идея свалить всю работу по поиску функций на мощную внешнюю тулзу показалась мне заманчивой.
Оценить качество работы с С++ не смог, поскольку на нем не пишу.
Но вот результат работы команды
Код: ctags -f- --fields=+n SideBar.lua
Автор: agner
Дата сообщения: 27.02.2009 01:49

Цитата:
Но вот результат работы команды
Код:ctags -f- --fields=+n SideBar.lua
меня очень разочаровал Такое впечатление что тулза тупо выводит все строки в которых нашла слово function

По-моему у Вас сложилась непонимание назначения ctags - только генерирование информации, которую интерпретирует текстоый редактор. Схематический пример:


Код:
Структура проекта:
src
nrf24l01
nrf24l01.c
nrf24l01.h
ds3231
ds3231.c
ds3231.h
h264
h264.c
h264.h
main.c
typedefs.h
Автор: TymurGubayev
Дата сообщения: 27.02.2009 05:26
Я слегка обновил скрипт боковой панели, пока что в бранче.
Брать тут:
SideBar.lua
COMMON.lua
Так же понадобится LPEG.dll (compiled by ur4ltz)

На данный момент обновление интересно лишь пользующимся Lua (т.к. я написал грамматику, корректно распознающую функции Lua) либо желающим помочь (надо писать грамматики в lpeg для ловли определений функций.)

enjoy
Автор: noloved
Дата сообщения: 27.02.2009 09:40
все доброго дня
недавно установил SciTE Версия 1.77 .61Ru
возникло несколько вопросов, заранее прошу прощения если они уже звучали, но блин..прочитать более сотни страниц топика..эт нереально...

пишу на c++, компилятор MinGW
вопросы
1. не работает автодополнение кода, например пишу
int main()
{
struct
{
int i;
char c;
} st;
st. (в этом месте по смыслу должен выскакивать список подсказок из 2х переменных (i и c), но не выскакивает
}
вообще подобные подсказки не появляются. в чем м.б. проблема?


2. можно ли подключать внешние справки chm, чтоб они были доступны в меню "справка" (подобно току как это реализовано, например, в dev c++)

3. имеется ли возможность передавать параметры в функцию main(int argc, char **argv) непосредственно из SciTE??..как опять же например это реализовано в dev c++ (в меню есть пункт "параметры" и в него пишеш строку параметров, которые при выполнении будут передаваться программе)

Автор: TymurGubayev
Дата сообщения: 28.02.2009 04:15
noloved

3. Есть, Shift+F8 -- окошко для ввода параметров. Но надо предварительно настроить команду меню Выполнить (F5). Для Lua, например, так:
command.go.$(file.patterns.lua)=Lua.exe "$(FileNameExt)" $(1) $(2) $(3) $(4)
(в $(i) подставляется соотв. значение)

1. Проблема в том, что это нетривиальная задача, главным образом потому, что надо решать её или "в общем виде", или для каждого языка по-отдельности. Здесь IDE для одного/двух языков имеют преимущество, а в SciTE-Ru реализован именно вариант "общий вид", реализован, к сожалению, не идеально.
Ответственный за это безобразие скрипт AutocompleteObject.lua
Так что либо переделывать скрипт, либо использовать workaround: писать руками api-файлы для наиболее часто используемых объектов.
Автор: mozers
Дата сообщения: 28.02.2009 11:19
agner
Со структурой - все ясно. Возможно те, кто пишет ветвистые проекты и заинтересуются...
Что же касается поиска деклараций, то в смысл второго примера
Цитата:
Вот примеры вывода информации SideBar и taglist.vim
я что то так и не въехал. taglist.vim - пример из ниоткуда (давайте рассматривать только файлы из сборки). Результат анализа SideBar - полный бред. Зачем мне эта чушь???

noloved
1. Встроенное автодополнение реализовано достаточно примитивно (если есть полное слово в тексте или в api-файле, то SciTE может дополнить неполное слово до него).
Автодополнение "объектов" их "свойствами"/"методами" после точки реализовано скриптом AutocompleteObject.lua. Он великолепно работает с Lua, VBS, JS, CSS,... (т.е. с теми языками, над которыми потрудились). С C никто не занимался - видимо не надо...
2. Да. Можно. См. command.help
3. В SciTE нет отладчика. Поэтому метод, изложенный Tymur-ом отлично работает с любыми скриптовыми языками. В C он будет безполезен, поскольку в SciTE нельзя выполнить отдельную функцию С (с параметром или без - безразницы). Вот откомпилить файл, задав через Shift+F8 нужные параметры ком.строки - это без проблем.
Автор: vladvro
Дата сообщения: 01.03.2009 09:33
agner

Цитата:
К примеру в main.c встречается функция/структура/дефайн intra_pred_mode. Что означает это определение и в каком файле находится - понятие не имею. Устанавливаю курсор на intra_pred_mode, нажимаю 'Ctrl+.'. Открывается вкладка с файлом h264.c на том месте, где определена функция/структура intra_pred_mode. Слегка подредактировав/изучив назначение функции/структуры, нажимаю 'Alt+.', попадаю на то место исходного кода, откуда начинал исследование intra_pred_mode.

IMHO такая навигация по коду довольна удобна.

Судя по описанию и правда должно быть удобно, я заинтересовался.

Цитата:
Вот примеры вывода информации SideBar и taglist.vim

О чем тут идет речь и что сравнивается не смог понять. taglist.vim - это что? Судя по представленому описанию работы ctags, его впринципе сложно сравнивать с SideBar, т.к. SideBar не умеет работать с проектами, он просто отображает список функций текущего открытого файла.
Автор: Sec0ndWind
Дата сообщения: 01.03.2009 20:27
Други, подскажите, пожалуйста, как вставить в контекстное меню SciTE макрос находящийся в списке макросов (файл SciTE.macro)?
Или хотябы как назначить конкретному макросу из того же файла горячую клавишу???
Заранее огромное спасибо.
Автор: vladvro
Дата сообщения: 02.03.2009 14:43
Sec0ndWind

Цитата:
Други, подскажите, пожалуйста, как вставить в контекстное меню SciTE макрос находящийся в списке макросов (файл SciTE.macro)?
Или хотябы как назначить конкретному макросу из того же файла горячую клавишу???

Надо добавить в файл настроек примерно такую команду:

Код: command.name.201.*=Run Macro example
command.201.*=dostring scite.Perform("currentmacro:example") scite.MenuCommand(IDM_MACROPLAY)
command.mode.201.*=subsystem:lua,savebefore:no
command.shortcut.201.*=Alt+Shift+F9
Автор: MarfaKudesnica
Дата сообщения: 03.03.2009 19:21
А это вообще нормально, что файл SciTEGlobal.properties в кодировке 1251 ? А то выставляешь code.page=65001 , т.к. все свои документы в UTF-8, а файл конфигурации - нет.

Может SciTEGlobal.properties конвертнуть в UTF-8 ?
Автор: Sec0ndWind
Дата сообщения: 04.03.2009 11:41
vladvro, большое спасибо!
А каким образом теперь можно добавить новую комманду в контекстное меню?


Добавлено:
Вопрос снят... разобрался...
vladvro, еще раз спасибо!
Автор: VoidVolker
Дата сообщения: 08.03.2009 09:26
Как через SciTE.Helper выполнить команду -goto:номер строки,номер столбца? А то если ее выполнять через ком-строку, то это долго очень - пока он там запустится, еще и окошко новое мигает.
Автор: mozers
Дата сообщения: 08.03.2009 16:47
VoidVolker
Да, собственно, так же... На VBS, например, это будет так:
Код: Set SciTE = CreateObject("SciTE.Helper")
line = 18
col = 20
SciTE.Send("goto:" & line & "," & col)
Автор: VoidVolker
Дата сообщения: 08.03.2009 20:14
mozers
Ага, ясно, а как переключиться на вкладку с нужным файлом?
Автор: mozers
Дата сообщения: 09.03.2009 12:19
VoidVolker
Нужно просто выполнить команду открытия файла
Код: SciTE.Send("open:C:\\TEMP\\test.lua")
Автор: VoidVolker
Дата сообщения: 09.03.2009 21:28

Цитата:
Нужно просто выполнить команду открытия файла

mozers, ясно, спасибо.

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566

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


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