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

3cd813e Β· Apr 26, 2024
Apr 26, 2024
Apr 24, 2024
Apr 24, 2024
Apr 26, 2024

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