Что находится в Вашем .emacs?

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

53
задан 3 revs, 3 users 100% 5 August 2009 в 14:58
поделиться

22 ответа

Используйте окончательный dotfiles сайт . Добавьте свой .emacs 'здесь. Считайте .emacs' других.

45
ответ дан bortzmeyer 7 November 2019 в 08:16
поделиться

Одна строка для исправления загрузки соединяет Одну строку каналом для загрузки моей init библиотеки, Одна строка для загрузки моего emacs init файлы

, Конечно, "emacs init файлы" являются довольно многочисленными, один на определенную вещь, загруженную в детерминированном порядке.

0
ответ дан Vatine 7 November 2019 в 08:16
поделиться

Я настроил некоторые удобные ярлыки на веб-страницы и поиски с помощью сообщения в блоге webjump

(require 'webjump)
(global-set-key [f2] 'webjump)
(setq webjump-sites
      (append '(
        ("Reddit Search" .
         [simple-query "www.reddit.com" "http://www.reddit.com/search?q=" ""])
        ("Google Image Search" .
         [simple-query "images.google.com" "images.google.com/images?hl=en&q=" ""])
        ("Flickr Search" .
         [simple-query "www.flickr.com" "flickr.com/search/?q=" ""])
        ("Astar algorithm" . 
         "http://www.heyes-jones.com/astar")
        )
          webjump-sample-sites))

о том, как это работает здесь

http://justinsboringpage.blogspot.com/2009/02/search-reddit-flickr-and-google-from.html

, Также я рекомендую их:

(setq visible-bell t) ; no beeping

(setq transient-mark-mode t) ; visually show region

(setq line-number-mode t) ; show line numbers

(setq global-font-lock-mode 1) ; everything should use fonts

(setq font-lock-maximum-decoration t)

Также я избавляюсь от части лишнего материала gui

  (if (fboundp 'scroll-bar-mode) (scroll-bar-mode -1))
  (if (fboundp 'tool-bar-mode) (tool-bar-mode -1))
  (if (fboundp 'menu-bar-mode) (menu-bar-mode -1)))
1
ответ дан justinhj 7 November 2019 в 08:16
поделиться
(put 'erase-buffer 'disabled nil)
(put 'downcase-region 'disabled nil)
(set-variable 'visible-bell t)
(set-variable 'tool-bar-mode nil)
(set-variable 'menu-bar-mode nil)

(setq load-path (cons (expand-file-name "/usr/share/doc/git-core/contrib/emacs") load-path))
 (require 'vc-git)
 (when (featurep 'vc-git) (add-to-list 'vc-handled-backends 'git))
 (require 'git)
 (autoload 'git-blame-mode "git-blame"
           "Minor mode for incremental blame for Git." t)
1
ответ дан David Nehme 7 November 2019 в 08:16
поделиться

Мой любимый отрывок. Окончательное в усладе для глаз Emacs:

;; real lisp hackers use the lambda character
;; courtesy of stefan monnier on c.l.l
(defun sm-lambda-mode-hook ()
  (font-lock-add-keywords
   nil `(("\\<lambda\\>"
   (0 (progn (compose-region (match-beginning 0) (match-end 0)
        ,(make-char 'greek-iso8859-7 107))
      nil))))))
(add-hook 'emacs-lisp-mode-hook 'sm-lambda-mode-hook)
(add-hook 'lisp-interactive-mode-hook 'sm-lamba-mode-hook)
(add-hook 'scheme-mode-hook 'sm-lambda-mode-hook)

, Таким образом, Вы видите т.е. следующее при редактировании шепелявости/схемы:

(global-set-key "^Cr" '(λ () (interactive) (revert-buffer t t nil)))
27
ответ дан Jason Dufair 7 November 2019 в 08:16
поделиться

У меня есть это для изменения yes или no подсказка к y или n подсказки:

(fset 'yes-or-no-p 'y-or-n-p)

у меня есть они для запуска Emacs без такой "шумихи", которую я получил от этот вопрос .

(setq inhibit-startup-echo-area-message t)
(setq inhibit-startup-message t)

И Steve Yegge функция для переименования файла, который Вы редактируете наряду с его соответствующим буфером:

(defun rename-file-and-buffer (new-name)
  "Renames both current buffer and file it's visiting to NEW-NAME."
  (interactive "sNew name: ")
  (let ((name (buffer-name))
 (filename (buffer-file-name)))
    (if (not filename)
 (message "Buffer '%s' is not visiting a file!" name)
      (if (get-buffer new-name)
   (message "A buffer named '%s' already exists!" new-name)
 (progn
   (rename-file name new-name 1)
   (rename-buffer new-name)
   (set-visited-file-name new-name)
   (set-buffer-modified-p nil))))))
21
ответ дан Community 7 November 2019 в 08:16
поделиться

Одна вещь, которая может оказаться очень полезной: Прежде чем это станет слишком большим, попытайтесь разделить его на несколько файлов для различных задач: Мой .emacs просто устанавливает мой путь загрузки и загрузки набор файлов - у меня есть все свои определенные для режима настройки в mode-configs.el, привязки клавиш в keys.el, и так далее

18
ответ дан jamesnvc 7 November 2019 в 08:16
поделиться

я использую paredit для легкого (e) обработка шепелявости и мини-буферные завершения режима идо.

3
ответ дан user23932 7 November 2019 в 08:16
поделиться

Это не целый набор и компания, но это - некоторые более полезные отрывки, которые я собрал:

(defadvice show-paren-function (after show-matching-paren-offscreen
                                      activate)
  "If the matching paren is offscreen, show the matching line in the                               
echo area. Has no effect if the character before point is not of                                   
the syntax class ')'."
  (interactive)
  (let ((matching-text nil))
    ;; Only call `blink-matching-open' if the character before point                               
    ;; is a close parentheses type character. Otherwise, there's not                               
    ;; really any point, and `blink-matching-open' would just echo                                 
    ;; "Mismatched parentheses", which gets really annoying.                                       
    (if (char-equal (char-syntax (char-before (point))) ?\))
        (setq matching-text (blink-matching-open)))
    (if (not (null matching-text))
        (message matching-text))))

;;;;;;;;;;;;;;;
;; UTF-8
;;;;;;;;;;;;;;;;;;;;
;; set up unicode
(prefer-coding-system       'utf-8)
(set-default-coding-systems 'utf-8)
(set-terminal-coding-system 'utf-8)
(set-keyboard-coding-system 'utf-8)
;; This from a japanese individual.  I hope it works.
(setq default-buffer-file-coding-system 'utf-8)
;; From Emacs wiki
(setq x-select-request-type '(UTF8_STRING COMPOUND_TEXT TEXT STRING))
;; Wwindows clipboard is UTF-16LE 
(set-clipboard-coding-system 'utf-16le-dos)


(defun jonnay-timestamp ()
  "Spit out the current time"
  (interactive)
  (insert (format-time-string "%Y-%m-%d")))

(defun jonnay-sign ()
  "spit out my name, email and the current time"
  (interactive)
  (insert "-- Jonathan Arkell (jonathana@criticalmass.com)")
  (jonnay-timestamp))


;; Cygwin requires some seriosu setting up to work the way i likes it
(message "Setting up Cygwin...")
(let* ((cygwin-root "c:")
       (cygwin-bin (concat cygwin-root "/bin"))
       (gambit-bin "/usr/local/Gambit-C/4.0b22/bin/")
       (snow-bin "/usr/local/snow/current/bin")
       (mysql-bin "/wamp/bin/mysql/mysql5.0.51a/bin/"))
   (setenv "PATH" (concat cygwin-bin ";" ;
                          snow-bin ";" 
                          gambit-bin ";"
                          mysql-bin ";"
                          ".;")  
           (getenv "PATH"))
   (setq exec-path (cons cygwin-bin exec-path)))

(setq shell-file-name "bash")
(setq explicit-shell-file-name "bash")

(require 'cygwin-mount)
(cygwin-mount-activate)
(message "Setting up Cygwin...Done")


; Completion isn't perfect, but close
(defun my-shell-setup ()
   "For Cygwin bash under Emacs 20+"
   (setq comint-scroll-show-maximum-output 'this)
   (setq comint-completion-addsuffix t)
   (setq comint-eol-on-send t)
   (setq w32-quote-process-args ?\")
   (make-variable-buffer-local 'comint-completion-addsuffix))

(setq shell-mode-hook 'my-shell-setup)
(add-hook 'emacs-startup-hook 'cygwin-shell)


; Change how home key works
(global-set-key [home] 'beginning-or-indentation)
(substitute-key-definition 'beginning-of-line 'beginning-or-indentation global-map)


(defun yank-and-down ()
  "Yank the text and go down a line."
  (interactive)
  (yank)
  (exchange-point-and-mark)
  (next-line))

(defun kill-syntax (&optional arg)
  "Kill ARG sets of syntax characters after point."
  (interactive "p")
  (let ((arg (or arg 1))
    (inc (if (and arg (< arg 0)) 1 -1))
    (opoint (point)))
    (while (not (= arg 0))
      (if (> arg 0)
      (skip-syntax-forward (string (char-syntax (char-after))))
    (skip-syntax-backward (string (char-syntax (char-before)))))
      (setq arg (+ arg inc)))
    (kill-region opoint (point))))

(defun kill-syntax-backward (&optional arg)
  "Kill ARG sets of syntax characters preceding point."
  (interactive "p")
  (kill-syntax (- 0 (or arg 1))))

(global-set-key [(control shift y)] 'yank-and-down)
(global-set-key [(shift backspace)] 'kill-syntax-backward)
(global-set-key [(shift delete)] 'kill-syntax)


(defun insert-file-name (arg filename)
  "Insert name of file FILENAME into buffer after point.
  Set mark after the inserted text.

  Prefixed with \\[universal-argument], expand the file name to
  its fully canocalized path.

  See `expand-file-name'."
  ;; Based on insert-file in Emacs -- ashawley 2008-09-26
  (interactive "*P\nfInsert file name: ")
  (if arg
      (insert (expand-file-name filename))
      (insert filename)))

(defun kill-ring-save-filename ()
  "Copy the current filename to the kill ring"
  (interactive)
  (kill-new (buffer-file-name)))

(defun insert-file-name ()
  "Insert the name of the current file."
  (interactive)
  (insert (buffer-file-name)))

(defun insert-directory-name ()
  "Insert the name of the current directory"
  (interactive)
  (insert (file-name-directory (buffer-file-name))))

(defun jonnay-toggle-debug ()
  "Toggle debugging by toggling icicles, and debug on error"
  (interactive)
  (toggle-debug-on-error)
  (icicle-mode))


(defvar programming-modes
  '(emacs-lisp-mode scheme-mode lisp-mode c-mode c++-mode 
    objc-mode latex-mode plain-tex-mode java-mode
    php-mode css-mode js2-mode nxml-mode nxhtml-mode)
  "List of modes related to programming")

; Text-mate style indenting
(defadvice yank (after indent-region activate)
  (if (member major-mode programming-modes)
      (indent-region (region-beginning) (region-end) nil)))
9
ответ дан Jonathan Arkell 7 November 2019 в 08:16
поделиться

У меня есть много других, которые были уже упомянуты, но они абсолютно необходимы, по-моему:

(transient-mark-mode 1) ; makes the region visible
(line-number-mode 1)    ; makes the line number show up
(column-number-mode 1)  ; makes the column number show up
9
ответ дан Adam Crume 7 November 2019 в 08:16
поделиться

Вот некоторые ключевые отображения, от которых я стал зависящим:

(global-set-key [(control \,)] 'goto-line)
(global-set-key [(control \.)] 'call-last-kbd-macro)
(global-set-key [(control tab)] 'indent-region)
(global-set-key [(control j)] 'join-line)
(global-set-key [f1] 'man)
(global-set-key [f2] 'igrep-find)
(global-set-key [f3] 'isearch-forward)
(global-set-key [f4] 'next-error)
(global-set-key [f5] 'gdb)
(global-set-key [f6] 'compile)
(global-set-key [f7] 'recompile)
(global-set-key [f8] 'shell)
(global-set-key [f9] 'find-next-matching-tag)
(global-set-key [f11] 'list-buffers)
(global-set-key [f12] 'shell)

Некоторый другой разный материал, главным образом для разработки C++:

;; Use C++ mode for .h files (instead of plain-old C mode)
(setq auto-mode-alist (cons '("\\.h$" . c++-mode) auto-mode-alist))

;; Use python-mode for SCons files
(setq auto-mode-alist (cons '("SConstruct" . python-mode) auto-mode-alist))
(setq auto-mode-alist (cons '("SConscript" . python-mode) auto-mode-alist))

;; Parse CppUnit failure reports in compilation-mode
(require 'compile)
(setq compilation-error-regexp-alist
      (cons '("\\(!!!FAILURES!!!\nTest Results:\nRun:[^\n]*\n\n\n\\)?\\([0-9]+\\)) test: \\([^(]+\\)(F) line: \\([0-9]+\\) \\([^ \n]+\\)" 5 4)
            compilation-error-regexp-alist))

;; Enable cmake-mode from http://www.cmake.org/Wiki/CMake_Emacs_mode_patch_for_comment_formatting
(require 'cmake-mode)
(setq auto-mode-alist
      (append '(("CMakeLists\\.txt\\'" . cmake-mode)
                ("\\.cmake\\'" . cmake-mode))
              auto-mode-alist))

;; "M-x reload-buffer" will revert-buffer without requiring confirmation
(defun reload-buffer ()
  "revert-buffer without confirmation"
  (interactive)
  (revert-buffer t t))
5
ответ дан Kristopher Johnson 7 November 2019 в 08:16
поделиться

Для обновления веб-страницы, Вы редактируете из Emacs

(defun moz-connect()
  (interactive)
  (make-comint "moz-buffer" (cons "127.0.0.1" "4242"))
  (global-set-key "\C-x\C-g" '(lambda () 
                (interactive)
                (save-buffer)
                (comint-send-string "*moz-buffer*" "this.BrowserReload()\n"))))

, Используемого в сочетании с http://hyperstruct.net/projects/mozlab

5
ответ дан Sard 7 November 2019 в 08:16
поделиться

Можно найти мою конфигурацию (оба в HTML & в архиве tar'ed) на мой сайт . Это содержит партию настроек для различных режимов

5
ответ дан Alex Ott 7 November 2019 в 08:16
поделиться

Этот блок является самым важным для меня:

(setq locale-coding-system 'utf-8)
(set-terminal-coding-system 'utf-8)
(set-keyboard-coding-system 'utf-8)
(set-selection-coding-system 'utf-8)
(prefer-coding-system 'utf-8)

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

4
ответ дан Chris Dolan 7 November 2019 в 08:16
поделиться

Можно посмотреть здесь: http://www.dotemacs.de/

И мой .emacs довольно длинен для помещения его здесь также, таким образом, это сделает ответ не слишком читаемым. Так или иначе, при необходимости чтобы я мог, отправил его Вам.

Также я рекомендовал бы Вам считать это: http://steve.yegge.googlepages.com/my-dot-emacs-file

8
ответ дан avp 7 November 2019 в 08:16
поделиться

Трудно ответить на этот вопрос, потому что все используют Emacs для самых разных целей.

Чем дальше, тем лучше Практика может быть, чтобы поцеловать твоих дотемаков. Поскольку интерфейс простой настройки широко поддерживается в режимах Emacs, вы должны сохранить всю свою настройку в своем пользовательском файле (который может быть отдельным местом в ваших dotemacs), и для dotemacs , поместив в него только параметры загрузки пути, требования пакета, хуки и привязки клавиш. Когда вы начнете использовать Emacs Starter Kit , целый ряд полезных настроек может быть удален и из ваших дотемаков.

3
ответ дан 2 revs 7 November 2019 в 08:16
поделиться

emacs-starter-kit в качестве основы, затем я добавил .. vimpulse.el , whitespace.el , yasnippet , textmate.el и newsticker.el .

В моем файле ~ / .emacs.d / $ USERNAME.el (dbr.el):

(add-to-list 'load-path (concat dotfiles-dir "/vendor/"))

;; Snippets
(add-to-list 'load-path "~/.emacs.d/vendor/yasnippet/")
(require 'yasnippet)

(yas/initialize)
(yas/load-directory "~/.emacs.d/vendor/yasnippet/snippets")

;; TextMate module
(require 'textmate)
(textmate-mode 'on)

;; Whitespace module
(require 'whitespace)
(add-hook 'ruby-mode-hook 'whitespace-mode)
(add-hook 'python-mode-hook 'whitespace-mode)

;; Misc
(flyspell-mode 'on)
(setq viper-mode t)
(require 'viper)
(require 'vimpulse)

;; IM
(eval-after-load 'rcirc '(require 'rcirc-color))
(setq rcirc-default-nick "_dbr")
(setq rcirc-default-user-name "_dbr")
(setq rcirc-default-user-full-name "_dbr")

(require 'jabber)

;;; Google Talk account
(custom-set-variables
 '(jabber-connection-type (quote ssl))
 '(jabber-network-server "talk.google.com")
 '(jabber-port 5223)
 '(jabber-server "mysite.tld")
 '(jabber-username "myusername"))

;; Theme
(color-theme-zenburn)

;; Key bindings
(global-set-key (kbd "M-z") 'undo)
(global-set-key (kbd "M-s") 'save-buffer)
(global-set-key (kbd "M-S-z") 'redo)
0
ответ дан 7 November 2019 в 08:16
поделиться

Всегда сохранять мою конфигурацию в svn http://my-trac.assembla.com/ez-conf/browser/emacs.d

0
ответ дан 7 November 2019 в 08:16
поделиться

В моем .emacs всего 127 строк, вот самые полезные небольшие фрагменты:

;; keep backup files neatly out of the way in .~/
(setq backup-directory-alist '(("." . ".~")))

Это заставляет файлы * ~, которые, как я считаю, загромождать каталог, в данном случае помещаются в специальный каталог. ~

;; uniquify changes conflicting buffer names from file<2> etc
(require 'uniquify)
(setq uniquify-buffer-name-style 'reverse)
(setq uniquify-separator "/")
(setq uniquify-after-kill-buffer-p t) ; rename after killing uniquified
(setq uniquify-ignore-buffers-re "^\\*") ; don't muck with special buffers

Это устанавливает uniquify, который изменяет эти уродливые файлы <2> и т. д., имена буферов, которые вы получаете, когда несколько файлов имеют одинаковые name в более понятное и недвусмысленное имя, используя как можно больше всего пути к файлу.

Вот и все ... остальное - довольно стандартные вещи, о которых, я уверен, все знают.

15
ответ дан 7 November 2019 в 08:16
поделиться

Прочитав это, я подумал, что было бы хорошо иметь простой сайт только для лучших модификаций .emacs. Не стесняйтесь размещать и голосовать за них здесь:

http://dotemacs.slinkset.com/

0
ответ дан 7 November 2019 в 08:16
поделиться

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

Все вещи находятся в ~/.elisp, каталоге, который находится под контролем версий (я использую git, если это интересно). ~/.emacs просто указывает на ~/.elisp/dotemacs, который сам просто загружает ~/.elisp/cfg/init. Этот файл в свою очередь импортирует различные конфигурационные файлы через require. Это означает, что конфигурационные файлы должны вести себя как режимы: они импортируют то, от чего зависят, и предоставляют себя в конце файла, например, (provide 'my-ibuffer-cfg). Все идентификаторы, которые определены в моей конфигурации, я префиксирую my-.

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

Мой init.el определяет следующий хук, чтобы убедиться, что Emacs перекомпилирует конфигурационные файлы при каждом сохранении (скомпилированный Elisp загружается намного быстрее, но я не хочу делать этот шаг вручную):

;; byte compile config file if changed
(add-hook 'after-save-hook
          '(lambda ()
                   (when (string-match
                          (concat (expand-file-name "~/.elisp/cfg/") ".*\.el$")
                          buffer-file-name)
           (byte-compile-file buffer-file-name))))

Вот структура каталогов для ~/.elisp:

~/.elisp/todo.org: Файл Org-режима, в котором я отслеживаю то, что еще нужно сделать (+ пункты списка пожеланий).

~/.elisp/dotemacs: Цель симлинка для ~/.emacs, загружает ~/.elisp/cfg/init.

~/.elisp/cfg: Мои собственные конфигурационные файлы.

~/.elisp/modes: Режимы, состоящие только из одного файла.

~/.elisp/packages: Сложные режимы с лиспом, документацией и, возможно, файлами ресурсов.

Я использую GNU Emacs, в этой версии нет реальной поддержки пакетов. Поэтому я организую их вручную, обычно так: ~/.elisp/packages/foobar-0.1.3 - корневой каталог для пакета. Подкаталог lisp содержит все lisp-файлы, а info - документацию. ~/.elisp/packages/foobar - это симлинк, указывающий на текущую используемую версию пакета, чтобы мне не нужно было менять конфигурационные файлы, когда я что-то обновляю. Для некоторых пакетов я храню ~/.elisp/packages/foobar.installation файл, в котором я сохраняю заметки о процессе установки. По соображениям производительности я компилирую все файлы elisp во вновь устанавливаемых пакетах, если это не делается по умолчанию.

4
ответ дан 7 November 2019 в 08:16
поделиться

Вот пара моих собственных вещей:

Вставляет дату в формате ISO 8601:

(defun insertdate ()
  (interactive)
  (insert (format-time-string "%Y-%m-%d")))

(global-set-key [(f5)] 'insertdate)

Для программистов на C ++ создает скелет класса (имя класса будет таким же, как имя файла без расширения):

(defun createclass ()
  (interactive)
  (setq classname (file-name-sans-extension (file-name-nondirectory   buffer-file-name)))
  (insert 
"/**
  * " classname".h 
  *
  * Author: Your Mom
  * Modified: " (format-time-string "%Y-%m-%d") "
  * Licence: GNU GPL
  */
#ifndef "(upcase classname)"
#define "(upcase classname)"

class " classname "
{
  public:
    "classname"();
    ~"classname"();

  private:

};
#endif
"))

Автоматически создавать закрывающие круглые скобки:

(setq skeleton-pair t)
(setq skeleton-pair-on-word t)
(global-set-key (kbd "[") 'skeleton-pair-insert-maybe)
(global-set-key (kbd "(") 'skeleton-pair-insert-maybe)
(global-set-key (kbd "{") 'skeleton-pair-insert-maybe) 
(global-set-key (kbd "<") 'skeleton-pair-insert-maybe)
4
ответ дан 7 November 2019 в 08:16
поделиться
Другие вопросы по тегам:

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