Parece que está buscando un buen ejemplo/referencia sobre cómo manejar el teclado para conducir la inserción de texto en el búfer de Visual Studio.
Lamentablemente, esta no es una pregunta que tenga una respuesta directa. El manejo del teclado en Visual Studio es complejo en el mejor de los casos y, a veces, la frustración del cabello es frustrante. Intenté mantener esta respuesta lo más simple posible, pero desafortunadamente el tema no se presta a la simplicidad
Para empezar hay al menos 5 mecanismos diferentes mediante los cuales Visual Studio enruta la entrada del teclado a los comandos.
¿Cuál de estos necesita enganchar depende de una co uple of factors
- ¿En qué versiones de Visual Studio desea que funcione el complemento?
- ¿Qué tipo de add-in va a ser edificio: un complemento real, Vs paquete o VSIX
- lo mucho que se preocupa por ganar la batalla por la entrada de teclado
¿Cuál de estos es necesario conectar en depende mucho de cómo quiera que funcione su complemento y en qué versiones de Visual Studio desea que funcione. Aunque hay 2 rutas básicas que puede tomar aunque
La primera es desarrollar un paquete de Visual Studio y registrar un DTE.Command
por cada tecla de acceso rápido en su extensión. Luego, deberá agregar IOleCommandTarget
en la cadena de filtros IVsTextView
para procesar sus comandos. Este enfoque le permitirá procesar sus teclas de acceso rápido en la mayoría de los escenarios.
El segundo es desarrollar un VSIX, enganchar en la cadena IOleCommandTarget
del e interceptar los comandos reales de Visual Studio que se asignan a sus teclas de acceso rápido.
Ambos enfoques tienen sus altibajos pero mi respuesta ya es demasiado larga. Si puede darme más detalles, puedo intentar darle una respuesta más concisa y útil.
Como por ejemplos. VsVim realiza un manejo de teclado bastante extenso para Visual Studio y tiene un ejemplo para cualquiera de los métodos anteriores que mencioné.
Déjame saber cuál interés, usted y yo se puede apuntar al lugar correcto en el código fuente.
Además, al trabajar conmigo mismo para descifrar el enredo de la entrada del teclado, traté de mantener un registro de todo lo que había aprendido. No es totalmente al día, pero este documento se describen los aspectos más básicos de la forma de entrada va a parar
EDITAR
Jon indica en los comentarios ruta del VSIX + IOleCommandTarget
Esto es en mi humilde opinión el enfoque más simple. Sin embargo, una cosa a tener en cuenta es cómo los enlaces de comandos afectan a los datos que se pasan a la cadena IOleCommandTarget
. El enlace del comando de Visual Studio ocurre antes de que los datos pasen a la cadena IOleCommandTarget
. Por lo tanto, si una entrada de clave dada está vinculada a un comando, se transmitirá IOleCommandTarget
como el comando y no la entrada del teclado. Por ejemplo, CTRL-Z
se asigna comúnmente al comando Visual Studio Undo
. Si el usuario toca CTRL-Z
, entonces IOleCommandTarget
verá el comando Deshacer y no la entrada del teclado CTRL-Z
.
Éstos son algunos ejemplos que pueda estar interesado en el estudio de
- VsCommandTarget: Ejemplo de implementación de
IOleCommandTarget
- OleCommandUtil: Se utiliza para convertir los datos pasados en
IOleCommandTarget
en comandos reales y la entrada de teclado
- HostFactory: Detalla cómo conectar realmente un
IOleCommandTarget
en un IVsTextView
desde una extensión VSIX.
Suena como "fragmentos de código" en los esteroides. Me pregunto si hay algo que pueda aprovechar de esa función. –
Si la expansión no se basa en los detalles contextuales de la base de código, quizás una secuencia de comandos AutoHotKey sería suficiente. – AakashM
Acabo de lanzar una extensión como esta en realidad ... Míralo aquí: http://yngvenilsen.wordpress.com/2011/11/19/zencoding-visual-studio-2010-extension-v1-7/ –