LINUX.ORG.RU
решено ФорумTalks

Самоучитель по Emacs

 ,


0

2

Мне захотелось собрать себе Emacs OS. Именно в смысле комбайна, умеющего ВСЕ. Но нужен сабж не в виде самоучителя, а этаких советов, с чего начать. Короче, этакое пособие «как разумно собирать миранду», только для емакса.

★★★★★

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

Начните с Emacs'а

Ну это, право, толстота. Вы Emacs хоть раз запускали? Он сразу предлагает пройти tutorial (C-h t). Потом можно добавить недостающие знания с EmacsWiki.

Camel ★★★★★
()
Ответ на: Начните с Emacs'а от Camel

Ты не понимаешь. Смысл не в емаксе, смысл в том, чтоб на лор об этом написать.

Alsvartr ★★★★★
()

Проходишь туториал, потом делаешь package-list-packages и прореживаешь репозиторий в поисках полезных пакетов. + читаешь в интернетах статьи на тему того, как настроить ту или иную вещь. По org-mode их полно, к примеру.

умеющего ВСЕ

Так не получится. Встроенный фм крайне убог, браузер тоже сторонний, торренто-клиент тоже.

А так, у меня он вполне заменяет редактор + jabber-клиент + аудиоплеер + планировщик времени. Но это явно не «всё!111».

Lilly
()

И да, ты там как, нелюдимость уже поборол, на дворак пересел, пакетник написал, прежде чем за эмакс садиться?

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

На нелюдимость плюнул - не мешает, дворак отложил до лучших времен, пакетник в процессе - сейчас пишу разрешение зависимостей и БД пакетов.

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

Так ты сперва с предыдущими делами разберись, нафлудить всегда успеешь. Да и в предыдущем треде про редакторы вим там тебе советовали, емнип.

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

Учитель информатики ничего не знает почти про линукс и его проги.

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

пятница

Ну завтра стоит ожидать массового невыхода на работу.

Ttt ☆☆☆☆☆
()

Тебе задачи надо решать или комбайн собирать ради комбайна? Просто используй его в работе и твой персональный setup будет сам собой расти со временем.

Если нуб в емаксе, то в дополнение можно вот что:

- emacs tutorial

- Info-файлы emacs хотя бы поверхностно (M-x info -> «Emacs»)

- Изучай чужие конфигурации, посты на тему конфигураций emacs (наподобие этого)

- Поработай с наиболее известными плагинами и режимами (shell, dired, tramp, org-mode, cedet, ido/helm/icicles)

Cheater
()

.emacs

;; Инициализация важных переменных
(setq soomrack-project-home (substring (pwd) 10))
(setq-default truncate-lines 1)

;;
(load «/usr/share/emacs/site-lisp/site-gentoo»)

;; Path for addons
(add-to-list 'load-path «~/.emacs.d/lisp/»)
(add-to-list 'load-path «~/.emacs.d/_my/»)

;; Fonts
(set-default-font «Terminus-9»)
(set-face-attribute 'default (selected-frame) :height 100)

;; Selecting color theme can be changes using M-x color-theme-<name>
(require 'color-theme)
(color-theme-initialize)
(color-theme-hober)

;(menu-bar-mode nil)
(tool-bar-mode 0)
(line-number-mode t)
(column-number-mode t)

;;========================================================================================
;; FullScreen
(defun fullscreen ()
  «Fullscreen.»
  (interactive)
  (x-send-client-message nil 0 nil «_NET_WM_STATE» 32
                         ;; if first parameter is '1', can't toggle fullscreen status
                         '(1 «_NET_WM_STATE_FULLSCREEN» 0)))

(defun fullscreen-toggle ()
  «Toggle fullscreen status.»
  (interactive)
  (x-send-client-message nil 0 nil «_NET_WM_STATE» 32
                         ;; if first parameter is '2', can toggle fullscreen status
                         '(2 «_NET_WM_STATE_FULLSCREEN» 0)))
(provide 'fullscreen)
;; (fullscreen)
;;========================================================================================

;; Backup to ~/backup
(when (not (file-directory-p «~/backup»))
  (make-directory «~/backup»))
(if (file-directory-p «~/backup»)
    (setq backup-directory-alist '(("." . «~/backup»))))

;; Useful keys
(global-set-key [f12] 'kill-buffer-and-window)

;; Print to pdf
(defun print-to-pdf ()
  (interactive)
  (ps-spool-buffer-with-faces)
  (switch-to-buffer «*PostScript*»)
  (write-file «/tmp/tmp.ps»)
  (kill-buffer «tmp.ps»)
  (setq cmd (concat «ps2pdf14 /tmp/tmp.ps » (buffer-name) ".pdf"))
  (shell-command cmd)
  (shell-command «rm /tmp/tmp.ps»)
  (message (concat «Saved to:  » (buffer-name) ".pdf"))  
  )

;; svn
(global-set-key [f11] 'svn-status)

;; ECB
(require 'ecb)
(defun soomrack-ecb-activate ()
  (interactive)
  (ecb-activate)
  (ecb-redraw-layout))
(global-set-key [f3] 'soomrack-ecb-activate)
(global-set-key (kbd «M-1») 'ecb-goto-window-edit-last)
(global-set-key (kbd «M-2») 'ecb-goto-window-directories)
(global-set-key (kbd «M-3») 'ecb-goto-window-sources)
(global-set-key (kbd «M-4») 'ecb-goto-window-methods)
(global-set-key (kbd «M-5») 'ecb-goto-window-history)
(global-set-key (kbd «C-1») 'ecb-toggle-ecb-windows)
(global-set-key (kbd «C-2») 'ecb-maximize-window-directories)
(global-set-key (kbd «C-3») 'ecb-maximize-window-sources)
(global-set-key (kbd «C-4») 'ecb-maximize-window-methods)
(global-set-key (kbd «C-5») 'ecb-maximize-window-history)


;;========================================================================================
;; TAGS,
;; see ~/.ctags for:
;;     latex, bibtex
;;========================================================================================

;;(setq tags-revert-without-query t)
;;(defun soomrack-update-etags ()
;;  «Update TAGS»
;;  (interactive)
;;  (setq soomrack-current-directory (substring (pwd) 10))
;;  (cd soomrack-project-home)
;;  (shell-command (format «rm -f ./TAGS; touch TAGS» ))
;;  (shell-command (format «for f in `find ./ -type f -name '*.js'`;    do f=`echo $f | sed -e 's/^..//g'`; ctags -e -a $f; done» ))
;;  (shell-command (format «for f in `find ./ -type f -name '*.sql'`;   do f=`echo $f | sed -e 's/^..//g'`; ctags -e -a $f; done» ))
;;  (shell-command (format «for f in `find ./ -type f -name '*.p[lm]'`; do f=`echo $f | sed -e 's/^..//g'`; ctags -e -a $f; done» ))
;;  (shell-command (format «for f in `find ./ -type f -name '*.[ch]'`;  do f=`echo $f | sed -e 's/^..//g'`; ctags -e -a $f; done» ))
;;  (shell-command (format «for f in `find ./ -type f -name '*.cxx'`;   do f=`echo $f | sed -e 's/^..//g'`; ctags -e -a $f; done» ))
;;  (shell-command (format «for f in `find ./ -type f -name '*.cpp'`;   do f=`echo $f | sed -e 's/^..//g'`; ctags -e -a $f; done» ))
;;  (shell-command (format «for f in `find ./ -type f -name '*.tex'`;   do f=`echo $f | sed -e 's/^..//g'`; ctags -e -a $f; done» ))
;;  (shell-command (format «for f in `find ./ -type f -name '*.bib'`;   do f=`echo $f | sed -e 's/^..//g'`; ctags -e -a $f; done» ))
;;  (shell-command (format «for f in `find ./ -type f -name '*.muse'`;  do f=`echo $f | sed -e 's/^..//g'`; ctags -e -a $f; done» ))
;;  (visit-tags-table "./TAGS")
;;  (cd soomrack-current-directory)
;;  (message (concat soomrack-project-home «TAGS: file updated.»)))
;;(soomrack-update-etags)
;;(global-set-key [f5] 'soomrack-update-etags)
;;(global-set-key [f6] 'find-tag)
;;(global-set-key (kbd «M-,») 'pop-tag-mark)
;;(defun soomrack-complete()
;;  (interactive)
;;  (tags-apropos (thing-at-point 'word)))
;;(global-set-key (kbd «M-RET») 'soomrack-complete)


;;========================================================================================
;; CSS
;;========================================================================================

(add-hook 'css-mode-hook
	  (lambda()
	    (require 'css-complete)
	    (local-set-key [\C-return] 'css-complete)

	    (hs-minor-mode)
	    (local-set-key (kbd «M--») 'hs-hide-block)
	    (local-set-key (kbd «M-=») 'hs-show-block)

	    ))


;;========================================================================================
;; SQL
;;========================================================================================

(add-hook 'sql-mode-hook
	  (lambda()

	    (hs-minor-mode)
	    (local-set-key (kbd «M--») 'hs-hide-block)
	    (local-set-key (kbd «M-=») 'hs-show-block)

	    ;; imenu
	    (imenu-add-menubar-index)

	    ;; MySQL
	    (require 'sql-completion)
	    (setq sql-interactive-mode-hook
		  (lambda ()
		    (define-key sql-interactive-mode-map «\t» 'comint-dynamic-complete)
		    (sql-mysql-completion-init)))

	    ;; Buffer name
	    (defun sql-make-smart-buffer-name ()
	      «Return a string that can be used to rename a SQLi buffer. 
               This is used to set `sql-alternate-buffer-name' within
               `sql-interactive-mode'.»
	      (or (and (boundp 'sql-name) sql-name)
		  (concat (if (not(string= «» sql-server))
			      (concat
			       (or (and (string-match «[0-9.]+» sql-server) sql-server)
				   (car (split-string sql-server «\\.»)))
			       «/»))
			  sql-database)))
	    (add-hook 'sql-interactive-mode-hook
		      (lambda ()
			(setq sql-alternate-buffer-name (sql-make-smart-buffer-name))
			(sql-rename-buffer)))
	    
	    ))

	    
;;========================================================================================
;; Javascript
;;========================================================================================

(add-hook 'js-mode-hook 
	  (lambda()

	    (moz-minor-mode 1)  
	    (imenu-add-to-menubar «Index»)

	    (hs-minor-mode)
	    (local-set-key (kbd «M--») 'hs-hide-block)
	    (local-set-key (kbd «M-=») 'hs-show-block)
	    
	    (local-set-key [f8] 'moz-send-region)
;;;	    (local-set-key (kbd «M-?») 'help-dwim)

	    ;; auto-comlete
	    (add-to-list 'load-path «~/.emacs.d/_my/auto-complete-1.3.1/»)
	    (require 'auto-complete)
	    (auto-complete-mode)
	    (local-set-key (kbd «M-a») 'ac-complete-abbrev)
	    (local-set-key (kbd «M-d») 'ac-complete-dictionary)
	    (local-set-key (kbd «M-f») 'ac-complete-functions)
	    (local-set-key (kbd «M-s») 'ac-complete-symbols)
	    (local-set-key (kbd «M-v») 'ac-complete-variables)
	    (local-set-key [\C-return] 'ac-complete)

	    ))
soomrack ★★★★
()
Ответ на: комментарий от soomrack
;;========================================================================================
;; C, C++
;;========================================================================================

(add-hook 'c-mode-common-hook 
	  (lambda()
	    (global-ede-mode t)
	    
	    (setq semantic-load-turn-useful-things-on t)

	    ;;(semantic-load-enable-semantic-debugging-helpers)
	    ;;(semantic-load-enable-excessive-code-helpers)
	    ;;(semantic-load-enable-gaudy-code-helpers )
	    (semantic-load-enable-code-helpers) 
	    ;;(semantic-load-enable-minimum-features)
  
	    ;; Искать только во время простоя
	    (global-semantic-idle-scheduler-mode 1)
	    (global-semantic-idle-completions-mode 1)
	    (global-semantic-idle-summary-mode 1)
	    (local-set-key [\C-return] 'semantic-ia-complete-symbol-menu)
	    (local-set-key (kbd «C-?») 'semantic-ia-show-doc)
	    (local-set-key (kbd «M-?») (lambda () (interactive) (manual-entry (current-word))))
	    
	    (require 'semantic-ia)
	    (require 'semantic-gcc)
	    (semantic-add-system-include «/usr/include/ImageMagick» 'c++-mode)
	    
	    (require 'semanticdb)
	    (global-semanticdb-minor-mode 1)
	    
	    (require 'semanticdb-global)
	    (setq semanticdb-default-save-directory «~/.emacs.d/semantic»)
	    (semanticdb-enable-gnu-global-databases 'c-mode)
	    (semanticdb-enable-gnu-global-databases 'c++-mode)
	    
	    ;; включить поддержку ctags для основных языков: Unix Shell, Perl,
	    ;; Pascal, Tcl, Fortran, Asm
	    (require 'semanticdb-ectag)
	    (semantic-load-enable-primary-exuberent-ctags-support)
	    
	    (defun my-semantic-hook ()
	      (imenu-add-to-menubar «TAGS»))
	    (add-hook 'semantic-init-hooks 'my-semantic-hook)
	    	    
	    ;; Senator
	    (global-semantic-tag-folding-mode)
	    (local-set-key (kbd «M--») 'senator-fold-tag)
	    (local-set-key (kbd «M-=») 'senator-unfold-tag)
	    (local-set-key '[M-left] 'senator-previous-tag)
	    (local-set-key '[M-right] 'senator-next-tag)
    
	    ;; Compile
	    (defun soomrack-compile ()
	      (interactive)
	      (setq soomrack-current-directory (substring (pwd) 10))
	      (cd soomrack-project-home)	      
	      (compile «make -k»)
	      (cd soomrack-current-directory))
	    (global-set-key [f9] 'soomrack-compile)
	    (global-set-key [f8] 'gdb)

	    ;; Оформление кода
;	    (setq fill-column 79)
;	    (setq-default tab-width 4)
;	    (c-set-style «k&r»)
	    (setq c-default-style «k&r»
		  c-basic-offset 4)
;	    (c-set-offset 'case-label '+) 
;	    (setq indent-tabs-mode t)
	    ))


;;========================================================================================
;; Perl
;;========================================================================================

(defalias 'perl-mode 'cperl-mode)

(add-hook 'cperl-mode-hook 
	  (lambda()
	    (setq cperl-invalid-face (quote off))

	    (require 'perl-completion)
	    (perl-completion-mode t)
	    (imenu-add-to-menubar «Index»)
;;	    (local-set-key [\C-return] 'plcmp-cmd-complete-all)
;;	    (local-set-key (kbd «C-c d») 'plcmp-cmd-show-doc)

;;	    (flymake-mode)

	    (outline-minor-mode)	    
	    (local-set-key '[M-up] 'outline-up-heading)
	    (local-set-key '[M-left] 'outline-previous-heading)
	    (local-set-key '[M-right] 'outline-next-heading)
	    (local-set-key (kbd «M-_») 'hide-subtree)
	    (local-set-key (kbd «M-+») 'show-subtree)

	    (hs-minor-mode)
	    (local-set-key (kbd «M--») 'hs-hide-block)
	    (local-set-key (kbd «M-=») 'hs-show-block)
	    
	    (load «pde-load»)
	    (add-to-list 'cperl-style-alist
			 '(«PDE»
			   (cperl-auto-newline                         . t)
			   (cperl-brace-offset                         . 0)
			   (cperl-close-paren-offset                   . -4)
			   (cperl-continued-brace-offset               . 0)
			   (cperl-continued-statement-offset           . 4)
			   (cperl-extra-newline-before-brace           . nil)
			   (cperl-extra-newline-before-brace-multiline . nil)
			   (cperl-indent-level                         . 4)
			   (cperl-indent-parens-as-block               . t)
			   (cperl-label-offset                         . -4)
			   (cperl-merge-trailing-else                  . t)
			   (cperl-tab-always-indent                    . t)))
	    (cperl-set-style «PDE»)
;;	    (local-set-key (kbd «M-'») 'just-one-space)
;;	    (local-set-key (kbd «C-M-=») 'pde-indent-dwim)

	    (local-set-key [f9] 'compile-dwim-compile)
;	    (local-set-key [f2] 'imenu-tree)

	    (require 'perldoc)
	    (help-dwim-active-type 'perldoc)
	    (local-set-key (kbd «M-?») 'help-dwim)

	    (autoload 'run-perl «inf-perl» «Start perl interactive shell» t)
	    (local-set-key [f8] 'inf-perl-start)
	    (local-set-key [f7] 'inf-perl-send-region)

	    (custom-set-faces
	     '(cperl-array-face ((t (:weight normal))))
	     '(cperl-hash-face ((t (:weight normal))))
	     )

	    ))


;;========================================================================================
;; LaTeX
;;========================================================================================

(add-hook 'LaTeX-mode-hook
	  (lambda()
	    (LaTeX-math-mode)
	    (flyspell-mode)

	    (local-set-key [\C-return] 'LaTeX-close-environment)

	    ;; Compile
	    (tex-pdf-mode)
	    (defun soomrack-latex-to-pdf ()
	      «Prepare PDF»
	      (interactive)
	      (shell-command (format (concat «pdflatex » (buffer-file-name))))
	      (message (concat «pdflatex » (buffer-file-name) )))
	    (local-set-key (kbd «C-p») 'soomrack-latex-to-pdf)
	    
	    (local-set-key [f9] 'preview-document)
	    (local-set-key [f8] 'preview-region)
	    (local-set-key [f7] 'preview-clearout-at-point)

	    ))
soomrack ★★★★
()
Ответ на: комментарий от soomrack
;;========================================================================================
;; Maxima
;;========================================================================================

(add-hook 'maxima-mode-hook
	  (lambda()
	    (maxima-start)
	   
	    (local-set-key [f9] 'maxima-send-buffer)
	    (local-set-key [f8] 'maxima-send-region)
	    (local-set-key (kbd «M-?») 'maxima-help-at-point)
	    (local-set-key [\C-return] 'maxima-complete)

	    (hs-minor-mode)
	    (local-set-key (kbd «M--») 'hs-hide-block)
	    (local-set-key (kbd «M-=») 'hs-show-block)
	    
	    ))

;;========================================================================================
;; iMaxima + iMath
;;========================================================================================

(setq auto-mode-alist (cons '(«\\.ima?[cx]$» . imath-mode) auto-mode-alist))
(add-hook 'imath-mode-hook
	  (lambda()
	    ;; Selecting color theme can be changes using M-x color-theme-<name>
;	    (require 'color-theme)
;	    (color-theme-initialize)
;	    (color-theme-standard)

	    (maxima-mode)
	    
	    ;; Maxima
	    (local-set-key (kbd «M-?») 'maxima-help-at-point)
	    (local-set-key [\C-return] 'maxima-complete)

	    ;; iMath
	    (local-set-key [f7] 'remove-maxima-formula-image)
	    (local-set-key [f8] 'form-to-image)
	    (local-set-key [f9] 'buffer-formula-to-image)
	    (local-set-key (kbd «M-]») 'compose-latex-formula)
	    (local-set-key (kbd «M-[») 'compose-maxima-formula)

	    (hs-minor-mode)
	    (local-set-key (kbd «M--») 'hs-hide-block)
	    (local-set-key (kbd «M-=») 'hs-show-block)

;	    (defun soomrack-print()
;	      (interactive)
;	      (imath-to-html)
;	      (shell-command (format «for file in `ls ./1-images`; do convert -negate 
;                                     ./1-images/$file ./1-images/$file.png; mv ./1-images/$file.png ./1-images/$file; done»))
;	      (message «pdf created!»))
;	    (local-set-key [f4] 'soomrack-print)

	    ))


;;========================================================================================
;; Muse
;;========================================================================================

(require 'muse-mode)
(add-hook 'muse-mode-hook
	  (lambda()     
	    (require 'muse-html)
	    (require 'muse-latex)
	    (require 'muse-texinfo)
	    (require 'muse-docbook)    
	    (require 'muse-project) 

;	    (setq muse-project-alist 
;		  `((«Website» 
;		     (,(concat soomrack-project-home «/»)
;		      :default «index»)
;		     (:base «html» :path ,(concat soomrack-project-home «/html»)))
;		    ))
	    (setq muse-project-alist 
		  `((«current-project»
		     ( ,@(muse-project-alist-dirs (concat soomrack-project-home «/wiki-muse»)) :default «index»)
		     ,@(muse-project-alist-styles (concat soomrack-project-home «/wiki-muse»)
						  (concat soomrack-project-home «/wiki-html») «html»))))

	    ))


;;========================================================================================
;(custom-set-variables '(inhibit-startup-screen t))
;(custom-set-faces)
(custom-set-variables
 ;; custom-set-variables was added by Custom.
 ;; If you edit it by hand, you could mess it up, so be careful.
 ;; Your init file should contain only one such instance.
 ;; If there is more than one, they won't work right.
 '(ecb-layout-window-sizes (quote ((«soomrack1» (0.0992063492063492 . 0.49333333333333335) (0.23015873015873015 . 0.49333333333333335) (0.15476190476190477 . 0.49333333333333335) (0.1746031746031746 . 0.49333333333333335)))))
 '(ecb-options-version «2.40»)
 '(ecb-tip-of-the-day nil)
 '(inhibit-startup-screen t)
 '(load-home-init-file t t))
(custom-set-faces
 ;; custom-set-faces was added by Custom.
 ;; If you edit it by hand, you could mess it up, so be careful.
 ;; Your init file should contain only one such instance.
 ;; If there is more than one, they won't work right.
 '(cperl-array-face ((t (:weight normal))))
 '(cperl-hash-face ((t (:weight normal)))))

(put 'downcase-region 'disabled nil)

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

Спасибо за тонны жуткого кода) Но гляну.

DeadEye ★★★★★
() автор топика

Уже говорили что это древнее говно мамонта не нужно?

kike
()

Использую Emacs как текстовый редактор исключительно. Даже в качестве IDE у меня IDEA. Что я делаю не так?

pashazz ★★★★
()

Сначала удали всю гадость вроде Qt, ибо Emacs тру, а тру гадости не выносит.

bluesman
()

Встроенный самоучитель, статьи Алекса Отта и его книжонка в соавторстве с забыл-кем.

ymn ★★★★★
()
  • Ричард Столмен «Руководство по GNU Emacs», перевод Н.Ю. Иванова, А.Я. Отт, О.С. Тихонов.
  • «Learning GNU Emacs» by Debra Cameron, James Elliott, Marc Loy.
Wizard_ ★★★★★
()
Последнее исправление: Wizard_ (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.