dart.lua (4238B)
1 vim.opt_local.comments = [[sO:*\ -,mO:*\ \ ,exO:*/,s1:/*,mb:*,ex:*/,:///,://]] 2 vim.opt_local.commentstring = '//%s' 3 vim.opt_local.includeexpr = [[v:lua.require('tms.ft.dart.package').package_path(v:fname)]] 4 vim.opt_local.isfname:append { ':' } 5 vim.opt_local.iskeyword:append { '$' } 6 vim.opt_local.include = [[^import\s*]] 7 vim.opt_local.textwidth = 80 8 vim.opt_local.shiftwidth = 2 9 vim.opt_local.formatoptions:remove('t') 10 vim.opt_local.makeprg = [[dart %]] 11 vim.opt_local.efm = [[%f:%l:%c: %m]] 12 vim.opt_local.foldmethod = 'expr' 13 vim.opt_local.foldlevel = 99 14 vim.b.undo_ftplugin = 'setl com< cms< inex< isf<' 15 vim.cmd.iabbrev('STring', 'String') 16 17 if pcall(require, 'no-neck-pain') and not require 'no-neck-pain.state'.enabled and not vim.g.no_neck_init then 18 require 'no-neck-pain'.enable() 19 -- at start cursor is in left most window 20 vim.schedule(function() 21 vim.cmd [[exe "normal \<c-w>l"]] 22 end) 23 vim.g.no_neck_init = true 24 end 25 26 local full_path = vim.fn.expand('%:p') 27 if string.find(full_path, '%.pub%-cache') then 28 vim.bo.modifiable = false 29 end 30 31 require 'tms.lsp.dart'.start() 32 33 vim.keymap.set('n', '<leader>ar', ':make<cr>', { desc = 'Dart Run' }) 34 vim.keymap.set('n', '<leader>at', ':DartTest<cr>', { desc = 'Dart Test' }) 35 vim.keymap.set('n', '<leader>an', vim.cmd.Trun, { desc = 'Trun' }) 36 37 vim.api.nvim_buf_create_user_command(0, 'NgProvided', function() 38 vim.lsp.buf.references(nil, { on_list = require 'tms.lsp.dart'.provided_references }) 39 end, {}) 40 41 vim.api.nvim_buf_create_user_command(0, 'DartTest', function() 42 local temp_makeprg = vim.bo.makeprg 43 vim.bo.makeprg = [[dart test --no-color -r expanded %]] 44 vim.cmd.make() 45 vim.bo.makeprg = temp_makeprg 46 end, {}) 47 48 if pcall(require, 'dart-tools') then 49 local dt_lsp = require 'dart-tools.lsp' 50 local dt_req = require 'dart-tools.lsp.request' 51 local ddebug = require 'tms.ft.dart.debug' 52 local analyze = require 'tms.ft.dart.analyze' 53 54 local cmd_opts = {} 55 vim.api.nvim_buf_create_user_command(0, 'DartDebug', ddebug.func, cmd_opts) 56 vim.api.nvim_buf_create_user_command(0, 'DartPrint', ddebug.print, cmd_opts) 57 vim.api.nvim_buf_create_user_command(0, 'DartOrganizeImports', dt_lsp.organize_imports, cmd_opts) 58 vim.api.nvim_buf_create_user_command(0, 'DartFixAll', dt_lsp.fix_all, cmd_opts) 59 vim.api.nvim_buf_create_user_command(0, 'DartExtract', dt_lsp.extract_method, cmd_opts) 60 vim.api.nvim_buf_create_user_command(0, 'DartVariable', dt_lsp.extract_local_variable, cmd_opts) 61 vim.api.nvim_buf_create_user_command(0, 'DartAnalyze', analyze.qf2131, cmd_opts) 62 63 local opts = function(desc) 64 return { buffer = true, desc = desc } 65 end 66 -- vim.keymap.set('n', '<leader>ap', function() 67 -- ddebug.print() 68 -- end, opts('Dart Debug Print')) 69 vim.keymap.set('n', '<leader>ao', dt_lsp.organize_imports, opts('Dart Organize Imports')) 70 vim.keymap.set('n', '<leader>af', dt_lsp.fix_all, opts('Dart Fix All')) 71 vim.keymap.set({ 'v', 'n' }, '<leader>ai', dt_lsp.inline_local_variable, opts('Dart Inline Local Varibale')) 72 vim.keymap.set({ 'v', 'n' }, '<leader>ae', dt_lsp.extract_local_variable, opts('Dart Extract Local Varibale')) 73 vim.keymap.set({ 'v', 'n' }, '<leader>am', dt_lsp.extract_method, opts('Dart Extract Method')) 74 vim.keymap.set('n', '<leader>al', dt_lsp.list_code_action_kinds, opts('Dart List Code Actions')) 75 vim.keymap.set('n', '<leader>as', function() 76 dt_req.execute_command('refactor.splitVariableDeclaration') 77 end, opts('Dart Split Variable Declaration')) 78 vim.keymap.set('n', '<leader>aj', function() 79 dt_req.execute_command('refactor.joinVariableDeclaration') 80 end, opts('Dart Join Variable Declaration')) 81 vim.keymap.set('n', '<leader>ax', function() 82 dt_req.execute_command('refactor.convert.bodyToExpression') 83 end, opts('Dart Convert To Expression')) 84 vim.keymap.set('n', '<leader>aa', function() 85 dt_req.execute_command('refactor.convert.bodyToAsync') 86 end, opts('Dart Convert To Async')) 87 vim.keymap.set('n', '<leader>ab', function() 88 dt_req.execute_command('refactor.convert.bodyToBlock') 89 end, opts('Dart Convert To Block')) 90 vim.keymap.set('n', '<leader>ad', dt_lsp.super, opts('Dart Go to Super Definition')) 91 -- vim.keymap.set('n', '<leader>ap', dt_lsp.import, opts('Dart Go to Import')) 92 end