Mercurial > dotfiles
comparison .elisp/textmate.el @ 49:60dbe5b005cc
Fix a bug in shell quoting.
author | Augie Fackler <durin42@gmail.com> |
---|---|
date | Wed, 11 Feb 2009 10:27:43 -0600 |
parents | 43e751bdedeb |
children | 26450200777a |
comparison
equal
deleted
inserted
replaced
48:bc63fd9e6d64 | 49:60dbe5b005cc |
---|---|
93 ,(kbd "A-/") [(control c)(control k)]) | 93 ,(kbd "A-/") [(control c)(control k)]) |
94 (textmate-goto-file | 94 (textmate-goto-file |
95 ,(kbd "A-t") [(meta t)]) | 95 ,(kbd "A-t") [(meta t)]) |
96 (textmate-goto-symbol | 96 (textmate-goto-symbol |
97 ,(kbd "A-T") [(meta T)]) | 97 ,(kbd "A-T") [(meta T)]) |
98 (textmate-toggle-camel-case | 98 (textmate-toggle-camel-case |
99 ,(kbd "C-_") [(control _)]))) | 99 ,(kbd "C-_") [(control _)]))) |
100 | 100 |
101 (defvar *textmate-project-root-p* | 101 (defvar *textmate-project-root-p* |
102 #'(lambda (coll) (or (member ".git" coll) | 102 #'(lambda (coll) (or (member ".git" coll) |
103 (member ".hg" coll) | 103 (member ".hg" coll) |
104 )) | 104 )) |
219 " ; " | 219 " ; " |
220 (cond ((string= type "git") "git ls-files") | 220 (cond ((string= type "git") "git ls-files") |
221 ((string= type "hg") "hg manifest")) | 221 ((string= type "hg") "hg manifest")) |
222 " | xargs grep -nR " | 222 " | xargs grep -nR " |
223 (if pattern (concat " --include='" pattern "' ") "") | 223 (if pattern (concat " --include='" pattern "' ") "") |
224 "'" re "'")) | 224 (shell-quote-argument re))) |
225 (t (concat "cd " root "; egrep -nR --exclude='" | 225 (t (concat "cd " root "; egrep -nR --exclude='" |
226 *textmate-gf-exclude* | 226 *textmate-gf-exclude* |
227 "' --include='" | 227 "' --include='" |
228 incpat | 228 incpat |
229 "' '" | 229 "' " |
230 re | 230 (shell-quote-argument re) |
231 "' . | grep -vE '" | 231 " . | grep -vE '" |
232 *textmate-gf-exclude* | 232 *textmate-gf-exclude* |
233 "' | sed s:./::" | 233 "' | sed s:./::" |
234 ))))) | 234 ))))) |
235 (compilation-start command 'grep-mode))) | 235 (compilation-start command 'grep-mode))) |
236 ))) | 236 ))) |
244 (defun textmate-toggle-camel-case () | 244 (defun textmate-toggle-camel-case () |
245 "Toggle current sexp between camelCase and snake_case, like TextMate C-_." | 245 "Toggle current sexp between camelCase and snake_case, like TextMate C-_." |
246 (interactive) | 246 (interactive) |
247 (if (thing-at-point 'word) | 247 (if (thing-at-point 'word) |
248 (progn | 248 (progn |
249 (unless (looking-at "\\<") (backward-sexp)) | 249 (unless (looking-at "\\<") (backward-sexp)) |
250 (let ((case-fold-search nil) | 250 (let ((case-fold-search nil) |
251 (start (point)) | 251 (start (point)) |
252 (end (save-excursion (forward-sexp) (point)))) | 252 (end (save-excursion (forward-sexp) (point)))) |
253 (if (and (looking-at "[a-z0-9_]+") (= end (match-end 0))) ; snake-case | 253 (if (and (looking-at "[a-z0-9_]+") (= end (match-end 0))) ; snake-case |
254 (progn | 254 (progn |
255 (goto-char start) | 255 (goto-char start) |
256 (while (re-search-forward "_[a-z]" end t) | 256 (while (re-search-forward "_[a-z]" end t) |
257 (goto-char (1- (point))) | 257 (goto-char (1- (point))) |
258 (delete-char -1) | 258 (delete-char -1) |
259 (upcase-region (point) (1+ (point))) | 259 (upcase-region (point) (1+ (point))) |
260 (setq end (1- end)))) | 260 (setq end (1- end)))) |
261 (downcase-region (point) (1+ (point))) | 261 (downcase-region (point) (1+ (point))) |
262 (while (re-search-forward "[A-Z][a-z]" end t) | 262 (while (re-search-forward "[A-Z][a-z]" end t) |
263 (forward-char -2) | 263 (forward-char -2) |
264 (insert "_") | 264 (insert "_") |
265 (downcase-region (point) (1+ (point))) | 265 (downcase-region (point) (1+ (point))) |
266 (forward-char 1) | 266 (forward-char 1) |
267 (setq end (1+ end))) | 267 (setq end (1+ end))) |
268 (downcase-region start end) | 268 (downcase-region start end) |
269 ))))) | 269 ))))) |
270 | 270 |
271 ;;; Utilities | 271 ;;; Utilities |
272 | 272 |
273 (defun textmate-also-ignore (pattern) | 273 (defun textmate-also-ignore (pattern) |
274 "Also ignore PATTERN in project files." | 274 "Also ignore PATTERN in project files." |