各位大神,我想问一下在运行org-pomodoro
后,如何在模式行中将计时器放在前面,如下图标示的?
通过设置mode-line-format
可以实现,把mode-line-misc-info
调整到相应位置即可。
注意
- 设置
mode-line-format
时一定要用set-default
命令才行,原因我不太清楚。 - 上图中的计时器和后面的内容是一起的,都是由
mode-line-misc-info
控制的,所以,移动mode-line-misc-info
会移动后面所有的显示文字。
mode-line-misc-info
的值是((global-mode-string ("" global-mode-string " ")))
。global-mode-string
则与org-pomodoro
插件中的org-pomodoro.el
里面的以下代码相关,并通过该文件中的其他代码使得org-pomodoro-timer
(即计时器)与上述两者联系了起来。
;; add the org-pomodoro-mode-line to the global-mode-string
(unless global-mode-string (setq global-mode-string '("")))
(unless (memq 'org-pomodoro-mode-line global-mode-string)
(setq global-mode-string (append global-mode-string
'(org-pomodoro-mode-line))))
以移动mode-line-misc-info
到最前面为例:
(setq-default mode-line-format
(list
"%e"
'mode-line-misc-info
'mode-line-front-space
'mode-line-mule-info
'mode-line-client
'mode-line-modified
'mode-line-remote
'mode-line-frame-identification
'mode-line-buffer-identification
" "
'mode-line-position
" "
'mode-line-modes
'mode-line-end-spaces))
这样即可实现。
由于有时任务名称会很长,所以我后来还有是希望让mode-line-misc-info
的显示信息出现在顶端模式行。我用的是Purcell的配置,在init-org.el
中,他正好配置了这一项:
;;; Show the clocked-in task - if any - in the header line
(defun sanityinc/show-org-clock-in-header-line ()
(setq-default header-line-format '((" " org-mode-line-string " ")))
(defun sanityinc/hide-org-clock-from-header-line ()
(setq-default header-line-format nil))
)
不过,他的这个设置不能将计时器加入,需要将header-line-format
设置为mode-line-misc-info
的才行,所以,我将上述中的第2句代码替换之后:
;;; Show the clocked-in task - if any - in the header line
(defun sanityinc/show-org-clock-in-header-line ()
;; 将header-line-format设置为mode-line-misc-info的值,可以将计时器加入
(setq-default header-line-format 'mode-line-misc-info)
(defun sanityinc/hide-org-clock-from-header-line ()
(setq-default header-line-format nil))
)
就能在开启org-pomodoro
之后,在上面显示计时,如下图所示:
如果将mode-line-format
中的mode-line-misc-info
注释掉,那么就只有上面显示,而下面的模式行不显示了。
花了五六个小时折腾,终于搞定了。
不过还有一大堆工作因为这个事拖着,明天得加班了 。
但是,有个小问题,我目前不太清楚:首次启动org-pomodoro
时,计时器在最右边;再次执行时,又变成最左边了。
不下班再折腾Emacs吗……
哈哈,是的。不搞定总觉得心里咯着,不是很爽😂。这几天天天折腾到1、2点,主要是自己不懂lisp,也不是很了解Emacs。走了好多弯路。
不过上面的关于顶端模式行还有个问题:只显示工作时间的倒计时,休息时间的倒计时不显示。这个我目前不会弄。如果有大神知道怎么解决的话,还请赐教哈。
相关信息如下:
GNU Emacs 26.2 (build 1, x86_64-w64-mingw32),下载自官网的科大镜像站。
Org 9.1.9(Emacs自带)
Win7 64位
以Purcell的配置为基础,作了些小修改。