Subject: bug#65702: 30.0.50; compile-command not honored in shell buffers

From: Eli Zaretskii <[email-masked]>
Date: Sat, 02 Sep 2023 16:59:30 +0300

> From: Matthias Meulien <[email-masked]>
> Date: Sat, 02 Sep 2023 15:39:20 +0200
> 
> 
> I customize the default compile command using directory local
> variables. For example, with a '.dir-locals' containing the following:
> 
> ;;; Directory Local Variables            -*- no-byte-compile: t -*-
> ;;; For more information see (info "(emacs) Directory Variables")
> 
> ((nil . ((compilation-search-path . (nil "builddir"))
> 	 (compile-command . "meson setup builddir . --cross-file crossfile_arm.ini ; pushd builddir && meson compile ; popd")
> 	 (compilation-environment . ("TERM=ansi"))
> 	 (ispell-local-dictionary . "en")
> 	 (project-vc-merge-submodules . nil)))
>  (c++-mode . ((c-basic-offset . 2)
> 	      (indent-tabs-mode . nil))))
> 
> When I enter the *vc-dir* buffer for the corresponding Git local
> repository, and I press 'C-x p c' ('project-compile' command) then the
> default compile command has the value specified in the previous
> '.dir-locals.el'.
> 
> Same with 'meson.build', 'README.md', '*.cc', '*.h', etc. files.
> 
> But when 'project-compile' is called from a shell buffer after I pressed
> 'C-x p s' then the default compile command is 'make -k'.  This is
> strange and looks like a bug to my eyes.

Aren't directory-local variables in effect only in file-visiting
buffers?  The shell buffer created by "C-x p s" doesn't visit a file,
so I think directory-local variables are not in effect for it.