Jac*_*son 10 emacs elisp vertical-alignment
我试图在Emacs缓冲区中设置文本的行高,以便字母上方和下方有空格.我试图破译文档,但没有任何意义.没有line-height变量,line-spacing什么都不做.文件声称
如果属性值是表单列表(高度总计),则会在显示行下方添加额外空间.首先,Emacs使用高度作为高度规格来控制线上方的额外空间; 然后它在线下方增加了足够的空间,使总线高达到总数.
"财产价值"?哪一个?我试过了(setq-default line-spacing 0.25),什么也没做.
还有一个show-paren-mode我可以设置的变量line-height,哪种工作,除了它在文本之前不产生空间,只在它之后.当与line-spacing"dip"下来的模式配对时,这看起来很难看:


(setq-default line-spacing 0.25) 什么也没做.
对于一个我想垂直居中的字体,其次我想弄清楚文档show-paren-mode正在谈论什么.任何帮助,将不胜感激.
我发现我可以使用以下代码获得我想要的效果:
(add-text-properties (point-min) (point-max)
'(line-spacing 0.25 line-height 1.25))
Run Code Online (Sandbox Code Playgroud)
但是,在某些模式下,属性会在我开始输入的区域消失.如何将顶部和底部间距设为默认值?(钩子不起作用.)
TLDR:我已经屈服于这样一个事实,即您无法真正可靠地使用 Emacs 本地实现这一点。您需要修补字体本身以包含额外的间距。所以,我创建了这个脚本来解决这个问题。
TLDR:在 init 文件中的某处添加:
;; Set the padding between lines
(defvar line-padding 3)
(defun add-line-padding ()
"Add extra padding between lines"
; remove padding overlays if they already exist
(let ((overlays (overlays-at (point-min))))
(while overlays
(let ((overlay (car overlays)))
(if (overlay-get overlay 'is-padding-overlay)
(delete-overlay overlay)))
(setq overlays (cdr overlays))))
; add a new padding overlay
(let ((padding-overlay (make-overlay (point-min) (point-max))))
(overlay-put padding-overlay 'is-padding-overlay t)
(overlay-put padding-overlay 'line-spacing (* .1 line-padding))
(overlay-put padding-overlay 'line-height (+ 1 (* .1 line-padding))))
(setq mark-active nil))
(add-hook 'buffer-list-update-hook 'add-line-padding)
Run Code Online (Sandbox Code Playgroud)
line-padding根据您的喜好增加或减少该值。
这个答案几乎只是总结了上述问题、答案和评论中的信息,所以我建议先阅读这些信息。
我使用覆盖而不是文本属性,因为它在向缓冲区添加新文本时表现得更好(尤其是通过复制/粘贴)。
将buffer-list-update-hook用作已创建新的缓冲器时识别的手段,并因此将需要具有应用了叠加。
出于性能原因,为了不连续添加叠加层,如果现有的填充叠加层存在,则将其删除。
正如文档所说,line-height是文本(或覆盖)属性。它不是变量。
尝试(setq-default line-spacing 20)。
line-spacing是帧参数或缓冲区局部变量。它的值可以是整数的像素,也可以是浮点数,用于指定相对于帧默认行高的间距。该文档没有说出给它一个列表值,例如(32 64)。
而且,如果您在终端模式下使用Emacs,则这都不适用。正如医生所说:
Run Code Online (Sandbox Code Playgroud)On text terminals, the line spacing cannot be altered.
| 归档时间: |
|
| 查看次数: |
4737 次 |
| 最近记录: |