2009-05-01 16 views
5

Escribo un simple complemento VS y me gustaría invocar programáticamente la opción "Formato de documento" (en Editar) dentro del código. Google no me está siendo muy amigable hoy ...¿Cómo se llama "Formato de documento" programáticamente desde C#?

+0

¿Has probado Resharper? Puede reformatear la solución completa de una sola vez. (Supongo que esto no ayuda, pero debo haber intentado ... ;-)) – Rashack

+0

Nah, solo estoy tratando de rodar mi pequeña herramienta para cerrar llaves automáticamente (sí, sé que Resharper también lo hace, pero ¿dónde está la diversión en eso? ??) – BFree

Respuesta

5
Command cmd = _applicationObject.Commands.Item("Edit.FormatDocument", -1); 
object dummy = null; 
_applicationObject.Commands.Raise(cmd.Guid, cmd.ID, ref dummy, ref dummy); 
+0

Como es la primera vez que lo comprobo, no pude entender. ¿Puedes especificar el tipo de '_applicationObject' y su espacio de nombres? Busqué un poco que debería usar el espacio de nombres EnvDTE80, pero no pude continuar. Cualquier codenippet será de mucha ayuda. –

5

Si usted tiene una referencia al documento (de tipo ventana), y tiene una referencia al objeto _DTE, se le puede llamar así:

myDocument.Activate(); 
myDTE.ExecuteCommand("Edit.FormatDocument", string.Empty); 

mayoría de las veces, puede obtener una referencia al objeto _DTE a partir de los parámetros pasados ​​a su complemento.

+0

¿Hay alguna manera de formatear el documento sin abrirlo? Quiero formatear todos los documentos en proyecto con un solo clic. – Hooch

+0

No lo creo. Puede abrir, formatear y luego cerrar el documento. –

Cuestiones relacionadas