永年县网站,山东省建设节能协会网站,wordpress百度分享插件,哪的网页设计培训好简介#xff1a; CSDN博客专家#xff0c;专注Android/Linux系统#xff0c;分享多mic语音方案、音视频、编解码等技术#xff0c;与大家一起成长#xff01; 优质专栏#xff1a;Audio工程师进阶系列【原创干货持续更新中……】#x1f680; 人生格言#xff1a; 人生… 简介 CSDN博客专家专注Android/Linux系统分享多mic语音方案、音视频、编解码等技术与大家一起成长 优质专栏Audio工程师进阶系列【原创干货持续更新中……】 人生格言 人生从来没有捷径只有行动才是治疗恐惧和懒惰的唯一良药. 更多原创,欢迎关注Android系统攻城狮 1.前言 本篇目的实现鼠标划词拷贝Emacs以外程序中内容回到Emacs中时需要关闭鼠标的划词拷贝因为在emacs中mark选中的时候又会拷贝内容会把之前外界的内容给冲掉基于这个原因实现一套鼠标和键盘选中时自动的拷贝的功能但是在Emacs中必须关掉在Emacs中还是需要手动拷贝。 2.应用实例
;;Emacs 27或更高版本
(xclip-mode 1)
;;Linux系统剪切板
(setq select-enable-clipboard t)
;;Linux primary区域剪切板
(setq select-enable-primary t);;需要先requre select
(require select);;实现emacs焦点进来时,设置select-enable-primary为nil;
;;当emacs焦点离开时,设置select-enable-primary为t.
;;保证剪切板不为空,否则需要自己执行一下复制命令,否则以下命令不生效.
(kill-new (buffer-name))(defvar last-focus-out-time nil)
;;300毫秒内执行多次的话,只执行一次.
(defun focus-out-emacs ()(interactive)(let ((current-time (float-time))) ; 当前时间(when (or (null last-focus-out-time) ; 上次执行的时间为空( (- current-time last-focus-out-time) 0.3)) ; 时间差超过300毫秒(setq last-focus-out-time current-time)(setq select-enable-primary t);;(message focus out hook))))(defun focus-in-emacs ()(interactive)(let ((current-time (float-time))) ; 当前时间(when (or (null last-focus-out-time) ; ( (- current-time last-focus-out-time) 0.3)) ; 时间差超过300毫秒(setq last-focus-out-time current-time);;延时1秒执行(setq select-enable-primary nil),否则在emacs外来不及copy就被关闭;;delay 1s(run-with-timer 1 nil (lambda ()(setq select-enable-primary nil);;(message focus in hook))))));;只要切换窗口就触发,切换一次窗口会调用4次实现focus-in-emacs和focus-out-emacs每次调用只执行一次。
(add-hook focus-in-hook (lambda (rest _)(focus-in-emacs)))
(add-hook focus-out-hook (lambda (rest _) (focus-out-emacs)))