From 6f96cce5e5964b3e353dfa25dd9ccfb54ee62d1f Mon Sep 17 00:00:00 2001
From: wsdjeg <wsdjeg@outlook.com>
Date: Wed, 2 Nov 2022 11:37:42 +0800
Subject: [PATCH] feat(maven): add maven task provider

---
 autoload/SpaceVim/layers/lang/java.vim | 12 ++++++++++++
 lua/telescope/_extensions/task.lua     |  4 +++-
 2 files changed, 15 insertions(+), 1 deletion(-)

diff --git a/autoload/SpaceVim/layers/lang/java.vim b/autoload/SpaceVim/layers/lang/java.vim
index 43c02a33d..d8fa3ead0 100644
--- a/autoload/SpaceVim/layers/lang/java.vim
+++ b/autoload/SpaceVim/layers/lang/java.vim
@@ -186,6 +186,18 @@ function! SpaceVim#layers#lang#java#config() abort
   endif
   call SpaceVim#layers#edit#add_ft_head_tamplate('java', s:java_file_head)
   call SpaceVim#plugins#projectmanager#reg_callback(function('s:handle_java_project_changed'))
+  call SpaceVim#plugins#tasks#reg_provider(function('s:maven_tasks'))
+endfunction
+
+function! s:maven_tasks() abort
+  let detect_task = {}
+  let conf = {}
+  if filereadable('pom.xml')
+    call extend(detect_task, {
+          \ 'compile' : {'command' : 'mvn', 'args' : ['compile'], 'isDetected' : 1, 'detectedName' : 'mvn:'}
+          \ })
+  endif
+  return detect_task
 endfunction
 
 function! s:handle_java_project_changed() abort
diff --git a/lua/telescope/_extensions/task.lua b/lua/telescope/_extensions/task.lua
index 8852b85b2..ac8a7572d 100644
--- a/lua/telescope/_extensions/task.lua
+++ b/lua/telescope/_extensions/task.lua
@@ -38,11 +38,13 @@ local function show_taskconfig(opts)
         desc = desc .. ' ' .. table.concat(entry.value.task.args, ' ')
       end
     end
+    local task_name = entry.value.name
     local task_type = 'local'
     if entry.value.task.isGlobal == 1 then
       task_type = 'global'
     elseif entry.value.task.isDetected == 1 then
       task_type = 'detected'
+      task_name = (entry.value.task.detectedName or '') .. task_name
     end
     -- @todo the text maybe changed
     local background = 'no-background'
@@ -50,7 +52,7 @@ local function show_taskconfig(opts)
       background = 'background'
     end
     return displayer({
-      { '[' .. entry.value.name .. ']', 'TelescopeResultsVariable' },
+      { '[' .. task_name .. ']', 'TelescopeResultsVariable' },
       { '[' .. task_type .. ']', 'TelescopeResultsNumber' },
       { '[' .. background .. ']', 'TelescopeResultsNumber' },
       { desc, 'TelescopeResultsComment' },