这个是用 all-the-icons
设置的,可以参考我的配置。
https://github.com/stardiviner/emacs.d/blob/master/init/org-mode/init-org-agenda.el#L245
这个是用 all-the-icons
设置的,可以参考我的配置。
https://github.com/stardiviner/emacs.d/blob/master/init/org-mode/init-org-agenda.el#L245
我这边不管是加到hook里还是手动调用都没问题,emacs -q
也可以。我也不清楚是什么神奇的原因。
也许可以试一下把光标移动到agenda里Clocked的那一行,然后describe-char看一下text properties里的duration对不对?虽然我感觉不是duration的问题。
@hawnzug 谢谢,我都没想到应该查看下字符属性。这里是我的结果。
position: 1608 of 24792 (6%), column: 15
character: SPC (displayed as SPC) (codepoint 32, #o40, #x20)
charset: ascii (ASCII (ISO646 IRV))
code point in charset: 0x20
script: latin
syntax: which means: whitespace
category: .:Base, a:ASCII, l:Latin
to input: type "C-x 8 RET 20" or "C-x 8 RET SPACE"
buffer code: #x20
file code: #x20 (encoded by coding system utf-8)
display: by this font (glyph code)
ftcrhb:-PfEd-DejaVu Sans Mono-normal-normal-normal-*-24-*-*-*-m-0-iso10646-1 (#x03)
Character code properties: customize what to show
name: SPACE
general-category: Zs (Separator, Space)
decomposition: (32) (' ')
There are 2 overlays here:
From 1593 to 1719
face hl-line
priority -50
window [Show]
From 1593 to 1719
face (:background "#FFFF9D" :foreground "black")
line-height 1.5666666666666667
line-spacing 0.5666666666666667
There are text properties here:
breadcrumbs nil
date (5 1 2020)
day 737546
done-face org-agenda-done
dotime [Show]
duration 32.0
extra [Show]
face org-agenda-done
format [Show]
help-echo "mouse-2 or RET jump to org file ~/Org/Tasks/Computer Todos.org"
level " "
mouse-face highlight
org-agenda-type agenda
org-category "Computer"
org-complex-heading-regexp [Show]
org-day-cnt 1
org-hd-marker [Show]
org-last-args (nil nil day)
org-marker [Show]
org-not-done-regexp [Show]
org-priority-highest 65
org-priority-lowest 67
org-redo-cmd (org-agenda-list 'nil nil 'day nil)
org-series-cmd nil
org-todo-regexp [Show]
priority 100000
tags ("repeat")
time " 8:25am- 8:57am "
time-of-day 825
txt [Show]
type "clock"
undone-face org-warning
可以看到 duration 属性是 32.0
应该是没问题的。我之前Edebug的时候,也能看到duration正确计算了。
你能从这个输出里面看出什么端倪么?
看上去第二个overlay里的line-height和line-spacing也是对的,但是显示出来没有变化吗?
显示出来没有高度变化。真个正是问题所在,真的很奇怪。竟然查不出来是为啥。。。
我好像找到问题所在了。难怪一直edebug都找不出原因。这次我在Edebug的时候发现,当 (point) 在行前的时候,行高没变,而当 代码将 (point)
移动到行尾的时候,行高又正常工作了,变高了。于是我手动移动了下光标,确实如此。
然后我以为和光标有关系,于是取消了 hl-line-mode
,但是没用。我想要截图的,但是我是两边分割的窗口,于是我想着关闭一边的窗口,结果当只剩下一个窗口的时候,行高显示正常了,当我左右分割两个窗口的时候,一行的长度超过窗口的宽度的时候,问题就出现了。
我估计是因为overlay的缘故。可能由于我使用的是最新德Emacs版本(最新的,从源代码编译的)
GNU Emacs 28.0.50 (build 1, x86_64-pc-linux-gnu, GTK+ Version 3.24.17, cairo version 1.17.3) of 2020-05-02
这是截图
The overlay line does not show line with line-height of overlay.
When I move cursor point to end of overlay line.
When window width is larger than line length:
I also recorded an demostration screencast:
我测试了,编译两个月前的commit编译的Emacs,也还是有这个问题。测试了Emacs26版本,也依然有这个问题。看来不是Emacs版本问题。
---- UPDATE----
查看了一下 Emacs 源代码的git历史变动, overlay-put
函数属于 buffer.c
文件,近期都没有什么改动。所以排除了Emacs的overlay功能改动而导致的可能。
万般无奈之下,我打算把这个问题报错给Emacs开发组邮件列表。
---- UPDATE -----
新进展,邮件列表回复最好写个最小的elisp代码片段测试。我写了一个,发现line-height其实没问题。真是奇怪了。以下是测试代码片段。
(let ((line-height 20)
(ov (make-overlay (point-at-bol) (1+ (point-at-eol)))))
(overlay-put ov 'face '(:background "yellow"))
(overlay-put ov 'line-height line-height)
(overlay-put ov 'line-spacing (1- line-height)))
十分感谢!把需要自己找图标的问题也解决了,您使用的domtronn/all-the-icons.el: A utility package to collect various Icon Fonts and propertize them within Emacs.看上去很方便!
能用上就好,同好嘛。
更新这个issue信息
我发邮件到emacs-devel了,有人说这不是ol问题,而是这个本来就不是ol的目的。链接在这里。
https://lists.gnu.org/archive/html/emacs-devel/2020-06/msg00083.html
主要和这一行有关 (make-overlay (point-at-bol) (1+ (point-at-eol)))
里面是 1+
的话,就会overlay取到行尾以及换行。但是如果不要 1+
就没法设置 overlay的行高属性了。
如果引用了cnfonts包做了中英文对齐的话就会出现行高固定问题, 我在停止引用该包后行高就按预期变化了
谢谢楼主和各位大佬,这个对我来说真的很有用! 我之前用的都是正常的,不过最近不知道怎么这段代码不生效了,还是原始的log形式,也没有任何的报错。