spacemacs – Truncar líneas en una columna visual específica en lugar de truncar en la última columna visual

Pregunta:

¿Cómo puedo truncar visualmente las líneas de un búfer en una columna específica en lugar de la última columna del búfer?

¿Es esto incluso posible en Emacs?

Si es así, ¿es posible elegir también en qué columna comienza la línea, de modo que cuando tenga una ventana grande de Emacs (digamos con 200 columnas), el texto ocupe solo la central (80 columnas)?

EDITAR: Mensaje de error con depuración después de intentar la respuesta de JEanPierre:

Debugger entered--Lisp error: (wrong-type-argument number-or-marker-p nil)
  +(4 nil 198)
  (- (+ cur-l cur-r cur-width) width)
  (let* ((cur-width (window-width)) (cur-m (window-margins)) (cur-l (if (and cur-m (car cur-m)) (car cur-m) 0)) (cur-r (if (and cur-m (car cur-m)) (cdr cur-m) 0)) (lr (- (+ cur-l cur-r cur-width) width)) (left (/ lr 2)) (right (if (= 0 (% lr 2)) left (1+ left)))) (set-window-margins nil (max left 0) (max right 0)))
  (if (= 0 width) (set-window-margins nil 0 0) (let* ((cur-width (window-width)) (cur-m (window-margins)) (cur-l (if (and cur-m (car cur-m)) (car cur-m) 0)) (cur-r (if (and cur-m (car cur-m)) (cdr cur-m) 0)) (lr (- (+ cur-l cur-r cur-width) width)) (left (/ lr 2)) (right (if (= 0 (% lr 2)) left (1+ left)))) (set-window-margins nil (max left 0) (max right 0))))
  my/change-window-width(80)
  call-interactively(my/change-window-width record nil)
  command-execute(my/change-window-width record)
  helm-M-x(nil "my/change-window-width")
  call-interactively(helm-M-x nil nil)
  command-execute(helm-M-x)

Respuesta:

Puede hacerlo configurando los márgenes de visualización . El siguiente código es un intento de eso:

(defun my/change-window-width (width)
  "Adjust margins so that window is centered"
  (interactive "NWindow width: ")
  (if (= 0 width)
      (set-window-margins nil 0 0)
    (let* ((cur-width (window-width))
           (cur-m (window-margins))
           (cur-l (if (and cur-m (car cur-m)) (car cur-m) 0))
           (cur-r (if (and cur-m (cdr cur-m)) (cdr cur-m) 0))
           (lr (- (+ cur-l cur-r cur-width) width))
           (left (/ lr 2))
           (right (if (= 0 (% lr 2)) left (1+ left))))
      (set-window-margins nil (max left 0) (max right 0)))))

Dar 0 como ancho significa eliminar los márgenes. Dar un ancho demasiado grande tiene el mismo efecto.

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top

web tasarım