Я пытаюсь расширить функции выбора etags -, чтобы он возвращался -к обычному тегу find -, если найти тег -в точке не удалось. Я пробовал код:
(defun my-etags-find-tag ()
"Find at point or fall back"
(interactive)
(unless (etags-select-find-tag-at-point)
(etags-select-find-tag)))
(global-set-key (kbd "C-f") 'my-etags-find-tag)
Однако это не удается, когда точка не соответствует допустимому тегу. Вместо этого я получаю сообщение об ошибке, вызванное etags -выберите -найдите -тег -в точке -:
etags-select-find-tag-at-point: Wrong type argument: char-or-string-p, nil
В этом случае мне просто нужно повторить тест, выполненный etags -выбрать -найти -тег -в -точка:
(defun my-etags-find-tag ()
"Find at point or fall back"
(interactive)
(if (find-tag-default)
(etags-select-find-tag-at-point)
(etags-select-find-tag)))
Но это кажется немного избыточным. Можно ли перехватывать исключения и выполнять альтернативную обработку в elisp?