Skip to content

Commit 62cd002

Browse files
committed
Set pythonic process properties.
Set path, pythonpath, default-directory and environment properties.
1 parent 3e8fb92 commit 62cd002

File tree

2 files changed

+58
-13
lines changed

2 files changed

+58
-13
lines changed

pythonic.el

Lines changed: 24 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -87,16 +87,18 @@ It will use `python-shell-exec-path' for PATH variable,
8787
(pythonic-set-path-variable)
8888
(pythonic-set-extra-variables)))
8989

90+
(defun pythonic-get-pythonpath-variable ()
91+
"Get PYTHONPATH variable from `python-shell-extra-pythonpaths' variable."
92+
(s-join path-separator
93+
(->> (or (getenv "PYTHONPATH") "")
94+
(s-split path-separator)
95+
(-union python-shell-extra-pythonpaths)
96+
(-remove 's-blank?)
97+
(-distinct))))
98+
9099
(defun pythonic-set-pythonpath-variable ()
91100
"Set PYTHONPATH variable from `python-shell-extra-pythonpaths' variable."
92-
(-let* ((pythonpath (or (getenv "PYTHONPATH") ""))
93-
(pythonpaths (s-split path-separator pythonpath t))
94-
(external-pythonpaths (--remove (member it python-shell-extra-pythonpaths)
95-
pythonpaths))
96-
(new-pythonpaths (append python-shell-extra-pythonpaths
97-
external-pythonpaths))
98-
(new-pythonpath (s-join path-separator new-pythonpaths)))
99-
(setenv "PYTHONPATH" new-pythonpath)))
101+
(setenv "PYTHONPATH" (pythonic-get-pythonpath-variable)))
100102

101103
(defun pythonic-set-pythonpath-variable-tramp ()
102104
"Set PYTHONPATH variable from `python-shell-extra-pythonpaths' variable on remote host."
@@ -115,13 +117,18 @@ It will use `python-shell-exec-path' for PATH variable,
115117
(--remove (member it python-shell-extra-pythonpaths) it)
116118
(append python-shell-extra-pythonpaths it)))))))
117119

120+
(defun pythonic-get-path-variable ()
121+
"Get PATH variable according to `python-shell-exec-path'."
122+
(s-join path-separator
123+
(->> (or (getenv "PATH") "")
124+
(s-split path-separator)
125+
(-union python-shell-exec-path)
126+
(-remove 's-blank?)
127+
(-distinct))))
128+
118129
(defun pythonic-set-path-variable ()
119130
"Set PATH according to `python-shell-exec-path'."
120-
(setenv "PATH"
121-
(s-join path-separator
122-
(-remove 'null
123-
(append python-shell-exec-path
124-
(list (getenv "PATH")))))))
131+
(setenv "PATH" (pythonic-get-path-variable)))
125132

126133
(defun pythonic-set-path-variable-tramp ()
127134
"Set PATH according to `python-shell-exec-path' on remote host."
@@ -174,6 +181,10 @@ process flag."
174181
(when sentinel
175182
(set-process-sentinel process sentinel))
176183
(set-process-query-on-exit-flag process query-on-exit)
184+
(process-put process 'default-directory default-directory)
185+
(process-put process 'environment python-shell-process-environment)
186+
(process-put process 'path (pythonic-get-path-variable))
187+
(process-put process 'pythonpath (pythonic-get-pythonpath-variable))
177188
process)))
178189

179190
;;;###autoload

test/pythonic-test.el

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -291,6 +291,40 @@ remote host."
291291
(should (process-query-on-exit-flag
292292
(start-pythonic :process "out" :args '("-V") :query-on-exit t))))
293293

294+
(ert-deftest test-start-pythonic-path-property ()
295+
"Set `python-shell-exec-path' as `path' process property."
296+
(let ((python-shell-exec-path '("test"))
297+
(process-environment '("PATH=/usr/bin")))
298+
(should (equal "test:/usr/bin"
299+
(process-get
300+
(start-pythonic :process "out" :args '("-V"))
301+
'path)))))
302+
303+
(ert-deftest test-start-pythonic-pythonpath-property ()
304+
"Set `python-shell-extra-pythonpaths' as `pythonpath' process property."
305+
(let ((python-shell-extra-pythonpaths '("test"))
306+
(process-environment '("PYTHONPATH=/home/me")))
307+
(should (equal "test:/home/me"
308+
(process-get
309+
(start-pythonic :process "out" :args '("-V"))
310+
'pythonpath)))))
311+
312+
(ert-deftest test-start-pythonic-default-directory-property ()
313+
"Set `pythonic-default-directory' result as `default-directory' process property."
314+
(let ((default-directorys "~"))
315+
(should (equal "~"
316+
(process-get
317+
(start-pythonic :process "out" :args '("-V"))
318+
'default-directory)))))
319+
320+
(ert-deftest test-start-pythonic-environment-property ()
321+
"Set `python-shell-process-environment' as `environment' process property."
322+
(let ((python-shell-process-environment '("TEST=t")))
323+
(should (equal '("TEST=t")
324+
(process-get
325+
(start-pythonic :process "out" :args '("-V"))
326+
'environment)))))
327+
294328
;;; Activate/deactivate environment.
295329

296330
(ert-deftest test-pythonic-activate ()

0 commit comments

Comments
 (0)