Emacs服务器模式以及emacsclient配置
Emacs有很多强大的插件,但是插件安装多了会导致启动速度很慢。为了解决这个问题,一个方法是使用emacs提供的server模式。
基本用法[1]
- 启动emacs server:
$ emacs --daemon
- 编辑文件
$ emacsclient file
$ emacsclient -t file # 字符界面
$ emacsclient -c file # GUI界面
添加命令行别名
为了方便在终端上使用,在~/.bashrc文件中加入如下两行:
alias ec='emacsclient -t -a ""'
alias sec='sudo emacsclient -t -a ""'
其中-a表示alternative-editor,用于指定无法连接emacs server时使用的编辑器。空字符串有特殊意义,表示先启动emacs server,再重新连接。
若只有第一行,执行sudo ec file会找不到命令,因为root用户并没有定义ec别名。因此定义sec,作为ec的sudo版本。
添加到文件管理器,设为默认编辑器
接下来我们希望双击文本文件时也能够使用emacsclient。创建~/.local/share/applications/emacsclient.desktop:
[Desktop Entry]
Name=Emacs (Client)
GenericName=Text Editor
Comment=Edit text
MimeType=text/english;text/plain;text/x-makefile;text/x-c++hdr;text/x-c++src;text/x-chdr;text/x-csrc;text/x-java;text/x-moc;text/x-pascal;text/x-tcl;text/x-tex;application/x-shellscript;text/x-c;text/x-c++;
Exec=emacsclient -c -a "" %F
Icon=emacs
Type=Application
Terminal=false
Categories=Development;TextEditor;Utility;
StartupWMClass=Emacs
选择打开方式为Emacs (Client)即可。
给命令行和GUI设置不同的theme (可选)
最后还要处理一个比较细节的问题,终端和GUI版本使用同一套主题可能会有问题。然而遗憾的是,emacs的主题是全局的,无法给frame单独设置,因此只能采取一些取巧的方法。
- 解决方法1:
第一种方法是当创建一个新frame时,根据frame的类型,手动调整它的样式。例如[2]:
(defun setup-window-system-frame-colours (&rest frame)
(if window-system
(let ((f (if (car frame)
(car frame)
(selected-frame))))
(progn
(set-frame-font "Bera Sans Mono-11")
(set-face-background 'default "#232F2F" f)
(set-face-foreground 'default "#FFFFFF" f)
(set-face-background 'fringe "#000000" f)
(set-face-background 'cursor "#2F4F4F" f)
(set-face-background 'mode-line "#2F4F4F" f)
(set-face-foreground 'mode-line "#BCBf91" f)))))
(require 'server)
(defadvice server-create-window-system-frame
(after set-window-system-frame-colours ())
"Set custom frame colours when creating the first frame on a display"
(message "Running after frame-initialize")
(setup-window-system-frame-colours))
(ad-activate 'server-create-window-system-frame)
(add-hook 'after-make-frame-functions 'setup-window-system-frame-colours t)
- 解决方法2:
第2种方法类似,根据frame的类型,应用或者取消主题[3]。
(load-theme 'monokai t t)
(defun on-frame-open (frame)
;; (select-frame frame)
(if (display-graphic-p frame)
(enable-theme 'monokai)
(disable-theme 'monokai)))
(add-hook 'after-make-frame-functions 'on-frame-open)
参考资料
1 https://www.emacswiki.org/emacs/EmacsClient
2 https://www.emacswiki.org/emacs/SettingFrameColorsForEmacsClient
3 https://emacs.stackexchange.com/questions/2096/different-themes-for-terminal-and-graphical-frames-when-using-emacs-daemon
Emacs服务器模式以及emacsclient配置的更多相关文章
- CentOS 6 搭建SVN支持httpd和svnserve独立服务器两种模式 以及邮件配置
Linux下SVN服务器同时支持Apache的http和svnserve独立服务器两种模式且使用相同的访问权限账号 服务器操作系统:CentOS 6.x 1.在服务器上安装配置SVN服务: 2.配置S ...
- Citrix 服务器虚拟化之五 Xenserver配置存储
Citrix 服务器虚拟化之五 Xenserver配置存储 XenServer中定义了一个容器称为存储库(SR)来描述一个特定的存储目标存储虚拟磁盘映像(VDI). VDI是一个的磁盘抽象,包含一个 ...
- CentOS 6.3下rsync服务器的安装与配置[转]
CentOS 6.3下rsync服务器的安装与配置 一.rsync 简介 Rsync(remote synchronize)是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件,也 ...
- Linux - CentOS6.5服务器搭建与初始化配置详解(下)
传送带:Linux - CentOS6.5服务器搭建与初始化配置详解(上) 继续接着上面的安装,安装完后会出现下面界面 点击reboot重启 重启后可以看到下面的tty终端界面 因为这就是最小化安装 ...
- MySQL服务器的安装和配置,MySQL Workbench 8.0.12安装,MySQL的基本使用
一 MySQL服务器的安装和配置 二 MySQL Workbench 8.0.12安装 三 MySQL的基本使用 一MySQL服务器的安装和配置 MySQL是目前最为流行的开放源码的数据库,是完全网络 ...
- Linux下NAT模式和桥接模式的网络配置
Linux下NAT模式和桥接模式的网络配置 最近在配置linux虚拟机的时候发现有很多坑,现在记录下来以防日后又跳到坑里. 我的运行环境是:主机 windows 7 虚拟机 Virtualb ...
- [同事转帖] .net core的服务器模式和工作站模式
发现自己的服务器上面的进程占用越来越厉害 所以就跟同事讨论了一下 性能组同事 说已经发现 并且给了一个 网址 这里转帖记录一下 避免以后找不到. .NET Core是一个开源通用的开发框架,具有跨平台 ...
- Apache服务器的安装与配置
文档:http://httpd.apache.org/docs/2.4/ 指令:http://httpd.apache.org/docs/2.4/mod/core.html 一.配置文件 语法 * 主 ...
- Solr系列二:solr-部署详解(solr两种部署模式介绍、独立服务器模式详解、SolrCloud分布式集群模式详解)
一.solr两种部署模式介绍 Standalone Server 独立服务器模式:适用于数据规模不大的场景 SolrCloud 分布式集群模式:适用于数据规模大,高可靠.高可用.高并发的场景 二.独 ...
随机推荐
- docsify简单教程
简介 一个神奇的文档网站生成器. 简单而轻便(〜18kB压缩) 没有静态构建的HTML文件 多个主题 快速开始 建议docsify-cli全局安装,这有助于本地初始化和预览网站. npm i docs ...
- yii 框架 – 安全站点和非安全站点的 URL 管理
在本文中我将描述怎么管理安全站点和非安全站点的 URL 管理. 安全站点的内容使用httpsSSL (安全套接字层) 协议发送,而非安全站点使用http协议.为了描述简单,我们称前者https内容/页 ...
- php后门拿下当前目录
Weevely是一个模拟类似telnet的连接的隐形PHP网页shell.它是Web应用程序后期开发的必备工具,可以作为隐形后门程序,也可以作为一个web外壳来管理合法的Web帐户,甚至可以免费托管. ...
- list.Except()
差集 List<string> list = new List<string>() { ", ", ", }; List<string> ...
- jwt 认证
目录 jwt 认证示意图 jwt 认证算法:签发与检验 drf 项目的 jwt 认证开发流程(重点) drf-jwt 框架基本使用 token 刷新机制(了解) jwt 认证示意图 jwt 优势 1 ...
- 夯实Java基础(十五)——Java中Comparable和Comparator
1.前言 对于Java中的对象,我们只能使用基本运算符==.!=来判断一下地址是否相等,不能使用>.<来比较大小.但是在实际的开发中,我们需要对对象进行排序,也就是比较大小,那么应该如何实 ...
- Memcache和Redis的详细理解与区别
1. Memcache Memcache是一个高性能,分布式内存对象缓存系统,通过在内存中缓存一个巨大的hash表,他能够存储包括图像,文件,索引,sql语句结果等数据,可以理解为它理解为一个为提升读 ...
- lunix下的redis安装
https://blog.csdn.net/qq_35992900/article/details/82950157
- uWSGI, Thread, time.sleep 使用问题
下面的问题,在flask程序独立运行中,都没有问题,但是部署在 uwsgi 上表现异常: 1. 在http请求处理过程中,产出异步线程,放在线程池中,线程的启动时间有比较明显的延迟. 2. 在异步线程 ...
- DevOps - 总结
章节 DevOps – 为什么 DevOps – 与传统方式区别 DevOps – 优势 DevOps – 不适用 DevOps – 生命周期 DevOps – 与敏捷方法区别 DevOps – 实施 ...