Page 1 of 2

Замена TABs на Spaces и обратно?

Posted: Sat Jan 09, 2010 7:14 pm
by temp1111
Было бы замечательно иметь такую возможность. Масса форумов корежит вставляемые в топик исходники, если в них есть TABы, и напротив - редактировать исходники с пробелами вместо TABов - неудобно.

В ConTEXT такая фича есть - его пока и приходится для этого пользовать :((

Спасибо.

Posted: Sun Jan 10, 2010 7:07 pm
by FeyFre
temp1111 на форумах есть специальный тег code который ничего не корёжит. За то что его не используют - втык должны сделать модераторы.

А исправить можно с помощью обычной Замены. Заменяйте "<сколько ван нужно пробелов>" на "\t"

Posted: Thu Jan 14, 2010 7:11 pm
by temp1111
FeyFree, на форумах есть специальный тег code который корёжит любой текст с шириной табов, отличной от 4:

Code: Select all

;== Initialization code =======================================================
reset:
	outiw	SP,RAMEND	; Initialize stack pointer

	clr	nul		; Initialize zero value holding register

	rcall	init_ports	; Initialize ports
	rcall	init_tmr1	; Initialize Timer 1
	rcall	init_adc	; Initialize ADC
	rcall	init_uart	; Initialize UART
	rcall	init_lcd	; Initialize LCD

	clr	keyold		; Clear key debounce registers
	clr	keydeb		;
	clr	keyon		;
	clr	keytgl		;

	ldi	tmp,kdeb_ms	; Load key debounce timer
	mov	kdebtmr,tmp	; with predefined key debounce time value

	clr	stimer		; Clear software incremental timer

	sei			; Enable interrupts

;#define	debug
#ifdef	debug
.listmac			; Turn listing macro expansion on
	rjmp	showkeys	; Show key debounce registers' bits on LCD
#endif
А вот как это выглядит с пробелами вместо табов:

Code: Select all

;== Initialization code =======================================================
reset:
        outiw   SP,RAMEND       ; Initialize stack pointer

        clr     nul             ; Initialize zero value holding register

        rcall   init_ports      ; Initialize ports
        rcall   init_tmr1       ; Initialize Timer 1
        rcall   init_adc        ; Initialize ADC
        rcall   init_uart       ; Initialize UART
        rcall   init_lcd        ; Initialize LCD

        clr     keyold          ; Clear key debounce registers
        clr     keydeb          ;
        clr     keyon           ;
        clr     keytgl          ;

        ldi     tmp,kdeb_ms     ; Load key debounce timer
        mov     kdebtmr,tmp     ; with predefined key debounce time value

        clr     stimer          ; Clear software incremental timer

        sei                     ; Enable interrupts

;#define        debug
#ifdef  debug
.listmac                        ; Turn listing macro expansion on
        rjmp    showkeys        ; Show key debounce registers' bits on LCD
#endif
Еще есть Волга, которая впадает в Каспийское море, и есть учителя, которые знают все - типа вас. Также есть отдельные утилиты, которые такое преобразование делают - с clipboard и файлами - но я вовсе не об этом спрашивал. И отнюдь не у вас, особенно после прочтения вашего перла "заменяйте сколько вам нужно пробелов на \t" :D

Posted: Thu Jan 14, 2010 10:32 pm
by FeyFre
temp1111, думаю уже поняли что ответ "такой возможности сейчас нету", и раз уж вы такой крутой низкоуровневый программист, то думаю вам не составит труда самостоятельно написать скрипт к плагину который сделает то что вам нужно, а не слушать меня "всезнающего учителя".

Posted: Fri Jan 15, 2010 12:44 am
by temp1111
Любезный, а я разве у вас лично что-нибудь спрашивал? Вы разве имеете какое-либо отношение к разработке и развитию AkelPad, или просто потрындеть решили? Найдите в таком случае себе более благодарную аудиторию, а то я, знаете ли, ламеров-всюду-затычек с детства не перевариваю.

"ПроходИте мимо - гостем будете"(с).

Posted: Fri Jan 15, 2010 7:59 am
by Fr0sT
temp1111
о великий Гуру, просвети погрязшего во мраке невежества, чем не угодила тебе фраза "заменяйте сколько вам нужно пробелов на \t" и каковы же твои истинные цели?

Posted: Fri Jan 15, 2010 9:52 am
by VladSh
temp1111
у вас, видимо, настроение плохое...
Люди /не без оснований/ думают /и даже почти уверены :) /, что такая функция не будет добавлена в AkelPad, и поэтому предлагают хоть что-то для решения ВАШЕЙ проблемы; за это обычно говорят спасибо. А если совет не в тему, то просто молча проходят мимо.

P.S. Исходники могут быть откуда угодно, т.е. в них может быть разное количество пробелов, да в одном и том же исходнике может быть полный разброд с отступами - и такое, к сожалению, не редкость...

Posted: Fri Jan 15, 2010 10:36 am
by FeyFre
temp1111, любезный, создав здесь топик Вы спрашиваете у всех, кто пожелает ответить. Если Вам ответ не нравится - вы можете это высказать только мне в личку, а не в теме.
Если вы хотели спросить у конкретного человека - разработчика, то Вам нужно было бы писать ему в личку.
о великий Гуру, просвети погрязшего во мраке невежества, чем не угодила тебе фраза "заменяйте сколько вам нужно пробелов на \t" и каковы же твои истинные цели?
Fr0sT, спокойствие. Совет действительно немного корявый, и не совсем ясный. :)

Posted: Fri Jan 15, 2010 11:59 am
by temp1111
VladSh wrote:temp1111
у вас, видимо, настроение плохое...
Нормальное, рабочее :D
Исходники могут быть откуда угодно, т.е. в них может быть разное количество пробелов, да в одном и том же исходнике может быть полный разброд с отступами - и такое, к сожалению, не редкость...
Совершенно верно. И именно поэтому на ВСЕХ phpbb-driven форумах одно из наиболее частых сообщений - "йопрст, опять форумный движок все форматирование покоцал, ща попробую повторить..."

Я упомянул и редактор (и он не один) с такой фичей, и утилитки, прекрасно это делающие - ведь очевидно, что это востребовано многими, посему и существует. AkelPad является прекрасной и более чем достойной заменой дефолтному системному "блокноту", и одна из его важнейших возможностей - это интеллектуальный MDI-буфер для тестового контента.

Наличие ВСТРОЕННОЙ возможности Tabs<>Spaces однозначно улучшило бы его и без того изрядную и рациональную функциональность - как минимум с точки зрения многочисленной армии программистов, давно и успешно пользующейся этим замечательным инструментом.

Posted: Mon Jan 18, 2010 7:45 am
by Fr0sT
FeyFre wrote:Совет действительно немного корявый, и не совсем ясный. :)
Ну не знаю, по-моему, что может быть яснее... Ctrl-R, что: " ", на "\t", "Заменить всё". В отдельном инструменте смысла не вижу. Это ж придётся ещё и настройку делать, сколько пробелов заменять на один таб.

Posted: Sat Apr 03, 2010 4:22 am
by Instructor
temp1111
Замена табов на пробелы - TabsToSpaces.js

Posted: Sat Apr 03, 2010 10:13 am
by okruzhor
Fr0sT wrote:Ну не знаю, по-моему, что может быть яснее... Ctrl-R, что: " ", на "\t", "Заменить всё". В отдельном инструменте смысла не вижу. Это ж придётся ещё и настройку делать, сколько пробелов заменять на один таб.
Внутри текста тоже возможны ряды пробелов , которые обычно надо уберечь от замены на табуляции . Тогда придётся менять в несколько приёмов , каждый раз используя нужное число пробелов после '\n' , например :

// 8 табуляций
^R
\n
\t\t\t\t\t\t\t\t
Заменить все

// 7 табуляций
^R
\n
\t\t\t\t\t\t\t
Заменить все

.....

Posted: Mon Apr 05, 2010 6:32 am
by Fr0sT
Макрос можно записать :)
Да, и у тебя там ошибка: заменить на \n\t\t...

Posted: Wed Apr 07, 2010 9:46 pm
by temp1111
Instructor wrote:temp1111
Замена табов на пробелы - TabsToSpaces.js
Спасибо!.. только вот что получается:

- выделяю фрагмент с табами под замену
- нажимаю hotkey, назначенный для TabsToSpaces
- получаю ошибку:

Script: c:\bla-bla\TabsToSpaces.js
Line: 29
Char: 7 [это начало строки SelCompliteLine(hWndEdit, nSelStart, nSelEnd);]
Error: Object expected
Code: 800A138F
Source: Microsoft JScript runtime error [WinXP SP2]

Пробовал заменить SelCompliteLine на SelCompleteLine, сочтя за описку, но результат тот же :(

Posted: Thu Apr 08, 2010 4:56 am
by Instructor
temp1111
Скопируйте скрипт полностью ничего не меняя. Опечатку исправил.