Giter Club home page Giter Club logo

ideavim-easymotion's Introduction

Hi there 👋

I maintain IdeaVim and develop IntelliJ IDEA.

My small projects:

My small contributions:

  • grammers: 2FA and photos loading for Telegram API library in rust.

ideavim-easymotion's People

Contributors

alexpl292 avatar dependabot[bot] avatar lippfi avatar renovate-bot avatar sweetliquid avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

ideavim-easymotion's Issues

what's the default leader key?

hi, I am new to easymotion, I never used it before in vim, but in vscode, I happened found when I press space, I get options to jump to, I think the function is called easymotion, because when I press space there's a word EASYMOTION comes to the bottom line.

So I search for the plugin in jetbrains, I use vim plugin in jetbrains. I want the same trick in jetbrains.

I have IdeaVim, AceJump, IdeaVim-EasyMotion installed.

The problem is, after install your plugin, when press space, the behavior is different from vscode. I don't know how to use it.

So what's your IdeaVim-EasyMotion default leader key, readme doesn't say.

If you give more guidelines that will be appreciated.

The plugin makes IdeaVim unable to enter normal mode using ESC

I install this plugin and find that ESC for IdeaVim to switch from insert mode to normal mode doesn't work anymore after the installation. I have done some experiments. Every time I disable this plugin, IdeaVim's function resume, so I think it's this plugin's bug. I use IntelliJ IDEA 2021.3.3 2020.3.3 and IdeaVim 0.65.

acejump 3.7.1 and pycharm error

Describe the bug
After upgrading to 3.7.1, an error occurs when using the jump function, and the code cannot be modified unless restarted

To Reproduce
Steps to reproduce the behavior:

  1. enter <lead><lead><b>
  2. enter character jump to target
  3. See error

Screenshots
image

java.lang.AbstractMethodError: Receiver class org.jetbrains.plugins.extension.easymotion.StandardHandler$execute$1 does not define or inherit an implementation of the resolved method 'abstract void finished(java.lang.String, java.lang.String)' of interface org.acejump.session.AceJumpListener.
	at org.acejump.session.Session.dispose$acejump(Session.kt:252)
	at org.acejump.session.SessionManager.end(SessionManager.kt:40)
	at org.acejump.session.Session.end(Session.kt:226)
	at org.acejump.session.Session.updateSearch(Session.kt:128)
	at org.acejump.session.Session.access$updateSearch(Session.kt:32)
	at org.acejump.session.Session$1.execute(Session.kt:92)
	at org.acejump.input.EditorKeyListener.execute(EditorKeyListener.kt:19)
	at com.intellij.openapi.editor.actionSystem.TypedAction.lambda$actionPerformed$2(TypedAction.java:185)
	at com.intellij.reporting.FreezeLoggerImpl.runUnderPerformanceMonitor(FreezeLoggerImpl.java:28)
	at com.intellij.openapi.editor.actionSystem.TypedAction.lambda$actionPerformed$3(TypedAction.java:184)
	at com.intellij.util.SlowOperations.lambda$allowSlowOperations$0(SlowOperations.java:77)
	at com.intellij.util.SlowOperations.allowSlowOperations(SlowOperations.java:64)
	at com.intellij.util.SlowOperations.allowSlowOperations(SlowOperations.java:76)
	at com.intellij.openapi.editor.actionSystem.TypedAction.actionPerformed(TypedAction.java:184)
	at com.intellij.openapi.editor.impl.EditorImpl.processKeyTypedNormally(EditorImpl.java:1299)
	at com.intellij.openapi.editor.impl.EditorImpl.processKeyTyped(EditorImpl.java:1281)
	at com.intellij.openapi.editor.impl.EditorImpl.processKeyTyped(EditorImpl.java:3400)
	at com.intellij.openapi.editor.impl.EditorImpl$7.keyTyped(EditorImpl.java:1120)
	at java.desktop/java.awt.AWTEventMulticaster.keyTyped(AWTEventMulticaster.java:247)
	at java.desktop/java.awt.Component.processKeyEvent(Component.java:6607)
	at java.desktop/javax.swing.JComponent.processKeyEvent(JComponent.java:2852)
	at java.desktop/java.awt.Component.processEvent(Component.java:6429)
	at java.desktop/java.awt.Container.processEvent(Container.java:2263)
	at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:5027)
	at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2321)
	at java.desktop/java.awt.Component.dispatchEvent(Component.java:4859)
	at java.desktop/java.awt.KeyboardFocusManager.redispatchEvent(KeyboardFocusManager.java:1962)
	at java.desktop/java.awt.DefaultKeyboardFocusManager.dispatchKeyEvent(DefaultKeyboardFocusManager.java:879)
	at java.desktop/java.awt.DefaultKeyboardFocusManager.preDispatchKeyEvent(DefaultKeyboardFocusManager.java:1162)
	at java.desktop/java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(DefaultKeyboardFocusManager.java:1018)
	at java.desktop/java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFocusManager.java:844)
	at com.intellij.ide.IdeKeyboardFocusManager.dispatchEvent(IdeKeyboardFocusManager.java:42)
	at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:4908)
	at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2321)
	at java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2784)
	at java.desktop/java.awt.Component.dispatchEvent(Component.java:4859)
	at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:778)
	at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:727)
	at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721)
	at java.base/java.security.AccessController.doPrivileged(Native Method)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:95)
	at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:751)
	at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:749)
	at java.base/java.security.AccessController.doPrivileged(Native Method)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
	at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:748)
	at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.java:969)
	at com.intellij.ide.IdeEventQueue.dispatchKeyEvent(IdeEventQueue.java:893)
	at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:833)
	at com.intellij.ide.IdeEventQueue.lambda$dispatchEvent$8(IdeEventQueue.java:449)
	at com.intellij.openapi.progress.impl.CoreProgressManager.computePrioritized(CoreProgressManager.java:808)
	at com.intellij.ide.IdeEventQueue.lambda$dispatchEvent$9(IdeEventQueue.java:448)
	at com.intellij.openapi.application.impl.ApplicationImpl.runIntendedWriteActionOnCurrentThread(ApplicationImpl.java:781)
	at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:502)
	at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
	at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
	at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
	at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)

Desktop (please complete the following information):

  • OS: macos 15.6
  • pycharm 2021.1.1
  • AceJump 3.7.1

`easymotion-sl` can not work as expect after upgrading to 1.5

When I use easymotion-sl, I expect to search something in this line. This function works well in EasyMotion 1.4 & AceJump 3.6.3.

But when I upgrade to EasyMotion 1.5 & AceJump 3.7 a few days ago, this function can not work. easymotion-sl has the same behavior as easymotion-s, which will search the full screen text.

I think this shoud be a bug.

1.4:

1 4

1.5:

1 5

.ideavimrc related config:

; Enable Ideavim extensions
set easymotion
nmap <leader>s <Plug>(easymotion-s)
nmap f <Plug>(easymotion-sl)

Does not jump to occurrence if there is exactly 1 match

Idea-easymotion does not jump to the matched character even if it is the only match, you always have to press that extra key to jump to it which is redundant.
Here are my setting for this plugin.

let mapleader=" "
" easymotion mappings

let g:EasyMotion_do_mapping = 0
let g:EasyMotion_do_shade = 0
let g:EasyMotion_smartcase = 1
let g:EasyMotion_use_upper = 1
let g:EasyMotion_keys = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ;'

map , <Plug>(easymotion-prefix)

map t <Plug>(easymotion-bd-tl)
map T <Plug>(easymotion-bd-t)

map f <Plug>(easymotion-bd-fl)
map F <Plug>(easymotion-s)

map <Plug>(easymotion-prefix)n <plug>(easymotion-bd-n)

map <Plug>(easymotion-prefix)k <Plug>(easymotion-k)
map <Plug>(easymotion-prefix)j <Plug>(easymotion-j)

map <Plug>(easymotion-prefix)l <plug>(easymotion-bd-jk)

map  <Plug>(easymotion-prefix)w <Plug>(easymotion-bd-wl)
map  <Plug>(easymotion-prefix)W <Plug>(easymotion-bd-w)

Suddenly stopped working

I've been using this setup for nearly 2 years with no issues.
Today it stopped working for apparently no reason.
I have tried to re install the ide's. It actually stopped working on all, intelliJ, webstorm, pycharm. [latest stable version]
The basic ideavim commands work, but none easymotion work now.
LL w, k, l, s
and I use it A LOT.

I haven't yet detected or able to fix the issue.
Does anyone have an idea how to go about fixing this?

EDIT:
Adding the configuration manually does nothing as well.

ideavim doesn't work.

when I install acejump and ideaVIm-EasyMotion. after restart idea, ideavim doesn't work.

how does it work

Alex, could you describe more specific, how exactly configure and use your plugin?
I'm sorry, but I just don't understand what means
"Plug (easymotion-f) | f{char} + mapped to fn".
Is " Plug " a keymap and where should I set it?

Enable vim jump behavior with <C-o>/<C-i>

Hi,
It is possible to enable vim jump behavior with <C-o>/<C-i> to go back and forward to the previous position before jump? This means the plugin must save the position on vim jump list (:jumps command) before the motion. You can see this behavior in the original Vim EasyMotion plugin.

I did it some time ago with AceJumpLite plugin (compiled locally). It was something like that:

//...the code before jump
saveVimJump();
//... more stuff

private void saveVimJump() {
  if (VimPlugin.isEnabled()) {
      VimPlugin.getMark().saveJumpLocation(editor);
  }
}

Thanks.

Not working `Ctrl + [` as `Esc`

Hello!

int main() {

    // here is a cursor.

    return 0;
}

If a cursor is there such that up example, and I press \\fthen, easymotion can't find any characters, so I have to Ctrl + [ or Esc.

However, Ctrl+[ doesn't work and , I have to press Esc in distance.

How should I do, or is it some problem in source code?

Thank you!

Instead of searching prints `symotion-s)`

For some reason instead of executing the command when I press f it simply executes literaly (esymotion-s) which ends up moving to the end of the word and printing symotion-s)

I enabled the plugin with set easymotion and added the binding from the example.

IJ version: 2022.1.3 Ultimate

All other plugins that do not require the <Plug> bindings work fine

Add easymotion's jump to jump list

I wonder if it can add Easymotion's jump to the vim jumplist, so I can use not only '. go back to last jump, but also <C-o> <C-i>.
It will be very helpful when editing multiple lines.

Region you jump over gets selected

When I jump from point A to point B, all the text between those two points gets selected. Then I need to hit Esc to unselect before I can go into insert mode to type something. I'm not sure if this is a bug or if there's an option to disable this.

Question related to "EasyMotion commands as an argument for 'd' or 'c' "

"(cursor)set easymotion"
First operation "dfo" is fine
But second operation "d<leader><leader>fmoa" doesn't work well. The string "set easym" is not deleted, but selected and The bottom right corner shows VIM in "d" status.

EasyMotion

My environment:
IntelliJ IDEA 2021.2.2
AceJump 3.8.3
IdeaVim 1.7.2
IdeaVim-EasyMotion 1.6

By the way ,when it works on
IntelliJ IDEA 2020.1
AceJump 3.6.3
the delete operation work fine

Disable smartcase?

Thanks for this plugin.

Is there a way to stop it highlighting jump targets that do not match the case of the search character I have entered? Currently, if I do <leader><leader>fr for example, it will show targets which are both r and R.

Include Manual Installation Instructions in Readme

Hi,

Would you be able to include the steps required to build the plugin from scratch from the command line? I tried ./gradlew buildPlugin, but I am missing the dependencies and I'm not familiar with the build process. The error is "Cannot use project ':acejump' as a plugin dependency. IntelliJ Plugin is not found."

Thanks.

Trouble building the project

Hi! I'm new to java development, and I was trying to peruse the code for learning purposes. I am having trouble building the project. The following are the errors I'm facing when I try to run the gradle build task.

image

If I had to guess, the issue might be related to the version of IdeaVim in the dependencies, but I'm very new to Java, Kotlin, and Gradle and I might be wrong.

Things I've tried till now:

  1. I noticed that there were 2 gradle versions listed in gradle.wrapper.properties and build.gradle. Though the error doesn't seem to do anything with gradle versions, I installed both of them and varied them, but both of them had the same errors as above.
  2. I tried multiple versions of IdeaVim plugins, and the farther I go back, I still see new errors similar to those above but for different functions.
    image

Any help related to the above would be appreciated! I'm just trying to find a way to build the project and see how the integration with AceJump plugin works so that I can build my own IdeaVim plugin that depends on AceJump as well. Thanks!

Still doesn't understand how it works

I've installed IdeaVim + AceJump + IdeaVim-EasyMotion, as requested in the Setup section of the Readme.

I have <leader> mapped to <space> ( let mapleader=' ' ). But when I press <space><space>f or <space><space>w nothing happens.

I have tried to map it to another key ( nmap \ <Plug>(easymotion-w) ), but still nothing happens.

Here is some lines from the output of my :map command:

    <Plug>(easymotion-e) * call org.jetbrains.plugins.StandardHandler
    <Plug>(easymotion-f) * call org.jetbrains.plugins.StandardHandler
    <Plug>(easymotion-w) * call org.jetbrains.plugins.StandardHandler
 n  \             <Plug>(easymotion-w)

How can I map this commands to any key?

marks appear slow and lag when jump

When using features like jump to lines or search to jump, marks appear slowly at the first time or stop using after a while. Also, there is lag after type letters to jump.

Using AceJump directly is not so slow and more smooth.

mapleader with comma doesn't work

I have let mapleader = ',' in my .ideavimrc, and it doesn't seem to be working with it.
When I use the default '', it works great.
Is this a bug, or am I missing something?

leader +w problem

image

when i input '<leader>' + w
I want to the RT, but it have r and t ,if i input r and t ,cursor go to the t position.

Jump to declaration

I would like to jump to declaration using IdeaVim-EasyMotion.
I have nmap f <Plug>(easymotion-bd-w) in my .ideavimrc but I couldn't find the way to specify a JumpMode. Is it possible?

Tags longer than necessary

I have used easymotion in vim for a long time, and I noticed that the shortcut tags in the ideavim-version are often longer than the original easymotion.
For example, in this xml file, the cursor is on line 12 and i trigger easymotion-bd-jk, the following tags are shown:
image

Compared to the same file, cursor position and command opened in vim with regular easymotion:
image

The original easymotion seems to allow navigation to closer by lines with one character, and only adds more characters the farther away you want to navigate. Is this something that would be possible for ideavim-easymotion as well?

Disabling default key mappings does not work

Hi! In my .ideavimrc I have these settings:

let mapleader=" "
set easymotion
let g:EasyMotion_do_mapping=0

" ...

nnoremap <silent> <Leader><Leader> :action GotoAction<CR>

and it does not work as expected. Despite the fact that I'm trying to disable easemotion's default bindings with let g:EasyMotion_do_mapping=0, it still overrides (and breaks) my <Leader><Leader mapping! 😞

Is this a bug or am I doing something wrong?

Easymotions not working in split-tab view

Hi AlexPL292,

Thank you for the amazing plugin to bring EasyMotion to IdeaVim. I have been loving it so far, however, I noticed that when I try to use the plugin after I split right with :vsp, and when I start EasyMotion sequence like <leader>w on the tab on right, the initial alphabet for the motion appear correctly, however, when I enter the sequence, I suddenly switch back to the other split. I am not sure if this issue is because of my own default keymaps, since I am currently using all the default keymaps provided by PyCharm.

I was not sure if this is normal or a known behavior (I could not find anything related to this in the issues on this repository), and that is why I am reaching out here.

Any help to try to help me figure out this issue with EasyMotion would be very much appreciated.

How to recreate issue: Open two files and split any one of them with :vsp. Once in the file on the right pane, try to use EasyMotions like <leader>w and then we suddenly switch back to the pane on the left.

Thanks for the help in advance :)

It doesn't work?!

I installed AceJump & IdeaVim-EasyMotion and added set easymotion to my ~/.ideavimrc,and then nothing happened. It just like normal AceJump。

Is there a way to just highlight the options in current view?

When press the <leader><leader>e/w in any position, it will list all the options although some of them (or most) are out of the view (such as the last line), which results in a waste of characters. most time we must press two characters to jump to the target. Is there a way to just list all the options in the current view?

disabling mappings

Hello

in vscode I have bdw mapped to space
and when it shows lets say HH when I press H then highlights all the Hs and then you type the second H and you move to that word.

Here the behavior is different.
first bdw doesnt work and when you have like HH you type the the first H it starts looking for words that start with h and highlight some words are somewhere in the file, the when you type H again it actually goes to where HH initially was.

im guessing is because <Plug>(easymotion-bd-w) mapped to bd-tn so I tried let g:EasyMotion_do_mapping = 0 but still not working.

whats the trick to disable the n here?

thanks

ideavim

let mapleader = ","
set easymotion
let g:EasyMotion_do_mapping = 0
imap jj <Esc>
map  <Space> <Plug>(easymotion-bd-w)

Suggestions missing sometimes

I have such mapping

map q <leader><leader>s

I have code like this, I'm on the first line and I want to the section coremltools
image
Then I press q and press letter c - everything fine
image
Then I press letter o and suddenly the suggestion on coremltools disappears and i can no longer to coremltools
image

It's hard to understand when and why exactly this happens, but it's reproducible so it's not a one time issue

Disable Text Selection

With any motion command, lls for example, the text between my original cursor position and the target gets automatically selected. Is there a way to disable this? I just want to jump, not always select text along the way.

easymotion-s2 repeats last command [bug]

First of all, thanks for the plugging!

When using (easymotion-s2) and move somewhere on the screen, the command following the motion, is executed 2 times instead of just 1. Example:

I have the cursor in []

H[e]llo world one two!

then use (easymotion-s2) + "or" to move to

Hello w[o]rld one two!

then press "dw" to delete "orld" but instead it deletes "orld one" giving:

Hello wtwo!

Similar behaviour with simple motions: If instead of "dw" I press "w" to move a word:

Hello w[o]rld one two! --> Hello world one [t]wo!

can Support Chinese

like easymotion-chs https://github.com/ZSaberLv0/vim-easymotion-chs

Here's a Chinese sentence.
众所周知,中文是没有空格的,要是能有一个插件能支持中文光标跳转就好了!

if you press easymotion-s "z"(The initials of a Chinese character) ,The cursor will jump to "周" “知” “中” “支” front of these characters

image

image

And
Chinese, unlike English, there are no spaces between his words. For example, Chinese "我喜欢你" in English is "i love you", in vim inside, "我喜欢 " is a word, but there are the three words in English and i love and you, so when you press "de","ce" in vim it's will delete the entire sentence, instead of deleting such as "我" or "喜欢" or "你", but English can do this , it can deleted "i" or "love" or "you", so can ideavim support Chinese phrase jump? Like the image below this?

image
image

do you use microsoft word? when you input chinese in microsoft word ,if you press "ctrl-" or "ctrl-" ,he will jump like vim "e" or "b",but he is support chinese jump
image
image

cursor bug

E.g:
image
There are U and HU.When I press H. There will be two U. Now I can only jump to the position of the first U.How do I jump to the second U?

How can I remap (easymotion-f)?

I'd like to remap f to run (easymotion-f) instead of using <leader><leader>f.

How can I do that?

I tried:

set easymotion
nmap f <Plug>(easymotion-f)

But that doesn't work.

possibility to implement vim sneak ?

vim easymotion is good at large-scale jump but sometimes I don't want to choose one among many options and just go to the first match.

In Vim I really like vim sneak plugin. Basically it just go to the first 2 character match. And moreover it's repeatable with ; and , !

Is it possible to implement it in ideavim easymotion ? Really interesting it would be !

Tks for this amazing plugin

Use EasyMotion commands as arguments not working as expected

Hey, awesome plugin! Thank you very much.

I think I might be doing something wrong with my mapping that's causing a bug.

Picture is worth 1,000 words

ios

I have these two EasyMotion mappings in my .ideavimrc:

" Jump to anywhere with only `f{char}{target}`
" `f<CR>` repeat last find motion.
nmap f <Plug>(easymotion-s)
" Bidirectional & within line 't' motion
omap t <Plug>(easymotion-bd-tl)

I expect than when I press df that then the yellow targets will show, I can type one, hit and then the text designated by my search will be deleted.

Instead, I have to press d<leader>f and then after I enter the destination of my target and press , everything between my cursor and the destination is modified.

Can you help me figure this out?

single leader mapping does not work for <Plug>(easymotion-s) command

With a .ideavimrc of:

" Use comma key as leader
let mapleader = ","

" Use easymotion
set easymotion
map <Leader> <Plug>(easymotion-prefix)

When I type ,w the easymotion plugin executes <Plug>(easymotion-w). But when I type ,s it does not execute <Plug>(easymotion-s). Oddly, ,,s does execute <Plug>(easymotion-s).

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.