2009-03-03 5 views
1

Certains lanaguages, comme Perl, utilise l'impression du code préformaté:Emacs fonction pour envelopper le texte avec printfs

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

Certaines langues ne le font pas.

Pour ceux qui ne le font pas, je voudrais pouvoir écrire mon texte et puis le convertir en un tas de printfs:

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

Ce qui est une bonne façon de faire cette conversion? (De préférence dans emacs)

Répondre

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

Le troisième argument de comment-region contrôle le comportement - soit en commentant (avec des multiples de caractères de commentaire), soit en ne commentant pas. Je ne sais pas ce que votre suggestion/commentaire essaie de faire. –

1

À moins que je devais faire ce plusieurs fois par jour, je probablement le faire de manière interactive:

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

juste senti comme suggérant deux autres façons, faire en sorte que cua -mode est activé, alors vous faites C-enter au début, appuyez sur jusqu'à ce que vous atteigniez la dernière ligne (même colonne) et tapez 'printf' '

Une autre est de faire une macro, tapez:

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