1
0
Fork 0
mirror of https://github.com/processone/ejabberd synced 2025-10-03 01:39:35 +02:00
ejabberd/tools/emacs-indent.sh
Badlop 378bf64fd5 Replace rebar3_format with efmt, improve emacs indentation script
Revert partially "Add Makefile targets to format and indent source code"
This reverts commit 3bda858225.
2025-09-03 12:22:08 +02:00

46 lines
1.3 KiB
Bash
Executable file

#!/bin/sh
# To indent and remove tabs, surround the piece of code with:
# %% @indent-begin
# %% @indent-end
#
# Install Emacs and erlang-mode. For example in Debian:
# apt-get install emacs erlang-mode
#
# Then run:
# make indent
#
# Please note this script only indents the first occurrence per file
FILES=$(git grep --name-only @indent-begin include/ src/)
LOG=${1:-/tmp/ejabberd-format.log}
EMACS=${2:-emacs}
if [ ! "$EMACS" ] || [ ! -x "$EMACS" ]
then
echo "==> Cannot indent source code because Emacs is not installed"
exit 1
fi
for FILENAME in $FILES; do
echo "==> Indenting $FILENAME..." >>$LOG
emacs -batch $FILENAME \
-f "erlang-mode" \
--eval "(goto-char (point-min))" \
--eval "(re-search-forward \"@indent-begin\" nil t)" \
--eval "(setq begin (line-beginning-position))" \
--eval "(re-search-forward \"@indent-end\" nil t)" \
--eval "(setq end (line-beginning-position))" \
--eval "(erlang-indent-region begin end)" \
--eval "(untabify begin end)" \
-f "delete-trailing-whitespace" \
-f "save-buffer" >>$LOG 2>&1
done
grep -q 'Error' $LOG \
&& cat $LOG
grep -q 'Error: void-function (erlang-mode)' $LOG \
&& echo \
&& echo "==> Maybe you need to install erlang-mode system package" \
&& exit 1
rm $LOG