From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Rolf Ade Newsgroups: gmane.emacs.help Subject: Re: Hook doesn't run as expected, if buffer mode is set from major-mode Date: Sat, 09 Jan 2016 23:14:17 +0100 Organization: Me, myself and I Message-ID: <87io32qu2u.fsf@point.pointsman.de> References: <87h9in4zee.fsf@linux-qg7d.fritz.box> <8760z34mhj.fsf@linux-qg7d.fritz.box> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: text/plain X-Trace: ger.gmane.org 1452377720 15936 80.91.229.3 (9 Jan 2016 22:15:20 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Sat, 9 Jan 2016 22:15:20 +0000 (UTC) To: help-gnu-emacs@gnu.org Original-X-From: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Sat Jan 09 23:15:19 2016 Return-path: Envelope-to: geh-help-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1aI1n4-0005cl-1D for geh-help-gnu-emacs@m.gmane.org; Sat, 09 Jan 2016 23:15:18 +0100 Original-Received: from localhost ([::1]:43743 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aI1n3-0003te-0U for geh-help-gnu-emacs@m.gmane.org; Sat, 09 Jan 2016 17:15:17 -0500 Original-Path: usenet.stanford.edu!fu-berlin.de!uni-berlin.de!individual.net!not-for-mail Original-Newsgroups: gnu.emacs.help Original-Lines: 55 Original-X-Trace: individual.net o5nxU8bHQwMIt/daIVdz3gJISes1JZUQuXcBcm3a5HiqPKYDo= Cancel-Lock: sha1:qNrRAX3DNWX6jyjc6j1SSDPNels= sha1:GRZjzJagHVp6VTO6jPGtGrXcR8s= User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.5 (gnu/linux) Original-Xref: usenet.stanford.edu gnu.emacs.help:216390 X-BeenThere: help-gnu-emacs@gnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: Users list for the GNU Emacs text editor List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Original-Sender: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.help:108680 Archived-At: Michael Heerdegen writes: > Rolf Ade writes: >> But this documentation doesn't tell the truth. > > Or we all misunderstand it. In both cases, a bug report could be > appropriate. Unfortunately I feel a bit uncomfortable to express myself in English; I'm afraid I can't make my point clear enough. At the moment, I see two different, although related topics: 1) The (for my eyes) much more important fact is, that you may have two files with identical content and which only differ in file name suffix. Depending on your default major mode, your auto-mode-alist and the mode hooks of your default major mode it is possible, that you open the one of that file and then the other - and the two buffers have the same major mode but are in a different state. Or, to put it in other words: The effect (or the result or whatever the appropriate word would be) of the mode hooks of your default major mode depends not only on the elisp code of that hooks and the content of the buffer, but - at least for me a bit surpising or unexpected - also on the question if a new opened buffer get its major mode by a match in auto-mode-alist or by default major mode. 2) The other, somewhat minor topic is the documentation of `major-mode'. It suggests (although somewhat vague) that a new buffer switches to the default mode (and run the mode hooks) in such an eary state, that the contents aren't already read into the buffer (and therefor, the hook code can't work on the content or have the content to look at). This seems not to be true (at least not completely), from what I see. Some mystery things happen, so that, at the end, it looks like it would be so, as the documentation say, but it isn't true. Are this two different bug reports? And, out of curiosity, why are the things, as they seem to be? Why isn't the process of opening a file just (schematic): - Buffer is created - Bile content is read into the buffer - The major mode of the new buffer is searched by looking at auto-mode-alist, interpreter-mode-alist and magic-mode-alist (and what not else). - If a major mode is found, in the step above, the buffers local variable major-mode is set to this and the mode hooks do run. - If no applicable mode was found, above, the mode of the new buffer is the default mode and the hooks if that mode run.