Squeak.ru - шаблоны программирования

Клавиши со стрелками Mac OS не работают должным образом при включении paredit в Emacs

В настоящее время у меня есть это в моем .emacs, который отлично работал в Linux:

;; paredit                                                                       
;; this is from somewhere else on Stackoverflow                                  
;; deals with curly brackets matching and stuff                                  
;; I edited the answer a little bit                                              

(defmacro setup-paredit (func-name mode-map)                                     
  `(defun ,func-name ()                                                          
     (define-key ,mode-map                                                       
       (kbd "DEL") 'paredit-backward-delete)                                     
     (define-key ,mode-map                                                       
       (kbd "{") 'paredit-open-curly)                                            
     (define-key ,mode-map                                                       
       (kbd "}") 'paredit-close-curly)                                           
     (modify-syntax-entry ?\{ "(}")                                              
     (modify-syntax-entry ?\} "){")                                              
     (modify-syntax-entry ?\[ "(]")                                              
     (modify-syntax-entry ?\] ")[")                                              
     (modify-syntax-entry ?~ "'   ")                                             
     (modify-syntax-entry ?, "    ")                                             
     (modify-syntax-entry ?^ "'")                                                
     (modify-syntax-entry ?= "'")))                                              

(defmacro setup-paredit-mode (func-name mode-map mode-hook)                      
  `(progn (setup-paredit ,func-name ,mode-map)                                   
          (add-hook ',mode-hook ',func-name)                                     
          (add-hook ',mode-hook 'enable-paredit-mode)))                          

;; probably doing lots of things wrong but at least this seems to work well      
(setup-paredit-mode setup-c++-paredit c++-mode-map c++-mode-hook)               
(setup-paredit-mode setup-slime-repl-paredit slime-repl-mode-map slime-repl-mod\
e-hook)                                                                          
(setup-paredit-mode setup-slime-paredit slime-mode-map slime-mode-hook)         
(setup-paredit-mode setup-clojure-paredit clojure-mode-map clojure-mode-hook)   
(setup-paredit-mode setup-emacs-paredit emacs-lisp-mode-map emacs-lisp-mode-hoo\
k)                                                                               
(setup-paredit-mode setup-css-paredit css-mode-map css-mode-hook)

Но последний бит в Mac OS X заставляет клавиши со стрелками производить следующий вывод:

[C [A [D [A [B [D [C [B [D [B [D]]]]]]]]]]]

Еще одна странность при нажатии C-x C-c:

Symbol's function definition is void: switch-to-buffer-in-tab

Я, наконец, убил его с помощью C-x C-z.

Этого не произойдет, если я закомментирую последнюю часть после ;; probably..., поэтому проблема, вероятно, заключается в этом. Как мне решить эту проблему?

ИЗМЕНИТЬ:

Я нашел это . Простое копирование и вставка кода не сработало. Нажатие клавиш со стрелками дало мне это:

# ESC [ ⇧A ESC [ ⇧B ESC [ ⇧C ESC [ ⇧D #

Однако, будучи новичком, я не уверен, как «правильно настроить приведенный выше код». (Кроме того, что делает эта стрелка вверх?)

ИЗМЕНИТЬ 2:

Проблема C-c C-x, по крайней мере, кажется, каким-то образом решена с помощью этого кода .emacs:

;; Fix Mac arrow keys                                                            
(if (not window-system);; Only use in tty-sessions.                              
     (progn                                                                      
      (defvar arrow-keys-map (make-sparse-keymap) "Keymap for arrow keys")       
      (define-key esc-map "[" arrow-keys-map)                                    
      (define-key arrow-keys-map "⇧A" 'previous-line)                            
      (define-key arrow-keys-map "⇧B" 'next-line)                                
      (define-key arrow-keys-map "⇧C" 'forward-char)                             
      (define-key arrow-keys-map "⇧D" 'backward-char)))

Клавиши со стрелками по-прежнему не работают, когда активен paredit.

ИЗМЕНИТЬ 3:

Добавлю, что все это происходит внутри Терминала. Я не уверен, что это все еще происходит с графическим интерфейсом, потому что каким-то образом мой .emacs заставляет Aquamacs не отображать никаких окон.

Клавиши со стрелками прекрасно работают в графическом интерфейсе Emacs, но не в режиме -nw.


  • Aquamacs добавляет в Emacs много странных настроек, которые могут портить ваш .emacs. Вместо этого я предлагаю вам попробовать порт Emacs для Mac (github.com/ downloads/railwaycat/emacs-mac-port/Emacs.zip) — скорее всего, он будет вести себя как Emacs и как приложение для Mac. 17.01.2012

Ответы:


1

Наконец заработало. В настройках терминала в разделе «Настройки»> «Дополнительно»> «Эмуляция» я установил Declare terminal as: на vt100.

Я пробовал это раньше, но оказалось, что вам нужно закрыть окно Терминала перед тем, как снова запустить Emacs, иначе он по-прежнему будет использовать текущие настройки.

Недостатком является то, что Emacs черно-белый. Посмотрим, работают ли другие настройки эмуляции.

ИЗМЕНИТЬ:

xterm-256color (по умолчанию) отлично работает с цветом. ГРРРРР. Все это потому, что какой-то туториал (я забыл для чего) сказал мне установить эмуляцию терминала на rxvt. Хахаха.

По крайней мере, я надеюсь, что это поможет кому-то в будущем.

17.01.2012
  • Да, тип терминала читается только при запуске. На самом деле вам не нужно переназначать клавиши со стрелками, что-то более простое должно быть неправильным. 17.01.2012
  • @NicholasRiley Спасибо! Оказывается, мне не нужно было переназначать клавиши со стрелками, просто нужно было правильно установить тип терминала :) 17.01.2012
  • Рад, что у вас получилось! Довольно удручающе, что мы все еще боремся с терминальными типами в 2012 году, но такова цена обратной совместимости... 17.01.2012

  • 2

    Пожалуйста, попробуйте это, и я предполагаю, что вы сможете разрешить тот же chsh -s /bin/bash

    25.03.2016
  • Вы должны добавить некоторые пояснения к своему ответу. 25.03.2016
  • Новые материалы

    Угловая структура архитектуры
    Обратите внимание, что эта статья устарела, я решил создать новую с лучшей структурой и с учетом автономных компонентов: https://medium.com/@marekpanti/angular-standalone-architecture-b645edd0d54a..

    «Данные, которые большинство людей используют для обучения своих моделей искусственного интеллекта, поставляются со встроенным…
    Первоначально опубликовано HalkTalks: https://hacktown.com.br/blog/blog/os-dados-que-a-maioria-das-pessoas-usa-para-treinar-seus-modelos-de-inteligencia-artificial- ja-vem-com-um-vies-embutido/..

    Сильный ИИ против слабого ИИ: различия парадигм искусственного интеллекта
    В последние годы изучению и развитию искусственного интеллекта (ИИ) уделяется большое внимание и прогресс. Сильный ИИ и Слабый ИИ — две основные парадигмы в области искусственного интеллекта...

    Правильный способ добавить Firebase в ваш проект React с помощью React Hooks
    React + Firebase - это мощная комбинация для быстрого и безопасного создания приложений, от проверки концепции до массового производства. Раньше (знаете, несколько месяцев назад) добавление..

    Создайте API с помощью Python FastAPI
    Создание API с помощью Python становится очень простым при использовании пакета FastAPI. После установки и импорта вы можете создать приложение FastAPI и указать несколько конечных точек. Каждой..

    Веселье с прокси-сервером JavaScript
    Прокси-серверы JavaScript — это чистый сахар, если вы хотите создать некоторую общую логику в своих приложениях, чтобы облегчить себе жизнь. Вот один пример: Связь клиент-сервер Мы..

    Получить бесплатный хостинг для разработчиков | Разместите свой сайт за несколько шагов 🔥
    Статические веб-сайты — это веб-страницы с фиксированным содержанием и его постоянным содержанием. Но теперь статические сайты также обрабатывают динамические данные с помощью API и запросов...