Архив SciTE-форума
Автор: mozers, Отправлено:15:21 14-02-2009
The_gray_Cardinal
Цитата:
| Виндовая консоль работает в cp866 |
Цитата:
| и, как правильно настроить консоль SciTE для Python, понятно (output.code.page=866) |
Код:
| UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-5: ordinal not in range(128) |
Цитата:
| не получается настроить одинаковое поведение консоли системы и консоли 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
Цитата:
| как в настройках избавиться от всех этих расчудесностей? |
Или закомментировать строчку подключения скрипта smartbraces.lua в SciTEStartup.lua.
Хотя, если привыкнуть (мне тоже вначале не понравилось что комп меня идиотом считает), то его работа покажется очень удобной

agner
Цитата:
| В окне Replace есть возможность замены текста в открытых буферах, в окне Find - нет. Как включить ? |
Цитата:
| подключить ctags к Scite |
Добавлено:
Чтобы народ привлечь к этой тулзе, ты бы написал реально работающую комстроку типа:
Код:
| 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 довольно криво криво выводит список фунций - часть функций в него вообще не попадает, частично попадют левые строки, и при этом работает только с Си-файлами. |
Попробуйте меня переубедить конкретным примером.
sstude
Цитата:
| ftp по коммандной строке? есть пример какой-нибудь ? |
Автор: 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 /

