Skip to content
 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

32 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

vim-debugstring

     _      _                     _        _
    | |    | |                   | |      (_)
  __| | ___| |__  _   _  __ _ ___| |_ _ __ _ _ __   __ _
 / _` |/ _ \ '_ \| | | |/ _` / __| __| '__| | '_ \ / _` |
| (_| |  __/ |_) | |_| | (_| \__ \ |_| |  | | | | | (_| |
 \__,_|\___|_.__/ \__,_|\__, |___/\__|_|  |_|_| |_|\__, |
                         __/ |                      __/ |
                        |___/                      |___/

Purpose

debugstring aims to automate standard debugging operations (e.g., segfaults). It does that by facilitating the ubiquitous printf()-debugging i.e., scatter logging statements around the various code snippets that you want to test.

Demos

Standard debugging - C++

demo_gif

Debugging for expression/variables - C++

demo_gif

Features

  • The form and syntax of the logging statements target the language at hand (e.g., use printf() in C/C++ but puts() in Ruby)

Currently the following languages are supported. First column corresponds to the standard debugging string while the second to the case of debugging for a specific variable.

// Debug String
std::cout << "[a.c:4] DEBUGGING STRING ==> " << 0 << std::endl;

// Debug Variable
std::cout << "[a.c:4] a_variable: " << a_variable << std::endl;
Lang Debug String Debug Variable
C ✔️ ✔️
C++ ✔️ ✔️
CMake ✔️ ✔️
Fortran ✔️
Haskell ✔️ ✔️
Java ✔️ ✔️
Javascript ✔️
PHP ✔️ ✔️
Python ✔️ ✔️
R ✔️ ✔️
Ruby ✔️
Shell ✔️ ✔️
Vim ✔️ ✔️
  • Support for debugging variable expressions e.g., the values of variables or arbitrary expressions at certain parts of your code
  • Support for vim-repeat. No need for repeat the same mapping, or rewrite the lengthy expression that you want to monitor, just use the . character

For a more detailed outline of debugstring check doc/debugstring.txt

Usage

Use the mappings of your choice to place unique logging directives during debugging times.

nnoremap <your-key-combination> <Plug>DumpDebugString
nnoremap <a-second-key-combination> <Plug>DumpDebugStringExpr

Default mappings are: <Leader>ds, <Leader>dS respectively.

Remarks - Debugging

  • Make sure that the filetype plugin is enabled. A line like filetype plugin on in your .vimrc should do the job.

Installation

Dependencies

debugstring depends on the following vim plugins:

  • vim-repeat [OPTIONAL]

Using a runtimepath/package manager

I would personally recommend using Pathogen for installing the plugin but any other installation method (e.g., Vundle) should do the job (if not please raise an issue on Github)

git clone https://github.com/tpope/vim-repeat ~/.vim/bundle/vim-repeat
git clone https://github.com/bergercookie/vim-debugstring.git ~/.vim/bundle/vim-debugstring

Manual installation

Copy the plugin files to their corresponding directories under ${HOME}/.vim (Linux) or $HOME/vimfiles (Windows).

Contributing

In case you want to contribute on a certain feature/fix, don't hesitate to discuss about it in the Github issues or to implement it and make a PR.

License

Current plugin is distributed under the same terms as Vim itself. See the LICENSE file

Self Promotion

In case you like the plugin, you might as well star it on Github or rate it on vim.org

TODO

  • Method to delete all the debugging strings in all "touched" buffers
  • Method to delete all the debugging strings in current buffer
  • Method to print name and contents of a variable
  • Add option for variable debugging in rest of langs
  • Make the counter buffer-specific
  • Escape double single quotes vimscript variable printing
  • Append to current line if that is empty
  • Support repeat.vim
  • Use an assertion module
  • Use vader.vim for TDD
  • Extend vader support for rest of languages
  • Use travis for CI
  • Bug with changing the filename of the current file
  • Make vim-repeat dependency optional
  • Turn supported languages into a table - what do we support in which language
  • Make vim-repeat dependency optional

About

Debug printf()-style at the speed of light

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages