treemacs显示和隐藏侧边栏时不改变当前emacs窗口的大小和位置.gif

@Kinney说不用frame,不用speedbar,treemacs也可以实现我说的那种效果,显示和隐藏侧边栏时不改变当前emacs窗口的大小和位置,我感觉也是可以的,最近针对我1920*1080的屏幕实现了一个,感觉效果不太理想,请教坛友们有没有更优雅些的实现

(defun frame-treemacs-show() 
  (interactive)
  (progn 
    (set-frame-width (selected-frame) 197)
    (set-frame-position (selected-frame) 121 158)
    (treemacs)))
(defun frame-treemacs-hide() 
  (interactive)
  (progn 
    (treemacs);;关闭 (treemacs nil)不起用
    (set-frame-width (selected-frame) 163)
    (set-frame-position (selected-frame) 430 158)))
(global-set-key (kbd "<f6>") 'frame-treemacs-show)
(global-set-key (kbd "<f7>") 'frame-treemacs-hide)

1 补充 gif动图

不是太理解不全屏

可以参考一下 which-key 的frame弹出方式。

为啥那么多人喜欢全屏?全屏感觉emacs大片空白浪费空间,我所有窗口都是统一的一行80列就足够用了,没必要占满屏幕。一行不超过80列这个编码规范还是很有用的

反而是你的做法浪费空间,原因很简单,你不全屏,那 Emacs 之外剩余的空间你用来做什么?比如截图中黑色区域就是永远无法利用上的区域。这也就是为啥很多人喜欢平铺式窗口管理的原因。 image

可以左右分屏啊,放其它额外信息啊,还有空白可以竖着分三列,甚至四列,我还觉得不够宽呢。

除emacs外我还开有很多其他的程序窗口,黑色那一片是给其它程序窗口留的位置,不过做gif时把无关的东西都隐藏了,如果能把emacs在windows下也当窗口管理器用,全屏也是很好的