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

原文地址:https://www.cnblogs.com/cocode/p/12251697.html

时间: 2024-08-29 05:56:02

Emacs服务器模式以及emacsclient配置的相关文章

工作在服务器模式下的rsync的安装、配置与使用22

rsync命令可以用于在本地系统中复制文件(如同cp命令),也可以在本地和远程主机之间复制文件(如同scp命令),还可以工作在服务器模式下(使用功能上类似FTP.SAMBA等).本文主要介绍rsync在服务器模式下的配置和应用举例. rsync命令常用选项 -n: 仅做执行测试,不做实际动作 -v, --verbose: 输出详细执行信息 -q, --quiet: 静默模式 -c, --checksum: 开启校验功能,强制对文件传输进行校验 -r, --recursive:递归复制 -a, -

emacs使用本地emacs server模式打开远程文件

使用emacs的用户都知道,一般要打开远程机器上的文件要使用TrampMode模式,调用方式例如以下: C-x C-f /remotehost:filename RET (or /method:[email protected]:filename) 但,这样打开有点麻烦,你必要输入username和机器ip等 emacs提供了一种client/server的模式,当我们在本地打开一个emacs,能够将它作为server执行 然后,在本地机器的其它都方要用emacs的时候,如在terminal中要

SharePoint 2010 Reporting Services 报表服务器实例没有正确配置 解决方法

报表服务器实例没有正确配置.请先使用 Reporting Services 配置工具创建 SharePo 在管理中心配置Reporting Services集成时候,报下面的错误 报表服务器实例没有正确配置.请使用Reporting Services配置工具创建SharePoint集成模式的报表服务器数据库,然后再为此SharePoint Web应用程序设置集成选项. 这说明Reporting Services配置管理器的数据库使用了默认的数据库,没有创建SharePoint集成数据库 新建数据

WDS服务器的部署与配置

WDS服务器的部署与配置 一. 环境介绍 服务器端系统环境:windows2012 客户端环境:windows2012及win xp系统 二. 部署先决条件 1. 服务器端先决条件 (1)WDS服务器所在环境是域环境,可以是域控服务器或域成员(此条件非必须,可选择独立模式的WDS): (2)服务器需添加WDS角色 (3)网络中必须有DHCP服务器: (4)添加系统镜像 注意,本例为创建DHCP,是由于使用了Vmware自带的NAT的DHCP. 2. 客户端先决条件 客户机网卡支持PXE 三. 服

90后90网论坛量大从优 虚拟化基础架构Windows 2008篇之11-WSUS服务器的安装与配置

无论是数据中心还是在企业网络中,大多数Windows操作系统都要及时地更新补丁.对于家庭用户来说,或者对于大多数的企业用户来说,习惯于从Windows Update站点在线升级,或者使用第三方的工具(例如360)从Microsoft站点下载升级(360本身不提供补丁及镜像).但是,当网络中的服务器及工作站数量较多,并且产品较多时,都从Microsoft网站升级,一是速度慢,二是会占用大量的互联网带宽.另外,尤其是在云计算的数据中心,配置新的虚拟服务器是很简单.容易的事情,例如配置一台虚拟机只需要

CentOS下LVS DR模式负载均衡配置详解

一安装LVS准备: 1.准备4台Centos 6.2 x86_64 注:本实验关闭 SELinux和IPtables防火墙. 管理IP地址 角色 备注 192.168.1.101 LVS主调度器(Master Director) 对外提供服务的VIP为192.168.1.180 192.168.1.114 LVS从调度器(Backup Director) 平时可以作为RS(真实服务器使用) 192.168.1.104 RS1(真实服务器)   192.168.1.103 RS2(真实服务器)  

Linux - CentOS6.5服务器搭建与初始化配置详解(下)

传送带:Linux - CentOS6.5服务器搭建与初始化配置详解(上) 继续接着上面的安装,安装完后会出现下面界面 点击reboot重启 重启后可以看到下面的tty终端界面  因为这就是最小化安装 输入root和之前配置的密码 第一步先把防火墙给光了 iptables -F  命令用于清空规则 这里插一条命令(这个命令我忘记打上去了) /etc/init.d/iptables save  用于保存当前被清空的规则 chkconfig  iptables  stop  开机不允许启动防火墙 c

Apache服务器的安装与配置

文档:http://httpd.apache.org/docs/2.4/ 指令:http://httpd.apache.org/docs/2.4/mod/core.html 一.配置文件 语法 * 主配置文件httpd.conf,更改只有重启服务才会生效* 配置中一行一个命令,如果要多行一个命令,则最后以\结束,且与该行最后个字符无其它字符或者空白* 每行注释以#开头,会被忽略,一行命令符后不能再接注释* 空行空白字符在配置文件中被忽略* 配置文件错误检测可以通过 Test Configurat

CentOS6.4下Samba服务器的安装与配置

一.先恶狠狠地吐槽一下: 这篇随笔真是让我折腾了2天2夜才敢下笔写!!!为什么呢?之前是通过去Samba的官网下载的源码包,也就是.tar.gz来进行安装配置,不过这个让我折腾来折腾去就是没折腾出结果,还花了我整整1天1夜的时间,最后实在是熬不住了,想通过yum来重新进行Samba服务器的安装与配置,但是要使用yum首先必须是CentOS要联网,而我又没有找到Samba的rpm包,而之前一直没有搞定在虚拟机中的CentOS上网的问题,所以新的纠结又开始了,首先得先想办法让虚拟机能上网,这段经历已