             (when (search-backward-regexp " [:=/*+-]+ " linestart t)
               (forward-char 1)
               (search-forward-regexp "[ a-aA-Z0-9]")
-              (forward-word 1)
-              (let ((wordend (point)))
-                (backward-word 1)
-                (buffer-substring (point) wordend)))))
+              (setq exprstart (point))
+              (condition-case nil
+                  (search-forward-regexp zomp-identifier-regexp)
+                (error nil))
+              (buffer-substring exprstart (point)))))
     (setq funcsym
           (save-excursion
             (condition-case nil

  :group 'zomp
  :type `(repeat string))

(defcustom zomp-continued-line-regexp "\\(?: [-+*/=><&|:]*[-+*/=><&|]\\|[,({\\[]\\) *\\(?://.*\\)?"
  "A line whose ends matches this string (using `looking-back' is
  considered to be one which continues on the next line"
  :group 'zomp


(defun zomp-symbol-at-point ()
  (interactive)
  (let ((linestart 0) (parenopen 0) exprstart funcend linesym funcsym)
    (setq linesym
          (save-excursion
            (back-to-indentation)
            (setq linestart (point))
            (condition-case nil
                (search-forward-regexp zomp-identifier-regexp)
              (error nil))
