Emacs Prelude, Smartparens и OSX

Я использую OSX 10.9, iTerm2, Emacs Prelude и Clojure со всеми режимами, которые наиболее важны, smartparens. До сих пор хорошо.

Коротко: нашел ли кто-нибудь гармоничный способ использовать все это вместе с OSX Mission Control?

Более длинная версия гласит: я хочу иметь возможность использовать такие команды, как sp-forward-slurp-sexp, которая по умолчанию имеет комбинацию клавиш C-<right>, более известную как ярлык на уровне ОС по умолчанию для «переключать пробелы прямо через Mission Control». Я могу довольно легко переназначить это (скажем, на C-Shift-<right>), но теперь я обнаружил, что C-<right> на самом деле посылает что-то вроде M-[1;4A. Вместо запуска sp-forward-slurp-sexp вы получаете sp-wrap-with-pair "[". Эм.

Я откопал эту диссертацию о переназначении клавиш, что очень тщательно, но также включает в себя переназначение довольно большого количества вещей, а затем отключение частей paredit, которые прослушивают команду M-[. Хотя технически это работает, на самом деле мне нравится, когда sp-wrap-with-pair включен. Возможно, лучшим вариантом было бы принять теоретически эквивалентное C-(, за исключением того, что iTerm2 интерпретирует это только как буквальное 9, а C-) как 0. used-to-paredit-in-emacs-on-os-x-how-come-c-doesnt-work">Этот ТАК пост разжевывает эту проблему и доходит до дразнящего комментария, предполагающего, что C-( и C-) просто переназначаются на управляющие последовательности, которые emacs может отображать обратно на C-( и C-) -- но, честно говоря, я понятия не имею, как выяснить, какими должны быть управляющие последовательности.

Принося все это домой: кто-нибудь нашел способ использовать все эти инструменты (Mission Control, iTerm2, Emacs Prelude, smartparens) вместе без необходимости переподключения или отключения частей некоторых или большинства из них? Или: у кого самая элегантная перепроводка? Кто-нибудь уже разобрался с трюком C-)-to-escape-sequence-back-to-C-)?

Изменить

Копаясь в темноте, я сделал следующее: 1. Настроил iTerm на отправку escape-последовательности для сочетания клавиш Ctrl-Shift-0 (C-S-)) из SPRTPRN. 2. Поместите это в мою конфигурацию emacs:

(define-key input-decode-map "\eSPRTPRN" [C-right-paren])
(global-set-key [C-right-paren] (kbd "C-)"))

...это не работает, но у меня есть предчувствие, что я приближаюсь. Я думаю.

Редактировать, снова

Я кое-что понял: идея о том, что Shift здесь не работает, для меня не имеет смысла. По крайней мере, в моей установке emacs M-‹ и M-> переходят к началу и концу буфера соответственно — и чтобы использовать эти команды, мне фактически нужно нажать Meta-Shift-‹ . Хм.


person Gastove    schedule 01.12.2013    source источник
comment
Как насчет того, чтобы использовать start-process и написать osascript / apple-script для управления Mission Control вместо общесистемных ярлыков, конфликтующих с Emacs? (например, скажите приложению... центру управления полетами... сделай халтуру и развернись...) И, конечно же, отключите любые сочетания клавиш в Системных настройках (Клавиатура), которые конфликтуют.   -  person lawlist    schedule 02.12.2013
comment
Это могло бы сработать, но, конечно, приятной частью общесистемных вещей является то, что они работают в масштабах всей системы. Для тех случаев, когда я не использую Emacs.   -  person Gastove    schedule 02.12.2013
comment
Было бы довольно мило, если бы я мог заставить Управление полетами делать хоки-поки, хотя.   -  person Gastove    schedule 02.12.2013
comment
Вы можете выбрать необычные общесистемные сочетания клавиш, например, control+option+command+стрелка вправо.   -  person lawlist    schedule 02.12.2013
comment
Это работает для того, чтобы убрать с дороги Управление полетами, но теперь мне все еще нужно выяснить, как передать чертову команду в emacs. Я по-прежнему получаю C-), отправляя только 9.   -  person Gastove    schedule 02.12.2013
comment
Как насчет использования control+c ) вместо control+)? (global-set-key (kbd "C-c )") "hello-world"). Я не знаю, сможете ли вы использовать C-) сам по себе.   -  person lawlist    schedule 02.12.2013
comment
Зачем запускать Emacs внутри iTerm? Кажется, это и есть источник всех твоих бед!   -  person Stefan    schedule 02.12.2013
comment
@stefan Я не уверен, в чем проблема с iTerm? Родное приложение терминала OSX работает не лучше. Вы спрашиваете, почему я вообще запускаю его в терминале?   -  person Gastove    schedule 10.12.2013
comment
@lawlist Итак, это работает, но действительно громоздко. Итак, технически ответ, но я все равно хотел бы найти что-то лучше.   -  person Gastove    schedule 10.12.2013
comment
@Gastove: да, я спрашиваю, зачем вообще запускать терминал?   -  person Stefan    schedule 12.12.2013
comment
@stefan о боже. Честно говоря, я не в восторге от того, чтобы войти в emacs в терминале, а не в дебатах. Я работаю в терминалах, они удовлетворяют мои потребности, а во всем остальном рабочий процесс меня устраивает. Я хотел бы оставить это на этом. Кроме того, я уверен, что есть способ сделать то, что я пытаюсь сделать.   -  person Gastove    schedule 12.12.2013