Keyboard macro extension for Atom vim-mode and vim-mode-plus.
q a-z
start recording
q
stop recording
@ a-z
execute macro
before load macros from file, activate this package(ex:
q q q
)
License: MIT License
Keyboard macro extension for Atom vim-mode and vim-mode-plus.
q a-z
start recording
q
stop recording
@ a-z
execute macro
before load macros from file, activate this package(ex:
q q q
)
Need to add hotkey to end recording macro when in insert mode (article link)
[Enter steps to reproduce:]
Atom: 1.16.0 x64
Electron: 1.3.13
OS: Mac OS X 10.12.4
Thrown From: atom-keyboard-macros-vim package 0.1.6
Failed to activate the atom-keyboard-macros-vim package
At Cannot read property 'on' of undefined
TypeError: Cannot read property 'on' of undefined
at FindAndReplace.module.exports.FindAndReplace.getFindAndReplaceMethods (/packages/atom-keyboard-macros-vim/node_modules/atom-keyboard-macros/lib/find-and-replace.coffee:121:26)
at FindAndReplace.module.exports.FindAndReplace.activate (/packages/atom-keyboard-macros-vim/node_modules/atom-keyboard-macros/lib/find-and-replace.coffee:29:6)
at Object.activate (/packages/atom-keyboard-macros-vim/node_modules/atom-keyboard-macros/lib/atom-keyboard-macros.coffee:90:11)
at Object.activate (/packages/atom-keyboard-macros-vim/lib/atom-keyboard-macros-vim.coffee:25:24)
at Package.module.exports.Package.activateNow (/app.asar/src/package.js:218:19)
at /app.asar/src/package.js:876:25
at Function.module.exports.Emitter.simpleDispatch (/app.asar/node_modules/event-kit/lib/emitter.js:25:14)
at Emitter.module.exports.Emitter.emit (/app.asar/node_modules/event-kit/lib/emitter.js:129:28)
at CommandRegistry.module.exports.CommandRegistry.handleCommandEvent (/app.asar/src/command-registry.js:240:20)
at /app.asar/src/command-registry.js:3:59
at KeymapManager.module.exports.KeymapManager.dispatchCommandEvent (/app.asar/node_modules/atom-keymap/lib/keymap-manager.js:599:16)
at KeymapManager.module.exports.KeymapManager.handleKeyboardEvent (/app.asar/node_modules/atom-keymap/lib/keymap-manager.js:390:22)
at WindowEventHandler.module.exports.WindowEventHandler.handleDocumentKeyEvent (/app.asar/src/window-event-handler.js:106:36)
at /app.asar/src/window-event-handler.js:3:59)
-1:26.8.0 vim-mode-plus:activate-insert-mode (input.hidden-input)
98x -1:25.9.0 core:move-right (input.hidden-input)
2x -1:05.9.0 core:move-down (input.hidden-input)
-1:04.1.0 vim-mode-plus:activate-normal-mode (input.hidden-input)
5x -1:03.8.0 vim-mode-plus:move-down (input.hidden-input)
2x -1:01.9.0 vim-mode-plus:move-up (input.hidden-input)
-1:01.5.0 vim-mode-plus:move-right (input.hidden-input)
10x -1:01.2.0 vim-mode-plus:move-left (input.hidden-input)
-0:59.1.0 vim-mode-plus:insert-after (input.hidden-input)
23x -0:57.6.0 core:move-right (input.hidden-input)
-0:53.1.0 core:move-left (input.hidden-input)
77x -0:51.7.0 core:move-right (input.hidden-input)
-0:36.9.0 core:move-left (input.hidden-input)
-0:12.4.0 vim-mode-plus:activate-normal-mode (input.hidden-input)
-0:11.2.0 core:save (input.hidden-input)
5x -0:05.0 blur (input.hidden-input)
atom-keyboard-macros 0.9.2
atom-keyboard-macros-vim 0.1.6
busy-signal 1.3.0
contrast-ui 0.53.0
editorconfig 2.2.2
git-diff-details 1.4.0
git-projects 1.17.0
git-status 0.3.4
intentions 1.1.2
language-dotfiles 1.0.0
language-markdown 0.20.0
language-puppet 0.22.0
linter 2.1.2
linter-puppet-lint 0.8.2
linter-shellcheck 1.4.4
linter-ui-default 1.2.2
merge-conflicts 1.4.4
min-ui 0.0.4
vim-mode-plus 0.89.0
vim-mode-plus-ex-mode 0.9.0
Macros that use y and yy with or without <"> register assignments do not function on macro calls with @.
I typed "@" in vim mode, then switched to the settings page and this error appeared. It seems that it happens when you type "@" without the second letter and switch to settings.
Atom Version: 1.6.2
System: Windows 7
Thrown From: atom-keyboard-macros-vim package, v0.1.3
Uncaught TypeError: Cannot read property 'focus' of undefined
At /C:/Users/shi/.atom/packages/atom-keyboard-macros-vim/lib/atom-keyboard-macros-vim.coffee:79
TypeError: Cannot read property 'focus' of undefined
at Object.module.exports.AtomKeyboardMacrosVim.input (file:///C:/Users/shi/.atom/packages/atom-keyboard-macros-vim/lib/atom-keyboard-macros-vim.coffee:59:11)
at HiddenInputViewModel.module.exports.HiddenInputViewModel.cancel (file:///C:/Users/shi/.atom/packages/atom-keyboard-macros-vim/lib/hidden-input-view-model.coffee:18:17)
at hidden-input-view.HiddenInputView.cancel (file:///C:/Users/shi/.atom/packages/atom-keyboard-macros-vim/lib/hidden-input-view.coffee:43:16)
at CommandRegistry.module.exports.CommandRegistry.handleCommandEvent (C:\Users\shi\AppData\Local\atom\app-1.6.2\resources\app.asar\src\command-registry.js:260:29)
at C:\Users\shi\AppData\Local\atom\app-1.6.2\resources\app.asar\src\command-registry.js:3:61
at atom-pane.PaneElement.activeItemChanged (C:\Users\shi\AppData\Local\atom\app-1.6.2\resources\app.asar\src\pane-element.js:152:25)
at Function.module.exports.Emitter.simpleDispatch (C:\Users\shi\AppData\Local\atom\app-1.6.2\resources\app.asar\node_modules\event-kit\lib\emitter.js:25:14)
at Emitter.module.exports.Emitter.emit (C:\Users\shi\AppData\Local\atom\app-1.6.2\resources\app.asar\node_modules\event-kit\lib\emitter.js:125:28)
at Pane.module.exports.Pane.setActiveItem (C:\Users\shi\AppData\Local\atom\app-1.6.2\resources\app.asar\src\pane.js:255:22)
at Pane.module.exports.Pane.activateItem (C:\Users\shi\AppData\Local\atom\app-1.6.2\resources\app.asar\src\pane.js:336:21)
at atom-tabs.TabBarView.onMouseDown (C:\Users\shi\AppData\Local\atom\app-1.6.2\resources\app.asar\node_modules\tabs\lib\tab-bar-view.js:592:19)
-0:15.7.0 atom-keyboard-macros.user:@ (atom-text-editor.editor.vim-mode.normal-mode)
2x -0:15.7.0 blur (atom-text-editor.editor.vim-mode.normal-mode)
-0:15.4.0 atom-keyboard-macros-vim:execute_macro_vim (atom-text-editor.editor.vim-mode.normal-mode.is-focused)
4x -0:15.4.0 blur (atom-text-editor.editor.vim-mode.normal-mode.is-focused)
-0:15.2.0 atom-keyboard-macros.user:@ (atom-text-editor.editor.vim-mode.normal-mode)
2x -0:15.2.0 blur (atom-text-editor.editor.vim-mode.normal-mode)
-0:15 atom-keyboard-macros-vim:execute_macro_vim (atom-text-editor.editor.vim-mode.normal-mode.is-focused)
4x -0:15 blur (atom-text-editor.editor.vim-mode.normal-mode.is-focused)
-0:14.5.0 atom-keyboard-macros.user:@ (atom-text-editor.editor.vim-mode.normal-mode)
2x -0:14.5.0 blur (atom-text-editor.editor.vim-mode.normal-mode)
-0:14.4.0 atom-keyboard-macros-vim:execute_macro_vim (atom-text-editor.editor.vim-mode.normal-mode.is-focused)
4x -0:14.4.0 blur (atom-text-editor.editor.vim-mode.normal-mode.is-focused)
-0:14.2.0 atom-keyboard-macros.user:@ (atom-text-editor.editor.vim-mode.normal-mode)
2x -0:14.2.0 blur (atom-text-editor.editor.vim-mode.normal-mode)
-0:13.8.0 atom-keyboard-macros-vim:execute_macro_vim (atom-text-editor.editor.vim-mode.normal-mode.is-focused)
8x -0:13.8.0 blur (atom-text-editor.editor.vim-mode.normal-mode.is-focused)
{
"core": {
"disabledPackages": [
"atom-keyboard-macros"
],
"themes": [
"atom-dark-ui",
"solarized-light-syntax"
]
}
}
# User
atom-keyboard-macros-vim, v0.1.3
atom-ternjs, v0.13.2
emmet, v2.4.2
file-icons, v1.6.18
javascript-snippets, v1.2.1
line-ending-converter, v1.3.2
line-ending-selector-unix, v0.0.9
shadow, v0.1.0
Sublime-Style-Column-Selection, v1.5.1
vim-mode, v0.65.0
# Dev
No dev packages
Would be great if you can create a plugin for vim mode plus too. :)
Macros do not respect multiple playbacks accurately (ex. 2@f)
// Already formatted data here
{
a: "name 1",
b: {
x: 1,
y: 1
}
}, {
a: "name 2",
b: {
x: 2,
y: 2
}
}, {
// More data here ...
{ name: "name 1", location: { x: 1, y: 1 } },
{ name: "name 2", location: { x: 2, y: 2 } },
{
{ a: "name 1", name: { location: 1, y: 1 } }, {a:
"name 2",
b: {
x: 2,
y: 2
}
}, {
NOTE: If there's any more information I can provide please let me know and I will gather it for you.
If I press the return key in insert mode while recording a macro, the return key action is not performed when executing the macro. Since splitting lines is a frequent task when editing code, fixing this bug would make the macro functionality significantly more useful.
[Enter steps to reproduce:]
atom-keyboard-macro-vim
Toggle macro recording
Atom: 1.26.0 x64
Electron: 1.7.11
OS: Microsoft Windows 10 Home
Thrown From: atom-keyboard-macros-vim package 0.1.6
Uncaught TypeError: Cannot read property 'parentNode' of undefined
At C:\Users\user\.atom\packages\atom-keyboard-macros-vim\lib\hidden-input-view.coffee:16
TypeError: Cannot read property 'parentNode' of undefined
at HTMLDivElement.HiddenInputView.initialize (/packages/atom-keyboard-macros-vim/lib/hidden-input-view.coffee:16:23)
at /packages/atom-keyboard-macros-vim/lib/hidden-input-view-model.coffee:6:35)
at Object.waitInput (/packages/atom-keyboard-macros-vim/lib/atom-keyboard-macros-vim.coffee:55:14)
at Object.toggle_record_macro_vim (/packages/atom-keyboard-macros-vim/lib/atom-keyboard-macros-vim.coffee:47:8)
at /packages/atom-keyboard-macros-vim/lib/atom-keyboard-macros-vim.coffee:19:116)
at CommandRegistry.handleCommandEvent (~/AppData/Local/atom/app-1.26.0/resources/app/src/command-registry.js:384:49)
at CommandRegistry.dispatch (~/AppData/Local/atom/app-1.26.0/resources/app/src/command-registry.js:273:23)
at AtomEnvironment.dispatchApplicationMenuCommand (~/AppData/Local/atom/app-1.26.0/resources/app/src/atom-environment.js:1347:25)
at EventEmitter.outerCallback (~/AppData/Local/atom/app-1.26.0/resources/app/src/application-delegate.js:339:53)
at emitThree (events.js:116:13)
at EventEmitter.emit (events.js:197:7)
2x -9:24.8.0 atom-keyboard-macros-vim:toggle_record_macro_vim (ul.list-inline.tab-bar.inset-panel)
atom-keyboard-macros-vim 0.1.6
atom-material-syntax 1.0.8
ex-mode 0.18.0
relative-numbers 0.9.0
vim-mode-plus 1.32.0
vim-mode-plus-keymaps-for-surround 0.2.1
In vim, executing a macro like "@q" executes it once, but typing "10@q" would execute it 10 times. This does not seem to be the case here.
Shortcuts dont work, so:
NOTE I am using vim-mode-plus.
Atom Version: 1.7.2
System: Mac OS X 10.10.5
Thrown From: atom-keyboard-macros-vim package, v0.1.3
Uncaught TypeError: Cannot read property 'indexOf' of undefined
At /Users/anthony/.atom/packages/atom-keyboard-macros-vim/lib/atom-keyboard-macros-vim.coffee:102
TypeError: Cannot read property 'indexOf' of undefined
at Object.module.exports.AtomKeyboardMacrosVim.keyboardEventHandler (/Users/anthony/.atom/packages/atom-keyboard-macros-vim/lib/atom-keyboard-macros-vim.coffee:102:19)
-2:08.1.0 vim-mode-plus:move-to-previous-word (atom-text-editor.editor.vim-mode-plus.is-focused.normal-mode)
-2:07.6.0 vim-mode-plus:activate-insert-mode (atom-text-editor.editor.vim-mode-plus.is-focused.normal-mode)
2x -2:06.3.0 core:backspace (atom-text-editor.editor.vim-mode-plus.is-focused.insert-mode)
-1:59.7.0 vim-mode-plus:activate-normal-mode (atom-text-editor.editor.vim-mode-plus.is-focused.insert-mode)
2x -0:29.7.0 find-and-replace:toggle (atom-text-editor.editor.vim-mode-plus.normal-mode.is-focused)
-0:29.7.0 atom-keyboard-macros:start_kbd_macro (atom-text-editor.editor.vim-mode-plus.normal-mode.is-focused)
-0:26.3.0 vim-mode-plus:activate-insert-mode (atom-text-editor.editor.vim-mode-plus.normal-mode.is-focused)
-0:24.2.0 vim-mode-plus:activate-normal-mode (atom-text-editor.editor.vim-mode-plus.is-focused.insert-mode)
-0:19.8.0 atom-keyboard-macros:end_kbd_macro (atom-text-editor.editor.vim-mode-plus.is-focused.normal-mode)
-0:14 atom-keyboard-macros:call_last_kbd_macro (atom-text-editor.editor.vim-mode-plus.is-focused.normal-mode)
-0:14 vim-mode-plus:activate-insert-mode (atom-text-editor.editor.vim-mode-plus.is-focused.normal-mode)
-0:14 vim-mode-plus:activate-normal-mode (atom-text-editor.editor.vim-mode-plus.is-focused.insert-mode)
2x -0:07.2.0 find-and-replace:toggle (atom-text-editor.editor.vim-mode-plus.is-focused.normal-mode)
-0:07.2.0 atom-keyboard-macros-vim:toggle_record_macro_vim (atom-text-editor.editor.vim-mode-plus.is-focused.normal-mode)
8x -0:05.4.0 blur (atom-text-editor.editor.mini.is-focused)
-0:00.8.0 vim-mode-plus:move-to-beginning-of-line (atom-text-editor.editor.vim-mode-plus.normal-mode.is-focused)
{
"core": {
"disabledPackages": [
"vim-surround",
"ex-mode",
"vim-mode",
"vim-mode-visual-block",
"vim-shift-movers"
]
}
}
# User
atom-elixir, v0.1.4
atom-keyboard-macros, v0.8.4
atom-keyboard-macros-vim, v0.1.3
autocomplete-paths, v1.0.2
editorconfig, v1.3.0
javascript-snippets, v1.2.1
jscs-snippets, v0.1.0
keyboard-scroll, v0.4.0
language-elixir, v0.12.3
language-erlang, v3.0.0
language-puppet, v0.19.1
linter, v1.11.4
linter-jscs, v3.5.0
linter-puppet, v1.0.0
local-history, v3.2.3
minimap, v4.22.1
react, v0.15.0
symbols-tree-view, v0.12.0
vim-mode-plus, v0.34.0
# Dev
No dev packages
The mini panel that opens to allow you to input the register to store the macro in is not appearing. This prevents being able to store a macro or run it. This could be related to the removal of the shadow-dom in 1.13, but I haven't been able to find a clear link yet.
[Enter steps to reproduce:]
Atom: 1.14.4 x64
Electron: 1.3.13
OS: Mac OS X 10.12.3
Thrown From: atom-keyboard-macros-vim package 0.1.6
Uncaught Error: ENOENT: no such file or directory, mkdir 'undefined/macros/'
At fs.js:922
Error: ENOENT: no such file or directory, mkdir 'undefined/macros/'
at Error (native)
at Object.fs.mkdirSync (fs.js:922:18)
at /packages/atom-keyboard-macros-vim/node_modules/atom-keyboard-macros/lib/atom-keyboard-macros.coffee:229:12
at FSReqWrap.cb [as oncomplete] (fs.js:257:19)
-2:38.6.0 vim-mode-plus:move-down (input.hidden-input)
-2:30.8.0 settings-view:open (input.hidden-input)
-2:30.8.0 vim-mode:activate-normal-mode (atom-text-editor.editor.vim-mode-plus.is-focused.normal-mode.hyperclick)
6x -2:30.8.0 blur (input.hidden-input)
-2:43.7.0 linter:lint (atom-text-editor.editor.vim-mode-plus.is-focused.insert-mode)
11x -2:29.2.0 blur (div.panels-item)
-0:13.7.0 pane:show-item-1 (div.package-detail.panels-item)
2x -0:13.6.0 blur (div.package-detail.panels-item)
-0:13.5.0 linter:lint (atom-text-editor.editor.vim-mode-plus.normal-mode.hyperclick.is-focused)
-0:11.4.0 vim-mode-plus:move-up (input.hidden-input)
-0:10 command-palette:toggle (input.hidden-input)
3x -0:09.7.0 blur (input.hidden-input)
-0:06.9.0 core:confirm (input.hidden-input)
2x -0:06.9.0 blur (input.hidden-input)
-0:06.9.0 atom-keyboard-macros:save (input.hidden-input)
2x -0:00.2.0 blur (input.hidden-input)
advanced-open-file 0.16.5
atom-beautify 0.29.17
atom-debugger 0.1.6
atom-fuzzy-grep 0.15.0
atom-keyboard-macros-vim 0.1.6
atom-lupa 0.7.32
atom-typescript 10.1.14
atomic-chrome 0.3.0
autocomplete-emojis 2.5.0
autocomplete-paths 1.0.5
blame 0.10.2
bug-report 0.7.1
character-table 0.4.3
choose-pane 0.6.0
dash 1.7.1
docblockr 0.9.1
editorconfig 2.2.2
elm-format 2.1.0
elmjutsu 5.1.3
file-icons 2.0.16
git-plus 7.3.3
gitignore-snippets 0.2.5
grammar-token-limit 0.1.1
graphviz-preview 1.7.0
haskell-grammar 0.4.0
highlight-selected 0.12.0
html-to-elm 0.2.0
hyperclick 0.0.40
indentation-indicator 1.0.0
js-hyperclick 1.10.1
jumpy 3.1.3
keybinding-cheatsheet 0.1.1
language-babel 2.55.6
language-docker 1.1.7
language-dot 1.6.0
language-dots 0.0.4
language-elm 1.5.0
language-env 0.2.0
language-fish-shell 1.0.5
language-graphql 0.8.0
language-ini 1.18.0
language-latex 1.0.0
language-lua 0.9.11
language-nimrod 0.1.0
language-ocaml 1.1.2
language-rust 0.4.9
language-swift 0.5.0
language-thrift 1.0.2
linter 1.11.23
linter-alex 3.2.0
linter-coffeelint 1.2.1
linter-elm-make 0.22.5
linter-eslint 8.1.2
linter-flow 5.5.0
linter-js-yaml 1.2.7
linter-markdown 3.1.0
linter-rust 0.7.2
linter-shellcheck 1.4.3
linter-tslint 0.14.0
markdown-preview-plus 2.4.8
maximize-panes 0.2.0
merge-conflicts 1.4.4
narrow 0.31.1
nix 2.1.0
nuclide 0.208.0
nuclide-format-js 0.0.36
one-tab 0.10.0
open-on-bitbucket 0.4.0
open-this 0.4.0
package-cop 0.2.10
package-sync 1.1.0
pdf-view 0.55.0
pigments 0.39.0
platformio-ide-terminal 2.3.1
prettier-atom 0.19.0
project-folder 1.2.1
racer 0.20.0
regex-railroad-diagram 0.16.0
relative-numbers 0.7.1
rustfmt 0.1.3
set-syntax 0.3.2
sort-lines 0.14.0
split-diff 1.2.0
standardjs-snippets 2.5.0
tabs-to-spaces 1.0.3
tool-bar 1.0.1
vim-mode-plus 0.82.3
vim-mode-plus-ex-mode 0.9.0
vim-mode-plus-project-find-from-search 0.2.0
[Enter steps to reproduce:]
Atom: 1.36.0 x64
Electron: 2.0.18
OS: Mac OS X 10.14.3
Thrown From: atom-keyboard-macros-vim package 0.1.6
Failed to activate the atom-keyboard-macros-vim package
At Cannot read property 'on' of undefined
TypeError: Cannot read property 'on' of undefined
at FindAndReplace.module.exports.FindAndReplace.getFindAndReplaceMethods (/packages/atom-keyboard-macros-vim/node_modules/atom-keyboard-macros/lib/find-and-replace.coffee:121:27)
at FindAndReplace.module.exports.FindAndReplace.activate (/packages/atom-keyboard-macros-vim/node_modules/atom-keyboard-macros/lib/find-and-replace.coffee:29:6)
at Object.activate (/packages/atom-keyboard-macros-vim/node_modules/atom-keyboard-macros/lib/atom-keyboard-macros.coffee:90:11)
at Object.activate (/packages/atom-keyboard-macros-vim/lib/atom-keyboard-macros-vim.coffee:25:24)
at Package.activateNow (/Applications/Atom.app/Contents/Resources/app/static/<embedded>:11:3081678)
at activationCommandSubscriptions.add.commandRegistry.onWillDispatch.n (/Applications/Atom.app/Contents/Resources/app/static/<embedded>:14:1717)
at Function.simpleDispatch (/Applications/Atom.app/Contents/Resources/app/static/<embedded>:11:1172021)
at Emitter.emit (/Applications/Atom.app/Contents/Resources/app/static/<embedded>:11:1173462)
at CommandRegistry.handleCommandEvent (/Applications/Atom.app/Contents/Resources/app/static/<embedded>:11:349753)
at KeymapManager.t.exports.KeymapManager.dispatchCommandEvent (/Applications/Atom.app/Contents/Resources/app/static/<embedded>:11:1212648)
at KeymapManager.t.exports.KeymapManager.handleKeyboardEvent (/Applications/Atom.app/Contents/Resources/app/static/<embedded>:11:1208782)
at WindowEventHandler.handleDocumentKeyEvent (/Applications/Atom.app/Contents/Resources/app/static/<embedded>:11:285300)
-0:16.7.0 core:paste (input.hidden-input)
-0:11.3.0 editor:toggle-soft-wrap (input.hidden-input)
2x -0:07.0 find-and-replace:toggle (atom-text-editor.editor.vim-mode-plus.is-focused.visual-mode.characterwise.has-selection)
-0:07.0 atom-keyboard-macros-vim:toggle_record_macro_vim (input.hidden-input)
2x -0:00.2.0 blur (input.hidden-input)
80s-pastel-syntax 1.4.0
atom-clock 0.1.16
atom-dracula-syntax 2.3.0
atom-file-icons 0.6.0
atom-icons 0.2.2
atom-ide-ui 0.13.0
atom-keyboard-macros-vim 0.1.6
atom-material-syntax 1.0.8
atom-material-ui 2.1.3
base64 0.3.0
custom-app-icon 0.2.4
dracula-syntax 2.0.7
dracula-ui 0.6.0
file-type-icons 1.3.4
git-control 0.9.0
git-line 0.6.0
git-plus 8.6.2
git-status 0.3.4
git-time-machine 2.1.0
git-tools 0.5.0
icon-fonts 3.1.5
ide-json 0.2.1
json-colorer 1.0.0
open-git-modified-files 0.2.4
pretty-json 2.1.2
scroll-through-time 0.3.1
split-diff 1.4.0
vim-mode-plus 1.36.0
zentabs 0.8.9
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.