Skip to content

OmerBilgin21/print-debugger.nvim

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

25 Commits
 
 
 
 
 
 

Repository files navigation

Print Debugger:

Screen.Recording.2024-09-22.033530.mp4

Spits out a print statement for different languages. I myself am a print debugger, and find it tedious to always write print('data from somewhere', data) Therefore, I found myself writing a similar code to what is in here to my config.

Thought I'd create a plugin for it to keep it separated from my config.

Currently supported languages are:

  • JavaScript and JSReact
  • TypeScript and TSReact
  • Python
  • Lua
  • Go
  • Rust
  • Bash Script

I use these mostly, therefore created it for them for now.

Installation

Lazy.nvim

return {
  "OmerBilgin21/print-debugger.nvim",
  config = function()
    require("print-debugger").setup({
      keymaps = {
        "<C-g>",
      },
    })
  end,
}

Packer.nvim

use({
  "OmerBilgin21/print-debugger.nvim",
  config = function()
    require("print-debugger").setup({
      keymaps = {
        "<C-g>",
      },
    })
  end,
})

Vim-Plug

Plug 'OmerBilgin21/print-debugger.nvim'

lua << EOF
  require('print-debugger').setup({
    keymaps = {
      "<C-g>",
    },
  })
EOF

Per-language configuration (prefix & spread mode)

You can override the logger function and argument style per filetype.

require("print-debugger").setup({
  go = {
    prefix = "util.Log",     -- replaces fmt.Printf
    spread_mode = true,     -- util.Log("x: ", x) instead of formatted string
  },
  javascript = {
    prefix = "logger.info", -- replaces console.log
  },
  keymaps = {
    "<C-g>",
  },
})
  • prefix replaces the default logging function for that language.
  • spread_mode (Go only) disables formatting and passes arguments directly.

Example (Go):

util.Log("tokenString: ", tokenString)

Or, if you would like to define your own keymaps, the debug_function is exposed via print-debugger module. Meaning this would also work:

vim.keymap.set("n", "<C-h>", "<C-w>h", { desc = "Go to Left Window", remap = true })

If you go with the solution above, you then do not need to call the setup function.


Caution: This will break on data types that do not implement the Debug trait for Rust. (I do not know Rust; PRs welcome.)

About

Neovim plugin for spitting out print statements in various programming languages

Resources

Stars

Watchers

Forks

Contributors

Languages