clearance
This commit is contained in:
parent
4da632bbf7
commit
53675c9b03
@ -1,93 +0,0 @@
|
|||||||
vim.loader.enable()
|
|
||||||
|
|
||||||
require("set")
|
|
||||||
require("remap")
|
|
||||||
require("autocmd")
|
|
||||||
require("lazy_init")
|
|
||||||
|
|
||||||
-- Cargar configuración de tipos de archivo
|
|
||||||
pcall(require, 'filetype') -- Ignorar errores si filetype.lua no existe
|
|
||||||
|
|
||||||
function ReplaceWordUnderCursor()
|
|
||||||
local word = vim.fn.expand("<cword>")
|
|
||||||
local replace = vim.fn.input("Replace \"" .. word .. "\" with: ")
|
|
||||||
if replace ~= "" then
|
|
||||||
vim.cmd("%s/\\V" .. word .. "/" .. replace .. "/g")
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
vim.api.nvim_set_keymap("n", "<Leader>r", ":lua ReplaceWordUnderCursor()<CR>", { noremap = true, silent = true })
|
|
||||||
|
|
||||||
function ReplacePhraseUnderCursor()
|
|
||||||
-- Obtén la palabra o frase bajo el cursor en modo visual
|
|
||||||
local phrase = vim.fn.input("Replace phrase: ")
|
|
||||||
if phrase == "" then
|
|
||||||
print("No phrase provided.")
|
|
||||||
return
|
|
||||||
end
|
|
||||||
local replace = vim.fn.input("Replace \"" .. phrase .. "\" with: ")
|
|
||||||
if replace ~= "" then
|
|
||||||
vim.cmd("%s/\\V" .. vim.fn.escape(phrase, "/\\") .. "/" .. replace .. "/g")
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
vim.api.nvim_set_keymap("n", "<Leader>f", ":lua ReplacePhraseUnderCursor()<CR>", { noremap = true, silent = true })
|
|
||||||
|
|
||||||
vim.filetype.add({
|
|
||||||
extension = {
|
|
||||||
yml = "ansible",
|
|
||||||
yaml = "ansible",
|
|
||||||
},
|
|
||||||
-- Puedes agregar otras asociaciones si es necesario
|
|
||||||
})
|
|
||||||
|
|
||||||
vim.cmd([[
|
|
||||||
autocmd BufRead,BufNewFile *.yml,*.yaml set filetype=ansible
|
|
||||||
]])
|
|
||||||
require("catppuccin").setup({
|
|
||||||
flavour = "macchiato", -- Puedes elegir entre 'latte', 'frappe', 'macchiato', 'mocha'
|
|
||||||
background = {
|
|
||||||
light = "latte",
|
|
||||||
dark = "macchiato",
|
|
||||||
},
|
|
||||||
-- Otras configuraciones de Catppuccin...
|
|
||||||
|
|
||||||
custom_highlights = function(colors)
|
|
||||||
return {
|
|
||||||
-- Personalizar DiagnosticWarn con un tono de rojo menos intrusivo
|
|
||||||
DiagnosticWarn = {
|
|
||||||
fg = colors.red6, -- Tono de rojo menos brillante
|
|
||||||
bg = "NONE",
|
|
||||||
bold = false,
|
|
||||||
italic = false,
|
|
||||||
},
|
|
||||||
DiagnosticVirtualTextWarn = {
|
|
||||||
fg = colors.red6,
|
|
||||||
bg = "NONE",
|
|
||||||
italic = false,
|
|
||||||
},
|
|
||||||
-- Opcional: Personalizar otros grupos de diagnóstico si lo deseas
|
|
||||||
-- DiagnosticError = {
|
|
||||||
-- fg = colors.red,
|
|
||||||
-- bg = "NONE",
|
|
||||||
-- bold = true,
|
|
||||||
-- italic = false,
|
|
||||||
-- },
|
|
||||||
-- DiagnosticInfo = {
|
|
||||||
-- fg = colors.blue,
|
|
||||||
-- bg = "NONE",
|
|
||||||
-- bold = false,
|
|
||||||
-- italic = false,
|
|
||||||
-- },
|
|
||||||
-- DiagnosticHint = {
|
|
||||||
-- fg = colors.cyan,
|
|
||||||
-- bg = "NONE",
|
|
||||||
-- bold = false,
|
|
||||||
-- italic = false,
|
|
||||||
-- },
|
|
||||||
}
|
|
||||||
end,
|
|
||||||
})
|
|
||||||
|
|
||||||
-- Aplicar el esquema de colores
|
|
||||||
vim.cmd.colorscheme("catppuccin")
|
|
@ -1,15 +0,0 @@
|
|||||||
-- ~/.config/nvim/lua/plugins/chatgpt.lua
|
|
||||||
|
|
||||||
return {
|
|
||||||
"jackMort/ChatGPT.nvim",
|
|
||||||
dependencies = {
|
|
||||||
"MunifTanjim/nui.nvim",
|
|
||||||
"nvim-lua/plenary.nvim",
|
|
||||||
"nvim-telescope/telescope.nvim",
|
|
||||||
},
|
|
||||||
config = function()
|
|
||||||
require("chatgpt").setup({
|
|
||||||
-- Configuración personalizada (opcional)
|
|
||||||
})
|
|
||||||
end,
|
|
||||||
}
|
|
@ -1,97 +0,0 @@
|
|||||||
---@author tomkoid
|
|
||||||
---@license MIT
|
|
||||||
|
|
||||||
-- Definir la lista principal de plugins
|
|
||||||
local plugins = {
|
|
||||||
"tpope/vim-sleuth", -- Detect tabstop and shiftwidth automatically
|
|
||||||
|
|
||||||
-- "gc" to comment visual regions/lines
|
|
||||||
{ "numToStr/Comment.nvim", opts = {} },
|
|
||||||
|
|
||||||
{ -- Adds git related signs to the gutter, as well as utilities for managing changes
|
|
||||||
"lewis6991/gitsigns.nvim",
|
|
||||||
opts = {},
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
-- If you want to see what colorschemes are already installed, you can use `:Telescope colorscheme`.
|
|
||||||
"catppuccin/nvim",
|
|
||||||
priority = 1000, -- Make sure to load this before all the other start plugins.
|
|
||||||
init = function()
|
|
||||||
-- Load the colorscheme here.
|
|
||||||
-- Like many other themes, this one has different styles, and you could load
|
|
||||||
-- any other, such as 'tokyonight-storm', 'tokyonight-moon', or 'tokyonight-day'.
|
|
||||||
vim.cmd.colorscheme("catppuccin-mocha")
|
|
||||||
|
|
||||||
-- You can configure highlights by doing something like:
|
|
||||||
vim.cmd.hi("Comment gui=none")
|
|
||||||
end,
|
|
||||||
},
|
|
||||||
|
|
||||||
-- Highlight todo, notes, etc in comments
|
|
||||||
{
|
|
||||||
"folke/todo-comments.nvim",
|
|
||||||
event = "VimEnter",
|
|
||||||
dependencies = { "nvim-lua/plenary.nvim" },
|
|
||||||
opts = { signs = false },
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
"nvim-lualine/lualine.nvim",
|
|
||||||
opts = {
|
|
||||||
options = {
|
|
||||||
disabled_filetypes = { "NERDTree", "NvimTree_1" },
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{ "vimwiki/vimwiki" },
|
|
||||||
{
|
|
||||||
"NvChad/nvim-colorizer.lua",
|
|
||||||
config = function()
|
|
||||||
require("colorizer").setup()
|
|
||||||
end,
|
|
||||||
}, -- colorize hex colors
|
|
||||||
{
|
|
||||||
"f-person/git-blame.nvim",
|
|
||||||
config = function()
|
|
||||||
require("gitblame").setup({ enabled = true })
|
|
||||||
end,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"lambdalisue/suda.vim",
|
|
||||||
},
|
|
||||||
{ "windwp/nvim-ts-autotag" },
|
|
||||||
-- Lazy.nvim
|
|
||||||
{
|
|
||||||
"hiasr/vim-zellij-navigator.nvim",
|
|
||||||
config = function()
|
|
||||||
require("vim-zellij-navigator").setup()
|
|
||||||
end,
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
"danymat/neogen",
|
|
||||||
config = function()
|
|
||||||
local neogen = require("neogen")
|
|
||||||
|
|
||||||
neogen.setup({
|
|
||||||
snippet_engine = "luasnip",
|
|
||||||
})
|
|
||||||
|
|
||||||
local opts = { noremap = true, silent = true }
|
|
||||||
vim.keymap.set("n", "<leader>nc", function()
|
|
||||||
neogen.generate({ snippet_engine = "luasnip" })
|
|
||||||
end, opts)
|
|
||||||
end,
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
-- Cargar los plugins de LSP desde 'lua/plugins/lsp.lua'
|
|
||||||
local lsp_plugins = require('plugins.lsp')
|
|
||||||
|
|
||||||
-- Combinar ambas listas de plugins
|
|
||||||
local combined_plugins = vim.list_extend(plugins, lsp_plugins)
|
|
||||||
|
|
||||||
-- Retornar la lista combinada para Lazy.nvim
|
|
||||||
return combined_plugins
|
|
||||||
|
|
@ -1,143 +0,0 @@
|
|||||||
import weechat
|
|
||||||
import requests
|
|
||||||
import json
|
|
||||||
from requests.auth import HTTPBasicAuth
|
|
||||||
|
|
||||||
"""
|
|
||||||
Ollama Bot for WeeChat (Remote Version with Authentication)
|
|
||||||
|
|
||||||
This script automatically responds to mentions in channels and private messages using an Ollama LLM hosted remotely.
|
|
||||||
|
|
||||||
Features:
|
|
||||||
- Responds to mentions in channels.
|
|
||||||
- Can respond to private messages if enabled.
|
|
||||||
- Allows manual queries using the /ollama command.
|
|
||||||
- Configurable via WeeChat /set commands.
|
|
||||||
|
|
||||||
Usage:
|
|
||||||
- To ask a question manually:
|
|
||||||
/ollama What is Python?
|
|
||||||
|
|
||||||
- To enable or disable automatic responses in channels:
|
|
||||||
/set plugins.var.python.ollama.highlight_response on # Enable responses in channels
|
|
||||||
/set plugins.var.python.ollama.highlight_response off # Disable responses in channels
|
|
||||||
|
|
||||||
- To enable or disable automatic responses in private messages:
|
|
||||||
/set plugins.var.python.ollama.pm_response on # Enable PM responses
|
|
||||||
/set plugins.var.python.ollama.pm_response off # Disable PM responses
|
|
||||||
|
|
||||||
Dependencies:
|
|
||||||
- Requires an Ollama server running at https://ollama.priet.us/api/generate with authentication.
|
|
||||||
"""
|
|
||||||
|
|
||||||
# Script metadata
|
|
||||||
SCRIPT_NAME = "ollama"
|
|
||||||
SCRIPT_AUTHOR = "teraflops"
|
|
||||||
SCRIPT_VERSION = "2.1"
|
|
||||||
SCRIPT_LICENSE = "MIT"
|
|
||||||
SCRIPT_DESC = "Automatically responds to mentions using Ollama and allows manual queries, including PMs"
|
|
||||||
OLLAMA_API_URL = "https://ollama.priet.us/api/generate"
|
|
||||||
OLLAMA_USER = "nginx-user"
|
|
||||||
OLLAMA_PASS = "wasamasa123" # Replace with the actual password
|
|
||||||
|
|
||||||
# Register the script
|
|
||||||
weechat.register(SCRIPT_NAME, SCRIPT_AUTHOR, SCRIPT_VERSION, SCRIPT_LICENSE, SCRIPT_DESC, "", "")
|
|
||||||
|
|
||||||
# Script configuration in Weechat
|
|
||||||
def setup_config():
|
|
||||||
if not weechat.config_is_set_plugin("highlight_response"):
|
|
||||||
weechat.config_set_plugin("highlight_response", "on") # Enable auto-responses by default
|
|
||||||
if not weechat.config_is_set_plugin("pm_response"):
|
|
||||||
weechat.config_set_plugin("pm_response", "off") # Disable PM responses by default
|
|
||||||
setup_config()
|
|
||||||
|
|
||||||
def ask_ollama(message):
|
|
||||||
"""Send a query to Ollama and return the complete response."""
|
|
||||||
try:
|
|
||||||
data = {"model": "gemma:2b", "prompt": message, "stream": False}
|
|
||||||
headers = {"Content-Type": "application/json", "User-Agent": "WeeChat-OllamaBot/1.0"}
|
|
||||||
|
|
||||||
weechat.prnt("", f"[DEBUG] Sending request to Ollama: {OLLAMA_API_URL} with prompt: {message}")
|
|
||||||
|
|
||||||
response = requests.post(
|
|
||||||
OLLAMA_API_URL,
|
|
||||||
json=data,
|
|
||||||
headers=headers,
|
|
||||||
auth=HTTPBasicAuth(OLLAMA_USER, OLLAMA_PASS),
|
|
||||||
verify=False # Change to True if you have a valid certificate
|
|
||||||
)
|
|
||||||
|
|
||||||
if response.status_code == 401:
|
|
||||||
return "Authentication Error: Check username/password."
|
|
||||||
elif response.status_code == 403:
|
|
||||||
return "Permission Denied: Verify API access."
|
|
||||||
elif response.status_code != 200:
|
|
||||||
return f"HTTP Error {response.status_code}: {response.text}"
|
|
||||||
|
|
||||||
response_json = response.json()
|
|
||||||
return response_json.get("response", "No response received from Ollama.")
|
|
||||||
|
|
||||||
except requests.exceptions.RequestException as e:
|
|
||||||
return f"Error connecting to Ollama: {str(e)}"
|
|
||||||
|
|
||||||
def command_ollama(data, buffer, args):
|
|
||||||
"""Command /ollama to manually ask Ollama a question."""
|
|
||||||
weechat.prnt("", f"[DEBUG] /ollama command received with args: {args}")
|
|
||||||
|
|
||||||
if not args:
|
|
||||||
weechat.prnt(buffer, "[Ollama] Usage: /ollama <question>")
|
|
||||||
return weechat.WEECHAT_RC_OK
|
|
||||||
|
|
||||||
response = ask_ollama(args)
|
|
||||||
weechat.prnt(buffer, f"[Ollama] {response}")
|
|
||||||
return weechat.WEECHAT_RC_OK
|
|
||||||
|
|
||||||
def message_callback(data, buffer, date, tags, displayed, highlight, prefix, message):
|
|
||||||
"""Detect mentions in channels or private messages and respond automatically with Ollama."""
|
|
||||||
|
|
||||||
if weechat.config_get_plugin("highlight_response") == "off":
|
|
||||||
return weechat.WEECHAT_RC_OK
|
|
||||||
|
|
||||||
buffer_type = weechat.buffer_get_string(buffer, "localvar_type")
|
|
||||||
is_private = buffer_type == "private"
|
|
||||||
username = weechat.info_get("irc_nick", "") # Get the current IRC username
|
|
||||||
is_mentioned = f"@{username.lower()}" in message.lower() # Ensure @username is explicitly mentioned
|
|
||||||
|
|
||||||
# Ignore private messages if pm_response is off
|
|
||||||
if is_private and weechat.config_get_plugin("pm_response") == "off":
|
|
||||||
return weechat.WEECHAT_RC_OK
|
|
||||||
|
|
||||||
# Only respond in private messages if it's a direct question
|
|
||||||
if is_private and not message.strip().endswith("?"):
|
|
||||||
return weechat.WEECHAT_RC_OK
|
|
||||||
|
|
||||||
# Only respond in channels if explicitly mentioned or highlighted
|
|
||||||
if not is_private and not is_mentioned and not int(highlight):
|
|
||||||
return weechat.WEECHAT_RC_OK
|
|
||||||
|
|
||||||
response = ask_ollama(message)
|
|
||||||
|
|
||||||
if is_private:
|
|
||||||
weechat.command(buffer, f"/msg {prefix} {response}") # Reply to private message
|
|
||||||
else:
|
|
||||||
weechat.command(buffer, f"/say {response}") # Reply in the channel
|
|
||||||
|
|
||||||
return weechat.WEECHAT_RC_OK
|
|
||||||
|
|
||||||
def config_callback(data, option, value):
|
|
||||||
"""Callback for Weechat configuration changes."""
|
|
||||||
weechat.prnt("", f"[Ollama] Configuration changed: {option} = {value}")
|
|
||||||
return weechat.WEECHAT_RC_OK
|
|
||||||
|
|
||||||
# Register configuration with /set
|
|
||||||
weechat.config_set_desc_plugin("highlight_response", "Automatically respond to mentions in channels (on/off)")
|
|
||||||
weechat.config_set_desc_plugin("pm_response", "Automatically respond to private messages (on/off)")
|
|
||||||
weechat.hook_config("plugins.var.python.ollama.highlight_response", "config_callback", "")
|
|
||||||
weechat.hook_config("plugins.var.python.ollama.pm_response", "config_callback", "")
|
|
||||||
|
|
||||||
# Register commands and hooks
|
|
||||||
weechat.hook_command("ollama", "Ask something to Ollama", "<question>", "Example: /ollama What is Python?", "", "command_ollama", "")
|
|
||||||
weechat.hook_print("", "notify_highlight", "", 1, "message_callback", "")
|
|
||||||
weechat.hook_print("", "notify_message", "", 1, "message_callback", "")
|
|
||||||
weechat.hook_print("", "notify_private", "", 1, "message_callback", "")
|
|
||||||
|
|
@ -1,74 +0,0 @@
|
|||||||
#!/usr/bin/env python3
|
|
||||||
|
|
||||||
import subprocess
|
|
||||||
import json
|
|
||||||
import gi
|
|
||||||
gi.require_version("Gtk", "3.0")
|
|
||||||
gi.require_version("Gdk", "3.0")
|
|
||||||
from gi.repository import Gtk, Gdk
|
|
||||||
|
|
||||||
class ScratchpadPanel(Gtk.Window):
|
|
||||||
def __init__(self):
|
|
||||||
super().__init__(title="Scratchpad Windows")
|
|
||||||
self.set_border_width(10)
|
|
||||||
self.set_default_size(300, 200)
|
|
||||||
self.set_keep_above(True)
|
|
||||||
self.set_type_hint(Gdk.WindowTypeHint.DIALOG)
|
|
||||||
self.set_position(Gtk.WindowPosition.CENTER)
|
|
||||||
self.set_resizable(False)
|
|
||||||
|
|
||||||
self.box = Gtk.Box(orientation=Gtk.Orientation.VERTICAL, spacing=6)
|
|
||||||
self.add(self.box)
|
|
||||||
|
|
||||||
self.populate()
|
|
||||||
|
|
||||||
def populate(self):
|
|
||||||
clients = self.get_scratchpad_clients()
|
|
||||||
if not clients:
|
|
||||||
label = Gtk.Label(label="No hay ventanas en el scratchpad.")
|
|
||||||
self.box.pack_start(label, True, True, 0)
|
|
||||||
else:
|
|
||||||
for client in clients:
|
|
||||||
title = client.get("title", "Sin título")
|
|
||||||
app = client.get("class", "App")
|
|
||||||
address = client.get("address")
|
|
||||||
btn = Gtk.Button(label=f"{app} - {title}")
|
|
||||||
btn.connect("clicked", self.on_button_clicked, address)
|
|
||||||
self.box.pack_start(btn, True, True, 0)
|
|
||||||
|
|
||||||
# Agregar botón "Salir" al final
|
|
||||||
quit_btn = Gtk.Button(label="❌ Salir")
|
|
||||||
quit_btn.connect("clicked", self.on_quit_clicked)
|
|
||||||
self.box.pack_start(quit_btn, False, False, 10)
|
|
||||||
|
|
||||||
self.show_all()
|
|
||||||
|
|
||||||
def on_button_clicked(self, button, address):
|
|
||||||
subprocess.run(["hyprctl", "dispatch", "togglespecialworkspace", "scratchpad"])
|
|
||||||
subprocess.run(["hyprctl", "dispatch", "focuswindow", address])
|
|
||||||
self.destroy()
|
|
||||||
|
|
||||||
def on_quit_clicked(self, button):
|
|
||||||
self.destroy()
|
|
||||||
|
|
||||||
def get_scratchpad_clients(self):
|
|
||||||
try:
|
|
||||||
result = subprocess.run(["hyprctl", "clients", "-j"], capture_output=True, text=True)
|
|
||||||
clients = json.loads(result.stdout)
|
|
||||||
scratchpad = [
|
|
||||||
c for c in clients
|
|
||||||
if c.get("workspace", {}).get("name") == "special:scratchpad"
|
|
||||||
]
|
|
||||||
return scratchpad
|
|
||||||
except Exception as e:
|
|
||||||
print(f"Error obteniendo clientes: {e}")
|
|
||||||
return []
|
|
||||||
|
|
||||||
def main():
|
|
||||||
win = ScratchpadPanel()
|
|
||||||
win.connect("destroy", Gtk.main_quit)
|
|
||||||
Gtk.main()
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
|
||||||
main()
|
|
||||||
|
|
Loading…
x
Reference in New Issue
Block a user