usar salir como emacs fringe

salir - como usar emacs



¿Es posible reemplazar Fringe Bitmaps con texto en Emacs? (2)

No, no es. Los "mapas de bits" de franja son mapas de bits, es decir, vectores de 0/1 bits, superpuestos sobre el margen. No hay forma de convertir directamente los caracteres unicode arbitrarios al margen.

Lo que puede hacer es renderizar un caracter unicode en un bitmap 0/1 usted mismo. Cualquier editor de imagen decente (por ejemplo, Gimp, Photoshop, Pixelmator, Paint.net, etc.) puede hacer esto. A continuación, convierta este mapa de bits en un vector de mapa de bits marginal. El formato de bitmaps marginales se describe en Personalizar Fringe Bitmaps .

Eventualmente puede usar estos vectores de mapa de bits para reemplazar las left-arrow right-arrow , left-arrow right-arrow (para líneas truncadas), left-curly-arrow right-curly-arrow y left-curly-arrow right-curly-arrow (para líneas continuas) mapas de bits, usando la función define-fringe-bitmap .

Sin embargo, diría que esto es más complicado de lo que vale. La franja tiene 8 píxeles de ancho, por lo que deberías exprimir tu hermoso carácter unicode en un mapa de bits de 8x8. Esto significa que no hay renderizado de subpixel, sin aliasing, sin renderizado de bytecode, nada de lo que hace que los personajes en la pantalla sean agradables y elegantes. Sería tan feo como las flechas que has reemplazado.

Me encantaría reemplazar las feas flechas de píxeles que indican líneas truncadas o envueltas con texto simple y de buen gusto (tal vez incluso un bonito carácter unicode, como una elipsis /u2026 ). es posible?


La respuesta de lunaryorn es correcta, pero quizás esté fuera del alcance de los usuarios novatos de Emacs, por ejemplo, los aficionados al programador como yo.

La función fringe-helper-convert escrita por Nikolaj Schumacher en su biblioteca Fringe Helper - https://github.com/nschum/fringe-helper.el - hace que sea fácil para los aficionados a Emacs como yo crear un vector que se use por la función define-fringe-bitmap (que se define en el código fuente C de Emacs). Elegí un pilcrow, pero el usuario puede crear cualquier imagen que se ajuste, por ejemplo, usando la letra mayúscula X y el punto . , el usuario podría crear la forma de una letra.

;; AUTHOR: Nikolaj Schumacher -- https://github.com/nschum/fringe-helper.el (defun fringe-helper-convert (&rest strings) "Convert STRINGS into a vector usable for `define-fringe-bitmap''. Each string in STRINGS represents a line of the fringe bitmap. Periods (.) are background-colored pixel; Xs are foreground-colored. The fringe bitmap always is aligned to the right. If the fringe has half width, only the left 4 pixels of an 8 pixel bitmap will be shown. For example, the following code defines a diagonal line. /(fringe-helper-convert /"XX....../" /"..XX..../" /"....XX../" /"......XX/"/)" (unless (cdr strings) ;; only one string, probably with newlines (setq strings (split-string (car strings) "/n"))) (apply ''vector (mapcar (lambda (str) (let ((num 0)) (dolist (c (string-to-list str)) (setq num (+ (* num 2) (if (eq c ?.) 0 1)))) num)) strings)))

El siguiente ejemplo supone un frame-char-height de 20 píxeles, por lo que la imagen de mapa de bits tiene la misma altura que el texto en el búfer. El fragmento de let-bound crea una forma de pilcrow en el margen derecho al final de la línea (dondequiera que sea el punto cuando se evalúa el fragmento). El ejemplo asume que el margen derecho es al menos un ancho de once, por ejemplo, (add-to-list ''default-frame-alist ''(right-fringe . 11)) El símbolo unicode convertido a string - (char-to-string ?/uE000) probablemente podría ser sustituido por " " .

(define-fringe-bitmap ''pilcrow (fringe-helper-convert "......." "......." "......." "......." "......." ".XXXXXX" "XXXX.X." "XXXX.X." "XXXX.X." ".XXX.X." "...X.X." "...X.X." "...X.X." "...X.X." "...X.X." "...X.X." "......." "......." "......." ".......")) (let ((peol (point-at-eol))) (overlay-put (make-overlay peol peol) ''after-string (propertize (char-to-string ?/uE000) ''display ''(right-fringe pilcrow font-lock-keyword-face))))