Git Product home page Git Product logo

vim-highlighter's Introduction

Vim Highlighter

   ver 1.61.5

highlighter

Introduction

Highlighting keywords or lines can be useful when analyzing code, reviewing summaries, and quickly comparing spellings. This plugin provides easy commands and shortcuts for setting and deleting highlights, and additional features such as Move to Highlight, Save and Load, Find Pattern, and Customize Colors.

Contents

   Installation
   Key Map
   Jump to Highlight     One Time Highlight     Following Highlight      Find in Files Highlight     Positional Highlight
   Save & Load    
   Sync Mode
   Customizing Colors
   Configuration
  

  What's New
version feature key map
1.60 Sync Mode  across all tab-pages
1.58 Positional Highlight  associated with a buffer O
1.56 One Time Highlight  and Jump
1.52 Find window  key i for View O
1.50 Jump to Highlight O
1.38 Input  patterns in the command-line
1.35 Multifunction keys  for Find O

Installation

You can use your preferred plugin manager using the string 'azabiong/vim-highlighter'. For example:

vim-plug  .vim

  Plug 'azabiong/vim-highlighter'

lazy.nvim  .lua

  {
    "azabiong/vim-highlighter",
    init = function()
      -- settings
    end,
  },
  or,  Vim's built-in package feature:

Linux,   Mac Windows  
~/.vim ~/vimfiles

in the terminal:

cd ~/.vim && git clone --depth=1 https://github.com/azabiong/vim-highlighter.git pack/azabiong/start/vim-highlighter
cd ~/.vim && vim -u NONE -c "helptags pack/azabiong/start/vim-highlighter/doc" -c q

Key Map

The plugin uses the following default key mapping variables that can be easily assigned in the configuration file.

  .vim
  let HiSet   = 'f<CR>'
  let HiErase = 'f<BS>'
  let HiClear = 'f<C-L>'
  let HiFind  = 'f<Tab>'
  let HiSetSL = 't<CR>'
  .lua
 vim.cmd([[
   let HiSet   = 'f<CR>'
   let HiErase = 'f<BS>'
   let HiClear = 'f<C-L>'
   let HiFind  = 'f<Tab>'
   let HiSetSL = 't<CR>'
 ]])

Default key mappings: f Enter, f Backspace, f Ctrl+L, f Tab and t Enter

In normal mode, HiSet and HiErase keys set or erase highlighting of the word under the cursor. HiClear key clears all highlights.

key_map

Visual Selection

In visual mode, the highlight is selected as a partial pattern from the selection and applied to other words.

visual

You can also select an entire line and highlight it.

visual_line

Input

To set highlighting by entering a pattern:

 :Hi + pattern

Jump to Highlight

The plugin supports jumping to highlights using two sets of commands.

The Hi < and Hi > commands move the cursor back and forth to recently highlighted words or matching highlights at the cursor position.

The Hi { and Hi } commands, on the other hand, move the cursor to the nearest highlight, even if the pattern or type differs from the current selection.

jump

You can easily define key mappings for these commands. For example:

  nn <CR>   <Cmd>Hi><CR>
  nn g<CR>  <Cmd>Hi<<CR>
  nn ]<CR>  <Cmd>Hi}<CR>
  nn [<CR>  <Cmd>Hi{<CR>

Alternatively, you can map the n and N keys to HiSearch() function, which automatically selects the search type between native search and jump commands.  →  Configuration


One Time Highlight

When you only need one quick scan at the cursor position without setting the highlight, One Time Highlight can be useful.

When the cursor is over a word or visual selection that is not highlighted, pressing HiErase key sets One Time Highlight. The highlight remains on while the cursor is stationary, and automatically turns off after the cursor moves.

onetime

One Time Highlight displays matches in all windows on the current tab-page, and Jump commands Hi< and Hi> are also supported.


Following Highlight

When you need automatic matching based on cursor movement, Following Highlight mode can be useful.

Pressing HiSet key over One Time Highlight without moving the cursor sets Following Highlight mode. The highlight follows the cursor. Pressing HiEarase key turns off the mode.

following

Following Highlight displays matches in all windows on the current tab-page, and Jump commands Hi< and Hi> are also supported.

 cWORD  matching

Sometimes, when comparing variables consisting of letters and symbols, Vim's <cWORD> matching option can be useful.

cword

The following command toggles between the default <cword> and <cWORD> matching options:

 :Hi <>

Find in Files Highlight

If you have installed hi-performance search tools such as ag, rg, ack, sift, or grep, the plugin can run it when looking for symbols based on the current directory. And when the given expression is simple, the plugin can highlight patterns to make them easier to find.

HiFind key brings up the Find command prompt.

find

Search tool

If one of the tools listed above is in the $PATH, the plugin can run it using default options. You can also set your preferred search tool and options in the HiFindTool variable. For example:

  let HiFindTool = 'grep -H -EnrI --exclude-dir=.git'
 Tools
  let HiFindTool = 'ag --nocolor --noheading --column --nobreak'

  let HiFindTool = 'rg -H --color=never --no-heading --column --smart-case'

  let HiFindTool = 'ack -H --nocolor --noheading --column --smart-case'

  let HiFindTool = 'sift --no-color --line-number --column --binary-skip --git --smart-case'

  let HiFindTool = 'ggrep -H -EnrI --exclude-dir=.git'

  let HiFindTool = 'git grep -EnI --no-color --column'

Input

You can use general order of passing arguments to search tools:

 :Hi/Find  [options]  expression  [directories_or_files]

Tab key completion for --long-options, directory and file names is supported.

Expression

Among various regular expression options in Vim, the plugin uses "very magic" style syntax which uses the standard regex syntax with fewer escape sequences.

Examples

Searching for "red" or "blue":

 :Hi/Find  red|blue

Pattern with spaces:

 :Hi/Find  "pattern with spaces"

Class types or variables that start with an uppercase letter A or S:   Array, Set, String, Symbol...

 :Hi/Find  \b[AS]\w+
  Fixed string or Literal option

This option treats the input as a literal string, which is useful when searching for codes with symbols.

  ag,  rg,  grep,  git   -F --fixed-strings
  ack, sift              -Q --literal

Example:   searching for item[i+1].size() * 2

 :Hi/Find  -F  'item[i+1].size() * 2'

Visual selection

When searching for parts of a string in a file as is, visual selection would be useful.
After selecting the part, press HiFind key. The plugin will escape the pattern properly.

Find window

The following keys and functions are available in the Find window.

key function
Ctrl+C Stop searching
r Resize / Rotate
i View
s Split and View
Enter Jump to position

Navigation

Additional commands are supported to quickly navigate through search results.

Hi/next and Hi/previous commands jump directly to the location of the file.

Hi/older and Hi/newer commands navigate the search history.

It would be convenient to define key mappings for these commands for easy navigation. For example:

  nn -        <Cmd>Hi/next<CR>
  nn _        <Cmd>Hi/previous<CR>
  nn f<Left>  <Cmd>Hi/older<CR>
  nn f<Right> <Cmd>Hi/newer<CR>

🍏  Tip

Pressing the number 1 before the Hi/next command invokes a special function that jumps to the first item in the search results. For example, in the mapping above, entering 1 - will jump to the first item.


Positional Highlight

There is another type of highlight that is set in a specific location.

Unlike pattern-based highlighting, Positional Highlight is set to a specific position in the buffer. Thanks to new APIs in Vim and Neovim, it's similar to coloring over text with a highlighter. The position is updated when inserting or deleting the line above.

To set a Positional Highlight on a specific line, press the HiSetSL key in normal or visual mode.
Multiline highlighting is now automatically set to positional highlighting.

positional

Short Jump commands Hi{ and Hi} are also supported after setting.


Save & Load

Sometimes when you want to save highlights of the current window and reload them next time, you can use:

 :Hi save

and when loading:

 :Hi load

You can name the file when saving, and use tab-completion when loading. For example:

 :Hi save name
 :Hi load <Tab>

Highlight files are stored in a user configurable HiKeywords directory. To browse and manage files in the directory, you can open netrw using the command:

 :Hi ls
  relative path

You can also use relative paths. For example, to save and load a highlight file in the current directory:

 :Hi save ./name
 :Hi load ./<Tab>

Sync Mode

The plugin supports three highlight sync mode commands.

For each single window highlighting mode:

 :Hi =

To synchronize window highlighting on each tab-page:

 :Hi ==

When synchronizing window highlighting across all tab-pages:

 :Hi ===

The initial mode can be set using the HiSyncMode configuration variable.


Customizing Colors

The plugin provides two default color sets which are automatically loaded based on the current background mode.

default_light default_dark

You can use the :hi command to add, change, rearrange colors, and save them to the configuration file or color scheme.

 Example 1

This example adds two custom colors example in 256 or 24-bit colors mode.

If the plugin is installed and working, copy the following lines one by one, and then run it in the Vim's command window.

 :hi HiColor21 ctermfg=20  ctermbg=159 guifg=#0000df guibg=#afffff
 :hi HiColor22 ctermfg=228 ctermbg=129 guifg=#ffff87 guibg=#af00ff

Now, move the cursor to any word, and then input the number 21 and HiSet key. Does it work? if you press HiSet key again, the next HiColor22 will be set. You can try different values while seeing the results immediately.


 Example 2

The following command changes the color of Find in Files Highlight

 :hi HiFind ctermfg=52 ctermbg=182 guifg=#570707 guibg=#e7bfe7

Multiline highlight color numbers start at 80, HiColor80.


Configuration Examples

 Summary

  .vim
" Unicode
" set encoding=utf-8

" default key mappings
" let HiSet   = 'f<CR>'
" let HiErase = 'f<BS>'
" let HiClear = 'f<C-L>'
" let HiFind  = 'f<Tab>'
" let HiSetSL = 't<CR>'

" jump key mappings
nn <CR>     <Cmd>Hi><CR>
nn g<CR>    <Cmd>Hi<<CR>
nn ]<CR>    <Cmd>Hi}<CR>
nn [<CR>    <Cmd>Hi{<CR>

" find key mappings
nn -        <Cmd>Hi/next<CR>
nn _        <Cmd>Hi/previous<CR>
nn f<Left>  <Cmd>Hi/older<CR>
nn f<Right> <Cmd>Hi/newer<CR>

" sync mode
" let HiSyncMode = 1

" command abbreviations
ca HL Hi:load
ca HS Hi:save

" directory to store highlight files
" let HiKeywords = '~/.config/keywords'

" additional highlight colors
" hi HiColor21 ctermfg=52  ctermbg=181 guifg=#8f5f5f guibg=#d7cfbf cterm=bold gui=bold
" hi HiColor22 ctermfg=254 ctermbg=246 guifg=#e7efef guibg=#979797 cterm=bold gui=bold

  .lua
vim.cmd([[
  " default key mappings
  " let HiSet   = 'f<CR>'
  " let HiErase = 'f<BS>'
  " let HiClear = 'f<C-L>'
  " let HiFind  = 'f<Tab>'
  " let HiSetSL = 't<CR>'

  " jump key mappings
  nn <CR>     <Cmd>Hi><CR>
  nn g<CR>    <Cmd>Hi<<CR>
  nn ]<CR>    <Cmd>Hi}<CR>
  nn [<CR>    <Cmd>Hi{<CR>

  " find key mappings
  nn -        <Cmd>Hi/next<CR>
  nn _        <Cmd>Hi/previous<CR>
  nn f<Left>  <Cmd>Hi/older<CR>
  nn f<Right> <Cmd>Hi/newer<CR>

  " sync mode
  " let HiSyncMode = 1

  " directory to store highlight files
  " let HiKeywords = '~/.config/keywords'

  " additional highlight colors
  " hi HiColor21 ctermfg=52  ctermbg=181 guifg=#8f5f5f guibg=#d7cfbf cterm=bold gui=bold
  " hi HiColor22 ctermfg=254 ctermbg=246 guifg=#e7efef guibg=#979797 cterm=bold gui=bold
]])

 Color scheme

 
Highlight colors can also be included in a unified color scheme theme or saved as a separate file in your colors directory. ~/.vim/colors  or  ~/vimfiles/colors
 
For example, you can create a 'sample.vim' file in the colors directory, and store some colors:

hi HiColor21 ctermfg=52  ctermbg=181 guifg=#8f5f5f guibg=#d7cfbf cterm=bold gui=bold
hi HiColor22 ctermfg=254 ctermbg=246 guifg=#e7efef guibg=#979797 cterm=bold gui=bold

You can now load colors using the colorscheme command:

:colorscheme sample

 Multifunction keys for Find

 
The plugin's HiFind() function returns whether the Find window is visible. The idea is to define different actions for the keys depending on whether the Find window is displayed or not.

The following example defines the - _ and f- keys to execute the Hi command while the Find window is visible, otherwise execute the original function.

  .vim
" find key mappings
nn -   <Cmd>call <SID>HiOptional('next', '-')<CR>
nn _   <Cmd>call <SID>HiOptional('previous', '_')<CR>
nn f-  <Cmd>call <SID>HiOptional('close', 'f-')<CR>

function s:HiOptional(cmd, key)
  if HiFind()
    exe "Hi" a:cmd
  else
    exe "normal!" a:key
  endif
endfunction

  .lua
-- find key mappings
vim.cmd([[
  nn -   <Cmd>call v:lua.hi_optional('next', '-')<CR>
  nn _   <Cmd>call v:lua.hi_optional('previous', '_')<CR>
  nn f-  <Cmd>call v:lua.hi_optional('close', 'f-')<CR>
]])

function _G.hi_optional(cmd, key)
  if vim.fn.HiFind() == 1 then
    vim.cmd('Hi '.. cmd)
  else
    vim.cmd('normal! '.. key)
  end
end

 Jump to Highlight with n and N keys

 
You can also define n and N keys for both the native search and the plugin's jump commands.

  .vim
" jump key mappings
nn n  <Cmd>call HiSearch('n')<CR>
nn N  <Cmd>call HiSearch('N')<CR>

While hlsearch is displayed, the function executes the native search command assigned to each key, otherwise, it executes the Hi> or Hi< command. When switching from native search to jump mode, you can simply turn off hlsearch using the :noh command. For example:

nn <Esc>n  <Cmd>noh<CR>

  .lua
vim.cmd([[
  " jump key mappings
  nn n  <Cmd>call HiSearch('n')<CR>
  nn N  <Cmd>call HiSearch('N')<CR>

  " :noh commmand mapping, if there isn't
  nn <Esc>n  <Cmd>noh<CR>
]])

Help tags

For more information about commands and configurable options, please see:

 :h Hi

and

 :h Hi-Options

Issues

If you have any issues that need fixing, comments or new features you would like to add, please feel free to open an issue.


License

MIT

vim-highlighter's People

Contributors

azabiong avatar id01cg 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

vim-highlighter's Issues

Can't highlight a single character

vim-highlighter version: 0e19263
vim version: 8.2.4700

When entering to the visual mode and selecting a single character, :HiSet will generate empty pattern (i.e., \V) , causing Vim highlights all characters.

Feature request: highlight a large visual selection (possibly on multiple lines)

Hello, this plugin is very nice.
I use it to show some parts of code to students / coworkers.
One thing is missing IMHO: the possibility to highlight EXACTLY the current visual selection.

For example, for the given buffer content:

test0 test1 test2
test3 test4

If I select (in visual mode) the first test occurence of the first line, the command :<C-U>Hi +x<cr> will highlight the three occurences of test of the first line. I would like to highlight only the first occurence of the first line.

If I select (in visual mode) both lines, no single command will allow me to highlight both lines.

If I select (in visual mode) some part of both lines, no command will allow me to highlight this exact selection.

Maybe am I missing some magic trick ?

Thanks anyway for the nice plugin.

How to programmatically set HiSetSL and HiSet (visual mode)

I might have missed reading something in the help file.

But if vim.keymap.set('n', 'tt', ':Hi+<CR>') allows me to highlight a set (the equivalent of HiSet)

How do I set a keymap for HiSetSL?

Similarly, how do you programmatically set keymaps for HiSet and HiSetSL in visual select mode?

Is there a way to disable the command line abbreviation?

I didn't know this cabbrev existed but stumbled upon it by surprise. I wanted to search for the text HI so I typed /HI<CR>, but then all of a sudden it was searching for Hi instead, leaving me confused for a bit. I would rather avoid these kinds of surprises, if possible. (It's also weird that cabbrev applies to both : commands and / commands but that is a "problem" with neo/vim itself).

Anyway, thanks for the incredible plugin @azabiong!

install instructions

Looking forward to this one. But the install instructions seem to be cloning it in your own something or other? It asks for my name and password???

I have downloaded the zip file - if I do that it would be good to have a readme.txt to say where to put the plugin, autoload etc.

The install instructions should get me through to being able to go:
:h Highlighter

How to re-order colors

Hi,

It's not clear to me from reading the documentation how to re-order the colors. Can you please help me out?

2 Errors once loading hl file

Hi,
I've met these 2 errors once trying to load an existing hl file.

Error detected while processing BufWinEnter Autocommands for "*.abc"..function AbcSetKeymap[7]..highlighter#Command[42]..<SNR>225_LoadHighlight[12]..<SNR>225_SetHighlight[4]..<SNR>225_ClearPosHighlight:
line    2:
E968: Need at least one of 'id' or 'type'
Error detected while processing BufWinEnter Autocommands for "*.abc"..function AbcSetKeymap[7]..highlighter#Command[42]..<SNR>225_LoadHighlight[12]..<SNR>225_SetHighlight[11]..<SNR>225_UpdateSync:
line   10:
E684: List index out of range: 0


What I just set is like below in my vimrc

" =================== vim-highlighter
let HiSyncMode = 1
let HiBackup = 0


Could you please let me know how I can solve these 2 errors?
My vim is vim 9 and I'm using this on Ubuntu 20.04.

Unable to save when whitespaces in the path

I noticed that :HI save doesn't support filenames with whitespaces in the path, at least on Windows OS.
E.g. :Hi save "filename with empty spaces.hl"

I have tried to place the filename inside single quote, double quote, and escape space characters, but it didn't fix the issue.

HiSense('N') not working

line 2254 in autoload/highlighter.vim
let l:cmd = (a:key == 'n') ? '>' : '<'
is not working for me
but when replaced by
if a:key == 'n'
let l:cmd = '>'
else
let l:cmd = '<'
endif
it works, please help

[Question] How to navigate highlighters in current buffer?

I like this plugin very much! I got some trouble when I browse my code.
For example, I highlight some keyword and I want to find next keyword, I could use *, but I don't want change my current search pattern.In addition, some keyword was highlighted by visual select, so * was not work.
Just like this:
图片

The cursor was on imUserNameList, and I want to goto the next "imUserNameList" position off the screen.
So, how can I do?

Add highlight programmaticaly

First of all, thank you for the work on the plugin, it's very helpful. I have been checking the documentation, and I think what I am trying to do is not supported, but let me know if it is.

I would like to highlight some text programmatically when opening files. For example, using a command like :Hi + foo will highlight all the foo words in the document, without the cursor being on top of the the word at that moment, which seems to be the only way to achieve this currently.

[Question] The highlight's color was different from two window.

Thanks author very much for solute my problem.
Now I found same pattern of the same buffer was different with two window.
For example
图片
The keyword 'formDataEditor' was highligh in two window. but the color was different.
For Hi/Find formDataEditor multiple files, the color was same, but why Hi/Set word color was different for two window?

Maybe I need some config to keep color same?

Question: How to replace builtin n, N and * commands.

How do I replace vim's builtin commands such as *, n and N with this plugin.

let HiSet = ')'
nmap * )
nn n  <Cmd>Hi><CR>
nn N  <Cmd>Hi<<CR>
nn ( :nohl<CR>:Hi clear<CR>

So far I have the above bindings and it works great, except when I search with /something<cr>.

HiMapKeys doesnt seem to work

I am using Neovim v9.0.1

I am trying to unset all default keys.

In ~/.config/nvim/lua/core/plugins_config/vim-highlighter.lua, I have the following:

vim.cmd([[
  let HiMapKeys=0
]])

Hitting f and <CR> still triggers the default for HiSet. Am I missing something?

Clear all when cursor is not on any highlight

let HiErase = 'f<BS>'
Deletes highlight from word under cursor. IMO It would be cool if cursor is not on any highlighted word, then it would remove all highlights (HiClear). Not big deal, but It would save me having to map extra mapping for HiClear (all)

Visual Mode remap

This works well when I need to highlight a single word with a predefined color.
nnoremap <silent><leader>h1 :8 Hi+<CR>

How can I have a similar remap for a range in visual mode?
I've tried:
xnoremap <silent><leader>h1 :8 Hi+x<CR>
but I get "invalid range" error.

Any ideas?

Can we expose HiSet, HiErase etc as vim commands?

The documentation specifies the following default maps to trigger the basic highlights:

  let HiSet   = 'f<CR>'
  let HiErase = 'f<BS>'
  let HiClear = 'f<C-L>'
  let HiFind  = 'f<Tab>'

Can we instead expose them as vim commands (ex: :HiSet)? This allows us to invoke them in a more programmatic manner. (My use case is that I'm using neovim, and use lua scripting mostly).

Feature request: replacement

Hi,
I recently switched from emacs to vi and I miss some functionality from this emacs package
https://github.com/wolray/symbol-overlay
When the cursor is on a highlighted word, pressing the r key will prompt you for a replacement.
This is very handy when programming.
Another question: in the emacs plugin, when the cursor is on a highlighted word, a specific mode is entered and pressing n or p will bring you to the next or previous highlighted word. Is it possible in vi to have the same functionality?
Thanks for the great work 👍

Feature Request: add support for line-pattern (\%l)

Line patterns are very useful in Vim:

				*/\%l* */\%>l* */\%<l* *E951* *E1204* *E1273*
\%23l	Matches in a specific line.

For example, I can highlight the Leader just at 312th line by:

Hi+ \%312lLeader

截圖 2022-11-09 00 48 47

or highlight the entire 312th line by:

Hi+ \%312l

However, vim-highlighter doesn't support patterns like this very well now (e.g., Hi- cmd)
I think this feature is very useful!

Feature Request: Send highlights to quickfix/loclist

I think it would be useful to provide a command that sends all highlights to the quickfix/loclist so that it's possible to see all of the highlights in once place and benefit from cdo and quickfix plugins.

Even better would be providing highlights in the quickfix/loclist too!

Getting No such group or event error

I am getting the below error when I try to open any file:

Error detected while processing ~/.vim/pack/azabiong/start/vim-highlighter/plugin/highlighter.vim:
line 58:
E216: No such group or event: ColorSchemePre * call highlighter#ColorScheme('pre')

Note: I am using gruvbox as my colorscheme

Error while creating a highlighting while selecting a single line with visual line mode

See title.

Selecting a single line in visual line mode and then pressing f<CR> causes the following error:

Error detected while processing function highlighter#Command[22]..<SNR>168_SetHighlight[28]..<SNR>168_GetVisualLine:
line    9:
E951: \% value too large

After the error is dismissed the line is successfully highlighted

Digging around, the error seems to occur at line 264 of autoload/highlighter.vim. One guess is that it is caused by an of-by-one error and indeed changing l:right to l:right-1 does cause the error to go away. I'm not sure what the intended purpose of the function is as the highlighting seems to work even when the error occurs so I'm not sure that this fix preserves the intended functionality of the code.

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.