Contenu | Rechercher | Menus

Annonce

Si vous rencontrez des soucis à rester connecté sur le forum (ou si vous avez perdu votre mot de passe) déconnectez-vous et reconnectez-vous depuis cette page, en cochant la case "Me connecter automatiquement lors de mes prochaines visites". Attention, le forum rencontre actuellement quelques difficultés. En cas d'erreur 502, il ne faut pas re-valider l'envoi d'un message ou l'ouverture d'une discussion, au risque de créer un doublon.

La section divers se réorganise ! De nouvelles sous-sections à venir. (plus d'infos + donner son avis)

#1 Le 06/09/2007, à 13:15

CasseTaTele

Comment tranformer gvim en véritable IDE C/C++ ?

Bonjour,

j'aimerai savoir comment on fait pour transformer l'éditeur gvim en IDE pour développer en C/C++ et notamment avoir accès aux fonctions suivantes:
-aller directement à la définition d'une fonction ou à son implémentation
-auto-complete des variables
-debug (point d'arret, suivi de variables ,...)

est-ce que quelqu'un connait un bon tuto ?

merci.

Hors ligne

#2 Le 06/09/2007, à 13:33

trucutu

Re : Comment tranformer gvim en véritable IDE C/C++ ?

Tiens, je n'y pas encore jeté un coup d'oeil, mais as tu regardé part là ?
plugin cvim


La chanson du dimanche - "La pêche !"
PC acheté chez Novatux : entièrement satisfait.
Faire des recherches solidaires !

Hors ligne

#3 Le 06/09/2007, à 13:38

CasseTaTele

Re : Comment tranformer gvim en véritable IDE C/C++ ?

oui mais ça n'a pas l'air de gérer les points que je recherchais (debug, aller a la référence ou à la définition d'une fonction)

Hors ligne

#4 Le 06/09/2007, à 13:59

Luc Hermitte

Re : Comment tranformer gvim en véritable IDE C/C++ ?

a- Apprends à te servir des tags.

b- Il y a un plugin au nom qui ressemble à omnicppcompletion sur vim.org. Sinon, c'est à l'ancienne (c-p, c-n). Il vaut mieux avoir des tags pour ton projet.

c- Il faut patcher vim pour lui intégrer clewn (si je me souviens bien du nom), ce qui n'est possible que sous linux.


Bonus, des petits liens:
- http://groups.google.com/group/vim_use/browse_frm/thread/56201364d5006df6 (parce que je suis en fainéant qui a déjà répondu à une question dans la même thématique il y a une semaine)
- http://townk.blogspot.com/ (des commentaires pour utiliser vim pour du C++ (a- et b- y sont abordés) ; note: attention son plugin pour les parenthèses et très probablement incompatible avec ma suite pour le C&C++ qui propose cela et bien plus depuis un paquet de temps)

#5 Le 06/09/2007, à 15:25

abetsic

Re : Comment tranformer gvim en véritable IDE C/C++ ?

Il y a aussi cscope qui gère le saut vers des fonctions, références et compagnie.

Hors ligne

#6 Le 06/09/2007, à 21:21

trucutu

Re : Comment tranformer gvim en véritable IDE C/C++ ?

CasseTaTele a écrit :

-aller directement à la définition d'une fonction ou à son implémentation

Je me demande si le plugin Taglist ne fait pas ce que tu souhaite, mais je ne l'ai pas encore en main pour confirmer...


La chanson du dimanche - "La pêche !"
PC acheté chez Novatux : entièrement satisfait.
Faire des recherches solidaires !

Hors ligne

#7 Le 06/09/2007, à 21:36

Luc Hermitte

Re : Comment tranformer gvim en véritable IDE C/C++ ?

Il permet de le faire via un menu sur le côté, mais pas besoin de ça si tu as généré tes tags.

#8 Le 07/09/2007, à 10:28

CasseTaTele

Re : Comment tranformer gvim en véritable IDE C/C++ ?

Luc Hermitte a écrit :

a- Apprends à te servir des tags.

pour le moment je commence à apprendre à me servir des tags, j'ai trouvé un bon tuto en français ici :
http://fr.tldp.org/HOWTO/lecture//Vim-HOWTO.html
en fait il suffit de taper

ctags *.cpp

puis sous gvim

:tag nom_de_la_fonction

pour aller à la fonction puis [Ctrl] + 't' pour revenir là où on était
bien pratique !
maintenant je vais apprendre à me servir de gdb (prioritaire pour moi par rapport à l'autocomplétion),
le tuto ci-dessus semble aussi indiquer comment faire...

Hors ligne

#9 Le 07/09/2007, à 10:57

CasseTaTele

Re : Comment tranformer gvim en véritable IDE C/C++ ?

oups les tags marchaient bien au début mais maintenant,
à chaque fois que je tape ':tags une_fonction'
il me met l'erreur :

E488: Caractères surnuméraires

d'où vient le problème ?

autant pour moi il faut mettre ':tag une_fonction'  sans 's' à tag !!

Dernière modification par CasseTaTele (Le 07/09/2007, à 10:58)

Hors ligne

#10 Le 10/09/2007, à 17:01

CasseTaTele

Re : Comment tranformer gvim en véritable IDE C/C++ ?

ayé je maitrise (a peu près) les tags et l'autocomplétion (avec ctrl+n et ctrl+p)
Il ne me manque que le debug.
J'ai installé clewn mais c'est assez hard, car une fois lancé je sais pas comment ça marche et la doc en anglais est ardue,
là j'essaye agide pour voir...

Hors ligne

#11 Le 11/09/2007, à 10:14

CasseTaTele

Re : Comment tranformer gvim en véritable IDE C/C++ ?

apparement le problème c'est que ma version de gvim n'integre pas les netbeans,
j'ai installé cream qui est un fork de gvim (avec netbeans) mais je sais pas comment l'utiliser avec clewn ou agide...
j'ai repris les sources de gvim (7.1) et j'ai recompilé pour avoir netbeans intégré. mais j'arrive pas encore à me servir ni de clewn (comment ça marche ?), ni d'agide (erreur lors du build de mon prog)

Hors ligne

#12 Le 11/09/2007, à 12:34

Luc Hermitte

Re : Comment tranformer gvim en véritable IDE C/C++ ?

Pour avoir clewn, tu dois patcher les sources de gvim (avec un patch qui est fourni avec clewn normalement)

#13 Le 11/09/2007, à 13:26

CasseTaTele

Re : Comment tranformer gvim en véritable IDE C/C++ ?

En fait il y a deux façon d'utiliser clewn+gdb : http://clewn.sourceforge.net/index.html

This may be done in two different ways, using clewn or vimGdb. Clewn is a program controlling vim through the netBeans socket interface, it runs concurrently with vim and talks to vim. VimGdb is a vim patch implemented as a vim optional feature.

j'avais essayé la première, j'ai essayé la deuxième.
Le problème c'est que ça devient compliqué et pendant ce temps mon boulot n'avance pas, je réessayerai plus tard...

En plus depuis que j'ai recompilé gvim la touche backspace a un comportement bizarre: impossible d'effacer un seul caractère avec backspace.
J'ai essayé de mettre 'set backspace=2' dans gvimrc, depuis l'effacement marche mais n'est pris en compte que quand j'appuie sur une autre touche après avoir fait backspace...

Hors ligne

#14 Le 11/09/2007, à 15:10

CasseTaTele

Re : Comment tranformer gvim en véritable IDE C/C++ ?

apparement j'ai un problème avec le fichier /usr/local/share/vim/vimfiles/clewn.vim :
http://i23.servimg.com/u/f23/11/33/23/31/captur10.jpg

le voici:

" Clewn run time file
" Maintainer:	<xdegaye at users dot sourceforge dot net>
" Last Change:	12 Nov 2006
"
" Setup VIM to be used with Clewn and NetBeans
"
if exists("b:did_clewn")
    finish
endif
let b:did_clewn = 1

" source key mappings - they are not needed anymore starting
" with vim 7.0
if v:version < 700
    run macros/clewn_mappings.vim
endif

" enable balloon_eval for some key mappings
if has("balloon_eval")
    set ballooneval
    set balloondelay=100
endif


augroup clewn
autocmd!
" set options for gdb-variables.gdbvar
autocmd BufWinEnter *.gdbvar silent! set bufhidden=hide | set buftype=nowrite
						    \ | set filetype=gdbvar
						    \ | setlocal expandtab
						    \ | setlocal wrap
" set options for asm buffers
autocmd BufWinEnter *.clasm silent! setlocal autoread

" Warning message when using a project file
autocmd VimLeavePre * if exists("clewn_project")
	\ | echohl ErrorMsg
	\ | echo "The breakpoints are not saved to the project file,"
	\ | echo "when you quit from Vim instead of quitting from Clewn."
	\ | echo " "
	\ | exe input("It is safe to hit return when Clewn is closing or is terminated.")
	\ | echohl None
	\ | endif
augroup END


let s:clewn_tmpfile=tempname() . ".clewn-watched-vars.gdbvar"

" call this function to edit the watched
" variables window
" ONLY when doing remote debugging (option -x)
function EditWatchedVariables()
    edit `=s:clewn_tmpfile`
endfun

ça semble venir des symboles "\ | " qui ne passent pas, mais ce fichier a été généré tout seul, je sais pas ce que ça signifie...

Dernière modification par CasseTaTele (Le 11/09/2007, à 15:11)

Hors ligne

#15 Le 11/09/2007, à 16:16

Luc Hermitte

Re : Comment tranformer gvim en véritable IDE C/C++ ?

Ah! Au temps pour moi.

Sinon, contacte l'auteur, il faut qu'il rajoute un :

let s:cpo_save=&cpo
set cpo&vim

au début de son plugin, et un

let &cpo = s:cpo_save

à la fin.

(À tous les coups, tu utilises vim en mode compatible vi ou un truc comme ça)

#16 Le 12/09/2007, à 09:09

CasseTaTele

Re : Comment tranformer gvim en véritable IDE C/C++ ?

euhh, si j'ai bien compris, j'ai rajouté ce que tu m'as demandé au fichier clewn.vim...

effectivement, ya plus les tous les messages d'erreurs sous gvim mais, il y a quand même un message d'erreur qui s'ouvre lorsque gvim se lance (suite à la commande clewn):

Error: gdb keys mapped

par ailleurs, dans la console voici ce que j'ai:

...                                     
... Clewn 1.10 running GDB in level 3 mode
...

`run' commands do input and output on the terminal /dev/pts/3

NetBeans listens on localhost:3219

The netbeans socket to Vim is not connected yet...
GNU gdb Red Hat Linux (6.5-15.fc6rh)
Copyright (C) 2006 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for details.
This GDB was configured as "i386-redhat-linux-gnu".
NetBeans connected to 127.0.0.1:57441

(gdb)

Pour debuguer mon prog, je donne à gdb le nom de mon executable:
'file otolith_gc'
puis je lance 'run' avec les différents paramètres de mon prog:
'run image1 image2 ...'
Mon prog commet une segmentation fault à un moment mais je sais pas où,
voici la fin de l'execution:

--- HessianGraph::Initialise() ---
>Initialise curve map
>Filter null curves and compute FMd ratio
        >Max number of curve extremities per pixel:10 , nb null curve:341, nb one-point curve:861 , nb FM null curve:62
        >Total: 2850 points -- 2242 courbes -- 2550 liens
        >CurveFromPointindex:9A7B408 (nbpoints:2850)
        >CurveFromPoint:9A7E098 (index:28500 -- size:114000 B)
        >CoordFromPoint:9A3C008 (index:2850 -- size:11400 B)
>Link curves to max points
>Compute curves's neighbors : (no debugging symbols found)

Program received signal SIGSEGV, Segmentation fault.
0x00483f6c in free () from /lib/libc.so.6
(gdb)

je remarque le message: '(no debugging symbols found)'
comment retrouver l'endroit de mon prog qui plante avec gdb ?

Hors ligne

#17 Le 12/09/2007, à 23:50

Luc Hermitte

Re : Comment tranformer gvim en véritable IDE C/C++ ?

Le message d'erreur est bizarre -- surtout qu'il relate d'un truc qui semble bien s'être passé.

Sinon, pour le reste tu vas devoir apprendre à te servir de gdb.
Si c'est bien comme sous dbx, tu devras utiliser 'where'. Et n'oublie pas de compiler en mode debug (-g et surtout pas de -O)

#18 Le 13/09/2007, à 07:23

CasseTaTele

Re : Comment tranformer gvim en véritable IDE C/C++ ?

Et n'oublie pas de compiler en mode debug (-g et surtout pas de -O)

ça doit etre pour ça qu'il ne trouve pas de symbole de debug,
je vais essayer -g (sinon j'utilise -o pour output mais pas -O)

mais sinon, juste pour etre sur : clewn est bien sensé faire un lien entre gdb et gvim de manière à montrer sous gvim directement à la ligne qui plante, non ?

Enfin pour la touche backspace sous gvim ? elle a toujours un comportement bizarre:
à chaque appuie sur backspace, le curseur recule bien mais n'efface rien (les modifications sont buffurisées). Lorsque j'utilise une touche de direction, toutes les modifications sont prise en compte d'un coup...

Hors ligne

Haut de page ↑