@@ -2620,6 +2620,50 @@ If BUFFER, return the number of characters in that buffer instead."
2620
2620
(with-current-buffer (or buffer (current-buffer ))
2621
2621
(1- (position-bytes (point-max )))))
2622
2622
2623
+ (defvar go-dot-mod-mode-map
2624
+ (let ((map (make-sparse-keymap )))
2625
+ map)
2626
+ " Keymap for `go-dot-mod-mode' ." )
2627
+
2628
+ (defvar go-dot-mod-mode-syntax-table
2629
+ (let ((st (make-syntax-table )))
2630
+ ; ; handle '//' comment syntax
2631
+ (modify-syntax-entry ?/ " . 124b" st)
2632
+ (modify-syntax-entry ?\n " > b" st)
2633
+ st)
2634
+ " Syntax table for `go-dot-mod-mode' ." )
2635
+
2636
+ (defconst go-dot-mod-mode-keywords
2637
+ '(" module" " go" " require" " replace" " exclude" )
2638
+ " All keywords in the Go language. Used for font locking." )
2639
+
2640
+ (defvar go-dot-mod-font-lock-keywords
2641
+ `(
2642
+ (,(concat " \\ _<" (regexp-opt go-dot-mod-mode-keywords t ) " \\ _>" ) . font-lock-keyword-face ))
2643
+ " Keyword highlighting specification for `go-dot-mod-mode' ." )
2644
+
2645
+ ;;;### autoload
2646
+ (define-derived-mode go-dot-mod-mode fundamental-mode " Go Mod"
2647
+ " A major mode for editing go.mod files."
2648
+ :syntax-table go-dot-mod-mode-syntax-table
2649
+ (set (make-local-variable 'comment-start ) " // " )
2650
+ (set (make-local-variable 'comment-end ) " " )
2651
+ (set (make-local-variable 'comment-use-syntax ) t )
2652
+ (set (make-local-variable 'comment-start-skip ) " \\ (//+\\ )\\ s *" )
2653
+
2654
+ (set (make-local-variable 'font-lock-defaults )
2655
+ '(go-dot-mod-font-lock-keywords))
2656
+ (set (make-local-variable 'indent-line-function ) 'go-mode-indent-line )
2657
+
2658
+ ; ; Go style
2659
+ (setq indent-tabs-mode t )
2660
+
2661
+ ; ; we borrow the go-mode-indent function so we need this buffer cache
2662
+ (set (make-local-variable 'go-dangling-cache ) (make-hash-table :test 'eql ))
2663
+ (add-hook 'before-change-functions #'go--reset-dangling-cache-before-change t t ))
2664
+
2665
+ ;;;### autoload
2666
+ (add-to-list 'auto-mode-alist '(" go\\ .mod\\ '" . go-dot-mod-mode))
2623
2667
2624
2668
; ; Polyfills for functions added in Emacs 26. Remove these once we don’t
2625
2669
; ; support Emacs 25 any more.
0 commit comments