Глобально переопределите привязку клавиш в Emacs

Вы можете получить scene из window с помощью функции Window::scene_mut , которая будет возвращать SceneNode .

После получения изменяемого узла сцены вы можете удалить все объекты внутри сцены с помощью функции SceneNode::apply_to_scene_nodes .

Как описано на странице документов kiss3d:

fn apply_to_scene_nodes_mut(&mut self, f: &mut F)

Применяет замыкание к каждому объекту, содержащемуся в этом узле и его дочерних элементах.

blockquote>

Это метод, который принимает замыкание в нем и применяет его ко всем узлам внутри сцены. Так что вам не нужно добавлять все объекты в Vec.

Обратите внимание, что этот метод работает рекурсивно для применения предоставленной вами функции ко всем дочерним элементам родителя и самого себя.

В вашем случае необходимо только отсоединить родительскую сцену, как показано ниже:

window.scene_mut().unlink();

Всякий раз, когда вы отсоединяете узел родительской сцены, тогда дети, конечно же, не будут связаны с родителем. Так что в ваших потребностях вам может не понадобиться SceneNode::apply_to_scene_nodes даже.

[Тысяча сто двадцать два] площадка [тысяча сто двадцать два]

97
задан Peter Mortensen 30 October 2010 в 16:55
поделиться

4 ответа

Я использую незначительный режим для всех своих привязок клавиш "переопределения":

(defvar my-keys-minor-mode-map
  (let ((map (make-sparse-keymap)))
    (define-key map (kbd "C-i") 'some-function)
    map)
  "my-keys-minor-mode keymap.")

(define-minor-mode my-keys-minor-mode
  "A minor mode so that my key settings override annoying major modes."
  :init-value t
  :lighter " my-keys")

(my-keys-minor-mode 1)

Это обладает дополнительным преимуществом способности выключить все мои модификации одним махом (просто отключают незначительный режим) в случае, если кто-то еще управляет клавиатурой или если я должен видеть то, что делает привязка клавиш по умолчанию.

Обратите внимание, что Вы, возможно, должны выключить это в мини-буфере:

(defun my-minibuffer-setup-hook ()
  (my-keys-minor-mode 0))

(add-hook 'minibuffer-setup-hook 'my-minibuffer-setup-hook)
144
ответ дан Stefan 24 November 2019 в 05:24
поделиться

Я не думаю, что Вы можете. Это примерно эквивалентно высказыванию, что Вы хотите определить глобальную переменную, которая не может быть скрыта локальными объявлениями переменных в функциях. Объем просто не прокладывает себе путь.

Однако мог бы быть способ записать функцию elisp, чтобы пройти список режима и повторно присвоить его в каждом для Вас.

2
ответ дан T.E.D. 24 November 2019 в 05:24
поделиться

Если Вы действительно не хотите сделать это сами, необходимо проверить вокруг и видеть, сделал ли кто-либо еще уже это.

Существует пакет для Emacs, который дает Ваши подобные окнам привязки клавиш. Необходимо смочь найти его через Google.

2
ответ дан JesperE 24 November 2019 в 05:24
поделиться

Хотя ответ Скоттфрейзера - это именно то, о чем вы просили, я упомяну для потомков другое решение.

Из Руководства по Emacs :

«Не определяйте букву Cc в качестве ключа в программах на Лиспе. Последовательности, состоящие из Cc и буквы (верхнего или нижнего регистра), зарезервированы для пользователей; это единственные последовательности, зарезервированные для пользователей, поэтому не блокируйте их ».

Если вы привязываете свои личные глобальные привязки к Cc плюс буква, тогда вы« должны »быть в безопасности. Однако это всего лишь соглашение, и любой режим может переопределить ваши привязки.

12
ответ дан 24 November 2019 в 05:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: