Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1333 connectés 

  FORUM HardWare.fr
  Programmation
  Divers

  [LISP] Emacs major mode

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[LISP] Emacs major mode

n°1419727
Danjer
Posté le 04-08-2006 à 14:48:38  profilanswer
 

Bonjour,
 
Je cherche a faire un mode majeur dans Emacs pour lire et analyser un tkprof (Oracle...).
J'ai deux problemes :
 - J'y connais rien en lisp,
 - Je cherche la bonne solution.
 
Mon but finale est d'avoir une fonction qui ouvre un nouveau buffer qui contient une sorte de grep des lignes qui contienne la chaine "total" et de pouvoir cliquer faire le meme action que si j'avais fais un grep. Le probleme c'est que grep a besoin d'un fichier pour fonctionner si mon buffer est dans un zip cela ne fonctionne pas.
 
Alors j'ai ecris ca :

Code :
  1. (defvar tkprof-search-last-buffer nil
  2.   "The most recent search buffer.
  3. A buffer becomes most recent when a search is started
  4. or when it is used with \\[next-total] or \\[goto-total]." )
  5. (defun tkprof-search-total ()
  6.   (interactive)
  7.   (let (outbuf)
  8.     (save-excursion
  9.       (setq current-buffer-string (buffer-string))
  10.       (setq name-of-search (concat "Tkprof Totals : " (buffer-name)))
  11.       (setq outbuf
  12.     (get-buffer-create
  13.      (funcall (function (lambda (mode)
  14.      (concat "*" (downcase mode) "*" )))
  15.        name-of-search)))
  16.       (set-buffer outbuf))
  17.     ;; Open buf
  18.     (let ((thisdir default-directory)
  19.   outwin)
  20.       (save-excursion
  21. ;; Clear out the compilation buffer and make it writable.
  22. (set-buffer outbuf)
  23. (setq buffer-read-only nil)
  24. (buffer-disable-undo (current-buffer))
  25. (erase-buffer)
  26. (buffer-enable-undo (current-buffer))
  27. (insert "call     count       cpu    elapsed       disk      query\n" )
  28. (insert "------- ------  -------- ---------- ---------- ----------\n" )
  29. (save-excursion
  30.   (while (string-match "total +\\([0-9.]+\\) +\\([0-9.]+\\) +\\([0-9.]+\\) +\\([0-9.]+\\) +\\([0-9.]+\\)" current-buffer-string)
  31.     (insert (substring current-buffer-string
  32.          (match-beginning 0)
  33.          (match-end 0)
  34.          ) "\n" )
  35.     (setq current-buffer-string (substring current-buffer-string
  36.        (match-end 0) -1))
  37.     ))
  38. (set-buffer-modified-p nil))
  39.       (if (eq outbuf (current-buffer))
  40.   (goto-char (point-max)))
  41.       ;; Pop up the compilation buffer.
  42.       (setq outwin (display-buffer outbuf nil t))
  43.       (save-excursion
  44. (set-buffer outbuf)
  45.         (set (make-local-variable 'lazy-lock-defer-on-scrolling) t)
  46. (set-window-start outwin (point-min))
  47. (or (eq outwin (selected-window))
  48.     (set-window-point outwin (point-min)))
  49. ))
  50.     (setq compilation-last-buffer outbuf))
  51.   )


 
C'est pas tres efficace (substring)... et je ne vois pas comment faire un buffer interactif.
 
Quelqu'un a une idee ?


---------------
Cdl, Danjer
mood
Publicité
Posté le 04-08-2006 à 14:48:38  profilanswer
 

n°1419775
Danjer
Posté le 04-08-2006 à 15:30:03  profilanswer
 

Bon... bah j'ai fini par trouver :

Code :
  1. (defun tkprof-lines-total ()
  2.   (interactive)
  3.   (list-matching-lines "total +\\([0-9.]+\\) +\\([0-9.]+\\) +\\([0-9.]+\\) +\\([0-9.]+\\) +\\([0-9.]+\\)" 0)
  4.   )



---------------
Cdl, Danjer

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Divers

  [LISP] Emacs major mode

 

Sujets relatifs
Lancer un MSI par VBScript en mode silencieux...Mode fullscreen sur IE/windows CE5.0 en javasript
[D7] Barre de menu déroulante à la mode XP?configurer un service en mode manuel
[SDL]seg fault à la fermeture en mode console[RESOLU] Comment lancer excel en mode batch ?
[Résolu] [JAVA - RMI] Unsupported major.minor version 49.0Tout con-->affichage console mode off?
mode binairecherche source puissance 4 C (mode console sans IA)
Plus de sujets relatifs à : [LISP] Emacs major mode


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR