I got a situation here, that I couldn't get resolved with the maintainer of web-mode
. So I'm asking here, if anyone knows a good suggestion.
Ok, what I have here: GNU Emacs GUI (version 24.4.51.1 (x86_64-w64-mingw32) compiled from Harroogan Emacs.) Packages web-mode and header2.el. If you need more detail about header2, see right answer here on StackExchange. It's a great package, I really recommend it.
Situation:
header2.el lets you define file headers for different types of file (C, shell, EmacsLisp, and so on). You can automatically insert a header when you open a new file buffer.
I ran into crashes, when I use web-mode in combination with header2.el. This is tested with an empty Emacs configuration (emacs -q
).
When I use header2.el in combination with PHP-mode, JS-mode, and HTML-mode, I don't run into crashes and everything works fine.
Action:
First, you need to configure your emacs.d, in order to get the packages.
(setq user-emacs-directory "C:/Dropbox/Emacs/.emacs.d/")
(add-to-list 'load-path "C:\\Dropbox\\Emacs\\.emacs.d\\")
Then do load the packages Web-mode and header2.
(require 'header2)
(require 'web-mode)
Then you need to configure the header, and set it up to be automatic created when create a new file:
(setq php-tag "<?php \n \n")
(setq html-close-tag " --> \n")
(defsubst my/header-title ()
(insert
(if (eq major-mode 'php-mode)
php-tag
" \n")
(concat comment-start " File " (buffer-name))
(if (eq major-mode 'web-mode)
html-close-tag
" \n")
"\n"))
(setq make-header-hook '(my/header-title))
(autoload 'auto-update-file-header "header2")
(add-hook 'write-file-hooks 'auto-update-file-header)
(autoload 'auto-make-header "header2")
(add-hook 'html-mode-hook 'auto-make-header)
(add-hook 'web-mode-hook 'auto-make-header)
(add-hook 'php-mode-hook 'auto-make-header)
(add-hook 'js-mde-hook 'auto-make-header)
Errornous behavior:
I create in Emacs a new file, called foobar.php
. I get the header automatically inserted for me. And I can type around and press RET
. Everything works fine. Same for foobar.js
and foobar.html
Then I add (add-to-list 'auto-mode-alist '("\\.html\\'" . web-mode))
to my setup. This means that when I open a HTML file, Web-mode will be enabled as a major mode.
I restart Emacs. Then I create a new file, called foobar.html
. The .html
-filetype is hooked on web-mode. When typing some characters and press RET
, this causes Emacs to freeze. Nothing is appearing in the *Messages*
-buffer. This will not happen, when I don't add the .html
extension to the Web-mode
on auto-mode-alist, and get html-mode
instead.
Notice that autoheader is not a minor mode. It's a action hook, that insert the text when you enter a major mode. So I'm puzzled why it lets unrecoverrable crashing Emacs. It's a fairly simple package, after all.
Any suggestion would be appreciated.
header2
solves that the built-inauto-insert-mode
doesn't?header2
updates the modified date and version number automatically every time when I save the file.Auto-insert-mode
doesn't offer that feature.web-mode-engines-alist
available, butweb-mode-engines
was available: pastebin.com/s4BqGBMD and fromauto-mode-alist
: pastebin.com/20jwadsU But I don't get it why this could be helping.