{{indexmenu_n>1}}
====== 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.
{{:courses:bab36prga:tutorials:coding:vs_code_local_clang_format.png?800|}}
===== 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=b
$CLANG_VERSION -style=\"{BasedOnStyle: llvm, IndentWidth: 4, BreakBeforeBraces: Linux}\"" > format
chmod +x format