[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

V.3.3 Personalizar sangría para Lisp

El patrón de sangría para una expresión Lisp puede depender de la función llamada por la expresión. Para cada función Lisp, ud. puede elegir entre varios patrones predefinidos de sangría, o definir uno arbitrario con un programa Lisp.

El patrón estándar de sangría es el siguiente: la segunda línea de la expresión se sangra debajo del primer argumento, si éste está en la misma línea que el comienzo de la expresión; en caso contrario, la segunda línea se sangra debajo del nombre de la función. Cada línea a continuación se sangra bajo la línea anterior cuyo nivel de anidamiento sea el mismo.

Si la variable lisp-indent-offset es no-nil, redefine el patrón habitual de sangría para la segunda línea de una expresión, de manera que tales líneas se sangren siempre lisp-indent-offset columnas más que la lista contenedora.

Ciertas funciones redefinen el patrón estándar. Las funciones cuyos nombres comienzan con def consideran las segundas líneas como el comienzo de un cuerpo, sangrando la segunda línea lisp-body-indent columnas suplementarias después del paréntesis de apertura que da comienzo a la expresión.

Ud. puede redefinir el patrón estándar de diversas formas para funciones individuales, según la propiedad lisp-indent-function del nombre de la función. Hay cuatro posibilidades para esta propiedad:

nil

Esto es lo mismo que ninguna propiedad; utiliza el patrón de sangría estándar.

defun

Maneja esta función como una construcción `def': toma la segunda línea como el comienzo de un cuerpo.

un número, número

Los primeros número argumentos de la función son argumentos distinguidos; el resto se consideran el cuerpo de la expresión. Una línea de la expresión se sangra según el primer argumento sea o no distinguido. Si el argumento es parte del cuerpo, la línea se sangra lisp-body-indent columnas más que el paréntesis de apertura que da comienzo a la expresión contenedora. Si el argumento es distinguido y es el primer o segundo argumento, se sangra dos veces esas columnas extra. Si el argumento es distinguido y no es el primero ni el segundo argumeno, la línea utiliza el patrón estándar.

un símbolo, símbolo

símbolo debe ser el nombre de una función; dicha función es llamada para calcular la sangría de una línea dentro de esta expresión. La función recibe dos argumentos:

estado

El valor devuelto por parse-partial-sexp (una primitiva Lisp para cómputo de sangría y anidamiento) cuando analiza hasta el comienzo de esta línea.

pos

La posición donde comienza la línea que se va a sangrar.

Debe devolver un número, que sea la cantidad de columnas de sangría para esa línea, o bien una lista cuyo car sea esa cantidad. La diferencia entre devolver un número y devolver una lista es que un número indica que todas las líneas siguientes en el mismo nivel de anidamiento deben sangrarse igual que la presente; una lista indica que las líneas siguientes podrían necesitar sangrías diferentes. La diferencia importa cuando C-M-q está calculando la sangría; si el valor es un número, C-M-q no necesita recalcular la sangría para las líneas siguientes hasta el final de la lista.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

This document was generated by Roberto on abril, 2 2007 using texi2html 1.76.