Code Monkey home page Code Monkey logo

vscode-q's Introduction

vscode-q

Join the chat at https://gitter.im/vscode-q/community

This extension provides kdb+\q language support:

  • q syntaxes
  • server list group by tags
  • server explorer
  • query grid powered by ag-grid-community & chart.js
  • query visualization powered by perspective
  • language server powered by tree-sitter
    • rename symbol (F2)
    • go to definition (F12)
    • go to reference (Shift+F12)
    • workspace symbol (Ctrl+T)
    • document highlight
    • document symbol (Ctrl+Shift+O)
    • completion
      • identifiers defined in code
      • identifiers defined on kdb+ process
      • column names define on kdb+ process
    • completion resolve
    • signature help
    • semantic highlight
    • call hierarchy

See the change log.

Demo

Introduction to vscode-q

Introduction to vscode-q

Configuration

  • To configure globally, type ctrl+, to open Settings and change the following values.
  • To configure for workspace, type ctrl+shift+p, call Preferences: Open Workspace Settings and change the following values.
configuration type default value description
q-server.sourceFiles.globsPattern array ["**/src/**/*.q"] source folder to be included
q-server.sourceFiles.ignorePattern array ["**/build","**/node_modules"] folder to be excluded
q-client.queryMode string Console query mode, Console, Grid or Visualization
q-client.queryView.dense boolean false q view in dense mode
q-client.queryGrid.decimals number 3 decimals in q grid
q-client.term.qBinary string q q executable file or full path
q-client.term.envPath string '' environment file relative or absolute path
q-client.expl.prevQueryLimit string 5 q explorer preview query limit
q-client.expl.autoRefresh boolean false q explorer auto refresh
q-client.expl.excludedNamespaces array ["q","Q","j","o","h"] namespaced to be excluded from q explorer
q-client.output.autoClear boolean false Auto Clear Output
q-client.output.includeQuery boolean false Include Query in Output
q-client.output.consoleSize string '36 180' Console Size for Output

q Language Server(local server, no connection to the internet)

The server will analyze q source files in all 'src' folder. Insert ';' to indicated end of statement if necessary.

Server List

List servers, click to switch server. Generate tree structure from tags.

Special tag color:

  • green: dev, development
  • blue: uat
  • red: prd, prod.

server-list

Server Explorer

List variables defined on the active server.

Query Mode

Type ctrl+shift+p and call kdb+/q ext: Switch Query Mode to switch Query Console.

Query View

The query view, powered by perspective, can pivot and virtualize table data. In Query View mode, only table will be showed in a webview, but other result will still be in output. It will limit to 1000 rows when query a table, click the flame in q Ext panel , or call kdb+/q ext: Toggle Unlimited Query, to remove 1000 rows limit. Be noted that, Query View only support millisecond precision. Use Query Grid, if you need nanosecond precision.

Query Grid

The query grid, powered by ag-grid-community and chart.js, can filter and sort table data. In Query Grid mode, only table will be showed in a webview, but other result will still be in output. It will limit to 1000 rows when query a table, click the flame in q Ext panel , or call kdb+/q ext: Toggle Unlimited Query, to remove 1000 rows limit.

Query Console(default)

Output just like q console to an output channel. The console size is set to the same as q http size. Use system "C rows columns" to change console size.

History View

Record query histories.

Commands

Connect q Sever

Type ctrl+shift+p and call kdb+/q ext: Connect to q Server to connect to a q server.

Formatter

Append space to },],) by formatting the file. Turn on Editor: Format On Save to automatically append space.

Shortcuts

  • ctrl+q: query current line
  • ctrl+r: query selection
  • ctrl+e: query block
  • ctrl+shift+q: send current line to terminal
  • ctrl+shift+r: send selection to terminal
  • ctrl+shift+e: send block to terminal

To change shortcuts

  1. type ctrl+shift+p
  2. input "shortcut"
  3. open the Keyboard Shortcuts
  4. search for "kdb+".

Version Compatibility

To use this extension in an earlier version of vscode.

  1. git clone this repo
  2. change 'vscode' of 'engine' in the package.json and '@types/vscode' of devDependencies to target version 1.**
...
	"engines": {
		"vscode": "^1.**.*"
	},
...
	"devDependencies": {
...
		"@types/vscode": "^1.**.*",
...
	},
  1. run the following commands from this repo folder to get a earlier version compatible package
npm i
sudo npm i -g vsce
vsce package

Tips

Enable Auto Scrolling for Output Channel

  1. Type ctrl+comma(,), open Settings, disable Output>Smart Scroll.
  2. Turn on Auto Scrolling by clicking a small locker icon on the right top of output channel.

Disable Word Wrap in q Console of Output

Type ctrl+shift+p, call Open Setting(Json), and add following configuration.

    "[Log]": {
        "editor.wordWrap": "off"
    }

No Color in q Output

There may be a conflict with other extensions. Disable or uninstall them and try again.

Enable Highlight for Attention And TODO of comments

comment-highlight

Type ctrl+shift+p, call Open Setting(Json), and add following configuration.

    "editor.tokenColorCustomizations": {
        "textMateRules": [
            {
                "scope":"comment.line.attention",
                "settings": {
                    "fontStyle": "italic",
                    "foreground": "#B71C1C"
                }
            },
            {
                "scope":"comment.line.todo",
                "settings": {
                    "fontStyle": "italic",
                    "foreground": "#2E7D32"
                }
            }
        ]
    }

Special Comment

Querying comment line /<=> quant,prod,local-1800 will connect to quant,prod,local-1800. Type ctrl+shift+p, call kdb+/q ext Insert Active Connection Label to insert active connection label.

Customized Authentication

refer to vscode-q-auth

Packages

Special thanks to the following packages.

Reference

Recommended Packages

Contributing

If you'd like to contribute to this extension, please read the contributing guidelines.

License

MIT

vscode-q's People

Contributors

jshinonome avatar yanpas avatar

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.