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

Russian main discussion
  • Author
  • Message
Offline
Posts: 56
Joined: Tue Aug 26, 2008 9:56 am

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

Post by temp1111 »

Было бы замечательно иметь такую возможность. Масса форумов корежит вставляемые в топик исходники, если в них есть TABы, и напротив - редактировать исходники с пробелами вместо TABов - неудобно.

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

Спасибо.

Offline
Posts: 2247
Joined: Tue Aug 07, 2007 2:03 pm
Location: Vinnitsa, Ukraine

Post by FeyFre »

temp1111 на форумах есть специальный тег code который ничего не корёжит. За то что его не используют - втык должны сделать модераторы.

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

Offline
Posts: 56
Joined: Tue Aug 26, 2008 9:56 am

Post 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

Offline
Posts: 2247
Joined: Tue Aug 07, 2007 2:03 pm
Location: Vinnitsa, Ukraine

Post by FeyFre »

temp1111, думаю уже поняли что ответ "такой возможности сейчас нету", и раз уж вы такой крутой низкоуровневый программист, то думаю вам не составит труда самостоятельно написать скрипт к плагину который сделает то что вам нужно, а не слушать меня "всезнающего учителя".

Offline
Posts: 56
Joined: Tue Aug 26, 2008 9:56 am

Post by temp1111 »

Любезный, а я разве у вас лично что-нибудь спрашивал? Вы разве имеете какое-либо отношение к разработке и развитию AkelPad, или просто потрындеть решили? Найдите в таком случае себе более благодарную аудиторию, а то я, знаете ли, ламеров-всюду-затычек с детства не перевариваю.

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

Offline
Posts: 876
Joined: Tue Jul 24, 2007 8:54 am

Post by Fr0sT »

temp1111
о великий Гуру, просвети погрязшего во мраке невежества, чем не угодила тебе фраза "заменяйте сколько вам нужно пробелов на \t" и каковы же твои истинные цели?

Offline
Posts: 3217
Joined: Wed Nov 29, 2006 1:19 pm
Location: Киев, Русь
Contact:

Post by VladSh »

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

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

Offline
Posts: 2247
Joined: Tue Aug 07, 2007 2:03 pm
Location: Vinnitsa, Ukraine

Post by FeyFre »

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

Offline
Posts: 56
Joined: Tue Aug 26, 2008 9:56 am

Post by temp1111 »

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

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

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

Offline
Posts: 876
Joined: Tue Jul 24, 2007 8:54 am

Post by Fr0sT »

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

Offline
Site Admin
Posts: 6311
Joined: Thu Jul 06, 2006 7:20 am

Post by Instructor »

temp1111
Замена табов на пробелы - TabsToSpaces.js

Offline
Posts: 49
Joined: Fri Sep 22, 2006 9:28 pm
Location: Питер
Contact:

Post 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
Заменить все

.....

Offline
Posts: 876
Joined: Tue Jul 24, 2007 8:54 am

Post by Fr0sT »

Макрос можно записать :)
Да, и у тебя там ошибка: заменить на \n\t\t...

Offline
Posts: 56
Joined: Tue Aug 26, 2008 9:56 am

Post 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, сочтя за описку, но результат тот же :(

Offline
Site Admin
Posts: 6311
Joined: Thu Jul 06, 2006 7:20 am

Post by Instructor »

temp1111
Скопируйте скрипт полностью ничего не меняя. Опечатку исправил.
Post Reply