Comments 15
Репа https://github.com/emacs-ru/emacs-from-scratch не существует или приватная
Буфер scratch вряд ли вам понадобится, если только вы не программист на Emacs Lisp
Использую его постоянно, как черновик или /tmp, ведь весь текст в нем исчезнет при перезапуске. И секрет в том, чтобы не закрыть его, а сконвертировать в fundamental или text мод, ведь там почти нету минор модов
(setq initial-major-mode 'fundamental-mode)
Не вижу ни одной причины, по которой не следовало бы сделать настройку delete-by-moving-to-trash включённой по умолчанию
Не вижу ни одной причины, зачем мне нужна корзина. Отключаюю её везде, где только можно, если я удаляю, то мусор не должен в свалке храниться
Вот тут не согласен. Двухэтапное удаление с автоматической отчисткой корзины через месяц это ещё одна защита от выстрела себе в ногу,
Буфер
scratchвряд ли вам понадобится, если только вы не программист на Emacs Lisp
Если не писать на Emacs Lisp свои личные расширения или кастомизировать под свои хотелки готовые, теряется практически весь смысл использования Emacs.
Добавлю свои 5 копеек. В графическом режиме emacs перехватывает нажатия сочетаний клавиш зависимо от раскладки, нажав в русской расскладке С-с можно не сразу понять, что идет не так. А редактирование текстов на русском языке превращается в боль. Благо это легко лечится пакетом reverse-im. Буквально позавчера узнал о его существовании
(use-package char-fold
:custom
(char-fold-symmetric t)
(search-default-mode #'char-fold-to-regexp))
(use-package reverse-im
:ensure t ; install `reverse-im' using package.el
:demand t ; always load it
:after char-fold ; but only after `char-fold' is loaded
:bind
("M-T" . reverse-im-translate-word) ; to fix a word written in the wrong layout
:custom
;; cache generated keymaps
(reverse-im-cache-file (locate-user-emacs-file "reverse-im-cache.el"))
;; use lax matching
(reverse-im-char-fold t)
;; advice read-char to fix commands that use their own shortcut mechanism
(reverse-im-read-char-advice-function #'reverse-im-read-char-include)
;; translate these methods
(reverse-im-input-methods '("cyrillic-jis-russian"))
:config
(reverse-im-mode t)) ; turn the mode on
Не используйте. reverse-im обрабатывает только часть нажатий. Например, я часто использую Ctrl+@, чтобы выделять слова. Приходится переключаться на английскую раскладку. Зато если переключать методы ввода внутри редактора по Ctrl+/, то всё работает нормально.
Не всегда удобно держать контекст, где я переключил раскладку, в emacs, в браузере или еще где. Но за предупреждение спасибо, буду знать. Думаю, не сложно поправить сам reverse-im, чтоб он распознавал те сочетания, которые в него не заложил автор
после запуска, XEmacs, мой взгляд на Gnu Emacs изменился, сам гну емакс крутой, и я его облазел вдоль и поперёк, но в нём есть конкретные проблемы, он хочет стать проще и ближе каждому, и растворяется как инструмент из-за этого. Если бы он был так же строк как XEmacs цены бы ему не было, и кнопки и подсветка и автоподополнение, вместо этого Емакс подсовывает мне комбайн, который я должен конфигурировать.
пройдёмся по конкретным деталям, нет строгого единого интерфейса и стиля, всплывающее окно по клику(вообще пойнт клик и окошко), организация буферов(+ менеджмент в интерейсе, а не где-то там), удобный интерфейс для изменения шрифта. и с такими буферами как в XEmacs банально удобнее работать, чем на биндах что-то пытаться вспомнить
я за то что в мире текста должны быть кнопки, из подхода интуитивного десктоп подхода
я бы пошел дальше и вообще бы сделал панель фундаментал по 1 команде где есть все команды в виде кнопок с всплвающей документацией чем лазеть по текстам
хочется чего-то свежего старого типо статического анализатора )
Скрытый текст
(defun load-words-from-file (filename)
"Загрузить слова из файла FILENAME в список."
(with-temp-buffer
(insert-file-contents filename)
(let ((content (buffer-string)))
;; Предположим, слова разделены пробелами, переводами строк и т.п.
(split-string content "[ \n\r\t]+" t))))
(defvar my-words-list nil
"Список слов, загруженных из файла include.")
(defun my-load-words ()
"Загрузить слова из файла include."
(setq my-words-list (load-words-from-file "/usr/include/stdio.h")))
;; Можно вызвать при старте или по необходимости
(my-load-words)
(defun my-show-completions ()
"Показать список слов, начинающихся с текущего слова."
(interactive)
(let ((list my-words-list)
(bounds (bounds-of-thing-at-point 'word))
(current-word (thing-at-point 'word))
(matches '()))
(when (and bounds current-word)
(let ((len (length current-word)))
(dolist (w list)
(when (and (>= (length w) len)
(string= (substring w 0 len) current-word))
(push w matches))))
(if matches
(message "Подходящие слова: %s" matches)
(message "Нет подходящих вариантов")))))
(global-set-key (kbd "TAB") 'my-show-completions)

Как нам улучшить Emacs?