LINUX.ORG.RU

В демоне emacs не работает часть функционала

 ,


0

3

Привет форуму. Узнал, что с помощью emacs демона можно очень быстро запускать emacs, ибо все настройки инициализируются один раз и на всю сессию. Попробовал. Вот что точно не работает:

  • когда ввожу <?p, он не автодополняет до <?php ?>
  • не работают сочетания клавиш при русской раскладке

Кто сталкивался с таким и может подсказать, что не так?



Последнее исправление: sudoLife (всего исправлений: 1)

По первому пункту — хз. Поведение должно быть идентичным.

По второму:

;;; Keyboard layout hotkey fix
;; http://reangdblog.blogspot.com/2015/05/emacs.html
(defun cfg:reverse-input-method (input-method)
  "Build the reverse mapping of single letters from INPUT-METHOD."
  (interactive
   (list (read-input-method-name "Use input method (default current): ")))
  (if (and input-method (symbolp input-method))
      (setq input-method (symbol-name input-method)))
  (let ((current current-input-method)
        (modifiers '(nil (control) (meta) (control meta))))
    (when input-method
      (activate-input-method input-method))
    (when (and current-input-method quail-keyboard-layout)
      (dolist (map (cdr (quail-map)))
        (let* ((to (car map))
               (from (quail-get-translation
                      (cadr map) (char-to-string to) 1)))
          (when (and (characterp from) (characterp to))
            (dolist (mod modifiers)
              (define-key local-function-key-map
                (vector (append mod (list from)))
                (vector (append mod (list to)))))))))
    (when input-method
      (activate-input-method current))))

(add-hook 'after-make-frame-functions
          (lambda (frame)
            (select-frame frame)
            (cfg:reverse-input-method 'russian-computer)))

aidaho ★★★★★
()
Ответ на: комментарий от sudoLife

ЧГ апельсин слово лишнее, всё остальное по семантике- как про «сухоносые обезьянки» ; как в учебнике по поисковикам !? А по ответу,;) я имел ввиду настройки файлового манагера, при условии что там «Ubuntu» дистр, если не он, тогда просто не знаю.

anonymous
()
Ответ на: комментарий от anonymous

Ээээ, kernel panic чувствую я... Если что-то я понял верно - мой дистр - Debian 9

sudoLife
() автор топика
Ответ на: комментарий от aidaho

было все то же, кроме хука. Что он делает?

sudoLife
() автор топика

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

Kostafey
()
Последнее исправление: Kostafey (всего исправлений: 1)
Ответ на: комментарий от Kostafey

все в .emacs (кидайте тапки, не успел разобрать по отдельным файлам ишшо), пакеты в emacs.d, чаще всего качались через elpa/melpa.


(setq show-paren-style 'expression);;Подсветка скобок
(show-paren-mode 2)

(setq make-backup-files     nil)
(setq make-save-list-file-name   nil)
(setq auto-save-default   nil)

(add-to-list 'load-path "~/.emacs.d/lisp")
(when (>= emacs-major-version 24)
  (require 'package)
  (add-to-list 'package-archives
             '("marmalade" . "http://marmalade-repo.org/packages/"))
  (add-to-list 'package-archives
             '("melpa" . "http://melpa.milkbox.net/packages/") t)
  (add-to-list 'package-archives
             '("melpa-stable" . "https://stable.melpa.org/packages/") t)
  (package-initialize))

(add-to-list 'custom-theme-load-path "~/.emacs.d/themes")
(load-theme 'cyberpunk t)

(require 'imenu)
(setq imenu-auto-rescan      t) ;; автоматически обновлять список функций в буфере
(setq imenu-use-popup-menu nil) ;; диалоги Imenu только в минибуфере
(global-set-key (kbd "<f6>") 'imenu) ;; вызов Imenu на F6
(setq frame-title-format "GNU Emacs: %b")
;;(global-set-key (kbd "TAB") 'tab-to-tab-stop);

(tooltip-mode      -1)
(menu-bar-mode     -1) ;; отключаем графическое меню
(tool-bar-mode     -1) ;; отключаем tool-bar
(scroll-bar-mode   -1) ;; отключаем полосу прокрутки
(blink-cursor-mode 1)
;; курсор не мигает
(setq use-dialog-box     nil) ;; никаких графических диалогов и окон - все через минибуфер
(setq redisplay-dont-pause t)  ;; лучшая отрисовка буфера
(setq ring-bell-function 'ignore) ;; отключить звуковой сигнал
(windmove-default-keybindings 'meta) ;; переключение фокуса буферов(урааа, я нашел это дерьмо!)


(require 'linum+)
(setq linum-format "%d ")
(global-linum-mode 1)
(column-number-mode t)
(line-number-mode   t)

(setq word-wrap          t) ;; переносить по словам
(global-visual-line-mode t)
(global-set-key (kbd "RET") 'newline-and-indent)
(setq scroll-step               1) ;; вверх-вниз по 1 строке
(setq scroll-margin            10) ;; сдвигать буфер верх/вниз когда курсор в 10 шагах от верхней/нижней границы  
(setq scroll-conservatively 10000)
(defalias 'yes-or-no-p 'y-or-n-p)
(setq x-select-enable-clipboard t)

;;built-in
(require 'ido)
(ido-mode t)
(setq ido-enable-flex-matching t)

(require 'bs)
(setq bs-configurations
      '(("files" "^\\*scratch\\*" nil nil bs-visits-non-file bs-sort-buffer-interns-are-last)))

(global-set-key (kbd "<f2>") 'bs-show)


(add-to-list 'load-path "/home/ovin-off/.emacs.d/auto-complete")
(require 'auto-complete-config)
(ac-config-default)
(add-to-list 'ac-dictionary-directories "/home/ovin-off/.emacs.d/elpa/auto-complete-20170124.1845/dict")
;;(add-to-list 'ac-modes 'web-mode)
;; (add-to-list 'ac-dictionary-directories "/home/ovin-off/.emacs.d/elpa/auto-complete-20170124.1845/dict")
;;dirty fix for having AC everywhere
;; (define-globalized-minor-mode real-global-auto-complete-mode
;;   auto-complete-mode (lambda ()
;;                        (if (not (minibufferp (current-buffer)))
;;                          (auto-complete-mode 1))
;;                        ))
;; (real-global-auto-complete-mode t)
;; (setq web-mode-ac-sources-alist
;;   '(("php" . (ac-source-yasnippet ac-source-php-auto-yasnippets))))


;; (require 'sr-speedbar)
;; (global-set-key (kbd "<f12>") 'sr-speedbar-toggle)
(add-to-list 'load-path "~/.emacs.d/neotree")
  (require 'neotree)
  (global-set-key [f12] 'neotree-toggle)


(add-to-list 'load-path
              "~/.emacs.d/yasnippet")
(require 'yasnippet)
(yas-global-mode t)

;; startup message off
(setq inhibit-startup-message t)

(global-set-key (kbd "<f5>") 'bookmark-set)
(global-set-key (kbd "M-b") 'bookmark-jump)
(global-set-key (kbd "<XF86Favorites>") 'bookmark-bmenu-list)



(require 'web-mode)

;; с какими файлами ассоциировать web-mode
(add-to-list 'auto-mode-alist '("\\.erb\\'" . web-mode))
(add-to-list 'auto-mode-alist '("\\.djhtml\\'" . web-mode))
(add-to-list 'auto-mode-alist '("\\.php\\'" . web-mode))
(add-to-list 'auto-mode-alist '("\\.html\\'" . html-mode))

(require 'lua-mode)
(autoload 'lua-mode "lua-mode" "Lua editing mode." t)
(add-to-list 'auto-mode-alist '("\\.lua$" . lua-mode))
(add-to-list 'interpreter-mode-alist '("lua" . lua-mode))


; настройка отступов
(setq-default indent-tabs-mode nil)
(setq web-mode-offset 4)
(setq web-mode-markup-indent-offset 4)
(setq web-mode-css-indent-offset 4)
(setq web-mode-code-indent-offset 4)
(add-hook 'web-mode-hook
          (lambda ()
            (make-variable-buffer-local 'before-save-hook)
            (add-hook 'before-save-hook
                      (lambda () (untabify (point-min) (point-max))))))

; сниппеты и автозакрытие парных скобок
(setq web-mode-extra-snippets '(("erb" . (("name" . ("beg" . "end"))))
                                ))
(setq web-mode-extra-auto-pairs '(("erb" . (("open" "close")))
                                  ))

; подсвечивать текущий элемент
(setq web-mode-enable-current-element-highlight t)

;;Shell-scripting mode
;;(add-hook 'sh-mode-hook 'flycheck-mode)

;; Javascript modes
(require 'js2-mode)
(require 'json-mode)
(require 'ac-js2)
(require 'jquery-doc)

;;query syntaxe
(autoload #'espresso-mode "espresso" "Start espresso-mode" t)
(add-to-list 'auto-mode-alist '("\\.js$" . espresso-mode))
(add-to-list 'auto-mode-alist '("\\.json$" . espresso-mode))

;;ORG-mode
(require 'org-install)
(add-to-list 'auto-mode-alist '("\\.org$" . org-mode))
(define-key global-map "\C-cl" 'org-store-link)
(define-key global-map "\C-ca" 'org-agenda)
(setq org-log-done t)
(global-set-key "\e\el" 'org-store-link)
(global-set-key "\e\ec" 'org-capture)
(global-set-key "\e\ea" 'org-agenda)
(global-set-key "\e\eb" 'org-iswitchb)
 
(setq org-agenda-files (quote ("~/Organisation/")))
 
;my prefer identation
(setq org-startup-indented t)
 
;;logging stuff
(setq org-log-done (quote time))
(setq org-log-into-drawer nil)
(setq org-log-redeadline (quote note))
(setq org-log-reschedule (quote time))
;todo keywords
(setq org-todo-keywords
      (quote ((sequence "TODO(t!)" "NEXT(n!)" "WAITING(w@/!)" "STARTED(s!)" "|" "DONE(d!/!)" "CANCELLED(c@/!)")
              (sequence "QUOTE(Q!)" "QUOTED(D!)" "|" "APPROVED(A@)" "EXPIRED(E@)" "REJECTED(R@)")
              (sequence "OPEN(O!)" "|" "CLOSED(C!)"))))
;;autopair
(require 'autopair)
(autopair-global-mode)
;; Rainbow
(add-hook 'prog-mode-hook 'rainbow-delimiters-mode)
(add-hook 'css-mode-hook 'rainbow-delimiters-mode)

;;Emmet
(add-to-list 'load-path "~/.emacs.d/elpa/emmet-mode")
(require 'emmet-mode)
(add-hook 'sqml-mode-hook 'emmet-mode)
(add-hook 'html-mode-hook 'emmet-mode)
(add-hook 'css-mode-hook 'emmet-mode)
(add-hook 'web-mode-hook 'emmet-mode)

(defun cfg:reverse-input-method (input-method)
  "Build the reverse mapping of single letters from INPUT-METHOD."
  (interactive
   (list (read-input-method-name "Use input method (default current): ")))
  (if (and input-method (symbolp input-method))
      (setq input-method (symbol-name input-method)))
  (let ((current current-input-method)
        (modifiers '(nil (control) (meta) (control meta))))
    (when input-method
      (activate-input-method input-method))
    (when (and current-input-method quail-keyboard-layout)
      (dolist (map (cdr (quail-map)))
        (let* ((to (car map))
               (from (quail-get-translation
                      (cadr map) (char-to-string to) 1)))
          (when (and (characterp from) (characterp to))
            (dolist (mod modifiers)
              (define-key local-function-key-map
                (vector (append mod (list from)))
                (vector (append mod (list to)))))))))
    (when input-method
      (activate-input-method current))))

(add-hook 'after-make-frame-functions
          (lambda (frame)
            (select-frame frame)
            (cfg:reverse-input-method 'russian-computer)))

sudoLife
() автор топика
Ответ на: комментарий от sudoLife

Во-первых, я бы начал с приборки, ибо бардак - сам по себе может стать причиной проблем. Все пакеты через elpa. У тебя часть так, часть руками скачено. Потом, насколько я вижу, была предыдущая версии конфигурации yasnippets сейчас она не подключена. Алсо, у Емакса есть одна волшебная особенность, он может сохранять в сессии элементы конфигурации и не обновлять их при загрузке даже если .emacs был изменен (т.е. загружать из предыдущей сессии) - встречается редко, но для надежности иногда бывает необходимо руками заэвалить куски измененного кода.

З.Ы. Конструкции вида (when (>= emacs-major-version 24)... умиляют. У тебя и так пол .emacs не запустится если фактическая версия 24. Т.е. или ты делаешь для всех расширений и коде-сниппетов такие вилки (если это вдруг зачем-то нужно, но зачем?) или пишешь проще ))).

Kostafey
()
Последнее исправление: Kostafey (всего исправлений: 2)
Ответ на: комментарий от Kostafey

конфиг взят из разных источников,сам я на емакс лиспе не пишу и в ближайшее время на это времени не будет. Хотя изучить стоит, знаю.

Что ж, будем пробовать. Общее тз не дадите? Ну там, советы, куда что распихивать и т.д.? Буду рад)

sudoLife
() автор топика

Я бы посоветовал mv ~/.emacs ~/.emacs.d/init.el, но думаю это не особо поможет.

Ещё можно попробовать скомпилировать конфиг в байткод и делать так при каждом изменении конфига.

olibjerd ★★★★★
()
Последнее исправление: olibjerd (всего исправлений: 1)
21 февраля 2018 г.
Ответ на: комментарий от dead_PXL

Угу. Только это не работает, и работать для пары QWERTY—ЙЦУКЕН не может принципиально. :-) Русские небуквы от американских небукв не отличаются.

Zmicier ★★★★★
()
Ответ на: комментарий от Zmicier

При всей неработоспособности, проблему с emacsclient решает) Хотя до того как я стал запускать его в режиме демона все работало, но с другим скриптом, который сейчас автоматом не подключается, а этот подключается))) Все очень странно

dead_PXL ★★
()
Ответ на: комментарий от dead_PXL

При всей неработоспособности, проблему с emacsclient решает

???

Это костыль, сообщающий Емаксу, какие клавиши в вашей второй иксовой (или аналогичной) раскладке соответствуют первой.

Он решительно никакого отношения к клиенту не имеет.

Хотя до того как я стал запускать его в режиме демона все работало

Это невозможно.

но с другим скриптом

А, ну это сколько угодно...

Повторюсь только лишний раз, чтоб люди не обольщались, что если у них первая раскладка — стандартный американский QWERTY, а вторая — любая из двух ЙЦУКЕН, то им этот костыль не подойдет.

Только внутренний метод ввода Емакса.

Zmicier ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.