           (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 "("))))
