2010-12-08 25 views
4

Si j'utilise Meta-/ pour compléter automatiquement des mots comme ThisClass, emacs devient confus et me donne THISCLASS ou thisclass. Pire encore, si j'ai tapé ThisC, puis autocomplete il donne Thisclass ce qui est très frustrant.Saisie semi-automatique et camelcase

Existe-t-il un moyen de modifier ce comportement?

+0

https://emacs.stackexchange.com/questions/10837/how-to-make-company-mode-be-case-sensitive-on-plain-text celui-ci est travaille pour moi. –

Répondre

7

Eh oui, utilisez hippie-expand:

(global-set-key (kbd "M-/") 'hippie-expand) 

Vérifiez la wiki page sur, et le manual page for it laconique.

hippie-expand est comme dabbrev (la liaison par défaut pour M-/), mais ajoute une plus grande capacité, et dans le processus a résolu le problème de camelcase vous soulignez.

+0

sympa, j'adore ça. Il a également résolu le problème de savoir comment j'auto-remplir complètement la ligne. merci :) –

+0

https://emacs.stackexchange.com/questions/10837/how-to-make-company-mode-be-case-sensitive-on-plain-text Cochez cette case –

8

En plus de hippie-expand, vous pouvez également obtenir votre comportement souhaité avec juste dabbrev en personnalisant la variable suivante:

dabbrev-case-fold-search is a variable defined in `dabbrev.el'. 
Its value is nil 

    This variable is potentially risky when used as a file local variable. 

Documentation: 
Control whether dabbrev searches should ignore case. 
A value of nil means case is significant. 
A value of `case-fold-search' means case is significant 
if `case-fold-search' is nil. 
Any other non-nil version means case is not significant. 

You can customize this variable. 
1

Lors de la modification du comportement de recherche est un moyen de résoudre le problème, une autre façon qui est peut-être préférable de garder le comportement de recherche tel quel mais de modifier le comportement de remplacement.

Pour cela, définissez la variable dabbrev-case-replace sur zéro.

De cette façon, c'est peut-être mieux parce que, même si ce que vous avez tapé est incorrect, il sera toujours correctement adapté, puis complété dans le bon cas.

Exemple: Disons que vous avez la variable "aVariable". Si vous changez le comportement de la recherche (en mettant dabbrev-case-fold-search à zéro), alors taper "av" ne correspondra pas à votre variable. Cependant, si vous modifiez plutôt le comportement de remplacement (en définissant dabbrev-case-replace sur nil), en tapant "av", vous développerez "aVariable".

Référence: http://www.gnu.org/software/emacs/manual/html_node/emacs/Dabbrev-Customization.html