   (let ((ξpath (if (use-region-p)
                    (buffer-substring-no-properties (region-beginning) (region-end))
                  (let (p0 p1 p2)
-                   (setq p0 (point))
+                   (validate-setq p0 (point))
                    ;; chars that are likely to be delimiters of full path, e.g. space, tabs, brakets.
                    (skip-chars-backward "^  \"\t\n`'|()[]{}<>〔〕“”〈〉《》【】〖〗«»‹›·。\\`")
-                   (setq p1 (point))
+                   (validate-setq p1 (point))
                    (goto-char p0)
                    (skip-chars-forward "^  \"\t\n`'|()[]{}<>〔〕“”〈〉《》【】〖〗«»‹›·。\\'")
-                   (setq p2 (point))
+                   (validate-setq p2 (point))
                    (goto-char p0)
                    (buffer-substring-no-properties p1 p2)))))
     (if (string-match-p "\\`https?://" ξpath)


(use-package company :ensure t
  :config
  (setq company-dabbrev-ignore-case nil)
  (setq company-dabbrev-code-ignore-case nil)
  (setq company-dabbrev-downcase nil)
  (setq company-idle-delay 0)
  (setq company-show-numbers t)
  (setq company-minimum-prefix-length 2)
  (setq company-tooltip-align-annotations t)
  (global-company-mode))

(use-package company-shell :ensure t)


;; Remember point/place for each file.
(use-package saveplace :defer t
  :config
  (setq-default save-place t)
  (validate-setq save-place-file (expand-file-name ".places"
                                                   user-emacs-directory))
  (save-place-mode))

(use-package helm-dash :ensure t
  :after (go-mode)
  :config
  ;; View documentation in external browser.
  ;; (validate-setq helm-dash-browser-func #'browse-url)
  ;; View documentation in ewww.
  (validate-setq helm-dash-browser-func #'eww))

(defun ar/projectile-helm-ag ()
  "Search current repo/project using ag."
