aboutsummaryrefslogtreecommitdiff
path: root/emacs/.emacs.d/lisp/my/my-mariadb.el
blob: bd9fd76b2923c30d6ffab12327106ae26c8cd79f (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
;;; my-mariadb.el -- Customization for mariadb development-branch -*- lexical-binding: t -*-

;; Copyright (C) 2023 Free Software Foundation.

;; Author: Yuchen Pei <id@ypei.org>
;; Package-Requires: ((emacs "28.2"))

;; This file is part of dotted.

;; dotted is free software: you can redistribute it and/or modify it under
;; the terms of the GNU Affero General Public License as published by
;; the Free Software Foundation, either version 3 of the License, or
;; (at your option) any later version.

;; dotted is distributed in the hope that it will be useful, but WITHOUT
;; ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
;; or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Affero General
;; Public License for more details.

;; You should have received a copy of the GNU Affero General Public
;; License along with dotted.  If not, see <https://www.gnu.org/licenses/>.

;;; Commentary:

;; Customization for mariadb development-branch.

;;; Code:

(require 'my-prog)
(require 'sql)

(defun my-sql-maybe-mtrr ()
  (interactive)
  (if (equal (file-name-extension (buffer-file-name))
             "test")
      (call-interactively 'project-compile)
    (sql-send-buffer)))

(defun my-gdb-maria ()
  (interactive)
  (when (and (buffer-live-p gud-comint-buffer)
             (get-buffer-process gud-comint-buffer))
    (my-gdb-quit))
  (sleep-for 1)
  (my-gdb
   (format "rr replay %s -d %s"
           (expand-file-name
            (replace-regexp-in-string
             "/src"
             "/build/mysql-test/var/log/mysqld.1.rr/latest-trace"
             (project-root (project-current t))))
           (expand-file-name "~/bin/gdb-mi.sh"))))

(defun my-gdb-maria-spider ()
  (interactive)
  (when (and (buffer-live-p gud-comint-buffer)
             (get-buffer-process gud-comint-buffer))
    (my-gdb-quit))
  (sleep-for 1)
  (my-gdb
   (format "rr replay %s -d %s"
           (expand-file-name
            (replace-regexp-in-string
             "/src"
             "/build/mysql-test/var/log/mysqld.1.1.rr/latest-trace"
             (project-root (project-current t))))
           (expand-file-name "~/bin/gdb-mi.sh"))))

(defvar my-c-style-maria-spider
  '("maria-spider"
    (c-basic-offset . 2)
    (c-offsets-alist
     . (;; no indentation when opening an brace
        (substatement-open . 0)
        ;; no extra space when aligning continued lines of block comments
        (c . +)
        (arglist-intro . +)
        (arglist-close . 0)
        (arglist-cont-nonempty c-lineup-gcc-asm-reg c-lineup-arglist)
        (arglist-cont . 0)
        (statement-block-intro . +)
        ))
    ;; empty comment start on block comment continuation refill
    (c-block-comment-prefix . "")
    ))

(defun my-mdev-22979 (beg end)
  (interactive "r")
  (save-excursion
    (goto-char end)
    (insert "  )},
")
    (goto-char beg)
    (insert "  {C_STRING_WITH_LEN(
")))

(defun my-gdb-mysql-parse-frame ()
  (interactive)
  (let ((old-frame) (level))
    (with-current-buffer (gdb-stack-buffer-name)
      (save-excursion
        (beginning-of-buffer)
        (setq old-frame (point))
        (text-property-search-forward
         'gdb-frame
         "mysql_parse"
         (lambda (val prop) (equal (alist-get 'func prop) val)))
        (beginning-of-line)
        (setq level (alist-get 'level (get-text-property (point) 'gdb-frame)))))
    (with-current-buffer gud-comint-buffer
      (insert "f " level)
      (comint-send-input))
    (with-current-buffer (gdb-stack-buffer-name)
      (save-excursion
        (goto-char old-frame)
        (gdb-select-frame)))))

(provide 'my-mariadb)
;;; my-mariadb.el ends here