(while (not (= (following-char) ?\")) (skip-chars-forward "^\"\\\\") (if (= (following-char) ?\\) (forward-char 2))) (forward-char 1) (setq end (point)) ;; Check before string either for underline, or for keyword ;; and opening parenthesis. (save-excursion (goto-char start) (cond ((= (preceding-char) ?_) ;; Disregard already marked strings. (setq start nil end nil)) ((= (preceding-char) ?\() (backward-char 1) (let ((end-keyword (point))) (skip-chars-backward "_A-Za-z0-9") (if (member (list (buffer-substring-no-properties (point) end-keyword)) keywords) ;; Disregard already marked strings. (setq start nil end nil))))))))) (and start end (list (po-extract-unquoted (current-buffer) start end) start end)))) (defun po-mark-awk-string (start end keyword) "Mark the Awk string, from START to END, with KEYWORD. Leave point after marked string." (if (string-equal keyword "_") (progn (goto-char start) (insert "_") (goto-char (1+ end))) (goto-char end) (insert ")") (save-excursion (goto-char start) (insert keyword "("))))