diff options
| author | Abouzar Parvan <[email protected]> | 2021-07-18 22:26:31 +0430 | 
|---|---|---|
| committer | GitHub <[email protected]> | 2021-07-18 17:56:31 +0000 | 
| commit | 0e8f69f339156fd8ccd2ae85de95637859b3da76 (patch) | |
| tree | ecf597961711b46246aeb9a9207f34fcc9ccf58a | |
| parent | 1ebdb38d7c8bf795621cc447be92e007e058e6ed (diff) | |
[Feature] Add swift support (#1002)
| -rw-r--r-- | ftplugin/swift.lua | 4 | ||||
| -rw-r--r-- | lua/default-config.lua | 3 | ||||
| -rw-r--r-- | lua/lang/swift.lua | 52 | 
3 files changed, 58 insertions, 1 deletions
| diff --git a/ftplugin/swift.lua b/ftplugin/swift.lua new file mode 100644 index 00000000..64d87e1c --- /dev/null +++ b/ftplugin/swift.lua @@ -0,0 +1,4 @@ +require("lang.swift").format() +require("lang.swift").lint() +require("lang.swift").lsp() +require("lang.swift").dap() diff --git a/lua/default-config.lua b/lua/default-config.lua index 95549b53..3246787a 100644 --- a/lua/default-config.lua +++ b/lua/default-config.lua @@ -181,9 +181,10 @@ require("lang.php").config()  require("lang.python").config()  require("lang.ruby").config()  require("lang.rust").config() -require("lang.scala").config()  require("lang.sh").config() +require("lang.scala").config()  require("lang.svelte").config() +require("lang.swift").config()  require("lang.terraform").config()  require("lang.tex").config()  require("lang.vim").config() diff --git a/lua/lang/swift.lua b/lua/lang/swift.lua new file mode 100644 index 00000000..69254caa --- /dev/null +++ b/lua/lang/swift.lua @@ -0,0 +1,52 @@ +local M = {} + +M.config = function() +  O.lang.swift = { +    formatter = { +      exe = "swiftformat", +      args = {}, +      stdin = true, +    }, +  } +end + +M.format = function() +  -- TODO: implement formatter (if applicable) +  return "No formatter configured!" +end + +M.lint = function() +  O.formatters.filetype["swift"] = { +    function() +      return { +        exe = O.lang.swift.formatter.exe, +        args = O.lang.swift.formatter.args, +        stdin = O.lang.swift.formatter.stdin, +      } +    end, +  } + +  require("formatter.config").set_defaults { +    logging = false, +    filetype = O.formatters.filetype, +  } +end + +M.lsp = function() +  if require("lv-utils").check_lsp_client_active "sourcekit" then +    return +  end + +  require("lspconfig").sourcekit.setup { +    cmd = { "xcrun", "sourcekit-lsp" }, +    on_attach = require("lsp").common_on_attach, +    filetypes = { "swift" }, +  } +end + +M.dap = function() +  -- TODO: implement dap +  return "No DAP configured!" +end + +return M | 
