« psearch がものすごく便利 on xyzzy | Main | 新生銀行の口座を作ろうかな »



Tue, 07 Mar 2006

SQL を String リテラルにする Lisp for VB6

Posted at Tue, 07 Mar 2006 in computer::xyzzy

nagaton --diary devnull - SQLとかをStringリテラルにするショボいlisp を見たら VB には適用できそうになかったので、VB 用に改造してみました。
自動判別してトグルするようにしています。
汎用性の低そうな tips です。

使用前

select sysdate from dual;

使用後

strSQL = strSQL & vbCrLf & "select sysdate from dual;"

ソース

(defun toggle-str-exp (from to)
  "SQL を String にしたり戻したり"
  (interactive "*r")
  (let ((name "strSQL"))    ;; 変数名
    (save-excursion
      (save-restriction
        (narrow-to-region from to)
        (untabify from to)
        (goto-char (point-min))
        (if (and (scan-buffer (concat "\\\"\\|\\(" name " += +" name
                                   " +& +\\(vbCrLf\\|vbCr\\|vbLf\\) +& +\\)")
                              :regexp t :case-fold t) (goto-char (point-min)))
            (replace-buffer
               (concat "\\\"\\|\\(" name " += +" name " +& +\\(vbCrLf\\|vbCr\\|vbLf\\) +& +\\)")
               "" :regexp t :case-fold t))
          (replace-buffer
             "\\(.+\\)$"
             (concat name " = " name " & vbCrLf & \\\"\\1\\\"")  :regexp t :case-fold t)
        ))))
(defun toggle-str-exp-all ()
  (interactive)
  (toggle-str-exp (point-min) (point-max)))
; (global-set-key #\C-\5 'toggle-str-exp-all)

« psearch がものすごく便利 on xyzzy | Main | 新生銀行の口座を作ろうかな »