@@ -8,32 +8,59 @@ Description
88
99This program is derived from comint-mode and provides the following features.
1010
11- * token completion, same as Node.js REPL
12- * file name completion in string
13- * incremental history search
14- * sending JavaScript codes to REPL
11+ * token completion, same as Node.js REPL
12+ * file name completion in string
13+ * incremental history search
14+ * sending JavaScript codes to REPL
1515
1616Usage
1717-----
1818
1919Put this file in your Emacs lisp path (e.g. ~ /.emacs.d/site-lisp)
2020and add the following line to your .emacs:
2121
22- (require 'nodejs-repl)
22+ ``` elisp
23+ (require 'nodejs-repl)
24+ ```
2325
2426Type ` M-x nodejs-repl ` to run Node.js REPL.
2527See also ` comint-mode ` to check key bindings.
2628
2729You can define key bindings to send JavaScript codes to REPL like below:
2830
29- (add-hook 'js-mode-hook
30- (lambda ()
31- (define-key js-mode-map (kbd "C-x C-e") 'nodejs-repl-send-last-expression)
32- (define-key js-mode-map (kbd "C-c C-j") 'nodejs-repl-send-line)
33- (define-key js-mode-map (kbd "C-c C-r") 'nodejs-repl-send-region)
34- (define-key js-mode-map (kbd "C-c C-l") 'nodejs-repl-load-file)
35- (define-key js-mode-map (kbd "C-c C-z") 'nodejs-repl-switch-to-repl)))
36-
31+ ``` elisp
32+ (add-hook 'js-mode-hook
33+ (lambda ()
34+ (define-key js-mode-map (kbd "C-x C-e") 'nodejs-repl-send-last-expression)
35+ (define-key js-mode-map (kbd "C-c C-j") 'nodejs-repl-send-line)
36+ (define-key js-mode-map (kbd "C-c C-r") 'nodejs-repl-send-region)
37+ (define-key js-mode-map (kbd "C-c C-l") 'nodejs-repl-load-file)
38+ (define-key js-mode-map (kbd "C-c C-z") 'nodejs-repl-switch-to-repl)))
39+ ```
40+
41+ When a version manager such as nvm is used to run different versions
42+ of Node.js, it is often desirable to start the REPL of the version
43+ specified in the .nvmrc file per project. In such case, customize the
44+ ` nodejs-repl-command ` variable with a function symbol. That function
45+ should query nvm for the Node.js command to run. For example:
46+
47+ ``` elisp
48+ (require 'nodejs-repl)
49+ (defun nvm-which ()
50+ (let* ((shell (concat (getenv "SHELL") " -l -c 'nvm which'"))
51+ (output (shell-command-to-string shell)))
52+ (cadr (split-string output "[\n]+" t))))
53+ (setq nodejs-repl-command #'nvm-which)
54+ ```
55+
56+ The ` nvm-which ` function can be simpler, and perhaps can run faster,
57+ too, if using Bash:
58+
59+ ``` elisp
60+ (defun nvm-which ()
61+ (let ((output (shell-command-to-string "source ~/.nvm/nvm.sh; nvm which")))
62+ (cadr (split-string output "[\n]+" t))))
63+ ```
3764
3865Author
3966------
@@ -44,7 +71,7 @@ Takeshi Arabiki (abicky)
4471Copyright and License
4572---------------------
4673
47- Copyright (C) 2012-2017 Takeshi Arabiki (abicky)
74+ Copyright (C) 2012-2018 Takeshi Arabiki (abicky)
4875
4976This program is free software: you can redistribute it and/or modify
5077it under the terms of the GNU General Public License as published by
0 commit comments