Setting up Emacs for Prolog
06 Oct 2024 - João Porto
How to set up Emacs for Prolog
Set up
First of all, I installed the GNU Prolog via
sudo apt install gprolog
. Prolog per se worked fine, but I was
struggling to make .pl
files be recognized by Emacs, because it was
considering .pl
as Perl files, not Prolog files.
Then I thought that I could install a major mode package for Prolog,
just like I did for Go, Elixir and PHP (via, e.g.,
M-x package-install RET go-mode
). But apparently there was no ELPA
package prolog-mode or something like that available, at least no
one that I would find throught the M-x list-packages
. The list just
shown the packages ediprolog and sweeprolog. Both of these two
enable query Prolog directly from Emacs's buffer, but the last one
specifically for the SWI-Prolog.
Then I thought "Well, maybe installing the sweeprolog I can get Prolog syntax hightlight as a side effect.". Therefore, I asked to Gemini what is the difference between GNU Prolog and SWI-Prolog. In short, both are implementations of Prolog, being the first one faster and the second one popular.
Thereafter, I uninstalled GNU Prolog, because I was going to install SWI-Prolog, but first I read the description of ediprolog, and I found this video that demonstrate its features. Watching the video I noticed that a Prolog mode was in use on the presenter's Emacs and I thought "Hmm, there is a Prolog mode, but it is not listed in the packages list.".
Then I asked to Gemini what is the name for Prolog's major mode in
Emacs, and its answer was prolog-mode. Also, I asked how to check
the available modes in Emacs and Gemini suggested M-x list-modes
, a
command that, at least in my Emacs, does not exists. I did the same
question to ChatGPT, and it answered M-x apropos-command RET -mode
,
that indeed lists the available mode, including that one I was seeking
for.
I read the description provided for prolog-mode, trying to find the
way to set the mode, but the description was not helpful. Finally, I
asked to ChatGPT how to change the current buffer to a specific mode,
and it suggested simply M-x prolog-mode
, what makes complete sense. If
I had noticed before that M-x apropos-command
is used exactly to
provide information about commands, I maybe would understand early that
prolog-mode was listed because it is a command per se, and then, can
be executed via M-x
.
Anyway, the command worked and then I successfully changed to Prolog
mode, with the correct syntax hightlight. Also, for Emacs recognize
.pl
as a file to be opened with Prolog mode, ChatGPT suggested to
put (add-to-list 'auto-mode-alist '("\\.pl\\'" . prolog-mode))
into
~/.emacs
.
About this last point, a interesting thing is that I asked to Gemini how
to do that a few days ago, and it suggested to put
(setq auto-mode-alist (append '(("\\.pl$", . prolog-mode)) auto-mode-alist))
into ~/.emacs
, which did not work, otherwise, I would to skip all
these process.
But the process was not useless, because I found ediprolog and sweeprolog, that I may use, since Org-mode seems not offer support for Prolog.
References
“GNU ELPA - Ediprologes.” Gnu.org, 2024, elpa.gnu.org/packages/ediprolog.html. Accessed 6 Oct. 2024.
“GNU ELPA Packages.” Gnu.org, 2020, elpa.gnu.org/packages/. Accessed 6 Oct. 2024.
Google. “Gemini.” Gemini.google.com, 2024, gemini.google.com/app. Accessed 6 Oct. 2024.
“NonGNU ELPA - Sweeprolog.” Nongnu.org, 2024, elpa.nongnu.org/nongnu/sweeprolog.html. Accessed 6 Oct. 2024.
“NonGNU ELPA Packages.” Nongnu.org, 2015, elpa.nongnu.org/nongnu/. Accessed 6 Oct. 2024.
OpenAI. “ChatGPT.” Openai.com, 2024, openai.com/chatgpt/. Accessed 6 Oct. 2024.
Schulte, Eric. “Babel: Languages.” Orgmode.org, 2014, orgmode.org/worg/org-contrib/babel/languages/index.html. Accessed 6 Oct. 2024.
The Power of Prolog. “Ediprolog: Emacs Does Interactive Prolog.” YouTube, 14 July 2019, youtube.com/watch?v=jMg8sY2R930. Accessed 6 Oct. 2024.