Emacs28.x版本之重要特性及用法实例(一百六十一)

news/2024/10/18 16:54:32/

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

新书发布:《Android系统多媒体进阶实战》🚀
优质专栏: Audio工程师进阶系列原创干货持续更新中……】🚀
优质专栏: 多媒体系统工程师系列原创干货持续更新中……】🚀
优质视频课程:AAOS车载系统+AOSP14系统攻城狮入门视频实战课 🚀

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

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

欢迎关注Android系统攻城狮

🍉🍉🍉文章目录🍉🍉🍉

    • 🌻1.前言
    • 🌻2.Emacs28.x系列介绍
    • 🌻3.代码实例
      • 🐓3.1 本地原生编译
      • 🐓3.2 树状文件浏览器
      • 🐓3.3 增强的 minibuffer 历史
      • 🐓3.4 像素级滚动
      • 🐓3.5 改进的电池状态显示
      • 🐓3.6 支持 emoji 的颜色字体
      • 🐓3.7 模块支持

🌻1.前言

本篇目的:Emacs28.x版本之重要特性及用法实例

🌻2.Emacs28.x系列介绍

  • Emacs 28.x 系列发布于2022年,是 Emacs 发展历程中的一个重要里程碑,带来了许多令人瞩目的新特性和改进,进一步增强了其作为高级文本编辑器和集成开发环境(IDE)的功能。这个版本在图形界面、多线程支持、编程语言集成、编辑器性能等多个方面进行了显著升级,使得 Emacs 更加高效、灵活和现代化。

  • 首先,Emacs 28.x 引入了原生全屏模式和原生的像素滚动(pixel-perfect scrolling)支持,这是图形用户界面(GUI)方面的一大改进。在之前的版本中,全屏模式的表现依赖于操作系统的支持,体验因平台而异,而 Emacs 28.x 则提供了更加一致和流畅的全屏体验。同时,像素滚动的支持使得滚动操作更加平滑,尤其是在高分辨率显示器上,用户可以更加精准地控制页面的滚动,提升了整体的用户体验。

  • 其次,Emacs 28.x 进一步完善了对多线程的支持。这一版本引入了可并发的垃圾回收(concurrent garbage collection)机制,使得 Emacs 在处理多任务时的性能得到了显著提升。通过减少垃圾回收对主线程的阻塞,用户在执行复杂的 Emacs Lisp 脚本或处理大型文件时,能够感受到更加流畅的操作体验。这一改进使得 Emacs 28.x 在处理高负载任务时表现得更加稳定和高效。

  • 在编程语言支持方面,Emacs 28.x 带来了多个增强和优化。最显著的改进之一是对树形浏览(Tree-sitter)技术的支持。Tree-sitter 是一种高效的语法解析库,能够为多种编程语言提供精确的语法分析和高亮支持。通过集成 Tree-sitter,Emacs 28.x 在语法高亮、代码导航和自动补全等方面的表现更加出色,尤其是在处理大型代码库时,性能和准确性都有显著提升。

  • 此外,Emacs 28.x 还改进了对原生编译(native compilation)的支持。虽然这一功能在 Emacs 27.x 中首次引入,但在 28.x 版本中得到了更好的优化和稳定性,用户可以更广泛地使用这一功能来加速 Emacs Lisp 代码的执行。原生编译能够将 Emacs Lisp 代码编译为机器代码,大幅提升了扩展包和复杂脚本的执行效率,使得 Emacs 28.x 的整体性能更加优越。

  • Emacs 28.x 还改进了对嵌入式窗口(child frames)的支持,这为用户提供了更灵活的窗口管理方式。嵌入式窗口允许在主窗口中弹出独立的小窗口,这对于实现更加复杂的用户界面和交互提供了便利。例如,用户可以在一个独立的小窗口中显示代码文档、调试信息或补全建议,而不影响主编辑区的内容。

  • 安全性方面,Emacs 28.x 引入了对 GPG 的增强支持,进一步提高了用户在处理敏感信息时的安全性。这个版本还增加了对“opportunistic TLS”的支持,提升了网络通信的安全性,尤其是在连接到不太可靠的网络资源时。

  • 最后,Emacs 28.x 还优化了启动时间,改进了包管理系统,并增强了对各种新硬件和操作系统的兼容性。这些改进使得 Emacs 28.x 在现代开发环境中更加得心应手,继续保持了其作为一款功能强大且灵活的编辑器的领先地位。

  • Emacs 28.x 是一个在功能和性能上都有显著提升的版本。通过图形界面优化、多线程支持增强、编程语言集成改进以及整体性能的提升,Emacs 28.x 为用户提供了更加现代化和高效的工作体验,进一步巩固了 Emacs 作为高级文本编辑器和开发工具的地位。

🌻3.代码实例

🐓3.1 本地原生编译

  • 功能描述: Emacs 28.x 将本地原生编译(Native Compilation)作为默认启用功能,通过将 Emacs Lisp 代码编译为本地代码,显著提高了运行速度。
;; 在 emacs-lisp-mode 中启用原生编译
(setq native-comp-speed 3) ;; 设置编译速度优先级;; 检查某个包是否已被原生编译
(native-comp-available-p)

🐓3.2 树状文件浏览器

  • 功能描述: Emacs 28.x 引入了对 Tree-sitter 的支持,这是一种用于解析和高亮显示代码的通用语法解析器。通过 Tree-sitter,Emacs 能够更好地进行语法高亮、代码导航等操作。
;; 安装 tree-sitter 包
(unless (package-installed-p 'tree-sitter)(package-refresh-contents)(package-install 'tree-sitter));; 启用 tree-sitter 支持
(require 'tree-sitter)
(require 'tree-sitter-langs)
(add-hook 'python-mode-hook #'tree-sitter-mode)

🐓3.3 增强的 minibuffer 历史

  • 功能描述: Emacs 28.x 对 minibuffer 的历史功能进行了增强,特别是通过 vertico 和 consult 插件,用户可以更方便地浏览历史记录和执行命令。
;; 安装并启用 vertico
(unless (package-installed-p 'vertico)(package-refresh-contents)(package-install 'vertico))(vertico-mode 1);; 安装并启用 consult
(unless (package-installed-p 'consult)(package-refresh-contents)(package-install 'consult));; 设置 consult 的快捷键
(global-set-key (kbd "C-s") 'consult-line)

🐓3.4 像素级滚动

  • 功能描述: Emacs 28.x 引入了像素级滚动功能,使得在高分辨率显示器上滚动文本时更加流畅和精准。
;; 启用像素级滚动
(pixel-scroll-precision-mode 1);; 设置滚动速度
(setq pixel-scroll-precision-interpolate-page t)

🐓3.5 改进的电池状态显示

  • 功能描述: Emacs 28.x 改进了电池状态显示功能,用户可以更方便地在 mode line 上查看当前电池状态。
;; 启用电池状态显示
(display-battery-mode 1);; 自定义 mode line 上的电池状态格式
(setq battery-mode-line-format "[%b%p%%]")

🐓3.6 支持 emoji 的颜色字体

  • 功能描述: Emacs 28.x 增强了对彩色 emoji 的支持,使得在 Emacs 中使用 emoji 时可以显示彩色图标。
;; 设置支持彩色 emoji 的字体
(set-fontset-font t 'emoji '("Noto Color Emoji" . "iso10646-1"));; 插入 emoji
(insert "😊")

🐓3.7 模块支持

  • 功能描述: Emacs 28.x 进一步完善了对动态模块的支持,允许用户加载外部编写的模块,扩展 Emacs 的功能。
;; 加载动态模块
(module-load "/path/to/module.so");; 调用模块中的函数
(module-call "module-function-name")

http://www.ppmy.cn/news/1512350.html

相关文章

Ansible可视化管理之web界面集成使用探究(未完待续)

一、前言 因某集成商管理的客户资源涉及4A接入管控要求,其中密码必须3个月更新一次,随着纳管主机的数量增多,手动去修改密码变得不现实,考虑无侵入性和资源耗用,便捷性等因素,首先选用Ansible作为此需求的…

每天一个数据分析题(四百九十二)- 主成分分析与因子分析

在因子分析中,因子载荷矩阵是用来表示( )。 A. 变量和因子之间的关系 B. 样本和因子之间的关系 C. 变量和样本之间的关系 D. 因子和因子之间的关系 数据分析认证考试介绍:点击进入 题目来源于CDA模拟题库 点击此处获取答案…

Pytorch cat()与stack()函数详解

torch.cat() cat为concatenate的缩写,意思为拼接,torch.cat()函数一般是用于张量拼接使用的 cat(tensors: Union[Tuple[Tensor, ...], List[Tensor]], dim: _int 0, *, out: Optional[Tensor] None) -> Tensor: 可以看到cat()函数的参数&#xf…

掉头发特别厉害的日子要来了!用对这3个方法,让头发重新乌黑浓密起来!

最近天气转凉,马上就要迎来处暑,正式进入秋季! 很多人都有这样一个感受:进入秋天后,就特别容易掉头发,不管洗头、梳头还是睡觉,一抓头发总会掉几根甚至更多。 枕头上、沙发上、地板上.....头发遍…

微软运行库全集合:一站式解决兼容性问题

开发者在部署应用程序时经常遇到因缺少运行库而引发的兼容性问题。为了解决这一问题,电脑天空推荐微软常用运行库合集,一个集成了微软多个关键运行库组件的软件包。 📚 包含组件概览: Visual Basic Virtual Machine:…

【数据结构】线段树 需要pushdown

建树lrpushup单点修改lrpushup区间查询包一旦题目中pushdown就必须pushdown&#xff0c;否则也无需区间修改包pushuppushdown AcWing 243. 一个简单的整数问题2 - AcWing #include<iostream> using namespace std; #define ll long long struct Tree{int l,r;ll sum,ad…

收银系统源码-连锁店解决方案

千呼新零售2.0系统由零售行业连锁店一体化收银系统和多商户入驻平台商城两个板块组成&#xff0c;打造门店平台的本地生活即时零售模式。 其中连锁店收银系统包括线下收银私域商城连锁店管理ERP管理商品管理供应商管理会员营销等功能为一体&#xff0c;线上线下数据全部打通。…

[MRCTF2020]套娃1

打开题目&#xff0c;查看源代码&#xff0c;有提示 有两层过滤 1.过滤"_"与"%5f" 。 这里要求的参数必须是"b_u_p_t"但是不能检测出"_"。这里看着很作弄人。其实这里要用到php里非法参数名的问题。可以参考一下博客 ?b.u.p.t2333…