Added proper sentence thing navigation
semicolons now handled properly
1 files changed, 15 insertions(+), 1 deletions(-)

M perl-ts-mode.el
M perl-ts-mode.el +15 -1
@@ 427,6 427,19 @@ Argument STR is either a string, or a li
       'pod
     'perl))
 
+(defun perl-ts-forward-sentence (arg)
+  "`perl-ts-mode' implementation of `forward-sentence-function'.
+
+ARG is the same as in `forward-sentence'.  This function is a wrapper
+around `treesit-forward-sentence'."
+  (if (> arg 0)
+      (dotimes (_ arg)
+	(treesit-forward-sentence 1)
+	(while-let ((char (buffer-substring-no-properties (point) (+ (point) 1)))
+		    (_ (member char '(" " "	" ";"))))
+	  (forward-char 1)))
+    (treesit-forward-sentence arg)))
+
 (defun perl-ts-outline-level ()
   "The `outline-level' function for `perl-ts-mode'."
   (let ((node (treesit-node-at (point) treesit-primary-parser)))

          
@@ 517,7 530,8 @@ Takes all the relevent commands from `cp
 	      treesit-font-lock-feature-list perl-ts-font-lock-feature-list
 	      treesit-simple-indent-rules perl-ts-indent-settings)
   (treesit-major-mode-setup)
-  (setq-local outline-level #'perl-ts-outline-level))
+  (setq-local outline-level #'perl-ts-outline-level
+	      forward-sentence-function #'perl-ts-forward-sentence))
 
 (provide 'perl-ts-mode)