1
0
Fork 0
IntelliJ-IdeaVim/vimscript-info/VIMSCRIPT_ROADMAP.md

2.4 KiB

Vimscript

IdeaVim 1.7.0

  • expressions: binary, unary, ternary, function calls, sublists, options, registers, variables, lists, dictionaries
  • if condition
  • for and while loops
  • try/catch/finally
  • function definition (without flags)
  • break, continue, throw, return
  • scopes: g:, s:, l:, a:, b:, w:, t: (the v: scope is not supported yet)
  • map <expr>

IdeaVim 1.8.0

  • move s: scoped variables to Script class
  • move l: and a: scoped variables to the FunctionDeclaration class
  • closure function flag
  • .. as concatenation operator
  • falsy operator ??
  • access dictionary value by dict.key
  • abort function flag
  • range function flag
  • call command
  • optional arguments ...
  • funcref type
  • lambdas
  • function as method
  • function function
  • funcref function
  • dict function flag
  • anonymous functions
  • default value in functions e.g. function F1(a, b = 10)
  • has("ide") or "ide" option
  • reduce number of rules in grammar
  • classic package structure

IdeaVim 1.9.0

  • support for [a, b] in {expr}
  • pass scopes to functions e.g. for k in keys(s:)
  • curly-braces-names
  • finish statement
  • pass Lists and Dictionaries by reference
  • variable locking
  • rewrite OptionManager to vim data types
  • scoped options
  • normal command
  • expression register (<C-R>=)

Plans for the next releases:

IdeaVim 1.10.0

  • Result class that would store the exceptions
  • throwing multiple exceptions at once
  • exception wrapping in try/catch
  • store exception messages in property file
  • store vim exception stacktrace

Pool of things that might be added soon

  • executing context (script / command line) & better parent for executable
  • classloading
  • all the let command's cases (e.g. registers)
  • vim "special" type
  • v: scope
  • update tests to JUnit 5
  • rethink vimscript tests
  • loggers
  • todos, warnings
  • expressions in substitute command (\=)
  • vim status line and beautiful exceptions output
  • improve w: and t: scopes
  • context dependent parsing e.g. dict.key
  • add -range option to command command
  • better strings (e.g. "\<Esc")