diff --git a/.gitignore b/.gitignore index 73b29b5..5741427 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ +*.elc # Added automatically by ‘eldev init’. /.eldev /Eldev-local diff --git a/ngnk-cli.el b/ngnk-cli.el index 0d0a1c8..e368fa2 100644 --- a/ngnk-cli.el +++ b/ngnk-cli.el @@ -71,6 +71,8 @@ (defun ngnk-remove-marker (s) (cl-remove ?\a s)) +(defvar ngnk-buffer-limit) + (defun ngnk-preout-filter (s) "When ngnk-max-output-length is > 0, limit output to ngnk-max-output-length lines" (progn @@ -128,9 +130,12 @@ (defun ngnk-send-string (s) (comint-send-string (ngnk-buffer-proc) s)) -(defun ngnk-send-region (point mark) - (interactive "^r") - "Send region to running ngn/k process" +(defun ngnk-send (point mark) + "Send active region or current line to running ngn/k process" + (interactive + (if (use-region-p) + (list (region-beginning) (use-region-end)) + (list (pos-bol) (pos-eol)))) (let* ((s (concat (buffer-substring point mark) "\n")) (idx (cl-search "\n" s)) (ret "")) @@ -141,20 +146,13 @@ (setq s (substring s (+ 1 idx) (length s))) (setq idx (cl-search "\n" s))) (setq s (concat ret s)) - (let ((end (- (length s) 1)) - (chr nil)) - (while (or (eq (setq chr (aref s end)) ?\n) - (eq (setq chr (aref s end)) ?\a)) - (setq end (- end 1))) + (let ((end (1- (length s)))) + (while (or (eq (aref s end) ?\n) (eq (aref s end) ?\a)) + (setq end (1- end))) (setq s (concat (substring s 0 (+ end 1)) "\n"))))) - (message s) + (message "%s" (string-trim-right s)) (ngnk-send-string s))) -(defun ngnk-send-line-at-point (point) - (interactive "p") - (ngnk-send-region (point-at-bol) (point-at-eol)) - ) - (defun ngnk-attach-proc (buffer) "Attach ngn/k process to buffer" (let* ((ngnk-program ngnk-cli-file-path)) diff --git a/ngnk-mode.el b/ngnk-mode.el index 4df2859..6dde674 100644 --- a/ngnk-mode.el +++ b/ngnk-mode.el @@ -28,6 +28,13 @@ :group 'languages :prefix "ngnk-") +;;;###autoload +(define-derived-mode ngnk-mode prog-mode "Ngnk" + "Major mode for editing ngn/k code. + +\\" + nil "Ngnk") + (defvar ngnk-mode-syntax-table (let ((table (make-syntax-table))) (modify-syntax-entry ?\" "\"" table) @@ -52,15 +59,7 @@ table) "Syntax table for `ngnk-mode'.") -;;;###autoload -(define-derived-mode ngnk-mode text-mode "Ngnk" - "Major mode for editing ngn/k code. - -\\" - nil "Ngnk" - (set (make-local-variable 'indent-tabs-mode) nil) - (set (make-local-variable 'tabs-width) 2)) - +(keymap-set ngnk-mode-map "C-c C-c" 'ngnk-send) (provide 'ngnk-mode) ;;; ngnk-mode.el ends here