ep_vim 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md ADDED
@@ -0,0 +1,29 @@
1
+ # ep_vim
2
+
3
+ A vim-mode plugin for [Etherpad](https://etherpad.org/). Adds modal editing with normal, insert, and visual modes to the pad editor. Mostly vibe coded with [Claude Code](https://claude.ai/claude-code).
4
+
5
+ ## Features
6
+
7
+ - **Modal editing** — normal, insert, and visual (char + line) modes
8
+ - **Motions** — `h` `j` `k` `l`, `w` `b` `e`, `0` `$` `^`, `gg` `G`, `f`/`F`/`t`/`T` char search
9
+ - **Operators** — `d`, `c`, `y` with motion combinations (`dw`, `ce`, `y$`, etc.)
10
+ - **Line operations** — `dd`, `cc`, `yy`, `J` (join), `Y` (yank line)
11
+ - **Put** — `p` / `P` with linewise and characterwise register handling
12
+ - **Editing** — `x`, `r`, `s`, `S`, `C`, `o`, `O`
13
+ - **Marks** — `m{a-z}` to set, `'{a-z}` / `` `{a-z} `` to jump
14
+ - **Counts** — numeric prefixes work with motions and operators
15
+ - **Undo** — `u`
16
+ - **Toggle** — toolbar button to enable/disable vim mode, persisted in localStorage
17
+
18
+ ## Installation
19
+
20
+ Clone or symlink into your Etherpad plugins directory, then install:
21
+
22
+ ```
23
+ pnpm install ep_vim
24
+ ```
25
+
26
+
27
+ ## License
28
+
29
+ GPL-3.0
package/ep.json ADDED
@@ -0,0 +1,15 @@
1
+ {
2
+ "parts": [
3
+ {
4
+ "name": "main",
5
+ "client_hooks": {
6
+ "aceKeyEvent": "ep_vim/static/js/index",
7
+ "aceEditorCSS": "ep_vim/static/js/index",
8
+ "postToolbarInit": "ep_vim/static/js/index"
9
+ },
10
+ "hooks": {
11
+ "eejsBlock_editbarMenuLeft": "ep_vim/index"
12
+ }
13
+ }
14
+ ]
15
+ }
package/index.js ADDED
@@ -0,0 +1,8 @@
1
+ 'use strict';
2
+
3
+ const eejs = require('ep_etherpad-lite/node/eejs/');
4
+
5
+ exports.eejsBlock_editbarMenuLeft = (hook, args, cb) => {
6
+ args.content += eejs.require('ep_vim/templates/editbarButtons.ejs');
7
+ return cb();
8
+ };
package/package.json ADDED
@@ -0,0 +1,30 @@
1
+ {
2
+ "name": "ep_vim",
3
+ "version": "0.1.0",
4
+ "description": "Vim-mode plugin for Etherpad with modal editing, motions, and operators",
5
+ "author": {
6
+ "name": "Seth Rothschild",
7
+ "email": "seth.j.rothschild@gmail.com"
8
+ },
9
+ "keywords": [
10
+ "etherpad",
11
+ "plugin",
12
+ "ep",
13
+ "vim"
14
+ ],
15
+ "license": "GPL-3.0",
16
+ "repository": {
17
+ "type": "git",
18
+ "url": "https://github.com/Seth-Rothschild/ep_vim.git"
19
+ },
20
+ "bugs": {
21
+ "url": "https://github.com/Seth-Rothschild/ep_vim/issues"
22
+ },
23
+ "homepage": "https://github.com/Seth-Rothschild/ep_vim",
24
+ "peerDependencies": {
25
+ "ep_etherpad-lite": ">=1.8.6"
26
+ },
27
+ "engines": {
28
+ "node": ">=20.0.0"
29
+ }
30
+ }
@@ -0,0 +1,11 @@
1
+ body.vim-insert-mode {
2
+ }
3
+
4
+ .vim-empty-line-cursor {
5
+ caret-color: transparent;
6
+ }
7
+
8
+ .vim-empty-line-cursor::before {
9
+ content: '\00a0';
10
+ background: Highlight;
11
+ }