Magic Racket 0.6.7
分类: 下载/工具 · 工具软件 | 来源: 点击进入 | 版本: 0.6.7 |
日期: 2025-06-30 | 人气: | 大小: |
标签: keybindings snippet REPL scheme lisp racket __ext_rkt drracket |
新的介绍内容:
Magic Racket:VS Code的最佳Racket扩展,支持LSP和REPL
Magic Racket是为VS Code开发的Racket扩展,旨在提供最佳的Racket编程体验。通过支持语言服务器协议(LSP),Magic Racket能够为用户提供包括跳转定义、悬停信息、代码格式化等高级功能,使其成为VS Code中最强大的Racket扩展。
安装设置
安装Magic Racket:从VS Code扩展市场或Open VSX Registry(如果使用VS Codium)安装。
确保raco在您的路径中:请查看故障排除部分。
安装racket-langserver:在终端中运行以下命令:
raco pkg install racket-langserver
或更新它:
raco pkg update racket-langserver
如果您不想使用语言服务器,可以在配置文件中设置
"magicRacket.languageServer.enabled": false
。但请注意,这样做将无法使用自动完成、格式化等“智能”功能。在WSL或无头Linux服务器上运行VSCode:请查看下面的故障排除部分。
功能概览
Magic Racket提供了以下功能:
- 支持Racket LSP:通过racket-langserver提供跳转定义、悬停信息、格式化等功能。
- 几乎完整的Racket语法支持:包括字节字符串、正则表达式、定义子句、向量等。
- 标准函数高亮:支持#lang racket中的所有标准函数高亮。
- 优化Racket编写体验:调整VS Code的多种设置,提供最佳的Racket编写体验。
同时,Magic Racket不会:
- 提供无用的代码片段。
- 为了色彩而进行无意义的颜色化。
- 尝试做所有事情。我们专注于LSP和其他包可以处理的内容。
LSP支持
Magic Racket现已支持racket-langserver,当前功能包括:
- 错误下划线
- 跳转定义
- 查找引用
- 悬停信息
我们正在努力提供更多详细信息,请持续关注!
语法高亮
下图展示了使用流行Racket VS Code扩展(左图)和Magic Racket(右图)对测试文件进行高亮的对比。
如图所示,Magic Racket力求正确和一致,并支持大多数语言功能。在许多方面,该扩展受到了DrRacket高亮的启发,但在某些方面,它旨在不那么简约。
REPL支持
您可以通过编辑器右上角的图标或VS Code的命令控制台加载和执行文件。按Cmd Shift P(Linux或Windows上为Ctrl Shift P)打开所有命令列表,然后通过输入搜索。Magic Racket的所有命令都以Racket:为前缀,以便更容易搜索。
在Magic Racket中,每个文件都有自己的REPL,每次使用Racket: Load file in REPL命令时都会加载。您可以选择为Racket: Run file in terminal也模拟此行为,或者在单一输出终端中运行所有文件。
Magic Racket添加的命令列表:
- Racket: Execute selection in REPL:在REPL中执行选定内容。也可以通过右键点击选定内容或使用快捷键Alt Enter执行。
- Racket: Load file in REPL:将当前文件加载到其REPL中,如果文件尚未有REPL,则创建一个新REPL。在右上角有其图标。
- Racket: Run file in terminal:在终端中运行整个文件,脱离REPL环境。根据用户设置,终端将在所有文件之间共享(默认),或者属于文件本身。
- Racket: Open the REPL for the current file:显示当前文件所属的REPL,或者如果文件尚未有REPL,则打开一个新REPL。
- Racket: Show the output terminal for the current file:与上面的命令类似,此命令显示当前文件的输出终端。
您可以在设置中设置REPL和输出终端的名称。
次要QoL功能
这些功能虽然不是革命性的,但确实有助于提高体验:
- 您可以通过包含的代码片段lmb或快捷键Option \(Windows和Linux上为Alt \)编写λ(lambda)。
- VS Code正确识别Racket中的“单词”,意味着使用Option Left和Option Right(Windows和Linux上为Ctrl Left和Ctrl Right)在单词之间移动按预期工作,双击选择单词也是如此。
配置
Magic Racket的选项可以在VSCode首选项中的Magic Racket部分找到。
如果您想仅为Racket更改某些VSCode选项(例如,如果您不喜欢预定义的编辑器标尺),可以通过在settings.json中直接添加到[racket]部分来实现:
"[racket]": {
"editor.rulers": [],
// 一些进一步的Racket特定配置
}
故障排除
GTK和其他GUI依赖
如果您在Windows上使用Magic Racket,尤其是Docker或WSL下,您可能会遇到关于GTK或其他缺少动态库的错误。这是由langserver依赖GTK来正常运行引起的,请查看问题https://github.com/Eugleo/magic-racket/issues/51以获取解决方案。
在Linux上也可能遇到类似问题,尤其是在您的Racket安装通过Snap或类似风格的替代包装进行沙箱化时。请查看https://github.com/Eugleo/magic-racket/issues/109以获取更多信息。这些问题可能表明包装问题,因此您可能需要尝试不使用像Snap这样的沙箱层来安装Racket。
content-length头
在Linux和WSL上,有时会出现关于头部需要具有content-length属性的错误。有关修复方法,请查看问题https://github.com/Eugleo/magic-racket/issues/77。
正确设置raco
我们需要raco来安装语言服务器包。好消息是,raco在安装Racket时会自动安装。在MacOS上,它可以在/Applications/[Racket文件夹]/bin目录中找到,据说在Windows上,它直接在Racket安装目录中。
然而,在安装后,您的计算机并不知道raco命令在哪里,因此您需要执行以下任一操作:
(推荐)添加raco所在的目录(Unix的说明,以及Windows上的PowerShell类似操作)。
首先移动到raco所在的目录(例如使用cd),然后通过在raco命令前加上./(Unix)或.\(Windows)来运行它,如下所示:
./raco pkg update racket-langserver
或在Windows上:
.\raco pkg update racket-langserver
发布说明
请查看变更日志以获取最新更新的信息。
-
- Golang云原生架构师课程
- Go是一门并发支持、垃圾回收的编译型系统编程语言;本课程转载自哔哩哔哩:https://www.bilibili.com/video/BV1Mh411M7A
- 204次学习
-
- MySQL数据管理之备份恢复案例解析视频教程
- 《MySQL数据管理之备份恢复案例解析视频教程》MySQL是一个开放源码的小型关联式数据库管理系统,目前MySQL被广泛地应用在Internet上的中小型网站中。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。
- 160次学习
-
- MySQL索引优化解决方案
- 本套课程是根据MySQL索引的设计理念与数据结构、索引使用场景、索引分类、索引运用场景、索引性能分析、查询优化、MySQL索引的慢查询等组成,主要讲述了MySQL索引优化的解决方案,非常适合有MySQL使用基础或者有一定工作经验的同学。课程讲解了解决大数量查询慢的问题、如何编写一个高效的SQL、查询语句应该如何优化、索引的实现原理是什么、索引又应该如何优化...等诸多SQL索引优化的难点和面试点。
- 182次学习
-
- 极客学院Docker视频教程
- Docker是PaaS提供商dotCloud开源的一个基于LXC的高级容器引擎,源代码托管在Github上,基于go语言并遵从Apache2.0协议开源。Docker自2013年以来非常火热,无论是从github上的代码活跃度,还是各大厂商的支持,都使Docker成为了时下最受关注的技术,甚至微软都声称在下一代WindowsServer中集成对Docker的支持。所以我们收集了《极客学院Docke
- 243次学习
-
- Golang进阶实战编程
- 本课程是在《Go语言基础视频》基础之上录制的,是Go语言基础的后半部分。包括包的管理,IO操作,Go语言最大的亮点:高并发,goroutine,channel,反射等。本视频主要为了帮助Go语言的初学者,从零到一的快速入门。学完本套课程,可以学会如果通过包管理Go项目,并发模型,以及并发实现,channel通道如何传递数据,反射等等。
- 127次学习
-
- JavaScript极速入门
- 本套课程将帮助大家迅速掌握JavaScript这门高端的、动态的、弱类型编程语言。知识点简单明了,让你学习0压力,适合新手观看学习......
- 431次学习
-
- Golangmap实践及实现原理解析
- 2022-12-28 505浏览
-
- GoLand调式动态执行代码
- 2023-01-13 502浏览
-
- 试了下Golang实现try catch的方法
- 2022-12-27 502浏览
-
- 用Nginx反向代理部署go写的网站。
- 2023-01-17 502浏览
-
- MySQL主从切换的超详细步骤
- 2023-01-01 501浏览
-
- Mysql-普通索引的 change buffer
- 2023-01-25 501浏览