Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
*.elc
# Added automatically by ‘eldev init’.
/.eldev
/Eldev-local
26 changes: 12 additions & 14 deletions ngnk-cli.el
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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 ""))
Expand All @@ -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))
Expand Down
17 changes: 8 additions & 9 deletions ngnk-mode.el
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,13 @@
:group 'languages
:prefix "ngnk-")

;;;###autoload
(define-derived-mode ngnk-mode prog-mode "Ngnk"
"Major mode for editing ngn/k code.

\\<ngnk-mode-map>"
nil "Ngnk")

(defvar ngnk-mode-syntax-table
(let ((table (make-syntax-table)))
(modify-syntax-entry ?\" "\"" table)
Expand All @@ -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.

\\<ngnk-mode-map>"
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