@@ -1868,13 +1868,35 @@ calling `gdscript-debug--table-string'."
1868
1868
(setq buffer-read-only t )
1869
1869
(buffer-disable-undo ))
1870
1870
1871
- (defun gdscript-debug-add-breakpoint ()
1871
+ (defun gdscript-debug-toggle-breakpoint ()
1872
+ " Add or remove a breakpoint on the line at POINT."
1872
1873
(interactive )
1874
+ (let* ((breakpoint (gdscript-debug--construct-breakpoint-at-point)))
1875
+ (if (gdscript-debug--is-existing-breakpoint-p breakpoint)
1876
+ (gdscript-debug--remove-breakpoint breakpoint)
1877
+ (gdscript-debug--add-breakpoint-to-line breakpoint))))
1878
+
1879
+ (defun gdscript-debug--construct-breakpoint-at-point ()
1880
+ " Construct a breakpoint object for the line at POINT and return it.
1881
+ May match an existing breakpoint."
1873
1882
(gdscript-debug--with-gdscript-file file-info
1874
- (let* ((line (line-number-at-pos ))
1883
+ (let* ((start (line-beginning-position ))
1884
+ (end (line-end-position ))
1885
+ (line (line-number-at-pos ))
1875
1886
(file (car file-info))
1876
1887
(file-absolute (cdr file-info))
1877
1888
(breakpoint (gdscript-breakpoint-create :file file :file-absolute file-absolute :line line)))
1889
+ breakpoint)))
1890
+
1891
+ (defun gdscript-debug--is-existing-breakpoint-p (breakpoint )
1892
+ " Return t if `BREAKPOINT' is an existing breakpoint in the project."
1893
+ (member breakpoint gdscript-debug--breakpoints))
1894
+
1895
+ (defun gdscript-debug--add-breakpoint-to-line (breakpoint )
1896
+ " Register `BREAKPOINT' to the current line in a GDScript buffer."
1897
+ (gdscript-debug--with-gdscript-file file-info
1898
+ (let* ((line (line-number-at-pos ))
1899
+ (file (car file-info)))
1878
1900
(if (member breakpoint gdscript-debug--breakpoints)
1879
1901
(message " Breakpoint already present at %s :%s " file line)
1880
1902
(gdscript-debug--add-fringe (line-beginning-position ) (not gdscript-debug--skip-breakpoints) 'gdb-bptno 1 )
@@ -1884,15 +1906,13 @@ calling `gdscript-debug--table-string'."
1884
1906
(gdscript-debug--send-command
1885
1907
(gdscript-debug--breakpoint-command file line t )))))))
1886
1908
1887
- (defun gdscript-debug-remove-breakpoint ()
1888
- ( interactive )
1909
+ (defun gdscript-debug-- remove-breakpoint (breakpoint )
1910
+ " Remove `BREAKPOINT' to the current line in a GDScript buffer. "
1889
1911
(gdscript-debug--with-gdscript-file file-info
1890
1912
(let* ((start (line-beginning-position ))
1891
1913
(end (line-end-position ))
1892
1914
(line (line-number-at-pos ))
1893
- (file (car file-info))
1894
- (file-absolute (cdr file-info))
1895
- (breakpoint (gdscript-breakpoint-create :file file :file-absolute file-absolute :line line)))
1915
+ (file (car file-info)))
1896
1916
(if (not (member breakpoint gdscript-debug--breakpoints))
1897
1917
(message " No breakpoint at %s :%s " file line)
1898
1918
(gdscript-debug--remove-strings start end)
@@ -1920,7 +1940,9 @@ calling `gdscript-debug--table-string'."
1920
1940
(prop `(left-fringe breakpoint ,(if (not enabled) 'breakpoint-enabled 'breakpoint-disabled ))))
1921
1941
(put-text-property 0 1 'display prop string))))))))))))
1922
1942
1923
- (defun gdscript-debug-toggle-breakpoint ()
1943
+ (defun gdscript-debug-toggle-skip-breakpoints ()
1944
+ " Toggle the execution of all breakpoints without removing them.
1945
+ Like Godot's Skip Breakpoints button."
1924
1946
(interactive )
1925
1947
(setq gdscript-debug--skip-breakpoints (not gdscript-debug--skip-breakpoints))
1926
1948
(gdscript-debug--set-left-fringe-breakpoints gdscript-debug--skip-breakpoints)
@@ -1937,7 +1959,7 @@ calling `gdscript-debug--table-string'."
1937
1959
(with-current-buffer buffer
1938
1960
(goto-char (point-min ))
1939
1961
(forward-line (1- line))
1940
- (gdscript-debug-remove-breakpoint)))))
1962
+ (gdscript-debug-- remove-breakpoint breakpoint)))))
1941
1963
(message " Not recognized as breakpoint line " )))
1942
1964
1943
1965
(defun gdscript-debug-goto-breakpoint ()
@@ -2048,7 +2070,7 @@ calling `gdscript-debug--table-string'."
2048
2070
(defvar gdscript-debug--breakpoints-mode-map
2049
2071
(let ((map (make-sparse-keymap )))
2050
2072
(suppress-keymap map)
2051
- (define-key map " " 'gdscript-debug-toggle-breakpoint )
2073
+ (define-key map " " 'gdscript-debug-toggle-skip-breakpoints )
2052
2074
(define-key map " q" 'kill-current-buffer )
2053
2075
(define-key map " D" 'gdscript-debug-delete-breakpoint )
2054
2076
(define-key map " \r " 'gdscript-debug-goto-breakpoint )
0 commit comments