stdlib-js / stdlib-js/stdlib

[RFC]: add support for bookmarking directories in REPL

オープン
#2,062 コメント 1 件 リアクション 0 件 担当者 0 名 GitHub で見る
difficulty: 3 Enhancement JavaScript Needs Discussion priority: Normal REPL RFC
主要言語
JavaScript
スター
6k
フォーク
1.3k
平均マージ
1日 3時間
マージ済み PR(30日)
611

説明

### Description

This RFC proposes adding support in the REPL for bookmarking directories. Currently, in order to move around the file system, one needs to manually set the current working directory. This can be tedious, as one needs to manually type file paths, either relative or absolute, in order to walk to the desired directory.

This RFC proposes alleviating that tedium by adding support for "bookmarking" directories. E.g.,

```
In [1]: saveBookmark( 'home_dir', '/home/foo/bar/beep/boop' );

// ...

In [n]: loadBookmark( 'home_dir' );
```

We'd want to add a set of complementary APIs:

- `saveBookmark( name[, path ] )`: path default is the current working directory
- `loadBookmark( name )`: set current working directory to the path associated with `name`
- `deleteBookmark( name )`: delete the bookmark associated with `name`
- `renameBookmark( prev, name )`: renames a bookmark specified by `prev` to the name specified by `name`
- `isBookmark( [path] )`: returns a boolean indicating if a specified path has been bookmarked (if no path provided, uses the current working directory as the path)

By default, bookmarks would only last for the REPL session. To support persisting benchmarks and loading previously persisted benchmarks, we could add the following APIs:

- `loadBookmarks( file )`: loads bookmarks found in the file specified by `file`
- `saveBookmarks( file )`: saves the current set of bookmarks to a file specified by `file`
- `clearBookmarks()`: clears all current bookmarks in the current REPL session
- `bookmarks()`: list all bookmarks in the current REPL session

The ability to dynamically load and remove bookmarks would allow users to quickly switch development contexts, similar to how the REPL's concept of workspaces allows for moving being variable contexts.

### Related Issues

No.

### Questions

- Are there other APIs which would be useful for working with bookmarks?

### Other

- It is worth ensuring that the APIs and conventions are consistent with how the REPL's concept of workspace APIs are designed (e.g., argument order, naming conventions, etc).
- We should ensure that, similar to workspaces, TAB completions support bookmark names.

### Checklist

- [X] I have read and understood the [Code of Conduct](https://github.com/stdlib-js/stdlib/blob/develop/CODE_OF_CONDUCT.md).
- [X] Searched for existing issues and pull requests.
- [X] The issue name begins with `RFC:`.

コントリビューションガイド

コントリビューションガイドを開く

調査の方向性

No file or test is named in the issue. Start by locating the REPL workspace APIs and their TAB-completion handling, then compare their conventions with the proposed bookmark APIs. Done means the session and persistence operations, naming and argument conventions, and bookmark-name completion are defined consistently.

索引モデルが issue の本文から書いたものです。

評価

技術スタック
javascript
領域
cli
issue の種類
機能追加
難易度
5/5
見積もり時間
1週間以上
活発さ
停滞
明瞭さ
おおむね明確
初心者へのやさしさ
25/100

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。