RISC-V IDE MRS2进阶分享(三):MRS语言服务器

RISC-V IDE MRS2进阶分享(三):MRS语言服务器

MounRiver Studio Ⅱ(MRS2)的语言服务器是基于clangd的改进版本,可为 C、C++等语言开发提供实时的语法分析、智能补全、代码导航、错误诊断、代码重构等功能。下面以沁恒的CH32V317模板工程结合实际开发时的常见场景,分享MRS2语言服务器的功能。

  1. 代码智能补全:超越文本匹配的语义理解
  • 上下文感知补全

MRS2支持对变量、函数、宏定义等符号进行键入时自动补全,补全建议不仅包含符号名称,还提供类型信息和优先级排序。只要开始输入关键字、变量名或函数名,MRS2便会提供一系列匹配的建议供你选择。

同时支持模糊输入,无视大小写,只需保证字符正确顺序即可轻松提供补全建议,提高输入时的自由度。

  • 头文件智能提示

智能提醒需要包含的头文件,一键即可轻松添加,免去手动写#include。

  1. 精准代码诊断:实时捕捉潜在问题
  • 编译级错误检查

MRS2能够实时监控代码,帮助开发者在编写代码时即时检测和报告语法错误和警告。一旦发现任何潜在问题,如缺失的分号、括号不匹配、函数声明不完整等,它会在编辑器中高亮显示可疑的代码段,帮助开发者迅速定位并解决问题。

除了语法错误外,MRS2还会给出潜在的代码问题警告(如冗余变量、未使用的函数等),帮助开发者提前发现代码中的潜在隐患。

  • Fix-it 自动修复

MRS2对可自动修复的问题提供快速修复建议。包括符号拼写错误、缺少分号、括号不匹配、类型不兼容等基础语法问题;提示删除冗余的未使用变量或函数等,只需将光标移至波浪线标记的错误位置,点击Quick Fix即可一键修复代码。

MRS2还能够识别代码中的点操作符(.)和箭头操作符(->),并完成两者的自动转换。

  1. 高效代码导航:秒级定位关键逻辑
  • 跨文件符号跳转

MRS2不仅能够快速跳转至代码的声明、定义和引用位置,而且具备实时更新的能力,确保即使文件经过修改,导航也不会跳转至已失效的位置。

通过"CTRL+点击"一个函数、变量或类的名称,符号变成带有下划线的高亮状态,即可快速跳转到其定义或声明位置。

不光如此,右键菜单中还有更多选项用于跳转:

Go to Definition:跳转到函数/变量定义(支持系统头文件)。

Go to Declaration:跳转到符号声明位置。

Go to Implementation:对接口类直接定位实现类(需索引支持)。

Go to References:跳转到函数引用。

  • 全局引用搜索

    MRS2支持查找某个符号的所有引用位置,右键菜单Find All References,即可在左边栏中列出符号在项目中的所有引用点。双击列表项,还能直接跳转到对应位置。

  • Peek页快速展示

MRS2提供了Peek功能,同样可以用于查看符号的定义、声明、引用等。

与直接跳转不同的是,Peek无需切换窗口,能够在不离开当前文件的情况下快速预览或跳转到代码。

Peek会在当前页面展开一个内联窗口,左侧显示要查看的代码,有多个结果时会在右侧列出所有相关位置。

在Peek窗口内滚动或点击右侧不同条目可切换查看不同位置。在窗口内直接修改代码,编辑内容会同步到原文件。

  • 文档即时查看

当鼠标悬停于一个符号上时,MRS2会使用悬浮框的形式提供符号的相关信息,包括符号的详细文档、类型签名、注释等等。

悬停在函数名上时,可以展示函数的签名、参数列表和返回值类型、函数相关注释和函数声明。

悬停在变量上时会展示变量的类型、定义、注释。悬停在宏上时还会展示出宏定义和其展开后的值。

  1. 安全重构工具:规模化代码改造

MRS2支持跨文件的多次全局重命名,在进行全局重命名时能够理解代码中的上下文和作用域,即使存在相同名称但作用域不同的局部变量,也能被准确地区分和重命名,而且无论涉及的文件数量多少,都能准确且一次性地完成所有相关标识符的更新。

只需要选中符号右键菜单点击Rename Symbol,在弹出框中输入新名字,敲一下Enter即可跨文件全局重命名符号。

除此之外,MRS还有重命名预览功能,在输入后按Shift+Enter,即可获得预览列表,所有即将被修改的符号都会清楚展示在列表中,更便于确认。点击Apply即可成功重命名,点击Discard也可轻松取消。

  1. 高级辅助功能:提升开发体验
  • 代码格式化

MRS2提供了代码格式化功能,帮助开发者轻松修正代码的缩进、换行以及重新排列注释,只需在菜单栏Edit->Code Format配置好自己的个性化格式化参数,可以选择内置格式模板,或点击New创建新的格式模板。点击Apply生效。

在代码编辑窗口右键菜单点击Format Document可通篇格式化,选中部分代码,右键菜单点击Format Seletion可对选中部分代码格式化。

在目录树中选中工程或文件夹,右键菜单还可进行批量格式化。

总的来说,MRS2的语言服务器提供了丰富的辅助功能,减少了开发过程中的重复性工作,让开发者能够更专注于解决核心问题,为编程带来更流畅的体验。

MRS2最新版本可通过官方网站https://www.mounriver.com/进行免费下载。

相关推荐
神奇霸王龙8 小时前
Cursor 3 + Claude Opus 4.8 屠榜:5 编程基座 IDE 卡位
ide·人工智能·ai·aigc·agent·ai编程·ai写作
Tronlong创龙9 小时前
告别系统崩溃!ARM工控机 + OverlayFS,系统一键还原
嵌入式开发·硬件开发·工业控制·工业开发板
DevHub9 小时前
CANopen 教程:STM32 实现 CANopen 从站,3 个回调替代手写对象字典
c语言·驱动开发·stm32·单片机·嵌入式硬件·mcu
亿道电子Emdoor14 小时前
【Arm】如何高效实现2兆字节对齐
arm开发·单片机·mcu
ShineWinsu16 小时前
对于TRAE中配置Qt的解析
开发语言·c++·ide·vscode·qt·ai·trae
2501_9159184117 小时前
Swift IDE 有哪些?按平台和需求选择Swift 开发工具
ide·vscode·ios·objective-c·个人开发·swift·敏捷流程
俊基科技17 小时前
AU-48 双麦多功能语音处理模组让每一句话都清晰抵达 —— 一颗 23×20mm 小芯片,重新定义“听得清“
嵌入式开发·硬件开发·ai降噪·回声消除·拾音降噪
HySpark17 小时前
语音分段策略优化实践:如何解决错误分段引发的级联误差
ide·macos·语音识别·xcode·熙瑾会悟
wuyk5552 天前
《WiFi 嵌入式物联网开发全套实战》| 第01章 WiFi整体架构详解:BSS/ESS/AP/STA模式彻底区分
开发语言·stm32·单片机·嵌入式硬件·mcu·物联网·51单片机
thinking_talk2 天前
换一个 AI IDE,过去的数据还能继续用吗?
ide·ai ide·数据复用