Можно поместить код в строку и передать его eval
или sh
или просто интерполируйте его.
perform () {
"$@"
}
perform echo "moo"
Можно быстро закончить в глубокой проблеме заключения в кавычки, все же.
Проблема заключается в том, что приглашение не соответствует тому, что ожидает sql-mode
. MariaDB использует «MySQL [dbname]>» в качестве приглашения по умолчанию, а sql-mode
разрешает только «mysql>».
Одно из исправлений - добавить "--prompt = mysql>" в sql-mysql-options
:
(setq sql-mysql-options '("--prompt=mysql> "))
Лучше исправить регулярное выражение, чтобы разрешить любой стиль подсказки. Но мне трудно заставить это работать, поэтому я награжу награду, если кто-то опубликует, как это сделать.
Я пробовал
(sql-set-product-feature 'mysql :prompt-regexp "^[mM]y[sS][qQ][lL][^>]*> ")
, но это не сработает, если в приглашении не указано «mysql>» или «MySQL>».
Вы забыли выйти из специального символы. Elisp-regex довольно многозначен с обратной косой чертой, так как первый \ проглатывается строкой lisp. См. https://www.emacswiki.org/emacs/RegularExpression
Чтобы поймать MariaDB и MySQL, в моей конфигурации есть следующее:
(sql-set-product-feature 'mysql: prompt-regexp " ^ \\ (MariaDB \\ | MySQL \\) \\ [[_ a-zA-Z] * \\]> ")