forest.purejs.icu Open in urlscan Pro
2603:c020:400a:d000:dc2d:4f96:f5d5:8a00  Public Scan

URL: https://forest.purejs.icu/
Submission: On March 22 via api from US — Scanned from US

Form analysis 0 forms found in the DOM

Text Content

THE ROOT OF FOREST DE J.K. [JSR-0001]

 * Jinser Kafka

This is an root tree in my forest.

你好👋。


1. INTRO [JSR-0002]

 * March 21, 2024
 * Jinser Kafka

使用 flake-parts 配置 forester 开发 shell 的 flake.nix,主要内容在 ./nix 目录中。

{
  description = "Forest de J.K.";

  inputs = {
    nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
    forester = {
      url = "sourcehut:~jonsterling/ocaml-forester";
      inputs.nixpkgs.follows = "nixpkgs";
    };

    flake-parts.url = "github:hercules-ci/flake-parts";
    devshell.url = "github:numtide/devshell";
  };

  outputs = inputs@{ flake-parts, ... }:
    flake-parts.lib.mkFlake { inherit inputs; } {
      systems = [
        "x86_64-linux"
        "aarch64-linux"
        "aarch64-darwin"
        "x86_64-darwin"
      ];

      imports = [
        inputs.devshell.flakeModule

        ./nix
      ];
    };
}




这是一棵 idea 树:


2. 一些可能会做的想法 [IDEA-0001]

 * Jinser Kafka

在此树记录防止遗忘,也可能会保存一些进度或问题。

一些和 neovim 有关的,主要是插件什么的。


2.1. NVIM INSTANCE CHANGE DIFF [IDEA-0002]

 * March 22, 2024
 * Jinser Kafka

每次补全触发 auto-import,或者使用 code action 时候,经常不知道代码中具体发生了什么改变。

想要寻找或者编写一个这样的插件:在 lsp 触发类似 format,auto-import,code action,refactor
等事件的时候,instance 地提示一下什么代码被改变了。

应该可以有几种方式通知:inline diff,message,... 其他的还没想到。


2.2. NVIM LSP DEBUGGER [IDEA-0005]

 * March 22, 2024
 * Jinser Kafka

想要一个能显示 client <=> server 之间交互的 lsp debugger,可能会用 nui 来实现?

主要目的是帮助 HLS 开发和学习下 neovim 的插件怎么开发的。


2.3. NIX IN-REPL EDITOR [IDEA-0003]

 * March 22, 2024
 * Jinser Kafka

nix repl 和其他的 repl 一样,都会遇到一个问题:编辑跨行的代码的时候非常困难,我遇到的解决方案大概有这几种。

 1. 自动检查多行环境。比如 racket 的 repl
    会在按下回车键后,检查括号是否全部匹配,如果还有未匹配的括号,那么他会认为你还没有写完,回车键就会被处理为换行,而不是确认求值;类似的还有
    psql,会检查输入语句的末尾是否有分号 ;。这种方式适合容易判断是否截止的语言。
 2. 手动标记多行环境。典型的如 ghci,可以使用 :{ ... :} 来手动标记多行环境。
 3. 打开一个临时编辑器。一般是使用当前 shell 中的 $EDITOR 打开一个临时文件,在成功退出编辑器后(即 status =
    0),将临时文件中的代码复制到当前 repl 中。这样的好处是,编辑器是更适合多行编辑的工具,且能够利用编辑器的高亮,甚至是 LSP
    等检查工具。psql 的这个功能就很好用,通过输入 \e 指令来打开编辑器。顺便一提,在 shell (至少 fish)中,按 M-e
    也可以原地打开编辑器进行编辑操作。

据我自己所知道的,还没有找到 nix repl 有类似的能力。还没有寻找 issue 或 pr,也许已有人提过。

最好能支持和 psql 一样的 \e 指令,但是 nix repl 的 :e 已经是 Open package or function in $EDITOR
的意思了。

不知道 nix repl 是用什么语言实现的,要是有机会能提个 pr 就好了。


2.4. WI-FI FUCK EVERYBODY [IDEA-0004]

 * March 22, 2024
 * Jinser Kafka

暂时不说了...


TABLE OF CONTENTS

 * ■1. Intro
 * ■2. 一些可能会做的想法
   * ■2.1. Nvim instance change diff
   * ■2.2. Nvim lsp debugger
   * ■2.3. Nix in-repl editor
   * ■2.4. Wi-Fi fuck everybody