-
Notifications
You must be signed in to change notification settings - Fork 3
/
ctypes-dev.el
106 lines (90 loc) · 2.67 KB
/
ctypes-dev.el
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
;; In the ~/init.el file, write:
;; (setq load-path (cons "c:\\sf\\ctypes" load-path)
;; (require 'ctypes-dev)
;;
;; Try M-x customize-group ctypes-dev
;;
;; Based on twisted-dev.el
(provide 'ctypes-dev)
(defgroup ctypes-dev nil
"Various ctypes development utilities"
:group 'development)
(defcustom ctypes-dev-directory "c:\\sf\\ctypes_dist"
"ctypes root directory"
:group 'ctypes-dev
:type 'string)
(setenv "PYTHONPATH" ctypes-dev-directory)
(defmacro with-cd (dirname &rest code)
`(let ((old-dirname default-directory)
(start-buffer (current-buffer)))
(cd ,dirname)
(unwind-protect (progn ,@code)
(let ((end-buffer (current-buffer)))
;; (cd ,dirname)
(set-buffer start-buffer)
(cd old-dirname)
(set-buffer end-buffer)))))
(defun ctypes-dev-build ()
(interactive)
(with-cd ctypes-dev-directory
(compile "python setup.py build")))
(defun ctypes-dev-build-debug ()
(interactive)
(with-cd ctypes-dev-directory
(compile "py_d setup.py build -g")))
(defun ctypes-dev-rebuild ()
(interactive)
(with-cd ctypes-dev-directory
(compile "python setup.py build -f")))
(defun ctypes-dev-test ()
(interactive)
(with-cd (concat ctypes-dev-directory "\\unittests")
(compile "python runtests.py")))
(defun ctypes-dev-test-debug ()
(interactive)
(with-cd (concat ctypes-dev-directory "\\unittests")
(compile "py_d runtests.py")))
(defun comtypes-test ()
(interactive)
(with-cd (concat ctypes-dev-directory "\\comtypes\\unittests")
(compile "python runtests.py")))
(defun comtypes-test-debug ()
(interactive)
(with-cd (concat ctypes-dev-directory "\\comtypes\\unittests")
(compile "py_d runtests.py")))
(define-minor-mode ctypes-dev-mode
"Toggle ctypes-dev mode.
With no argument, this command toggles the mode.
Non-null prefix argument turns on the mode.
Null prefix argument turns off the mode."
;; The initial value.
nil
;; The indicator for the mode line.
" ctypes"
;; The minor mode bindings.
'(
;; ([f6] . ctypes-dev-genapidoc)
;; ([f7] . ctypes-dev-gendoc)
('(shift f8) . ctypes-dev-build-debug)
([f8] . ctypes-dev-build)
('(shift f9) . ctypes-dev-test-debug)
([f9] . ctypes-dev-test)
([f10] . comtypes-test)
('(shift f10) . comtypes-test-debug)
;; ([f11] . ctypes-dev-grep)
;; ([f12] . ctypes-dev-gendocs)
))
(add-hook
'find-file-hooks
(lambda ()
(let ((full-ctypes-path (expand-file-name ctypes-dev-directory)))
(if (> (length (buffer-file-name)) (length full-ctypes-path))
(if (string=
(substring (buffer-file-name) 0 (length full-ctypes-path))
full-ctypes-path)
(ctypes-dev-mode)
)))))
;(add-hook
; 'python-mode-hook
; (lambda ()
; (ctypes-dev-mode t)))