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

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

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


Автор: mozers, Отправлено:15:21 14-02-2009
The_gray_Cardinal

Цитата:
Виндовая консоль работает в cp866
Точнее - в любой кодировке из позволенных командой CHCP. Только заменить этот дебильный Terminal на Lucida Console например...

Цитата:
и, как правильно настроить консоль SciTE для Python, понятно (output.code.page=866)
Какую кодировку не выставляй - все равно в консоли SciTE приведенный тобой пример выдает ошибку:
Код:
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-5: ordinal not in range(128)
Ошибка эта генерится Питоном, а не SciTE. Значит разбираться надо с Питоном.

Цитата:
не получается настроить одинаковое поведение консоли системы и консоли SciTE (а под Виндой получается).
Как это тебе удалось? Под Виндой у тебя нет этой ошибки???

domo22
Забирай исправленный скрипт.
Автор: The_gray_Cardinal, Отправлено:16:35 14-02-2009
mozers

Цитата:
Да в любой она работает!

Есть волшебное слово: "по умолчанию". Остальное не имеет значения. Понятно, что ты можешь изнасиловать систему как тебе угодно. Но когда тебе нужно распространять скрипт, он должен работать на настройках по умолчанию, иное будет моветоном во многих ситуациях.

Под Виндой на самом деле с Питоном надо поступать следующим образом:

Код:
# -*- coding: utf-8 -*-
import codecs, sys
outf = codecs.getwriter('cp866')(sys.stdout, errors='replace')
sys.stdout = outf
print u'Привет!'

Если output.code.page=866, то такой скрипт будет работать одинаково и в консоли (если её не трогать), и в SciTE. Именно этой одинаковости я и хочу добиться под Linux.

P.S. Сейчас попробую сделать на Linux аналогичную обёртку для вывода в utf-8, может, прокатит. Хотя, мне казалось, что из-за всеобщей юникодности там просто обязано быть всё проще.

Добавлено:
Ну, в общем, вот так работает и в консоли, и и из-под SciTE (Linux):

Код:
# -*- coding: utf-8 -*-
import codecs, sys
outf = codecs.getwriter('utf-8')(sys.stdout, errors='replace')
sys.stdout = outf
print u'Привет!'

Если кто может теоретически / идеологически разъяснить, как правильно вести себя с кодировками в связке Linux-SciTE-Python, выслушаю с удовольствием.
Автор: mozers, Отправлено:19:35 14-02-2009
The_gray_Cardinal
Yes. Так - действительно работает и показывает "Привет!" и в системной консоли и в панели SciTE.
Только надо предупредить слушателей, что для этого необходимо сам текст скрипта набирать в UTF-8, параметр output.code.page=866 так же обязателен, и без фичи SciTE-Ru output.code.page.oem2ansi=1 так же не работает.

Автор: domo22, Отправлено:14:37 17-02-2009
mozers

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

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

В общем, можно ли данному скрипту сортировки сделать 'прививку', причем от двух болезней сразу?
Автор: TymurGubayev, Отправлено:02:12 21-02-2009
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)

[/more]
Автор: mozers, Отправлено:10:11 21-02-2009
domo22
Идеи - толковые "Прививка" сделана

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

Автор: Onetai, Отправлено:21:43 24-02-2009
Достали при наборе кода:

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

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

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

Вопрос: как в настройках избавиться от всех этих расчудесностей?
Автор: agner, Отправлено:00:43 25-02-2009
Помогите пожалуйста правильно подключить 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, Отправлено:11:12 25-02-2009
Onetai
Цитата:
как в настройках избавиться от всех этих расчудесностей?
Закомментировать или приравнять к 0 параметр braces.autoclose.
Или закомментировать строчку подключения скрипта smartbraces.lua в SciTEStartup.lua.
Хотя, если привыкнуть (мне тоже вначале не понравилось что комп меня идиотом считает), то его работа покажется очень удобной

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

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

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

может не нашел, подскажите !
Автор: vladvro, Отправлено:15:36 25-02-2009
sstude

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

Все верно, нет. И не планируется встраивать.
Я пользовал для аналогичного случая внешнюю тулзу работающую из командной строки, создав для ее использования пару-тройку пунктов в меню редактора и повесив на них шорткаты.
Автор: sstude, Отправлено:21:29 25-02-2009
ftp по коммандной строке? есть пример какой-нибудь ?
Автор: Onetai, Отправлено:23:38 25-02-2009
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, Отправлено:00:25 26-02-2009

Цитата:
Во первых - можно вполне обойтись и без 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, Отправлено:12:03 26-02-2009
sstude

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

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

Цитата:
SideBar довольно криво криво выводит список фунций - часть функций в него вообще не попадает, частично попадют левые строки, и при этом работает только с Си-файлами.
У меня же, после первого знакомства с ctags, сложилось прямо противоположное мнение: И языков FunctionList в SideBar поддерживает больше и ищет на порядок лучше.
Попробуйте меня переубедить конкретным примером.

sstude
Цитата:
ftp по коммандной строке? есть пример какой-нибудь ?
Без проблем можно приспособить стандартную ftp. Можно - wget или cURL.

Автор: agner, Отправлено:02:49 27-02-2009

Цитата:
Но вот результат работы команды
Код: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


В каталоге src выполняю команду

Код:
ctags -R

В результате в каталоге src появляется файл tags. Открываю в SciTE (в котором установлен ctagsdx.lua) файл main.c.

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

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


Цитата:
У меня же, после первого знакомства с ctags, сложилось прямо противоположное мнение: И языков FunctionList в SideBar поддерживает больше и ищет на порядок лучше.
Попробуйте меня переубедить конкретным примером

Вот примеры вывода информации SideBar и taglist.vim (извлекает информацию из tags-файла)

Код:

SideBar
port_init
init_dev
is_sync_packet
for
for
for


Код:

TagList
macro
DS3231_Example
Mode_3
typedef
sync_vect_t
variable
dev_id
sync_pattern
buf
function
port_init
init_dev
is_sync_packet
process_packet
MISO_INT_ISR

Как говорится - почувствуйте разницу... Одинаково хорошо работает для С и Verilog, для других языков программирования не пробовал
Автор: TymurGubayev, Отправлено:06:26 27-02-2009
Я слегка обновил скрипт боковой панели, пока что в бранче.
Брать тут:
SideBar.lua
COMMON.lua
Так же понадобится LPEG.dll (compiled by ur4ltz)

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

enjoy



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