{"_id":"@codingame/monaco-emacs","_rev":"5-23e8225f51056881d4f7122a2111de31","name":"@codingame/monaco-emacs","dist-tags":{"latest":"0.2.3"},"versions":{"0.2.2":{"name":"@codingame/monaco-emacs","version":"0.2.2","keywords":[],"author":{"url":"http://bitwiser.in/","name":"Brijesh Bittu","email":"brijesh@bitwiser.in"},"license":"MIT","_id":"@codingame/monaco-emacs@0.2.2","maintainers":[{"name":"nantoniazzi","email":"nicolas@codingame.com"},{"name":"samuel.olivier","email":"samuel.olivier@codingame.com"},{"name":"maximecg","email":"maxime@codingame.com"},{"name":"beli4l","email":"vetter.valentin@gmail.com"},{"name":"fredtreg","email":"frederic.tregon@codingame.com"},{"name":"nonofr","email":"loic@codingame.com"}],"dist":{"shasum":"ff42d21db9a47081b72b8d69b9db381f94528b63","tarball":"https://registry.npmjs.org/@codingame/monaco-emacs/-/monaco-emacs-0.2.2.tgz","fileCount":18,"integrity":"sha512-0ni0yumohswMPQze17GckwBMx+16M6tdWfKlXsga2CsQwpaR9B5tfCGFg8u5zpRXrdQeXT4glP+Qmbw5wIc6qg==","signatures":[{"sig":"MEYCIQC2VPvf8WOqxiiQVZlzGArKNrje4qqNYjS7hoi2E8FvYgIhAMoYVNGfCUL9v4zVdPsJp8Atd/79mDYvlp9r58eCOtQW","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":93819,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiE3CmACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpH5g/+IsjgZhY8VdWvVU6UM1I37eRLgDAB4OP19Kqo2qcf8VhcdbAo\r\n+Hj3Wy+EPqJSS1fqxhBk3vuRPqreZMH7UVrNum1OBJW2p1AhoK2FDPbVtQb9\r\nYU1+Up5MOMcGEhfMuEl1Zo5ZUxh4dkVWryZqCW8D4SzlzxNYnpwiLuBDZN6x\r\nT8F0dq3AQjwq4tJeh2VGtTaibggZHtBQFt7nwG6qAP5Un2wlSLwyNnESVR8s\r\neCtuKIZUZV20QwYyyAGjvF35aAq8P+vcUnFucA61flYIQMcMxxu89YUaHu6i\r\naQvWimvrdYmFMpPoin4WNetKCPVfqcyI9F321l4/OHcDKpILO3WNflF3vh+4\r\nEeD4s96CuiVHxf0LM5y/bs/baafjX5KqYHIJGesqh+mhQOZE0Gc2wGSkKBA4\r\nKrRse/9gECgz1A/M70MhI1jWv2ZaE9FapaQF4hGH3dra+whjncVStSCnq4E0\r\nkz3pWrkqZhZ5VwByirCIM+WtLnnKuAibrkl1Z70BwdXv+6Aze7bPhD2ZMNX/\r\n0KjtyH31ED3JZiJ48Z3H0IKsboiP8FEDXcUh8Ieo0HrA+Yvg8+Jw8uXqwk8n\r\n2W0dwSFbT6SMzF43uA4F20TIHB9e/b03wS840cBiJUjzo7tfSaTkIafUOJje\r\nLw/APpuZ4pZGuGafZwa8VHZiTg8U57ivCYs=\r\n=WC1f\r\n-----END PGP SIGNATURE-----\r\n"},"main":"./lib/index.js","gitHead":"a606791cc04f295df23cec93b9c4a5809db584bd","scripts":{"dist":"webpack --mode production && rm -rf dist/lib","test":"echo \"Error: no test specified\" && exit 0","build":"npm run clean && tsc && npm run dist","clean":"rm -rf lib dist","start":"webpack-dev-server --mode development --host=0.0.0.0 --port=8282","prepublishOnly":"npm run build"},"typings":"./lib/index.d.ts","_npmUser":{"name":"samuel.olivier","email":"samuel.olivier@codingame.com"},"_npmVersion":"6.14.16","description":"Emacs keybindings for monaco-editor","directories":{},"_nodeVersion":"16.14.0","dependencies":{"lodash.throttle":"^4.1.1","lodash.kebabcase":"^4.1.1"},"_hasShrinkwrap":false,"devDependencies":{"webpack":"5.69.1","ts-loader":"9.2.6","css-loader":"6.6.0","typescript":"4.5.5","@types/node":"17.0.18","file-loader":"6.2.0","webpack-cli":"4.9.2","style-loader":"3.3.1","monaco-editor":"0.32.1","webpack-dev-server":"4.7.4","html-webpack-plugin":"5.5.0","@types/lodash.throttle":"4.1.6","@types/lodash.kebabcase":"4.1.6","monaco-editor-webpack-plugin":"7.0.1"},"peerDependencies":{"monaco-editor":">=0.31"},"_npmOperationalInternal":{"tmp":"tmp/monaco-emacs_0.2.2_1645441190617_0.5138052576117427","host":"s3://npm-registry-packages"}},"0.2.3":{"name":"@codingame/monaco-emacs","version":"0.2.3","keywords":[],"author":{"url":"http://bitwiser.in/","name":"Brijesh Bittu","email":"brijesh@bitwiser.in"},"license":"MIT","_id":"@codingame/monaco-emacs@0.2.3","maintainers":[{"name":"nantoniazzi","email":"nicolas@codingame.com"},{"name":"samuel.olivier","email":"samuel.olivier@codingame.com"},{"name":"maximecg","email":"maxime@codingame.com"},{"name":"beli4l","email":"vetter.valentin@gmail.com"},{"name":"fredtreg","email":"frederic.tregon@codingame.com"},{"name":"nonofr","email":"loic@codingame.com"}],"dist":{"shasum":"6ec4881e493e54930f76847fcdb6dc0d53201e8b","tarball":"https://registry.npmjs.org/@codingame/monaco-emacs/-/monaco-emacs-0.2.3.tgz","fileCount":18,"integrity":"sha512-1e3/p4WMd78WrFJVD4kmJPMh/ySIDR7EDwSq4dVK/xz8KzVnCzYP2cZw14uNLbo/iO85gbVA/9bQLNz40sGwGA==","signatures":[{"sig":"MEYCIQC3jrObfBiZVCn0J4HbFTfA0Q5x0pc6PCdnJ3envGK8ZQIhAJ0QyqEpJUJ42NptcRKxHesTG8zNrXcdu3XQ5bDSSvJx","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":93861,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiE7EYACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrNkRAAj5TFPc6GEM9orXnLHWTikvLpGpoYntPSsaK6ADOVvUVqkQiV\r\n1ItFExIl2BDtZKRSQv6xAlNoEaZuMXwoGFR73y3zaamqRSqSd1vJf0DvB1ba\r\nExj51p6VguUq+bxy1/yege3STab6VXivqWphxg1JStGm/p/dllJcryF3IZG+\r\nAQH1hglKy6OgDJtkKopv45n0EZQRevH2cbE5D4Qd0UzA/DOyZcXuJvRLC8v/\r\n0y45XB9qapmL/8R0kEsdXgkxn5Qb1Ghho2vpuKMuu0dNTSQZUVZLceT4EZRe\r\nzjJltP4EfbxkTZctXYhErHiw8MMUynYSjmp1KYGfgdfyU8mEE1A0kfilZNfb\r\n5n8E3zCAqx1YyAiXeWHa7Dv9KkQ1rVg7AOj7/V+oNu1vKjPWfxsZiKZgRZ2F\r\nLV0UdYej4btry3HUxvgXaqOSzyV0sg4UH51R9YSD1RONBfQymJ3hRK0I8MHN\r\nkDnrYBRMWxSjhwKiAs+8XzIp5Ukur4xpE0vYQjIvznPukfdP64Ss6eF4EyjI\r\ntoPWG1gihsn3m4onEbVKz0EnfHhB93vHkkBJcEjSfsLbWnXhemR3oWm/ll50\r\nE9nt2uAwYtZxwFrNkzs7bGJXPcbBhN/calD2uC70IXGetfxJK8NnnfR/RyS6\r\n70DooSIqK+AmJBXqdOwNaNsjQIP6lHAct+A=\r\n=vBqp\r\n-----END PGP SIGNATURE-----\r\n"},"main":"./lib/index.js","gitHead":"f2b6a2d628742031f784e90736d02ea52caa93f6","scripts":{"dist":"webpack --mode production && rm -rf dist/lib","test":"echo \"Error: no test specified\" && exit 0","build":"npm run clean && tsc && npm run dist","clean":"rm -rf lib dist","start":"webpack-dev-server --mode development --host=0.0.0.0 --port=8282","prepublishOnly":"npm run build"},"typings":"./lib/index.d.ts","_npmUser":{"name":"samuel.olivier","email":"samuel.olivier@codingame.com"},"_npmVersion":"6.14.16","description":"Emacs keybindings for monaco-editor","directories":{},"_nodeVersion":"16.14.0","dependencies":{"lodash.throttle":"^4.1.1","lodash.kebabcase":"^4.1.1"},"_hasShrinkwrap":false,"devDependencies":{"webpack":"5.69.1","ts-loader":"9.2.6","css-loader":"6.6.0","typescript":"4.5.5","@types/node":"17.0.18","file-loader":"6.2.0","webpack-cli":"4.9.2","style-loader":"3.3.1","monaco-editor":"0.32.1","webpack-dev-server":"4.7.4","html-webpack-plugin":"5.5.0","@types/lodash.throttle":"4.1.6","@types/lodash.kebabcase":"4.1.6","monaco-editor-webpack-plugin":"7.0.1"},"peerDependencies":{"monaco-editor":">=0.31"},"_npmOperationalInternal":{"tmp":"tmp/monaco-emacs_0.2.3_1645457688331_0.016550215708580396","host":"s3://npm-registry-packages"}}},"time":{"created":"2022-02-21T10:59:50.545Z","modified":"2025-07-15T14:00:07.459Z","0.2.2":"2022-02-21T10:59:50.771Z","0.2.3":"2022-02-21T15:34:48.506Z"},"author":{"url":"http://bitwiser.in/","name":"Brijesh Bittu","email":"brijesh@bitwiser.in"},"license":"MIT","keywords":[],"description":"Emacs keybindings for monaco-editor","maintainers":[{"email":"loic@codingame.com","name":"nonofr"},{"email":"samuel@coderpad.io","name":"samuel.olivier"},{"email":"nicolas@codingame.com","name":"nantoniazzi"},{"email":"maxime@codingame.com","name":"maximecg"},{"email":"developers@codingame.com","name":"codingame_team"}],"readme":"This is a fork of the repository [https://github.com/brijeshb42/monaco-emacs](https://github.com/brijeshb42/monaco-emacs)\n\n## monaco-emacs\n\n[![npm version](https://badge.fury.io/js/monaco-emacs.svg)](https://www.npmjs.com/package/@codingame/monaco-emacs)\n\nEmacs key bindings for monaco-editor. [Demo](https://editor.bitwiser.in).\n\n### Installation\n\n```sh\nnpm install @codingame/monaco-emacs\n```\n\n### Usage\n\n#### Webpack/Browserify\n\n```js\nimport * as monaco from 'monaco-editor';\nimport { EmacsExtension } from '@codingame/monaco-emacs';\n```\n\n#### Browser\n\n* Add this script in your html - `https://unpkg.com/@codingamemonaco-emacs/dist/monaco-emacs.js`.\n* The extension will be available as `MonacoEmacs` on `window`\n\n```js\nconst monaco = window.monaco;\nconst { EmacsExtension } = window.MonacoEmacs;\n```\n\n#### Code\n\n```js\nconst editorNode = document.getElementById('editor');\nconst statusNode = document.getElementById('statusbar');\n\nconst editor = monaco.editor.create(editor);\nconst emacsMode = new EmacsExtension(editor);\nemacsMode.onDidMarkChange((ev: boolean) => {\n  statusNode.textContent = ev ? 'Mark Set!' : 'Mark Unset';\n});\nemacsMode.onDidChangeKey((str) => {\n  statusNode.textContent = str;\n});\nemacsMode.start();\n\n// If you want to remove the attached bindings, call\nemacsMode.dispose();\n```\n\n#### Unregister default keys\n\n```js\nimport { unregisterKey } from '@codingame/monaco-emacs';\n\nunregisterKey('Tab');\n```\n\n#### Get all available mappings\n\n```js\nimport { getAllMappings } from '@codingame/monaco-emacs';\n\nconsole.log(getAllMappings());\n```\n\n#### AMD\n\nIf you are following the official guide and integrating the AMD version of `monaco-editor`, you can follow this -\n\n```html\n<!DOCTYPE html>\n<html>\n<head>\n    <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\" />\n    <meta http-equiv=\"Content-Type\" content=\"text/html;charset=utf-8\" >\n</head>\n<body>\n\n<div id=\"container\" style=\"width:800px;height:600px;border:1px solid grey\"></div>\n<div id=\"status\"></div>\n\n<script src=\"https://unpkg.com/monaco-editor/min/vs/loader.js\"></script>\n<script>\n  require.config({\n    paths: {\n      'vs': 'https://unpkg.com/monaco-editor/min/vs',\n      'monaco-emacs': 'https://unpkg.com/@codingame/monaco-emacs/dist/monaco-emacs',\n    }\n  });\n  require(['vs/editor/editor.main', 'monaco-emacs'], function(a, MonacoEmacs) {\n    var editor = monaco.editor.create(document.getElementById('container'), {\n      value: [\n        'function x() {',\n        '\\tconsole.log(\"Hello world!\");',\n        '}'\n      ].join('\\n'),\n      language: 'javascript'\n    });\n    var statusNode = document.getElementById('status');\n    var emacsMode = new MonacoEmacs.EmacsExtension(editor);\n    emacsMode.onDidMarkChange(function(ev) {\n      statusNode.textContent = ev ? 'Mark Set!' : 'Mark Unset';\n    });\n    emacsMode.onDidChangeKey(function(str) {\n      statusNode.textContent = str;\n    });\n    emacsMode.start();\n\n    // remove emacs mode by calling\n    // emacsMode.dispose();\n  });\n</script>\n</body>\n</html>\n```\n\nPlease [report](https://github.com/codingame/monaco-emacs/issues/new) any inconsistencies or missing key bindings.\n","readmeFilename":"README.md"}