hi. i'm wondering if anyone programming in typescript might have run into, and solved, this "problem", of tangling into a subdirectory, and tide [1] not being able to resolve "relative" imports. i have a file in path /a/b/foo.org. it includes various source blocks, and they do things like `:tangle c/d/bar.ts`. another source block, tangled into in c/d/fubar.ts, say, does something like: ---- import Bar from "./bar" ---- when i open an Org Src edit buffer from fubar.ts's source block, with tide mode [1] enabled, i get a complaint ---- Cannot find module './bar' or its corresponding type declarations. [2307] ---- tide (or, really, iiuc, tsserver) appears to be, reasonably, looking for /a/b/bar.ts, and not finding it. but, i haven't been able to figure out how to talk tide into looking elsewhere. i've done things like add "rootDirs" to `tsconfig.json`, to no avail. i haven't been able to get lsp-mode [2] to work for this scenario, either. anyway, in case anyone has done exactly that, i'm asking. cheers, Greg [1] tide: https://github.com/ananthakumaran/tide [2] lsp: https://github.com/emacs-lsp/lsp-mode/ ps -- scrounging around trying to deal with this, i stumbled on ---- https://github.com/justbur/emacs-which-key ---- which i find a treat.
Greg Minshall <minshall@umich.edu> writes:
> hi.
>
> i'm wondering if anyone programming in typescript might have run into,
> and solved, this "problem", of tangling into a subdirectory, and tide
> [1] not being able to resolve "relative" imports.
>
> i have a file in path /a/b/foo.org. it includes various source blocks,
> and they do things like `:tangle c/d/bar.ts`. another source block,
> tangled into in c/d/fubar.ts, say, does something like:
> ----
> import Bar from "./bar"
> ----
>
> when i open an Org Src edit buffer from fubar.ts's source block, with
> tide mode [1] enabled, i get a complaint
> ----
> Cannot find module './bar' or its corresponding type declarations. [2307]
> ----
> tide (or, really, iiuc, tsserver) appears to be, reasonably, looking for
> /a/b/bar.ts, and not finding it. but, i haven't been able to figure out
> how to talk tide into looking elsewhere.
>
> i've done things like add "rootDirs" to `tsconfig.json`, to no avail. i
> haven't been able to get lsp-mode [2] to work for this scenario, either.
>
> anyway, in case anyone has done exactly that, i'm asking.
>
I've not tried to do this, but a complete shot in the dark....
according to the org manual, you can set a :dir value in the source
block header which will specify the working directory to be used i.e.
the directory where the code will be evaluated. Perhaps setting that to
the directory where the other block has tangled the output would work?
See the Environment of a code block node under the working with source
code node in the org manual for details.
[-- Attachment #1: Type: text/plain, Size: 2343 bytes --] Cool topic, but I haven't done it myself either as most explanations are pretty big-brained in the sense that its a little hard for a beginner to figure out sometimes. However, the power of literate programming is super cool, so here's a few links I found that you can go through that might help you out: https://www.reddit.com/r/emacs/comments/a3rlvk/orgmode_literate_programming_and_emacs/ https://emacs-lsp.github.io/lsp-mode/manual-language-docs/lsp-org/ https://blog.thomasheartman.com/posts/configuring-emacs-with-org-mode-and-literate-programming http://cachestocaches.com/2018/6/org-literate-programming/ Hope it helps, Sam On Sat, Nov 6, 2021, at 6:33 AM, Tim Cross wrote: > > Greg Minshall <minshall@umich.edu> writes: > > > hi. > > > > i'm wondering if anyone programming in typescript might have run into, > > and solved, this "problem", of tangling into a subdirectory, and tide > > [1] not being able to resolve "relative" imports. > > > > i have a file in path /a/b/foo.org. it includes various source blocks, > > and they do things like `:tangle c/d/bar.ts`. another source block, > > tangled into in c/d/fubar.ts, say, does something like: > > ---- > > import Bar from "./bar" > > ---- > > > > when i open an Org Src edit buffer from fubar.ts's source block, with > > tide mode [1] enabled, i get a complaint > > ---- > > Cannot find module './bar' or its corresponding type declarations. [2307] > > ---- > > tide (or, really, iiuc, tsserver) appears to be, reasonably, looking for > > /a/b/bar.ts, and not finding it. but, i haven't been able to figure out > > how to talk tide into looking elsewhere. > > > > i've done things like add "rootDirs" to `tsconfig.json`, to no avail. i > > haven't been able to get lsp-mode [2] to work for this scenario, either. > > > > anyway, in case anyone has done exactly that, i'm asking. > > > > I've not tried to do this, but a complete shot in the dark.... > > according to the org manual, you can set a :dir value in the source > block header which will specify the working directory to be used i.e. > the directory where the code will be evaluated. Perhaps setting that to > the directory where the other block has tangled the output would work? > > See the Environment of a code block node under the working with source > code node in the org manual for details. > > [-- Attachment #2: Type: text/html, Size: 3734 bytes --]
Tim and Samuel, thanks. :dir is a thought; and, links may yield treasures. cheers, Greg