2009-03-03 2 views
1

Некоторые lanaguages, как Perl, поддержка печати отформатированный код:Emacs работать, чтобы обернуть текст printfs

print <<EOL 
    a line 
    another line 
    and another. 
EOL 

Некоторые языки не делают.

Для тех, которые не делают, я бы хотел, чтобы иметь возможность написать свой текст, а затем преобразовать его в кучу printfs:

 
printf "a line\n"; 
printf "another line\n"; 
printf "and another\n"; 

Что такое хороший способ сделать это преобразование? (Предпочтительно в Emacs)

ответ

2
(defun my-add-printf (b e) 
    "Add printf's to region" 
    (interactive "r") 
    (let ((comment-start "\tprintf \"") 
     (comment-end "\\n\";")) 
    (comment-region b e))) 
+0

(comment-region b e comment-end)? – gone

+0

Третий аргумент для области комментариев контролирует поведение - либо комментирование (с краткими комментариями символов), либо отказ от комментариев. Я не знаю, что делает ваше предложение/комментарий. –

1

Если я не должен был сделать это много раз в день, я бы, вероятно, просто сделать это в интерактивном режиме:

M-x query-replace-regexp RET .* RET printf "\&\\n"; RET
1

просто чувствовал, что предполагает еще два пути, убедитесь, что CUA -mode включается, тогда вы запускаете C-enter в начале, нажимаете до тех пор, пока не дойдете до последней строки (тот же столбец) и не напечатайте «printf».

Другой - сделать макрос. Введите следующее:

C-x ( 
printf " 
C-e 
"; 
C-a 
C-n 
C-x) 
C-x e 
e e e e e e e e ....