Add some standard places to PATH if they are not set by login script.
Rearrange the order of paths so system's are first, user's are last.
For Cygwin this helps with Cygwin's paths to be situated before
"C:/Windows" (Emacs is not started from a login shell on Windows!).
;; -*- mode: emacs-lisp; coding: utf-8; fill-column: 78 -*-
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(iswitchb-mode 1)
(setq iswitchb-regexp t)
(setq iswitchb-use-virtual-buffers t)
(setq iswitchb-buffer-ignore
'("^ "
"^\\*Buffer"
"^\\*Completions\\*"
"^\\*tramp"
"^\\*Dired log\\*"
"^\\*Quail Completions\\*"
"^\\*Disabled Command\\*"
"^TAGS"
))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(require 'ffap)
(ffap-bindings)
;; I usually mistype "C-x C-f" to "C-x d" or "C-x C-d", so always use find-file,
;; because when file if directory find-file load dired, if regular file open it.
(global-set-key (kbd "C-x C-f") 'find-file-at-point)
(global-set-key (kbd "C-x C-d") 'find-file-at-point)
(global-set-key (kbd "C-x d") 'find-file-at-point)
;; Stop 'ffap' in Dired as its suggestion is inconvenient.
(define-key dired-mode-map (kbd "C-x C-f") 'find-file)
(define-key dired-mode-map (kbd "C-x C-d") 'find-file)
(define-key dired-mode-map (kbd "C-x d") 'find-file)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(mapc (lambda (ext) (add-to-list 'completion-ignored-extensions ext))
'(
".class" "~" ".aux"
".o" ".obj" ".map" ".lib" ".lo" ".la" ".a" ".bin" ".exe"
;; Place dir at end to appear at the start of completion-ignored-extensions.
"CVS/" ".hg/" ".svn/" ".git/" ".bzr/"
) )
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun my-find-subdirs (dir)
(if (file-directory-p dir)
(cons dir (apply 'append (mapcar 'my-find-subdirs (directory-files dir t "^[^.]")) ) )
))
(defun my-add-subdirs-to-load-path (dir)
(mapc
(lambda (d)
(add-to-list 'load-path d t)
(message "Load-path updated with: %s" d)
)
(my-find-subdirs dir)) )
(my-add-subdirs-to-load-path my-lisp-usr-home-dir)
(my-add-subdirs-to-load-path my-lisp-dir)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(add-hook 'comint-output-filter-functions 'comint-strip-ctrl-m)
(add-hook 'comint-mode-hook 'ansi-color-for-comint-mode-on)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; For Cygwin.
(add-hook 'comint-output-filter-functions 'comint-strip-ctrl-m)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(message "TODO, XXX, FIXME highlight")
(defface my-contrasty-face
'((t :background "pink" :foreground "red" :weight bold))
"Font for showing conflicts."
:group 'basic-faces)
(dolist (mode (append my-devel-mode-list my-text-mode-list))
(font-lock-add-keywords
mode
`(
;; 64 times, for highlight C-u C-u C-u <key>
("\\([^[:space:]]\\)\\1\\{63\\}" 0 'my-contrasty-face t) )) )
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Make mouse clicks work in xterm (and iTerm).
(when (not (window-system))
(xterm-mouse-mode +1))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(message "org-mode, GTD, PIM, organize, todo")
(when (>= emacs-major-version 22)
(require 'org))
(when (or (featurep 'org) (featurep 'org-install))
(message "Many lines here..."))
(cond
((featurep 'org-capture)
(setq org-default-notes-file my-org-agenda-todo-file)
(setq org-capture-templates
'(("t" "Todo" entry (file my-org-agenda-todo-file) "* %?\n SCHEDULED: %T")))
(define-key global-map "\C-vr"
(lambda () (interactive) (org-capture nil "t")))
)
((or (featurep 'remember) (fboundp 'remember))
(setq remember-annotation-functions '(org-remember-annotation))
(setq remember-handler-functions '(org-remember-handler))
(add-hook 'remember-mode-hook 'org-remember-apply-template)
(define-key global-map "\C-vr" 'org-remember)
(setq org-remember-templates
;; With one item org-mode do not prompt choose template.
`(
("todo" ?t "* TODO %?" ,my-org-agenda-todo-file)
;; ("note" ?n "* %?\n" ,my-org-agenda-note-file)
))
(setq org-remember-store-without-prompt t)
(org-remember-insinuate)
))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(message "highlight selected text")
(cond
((= emacs-major-version 21) (pc-selection-mode))
((>= emacs-major-version 22) (pc-selection-mode 1)) )
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(message "keyboard, mouse")
(setq my-russian-input-method 'russian-computer)
(setq my-ukranian-input-method 'ukrainian-computer)
(setq my-ipa-input-method 'ipa-x-sampa)
(when (<= emacs-major-version 21)
(setq my-russian-input-method 'cyrillic-jcuken)
(setq my-ukranian-input-method 'cyrillic-jcuken))
(setq default-input-method my-russian-input-method)
(defun my-toggle-input-method (&optional arg)
(interactive "P")
(if (numberp arg)
(cond
((eq arg 1)
(activate-input-method nil))
((eq arg 2)
(activate-input-method 'my-russian-input-method))
((eq arg 3)
(activate-input-method 'my-ukranian-input-method))
((eq arg 4)
(activate-input-method 'greek))
((eq arg 5)
(activate-input-method 'my-ipa-input-method))
((eq arg 6)
(activate-input-method 'TeX)) )
(toggle-input-method arg)) )
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(message "dired")
(when (>= emacs-major-version 22)
;; Enable 'a' command.
(put 'dired-find-alternate-file 'disabled nil)
)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(message "devel, programming")
(when (>= emacs-major-version 22)
(add-to-list 'magic-mode-alist '(my--c++-header-file-p . c++-mode))
)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(message "desktop")
(when (>= emacs-major-version 22)
(require 'desktop)
(add-to-list 'desktop-path desktop-dirname)
(setq desktop-restore-frames nil)
(desktop-save-mode 1)
(setq
desktop-globals-to-save
(append
'((file-name-history . 100)
(compile-history . 100)
(command-history . 100)
(extended-command-history . 100)
(shell-command-history . 100)
(search-ring . 20)
(query-replace-history . 100)
(regexp-history . 100)
(grep-history . 100)
(minibuffer-history . 100)
tags-file-name
register-alist)
desktop-globals-to-save))
)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(message "coding system, charset, locale, lang")
;; Emacs 23.1 no longer need codepage-setup.
(when (<= emacs-major-version 22)
(codepage-setup 866)
(codepage-setup 1251)
)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(message "jdone")
(ignore-errors
(require 'jdone)
(jdone-setup-key-binding)
(jdone-integrate-hook)
)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(message "yasnippet")
(setq my-yas-root-directory "~/.emacs.d/my-yas")
(setq yas/ignore-filenames-as-triggers t)
;; (my--eval-after-load yasnippet
;; (cond
;; ((listp yas/root-directory) (add-to-list 'yas/root-directory my-yas-root-directory))
;; ((stringp yas/root-directory) (setq yas/root-directory (list my-yas-root-directory yas/root-directory)))
;; (t (error "I expect that yas/root-directory is a list of string")) )
;; (mapc 'yas/load-directory yas/root-directory))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(message "ECB")
(setq ecb-tip-of-the-day nil)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(message "vc-mode, VCS, version control, cvs, svn, mercurial, hg, bazaar, bzr, git, fossil")
(when (equal window-system 'w32)
(modify-coding-system-alist 'process "cvs" '(cp1251-dos . cp1251-dos))
(modify-coding-system-alist 'process "svn" '(cp1251 . cp1251))
(setq vc-svn-checkin-switches '("--encoding" "UTF-8"))
)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(message "fortune")
(setq fortune-file "~/XXX")
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(message "bbdb")
(eval-when 'compile (require 'bbdb nil t))
(setq
bbdb-offer-save 1
bbdb-use-pop-up t
bbdb-electric-p t
bbdb-popup-target-lines 1
)
(setq bbdb-complete-name-full-completion t)
(setq bbdb-completion-type 'primary-or-name)
(setq bbdb-complete-name-allow-cycling t)
(setq bbdb-file "~/.gnus/bbdb")
;; (bbdb-initialize 'gnus 'message)
;; (bbdb-insinuate-message)
;; (add-hook 'gnus-startup-hook 'bbdb-insinuate-gnus)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(message "rcirc")
(eval-when 'compile (require 'rcirc))
;; Turn on logging everything to a special buffer, for debugging.
;; (setq rcirc-debug-flag t)
(add-hook 'rcirc-mode-hook (lambda () (rcirc-track-minor-mode 1)))
(setq rcirc-time-format "%H:%M ")
(defun rcirc-handler-301 (process cmd sender args)
"/away message handler.")
(setq rcirc-default-server "irc.freenode.net")
(setq rcirc-default-port 6667)
(setq rcirc-default-nick user-nick)
(setq rcirc-default-user-full-name user-full-name)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(message "psvn")
(setq svn-status-verbose t)
(setq svn-status-hide-unmodified t)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(message "DVC")
(when (featurep 'dvc-emacs)
(setq dvc-tips-enabled nil)
)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(setq smtpmail-smtp-server "192.168.0.xxx")
(setq smtpmail-smtp-service "25")
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(message "font selection")
(defvar my-preferred-font
(cond
((eq window-system 'x)
"-misc-fixed-medium-r-normal--14-*-*-*-c-*-iso10646-1")
((eq window-system 'w32)
"Courier New-10:antialias=none")
(t nil)))
(when my-preferred-font
(set-frame-font my-preferred-font)
(set-fontset-font "fontset-default" 'latin my-preferred-font)
(set-fontset-font "fontset-default" 'phonetic my-preferred-font)
(set-fontset-font "fontset-default" 'cyrillic my-preferred-font)
(set-fontset-font "fontset-default" 'greek my-preferred-font))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(message "font selection")
(cond
((eq window-system 'x)
(set-frame-font "-*-terminus-*-*-*--14-*-*-*-c-*-*-*")
(setq-default line-spacing nil)
(set-fontset-font nil 'cyrillic "-*-terminus-*-*-*--14-*-*-*-c-*-*-*")
(set-fontset-font nil 'greek "-*-terminus-*-*-*--14-*-*-*-c-*-*-*")
(set-fontset-font nil nil "-misc-fixed-*-*-*--13-*-*-*-*-*-*-*")
(set-fontset-font nil 'phonetic "-misc-fixed-*-*-*--13-*-*-*-*-*-*-*")
(set-fontset-font nil 'symbol "-misc-fixed-*-*-*--13-*-*-*-*-*-*-*")
;; MODIFIER LETTER is not present in terminus, this includes ˌːˈ characters.
(set-fontset-font nil '(#x02C0 . #x02FF) "-misc-fixed-*-*-*--13-*-*-*-*-*-*-*") )
((eq window-system 'w32)
(set-frame-font "Courier New-10:antialias=none") ))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(message "smex")
;; icomplete also allow flex matching with '*', try 'M-x *copy*as TAB'
;; `smex' is alternative for `icomplete'.
;; https://github.com/nonsequitur/smex/
;; It is based on `ido'.
(ignore-errors
(require 'smex)
(smex-initialize)
(global-set-key (kbd "M-X") 'smex))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(message "ag")
(ignore-errors (require 'ag))
(defun my/ag (regex)
"Search with ag from project roor without prefix and from
`default-directory' with prefix."
(interactive (list (ag/read-from-minibuffer "Search regex")))
(if current-prefix-arg
(let ((current-prefix-arg nil)) (ag-regexp regex default-directory))
(ag-project-regexp regex)))
(setq ag-group-matches t)
(setq ag-highlight-search t)
(when (featurep 'ag)
(global-set-key [f7] 'my/ag))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(message "rgrep")
(global-set-key [f7] 'rgrep)
(defun lzgrep ()
(interactive)
(let ( (grep-template "zgrep <C> -nH -e <R> <F>") (grep-find-ignored-files nil) )
(cl-flet ( (grep-compute-defaults () nil) )
(call-interactively #'lgrep))))
(defun rzgrep ()
(interactive)
(let ( (grep-find-template "find . -type f <F> -exec zgrep <C> -nH -e <R> {} +") (grep-find-ignored-files nil) )
(cl-flet ( (grep-compute-defaults () nil) )
(call-interactively #'rgrep))))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(message "CEDET, semantic, SRecord")
;; For debug use 'semantic-debug-idle-function' and 'semantic-debug-idle-work-function'.
(eval-when 'compile
(require 'cedet nil t)
(require 'srecode nil t)
(require 'srecode/table nil t)
(require 'semantic nil t)
(require 'semantic/idle nil t)
(require 'ede/linux nil t))
(eval-and-compile
(when (or
(and (= emacs-major-version 23) (>= emacs-minor-version 2))
(>= emacs-major-version 24) )
(require 'cedet)
(require 'mode-local)))
(defun my-srecode-reload-templates ()
"Reload all templates under `srecode-map-load-path'. Useful
during template developing."
(interactive)
(setq srecode-mode-table-list nil
srecode-current-map nil)
(srecode-map-update-map) )
(defun my-c-mode-cedet-hook ()
;; (local-set-key [C-return] 'semantic-complete-symbol)
;; (local-set-key [C-return] 'semantic-complete-analyze-inline)
;; (local-set-key "." 'semantic-complete-self-insert)
;; (local-set-key ">" 'semantic-complete-self-insert)
)
(add-hook 'c-mode-common-hook 'my-c-mode-cedet-hook)
(when (featurep 'cedet)
(require 'semantic)
(global-semantic-idle-scheduler-mode 1)
(global-semantic-idle-summary-mode 1)
(global-semantic-idle-completions-mode -1)
(global-semantic-mru-bookmark-mode 1)
;; (setq semantic-stickyfunc-sticky-classes '(function type variable include package))
(global-semantic-stickyfunc-mode -1)
(global-semantic-highlight-func-mode -1)
(global-semantic-decoration-mode 1)
(when (fboundp 'global-semantic-idle-local-symbol-highlight-mode)
(global-semantic-idle-local-symbol-highlight-mode 1))
(setq semantic-idle-scheduler-idle-time 10)
(setq semantic-idle-scheduler-work-idle-time 60)
(setq semantic-idle-scheduler-max-buffer-size 100000)
;; (setq semantic-idle-work-parse-neighboring-files-flag nil)
;; semantic-dependency-system-include-path, semantic-customize-system-include-path
;; file local project unloaded system recursive
(setq-mode-local c-mode semanticdb-find-default-throttle '(file local))
(add-hook 'c-mode-hook (lambda nil (semantic-add-system-include "~/.emacs.d/include" 'c-mode)))
(add-hook 'c-mode-hook (lambda nil (semantic-add-system-include "~/.emacs.d/include" 'c++-mode)))
(global-semanticdb-minor-mode 1)
(ignore-errors
(global-cedet-m3-minor-mode 1))
(semantic-mode 1)
(global-ede-mode 1)
(require 'srecode)
(defvar srecode-map-load-path nil)
(add-to-list 'srecode-map-load-path (locate-user-emacs-file "srecode/"))
(global-srecode-minor-mode 1)
(add-hook 'prog-mode-hook 'srecode-minor-mode)
(ignore-errors
(cedet-ectag-version-check)
(semantic-load-enable-primary-ectags-support))
(ignore-errors
(cedet-gnu-global-version-check)
(require 'cedet-global)
(semanticdb-enable-gnu-global-databases 'c-mode)
(semanticdb-enable-gnu-global-databases 'c++-mode))
(ignore-errors
(require 'cedet-java))
(setq project-linux-build-directory-default 'same
project-linux-architecture-default "x86")
;; (require 'semantic/db-javap)
;; (add-to-list 'ede-locate-setup-options 'ede-locate-idutils)
;; (add-to-list 'ede-locate-setup-options 'ede-locate-global)
;; (ignore-errors (require 'cedet-idutils))
(ignore-errors
(require 'semantic/ia)
(define-key semantic-mode-map (kbd "C-c , .") 'semantic-ia-fast-jump)
(define-key semantic-mode-map (kbd "C-c , d") 'semantic-ia-show-doc)
(define-key semantic-mode-map (kbd "C-c , D") 'semantic-ia-show-summary)
(define-key semantic-mode-map (kbd "C-c , ?") 'semantic-ia-complete-symbol-menu)
;; (define-key semantic-mode-map [(control return)] 'semantic-ia-complete-symbol)
;; (define-key semantic-mode-map (kbd "C-c , C") 'semantic-ia-describe-class)
;; semantic-decoration-include-visit
;; semantic-analyze-proto-impl-toggle
)
;; END OF: (when (featurep 'cedet) ...)
)