Finalización de instrucciones en un servicio de lenguaje heredadoStatement Completion in a Legacy Language Service

Finalización de instrucciones es el proceso por el que el servicio de lenguaje ayuda a los usuarios finalizar una palabra clave de lenguaje o el elemento que se hayan iniciado escribiéndolos en el editor principal.Statement completion is the process by which the language service helps users finish a language keyword or element that they have started typing in the core editor. Este tema describe cómo funciona la finalización de instrucciones y cómo se implementa en el servicio de lenguaje.This topic discusses how statement completion works and how to implement it in your language service.

Los servicios de lenguaje heredado se implementan como parte de un paquete VSPackage, pero la forma más reciente para implementar características del servicio de lenguaje es utilizar las extensiones MEF.Legacy language services are implemented as part of a VSPackage, but the newer way to implement language service features is to use MEF extensions. Para obtener más información acerca de la nueva forma de implementar la finalización de instrucciones, consulte Tutorial: mostrar la finalización de instrucciones.To find out more about the new way to implement statement completion, see Walkthrough: Displaying Statement Completion.

Note

Le recomendamos que empiece a usar el nuevo editor de API tan pronto como sea posible.We recommend that you begin to use the new editor API as soon as possible. Esto mejora el rendimiento de su servicio de lenguaje y le permiten aprovechar las nuevas características del editor.This will improve the performance of your language service and let you take advantage of new editor features.

Implementación de la finalización de instruccionesImplementing Statement Completion

En el editor principal, la finalización de instrucciones activa una interfaz de usuario especial que interactivamente le ayuda a más fácilmente y escribe rápidamente código.In the core editor, statement completion activates a special UI that interactively helps you more easily and quickly write code. Le ayuda la finalización de instrucciones mostrando objetos relevantes o clases cuando son necesarias, se evita tener que recordar elementos concretos o tener que buscarlos en un tema de referencia de ayuda.Statement completion helps by displaying pertinent objects or classes when they are needed, which avoids you having to remember specific elements or having to look them up in a Help reference topic.

Para implementar la finalización de instrucciones, el lenguaje debe tener un desencadenador de finalización de la instrucción, que se puede analizar.To implement statement completion, your language must have a statement completion trigger, which can be parsed. Por ejemplo, Visual BasicVisual Basic usa un operador de punto (.), mientras que Visual C++Visual C++ usa una flecha (->) (operador).For example, Visual BasicVisual Basic uses a dot (.) operator, while Visual C++Visual C++ uses an arrow (->) operator. Un servicio de lenguaje puede utilizar más de un desencadenador para iniciar la finalización de instrucciones.A language service can use more than one trigger to initiate statement completion. Estos desencadenadores se programan en el filtro de comandos.These triggers are programmed in the command filter.

Filtros de comandos y los desencadenadoresCommand Filters and Triggers

Comandos filtros interceptan las apariciones del desencadenador o desencadenadores.Command filters intercept occurrences of your trigger or triggers. Para agregar el filtro de comandos a la vista, implemente el IOleCommandTarget interfaz y adjuntarlo a la vista mediante una llamada a la AddCommandFilter método.To add the command filter to the view, implement the IOleCommandTarget interface and attach it to the view by calling the AddCommandFilter method. Puede usar el mismo filtro de comando (IOleCommandTarget) para todos los aspectos de su servicio de lenguaje, como la finalización de instrucciones, los marcadores de error y sugerencias de método.You can use the same command filter (IOleCommandTarget) for all aspects of your language service, such as statement completion, error markers, and method tips. Para obtener más información, consulte interceptando comandos del servicio de lenguaje heredado.For more information, see Intercepting Legacy Language Service Commands.

Cuando el desencadenador se registran en el editor: en concreto, el búfer de texto: el servicio de lenguaje, a continuación, llama el UpdateCompletionStatus método.When the trigger is entered in the editor — specifically, the text buffer — your language service then calls the UpdateCompletionStatus method. Esto hace que el editor para que aparezca la interfaz de usuario para que el usuario puede elegir entre los candidatos de finalización de la instrucción.This causes the editor to bring up the UI so that the user can choose from the statement completion candidates. Este método exige que implemente IVsCompletionSet y UpdateCompletionFlags marcas como parámetros.This method requires you to implement IVsCompletionSet and the UpdateCompletionFlags flags as parameters. Aparece la lista de elementos de la finalización en un cuadro de lista desplegable.The list of completion items appears in a scrolling list box. Como el usuario continúa escribiendo, la selección en el cuadro de lista se actualiza para reflejar que la coincidencia más cercana a los caracteres más reciente con tipo.As the user continues typing, the selection within the list box is updated to reflect the closest match to the most recent characters typed. El editor de núcleo implementa la interfaz de usuario para la finalización de instrucciones, pero debe implementar el servicio de lenguaje el IVsCompletionSet interfaz para definir un conjunto de elementos de la finalización de candidato para la instrucción.The core editor implements the UI for statement completion, but the language service must implement the IVsCompletionSet interface to define a set of candidate completion items for the statement.

Vea tambiénSee Also

Intercepción de comandos del servicio de lenguaje heredadoIntercepting Legacy Language Service Commands