visual tutorial tag studio para extensions extensiones espaƱol code closing brackethighlighter visual-studio-code

tutorial - Deshabilitar vistazo en Visual Studio Code



visual studio code highlight closing tag (3)

¿Hay alguna forma de deshabilitar la función ctrl-click ''peek'' en Visual Studio Code? Idealmente, me gustaría que ctrl-click solo abra el archivo que contiene la definición en una nueva pestaña.

Editar : envié un problema para al menos hacerlo menos confuso. Aparentemente mi terminología es ligeramente incorrecta.

Para aclarar, hay dos acciones:

  1. Haga clic derecho -> Peek Definition
  2. Haga clic derecho -> Ir a definición (vinculado a Ctrl-clic)

Su comportamiento es el siguiente:

  1. PD, definición única
    • Abre la interfaz en línea que muestra la definición.
  2. PD, definiciones múltiples

    • Abre la interfaz en línea que muestra las definiciones.
  3. GtD, definición única

    • Abra el archivo que contiene la definición.
  4. GtD, definiciones múltiples
    • Elija una de las definiciones al azar, abra ese archivo y una interfaz en línea que muestre todas las definiciones.

Todos están bien, excepto el último. Hacer ambas cosas da como resultado una IU realmente redundante y confusa como esta:

Debería haber una manera de tener uno de estos comportamientos:

  • Elija una de las definiciones al azar, abra ese archivo.

O:

  • Abra la interfaz en línea que muestra todas las definiciones ( en el archivo actual )

Esto parece haberse solucionado en una versión más nueva. Si ahora paso el foo.cpp sobre FOO en foo.cpp , veo la información sobre herramientas normal #define FOO 2 . Si presiono Ctrl, el mensaje se expande para agregar el texto "Haga clic para mostrar 2 definiciones" y si hago clic mientras mantengo presionada la tecla Ctrl, aparece la ventana de visualización, según lo solicitado.


Hice una solicitud de extracción para corregir este https://github.com/Microsoft/vscode/pull/68023 , pero hasta entonces hay una solución temporal que parchea los archivos de instalación de VSCode. Deberá volver a aplicar cada actualización.

EDITAR: La solución se fusionó en vscode. Debería estar en versiones posteriores.

Con esta solución, Ctrl + Click:

  • Use vistazo si hay varias definiciones
  • Al usar Peek, no navegará a la mejor coincidencia en el editor y hará que pierda su lugar
  • Si solo hay una definición, navegará a la mejor coincidencia y NO abrirá un vistazo.
  1. Averigua cómo se ve la función que necesita ser parcheada. El método es DefinitionAction.prototype._onResult(editorService, editor, model)

  2. Vaya al directorio de instalación de VSCode. %LocalAppData%/Programs/Microsoft VS Code y haga clic derecho y abra el directorio en VSCode para que podamos usar la función de búsqueda de VSCode para buscar texto en cada archivo.

  3. Busque _onResult y evalúe cada resultado, verificando si la firma y el cuerpo coinciden con lo que esperamos de la función que vimos en el paso 1.

    • Sabemos por el paso 1, la función _openReference está cerca. Use eso para limitar la búsqueda.
    • Lo encontré en workbench.main.js línea 2454 . Use la coincidencia de paréntesis para encontrar el final o sepa que termina inmediatamente antes de t.prototype._openReference
    • La función cuando se formatea es la siguiente (la función asíncrona se compila en statemachine, por eso no se parece en nada al mecanografiado de origen):

      t.prototype._onResult = function (e, t, r) { return i(this, void 0, void 0, function () { var i, s, a; return n(this, function (n) { switch (n.label) { case 0: return i = r.getAriaMessage(), o.alert(i), this._configuration.openInPeek ? (this._openInPeek(e, t, r), [3, 3]) : [3, 1]; case 1: return s = r.nearestReference(t.getModel().uri, t.getPosition()), [4, this._openReference(t, e, s, this._configuration.openToSide)]; case 2: (a = n.sent()) && r.references.length > 1 ? this._openInPeek(e, a, r) : r.dispose(), n.label = 3; case 3: return [2] } }) }) }

  4. Reemplace la función con lo siguiente (si usa la misma versión) o formatee y edite la función que encontró similar a este ejemplo. Tenga en cuenta que la variable o es el objeto global / window y está sujeto a cambios.

    t.prototype._onResult = function (e, t, r) { return i(this, void 0, void 0, function () { return n(this, function (n) { switch (n.label) { case 0: return r.getAriaMessage(), o.alert(r.getAriaMessage()), this._configuration.openInPeek || r.references.length > 1 ? (this._openInPeek(e, t, r), [3, 3]) : [3, 1]; case 1: return [4, this._openReference(t, e, r.nearestReference(t.getModel().uri, t.getPosition()), this._configuration.openToSide)]; case 2: r.dispose(), n.label = 3; case 3: return [2] } }) }) }

  5. Inicie VSCode. Obtendrá una Your Code installation appears to be corrupt. Please reinstall Your Code installation appears to be corrupt. Please reinstall . Simplemente presione el ícono de ajustes y haga clic en Don''t Show Again.


Traté de encontrar una solución para cambiar el comportamiento de CMD + Click para ir a la implementación, pero parece que todavía no hay una solución.

La documentación de VSCode muestra su conjunto por defecto para ir a la definición sin una forma de modificarlo: https://code.visualstudio.com/docs/editor/editingevolved

En mi máquina (Mac), si presiono CMD + Click o F12 en un método, me dirigirá a la vista Peek de la definición, sin embargo, CMD + F12 me dirigirá a la implementación sin que aparezca el peek.