|
1 | 1 | -- Copyright (c) 2024 Erich L Foster |
2 | | --- |
| 2 | +-- |
3 | 3 | -- Permission is hereby granted, free of charge, to any person obtaining a copy of |
4 | 4 | -- this software and associated documentation files (the "Software"), to deal in |
5 | 5 | -- the Software without restriction, including without limitation the rights to |
6 | 6 | -- use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies |
7 | 7 | -- of the Software, and to permit persons to whom the Software is furnished to do |
8 | 8 | -- so, subject to the following conditions: |
9 | | --- |
| 9 | +-- |
10 | 10 | -- The above copyright notice and this permission notice shall be included in all |
11 | 11 | -- copies or substantial portions of the Software. |
12 | | --- |
| 12 | +-- |
13 | 13 | -- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR |
14 | 14 | -- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |
15 | 15 | -- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE |
|
18 | 18 | -- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE |
19 | 19 | -- SOFTWARE. |
20 | 20 |
|
| 21 | +-- Create Neovim runtime directories needed by plenary |
| 22 | +local function ensure_dir(path) |
| 23 | + local stat = vim.loop.fs_stat(path) |
| 24 | + if not stat then |
| 25 | + vim.fn.mkdir(path, "p") |
| 26 | + end |
| 27 | +end |
| 28 | + |
| 29 | +-- Create the directories that Neovim and plenary expect to exist |
| 30 | +ensure_dir(vim.fn.stdpath("data")) |
| 31 | +ensure_dir(vim.fn.stdpath("cache")) |
| 32 | + |
| 33 | +-- Handle 'log' path safely |
| 34 | +local ok, log_path = pcall(function() |
| 35 | + return vim.fn.stdpath("log") |
| 36 | +end) |
| 37 | +if not ok then |
| 38 | + -- Fall back to a path within data directory for older Neovim versions |
| 39 | + log_path = vim.fn.stdpath("data") .. "/log" |
| 40 | +end |
| 41 | +ensure_dir(log_path) |
| 42 | + |
| 43 | +-- Handle 'state' path safely |
| 44 | +local ok, state_path = pcall(function() |
| 45 | + return vim.fn.stdpath("state") |
| 46 | +end) |
| 47 | +if not ok then |
| 48 | + -- Fall back to a path within data directory |
| 49 | + state_path = vim.fn.stdpath("data") .. "/state" |
| 50 | +end |
| 51 | +ensure_dir(state_path) |
| 52 | + |
21 | 53 | local plenary_dir = os.getenv("PLENARY_DIR") or "/tmp/plenary.nvim" |
22 | 54 | local is_not_a_directory = vim.fn.isdirectory(plenary_dir) == 0 |
23 | 55 | if is_not_a_directory then |
|
0 commit comments