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

news2024/9/22 7:41:07

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

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

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

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

欢迎关注Android系统攻城狮

🍉🍉🍉文章目录🍉🍉🍉

    • 🌻1.前言
    • 🌻2.Emacs29.x系列介绍
    • 🌻3.代码实例
      • 🐓3.1 新的图形用户界面支持
      • 🐓3.2 改进的 eglot 支持
      • 🐓3.3 改进的 org-mode 功能
      • 🐓3.4 支持新的编程语言
      • 🐓3.5 增强的垃圾回收机制
      • 🐓3.6 新的插件管理系统
      • 🐓3.7 对大文件的更好支持

🌻1.前言

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

🌻2.Emacs29.x系列介绍

  • Emacs 29.x 系列发布于2023年,是 Emacs 社区持续改进的成果,带来了大量新特性和改进,进一步提升了其作为多功能文本编辑器和开发环境的实用性。这个版本在图形界面、多线程、编程语言支持、编辑器性能、用户体验等方面做出了显著升级,满足了现代开发者的多样化需求。

  • 首先,Emacs 29.x 在图形用户界面(GUI)方面做出了多个重要改进。最显著的是对可变宽度字体(variable-pitch fonts)的支持得到了进一步增强,尤其是在混合文本和代码的文档中,这种支持显得尤为重要。此外,Emacs 29.x 引入了对 pgtk 架构的改进,提升了在 Wayland 和其他现代显示服务器上的兼容性和性能,使得 Emacs 在更多的 Linux 桌面环境中表现出色。

  • 其次,Emacs 29.x 进一步优化了多线程和并发处理能力。通过改进多线程支持,Emacs 可以更好地处理后台任务,例如文件索引、搜索、代码分析等,而不会影响主线程的响应速度。这一优化使得在处理复杂和高负载任务时,Emacs 的稳定性和效率得到了显著提升,尤其对于需要处理大规模项目或并行任务的开发者而言,这一改进尤为有用。

  • 在编程语言支持方面,Emacs 29.x 扩展了对多种编程语言的集成和优化,尤其是对 Rust、Go 和 TypeScript 等现代编程语言的支持。Emacs 29.x 引入了更多内置的开发工具和模式,提供了更好的语法高亮、代码自动补全、错误检查等功能。这些改进使得 Emacs 成为一个更强大的开发环境,能够更好地支持现代软件开发的复杂需求。

  • 一个重要的新特性是对 Tree-sitter 的全面集成。Tree-sitter 是一个强大的语法解析库,能够为多种编程语言提供精确的语法分析和高效的高亮支持。通过将 Tree-sitter 深度集成到 Emacs 中,Emacs 29.x 提供了更精准和高效的代码编辑体验,特别是在处理大型代码库或复杂语言时,性能得到了显著提升。

  • Emacs 29.x 还加强了对编程语言服务器协议(LSP)的支持。这一增强使得 Emacs 能够与现代开发工具更好地集成,提供类似于 Visual Studio Code 等 IDE 的智能代码导航、重构和补全功能。LSP 支持的改进进一步巩固了 Emacs 作为高级编辑器的地位,使其能够在现代开发环境中继续发挥重要作用。

  • 在用户体验方面,Emacs 29.x 引入了更友好的界面改进。例如,新的tab-bar-modetab-line-mode 提供了更加灵活和直观的标签管理功能,使得用户可以更方便地在多个文件和项目之间切换。此外,Emacs 29.x 还对启动速度进行了优化,通过延迟加载和其他性能提升措施,减少了启动时间,提高了用户的使用体验。

  • 安全性方面,Emacs 29.x 继续强化对网络通信和数据处理的安全措施,包括改进对 GnuTLS 的支持和更严格的包管理系统验证机制,确保用户在使用 Emacs 处理敏感信息时能够获得更高的安全保障。

  • Emacs 29.x 是一个功能丰富且技术上更加成熟的版本。通过图形界面优化、多线程支持增强、编程语言支持扩展以及整体性能的提升,Emacs 29.x 提供了更加现代化和高效的操作体验,使得其在各种开发和编辑任务中依然保持领先地位。

🌻3.代码实例

🐓3.1 新的图形用户界面支持

  • 功能描述: Emacs 29.x 改进了对现代图形用户界面的支持,尤其是在 macOS 和 Windows 上,提供了更高效的渲染和用户体验。
;; 在 macOS 上启用原生菜单
(setq ns-use-native-fullscreen nil)
(setq ns-pop-up-frames nil)

🐓3.2 改进的 eglot 支持

  • 功能描述: Emacs 29.x 对 eglot 语言服务器协议(LSP)的支持进行了显著改进,使得与 LSP 服务器的集成更加顺畅。
;; 安装并启用 eglot
(unless (package-installed-p 'eglot)
  (package-refresh-contents)
  (package-install 'eglot))

(require 'eglot)
(add-hook 'python-mode-hook 'eglot-ensure)

;; 配置 eglot
(setq eglot-server-programs '((python-mode . ("pylsp"))))

🐓3.3 改进的 org-mode 功能

  • 功能描述: Emacs 29.x 为 org-mode 引入了许多新特性,如增强的表格功能、更好的任务管理和图形化表示等。
;; 启用 org-mode 并配置表格功能
(require 'org)

;; 启用 org-mode
(add-hook 'org-mode-hook 'org-mode-setup)

;; 自定义 org-mode 表格功能
(setq org-table-export-default-format "orgtbl")

🐓3.4 支持新的编程语言

  • 功能描述: Emacs 29.x 增强了对多种新编程语言的支持,包括 Rust、Dart 等,使得 Emacs 成为更全面的编程环境。
;; 安装并配置 rust-mode
(unless (package-installed-p 'rust-mode)
  (package-refresh-contents)
  (package-install 'rust-mode))

(require 'rust-mode)
(add-hook 'rust-mode-hook 'rust-enable-format-on-save)

;; 安装并配置 dart-mode
(unless (package-installed-p 'dart-mode)
  (package-refresh-contents)
  (package-install 'dart-mode))

(require 'dart-mode)
(add-hook 'dart-mode-hook 'dart-enable-analysis-server)

🐓3.5 增强的垃圾回收机制

  • 功能描述: Emacs 29.x 对垃圾回收机制进行了进一步优化,减少了垃圾回收对性能的影响,提高了编辑器的响应速度。
;; 设置更高效的垃圾回收阈值
(setq gc-cons-threshold 100000000) ;; 提高垃圾回收阈值
(setq gc-cons-percentage 0.6) ;; 设置垃圾回收的比例

;; 启用垃圾回收优化
(add-hook 'emacs-startup-hook
          (lambda ()
            (setq gc-cons-threshold 800000)
            (setq gc-cons-percentage 0.1)))

🐓3.6 新的插件管理系统

  • 功能描述: Emacs 29.x 引入了一个新的插件管理系统,使得安装、更新和管理插件变得更加简单和高效。
;; 配置新的插件管理系统
(require 'package)
(setq package-archives '(("melpa" . "https://melpa.org/packages/")
                         ("gnu" . "https://elpa.gnu.org/packages/")
                         ("marmalade" . "https://marmalade-repo.org/packages/")))
(package-initialize)

;; 安装和更新插件
(unless (package-installed-p 'use-package)
  (package-refresh-contents)
  (package-install 'use-package))

;; 使用 use-package 安装其他插件
(require 'use-package)

🐓3.7 对大文件的更好支持

  • 功能描述: Emacs 29.x 对处理大文件进行了优化,特别是在加载和编辑大文件时,性能得到了显著提高。
;; 配置大文件支持
(setq large-file-warning-threshold (* 100 1024 1024)) ;; 设置大文件警告阈值为 100MB

;; 启用大文件模式
(add-hook 'find-file-hook
          (lambda ()
            (when (> (buffer-size) large-file-warning-threshold)
              (setq buffer-read-only t)
              (message "Large file opened in read-only mode"))))

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2058675.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何提升网络对AI大模型流量的承载能力?

前言 随着AI大模型的兴起,数据中心正在经历前所未有的变革。AI模型的规模巨大并持续快速增长。自2017年起,AI模型的规模每半年翻一番,从初代Transformer的6500万增长到GPT-4的1.76万亿,预计下一代大语言模型的尺寸将达到10万亿。…

CSE12 Lab 4: Simple CSV File Analysis

This file shows the stock returns from an investment portfolio over a year. The “A” column contains the stock name and the “B” column indicates the returns in USD (You can assume that there are no negative stock returns in any of our CSV data files ).…

深度解析|comfyui画面词云效果工作流搭建和讲解

前言 本篇文章共分为4部分: 工作流展示 工作流节点逻辑梳理 工作流拆解搭建 总结 我会对里面的重要的节点做详细的说明和解释,希望大家看完之后能学会并自己进行搭建,可以把出图效果放评论区一起学习探讨哦。 1.工作流效果展示 今天我…

45.【C语言】指针(重难点)(H)

目录: 22.函数指针变量 *创建 *使用 *两段代码分析 23.函数指针数组 *基本用法 *作用 往期推荐 22.函数指针变量 *创建 类比数组指针变量的定义:存放数组地址的指针变量,同理函数指针变量存放函数的地址 格式 函数的返回类型 (*指针变量的…

【python报错已解决】“string indices must be integers”

🎬 鸽芷咕:个人主页 🔥 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想,就是为了理想的生活! 引言 你是否在处理Python字符串时遇到了“string indices must be integers”的错误?这个错误可能会让你的代码运行…

[SWPU2019]Network

TTL加密 python脚本解密 import binasciif open(attachment_3.txt, "r") str Binary number while 1:num f.readline()if not num:breakif num.rstrip() 63: # 去掉每行后面的空格Binary 00elif num.rstrip() 127:Binary 01elif num.rstrip() 191:Bi…

C++那些事之helgrind并发编程检测

C那些事之helgrind并发编程检测 大纲 死锁数据竞争提问 通常我们在写多线程程序的时候很容易遇到两个问题: 死锁了,不知道什么原因导致数据不一致,多个线程没保护数据 那么有没有工具来检测这两种场景呢 答案是有的,我们可以使用v…

【Qt】常用控件QProgreeBar

常用控件QProgreeBar 使用QProgressBar表示一个进度条!!! QProgressBar的核心属性 属性说明 minimum 进度条最⼩值 maximum 进度条最⼤值 value 进度条当前值 alignment ⽂本在进度条中的对⻬⽅式. Qt::AlignLeft : 左对⻬Qt::Align…

Unity(2022.3.38LTS) - 性能分析器

目录 一. 简介 二. 打开分析器 1. 打开 2.在目标平台上分析应用程序 三. 分析分析器 四. 模块详细介绍 1.Asset Loading Profiler 模块 2.Audio Profiler 模块 3.CPU Usage Profiler 模块 4.File Access Profiler 模块 5.Global Illumination Profiler 模块 6.GPU …

多线程任务中设置MDC的实践

多线程任务中设置MDC的实践 引言 在当今的软件开发中,日志记录是不可或缺的一部分。日志不仅仅是调试工具,还在系统监控、性能分析、故障排除中扮演着关键角色。尤其在多线程环境中,日志的上下文信息一致性至关重要。MDC(Mapped…

WPF 动画 插值动画、关键帧动画、路径动画

WPF动画,分为三种:插值动画、关键帧动画、路径动画 2.1 插值动画:     1)定义:插值动画是指,属性值从某一个值,经过一段时间后,连续变化值另一个值的动画。         例…

订单到期关闭如何实现?

目录 一、被动关闭 二、定时任务 三、JDK自带的DelayQueue 四、Netty的时间轮 五、Kafka的时间轮 六、RocketMQ延迟消息 七、RabbitMQ死信队列 八、RabbitMQ插件 九、Redis过期监听 十、Redis的Zset 十一、Redisson 在电商、支付等系统中,一般都是先创建…

win/mac数字资产管理软件Adobe Bridge (BR)软件下载安装

目录 一、Adobe BR软件介绍 1.1 软件概述 1.2 主要功能 1.3 系统要求 二、Adobe BR安装步骤 2.1 下载软件 2.2 安装前准备 2.3 安装过程 三、Adobe BR使用教程 3.1 基础操作 3.1.1 浏览与预览 3.1.2 搜索与筛选 3.1.3 批量操作 3.2 进阶功能 3.2.1 元数据管理 …

鸿蒙OS高级应用开发例题

44项目需要同时进行应用和元服务的开发,并针对当前项目工程中的代码可以分别构建出应用和元服务的包,如何在DevEco Studio中设置不同的构建配置,达成这个目的 A. 在模块级别buld-pronlejson5定义两个target;将两个target的bundleType分别设置…

8.20模拟赛题解

简单点评一下 整体上来看 ,A题拿满分的同学可能占一半吧 ,这个数据其实是不太理想的 ,说明同学们对于思维模拟题还是不熟练,没抓住题目要分析的本质。 B题显然是保证有解的,有解的情况下问最优解,说明翻到满…

动力电池系统面向开发的测试——电池阻抗特性测试(下)

接动力电池系统面向开发的测试——开路电压测试(上)本文主要围绕BMS设计中的等效电路模型第二大动态特性参数——阻抗特性及测试内容来展开分享。 阻抗特性测试方法: 方案1:直流脉冲测试 前面在分享功率评估内容的时候&#xf…

【正点原子K210连载】第三十二章 音频FFT实验 摘自【正点原子】DNK210使用指南-CanMV版指南

第三十二章 音频FFT实验 本章将介绍CanMV下FFT的应用,通过将时域采集到的音频数据通过FFT为频域。通过本章的学习,读者将学习到CanMV下控制FFT加速器进行FFT的使用。 本章分为如下几个小节: 32.1 maix.FFT模块介绍 32.2 硬件设计 32.3 程序设…

How can OpenAI Gym‘s visualizations work within Docker?

题意:OpenAI Gym 的可视化功能如何在 Docker 中运行? 问题背景: Id like to get OpenAI Gym working with the rendered OpenGL visualizations within a docker container. 我想在 Docker 容器中让 OpenAI Gym 与渲染的 OpenGL 可视化一起…

数据通信基础

信道特性 信道带宽 W 模拟信道:WF max - F min (信道最大频率减去最小频率,单位Hz) 数字信道:数字信道是离散信道,带宽为信道能够达到的最大数据传输速率,单位bit/s 奈奎斯定理(理…

IOy系列BL196MQTT远程IO模块智能农业灌溉水质监测

随着农业科技的进步和智能农业的发展,传统的灌溉和水质管理方式正逐渐被更为高效和智能的解决方案所取代。在智能农业系统中,水质监测作为灌溉管理的关键环节,对保障作物健康和提高水资源利用效率具有重要作用。 IOy系列BL196 MQTT远程IO模块…