dart.lua (4202B)
1 local set = vim.opt_local 2 set.comments = [[sO:*\ -,mO:*\ \ ,exO:*/,s1:/*,mb:*,ex:*/,:///,://]] 3 set.commentstring = '//%s' 4 set.includeexpr = [[v:lua.require('tms.ft.dart.package').package_path(v:fname)]] 5 set.isfname:append { ':' } 6 set.iskeyword:append { '$' } 7 set.include = [[^import\s*]] 8 set.textwidth = 80 9 set.shiftwidth = 2 10 set.formatoptions:remove('t') 11 set.makeprg = [[dart %]] 12 set.efm = [[%f:%l:%c: %m]] 13 set.foldmethod = 'expr' 14 set.foldlevel = 99 15 16 vim.b.undo_ftplugin = 'setl com< cms< inex< isf<' 17 vim.cmd.iabbrev('STring', 'String') 18 19 if pcall(require, 'no-neck-pain') and not require 'no-neck-pain.state'.enabled and not vim.g.no_neck_init then 20 require 'no-neck-pain'.enable() 21 -- at start cursor is in left most window 22 vim.schedule(function() 23 vim.cmd [[exe "normal \<c-w>l"]] 24 end) 25 vim.g.no_neck_init = true 26 end 27 28 local full_path = vim.fn.expand('%:p') 29 if string.find(full_path, '%.pub%-cache') then 30 vim.bo.modifiable = false 31 end 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>az', '<cmd>DartAnalyze<cr>', opts('Dart Analyze to QuickFix list')) 92 -- vim.keymap.set('n', '<leader>ap', dt_lsp.import, opts('Dart Go to Import')) 93 end