diff --git a/devel.admin.inc b/devel.admin.inc
index 3c4dbdb..586d527 100644
--- a/devel.admin.inc
+++ b/devel.admin.inc
@@ -105,6 +105,11 @@ function devel_admin_settings() {
'#default_value' => variable_get('devel_page_alter', FALSE),
'#description' => t('Display $page array from hook_page_alter() in the messages area of each page.'),
);
+ $form['devel_perm_names'] = array('#type' => 'checkbox',
+ '#title' => t('Display machine names of permissions'),
+ '#default_value' => variable_get('devel_perm_names', FALSE),
+ '#description' => t('Display the language-independent machine names of the permissions in mouse-over hints on the !Permissions page; also display the module base file names.', array('!Permissions' => l(t('Permissions'), 'admin/people/permissions'))),
+ );
$error_handlers = devel_get_handlers();
$form['devel_error_handlers'] = array(
diff --git a/devel.module b/devel.module
index 5143fa6..8cc5691 100644
--- a/devel.module
+++ b/devel.module
@@ -1895,3 +1895,22 @@ function devel_rebuild_node_comment_statistics() {
->from($query)
->execute();
}
+
+/**
+ * Implements hook_form_alter().
+ *
+ * Adds mouse-over hints on the Permissions page to display
+ * language-independent machine names.
+ */
+function devel_form_user_admin_permissions_alter(&$form, &$form_state) {
+ if (user_access('access devel information') && variable_get('devel_perm_names', FALSE)) {
+ foreach ($form['permission'] as $perm => $data) {
+ if (is_numeric($perm)) {
+ $form['permission'][$perm]['#markup'] = '' . $form['permission'][$perm]['#markup'] . '';
+ }
+ else {
+ $form['permission'][$perm]['#markup'] = '' . $form['permission'][$perm]['#markup'] . '';
+ }
+ }
+ }
+}