Subject: bug#12838: pcomplete on a path with ~ in eshell fails with "Text is read-only"

From: Tuomas Kuismin <[email-masked]>
Date: Thu, 08 Nov 2012 11:44:48 +0200

Package: Emacs
Version: 24.2

Reproducing:
+ Start emacs with "emacs -Q"
+ Start eshell with M-x eshell
+ Ignore case in eshell completion with M-x set-variable -> eshell-cmpl-ignore-case -> t
+ Exit eshell with the command "exit"
+ Restart eshell with M-x eshell
+ Create a file in your home directory with the command "touch ~/foo"
+ Try to complete said file (in eshell) by typing "cat ~/f" and pressing TAB

Result: No completion is done, message "Text is read-only" appears.
Expected result: "cat ~/foo" appears on screen.

Workaround: Add the following to your init file:
(add-hook 'eshell-mode-hook (lambda () (setq pcomplete-expand-before-complete t)))
This results in the ~ being expanded (removed) from the path before completing, thus circumventing the issue.

To my knowledge, this bug exists on Linux and Mac, Emacs 24.2 and the repository.