branch: elpa/scad-mode
commit 38e715440b2a2b05db3dda94a7eb56c169c45760
Author: Logan Barnett <logus...@gmail.com>
Commit: Logan Barnett <logus...@gmail.com>

    set OPENSCADPATH to fix relative includes in preview
    
    Uses the environment variable approach suggested in
    https://github.com/openscad/emacs-scad-mode/pull/3 to fix relative file
    includes.
    
    This sets the `OPENSCADPATH` environment variable to be `default-directory`.
    There might be some faults in assuming we can just set this (perhaps other 
users
    also set this), but at least this moves us forward in being able to preview 
and
    make files using `include` with relative directories.
    
    This has been tested successfully with `scad-preview`, but I'm unfamiliar 
with
    `flymake` enough that I'm not sure how to properly test it.
---
 scad-mode.el | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

diff --git a/scad-mode.el b/scad-mode.el
index 4add48cd92..3c8ab21e3f 100644
--- a/scad-mode.el
+++ b/scad-mode.el
@@ -311,6 +311,14 @@ Options are .stl, .off, .amf, .3mf, .csg, .dxf, .svg, 
.pdf, .png,
         (save-restriction
           (widen)
           (write-region (point-min) (point-max) infile nil 'nomsg)))
+      ;; A means of setting an environment variable for the purposes of
+      ;; `make-process' can't be found or isn't documented.  Setting the
+      ;; environment variable within Emacs causes the process to inherit the
+      ;; environment variable, which is the only known means of passing the
+      ;; variable.
+      ;; Setting the OPENSCADPATH to the current directory allows openscad to
+      ;; pick up other local files with `include <file.scad>'.
+      (setenv "OPENSCADPATH" default-directory)
       (setq scad--preview-proc
             (make-process
              :noquery t
@@ -450,6 +458,14 @@ Options are .stl, .off, .amf, .3mf, .csg, .dxf, .svg, 
.pdf, .png,
     (save-restriction
       (widen)
       (write-region (point-min) (point-max) infile nil 'nomsg))
+    ;; A means of setting an environment variable for the purposes of
+    ;; `make-process' can't be found or isn't documented.  Setting the
+    ;; environment variable within Emacs causes the process to inherit the
+    ;; environment variable, which is the only known means of passing the
+    ;; variable.
+    ;; Setting the OPENSCADPATH to the current directory allows openscad to 
pick
+    ;; up other local files with `include <file.scad>'.
+    (setenv "OPENSCADPATH" default-directory)
     (setq
      scad--flymake-proc
      (make-process

Reply via email to