EDIT:
Ваш пересмотренный вопрос добавляет некоторые ключевые детали, на которые не ответил мой ответ. Филс предоставил один из способов решения этой проблемы. Другой будет использовать yasnippet . Вы можете включить произвольный код lisp в свои шаблоны сниппета, чтобы вы могли сделать что-то вроде этого:
# -*- mode: snippet -*-
# name: foobars
# key: fbf
# binding: direct-keybinding
# --
`(foo-bar-for-the-win)`
Вы должны убедиться, что ваша функция ничего не возвращает, или она будет вставлена в буфер. Я не использую режим abbrev, поэтому я не знаю, приведет ли это к конфликтам. Для запуска yas / snippet нужно немного поэкспериментировать, но это довольно удобно, как только вы его настроите.
Оригинальный ответ:
Вы можете привязать пространство к любой функции, которая вам нравится. Вы можете привязать все клавиши пунктуации к одной и той же функции или к различным функциям.
(define-key your-mode-map " " 'your-choice-function)
Возможно, вы захотите сделать это на карте пользовательского режима, чтобы при переключении режимов вы могли вернуться к нормальному поведению. Глобальное задание пространства для чего угодно, кроме самостоятельной вставки, было бы бесполезным.