Me gustaría mostrar la parte inicial de un osciloscopio cuando este salga de la pantalla.
Ejemplo:
namespace a
{
...
--------------------- <- display frame
... |
}* | * when cursor is here display "namespace a" in the minibuffer
--------------------- or on screen
Esto podría funcionar para muchos lenguajes de programación, pero estoy pensando principalmente en C ++.
Para aclarar un poco más y para aquellos que conocen VS, me gustaría una característica similar a la que existe para Visual Studio. es decir, colocar el cursor al final de un alcance muestra el comienzo del alcance en la parte superior del búfer de edición.
¿Esta característica ya existe en alguna parte?
minibuffer
c++
programming
log0
fuente
fuente
Respuestas:
Si está escribiendo C / C ++ / Java / Emacs Lisp / Python, entonces semantic-sticky-func-mode hará lo que quiera.
NOTA : Esto parece estar funcionando con CEDET de Git, no con CEDET de inventario actualmente en Emacs 24.4. Para obtener Emacs de Git:
Y cargue CEDET primero sobre todo lo demás en su archivo init:
Cuando se habilita, este modo muestra que el punto de función se encuentra actualmente en la primera línea del búfer actual. Esto es útil cuando tiene una función muy larga que se extiende más que una pantalla, y no tiene que desplazarse hacia arriba para leer el nombre de la función y luego desplazarse hacia abajo a la posición original.
Muestra la interfaz de función completa (tipo de retorno, nombre de función y parámetros), no solo el nombre de función.
Para habilitarlo, ponga este código en su archivo init:
ACTUALIZACIÓN : Uno de los problemas con la corriente
semantic-stickyfunc-mode
es que no muestra todos los parámetros que están dispersos en varias líneas. Para resolver este problema, creé el paquete stickyfunc-mejorar .DEMO :
Aquí hay una demostración en C:
Aquí hay una demostración en Emacs Lisp:
ACTUALIZACIÓN : Alternativamente, puede usar helm-semantic-or-imenu . Cuando está dentro de una función y ejecuta el comando, el cursor se coloca directamente en la función de la lista, para que siempre pueda ver la interfaz de la función completa. MANIFESTACIÓN:
Primero, uso
helm-semantic-or-imenu
para moverme a la funciónhelm-define-key-with-subkeys
y mover el punto allí.Entonces, comienzo de
helm-semantic-or-imenu
nuevo yhelm-define-key-with-subkeys
es preseleccionado.Luego, muevo el punto a la variable helm-map y ejecuto
helm-semantic-or-imenu
nuevamente en dos funciones: helm-next-source y helm-previous-source. Esta vez, en lugar de mostrar la etiqueta semántica actual en la que estoy operando (que es helm-map), muestra las otras dos etiquetas en el búfer Helm Semantic. Esto se debe a que proporcioné un argumento de prefijo antes de ejecutar el comando.Además, esta demostración está en Emacs Lisp, también funciona para C / C ++ y es más flexible si tiene una interfaz de función realmente larga.
fuente
emacs -Q
, pero no consigo el comportamiento que describes cuando hojeo, por ejemplo,org.el
.Puedes encender
which-function-mode
haciendoM-x
which-function-mode
RETPara hacer que la configuración sea permanente, agregue
a su archivo de inicio.
De la documentación:
Nota : El nombre realmente no lo sugiere, pero esto funciona no solo para "funciones", sino también para otros tipos de ámbitos. Por ejemplo, en
org-mode
,which-function-mode
muestra el encabezado del subárbol actual.fuente