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:
- Haga clic derecho -> Peek Definition
- Haga clic derecho -> Ir a definición (vinculado a Ctrl-clic)
Su comportamiento es el siguiente:
-
PD, definición única
- Abre la interfaz en línea que muestra la definición.
-
PD, definiciones múltiples
- Abre la interfaz en línea que muestra las definiciones.
-
GtD, definición única
- Abra el archivo que contiene la definición.
-
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.
-
Averigua cómo se ve la función que necesita ser parcheada. El método es
DefinitionAction.prototype._onResult(editorService, editor, model)
-
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. -
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ínea2454
. Use la coincidencia de paréntesis para encontrar el final o sepa que termina inmediatamente antes det.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] } }) }) }
-
Sabemos por el paso 1, la función
-
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] } }) }) }
-
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 enDon''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.