Какой идиоматический способ реализации полиморфных обратных вызовов в elisp?
В частности, предположим, что у меня есть второстепенный режим с функцией, которая выполняет определенную операцию, а затем вызывает другую функцию. Эта вторая функция должна иметь различную реализацию в зависимости от того, содержит ли текущий буфер файл C ++ или файл Java.
В качестве альтернативы, предположим, я хочу перегрузить переменные, а не функции. Например, я хочу вызвать некоторый внешний исполняемый файл, и один из переданных ему аргументов отличается в зависимости от того, имеет ли текущий буфер файл C ++ или файл Java. Я хочу иметь возможность построить командную строку в обобщенной функции и заменить один аргумент в зависимости от содержимого буфера. make-variable-buffer-local
правильный подход? В какой момент (и по какому механизму) эти локальные переменные изначально должны быть установлены?