2009-10-29 4 views
8

emacs 22.2.1 sur Linuxcomplétions emacs ou IntelliSense les mêmes que sur Visual Studio

Je suis en train de C/C++ en utilisant la programmation emacs. Je me demande si emacs supporte les complétions (IntelliSense dans Visual Studio). Par exemple, lors du remplissage de structures, j'aimerais voir la liste des membres lorsque je tape l'opérateur point ou l'opérateur flèche.

Il en irait de même pour les signatures de fonction qui me donneraient les types que je passe.

+3

http://stackoverflow.com/questions/129257/eclipse-sytle-function-completions-in-emacs-for-cc-and-java, http://stackoverflow.com/questions/1285971/emacs-code -completion-for-cc –

Répondre

4

J'utilise cedet avec emacs. J'ai essayé d'utiliser la version de cédet dans Debian mais il a quelques bogues donc je l'ai désinstallé et téléchargé la version cvs de http://sourceforge.net/projects/cedet/develop

Je l'ai compilé dans mon répertoire ~/tmp/emacs-stuff/puis ajouté les lignes suivantes à mon ~/.emacs.d/fichier custom.el:




;;needed if cedet is in a custom location 
(load-file "~/tmp/emacs-stuff/cedet/common/cedet.el") 

;; Enable EDE (Project Management) features 
(global-ede-mode t) 

;;to enable code folding 
(global-semantic-tag-folding-mode) 

;; Enabling Semantic (code parsing, smart completion) features 
;; (select only one) 
;;(semantic-load-enable-minimum-features) 
;;(semantic-load-enable-code-helpers) 
(semantic-load-enable-gaudy-code-helpers) 
;;(semantic-load-enable-all-exuberent-ctags-support) 

(global-semantic-idle-scheduler-mode 1) ;The idle scheduler with automatically reparse buffers in idle time. 
(global-semantic-idle-completions-mode 1) ;Display a tooltip with a list of possible completions near the cursor. 
(global-semantic-idle-summary-mode 1) ;Display a tag summary of the lexical token under the cursor. 

;;to work with my include files and cedet 
(semantic-add-system-include "~/include" 'c++-mode) 
(semantic-add-system-include "~/include" 'c-mode) 


;;To use additional features for names completion, and displaying of information for tags & classes, 
;; you also need to load the semantic-ia package. This could be performed with following command: 
(require 'semantic-ia) 

;;to work with systme include files and gcc 
(require 'semantic-gcc) 


;;integrate semantic with Imenu 
(defun my-semantic-hook() 
    (imenu-add-to-menubar "TAGS")) 
(add-hook 'semantic-init-hooks 'my-semantic-hook) 

;;load Semanticdb 
(require 'semanticdb) 
;;(global-semanticdb-minor-mode 1) 

;;working with tags 
;; gnu global support 
(require 'semanticdb-global) 
(semanticdb-enable-gnu-global-databases 'c-mode) 
(semanticdb-enable-gnu-global-databases 'c++-mode) 

;; ctags 
(require 'semanticdb-ectag) 
(semantic-load-enable-primary-exuberent-ctags-support) 

(defun my-semantic-hook() 
    (imenu-add-to-menubar "TAGS")) 
(add-hook 'semantic-init-hooks 'my-semantic-hook) 


Ce fichier est appelé par mon fichier ~/.emacs que la ligne suivante dans le: (charge-fichier « ~ /.emacs.d/custom.el ")

Maintenant, lorsque vous tapez une variable et appuyez sur CTRL + MAJ + ENTRÉE, un menu de sélections vous proposera des suggestions. En outre, si vous avez défini une variable sémantique-complète-inline-analyzer-idle-displayor-class pour citer semantic-displayor-tooltip, une info-bulle avec suggestions apparaîtra également après un certain temps d'inactivité (1 ou 2 secondes) .

Pour une courte intro, voir http://xtalk.msk.su/~ott/en/writings/emacs-devenv/EmacsCedet.html

Pour cedet docs, voir: http://cedet.sourceforge.net/

Bonne chance.

6

Meta-/ n'est pas exactement intelligent, mais il parcourt les noms connus.

Ce projet fournit les menus de style déroulant, vous êtes habitué:

http://ecb.sourceforge.net/

+1

+1 pour Meta + /. Ce n'est pas intelligent mais fait le travail la plupart du temps. –

5

vous devez prendre dernière version du paquet CEDET (mieux, directement à partir de CVS). Vous pouvez le configurer, comme décrit dans la documentation sur ce site

+0

il y a aussi des paquets (en mode entreprise, auto-complet), qui utilisent CEDET pour obtenir des données pour l'achèvement, mais implémentent un style d'achèvement différent (de CEDET) –

0

Si vous souhaitez utiliser emacs actions pour faire la fin de votre projet et de la bibliothèque comprennent les fichiers tentent this answer

0

J'ai dans mes emacs, ce qui rend les choses un peu plus facile.

(require 'c-Eldoc) (add-hook' c-mode-hook « c-turn-on-Eldoc-mode)

De cette façon, je n'ai pas rechercher des définitions de fonction .

Je n'écris pas beaucoup, mais je suis d'accord que TAGS est aussi une fonctionnalité très utile.