当前位置: 首页 > news >正文

Emacs之实现鼠标/键盘选中即拷贝外界内容(一百二十)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长!

优质专栏:Audio工程师进阶系列原创干货持续更新中……】🚀

人生格言: 人生从来没有捷径,只有行动才是治疗恐惧和懒惰的唯一良药.

更多原创,欢迎关注:Android系统攻城狮

欢迎关注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)))
http://www.lryc.cn/news/102755.html

相关文章:

  • 智慧城市环境污染数据采集远程监控方案4G工业路由器应用
  • 大数据技术之Clickhouse---入门篇---安装
  • vue3搭建Arco design UI框架
  • 提升数据质量的四大有效方式
  • ALLEGRO之FlowPlan
  • Python - OpenCV实现摄像头人脸识别(亲测版)
  • date日期相关操作汇总
  • 生产者-消费者模式
  • Jetson Nano之ROS入门 -- YOLO目标检测与定位
  • 【移动机器人运动规划】01 —— 常见地图基础 |图搜索基础
  • mongotop跟踪Mongodb集合读取和写入数据
  • Linux中使用du命令来查看目录的大小
  • 【Linux】进程篇Ⅰ:进程信息、进程状态、环境变量、进程地址空间
  • 保护 TDengine 查询性能——3.0 如何大幅降低乱序数据干扰?
  • 状态机实现N位按键消抖
  • uniapp自定义消息语音
  • k8s安装Jenkins
  • 共筑开源新长城 龙蜥社区走进开放原子校源行-清华大学站
  • Jgit 工具类 (代码检出、删除分支(本地、远程)、新建分支、切换分支、代码提交)
  • 什么是redux?如何在react 项目中使用redux?
  • mysql的json处理
  • 前端学习——Vue (Day8)
  • Windows环境下安装及部署Nginx
  • 使用AOP切面对返回的数据进行脱敏的问题
  • TDengine时区设置
  • 站外引流效果差?一文带你搞懂解海外主流社交媒体算法!
  • css 动画之旋转视差
  • maven项目、springboot项目复制文件进来后没反应、不编译解决方法
  • android jetpack App Startup 应用启动时初始化组件(java)
  • 【设计模式|行为型】命令模式(Command Pattern)