Não sei se entendi sua pergunta. Sim, com o Bookmark + você pode ter vários favoritos com o mesmo nome de favorito. (Na verdade, você também pode usar o Emacs baunilha, mas não é útil.)
Se você criar marcadores de autofile , por exemplo, o nome do favorito é o mesmo que o nome do arquivo relativo, mas o nome do arquivo gravado é absoluto, assim você pode ter diferentes marcadores com o mesmo nome, apontando para arquivos de mesmo nome que estão em diretórios diferentes.
Para aproveitar isso, você precisa garantir que o valor da opção bmkp-propertize-bookmark-names-flag
não seja nil
. Você pode alternar essa opção na exibição *Bookmark List*
usando o menu Bookmark+
> Toggle
> Allowing Identical Bookmark Names
.
Você não precisa fazer nada de especial, além disso, para poder criar e usar marcadores com o mesmo nome.
A string doc de bookmark-set
diz isso:
Plain prefix arg ('C-u'): Do not overwrite a bookmark that has the
same name as NAME, if such a bookmark already exists. Instead,
push the new bookmark onto the bookmark alist.
Assim, para um marcador comum (por exemplo, não um arquivo automático), use C-u
com C-x r m
para permitir a criação de um marcador adicional com o mesmo nome.
Com o Marcador +, o comando bmkp-bookmark-set-confirm-overwrite
, não bookmark-set
, está vinculado a C-x r m
. A string doc diz isto:
This is the same as 'bookmark-set', except that with no prefix arg you
are asked to confirm overwriting an existing bookmark of the same
NAME.
Ou seja, se você usar C-x r m
sem um prefixo arg, antes de sobrescrever um marcador existente com o mesmo nome, será solicitado que você confirme a substituição. Isso significa que você não precisa se preocupar em sobrescrever inadvertidamente.
Atualize após seus comentários
Este não é realmente o lugar para uma discussão. E sua pergunta ainda não está muito clara.
Você está perguntando como verificar se há um marcador existente que tenha um nome determinado e reserve um determinado arquivo? Em caso afirmativo:
(defun bookmark-name+filename-exists-p (bookmark file)
"Return a bookmark named BOOKMARK for FILE, or nil if there is none.
BOOKMARK is a bookmark name or a bookmark record."
(when (consp bookmark) (setq bookmark (bookmark-name-from-full-record bookmark)))
(catch 'bookmark-exists-p
(dolist (bmk bookmark-alist)
(when (and (string= bookmark (bookmark-name-from-full-record bmk))
(bmkp-same-file-p file (bookmark-get-filename bmk)))
(throw 'bookmark-exists-p bmk)))
nil))
Você está pedindo uma lista de todos os favoritos que têm um nome específico? Em caso afirmativo:
(defun bookmarks-with-name (bname)
"Return a list of the bookmarks with name BNAME."
(bmkp-remove-if-not
'(lambda (bmk) (string= ',bname (bookmark-name-from-full-record bmk)))
bookmark-alist))