EMACS & 程序 编程点滴...
天下难事必作于易,天下大事必作于细
天天Emacs
TOPxml,html文件的代码折叠
利用 hs-minor-mode 可以方便地在编辑 xml, html 文件时折叠代码。
1 2 3 4 5 6 7 8 9 10 11 |
;; folding for sgml-mode (add-hook 'sgml-mode-hook '(lambda() (hs-minor-mode 1))) (add-to-list 'hs-special-modes-alist '(sgml-mode "<!--\\|<[^/>]>\\|<[^/][^>]*[^/]>" "" "<!--" sgml-skip-tag-forward nil)) |
TOPSQL自动对齐
利用 blancoSqlFormatter 库可以很方便地实现 SQL 文档对齐。
TOP首先下载,安装
1 2 |
% mkdir ~/opt % unzip balcoSqlFormatter-0.1.0.src.zip -d ~/opt |
因为是 Java 的代码,要写一部分 java 的客户端代码。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
~/opt/blancoSqlFormatter/SqlBeautify.java: import java.io.InputStream; import blanco.commons.sql.format.BlancoSqlFormatter; import blanco.commons.sql.format.BlancoSqlRule; public class SqlBeautify { public static void main(String[] args) throws Exception { InputStream is = System.in; StringBuilder sb = new StringBuilder(); byte[] buffer = new byte[4096]; int read; while ((read = is.read(buffer)) != -1) { sb.append(new String(buffer, 0, read)); } System.out.println(new BlancoSqlFormatter(new BlancoSqlRule()).format(sb.toString())); } } |
编译,
1 2 |
% cd ~/opt/blancoSqlFormatter % CLASSPATH=$CLASSPATH:blancosqlformatter-0.1.0.jar javac SqlBeautify.java |
制作脚本,
1 2 3 4 5 6 7 |
~/bin/sqlbeautify: #!/bin/sh BSF_HOME=$HOME/opt/blancoSqlFormatter BSF_LIB=$BSF_HOME/blancosqlformatter-0.1.0.jar env CLASSPATH=$CLASSPATH:$BSF_HOME:$BSF_LIB java SqlBeautify |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
# 追加执行属性 % chmod +x ~/bin/sqlbeautify # 测试 % echo ”SELECT name,value FROM v\$sysstat WHERE name IN ('db block gets','consistent gets', 'physical reads');” | sqlbeautify SELECT name ,VALUE FROM v$sysstat WHERE name IN ( 'db block gets' ,'consistent gets' ,'physical reads' ) |
TOPEmacs中使用
在.emacs文件中追加以下代码:
1 2 3 4 5 6 7 8 9 10 |
(defun sql-beautify-region (start end) "Beautify SQL in region between START and END." (interactive "r") (save-excursion (shell-command-on-region start end "sqlbeautify" nil t))) (defun sql-beautify-buffer () "Beautify SQL in buffer." (interactive) (sql-beautify-region (point-min) (point-max))) |
这之后,就可以用 M-x sql-beautify-buffer 或 M-x sql-beautify-region 来整理SQL代码了。