He intentado entrar en emacs últimamente, y una de las cosas que necesito corregir es la sangría.¿Cómo emulo el 'softtabstop' de Vim en Emacs?
Ejemplo 1:
sub foo {
my $bar = 'quux';
|
Ejemplo 2:
sub foo {
my $bar = 'quux'; |# foo
imaginar que el carácter de canalización en los ejemplos anteriores indica la posición del cursor. Ahora, uso (4) espacios para cada nivel de sangría (sin pestañas), y tengo la configuración de emacs para sangrar mi código automáticamente con eso en mente. No hay problemas allí. Pero en los ejemplos anteriores, si tuviera que presionar retroceso en las posiciones indicadas del cursor, quiero que emacs retroceda hasta el siguiente nivel de sangrado (columna/4). Es decir, quiero que trate el espacio en blanco anterior como si estuviera compuesto de pestañas. En cambio, siempre borra un solo carácter de espacio.
En vim, enciendo 'expandtab' para insertar espacios en lugar de pestañas, y 'softtabstop', lo que hace (entre otras cosas) retroceder a la siguiente "soft tabstop" como se describe arriba.
en Emacs, supongo que podría (si sabía emacs/elisp mejor) de retroceso se unen a una función que hace algo como lo siguiente:
if indent-tabs-mode is nil
if the cursor position is preceded by whitespace
calculate the position of the previous "soft tabstop"
if there's enough whitespace
backspace all the way to that point
else
backspace by one character
Lo que yo quiero saber es, ¿existe un sencillo forma de hacerlo, y/o alguien sabe de una solución existente?
Esto se complica por el hecho de que parece que va a escribir Perl y cperl-modo (el mejor modo de Perl para Emacs) ya une retroceso para 'cperl -electro-retroceso'. (Aunque esa función no hace nada crítico, por lo que podría pasar sin el comportamiento que proporciona.) – cjm
Una pequeña actualización: Tengo una cosa mal. Cuando vim no puede volver a la siguiente tabulación suave, elimina la mayor cantidad de espacio en blanco posible (es decir, de 1 a 3), no solo 1. – Hinrik
Solución actualizada para eliminar la mayor cantidad de espacio en blanco posible (hasta la tabulación) –