因为在多台机器上用Emacs,想要共享配置,之前是在init.el里加载local-config.el,然后这个文件不放在git里。但这样机器之间不一样的配置还要单拿出来放loca-config.el里,感觉挺麻烦。现在换成了用macro:
(defmacro luna-on (host &rest body)
"Evaluate BODY when running on HOST.
HOST can be a string or a list of strings.
You can see your host name by
$ hostname
and change it with
$ hostname <new name>"
(declare (indent 1))
`(when (if (stringp ,host)
(equal ,host (system-name))
(member (system-name) ,host))
,@body))
有这么用的吗?你们怎么共用配置的?
我只有字体需要对每个显示器、笔记本屏幕单独设置,其他的都一样。
wsug
2020 年7 月 21 日 04:06
3
我的是在配置文件的最后判断计算机的名字,加载一个同名el文件,不过也就只在两台电脑上用emacs,开始是屏幕大小分辨率不同才分开写,后来一致了都是一样的显示器分辨率,一样的系统,这段代码就没用了,楼主电脑很多吗
(cond
((string-equal (downcase system-name) "computer-lenovo")
(progn (load-file "~/.emacs.d/init/computer-lenove.el")))
;;else写法
(t (progn (load-file "~/.emacs.d/init/computer-amd.el"))))
还可以对显示器单独设置配置?
wsug:
楼主电脑很多吗
只有两台,但是有些配置和包只在一台电脑上有,另一台用的少就懒得装
yejzh
2020 年7 月 21 日 04:33
6
用的doom,把.doom.d的配置文件放在云上,不放在~/ 下,然后用软链接到 ~/ ,不知道这样做对不对
(if (string= (system-name) "DESKTOP-DMGKG0I");;PC at work
(progn (set-font "Sarasa Term SC" "Sarasa Term SC" 24 24)
(setq desktop-dirname "~/.emacs.d/DMGKG0I")
(setq desktop-path '("~/.emacs.d/DMGKG0I"))))
(if (string= (system-name) "DESKTOP-439OGGP");;Mini PC
(progn (set-font "Sarasa Term SC" "Sarasa Term SC" 40 40)
(setq desktop-dirname "~/.emacs.d/439OGGP")
(setq desktop-path '("~/.emacs.d/439OGGP"))))
(if (string= (system-name) "DESKTOP-FR36SPM");;PC at home
(progn (set-font "Sarasa Term SC" "Sarasa Term SC" 38 38)
(setq desktop-dirname "~/.emacs.d/FR36SPM")
(setq desktop-path '("~/.emacs.d/FR36SPM"))))
1 个赞
学到了
主要是一些本地的包,网络发布的包都是自动装,没啥问题,本地包就没这么方便了ww
我是用git管理, 一个主分支, 所有机器同步. 然后某机器上定制多的话, 可以基于主分支再创建个针对该机器的分支.
所有非emacs内置的的lisp文件都放在这个仓库里, 包括自己的包和网络上的包. 网上的包一般也需要在某台机器上试用一段时间没问题之后, 才提交到仓库.
git分支管理很硬核啊,分支之间merge/rebase不会很麻烦么。
主分支里放通用的东西, 其他分支都是一些针对某台机器的定制, 比如针对显示器颜色修改下主题等, 基本不会合并到主分支.
极少数情况下需要移动到主分支, 就手工操作, 一般都是三五行代码, 或者连续的整块代码, 不会很分散.