Skip to content

πŸ”₯ A hot reloader that works with any programming language.

License

Notifications You must be signed in to change notification settings

sachinsenal0x64/hot.nvim

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Hot

Hot

πŸ”₯ A hot reloader that works with any programming language.


πŸ’• Community

🍻 Join the community: Discord


🎞️ DEMO

hifi tui


✨ Features

  • Zero Dependencies

  • Highly Customizable

  • Multiple Languages & Unittest Reloader on the fly

  • Start | Stop | Silent | Real Time Debug | Buffer Open / Close Reload on Save

  • Userscript for the Browser.

  • Custom Healthchecker

  • Lualine (Status Bar) Plugin


πŸ“¦ Installation

Note

Install the plugin with your preferred package manager.

πŸ’€ lazy.nvim

hot.nvim
    -- Enable Current directory 
    vim.opt.autochdir == true,

    {
        'sachinsenal0x64/hot.nvim',
        config = function()
          local opts = require('hot.params').opts
  
          -- Update the Lualine Status
          Reloader = opts.tweaks.default
          Reloader = 'πŸ’€'
  
          Pattern = opts.tweaks.patterns
          Pattern = { 'main.py', 'main.go' }
  
          opts.tweaks.start = 'πŸš€'
          opts.tweaks.stop = 'πŸ’€'
          opts.tweaks.test = 'πŸ§ͺ'
          opts.tweaks.test_done = 'πŸ§ͺ.βœ…'
          opts.tweaks.test_fail = 'πŸ§ͺ.❌'
  
          -- If the 'main.*' file doesn't exist, it will fall back to 'index.*'
          opts.tweaks.custom_file = 'index'
  
          -- Add Languages
          opts.set.languages.python = {
            cmd = 'python3',
            desc = 'Run Python file asynchronously',
            kill_desc = 'Kill the running Python file',
            emoji = '🐍',
            test = 'python -m unittest -v',
            ext = { '.py' },
          }
  
          opts.set.languages.go = {
            cmd = 'go run',
            desc = 'Run Go file asynchronously',
            kill_desc = 'Kill the running Go file',
            emoji = '🐹',
            test = 'go test',
            ext = { '.go' },
          }
  
          -- Thot Health Check
          vim.api.nvim_set_keymap('n', 'ho', '<Cmd>lua require("thot").check()<CR>', { noremap = true, silent = true })
  
          -- Keybinds
  
          -- Start
          vim.api.nvim_set_keymap('n', '<F3>', '<Cmd>lua require("hot").restart()<CR>', { noremap = true, silent = true })
          -- Silent
          vim.api.nvim_set_keymap('n', '<F4>', '<Cmd>lua require("hot").silent()<CR>', { noremap = true, silent = true })
          -- Stop
          vim.api.nvim_set_keymap('n', '<F5>', '<Cmd>lua require("hot").stop()<CR>', { noremap = true, silent = true })
          -- Test
          vim.api.nvim_set_keymap('n', '<F6>', '<Cmd>lua require("hot").test_restart()<CR>', { noremap = true, silent = true })
          -- Close Buffer
          vim.api.nvim_set_keymap('n', '<F8>', '<Cmd>lua require("hot").close_output_buffer()<CR>', { noremap = true, silent = true })
          -- Open Buffer
          vim.api.nvim_set_keymap('n', '<F7>', '<Cmd>lua require("hot").open_output_buffer()<CR>', { noremap = true, silent = true })
  
          -- Auto Reload on Save
  
          local save_group = vim.api.nvim_create_augroup('save_mapping', { clear = true })
          vim.api.nvim_create_autocmd('BufWritePost', {
            desc = 'Reloader',
            group = save_group,
            pattern = Pattern,
            callback = function()
              require('hot').silent()
            end,
          })
        end,
      },

⚑ lualine.nvim

status bar
 
local hot = {
          'Reloader',
        },

sections = {

    lualine_b = {
            hot,
   }
},   

🐡 violentmonkey

userscript for browser live reloading
// ==UserScript==
// @name         Hot
// @namespace    https://github.com/sachinsenal0x64/hot.nvim
// @version      1.0
// @description  πŸ”₯ A hot reloader for the Browser.
// @author       sachinsenal0x64
// @match        *://*.localhost:8086/*
// @match        *://*.atom.com/*
// @license      MIT
// @grant        none
// ==/UserScript==

(function() {
  'use strict';

  // Create a meta tag for auto-refresh
  var metaTag = document.createElement('meta');
  metaTag.setAttribute('http-equiv', 'refresh');
  metaTag.setAttribute('content', '5'); // Refresh every 5 seconds

  // Find the <head> element and append the meta tag to it
  var head = document.querySelector('head');
  head.appendChild(metaTag);
})();

πŸ† Now you're ready to go! Hooray!


πŸ«‚ Contributing

  • Feel free to send PR's regarding spelling mistakes, incorrect grammar etc.

About

πŸ”₯ A hot reloader that works with any programming language.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages