Eu acho que isso é um bug no Dired (e também no Dired +).
Eu apenas corrigi- lo em Dired +
( dired+.el
). Faça o download da versão mais recente (ou aguarde um dia para buscá-la no MELPA).
Eu verifiquei isso rapidamente, então é possível que exista uma boa razão para o comportamento existente (de longa data), mas por enquanto, pelo menos, acho que foi um bug.
Obrigado por denunciá-lo. Depois de conferir um pouco mais, relatarei como um bug do Emacs. Ou você pode fazê-lo agora, se você gosta: M-x report-emacs-bug
.
ATUALIZAR
Na verdade, as coisas são mais interessantes (isto é, mais complicadas). Estou ocupado no momento, mas atualizarei isso em pouco tempo.
Basta dizer que existem vantagens em diferentes maneiras de definir os "nomes de arquivos" correspondentes. Se você pegar a versão atual (atualizada esta manhã) dired+.el
, ela fará o que você esperava: corresponda aos nomes dos arquivos sem subdiretação como prefixo.
Mas também pode ser útil comparar com os subdiretórios e com os nomes dos arquivos. Dessa forma, por exemplo, você pode combinar o mesmo nome de arquivo em vários subdiretórios - ou não, au choix.
Provavelmente vou mudar %m
(no Dired +) para que um certo tipo de prefixo arg ofereça comportamentos de correspondência diferentes e alternativos. (No momento, um prefixo arg desmarca em vez de marcas. Eu posso alterá-lo para que o sinal numérico decida se deseja desmarcar e que tipo de correspondência fazer.)
Se você quiser experimentar, basta pegar a definição de dired-mark-files-regexp
, juntamente com a definição de macro dired-mark-if
, de dired+.el
e alterar o valor do primeiro argumento para dired-get-filename
( LOCALP
). Existem várias possibilidades de correspondência, regidas por esse valor de argumento.
ATUALIZAÇÃO 2
OK, atualizei o Dired +
( dired+.el
) agora para fornecer mais flexibilidade nesse sentido.
Agora você pode marcar / desmarcar nomes de arquivos correspondentes que são considerados de maneiras diferentes:
Relativo (sem parte do diretório, que é o que você estava incorretamente assumindo que estava correspondendo).
Para isso, use um prefixo negativo arg (por exemplo M--
) para marcar e um prefixo zero arg (por exemplo M-0
) para desmarcar.
Relativo aodefault-directory
buffer Dired. Isso significa que o nome do arquivo é construído com o nome relativodefault-directory
. Para uma entrada em uma listagem de subdiretórios inserida, isso significa prefixar o nome do arquivo relativo (sem parte do diretório) com o nome do subdiretório relativo adefault-directory
.
Para isso, use um arg positivo (por exemplo M-+
) para marcar e um prefixo duplo e simples arg ( C-u C-u
) para desmarcar.
Isto é o que você estava realmente correspondência, o que explica por que você viu o que viu. Com esse comportamento, você precisaria fornecer uma regexp que correspondesse ao nome em relação ao default-directory
buffer. Seu uso ^
no regexp estava tentando corresponder ao início desse nome, não ao nome do não-diretório. Esse é o mesmo comportamento do Emacs de baunilha.
Absoluto (nome completo, incluindo todas as partes do diretório).
Para isso, você não usa o prefixo arg para marcar e um prefixo simples arg ( C-u
) para desmarcar. Portanto, esse é o comportamento padrão agora para o Dired + . Eu acho que é provavelmente um comportamento padrão melhor do que o usado pelo Emacs de baunilha (nomes relativos a default-directory
).