Skip to content

Instantly share code, notes, and snippets.

@Strus
Strus / clangd.md
Last active January 17, 2026 18:29
How to use clangd C/C++ LSP in any project

How to use clangd C/C++ LSP in any project

tl;dr: If you want to just know the method, skip to How to section

Clangd is a state-of-the-art C/C++ LSP that can be used in every popular text editors like Neovim, Emacs or VS Code. Even CLion uses clangd under the hood. Unfortunately, clangd requires compile_commands.json to work, and the easiest way to painlessly generate it is to use CMake.

For simple projects you can try to use Bear - it will capture compile commands and generate compile_commands.json. Although I could never make it work in big projects with custom or complicated build systems.

But what if I tell you you can quickly hack your way around that, and generate compile_commands.json for any project, no matter how compilcated? I have used that way at work for years, originaly because I used CLion which supported only CMake projects - but now I use that method succesfully with clangd and Neovim.

@jimmychu0807
jimmychu0807 / string-conversion.rs
Created November 21, 2019 10:20
Conversion between String, str, Vec<u8>, Vec<char> in Rust
use std::str;
fn main() {
// -- FROM: vec of chars --
let src1: Vec<char> = vec!['j','{','"','i','m','m','y','"','}'];
// to String
let string1: String = src1.iter().collect::<String>();
// to str
let str1: &str = &src1.iter().collect::<String>();
// to vec of byte
@fnky
fnky / ANSI.md
Last active January 22, 2026 19:54
ANSI Escape Codes

ANSI Escape Sequences

Standard escape codes are prefixed with Escape:

  • Ctrl-Key: ^[
  • Octal: \033
  • Unicode: \u001b
  • Hexadecimal: \x1B
  • Decimal: 27
@robertpainsi
robertpainsi / commit-message-guidelines.md
Last active January 18, 2026 05:21
Commit message guidelines

Commit Message Guidelines

Short (72 chars or less) summary

More detailed explanatory text. Wrap it to 72 characters. The blank
line separating the summary from the body is critical (unless you omit
the body entirely).

Write your commit message in the imperative: "Fix bug" and not "Fixed
bug" or "Fixes bug." This convention matches up with commit messages
@svenevs
svenevs / gravizo.md
Last active October 26, 2022 23:06
Having trouble using Gravizo? Cheat the system

What is Gravizo?

Gravizo is a really cool tool to display graphs in your README.

What is the Problem?

Lately, none of their examples seem to be working for me. I don't like using the indirect method, because it means that if the indirect breaks or is no longer public or whatever, who

@peterflynn
peterflynn / Useful GitHub bookmarklets
Last active December 28, 2024 15:09
GitHub comment thread bookmarklets
To use: create a new bookmark and paste into the URL field.
In Chrome, you can paste the full multiline code as shown below.
In other browsers, you may need to minify the code into one line first.
@shamil
shamil / mount_qcow2.md
Last active January 15, 2026 18:05
How to mount a qcow2 disk image

How to mount a qcow2 disk image

This is a quick guide to mounting a qcow2 disk images on your host server. This is useful to reset passwords, edit files, or recover something without the virtual machine running.

Step 1 - Enable NBD on the Host

modprobe nbd max_part=8
@rhysrhaven
rhysrhaven / Bash State Machine
Last active December 17, 2022 13:21
Simple bash state machine to re-run script in the same place after failure. Better to use case statement fall through if you have Bash 4.
#!/bin/bash
LOL=/tmp/LOLZ
RUNNING=true
while $RUNNING; do
case $([ -f $LOL ] && cat $LOL) in
INIT)
echo "Reached INIT State. Moving to WORK state."
echo "WORK" > $LOL
@MohamedAlaa
MohamedAlaa / tmux-cheatsheet.markdown
Last active January 22, 2026 13:03
tmux shortcuts & cheatsheet

tmux shortcuts & cheatsheet

start new:

tmux

start new with session name:

tmux new -s myname