Saltar a contenido

Plugin Lista de funciones

Un esquema filtrable de los símbolos del documento actual —funciones, clases, métodos, encabezados y más— en un panel lateral acoplable. Activa un símbolo para llevar el cursor del editor directamente hasta él.

Dónde encontrarlo

Ver ▸ Lista de funciones abre el panel (empieza oculto). La lista se refresca mientras escribes y sigue a la pestaña activa.

Usar la lista

  • Saltar a un símbolo — haz doble clic en una entrada, o selecciónala y pulsa Intro. El editor se desplaza hasta el símbolo, lo despliega si está dentro de un pliegue contraído y coloca ahí el cursor.
  • Filtrar — escribe en el cuadro de arriba para acotar la lista por nombre (sin distinguir mayúsculas). En modo árbol, un padre sigue visible cuando cualquiera de sus hijos coincide.
  • Seguir el cursor — mientras te mueves por el documento, el símbolo que contiene el cursor se resalta en la lista.

Opciones de vista

El botón ⋮ (junto al cuadro de filtro) abre el menú de vista:

Opción Efecto
Mostrar como árbol Anida los miembros bajo su contenedor (los métodos bajo una clase, una clase bajo su espacio de nombres). Desactívalo para obtener una lista plana.
Ordenar por posición Orden del documento (predeterminado).
Ordenar por nombre Alfabético (sin distinguir mayúsculas).
Ordenar por tipo Agrupa por tipo de símbolo (clases, funciones, …) y luego por nombre.

Tus elecciones se recuerdan entre sesiones.

De dónde sale el esquema

El panel obtiene los símbolos de una de dos fuentes, indicada en el pie del panel:

  • Origen: servidor de lenguaje — cuando hay un servidor de lenguaje configurado para el lenguaje del archivo, el panel usa sus símbolos. Este es el esquema preciso y completo (variables miembro, anidamiento exacto de clase → método, todos los tipos de símbolo que informa el servidor).
  • Origen: patrones — en caso contrario, el panel recurre a las reglas de patrones integradas que se describen más abajo.

Esto no se configura: el esquema basado en patrones aparece al instante y, si un servidor de lenguaje responde, se usa automáticamente. Un lenguaje que tiene servidor pero no patrones incluidos obtiene igualmente un esquema (del servidor).

Lenguajes admitidos

Las reglas de patrones producen un esquema sin ningún servidor de lenguaje (y son el recurso cuando no hay uno disponible):

Lenguaje Símbolos reconocidos
C / C++ espacios de nombres, clases, estructuras, enumeraciones, #define, funciones
Python clases, funciones y métodos (def, async def)
JavaScript / TypeScript clases, funciones, constantes de función flecha, métodos de clase
Markdown encabezados (# … ######)

La lista refleja el lenguaje que el editor ha aplicado al archivo (su coloreado de sintaxis). Los archivos de otros tipos muestran «No hay esquema de símbolos para este tipo de archivo.»

Los patrones son aproximados

El esquema basado en patrones (Origen: patrones) es una aproximación, no un analizador completo: por ejemplo, una función libre escrita después del cuerpo de una clase puede aparecer anidada bajo esa clase. Para un esquema preciso, configura un servidor de lenguaje para el lenguaje; el panel mostrará entonces sus símbolos (Origen: servidor de lenguaje).

Conjuntos de reglas personalizados

Los conjuntos de reglas son simples archivos JSON, así que puedes retocarlos o añadir lenguajes sin recompilar. El conjunto incluido se instala junto a la aplicación en una carpeta function-list/ (un *.json por conjunto de reglas); esos archivos se sobrescriben al actualizar, así que trátalos como ejemplos de solo lectura.

Para personalizarlos, coloca tus propios *.json en la subcarpeta rulesets/ del directorio de datos del plugin Lista de funciones. Un archivo de usuario cuyo languageIds incluya un lenguaje anula el conjunto de reglas incluido para ese lenguaje.

Un archivo de conjunto de reglas tiene este aspecto:

{
    "languageIds": ["cpp", "c"],
    "caseSensitive": true,
    "rules": [
        { "pattern": "^\\s*class\\s+([A-Za-z_]\\w*)", "kind": "class" },
        { "pattern": "^\\s*(?:async\\s+)?def\\s+([A-Za-z_]\\w*)", "kind": "function" }
    ]
}
Campo Significado
languageIds Uno o más identificadores de lenguaje del editor a los que se aplica el conjunto (p. ej. cpp, python). Un archivo puede servir a varios.
caseSensitive Si los patrones distinguen mayúsculas de minúsculas (true de forma predeterminada).
rules Lista ordenada de reglas; gana la primera regla que coincida con una línea, un símbolo por línea.
rules[].pattern Una expresión regular ECMAScript que se compara con una sola línea.
rules[].nameGroup El grupo de captura que contiene el nombre del símbolo (1 de forma predeterminada).
rules[].kind El tipo de símbolo: un nombre (class, struct, enum, namespace, function, method, constant, string, …) o un número SymbolKind de LSP. Controla la agrupación y la ordenación.
rules[].containerGroup Grupo de captura opcional que se usa como detalle del contenedor del símbolo (0 = ninguno).