summary refs log tree commit diff
path: root/configs/rcs/emacs.d/config/fcuny-editor.el
blob: bc9fbb4fa86ff96a073bc97c7ae9705f409f8c73 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
(eval-when-compile
  (require 'use-package))

(use-package auto-package-update
  :ensure t
  :config
  (setq auto-package-update-delete-old-versions t)
  (setq auto-package-update-hide-results t)
  (setq auto-package-update-last-update-day-filename (expand-file-name "last-update-day" fcuny-path-emacs-var))
  (auto-package-update-maybe))

(use-package bookmark
  :custom
  (bookmark-default-file fcuny-bookmarks-dir)
  (bookmark-save-flag 1))

(use-package autorevert
  :config
  (global-auto-revert-mode t))

(use-package midnight
  :config
  (midnight-mode t))

(use-package autorevert
  :config
  (setq global-auto-revert-non-file-buffers t)
  (setq auto-revert-verbose nil)
  (global-auto-revert-mode t))

(use-package recentf
  :config
  (setq recentf-save-file (expand-file-name "var/recentf" user-emacs-directory)))

(use-package server
  :if window-system
  :init
  (add-hook 'after-init-hook 'server-start))

(use-package hl-line
  :config
  (global-hl-line-mode t))

(use-package tramp
  :custom
  (tramp-default-method "ssh")
  (tramp-persistency-file-name (expand-file-name "var/tramp" user-emacs-directory)))

(use-package whitespace
  :custom
  (whitespace-style '(face trailing))
  (show-trailing-whitespace t)
  :hook (whitespace-mode))

(use-package counsel
  :ensure t
  :bind
  (("M-x"     . counsel-M-x)
   ("C-s"     . counsel-grep-or-swiper)
   ("C-x C-f" . counsel-find-file)
   ("C-x C-r" . counsel-recentf)
   ("C-c f"   . counsel-git)
   ("C-c s"   . counsel-git-grep)
   ("C-c /"   . counsel-ag))
  :custom
  (counsel-find-file-at-point t)
  :config
  (use-package swiper :ensure t)
  (use-package counsel-projectile :ensure t))

(use-package ivy
  :ensure t
  :diminish (ivy-mode . "")
  :bind ("C-c m" . ivy-switch-project)
  :config
  (ivy-mode 1)
  (setq ivy-use-virtual-buffers t
        ivy-height 10
        ivy-count-format "(%d/%d) "
        ivy-initial-inputs-alist nil
        ivy-use-ignore-default 'always
        ivy-ignore-buffers '("company-statistics-cache.el" "company-statistics-autoload.el")
        ivy-re-builders-alist '((swiper . ivy--regex-ignore-order)
                                (t      . ivy--regex-fuzzy)
                                (t      . ivy--regex-ignore-order)))

  (defun ivy-switch-project ()
    (interactive)
    (ivy-read
     "Switch to project: "
     (if (projectile-project-p)
         (cons (abbreviate-file-name (projectile-project-root))
               (projectile-relevant-known-projects))
       projectile-known-projects)
     :action #'projectile-switch-project-by-name))

  (ivy-set-actions
   'ivy-switch-project
   '(("d" dired "Open Dired in project's directory")
     ("v" counsel-projectile "Open project root in vc-dir or magit")
     ("c" projectile-compile-project "Compile project")
     ("r" projectile-remove-known-project "Remove project(s)"))))

(use-package projectile
  :ensure t
  :diminish projectile-mode
  :bind-keymap ("C-c p" . projectile-command-map)

  :init
  (add-hook 'after-init-hook #'projectile-mode)

  :config
  (setq projectile-switch-project-action 'projectile-dired
        projectile-enable-caching t
        projectile-completion-system 'ivy
        projectile-known-projects-file (expand-file-name "var/projectile-bookmarks.eld" user-emacs-directory)
        projectile-cache-file (expand-file-name "var/projectile.cache" user-emacs-directory)
        projectile-globally-ignored-directories (append fcuny-projects-ignored-dirs
                                                        projectile-globally-ignored-directories)
        projectile-globally-ignored-files (append
                                                  projectile-globally-ignored-files)))

(use-package ag
  :ensure t
  :bind (:map ag-mode-map
              ("p" . compilation-previous-error)
              ("n" . compilation-next-error)
              ("N" . compilation-next-file)
              ("P" . compilation-previous-file))
  :custom
  (ag-highlight-search t)
  (ag-reuse-buffers t)
  (ag-reuse-window t))

(use-package dired
  :defer t
  :bind ("C-x C-d"  . dired)
  :init
  (setq-default dired-dwim-target t)
  (setq dired-recursive-deletes 'always)
  (setq dired-recursive-copies 'always)

  (let ((gls (executable-find "/opt/twitter/bin/gls")))
    (when gls (setq insert-directory-program gls))))

(use-package ibuffer
  :ensure t
  :bind ("C-x C-b" . ibuffer))

(use-package flycheck
  :ensure t
  :config
  (progn
    (add-hook 'prog-mode-hook 'flycheck-mode)
    (setq flycheck-highlighting-mode 'lines)
    (setq flycheck-check-syntax-automatically '(mode-enabled save))
    (setq flycheck-checkers (delq 'emacs-lisp-checkdoc flycheck-checkers))
    (if (fc/check-work-machine-p)
      (flycheck-define-checker fc/twitter-source-check
        "A syntax checker for python source code in Source, using `check.pex'"
        :command ("check.pex" source)
        :error-patterns ((error line-start (id (1+ nonl)) ":ERROR" (1+ nonl) ":" line (message) line-end)
                         (warning line-start (id (1+ nonl)) ":WARNING" (1+ nonl) ":" line (message) line-end))
        :predicate fc/check-source-p
        :modes (python-mode))
      (add-to-list 'flycheck-checkers 'fc/twitter-source-check))))

(provide 'fcuny-editor)