Formátování zdrojového kódu

Formátování a odsazení zdrojového kódu může výrazně zvýšit čitelnost a přehlednost zdrojového kódu. Většina textových editorů s minimální podporou programovacích jazyků umožňuje automaticky text formátovat, proto není ruční formátování nutné.

Součástí kompilátoru clang je také formátovací nástroj clang-format, který lze použít jako tzv. filtr, který zformátuje vstupní soubor dle definovaných pravidel. Nástroje lze použít napříkld s následujícími argumenty

clang-format -style="{BasedOnStyle: llvm, IndentWidth: 4, BreakBeforeBraces: Linux}"

Formátování ve VS Code

Formátování clang-format je přímo používáno ve VS Code, kde kromě nastavení prostředí můžeme lokálně v rámci pracovního adresáře se zdrojovými soubory nastavit formátovač souborem .clang-format přímo z terminálu VS Code jako na přiloženém screenshotu.

Formátovací skript v gedit

Formátování příkazem clang-format můžeme využít například pro vytvoření skriptu pro formátování v editor gedit. Přímou konfiguraci editor u gedit lze realizovat například následujícím skriptem, který lze uložit do souboru setup_gedit.sh, nastavit práva pro spuštění chmod +x setup_gedit.sh a spustit např. ./setup_gedit.sh.

#!/usr/bin/env bash
# This script parametrize the working environment of the Gedit editor
 
# setup environment
gsettings set org.gnome.gedit.preferences.editor display-line-numbers true
gsettings set org.gnome.gedit.preferences.editor highlight-current-line true 
gsettings set org.gnome.gedit.preferences.editor bracket-matching true
gsettings set org.gnome.gedit.preferences.editor auto-indent true
gsettings set org.gnome.gedit.preferences.editor tabs-size 4
gsettings set org.gnome.gedit.preferences.editor scheme 'Classic'
 
# allow external tools 
gsettings set org.gnome.gedit.plugins active-plugins "['spell', 'zeitgeistplugin', 'filebrowser', 'modelines', 'docinfo', 'time','externaltools']"
 
# add new external tool to format code
# first check if clang format is installed
if [ $(dpkg-query -W -f='${Status}' clang-format* 2>/dev/null | grep -c "ok installed") -eq 0 ]
then
# if not -> exit
	echo >&2 "clang-format not installed! Exiting"
	exit 1
fi
 
# otherwise get the version and add an external tool to gedit
CLANG_VERSION=$(ls /usr/bin/clang-format* | grep -oE 'clang-format-[0-9]+')
 
echo >&2 "Using $CLANG_VERSION"
mkdir -p $HOME/.config/gedit/tools
cd $HOME/.config/gedit/tools
touch format
echo "#!/bin/sh
# [Gedit Tool]
# Name=Format
# Save-files=document
# Applicability=all
# Output=replace-document
# Input=document
# Shortcut=<Primary>b
 
$CLANG_VERSION -style=\"{BasedOnStyle: llvm, IndentWidth: 4, BreakBeforeBraces: Linux}\"" > format
chmod +x format

courses/b0b36prp/tutorials/coding/formatting.txt · Last modified: 2022/10/18 18:50 by faiglj