source para mac descargar code emacs elisp

descargar - emacs para mac



Emacs comenta/descomenta la lĂ­nea actual (6)

Esta pregunta ya tiene una respuesta aquí:

Sé que ya hay una pregunta de Emacs sobre esto, y que estaba cerrada, pero me parece bastante relevante e importante.

Básicamente, quiero comentar / descomentar la línea actual. Esperaba que esto fuera bastante fácil con un macro, pero descubrí que realmente no es así.

Si la línea actual está comentada, descomente. Si no está comentado, coméntelo. Y también comentaría toda la línea, no solo desde la posición del cursor.

Probé una macro como esta:

California

''comment-dwim

Pero esto solo funciona para comentar una línea, no para descomentarla, si ya está comentada.

No estoy seguro de lo fácil que es, pero si hay alguna manera, realmente me gustaría.

Además, la razón por la que amo tanto esta idea es que cuando usé Geany, solo usé Ce y fue perfecto.


Creo que no entiendes cómo funcionan las macros de teclado. Lo que @Trey proporcionó es un comando de Emacs-Lisp. Podrías haberlo logrado sin entender a Emacs-Lisp.

Primero determine la secuencia de teclas que hace lo que desea y luego grabe esa secuencia como una macro.

Usted propuso esto: Ca M-; (M-; es comment-dwim ). ¿Hace lo que tenías en mente? Si no, entonces no va a funcionar mágicamente cuando lo reproduzca como una macro de teclado.


Estoy sorprendido de que la rutina comment-region no haya sido mencionada. (Aunque reconozco que puede indicar que me he perdido algo.) He tenido la siguiente línea en mi archivo .emacs durante la mayor parte de los últimos 20 años. Funciona bien en la mayoría de los principales modos de programación que me interesan.

(global-set-key "/Cc/Cc" ''comment-region)

De los documentos de ''comment-region''

Documentación: Comente o elimine comentarios de cada línea en la región. Con solo el prefijo Cu arg, elimine el comentario de cada línea en la región. Prefijo numérico arg ARG significa usar caracteres de comentario ARG. Si ARG es negativo, elimine los muchos caracteres de comentario en su lugar. Los comentarios terminan en cada línea, incluso para la sintaxis en la cual la nueva línea no finaliza el comentario. Las líneas en blanco no reciben comentarios.


La función de Trey funciona perfectamente, pero no es muy flexible.

Pruebe esto en su lugar:

(defun comment-or-uncomment-region-or-line () "Comments or uncomments the region or the current line if there''s no active region." (interactive) (let (beg end) (if (region-active-p) (setq beg (region-beginning) end (region-end)) (setq beg (line-beginning-position) end (line-end-position))) (comment-or-uncomment-region beg end)))

Comenta / descomenta la línea actual o la región si una está activa.

Si lo prefiere, puede modificar la función para pasar a la siguiente línea después de (des) comentar la línea actual como esta:

(defun comment-or-uncomment-region-or-line () "Comments or uncomments the region or the current line if there''s no active region." (interactive) (let (beg end) (if (region-active-p) (setq beg (region-beginning) end (region-end)) (setq beg (line-beginning-position) end (line-end-position))) (comment-or-uncomment-region beg end) (next-line)))

Tenga en cuenta que lo único que ha cambiado es el comando agregado de la next-line al final de la función.


Pruebe esta función y conéctese a su clave favorita:

(defun toggle-comment-on-line () "comment or uncomment current line" (interactive) (comment-or-uncomment-region (line-beginning-position) (line-end-position)))


Tomé la respuesta de Trey y la redefiní, para que también funcione cuando una región está activa, pero luego funciona en esa región:

(defun comment-or-uncomment-line-or-region () "Comments or uncomments the current line or region." (interactive) (if (region-active-p) (comment-or-uncomment-region (region-beginning) (region-end)) (comment-or-uncomment-region (line-beginning-position) (line-end-position)) ) ) (define-key c-mode-base-map (kbd "C-/") ''comment-or-uncomment-line-or-region)


Esta respuesta se aplica aquí. Define command comment-region-lines que comenta o descomenta la línea actual, o la región si está activa.

Es similar a comment-or-uncomment-region , pero le permite decidir si descomentar o comentar. Le permite anidar comentarios, en lugar de descomentar automáticamente la región si ya está comentada.

Con un prefijo numérico arg usa muchos caracteres de inicio de comentario (por ejemplo, ;; , ;;; , ... en Lisp). Con un prefijo simple de Cu arg no comentario. Lo enlace a Cx C-; .