Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Make neomake pick local tsc executable #2553

Open
danielo515 opened this issue Jul 27, 2022 · 3 comments
Open

Make neomake pick local tsc executable #2553

danielo515 opened this issue Jul 27, 2022 · 3 comments

Comments

@danielo515
Copy link

First of all, thank you for this awesome tool, it has served me well so far.

Expected behavior

I was trying to use neomake to get some compilation errors on a local typescript project, and I get an error telling me tsc is not executable. I think in my previous laptop I just had typescript installed globally, but that is not something I want to rely on.

I just noticed that you can set the executable using let g:neomake_typescript_tsc_exe = './node_modules/.bin/tsc, which is fantastic, and I was wondering if it would be possible to add it to neomake by default, which should use the locally installed tsc and fallback to a globally installed one if not available.

Steps to reproduce

Is as easy as trying to use neomake in a typescript project without having typescript installed globally.

Output from :NeomakeInfo

Neomake debug information

Async support: 1
Current filetype: typescript
Windows: 0
[shell, shellcmdflag, shellslash]: ['/bin/zsh', '-c', 0]
makeprg=make

Enabled makers

For the current filetype ("typescript", used with :Neomake):

  • tsc
    • append_file: 0
    • args: ['--noEmit', '--watch', 'false', '--pretty', 'false', '--project', '/Users/danielo/mega/programacion/spa/axel-log/tsconfig.json']
    • auto_enabled: 1
    • errorformat: '%E%f %#(%l,%c): error %m,%E%f %#(%l,%c): %m,%Eerror %m,%C%\s%+%m'
    • exe: './node_modules/.bin/tsc'
    • version information (/Users/danielo/mega/programacion/spa/axel-log/node_modules/.bin/tsc --version): Version 4.7.4
  • tslint
    • args: ['-t', 'prose', '--project', '/Users/danielo/mega/programacion/spa/axel-log/tsconfig.json']
    • auto_enabled: 1
    • cwd: '/Users/danielo/mega/programacion/spa/axel-log'
    • errorformat: '%-G,%EERROR: %f:%l:%c - %m,%WWARNING: %f:%l:%c - %m,%EERROR: %f[%l, %c]: %m,%WWARNING: %f[%l, %c]: %m'
    • exe: 'tslint'
    • WARNINGS:
      • maker's exe (tslint) is not executable.
        NOTE: you can define g:neomake_typescript_enabled_makers to configure it (or b:neomake_typescript_enabled_makers).

For the project (used with :Neomake!):

  • makeprg
    • append_file: 0

    • args: []

    • auto_enabled: 1

    • errorformat: '%[^"]"%f"%\D%l: %m,"%f"%\D%l: %m,%-G%f:%l: (Each undeclared identifier is reported only once,%-G%f:%l: for each function it appears in.),%-GIn file included from %f:%l:%c:,%-GIn file included from %f:%l:%c,,%-GIn file included from %f:%l:%c,%-GIn file included from %f:%l,%-G%[ ]from %f:%l:%c,%-G%[ ]from %f:%l:,%-G%[ ]from %f:%l,,%-G%[ ]from %f:%l,%f:%l:%c:%m,%f(%l):%m,%f:%l:%m,"%f", line %l%\D%c%[^ ] %m,%D%\a[%\d]: Entering directory %['']%f'',%X%*\a[%*\d]: Leaving directory %*['']%f'',%D%\a: Entering directory %['']%f'',%X%*\a: Leaving directory %*['']%f'',%DMaking %*\a in %f,%f|%l| %m'

    • exe: 'make'

    • version information (/usr/bin/make --version): GNU Make 3.81
      Copyright (C) 2006 Free Software Foundation, Inc.
      This is free software; see the source for copying conditions.
      There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
      PARTICULAR PURPOSE.

      This program built for i386-apple-darwin11.3.0
      NOTE: you can define g:neomake_enabled_makers to configure it.

Default maker settings:

  • output_stream: 'both'
  • remove_invalid_entries: 0
  • buffer_output: 1
Settings
New-style (dict, overrides old-style)
g:neomake: {
  'automake': {
    'ignore_filetypes': [
      'startify',
    ],
  },
}
b:neomake: unset
Old-style
g:neomake_open_list = 2
g:neomake_place_signs = 1
g:neomake_typescript_tsc_exe = './node_modules/.bin/tsc'

:version

NVIM v0.7.2
Build type: Release
LuaJIT 2.1.0-beta3
Compiled by brew@BigSur

Features: +acl +iconv +tui
See ":help feature-compile"

   system vimrc file: "$VIM/sysinit.vim"
  fall-back for $VIM: "/usr/local/Cellar/neovim/0.7.2/share/nvim"

Run :checkhealth for more info

:messages

"~/mega/programacion/spa/axel-log/scripts/tsconfig.json" 14L, 239B
"package.json" 84L, 2748B
"~/mega/programacion/spa/axel-log/scripts/tsconfig.json" 15L, 260B written
"~/mega/programacion/spa/axel-log/scripts/tsconfig.json" 18L, 288B written
4 fewer lines
"~/mega/programacion/spa/axel-log/scripts/tsconfig.json" 14L, 239B written
"package.json" 84L, 2756B written
Pick window: 

".gitignore" 35L, 297B written
"~/mega/programacion/spa/axel-log/scripts/migrate.ts" 12L, 421B written
"~/mega/programacion/spa/axel-log/scripts/migrate.ts" 11L, 361B written
Remove build ? y/n

"~/mega/programacion/spa/axel-log/scripts/migrate.ts" 14L, 471B written
"~/mega/programacion/spa/axel-log/scripts/migrate.ts" 16L, 520B written
1 change; before #123  1 second ago
"~/mega/programacion/spa/axel-log/scripts/migrate.ts" 20L, 574B written
"~/mega/programacion/spa/axel-log/scripts/migrate.ts" 20L, 604B written
1 change; before #143  1 second ago
"~/mega/programacion/spa/axel-log/scripts/migrate.ts" 32L, 1006B written
"~/mega/programacion/spa/axel-log/scripts/migrate.ts" 32L, 1006B written
"~/mega/programacion/spa/axel-log/scripts/migrate.ts" 32L, 1020B written
"~/mega/programacion/spa/axel-log/scripts/tsconfig.json" 15L, 268B written
"~/mega/programacion/spa/axel-log/scripts/tsconfig.json" 16L, 288B written
5 lines yanked
No previous instance found
5 more lines
"~/mega/programacion/spa/axel-log/scripts/tsconfig.json" 21L, 352B written
"~/mega/programacion/spa/axel-log/scripts/tsconfig.json" 21L, 351B written
"~/mega/programacion/spa/axel-log/scripts/tsconfig.json" 21L, 352B written
E5108: Error executing lua: [string "..."]:0: Vim(lua):E5108: Error executing lua ...rvim/site/pack/packer/start/NeoZoom.lua/lua/neo-zoom.lua:57: Expected Lua number
stack traceback:
	[C]: in function 'nvim_set_current_win'
	...rvim/site/pack/packer/start/NeoZoom.lua/lua/neo-zoom.lua:57: in function 'neo_zoom'
	[string ":lua"]:1: in main chunk
	[C]: in function 'cmd'
	[string "..."]: in function <[string "..."]:0>
stack traceback:
	[C]: in function 'cmd'
	[string "..."]: in function <[string "..."]:0>
1 change; before #235  3 seconds ago
"~/mega/programacion/spa/axel-log/scripts/tsconfig.json" 21L, 345B written
"~/mega/programacion/spa/axel-log/scripts/tsconfig.json" 21L, 346B written
"~/mega/programacion/spa/axel-log/scripts/tsconfig.json" 22L, 383B written
"src/api/logSchema.ts" 105L, 3287B written
"~/mega/programacion/spa/axel-log/scripts/tsconfig.json" 23L, 407B written
"~/mega/programacion/spa/axel-log/scripts/tsconfig.json" 23L, 408B written
"~/mega/programacion/spa/axel-log/scripts/tsconfig.json" 23L, 408B written
Remove build ? y/n

"~/mega/programacion/spa/axel-log/scripts/tsconfig.json" 24L, 437B written
Remove build ? y/n

"~/mega/programacion/spa/axel-log/scripts/tsconfig.json" 25L, 461B written
Pick window: 

Pick window: 

6 fewer lines
6 more lines
"src/theme.ts" 100L, 2067B written
"src/theme.ts" 100L, 2095B written
"~/mega/programacion/spa/axel-log/scripts/migrate.ts" 32L, 1014B written
32 changes; before #238  16 seconds ago
"~/mega/programacion/spa/axel-log/scripts/migrate.ts" 32L, 1014B written
"~/mega/programacion/spa/axel-log/scripts/migrate.ts" 33L, 1089B written
"~/mega/programacion/spa/axel-log/scripts/migrate.ts" 33L, 1092B written
WARNING: The file has been changed since reading it!!!
Do you really want to write to it (y/n)?
Do you really want to write to it (y/n)?
Error executing vim.schedule lua callback: .../.local/share/lunarvim/lvim/lua/lvim/core/bufferline.lua:177: attempt to index local 'choice' (a nil value)
stack traceback:
	.../.local/share/lunarvim/lvim/lua/lvim/core/bufferline.lua:177: in function 'on_confirm'
	...e/pack/packer/start/dressing.nvim/lua/dressing/input.lua:79: in function ''
	vim/_editor.lua: in function ''
	vim/_editor.lua: in function <vim/_editor.lua:0>
WARNING: The file has been changed since reading it!!!
Do you really want to write to it (y/n)?
"~/mega/programacion/spa/axel-log/scripts/tsconfig.json" 25L, 461B written
"~/mega/programacion/spa/axel-log/scripts/migrate.ts" 33L, 1097B written
"~/mega/programacion/spa/axel-log/scripts/migrate.ts" 34L, 1159B written
"~/mega/programacion/spa/axel-log/scripts/migrate.ts" 34L, 1155B written
"~/mega/programacion/spa/axel-log/scripts/migrate.ts" 36L, 1186B written
"~/mega/programacion/spa/axel-log/scripts/migrate.ts" 36L, 1181B written
"~/mega/programacion/spa/axel-log/scripts/migrate.ts" 36L, 1183B written
"~/mega/programacion/spa/axel-log/scripts/migrate.ts" 36L, 1182B written
"~/mega/programacion/spa/axel-log/scripts/migrate.ts" 36L, 1181B written
"~/mega/programacion/spa/axel-log/scripts/migrate.ts" 36L, 1193B written
"src/types.d.ts" 16L, 615B written
"~/mega/programacion/spa/axel-log/scripts/migrate.ts" 36L, 1181B written
"src/api/logSchema.ts" 105L, 3287B
"~/mega/programacion/spa/axel-log/scripts/migrate.ts" 37L, 1170B written
"~/mega/programacion/spa/axel-log/scripts/migrate.ts" 37L, 1174B written
"~/mega/programacion/spa/axel-log/scripts/migrate.ts" 37L, 1186B written
"~/mega/programacion/spa/axel-log/scripts/migrate.ts" 36L, 1180B written
"~/mega/programacion/spa/axel-log/scripts/migrate.ts" 36L, 1176B written
11 lines yanked
5 lines yanked
Pick window: 

1 change; before #147  4 seconds ago
1 change; before #146  53 seconds ago
"src/api/logSchema.ts" 105L, 3287B written
"~/mega/programacion/spa/axel-log/scripts/migrate.ts" 43L, 1349B written
"~/mega/programacion/spa/axel-log/scripts/migrate.ts" 43L, 1355B written
E5108: Error executing lua: [string "..."]:0: Vim(lua):E5108: Error executing lua ...rvim/site/pack/packer/start/NeoZoom.lua/lua/neo-zoom.lua:57: Expected Lua number
stack traceback:
	[C]: in function 'nvim_set_current_win'
	...rvim/site/pack/packer/start/NeoZoom.lua/lua/neo-zoom.lua:57: in function 'neo_zoom'
	[string ":lua"]:1: in main chunk
	[C]: in function 'cmd'
	[string "..."]: in function <[string "..."]:0>
stack traceback:
	[C]: in function 'cmd'
	[string "..."]: in function <[string "..."]:0>
"~/mega/programacion/spa/axel-log/scripts/migrate.ts" 48L, 1488B written
9 fewer lines
9 more lines
"~/mega/programacion/spa/axel-log/scripts/migrate.ts" 47L, 1487B written
"~/mega/programacion/spa/axel-log/scripts/migrate.ts" 47L, 1465B written
"~/mega/programacion/spa/axel-log/scripts/migrate.ts" 52L, 1594B written
"~/mega/programacion/spa/axel-log/scripts/tsconfig.json" 26L, 492B written
"~/mega/programacion/spa/axel-log/scripts/migrate.ts" 58L, 1809B written
"src/api/dolencias.ts" 27L, 682B written
"src/api/dolencias.ts" 28L, 693B written
"~/mega/programacion/spa/axel-log/scripts/migrate.ts" 58L, 1778B written
"src/api/dolencias.ts" 28L, 693B written
"~/mega/programacion/spa/axel-log/scripts/migrate.ts" 58L, 1772B written
1 change; before #447  1 second ago
"~/mega/programacion/spa/axel-log/scripts/migrate.ts" 59L, 1806B written
"~/mega/programacion/spa/axel-log/scripts/migrate.ts" 66L, 2030B written
"~/mega/programacion/spa/axel-log/scripts/migrate.ts" 66L, 2041B written
"~/mega/programacion/spa/axel-log/scripts/migrate.ts" 67L, 2063B written
"src/api/log.ts" 140L, 4333B written
"src/api/dolencias.ts" 20L, 563B written
"src/api/medicine.ts" 65L, 1983B written
"~/mega/programacion/spa/axel-log/scripts/migrate.ts" 67L, 2065B written
"~/mega/programacion/spa/axel-log/src/api/Collections.ts" 7L, 129B written
"~/mega/programacion/spa/axel-log/scripts/migrate.ts" 67L, 2065B written
"~/mega/programacion/spa/axel-log/scripts/tsconfig.json" 26L, 494B written
"~/mega/programacion/spa/axel-log/scripts/migrate.ts" 67L, 2059B written
"~/mega/programacion/spa/axel-log/scripts/migrate.ts" 67L, 2048B written
1 change; before #509  3 seconds ago
"~/mega/programacion/spa/axel-log/scripts/migrate.ts" 68L, 2093B written
"~/mega/programacion/spa/axel-log/scripts/migrate.ts" 68L, 2076B written
"~/mega/programacion/spa/axel-log/scripts/migrate.ts" 67L, 2054B written
"src/api/log.ts" 144L, 4391B written
"src/api/log.ts" 145L, 4425B written
"src/api/log.ts" 144L, 4391B written
Pick window: 

Pick window: 

Pick window: 

"src/api/rabo.ts" [New] 0L, 0B written
Error executing vim.schedule lua callback: ...ck/packer/start/plenary.nvim/lua/plenary/async/async.lua:14: The coroutine failed with this message: ...im/0.7.2/share/nvim/runtime/lua/vim/treesitter/query.lua:501: attempt to index local 'node' (a nil value)
stack traceback:
	[C]: in function 'error'
	...ck/packer/start/plenary.nvim/lua/plenary/async/async.lua:14: in function 'callback_or_next'
	...ck/packer/start/plenary.nvim/lua/plenary/async/async.lua:40: in function 'on_confirm'
	...e/pack/packer/start/dressing.nvim/lua/dressing/input.lua:79: in function ''
	vim/_editor.lua: in function ''
	vim/_editor.lua: in function <vim/_editor.lua:0>
Pick window: 

Remove rabo.ts ? y/n

Pick window: 

Error executing vim.schedule lua callback: ...ck/packer/start/plenary.nvim/lua/plenary/async/async.lua:14: The coroutine failed with this message: .../start/refactoring.nvim/lua/refactoring/refactor/119.lua:86: block_scope is nil! Something went wrong
stack traceback:
	[C]: in function 'error'
	...ck/packer/start/plenary.nvim/lua/plenary/async/async.lua:14: in function 'callback_or_next'
	...ck/packer/start/plenary.nvim/lua/plenary/async/async.lua:40: in function 'on_confirm'
	...e/pack/packer/start/dressing.nvim/lua/dressing/input.lua:79: in function ''
	vim/_editor.lua: in function ''
	vim/_editor.lua: in function <vim/_editor.lua:0>

/Users/danielo/mega/programacion/spa/axel-log/src/api/medicineSchema.ts was properly created
Pick window: 

14 fewer lines
14 more lines
"~/mega/programacion/spa/axel-log/src/api/medicineSchema.ts" 18L, 547B written
"src/api/medicine.ts" 49L, 1558B written
Neomake is enabled.
Neomake: Exe (tsc) of maker tsc is not executable.
"src/api/log.ts" 145L, 4426B written
"src/api/log.ts" 145L, 4426B written
Neomake: Exe (tsc) of maker tsc is not executable.
E121: Undefined variable: g:neomake_typescript_tsc_exe
@blueyed
Copy link
Member

blueyed commented Jul 27, 2022

Have you considered adding ./node_modules/.bin to your $PATH (as absolute directory)?
This could be done when activating a project, e.g. when changing to its directory, and/or within Vim.
That way it would prefer/use any locally installed makers then automatically.

@danielo515
Copy link
Author

Hello @blueyed, do you have any suggestion about how to do it within vim?

@danielo515
Copy link
Author

So this is a very naive attempt:

local function add_node_bin()
  local binPath = vim.fn.glob "./node_modules/.bin"
  if binPath ~= "" then
    vim.env.PATH = vim.env.PATH .. ":" .. binPath
    -- print(fullPath)
  end
end

vim.api.nvim_create_autocmd("VimEnter", { callback = add_node_bin })

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants