view lisp/pcmpl-linux.el @ 80163:22e82356b25e

* progmodes/verilog-mode.el (customize): Fix typo in error message. (verilog-mode, verilog-mode-indent, verilog-mode-actions) (verilog-mode-auto, verilog-indent-level-module) (verilog-minimum-comment-distance, verilog-library-flags) (verilog-library-directories, verilog-library-files) (verilog-auto-reset-widths, verilog-imenu-generic-expression) (verilog-xemacs-menu, verilog-set-compile-command) (verilog-set-compile-command, verilog-mode-syntax-table, verilog-mode) (verilog-get-expr, verilog-strip-comments, verilog-one-line) (verilog-lint-off, verilog-batch-auto, verilog-batch-delete-auto) (verilog-batch-inject-auto, verilog-batch-indent) (verilog-continued-line, verilog-type-keywords) (verilog-read-sub-decls-sig, verilog-read-sub-decls-line) (verilog-read-inst-pins, verilog-read-arg-pins) (verilog-read-auto-template, verilog-read-signals, verilog-getopt-file) (verilog-add-list-unique, verilog-symbol-detick, verilog-modi-filename) (verilog-auto-star, verilog-auto-inst, verilog-auto-wire) (verilog-enum-ascii, verilog-sk-begin, verilog-sk-fork) (verilog-sk-datadef, verilog-colorize-include-files-buffer) (verilog-mode-version, verilog-mode-release-date) (verilog-mode-release-emacs, verilog-linter, verilog-coverage) (verilog-simulator, verilog-compiler) (verilog-auto-sense-defines-constant, verilog-company) (verilog-project, verilog-mark-defun, verilog-submit-bug-report): Fix typos in docstrings. (verilog-set-auto-endcomments, verilog-calculate-indent) (verilog-inject-auto, verilog-auto-arg, verilog-auto-inout-module): Reflow docstrings. (verilog-tab-always-indent, verilog-highlight-p1800-keywords) (verilog-auto-star-save, verilog-auto-inst-vector, verilog-mode-hook) (electric-verilog-forward-sexp, verilog-in-case-region-p) (verilog-in-struct-region-p, verilog-in-generate-region-p) (verilog-leap-to-head, verilog-current-indent-level) (verilog-case-indent-level, verilog-cpp-keywords) (verilog-defun-keywords, verilog-block-keywords, verilog-tf-keywords) (verilog-case-keywords, verilog-separator-keywords, verilog-completion) (verilog-signals-not-in, verilog-symbol-detick-text) (verilog-modi-cache-preserve-tick, verilog-modi-cache-preserve-buffer) (verilog-forward-close-paren, verilog-backward-open-paren) (verilog-backward-open-bracket): Doc fixes.
author Dan Nicolaescu <dann@ics.uci.edu>
date Wed, 20 Feb 2008 16:15:03 +0000
parents 73661ddc7ac7
children 606f2d163a64 1e3a407766b9
line wrap: on
line source

;;; pcmpl-linux.el --- functions for dealing with GNU/Linux completions

;; Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004,
;;   2005, 2006, 2007, 2008 Free Software Foundation, Inc.

;; This file is part of GNU Emacs.

;; GNU Emacs is free software; you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
;; the Free Software Foundation; either version 3, or (at your option)
;; any later version.

;; GNU Emacs is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
;; GNU General Public License for more details.

;; You should have received a copy of the GNU General Public License
;; along with GNU Emacs; see the file COPYING.  If not, write to the
;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
;; Boston, MA 02110-1301, USA.

;;; Commentary:

;; These functions are for use with GNU/Linux.  Since they depend on a
;; certain knowledge of the layout of such systems, they probably
;; won't work very well on other operating systems.

;;; Code:

(provide 'pcmpl-linux)

(require 'pcomplete)

(defgroup pcmpl-linux nil
  "Functions for dealing with GNU/Linux completions."
  :group 'pcomplete)

;; Functions:

;;;###autoload
(defun pcomplete/kill ()
  "Completion for GNU/Linux `kill', using /proc filesystem."
  (if (pcomplete-match "^-\\(.*\\)" 0)
      (pcomplete-here
       (pcomplete-uniqify-list
	(split-string
	 (pcomplete-process-result "kill" "-l")))
       (pcomplete-match-string 1 0)))
  (while (pcomplete-here
	  (if (file-directory-p "/proc")
	      (let ((default-directory "/proc/"))
		(mapcar 'directory-file-name
			(pcomplete-entries "[0-9]+/$"))))
	  nil 'identity)))

;;;###autoload
(defun pcomplete/umount ()
  "Completion for GNU/Linux `umount'."
  (pcomplete-opt "hVafrnvt(pcmpl-linux-fs-types)")
  (while (pcomplete-here (pcmpl-linux-mounted-directories)
			 nil 'identity)))

;;;###autoload
(defun pcomplete/mount ()
  "Completion for GNU/Linux `mount'."
  (pcomplete-opt "hVanfFrsvwt(pcmpl-linux-fs-types)o?L?U?")
  (while (pcomplete-here (pcomplete-entries) nil 'identity)))

(defun pcmpl-linux-fs-types ()
  "Return a list of available fs modules on GNU/Linux systems."
  (let ((kernel-ver (pcomplete-process-result "uname" "-r")))
    (mapcar
     (function
      (lambda (fsobj)
	(substring fsobj 0 (- (length fsobj) 2))))
     (let ((default-directory
	     (concat "/lib/modules/" kernel-ver "/fs/")))
       (pcomplete-entries "\\.o$")))))

(defun pcmpl-linux-mounted-directories ()
  "Return a list of mounted directory names."
  (let (points)
    (when (file-readable-p "/etc/mtab")
      (with-temp-buffer
	(insert-file-contents-literally "/etc/mtab")
	(while (not (eobp))
	  (let* ((line (buffer-substring (point) (line-end-position)))
		 (args (split-string line " ")))
	    (setq points (cons (nth 1 args) points)))
	  (forward-line)))
      (pcomplete-uniqify-list points))))

(defun pcmpl-linux-mountable-directories ()
  "Return a list of mountable directory names."
  (let (points)
    (when (file-readable-p "/etc/fstab")
      (with-temp-buffer
	(insert-file-contents-literally "/etc/fstab")
	(while (not (eobp))
	  (let* ((line (buffer-substring (point) (line-end-position)))
		 (args (split-string line "\\s-+")))
	    (setq points (cons (nth 1 args) points)))
	  (forward-line)))
      (pcomplete-pare-list
       (pcomplete-uniqify-list points)
       (cons "swap" (pcmpl-linux-mounted-directories))))))

;;; arch-tag: bb0961a6-a623-463d-92c6-497c317293b1
;;; pcmpl-linux.el ends here