[Emacs] Générer un beau fichier de code.

Générer un beau fichier de code. [Emacs] - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 13-10-2003 à 10:01:10    

Bonjour,
 
Est-ce qu'Emacs, à partir d'un fichier de code, peut générer un beau fichier ps avec, par exemple, la coloration syntaxique, la mise en italique des commentaires, la mise en gras des mots réservés, mettre les titres et entêtes avec nom du fichier, rajouter le numéro des lignes, etc.  
 
Parceque imprimer de l'ASCII, c'est pas beau et c'est trop grand.  
 
Ce serait pour du C, C++ et Java.  
 
Merci.

Reply

Marsh Posté le 13-10-2003 à 10:01:10   

Reply

Marsh Posté le 13-10-2003 à 10:23:21    

Plusieurs solutions pour trouver de la doc sur Emacs :
- lire le manuel en anglais (je ne sais pas s'il existe une traduction)
- utiliser l'aide d'Emacs. Tu as notamment la commande apropos (F1-a ou ctrl-h a) qui te demandes "Apropos command (regexp):". Tu met "print" et tu as "ps-print-region-with-faces"
- utiliser les menus... "File" "Postscript Print Buffer"
 
Ensuite la configuration de l'impression ne se fait pas de façon très intuitive (c'est souvent le cas avec Emacs...).

Reply

Marsh Posté le 13-10-2003 à 10:31:01    

doxygen powa
et javadoc pour java...

Reply

Marsh Posté le 13-10-2003 à 10:43:47    

grosminet a écrit :

doxygen powa
et javadoc pour java...


 
T'as rien compris toi, retourne dormir ...


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
Reply

Marsh Posté le 13-10-2003 à 11:09:25    

Pour les options, voilà deux tites fonctions que j'utilise qui permettent de créer des fichiers .ps à partir sur tous les fichiers ouverts avec 2 pages par feuille :
 

Code :
  1. ;;; ### autoload
  2. (defun psprint (arg)
  3.   "Print the current buffer in nom_buffer.ps.
  4. With a prefix argument, print it directly"
  5.   (interactive "P" )
  6.   (require 'ps-print)
  7.   (let ((ps-paper-type 'a4)
  8.  ;; marges                        cm
  9.  (ps-left-margin   (/ (* 72   .7) 2.54))
  10.  (ps-right-margin  (/ (* 72   .7) 2.54))
  11.  (ps-bottom-margin (/ (* 72   .7) 2.54))
  12.  (ps-top-margin    (/ (* 72  1.5) 2.54))
  13.  (ps-inter-column  (/ (* 72  1.0) 2.54))
  14.  (ps-header-offset (/ (* 72   .5) 2.54))
  15.  (ps-font-size 8)
  16.  (ps-landscape-mode t)
  17.  (ps-number-of-columns 2))
  18.     (ps-print-buffer-with-faces
  19.       (if arg
  20. nil
  21. (concat (file-name-nondirectory (buffer-file-name)) ".ps" )))))
  22. ;;; ### autoload
  23. (defun psprint-all (arg)
  24.   "Print all buffers in buffer_name.ps
  25. Don't print buffer which aren't files like \"*scratch*\".
  26. With a prefix argument, print it directly"
  27.   (interactive "P" )
  28.   (save-excursion
  29.     (let ((l (buffer-list)))
  30.       (while l
  31. (switch-to-buffer (car l))
  32. (if (not (string-match "\\*" (buffer-name (current-buffer))))
  33.     (psprint arg))
  34. (setq l (cdr l))))))


 
Pour ce qui est de la config :
entete :

Code :
  1. ;; Affiche un cadre pour l'entête (t) ou non (nil)
  2. ;(setq ps-print-header-frame t)
  3. ;;; Nombre de ligne de l'entête
  4. ;(setq-default ps-header-lines 1)
  5. ; Entête : Partie Gauche    Partie droite
  6. ;; Pour afficher du texte : le mettre entre parenthéses
  7. ;;                          ex: "(TD de Scheme)"
  8. ;;                              "()" ; ligne vide
  9. ;; Pour afficher le nombre de page : "/pagenumberstring load"
  10. ;; Pour afficher le nom du buffer : 'buffer-name
  11. ;; Pour afficher la date : 'time-stamp-dd-mon-yy
  12. ;; (setq ps-left-header
  13. ;;       (list 'buffer-name
  14. ;;      ))
  15. ;; (setq ps-right-header
  16. ;;   (list "/pagenumberstring load"
  17. ;;  'time-stamp-dd-mon-yy
  18. ;;  ))


 
Créer une police d'impression :

Code :
  1. ;; Rajout d'une famille de police
  2. (setq ps-font-info-database
  3.        (append
  4.         '((Sun   ; nom de la famille
  5.    (fonts
  6.     (normal . "Courier" )
  7.     (bold . "Courier-Bold" )
  8.     (italic . "ZapfChancery-MediumItalic" )
  9.     (bold-italic . "Courier-BoldOblique" ))
  10.    (size . 10.0)
  11.    (line-height . 10.55)
  12.    (space-width . 6.0)
  13.    (avg-char-width . 6.0)))
  14.         ps-font-info-database))
  15. ;; Modification de la police d'impression
  16. ;; Pour voir toute les polices: Voir la variable `ps-font-info-database'
  17. ;; La seule police non proportionnelle est Courier ...
  18. ;(setq ps-font-family 'Sun)
  19. ;(setq ps-font-family 'Courier)


 
Impression sur une page :

Code :
  1. ;; marges
  2.   (setq ps-left-margin   (/ (* 72  3.0) 2.54)) ;   3 cm
  3.   (setq ps-right-margin  (/ (* 72  1.5) 2.54)) ;   2 cm
  4.   (setq ps-bottom-margin (/ (* 72  2.0) 2.54)) ; 2.5 cm
  5.   (setq ps-top-margin    (/ (* 72  3.0) 2.54)) ; 3.5 cm
  6.   ;; Taille de la police (en point)
  7.   (setq ps-font-size 9.5)
  8.   (setq ps-landscape-mode nil)
  9.   (setq ps-number-of-columns 1)


 
sur 2 pages :

Code :
  1. (setq ps-left-margin   (/ (* 72   .7) 2.54))
  2.   (setq ps-right-margin  (/ (* 72   .7) 2.54))
  3.   (setq ps-bottom-margin (/ (* 72   .5) 2.54))
  4.   (setq ps-top-margin    (/ (* 72  1.5) 2.54))
  5.   (setq ps-inter-column  (/ (* 72  1.0) 2.54))
  6.   (setq ps-header-offset (/ (* 72   .5) 2.54))
  7.   ;; Taille de la police (en point)
  8.   (setq ps-font-size 8)
  9.   (setq ps-landscape-mode t)
  10.   (setq ps-number-of-columns 2))


 
Tu peux aussi utiliser les buffers cutomize pour configurer tout ça.
 
Pour ce qui est de l'affichage du numéro des lignes :

Code :
  1. ;; Line Number
  2. ;; -----------
  3. ;;
  4. ;; The variable `ps-line-number' specifies whether to number each line;
  5. ;; non-nil means do so.  The default is nil (don't number each line).
  6. ;;
  7. ;; The variable `ps-line-number-color' specifies the color for line number.
  8. ;; See `ps-zebra-color' for documentation.  The default is "black" (or 0.0, or
  9. ;; '(0.0 0.0 0.0)).
  10. ;;
  11. ;; The variable `ps-line-number-font' specifies the font for line number.
  12. ;; The default is "Times-Italic".
  13. ;;
  14. ;; The variable `ps-line-number-font-size' specifies the font size in points
  15. ;; for line number.  See `ps-font-size' for documentation.  The default is 6.
  16. ;;
  17. ;; The variable `ps-line-number-step' specifies the interval that line number
  18. ;; is printed.  For example, if `ps-line-number-step' is set to 2, the printing
  19. ;; will look like:
  20. [...]
  21. (voir le fichier ps-print.el ou la doc associé)

Reply

Marsh Posté le 13-10-2003 à 11:15:24    

dis donc pépère kadreg, calme toi, on demande un truc pour foutre du code en couleur etc. dans le but de l'imprimer.
alors oui, doxygen le fait tres bien, il ne fait pas que s'occuper des commentaires.
alors même si ça ne génère pas de fichier ps je pense que ça peut être une solution

Reply

Marsh Posté le 13-10-2003 à 11:30:22    

Je suis sur que c'est moins beau qu'avec Emacs ;)
Par contre c'est ptet plus rapide et plus simple à utiliser... :/

Reply

Marsh Posté le 13-10-2003 à 12:06:56    

grosminet a écrit :

dis donc pépère kadreg, calme toi, on demande un truc pour foutre du code en couleur etc. dans le but de l'imprimer.


 
Sauf que doxygen et javadoc ne servent pas à ça espèce de crétin. Ils extraient des infos du code pour en permettre la documentation. Avec doxygen, tu obtient ça : http://xml.apache.org/xerces-c/api [...] ndler.html , ce qui n'est pas exactement du pretty-print.


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
Reply

Marsh Posté le 13-10-2003 à 12:17:05    

PUTAIN MAIS TU RENDS OUF
je dis pas que c la meilleur solution bordel je dis quoi ? je dis que ça te met le code en couleur si tu as besoin de l'imprimer et c'est tout
--> solution rapide et pratique qd on a pas envie de se plonger dans la conf de emacs en lisp
je dis pas non plus que doxygen et javadoc sont des trucs voués à faire ça, mais que qd tu regarde ce que génère doxygen et bien tu as ton code en couleur dans une page html
 
alors tais toi et arrête d'agresser les gens, t'est ptet tres bon, mais pas franchement constructif, tu proposes quoi toi ? rien.
 
Arsumik: en effet, je suppose que c moins bô qu'avec emacs.

Reply

Marsh Posté le 13-10-2003 à 12:17:57    

grosminet a écrit :


je dis que ça te met le code en couleur si tu as besoin de l'imprimer et c'est tout


 
Depuis quand ? Tu as un exemple ?


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
Reply

Marsh Posté le 13-10-2003 à 12:17:57   

Reply

Marsh Posté le 13-10-2003 à 12:32:17    

oui tu vas dans n'importe quel index.html généré par doxygen tu regardes la section 'file list' en haut
tu as une liste de fichiers qui apparaissent alors si j'ai bonne mémoire et tu peux cliquer sur le mot [code] qui apparait à côté du fichier.
tous les fichiers n'auront ptet pas ce lien il me semble qu'il faut le dire à doxygen.
je crois si je me souviens bien que tu peux donner des règles à doxygen pour qu'il mette les commentaires etc d'une certaine couleur et tout.
si tu veux un exemple:
http://www.lrde.epita.fr/~akim/com [...] ource.html

Reply

Marsh Posté le 13-10-2003 à 12:34:05    

a2ps peut etre ?
 
edit kadreg, fais nous un tar stp


Message édité par Taz le 13-10-2003 à 12:35:35
Reply

Marsh Posté le 13-10-2003 à 12:36:01    


 
fake :o


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
Reply

Marsh Posté le 13-10-2003 à 12:39:12    

?

Reply

Marsh Posté le 25-10-2003 à 15:22:48    

ArSuniK >>  :jap:  :jap:  :jap:  :jap:  
 
Trop bon !! Je vais tester tout ça ... Un très grand merci à toi !

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed