feat(tx): completions wip

This commit is contained in:
2023-12-18 17:38:27 +02:00
parent 4d004532c5
commit 2121cb9eda
4 changed files with 59 additions and 22 deletions

View File

@@ -186,7 +186,6 @@ cmp.setup {
},
}
return {
'akinsho/flutter-tools.nvim',
lazy = false,
dependencies = {
@@ -224,6 +223,7 @@ return {
-- if empty dap will not stop on any exceptions, otherwise it will stop on those specified
-- see |:help dap.set_exception_breakpoints()| for more info
exception_breakpoints = {},
---@diagnostic disable-next-line: unused-local
register_configurations = function(paths)
require("dap").configurations.dart = {
-- <put here config that you would find in .vscode/launch.json>

View File

@@ -39,11 +39,11 @@ end
vim.defer_fn(function()
-- See `:help telescope.builtin`
vim.keymap.set('n', '<leader>?', require('telescope.builtin').oldfiles, { desc = '[?] Find recently opened files' })
vim.keymap.set('n', '<leader><space>', require('telescope.builtin').buffers, { desc = '[ ] Find existing buffers' })
vim.keymap.set('n', '<leader>?', builtin.oldfiles, { desc = '[?] Find recently opened files' })
vim.keymap.set('n', '<leader><space>', builtin.buffers, { desc = '[ ] Find existing buffers' })
vim.keymap.set('n', '<leader>/', function()
-- You can pass additional configuration to telescope to change theme, layout, etc.
require('telescope.builtin').current_buffer_fuzzy_find(require('telescope.themes').get_dropdown {
builtin.current_buffer_fuzzy_find(require('telescope.themes').get_dropdown {
winblend = 10,
previewer = false,
})
@@ -64,14 +64,16 @@ vim.defer_fn(function()
builtin.grep_string({ search = term })
end)
vim.keymap.set('n', '<leader>gf', require('telescope.builtin').git_files, { desc = 'Search [G]it [F]iles' })
vim.keymap.set('n', '<leader>sf', require('telescope.builtin').find_files, { desc = '[S]earch [F]iles' })
vim.keymap.set('n', '<leader>sh', require('telescope.builtin').help_tags, { desc = '[S]earch [H]elp' })
vim.keymap.set('n', '<leader>sw', require('telescope.builtin').grep_string, { desc = '[S]earch current [W]ord' })
vim.keymap.set('n', '<leader>sg', require('telescope.builtin').live_grep, { desc = '[S]earch by [G]rep' })
vim.keymap.set('n', '<leader>gf', builtin.git_files, { desc = 'Search [G]it [F]iles' })
vim.keymap.set('n', '<leader>sf', builtin.find_files, { desc = '[S]earch [F]iles' })
vim.keymap.set('n', '<leader>sh', builtin.help_tags, { desc = '[S]earch [H]elp' })
vim.keymap.set('n', '<leader>sw', builtin.grep_string, { desc = '[S]earch current [W]ord' })
vim.keymap.set('n', '<leader>sg', builtin.live_grep, { desc = '[S]earch by [G]rep' })
vim.keymap.set('n', '<leader>sG', live_grep_git_root, { desc = '[S]earch by [G]rep on Git Root' })
vim.keymap.set('n', '<leader>sd', require('telescope.builtin').diagnostics, { desc = '[S]earch [D]iagnostics' })
vim.keymap.set('n', '<leader>sr', require('telescope.builtin').resume, { desc = '[S]earch [R]esume' })
vim.keymap.set('n', '<leader>sd', builtin.diagnostics, { desc = '[S]earch [D]iagnostics' })
vim.keymap.set('n', '<leader>sr', builtin.resume, { desc = '[S]earch [R]esume' })
vim.keymap.set('n', '<leader>sk', builtin.keymaps, { desc = '[S]earch [K]eymaps' })
vim.keymap.set('n', '<leader>st', "<Cmd>Telescope<CR>", { desc = '[S]earch [T]elescope Pickers' })
pcall(require('telescope').load_extension, 'fzf')
pcall(require('telescope').load_extension, 'media_files')
require('telescope').setup {

24
completions/_tx Executable file
View File

@@ -0,0 +1,24 @@
#compdef tx
names=($(tx ls -b))
if [[ -z $names ]]; then
return 1
fi
sessions=(
)
cmds=(
'list:List all tmux configurations and sessions'
'show:Show the tmux configuration file for a specific key'
'edit:Edit the tmux configuration file'
'remove:Remove a tmux workspace from the config file'
'create:Create a new tmux session (temporary)'
'attach:Attach to a tmux session'
)
for i in $names; do
sessions+=("$i")
done
_describe 'session' sessions
# _describe 'cmds' cmds

View File

@@ -81,35 +81,46 @@ const showCmd = new MassargCommand<Opts>({
})
.help({ bindOption: true, bindCommand: true })
const listCmd = {
const listCmd = new MassargCommand<Opts & { bare?: boolean }>({
name: 'list',
aliases: ['ls'],
description: 'List all tmux configurations and sessions',
run: async (opts: Opts) => {
run: async (opts) => {
const configs = await getTmuxConfigFileInfo()
const rawConfig = await getTmuxConfig()
const config = Object.fromEntries(
Object.entries(rawConfig).map(([key, item]) => [key, parseConfig(item)]),
)
const sessions = await getCommandOutput(opts, 'tmux ls')
const keys = Object.keys(config).sort((a, b) => a.toLowerCase().localeCompare(b.toLowerCase()))
if (opts.bare) {
console.log(keys.join('\n'))
return
}
const sessions = await getCommandOutput(opts, 'tmux ls')
console.log('tmux sessions:\n')
console.log(indent(sessions.output))
console.log('tmux config files:\n')
console.log(
' - ' +
Object.entries(configs)
.map(([key, config]) =>
config && key !== 'merged' ? key + ': ' + config.filepath : undefined,
)
.filter(Boolean)
.join('\n - ') +
'\n',
Object.entries(configs)
.map(([key, config]) =>
config && key !== 'merged' ? key + ': ' + config.filepath : undefined,
)
.filter(Boolean)
.join('\n - ') +
'\n',
)
console.log('tmux configurations:\n')
console.log(' - ' + keys.join('\n - '))
},
}
})
.flag({
name: 'bare',
aliases: ['b'],
description:
'Show only the tmux session names, without the config or formatting (useful for scripting)',
})
.help({ bindOption: true, bindCommand: true })
export type ConfigFileOpts = Opts & {
local?: boolean