--- - name: Check if Emacs is already set up for publishing stat: path: "{{ emacs_config_dir }}/emacsconf-config.el" register: publish_config - name: Set up for publishing include_role: name: publish when: not publish_config.stat.exists - name: Install Emacs packages shell: | emacs --batch --exec "(progn (require 'package) (let ((packages (seq-remove #'package-installed-p '({% for package in emacsconf_edit_packages %}{{ package }} {% endfor %})))) (when packages (package-refresh-contents) (mapc #'package-install packages))))" - name: Set up Emacs configuration for interactive editing template: src: emacsconf-edit.el dest: "{{ emacs_config_dir }}/emacsconf-edit.el" owner: "{{ emacsconf_user }}" group: "{{ emacsconf_group }}" - name: Check if Emacs base configuration already exists lineinfile: dest: "{{ emacs_config_dir }}/init.el" state: present regexp: "emacsconf-edit" line: "(load-file \"{{ emacs_config_dir }}/emacsconf-edit.el\")" owner: "{{ emacsconf_user }}" group: "{{ emacsconf_group }}" create: yes