# translation of mr.po to Marathi # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # Sandeep Shedmake , 2010. msgid "" msgstr "" "Project-Id-Version: mr\n" "Report-Msgid-Bugs-To: jmoskovc@redhat.com\n" "POT-Creation-Date: 2010-08-30 13:08+0200\n" "PO-Revision-Date: 2010-07-30 09:25+0530\n" "Last-Translator: Sandeep Shedmake \n" "Language-Team: Marathi \n" "Language: mr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: KBabel 1.11.4\n" "Plural-Forms: nplurals=2; plural=(n!=1);\n" #: ../lib/plugins/Bugzilla.cpp:466 #, c-format msgid "New bug id: %i" msgstr "नवीन बग id: %i" #: ../lib/plugins/Bugzilla.cpp:694 msgid "" "Empty login or password.\n" "Please check " msgstr "" "रिकामे लॉगीन किंवा पासवर्ड.\n" "कृपया तपासणी करा " #: ../lib/plugins/Bugzilla.cpp:703 msgid "Logging into bugzilla..." msgstr "बगझीलामध्ये प्रवेश करत आहे..." #: ../lib/plugins/Bugzilla.cpp:706 msgid "Checking for duplicates..." msgstr "हुबेहुब करीता तपासत आहे..." #: ../lib/plugins/Bugzilla.cpp:727 ../lib/plugins/Bugzilla.cpp:762 msgid "Missing mandatory member 'bugs'" msgstr "आवश्यक सदस्य 'bugs' आढळले नाही" #: ../lib/plugins/Bugzilla.cpp:745 ../lib/plugins/Bugzilla.cpp:778 #: ../lib/plugins/Bugzilla.cpp:854 msgid "get_bug_info() failed. Could not collect all mandatory information" msgstr "get_bug_info() अपयशी. सर्व आवश्यक माहिती एकत्र करण्यास अशक्य" #: ../lib/plugins/Bugzilla.cpp:794 msgid "Creating a new bug..." msgstr "नवीन बग निर्माण करत आहे..." #: ../lib/plugins/Bugzilla.cpp:799 msgid "Bugzilla entry creation failed" msgstr "बगजीला नोंदणी निर्माण अपयशी" #: ../lib/plugins/Bugzilla.cpp:809 ../lib/plugins/Bugzilla.cpp:908 msgid "Logging out..." msgstr "बाहेर पडत आहे..." #. decision based on state #: ../lib/plugins/Bugzilla.cpp:828 #, c-format msgid "Bug is already reported: %i" msgstr "बग आधिपासूनच कळवले: %i" #: ../lib/plugins/Bugzilla.cpp:839 #, c-format msgid "Bugzilla couldn't find parent of bug %d" msgstr "बग %d चे पॅरेंट शोधण्यास बगजीला अशक्य" #: ../lib/plugins/Bugzilla.cpp:868 ../lib/plugins/Bugzilla.cpp:869 #, fuzzy, c-format msgid "Add %s to CC list" msgstr "CC सूचीत %s समावेश करा" #: ../lib/plugins/Bugzilla.cpp:893 #, c-format msgid "Adding new comment to bug %d" msgstr "बग(%d) मध्ये नवीन टिपण्णी समावेश करा" #: ../lib/plugins/Bugzilla.cpp:992 msgid "Reports bugs to bugzilla" msgstr "बगजीला करीता बग्स् कळवतो" #: ../lib/plugins/CCpp.cpp:191 msgid "Generating backtrace" msgstr "backtrace निर्माण करत आहे" #: ../lib/plugins/CCpp.cpp:198 ../lib/plugins/CCpp.cpp:345 #: ../lib/plugins/CCpp.cpp:539 ../lib/plugins/CCpp.cpp:593 #: ../lib/plugins/CCpp.cpp:760 ../lib/plugins/CCpp.cpp:812 #: ../lib/plugins/Kerneloops.cpp:133 ../lib/plugins/Python.cpp:32 #: ../lib/plugins/RunApp.cpp:64 ../lib/plugins/SOSreport.cpp:58 #: ../lib/plugins/SOSreport.cpp:137 #, c-format msgid "Unable to open debug dump '%s'" msgstr "" #: ../lib/plugins/CCpp.cpp:372 msgid "Starting the debuginfo installation" msgstr "debuginfo प्रतिष्ठापन सुरू करत आहे" #. Compatibility code. #. This whole block should be deleted for Fedora 14. #: ../lib/plugins/CCpp.cpp:608 msgid "Getting global universal unique identification..." msgstr "लोकल ग्लोबल एकमेव ओळख प्राप्त करत आहे..." #: ../lib/plugins/CCpp.cpp:797 msgid "Skipping the debuginfo installation" msgstr "debuginfo प्रतिष्ठापन वगळत आहे" #: ../lib/plugins/CCpp.cpp:1124 msgid "Analyzes crashes in C/C++ programs" msgstr "C/C++ प्रोग्राम्स् मधील क्रॅशचे विश्लेषण करतो" #: ../lib/plugins/FileTransfer.cpp:52 ../lib/plugins/ReportUploader.cpp:97 msgid "FileTransfer: URL not specified" msgstr "FileTransfer: URL दिले नाही" #: ../lib/plugins/FileTransfer.cpp:56 ../lib/plugins/ReportUploader.cpp:101 #, c-format msgid "Sending archive %s to %s" msgstr "आर्काइव्ह %s, याला %s करीता पाठवत आहे" #: ../lib/plugins/FileTransfer.cpp:241 msgid "FileTransfer: Creating a report..." msgstr "फाइल स्थानांतरन: अहवाल निर्माण करत आहे..." #: ../lib/plugins/FileTransfer.cpp:265 ../lib/plugins/FileTransfer.cpp:294 #, c-format msgid "Cannot create and send an archive: %s" msgstr "आर्काइव्हचे निर्माण व त्यांस पाठवणे अशक्य: %s" #: ../lib/plugins/FileTransfer.cpp:361 msgid "Sends a report via FTP or SCTP" msgstr "FTP किंवा SCTP द्वारे अहवाल कळवतो" #: ../lib/plugins/Kerneloops.cpp:154 msgid "Analyzes kernel oopses" msgstr "कर्नल ऊप्स्चे विश्लेषण करतो" #: ../lib/plugins/KerneloopsReporter.cpp:95 msgid "Creating and submitting a report..." msgstr "अहवाल निर्माण व सादर करत आहे..." #: ../lib/plugins/KerneloopsReporter.cpp:144 msgid "Sends kernel oops information to kerneloops.org" msgstr "kerneloops.org करीता कर्नल ऊप्स् माहिती पुरवतो" #: ../lib/plugins/KerneloopsScanner.cpp:210 msgid "Periodically scans for and saves kernel oopses" msgstr "कर्नल ऊप्स् वेळोवेळी स्कॅन करतो व साठवतो" #: ../lib/plugins/Logger.cpp:69 #, c-format msgid "Writing report to '%s'" msgstr "'%s' करीता अहवाल लिहत आहे" #: ../lib/plugins/Logger.cpp:75 #, c-format msgid "The report was appended to %s" msgstr "%s सह अहवाल जोडले" #: ../lib/plugins/Logger.cpp:75 #, c-format msgid "The report was stored to %s" msgstr "अहवाल %s मध्ये साठवले" #: ../lib/plugins/Logger.cpp:83 msgid "Writes report to a file" msgstr "फाइल करीता अहवाल लिहतो" #: ../lib/plugins/Mailx.cpp:100 msgid "Sending an email..." msgstr "ईमेल पाठवत आहे..." #: ../lib/plugins/Mailx.cpp:151 msgid "Sends an email with a report (via mailx command)" msgstr "अहवालसह ईमेल पाठवतो (mailx आदेशच्या मदतीने)" #: ../lib/plugins/Python.cpp:105 msgid "Analyzes crashes in Python programs" msgstr "Python प्रोग्राम्स् मधील क्रॅशचे विश्लेषण करतो" #: ../lib/plugins/ReportUploader.cpp:131 #, c-format msgid "Sending failed, trying again. %s" msgstr "पाठवण्यास अपयशी, पुनः प्रयत्न करत आहे. %s" #: ../lib/plugins/ReportUploader.cpp:197 msgid "Creating a ReportUploader report..." msgstr "ReportUploader अहवाल निर्माण करत आहे..." #: ../lib/plugins/ReportUploader.cpp:515 msgid "" "Packs crash data into .tar.gz file, optionally uploads it via FTP/SCP/etc" msgstr "" "डाटा क्रॅशला .tar.gz फाइलमध्ये पॅक करतो, वैकल्पिकरित्या FTP/SCP/etc चा वापर करून " "अपलोड करतो" #. Gzipping e.g. 0.5gig coredump takes a while. Let client know what we are doing #: ../lib/plugins/RHTSupport.cpp:111 msgid "Compressing data" msgstr "" #: ../lib/plugins/RHTSupport.cpp:246 msgid "Creating a new case..." msgstr "नवीन केस निर्माण करत आहे..." #: ../lib/plugins/RHTSupport.cpp:328 #, fuzzy msgid "Reports bugs to Red Hat support" msgstr "बगजीला करीता बग्स् कळवतो" #: ../lib/plugins/RunApp.cpp:79 msgid "Runs a command, saves its output" msgstr "आदेश चालवतो, तसेच आऊटपुट साठवतो" #: ../lib/plugins/SOSreport.cpp:104 #, c-format msgid "Running sosreport: %s" msgstr "sosreport चालवत आहे: %s" #: ../lib/plugins/SOSreport.cpp:109 msgid "Finished running sosreport" msgstr "sosreport चालवणे पूर्ण झाले" #: ../lib/plugins/SOSreport.cpp:171 msgid "Runs sosreport, saves the output" msgstr "Runs sosreport चालवतो, आऊटपुट साठवतो" #: ../lib/plugins/SQLite3.cpp:678 msgid "Keeps SQLite3 database about all crashes" msgstr "सर्व क्रॅशविषयी माहिती SQLite3 डाटाबेसमध्ये साठवली जाते" #: ../lib/plugins/Bugzilla.glade.h:1 msgid "Bugzilla plugin configuration" msgstr "बगजीला प्लगइन संरचना" #: ../lib/plugins/Bugzilla.glade.h:2 msgid "Bugzilla URL:" msgstr "बगजीला URL:" #: ../lib/plugins/Bugzilla.glade.h:3 msgid "Don't have an account yet?" msgstr "अजूनही खाते नाही?" #: ../lib/plugins/Bugzilla.glade.h:4 msgid "Login(email):" msgstr "प्रवेश (ईमेल):" #: ../lib/plugins/Bugzilla.glade.h:5 ../lib/plugins/RHTSupport.glade.h:3 msgid "Password:" msgstr "पासवर्ड:" #: ../lib/plugins/Bugzilla.glade.h:6 ../lib/plugins/RHTSupport.glade.h:5 msgid "SSL verify" msgstr "SSL तपासणी करा" #: ../lib/plugins/Bugzilla.glade.h:7 ../lib/plugins/RHTSupport.glade.h:6 msgid "Show password" msgstr "पासवर्ड दाखवा" #: ../lib/plugins/Bugzilla.glade.h:8 msgid "" "You can create it here" msgstr "" "तुम्ही येथे निर्माण " "करू शकता" #: ../lib/plugins/KerneloopsReporter.glade.h:1 msgid "Kerneloops Reporter plugin configuration" msgstr "Kerneloops Reporter प्लगइन संरचना" #: ../lib/plugins/KerneloopsReporter.glade.h:2 msgid "Submit URL:" msgstr "सादर करा URL:" #: ../lib/plugins/Logger.glade.h:1 msgid "Logger plugin configuration" msgstr "लॉगर प्लगइनची संरचना" #: ../lib/plugins/Logger.glade.h:2 msgid "Append new logs" msgstr "नवीन लॉग्स् समावेश करा" #: ../lib/plugins/Logger.glade.h:3 msgid "Logger file:" msgstr "लॉगर फाइल:" #: ../lib/plugins/Mailx.glade.h:1 msgid "Mailx plugin configuration" msgstr "Mailx प्लगइन संरचना" #: ../lib/plugins/Mailx.glade.h:2 msgid "Recipient's Email:" msgstr "श्रोत्याचे ईमेल:" #: ../lib/plugins/Mailx.glade.h:3 msgid "Send Binary Data" msgstr "बाइनरी डाटा पाठवा" #: ../lib/plugins/Mailx.glade.h:4 msgid "Subject:" msgstr "विषय:" #: ../lib/plugins/Mailx.glade.h:5 msgid "Your Email:" msgstr "आपले ईमेल:" #: ../lib/plugins/ReportUploader.glade.h:1 msgid "Report Uploader plugin configuration" msgstr "Report Uploader प्लगइन संरचना" #: ../lib/plugins/ReportUploader.glade.h:2 msgid "Customer:" msgstr "ग्राहक:" #: ../lib/plugins/ReportUploader.glade.h:3 msgid "Retry count:" msgstr "पुनःप्रयत्न प्रमाण:" #: ../lib/plugins/ReportUploader.glade.h:4 msgid "Retry delay:" msgstr "पुनःप्रयत्न विलंब:" #: ../lib/plugins/ReportUploader.glade.h:5 msgid "Ticket:" msgstr "टिकेट:" #: ../lib/plugins/ReportUploader.glade.h:6 msgid "URL:" msgstr "URL:" #: ../lib/plugins/ReportUploader.glade.h:7 msgid "Upload" msgstr "अपलोड" #: ../lib/plugins/ReportUploader.glade.h:8 msgid "Use encryption" msgstr "एनक्रिप्शनचा वापर करा" #: ../lib/plugins/RHTSupport.glade.h:1 msgid "RHTSupport plugin configuration" msgstr "RHTSupport प्लगइन संरचना" #: ../lib/plugins/RHTSupport.glade.h:2 msgid "Login:" msgstr "प्रवेश करा:" #: ../lib/plugins/RHTSupport.glade.h:4 msgid "RHTSupport URL:" msgstr "RHTSupport URL:" #: ../lib/utils/abrt_curl.c:171 #, c-format msgid "Uploaded: %llu of %llu kbytes" msgstr "" #: ../src/applet/abrt-applet.desktop.in.h:1 msgid "ABRT notification applet" msgstr "ABRT सूचना ऍप्लेट" #: ../src/applet/abrt-applet.desktop.in.h:2 ../src/gui/abrt.desktop.in.h:1 #: ../src/gui/ccgui.glade.h:10 ../src/gui/CCMainWindow.py:8 #: ../src/gui/report.glade.h:16 msgid "Automatic Bug Reporting Tool" msgstr "ऑटोमॅटीक बग रिपोर्टिंग टूल" #: ../src/applet/Applet.cpp:79 #, c-format msgid "A crash in the %s package has been detected" msgstr "संकुल %s मधील क्रॅश आढळले गेले आहे" #: ../src/applet/Applet.cpp:81 msgid "A crash has been detected" msgstr "क्रॅश आढळले आहे" #: ../src/applet/Applet.cpp:278 msgid "ABRT service is not running" msgstr "ABRT सेवा कार्यरत नाही" #: ../src/applet/CCApplet.cpp:33 ../src/applet/CCApplet.cpp:254 #: ../src/applet/CCApplet.cpp:281 msgid "Warning" msgstr "सावधानता" #: ../src/applet/CCApplet.cpp:83 msgid "" "Notification area applet that notifies users about issues detected by ABRT" msgstr "सूचना क्षेत्र ऍप्लेट जे वापरकर्त्याला ABRT द्वारे आढळलेल्या अडचणींविषयी अवगत करते" #: ../src/applet/CCApplet.cpp:99 ../src/gui/ccgui.glade.h:23 msgid "translator-credits" msgstr "संदिप शेडमाके , 2010." #: ../src/applet/CCApplet.cpp:109 msgid "Hide" msgstr "लपवा" #: ../src/applet/CCApplet.cpp:247 ../src/gui/ccgui.glade.h:13 msgid "Report" msgstr "रिपोर्ट" #: ../src/applet/CCApplet.cpp:250 ../src/applet/CCApplet.cpp:278 msgid "Open ABRT" msgstr "ABRT उघडा" #: ../src/cli/CLI.cpp:50 #, c-format msgid "" "\tUID : %s\n" "\tUUID : %s\n" "\tPackage : %s\n" "\tExecutable : %s\n" "\tCrash Time : %s\n" "\tCrash Count: %s\n" msgstr "" "\tUID : %s\n" "\tUUID : %s\n" "\tसंकुल : %s\n" "\tएक्जीक्यूटेबल : %s\n" "\tक्रॅश वेळ : %s\n" "\tक्रॅश प्रमाण: %s\n" #: ../src/cli/CLI.cpp:68 #, c-format msgid "\tHostname : %s\n" msgstr "\tयजमाननाव : %s\n" #: ../src/cli/CLI.cpp:97 #, fuzzy, c-format msgid "" "Crash ID: %s:%s\n" "Last crash: %s\n" "Analyzer: %s\n" "Component: %s\n" "Package: %s\n" "Command: %s\n" "Executable: %s\n" "System: %s, kernel %s\n" "Reason: %s\n" msgstr "" "क्रॅश ID: %s:%s\n" "शेवटचे क्रॅश: %s\n" "एनलाइजर: %s\n" "घटक: %s\n" "संकुल: %s\n" "आदेश: %s\n" "एक्जीक्यूटेबल: %s\n" "प्रणाली: %s, kernel %s\n" "गुणवत्ताश्रेणी: %s\n" "कोरडम्प फाइल: %s\n" "कारण: %s\n" #: ../src/cli/CLI.cpp:125 #, fuzzy, c-format msgid "Coredump file: %s\n" msgstr "क्रॅश फंक्शन: %s\n" #: ../src/cli/CLI.cpp:129 #, fuzzy, c-format msgid "Rating: %s\n" msgstr "यजमाननाव: %s\n" #: ../src/cli/CLI.cpp:134 #, c-format msgid "Crash function: %s\n" msgstr "क्रॅश फंक्शन: %s\n" #: ../src/cli/CLI.cpp:138 #, c-format msgid "Hostname: %s\n" msgstr "यजमाननाव: %s\n" #: ../src/cli/CLI.cpp:142 #, c-format msgid "" "\n" "How to reproduce:\n" "%s\n" msgstr "" "\n" "पुनः कसे निर्माण करायचे:\n" "%s\n" #: ../src/cli/CLI.cpp:146 #, c-format msgid "" "\n" "Comment:\n" "%s\n" msgstr "" "\n" "टिपण्णी:\n" "%s\n" #: ../src/cli/CLI.cpp:152 #, c-format msgid "" "\n" "Backtrace:\n" "%s\n" msgstr "" "\n" "बॅकट्रेस:\n" "%s\n" #. Message has embedded tabs. #: ../src/cli/CLI.cpp:250 #, c-format msgid "" "Usage: %s [OPTION]\n" "\n" "Startup:\n" "\t-V, --version\t\tdisplay the version of %s and exit\n" "\t-?, --help\t\tprint this help\n" "\n" "Actions:\n" "\t-l, --list\t\tprint a list of all crashes which are not yet reported\n" "\t -f, --full\tprint a list of all crashes, including the already " "reported ones\n" "\t-r, --report CRASH_ID\tcreate and send a report\n" "\t -y, --always\tcreate and send a report without asking\n" "\t-d, --delete CRASH_ID\tremove a crash\n" "\t-i, --info CRASH_ID\tprint detailed information about a crash\n" "\t -b, --backtrace\tprint detailed information about a crash including " "backtrace\n" "CRASH_ID can be:\n" "\tUID:UUID pair,\n" "\tunique UUID prefix - the crash with matching UUID will be acted upon\n" "\t@N - N'th crash (as displayed by --list --full) will be acted upon\n" msgstr "" "वापर: %s [OPTION]\n" "\n" "Startup:\n" "\t-V, --version\t\tdisplay the version of %s and exit\n" "\t-?, --help\t\tprint this help\n" "\n" "Actions:\n" "\t-l, --list\t\tprint a list of all crashes which are not yet reported\n" "\t -f, --full\tprint a list of all crashes, including the already " "reported ones\n" "\t-r, --report CRASH_ID\tcreate and send a report\n" "\t -y, --always\tcreate and send a report without asking\n" "\t-d, --delete CRASH_ID\tremove a crash\n" "\t-i, --info CRASH_ID\tprint detailed information about a crash\n" "\t -b, --backtrace\tprint detailed information about a crash including " "backtrace\n" "CRASH_ID can be:\n" "\tUID:UUID pair,\n" "\tunique UUID prefix - the crash with matching UUID will be acted upon\n" "\t@N - N'th crash (as displayed by --list --full) will be acted upon\n" #: ../src/cli/CLI.cpp:296 msgid "You must specify exactly one operation" msgstr "एक पद्धत निर्देशीत करणे आवश्यक आहे" #: ../src/cli/report.cpp:175 #, c-format msgid "# This field is read only\n" msgstr "# हे क्षेत्र फक्त वाचणीय आहे\n" #: ../src/cli/report.cpp:195 msgid "# Describe the circumstances of this crash below" msgstr "# या क्रॅशची परिस्थिती खालील वर्णन करा" #: ../src/cli/report.cpp:197 msgid "# How to reproduce the crash?" msgstr "# क्रॅशचे पुनः निर्माण कसे करायचे?" #: ../src/cli/report.cpp:199 msgid "" "# Backtrace\n" "# Check that it does not contain any sensitive data (passwords, etc.)" msgstr "" "# बॅकट्रेस\n" "# कुठलेही प्रकारचे संवेदनशील डाटा समाविष्टीत नाही याची तपासणी करा (पासवर्डस्, इत्यादी)" #: ../src/cli/report.cpp:201 msgid "# Architecture" msgstr "# आर्किटेक्चर" #: ../src/cli/report.cpp:202 msgid "# Command line" msgstr "# आदेश ओळ" #: ../src/cli/report.cpp:203 msgid "# Component" msgstr "# घटक" #: ../src/cli/report.cpp:204 msgid "# Core dump" msgstr "# कोर डम्प" #: ../src/cli/report.cpp:205 msgid "# Executable" msgstr "# एक्जीक्यूटेबल" #: ../src/cli/report.cpp:206 msgid "# Kernel version" msgstr "# कर्नल आवृत्ती" #: ../src/cli/report.cpp:207 msgid "# Package" msgstr "# संकुल" #: ../src/cli/report.cpp:208 msgid "# Reason of crash" msgstr "# क्रॅशचे कारण" #: ../src/cli/report.cpp:209 msgid "# Release string of the operating system" msgstr "# कार्यप्रणालीचे प्रकाशीत अक्षरमाळा" #: ../src/cli/report.cpp:332 msgid "Cannot run vi: $TERM, $VISUAL and $EDITOR are not set" msgstr "vi चालवणे अशक्य: $TERM, $VISUAL व $EDITOR सेट नाही" #: ../src/cli/report.cpp:420 msgid "" "\n" "The report has been updated" msgstr "" "\n" "अहवाल सुधारीत केले" #: ../src/cli/report.cpp:422 msgid "" "\n" "No changes were detected in the report" msgstr "" "\n" "अहवालात कुठलेही बदल आढळले नाही" #. The response might take more than 1 char in non-latin scripts. #: ../src/cli/report.cpp:541 msgid "y" msgstr "" #: ../src/cli/report.cpp:542 msgid "N" msgstr "" #. Read the missing information and push it to plugin settings. #: ../src/cli/report.cpp:643 #, c-format msgid "Wrong settings were detected for plugin %s\n" msgstr "प्लगइन %s करीता चुकिची संरचना आढळली\n" #: ../src/cli/report.cpp:647 msgid "Enter your login: " msgstr "प्रवेशक करा: " #: ../src/cli/report.cpp:653 msgid "Enter your password: " msgstr "पासवर्ड द्या: " #: ../src/cli/report.cpp:698 msgid "Reporting..." msgstr "कळवत आहे..." #: ../src/cli/report.cpp:717 #, fuzzy, c-format msgid "Report using %s?" msgstr "%s चा वापर करून कळवायचे? [y/N]: " #: ../src/cli/report.cpp:720 msgid "Skipping..." msgstr "वगळत आहे..." #: ../src/cli/report.cpp:732 #, fuzzy msgid "Reporting disabled because the backtrace is unusable" msgstr "बॅकट्रेस् वापरण्याजोगी नसल्यामुळे रिपोर्टिंग बंद केले." #: ../src/cli/report.cpp:736 #, c-format msgid "" "Please try to install debuginfo manually using the command: \"debuginfo-" "install %s\" and try again\n" msgstr "" #: ../src/cli/report.cpp:745 #, fuzzy msgid "Error loading reporter settings" msgstr "अहवाल प्राप्त करतेवेळी त्रुटी: %s" #: ../src/cli/report.cpp:764 #, c-format msgid "Crash reported via %d plugins (%d errors)\n" msgstr "%d प्लगइन्स् (%d त्रुटी) द्वारे क्रॅश कळवले\n" #: ../src/daemon/CommLayerServerDBus.cpp:227 msgid "Comment is too long" msgstr "टिपण्णी खूप लांब आहे" #: ../src/daemon/CommLayerServerDBus.cpp:231 msgid "'How to reproduce' is too long" msgstr "'पुनःनिर्माण कसे करायचे' खूप लांब आहे" #: ../src/daemon/Daemon.cpp:513 msgid "" "The size of the report exceeded the quota. Please check system's " "MaxCrashReportsSize value in abrt.conf." msgstr "" "रिपोर्टचा आकार कोटापेक्षा जास्त आहे. कृपया abrt.conf अंतर्गत प्रणालीचे " "MaxCrashReportsSize मूल्य तपासा." #: ../src/daemon/MiddleWare.cpp:605 msgid "Database plugin not specified. Please check abrtd settings." msgstr "डाटाबेस प्लगइन निर्देशीत नाही. कृपया abrtd संरचना तपासा." #: ../src/gui/abrt.desktop.in.h:2 msgid "View and report application crashes" msgstr "ऍप्लिकेशन क्रॅश पहा व कळवा" #: ../src/gui/ABRTExceptions.py:6 msgid "Another client is already running, trying to wake it..." msgstr "इतर क्लाएंट आधिपासूनच कार्यरत आहे, सक्रिय करण्याचा प्रयत्न करत आहे..." #: ../src/gui/ABRTExceptions.py:13 msgid "" "Got unexpected data from the daemon (is the database properly updated?)." msgstr "डिमनपासून अनपेक्षीत डाटा प्राप्त झाले (माहितीकोष योग्यरित्या सुधारीत केले?)." #: ../src/gui/ABRTPlugin.py:62 msgid "Not loaded plugins" msgstr "प्लगइन्स् लोड केले नाही" #: ../src/gui/ABRTPlugin.py:63 msgid "Analyzer plugins" msgstr "अनलाइजर प्लगइन्स्" #: ../src/gui/ABRTPlugin.py:64 msgid "Action plugins" msgstr "कृती प्लगइन्स्" #: ../src/gui/ABRTPlugin.py:65 msgid "Reporter plugins" msgstr "रिपोर्टर प्लगइन्स्" #: ../src/gui/ABRTPlugin.py:66 msgid "Database plugins" msgstr "डाटाबेस प्लगइन्स्" #: ../src/gui/CCDBusBackend.py:74 ../src/gui/CCDBusBackend.py:97 msgid "Cannot connect to system dbus." msgstr "प्रणाली dbus शी जुळवणी करण्यास अशक्य." #: ../src/gui/CCDBusBackend.py:120 ../src/gui/CCDBusBackend.py:123 msgid "Please check if the abrt daemon is running." msgstr "कृपया abrt डीमन कार्यरत आहे याची तपासणी करा." #. FIXME: BUG: BarWindow remains. (how2reproduce: delete "component" in a dump dir and try to report it) #: ../src/gui/CCDBusBackend.py:170 msgid "" "Daemon did not return a valid report info.\n" "Is debuginfo missing?" msgstr "" "डीमनने वैध अहवाल माहिती पुरवली नाही.\n" "debuginfo आढळले नाही?" #: ../src/gui/ccgui.glade.h:1 msgid "(C) 2009, 2010 Red Hat, Inc." msgstr "(C) 2009, 2010 Red Hat, Inc." #: ../src/gui/ccgui.glade.h:2 msgid "Bug Reports:" msgstr "बग अहवाल:" #: ../src/gui/ccgui.glade.h:3 msgid "Command:" msgstr "आदेश:" #: ../src/gui/ccgui.glade.h:4 msgid "Comment:" msgstr "टिपण्णी:" #: ../src/gui/ccgui.glade.h:5 msgid "Crash Count:" msgstr "क्रॅश प्रमाण:" #: ../src/gui/ccgui.glade.h:6 msgid "Latest Crash:" msgstr "नुकतेच क्रॅश:" #: ../src/gui/ccgui.glade.h:7 msgid "Reason:" msgstr "कारण:" #: ../src/gui/ccgui.glade.h:8 msgid "User:" msgstr "वापरकर्ता:" #: ../src/gui/ccgui.glade.h:9 msgid "About ABRT" msgstr "ABRT विषयी" #: ../src/gui/ccgui.glade.h:11 msgid "Copy to Clipboard" msgstr "क्लिपबोर्डवर प्रत बनवा" #: ../src/gui/ccgui.glade.h:12 ../src/gui/settings.glade.h:19 msgid "Plugins" msgstr "प्लगइन्स्" #: ../src/gui/ccgui.glade.h:14 msgid "" "This program 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 2 of the License, or (at your option) " "any later version.\n" "\n" "This program 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.\n" "\n" "You should have received a copy of the GNU General Public License along with " "this program. If not, see ." msgstr "" "This program 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 2 of the License, or (at your option) " "any later version.\n" "\n" "This program 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.\n" "\n" "You should have received a copy of the GNU General Public License along with " "this program. If not, see ." #: ../src/gui/ccgui.glade.h:19 msgid "View log" msgstr "लॉगचे दृष्य" #: ../src/gui/ccgui.glade.h:20 msgid "_Edit" msgstr "संपादीत करा (_E)" #: ../src/gui/ccgui.glade.h:21 msgid "_File" msgstr "फाइल (_F)" #: ../src/gui/ccgui.glade.h:22 msgid "_Help" msgstr "मदत (_H)" #. add pixbuff separatelly #: ../src/gui/CCMainWindow.py:63 msgid "Reported" msgstr "कळवले" #: ../src/gui/CCMainWindow.py:71 msgid "Application" msgstr "ऍप्लिकेशन" #: ../src/gui/CCMainWindow.py:73 msgid "Hostname" msgstr "यजमाननाव" #: ../src/gui/CCMainWindow.py:75 msgid "Latest Crash" msgstr "नुकतेच क्रॅश" #: ../src/gui/CCMainWindow.py:143 #, python-format msgid "" "Cannot show the settings dialog.\n" "%s" msgstr "" "संरचना संवाद दाखवणे अशक्य.\n" "%s" #: ../src/gui/CCMainWindow.py:148 #, python-format msgid "" "Unable to finish the current task!\n" "%s" msgstr "" "विद्यमान कार्य पूर्ण करण्यास अशक्य!\n" "%s" #. there is something wrong with the daemon if we cant get the dumplist #: ../src/gui/CCMainWindow.py:183 #, python-format msgid "" "Error while loading the dumplist.\n" "%s" msgstr "" "डंपसूची लोड करतेवेळी त्रुटी आढळली.\n" "%s" #: ../src/gui/CCMainWindow.py:241 #, python-format msgid "" "%s Crash\n" "%s" msgstr "" "%s क्रॅश\n" "%s" #: ../src/gui/CCMainWindow.py:337 msgid "You have to select a crash to copy." msgstr "प्रत बनवण्यासाठी तुम्हाला क्रॅश नीवडावे लागेल." #: ../src/gui/CCMainWindow.py:422 msgid "" "Usage: abrt-gui [OPTIONS]\n" "\t-v[vv]\t\t\tVerbose\n" "\t--report=CRASH_ID\tDirectly report crash with CRASH_ID" msgstr "" "वापरणी: abrt-gui [OPTIONS]\n" "\t-v[vv]\t\t\tVerbose\n" "\t--report=CRASH_ID\tDirectly report crash with CRASH_ID" #: ../src/gui/CCMainWindow.py:445 #, python-format msgid "" "No such crash in the database, probably wrong crashid.\n" "crashid=%s" msgstr "" "डाटाबेसमध्ये या प्रकारचे क्रॅश आढळले नाही, संभाव्यतया चुकिचे crashid.\n" "crashid=%s" #. default texts #: ../src/gui/CCReporterDialog.py:22 ../src/gui/CReporterAssistant.py:19 msgid "Brief description of how to reproduce this or what you did..." msgstr "हे कसे पुनः निर्माण करायचे किंवा तुम्ही काय केले याचे थोडक्यात वर्णन..." #: ../src/gui/CCReporterDialog.py:107 msgid "You must check the backtrace for sensitive data." msgstr "संवेदनशील डाटाकरीता तुम्ही बॅकट्रेस तपासायला हवे." #: ../src/gui/CCReporterDialog.py:118 ../src/gui/CReporterAssistant.py:324 #, python-format msgid "" "Reporting disabled because the backtrace is unusable.\n" "Please try to install debuginfo manually using the command: debuginfo-" "install %s \n" "then use the Refresh button to regenerate the backtrace." msgstr "" "बॅकट्रेस् वापरण्याजोगी नसल्यामुळे रिपोर्टिंग बंद केले.\n" "आदेश: debuginfo-install %s याचा वापर करून कृपया debuginfo स्वहस्ते " "प्रतिष्ठापीत करण्याचा प्रयत्न करा \n" "व त्यानंतर बॅकट्रेस पुनः निर्माण करण्यासाठी पुनः ताजे करा बटनचा वापर करा." #: ../src/gui/CCReporterDialog.py:120 msgid "The backtrace is unusable, you cannot report this!" msgstr "बॅकट्रेस वापरण्याजोगी नाही, यास कळवणे शक्य नाही!" #: ../src/gui/CCReporterDialog.py:124 ../src/gui/CReporterAssistant.py:330 msgid "" "The backtrace is incomplete, please make sure you provide the steps to " "reproduce." msgstr "बॅकट्रेस् अपूर्ण आहे, पुनःनिर्माण करण्यासाठी कृपया योग्य पद्धत पुरवण्याची खात्री करा." #: ../src/gui/CCReporterDialog.py:130 msgid "Reporting disabled, please fix the problems shown above." msgstr "रिपोर्टिंग बंद केले, कृपया वरील निर्देशीत अडचणींचे निवारण करा." #: ../src/gui/CCReporterDialog.py:132 msgid "Sends the report using the selected plugin." msgstr "नीवडलेल्या प्लगइनचा वापर करून अहवाल पाठवतो." #: ../src/gui/CCReporterDialog.py:398 msgid "" "No reporter plugin available for this type of crash.\n" "Please check abrt.conf." msgstr "" "या प्रकारच्या क्रॅशकरीता रिपोर्टर प्लगइन उपलब्ध नाही.\n" "कृपया abrt.conf तपासा." #: ../src/gui/CCReporterDialog.py:418 ../src/gui/CReporterAssistant.py:217 #: ../src/gui/PluginsSettingsDialog.py:169 #, python-format msgid "" "Cannot save plugin settings:\n" " %s" msgstr "" "प्लगइन संरचना साठवणे अशक्य:\n" " %s" #: ../src/gui/CCReporterDialog.py:448 ../src/gui/CReporterAssistant.py:247 #, python-format msgid "Configure %s options" msgstr "%s पर्याय संरचीत करा" #: ../src/gui/CCReporterDialog.py:498 ../src/gui/CReporterAssistant.py:861 msgid "" "Unable to get report!\n" "Is debuginfo missing?" msgstr "" "रिपोर्ट प्राप्त करण्यास अशक्य!\n" "debuginfo आढळले नाही?" #: ../src/gui/CCReporterDialog.py:527 ../src/gui/CReporterAssistant.py:414 #, python-format msgid "" "Reporting failed!\n" "%s" msgstr "" "रिपोर्टिंग अपयशी!\n" "%s" #: ../src/gui/CCReporterDialog.py:553 ../src/gui/CCReporterDialog.py:574 #: ../src/gui/CReporterAssistant.py:900 #, python-format msgid "Error acquiring the report: %s" msgstr "अहवाल प्राप्त करतेवेळी त्रुटी: %s" #: ../src/gui/ConfBackend.py:77 msgid "Cannot connect to the Gnome Keyring daemon." msgstr "Gnome Keyring डीमनशी जुळवणी करण्यास अशक्य." #. could happen if keyring daemon is running, but we run gui under #. user who is not the owner of the running session - using su #: ../src/gui/ConfBackend.py:83 msgid "Cannot get the default keyring." msgstr "पूर्वनिर्धारीत किरींग प्राप्त करणे अशक्य." #: ../src/gui/ConfBackend.py:102 ../src/gui/ConfBackend.py:118 msgid "" "Access to gnome-keyring has been denied, plugins settings will not be saved." msgstr "gnome-keyring करीता प्रवेश नकारले, प्लगइंस् संरचना साठवणे अशक्य." #. we tried 2 times, so giving up the authorization #: ../src/gui/ConfBackend.py:152 #, python-format msgid "" "Access to gnome-keyring has been denied, cannot load the settings for %s!" msgstr "gnome-keyring करीता प्रवेश नकारले, %s करीता संरचना लोड करणे शक्य नाही!" #: ../src/gui/ConfBackend.py:205 msgid "Access to gnome-keyring has been denied, cannot load settings." msgstr "gnome-keyring करीता प्रवेश नकारले, संरचना लोड करणे अशक्य." #: ../src/gui/CReporterAssistant.py:20 msgid "Crash info doesn't contain a backtrace" msgstr "क्रॅश माहितीत बॅकट्रेस आढळले नाही" #: ../src/gui/CReporterAssistant.py:296 #, python-format msgid "Rating is required by the %s plugin" msgstr "%s प्लगइन द्वारे गुणवत्ताश्रेणी आवश्यक आहे" #: ../src/gui/CReporterAssistant.py:298 msgid "Rating is not required by any plugin, skipping the check..." msgstr "कुठल्याही प्लगइनकरीता गुणवत्ताश्रेणी आवश्यक नाही, तपास वगळत आहे..." #: ../src/gui/CReporterAssistant.py:302 #, python-format msgid "Rating is %s" msgstr "गुणवत्ताश्रेणी %s आहे" #: ../src/gui/CReporterAssistant.py:305 msgid "Crashdump doesn't have rating => we suppose it's not required" msgstr "क्रॅशडम्पमध्ये गुणवत्ताश्रेणी आढळले नाही => गुणवत्ताश्रेणीची आवश्यकता नाही" #: ../src/gui/CReporterAssistant.py:310 msgid "You should check the backtrace for sensitive data." msgstr "संवेदनशील डाटाकरीता बॅकट्रेस तपासाणे आवश्यक आहे." #: ../src/gui/CReporterAssistant.py:311 msgid "You must agree with sending the backtrace." msgstr "बॅकट्रेस पाठण्याकरीता आपली मान्यता आवश्यक आहे." #: ../src/gui/CReporterAssistant.py:326 msgid "Reporting disabled because the backtrace is unusable." msgstr "बॅकट्रेस् वापरण्याजोगी नसल्यामुळे रिपोर्टिंग बंद केले." #: ../src/gui/CReporterAssistant.py:371 msgid "You did not provide any steps to reproduce." msgstr "पुनःनिर्माणकरीता तुम्ही पद्धती पुरवले नाही." #: ../src/gui/CReporterAssistant.py:385 msgid "You did not provide any comments." msgstr "तुम्ही कुठलेही टिपण्णी पुरवले नाही." #: ../src/gui/CReporterAssistant.py:466 #, python-format msgid "" "It looks like an application from the package %s has crashed on your " "system. It is a good idea to send a bug report about this issue. The report " "will provide software maintainers with information essential in figuring out " "how to provide a bug fix for you.\n" "\n" "Please review the information that follows and modify it as needed to ensure " "your bug report does not contain any sensitive data you would rather not " "share.\n" "\n" "Select where you would like to report the bug, and press 'Forward' to " "continue." msgstr "" "संकुल %s पासून तुमच्या प्रणालीवर ऍप्लिकेशन क्रॅश झाले, असे आढळले. या अडचणीविषयी " "कळवण्यासाठी बग अहवाल सादर करणे चांगले पर्याय आहे. रिपोर्ट सॉफ्टवेअर मेइन्टेनर्सला बगचे " "निवारण पुरवण्याबाबत आवश्यक माहिती पुरवेल.\n" "\n" "कृपया माहितीचे पुनरावलोकन करा व त्यास आवश्यकता प्रमाणे संपादित करून तुमच्या बग अहवालात " "कुठल्याही प्रकारची सार्वजणीकपणे उघडकीस न करण्याजोगी संवेदनशील माहिती नाही याची खात्री " "करा.\n" "\n" "बग कुठे कळवायचे त्याची नीवड करा, व पुढे जाण्यासाठी 'पुढे' दाबा." #: ../src/gui/CReporterAssistant.py:526 msgid "Only one reporter plugin is configured." msgstr "फक्त एकच रिपोर्टर प्लगइन संरचीत केले." #: ../src/gui/CReporterAssistant.py:532 msgid "Send a bug report" msgstr "बग अहवाल पाठवा" #: ../src/gui/CReporterAssistant.py:570 msgid "" "Below is the backtrace associated with your crash. A crash backtrace " "provides developers with details about how the crash happened, helping them " "track down the source of the problem.\n" "\n" "Please review the backtrace below and modify it as needed to ensure your bug " "report does not contain any sensitive data you would rather not share:" msgstr "" "खालील तुमच्या क्रॅशसह संबंधित बॅकट्रेश आहे. क्रॅश बॅकट्रेस् डेव्हलपर्स् यांना क्रॅश कसे झाले याविषयी " "तपशील पुरवतो, व अडचणीचे स्रोत शोधण्यास त्यांची मदत करतो.\n" "\n" "कृपया माहितीचे पुनरावलोकन करा व त्यास आवश्यकता प्रमाणे संपादित करून तुमच्या बग अहवालात " "कुठल्याही प्रकारची सार्वजणीकपणे उघडकीस न करण्याजोगी संवेदनशील माहिती नाही याची खात्री " "करा:" #: ../src/gui/CReporterAssistant.py:611 msgid "Refresh" msgstr "पुनः ताजे करा" #: ../src/gui/CReporterAssistant.py:613 msgid "Copy" msgstr "प्रत बनवा" #: ../src/gui/CReporterAssistant.py:619 msgid "I agree wi;;; ;;; ruby-mode.el - ;;; ;;; $Author$ ;;; $Date$ ;;; created at: Fri Feb 4 14:49:13 JST 1994 ;;; (defconst ruby-mode-revision "$Revision$") (defconst ruby-mode-version (progn (string-match "[0-9.]+" ruby-mode-revision) (substring ruby-mode-revision (match-beginning 0) (match-end 0)))) (defconst ruby-block-beg-re "class\\|module\\|def\\|if\\|unless\\|case\\|while\\|until\\|for\\|begin\\|do" ) (defconst ruby-non-block-do-re "\\(while\\|until\\|for\\|rescue\\)\\>" ) (defconst ruby-indent-beg-re "\\(\\s *\\(class\\|module\\|def\\)\\)\\|if\\|unless\\|case\\|while\\|until\\|for\\|begin" ) (defconst ruby-modifier-beg-re "if\\|unless\\|while\\|until" ) (defconst ruby-modifier-re (concat ruby-modifier-beg-re "\\|rescue") ) (defconst ruby-block-mid-re "then\\|else\\|elsif\\|when\\|rescue\\|ensure" ) (defconst ruby-block-op-re "and\\|or\\|not" ) (defconst ruby-block-hanging-re (concat ruby-modifier-beg-re "\\|" ruby-block-op-re) ) (defconst ruby-block-end-re "end") (defconst ruby-delimiter (concat "[?$/%(){}#\"'`.:]\\|<<\\|\\[\\|\\]\\|\\<\\(" ruby-block-beg-re "\\|" ruby-block-end-re "\\)\\>\\|^=begin") ) (defconst ruby-negative (concat "^[ \t]*\\(\\(" ruby-block-mid-re "\\)\\>\\|\\(" ruby-block-end-re "\\)\\>\\|}\\|\\]\\)") ) (defconst ruby-operator-chars "-,.+*/%&|^~=<>:") (defconst ruby-operator-re (concat "[" ruby-operator-chars "]")) (defconst ruby-symbol-chars "a-zA-Z0-9_") (defconst ruby-symbol-re (concat "[" ruby-symbol-chars "]")) (defvar ruby-mode-abbrev-table nil "Abbrev table in use in ruby-mode buffers.") (define-abbrev-table 'ruby-mode-abbrev-table ()) (defvar ruby-mode-map nil "Keymap used in ruby mode.") (if ruby-mode-map nil (setq ruby-mode-map (make-sparse-keymap)) (define-key ruby-mode-map "{" 'ruby-electric-brace) (define-key ruby-mode-map "}" 'ruby-electric-brace) (define-key ruby-mode-map "\e\C-a" 'ruby-beginning-of-defun) (define-key ruby-mode-map "\e\C-e" 'ruby-end-of-defun) (define-key ruby-mode-map "\e\C-b" 'ruby-backward-sexp) (define-key ruby-mode-map "\e\C-f" 'ruby-forward-sexp) (define-key ruby-mode-map "\e\C-p" 'ruby-beginning-of-block) (define-key ruby-mode-map "\e\C-n" 'ruby-end-of-block) (define-key ruby-mode-map "\e\C-h" 'ruby-mark-defun) (define-key ruby-mode-map "\e\C-q" 'ruby-indent-exp) (define-key ruby-mode-map "\t" 'ruby-indent-command) (define-key ruby-mode-map "\C-c\C-e" 'ruby-insert-end) (define-key ruby-mode-map "\C-j" 'ruby-reindent-then-newline-and-indent) (define-key ruby-mode-map "\C-m" 'newline)) (defvar ruby-mode-syntax-table nil "Syntax table in use in ruby-mode buffers.") (if ruby-mode-syntax-table () (setq ruby-mode-syntax-table (make-syntax-table)) (modify-syntax-entry ?\' "\"" ruby-mode-syntax-table) (modify-syntax-entry ?\" "\"" ruby-mode-syntax-table) (modify-syntax-entry ?\` "\"" ruby-mode-syntax-table) (modify-syntax-entry ?# "<" ruby-mode-syntax-table) (modify-syntax-entry ?\n ">" ruby-mode-syntax-table) (modify-syntax-entry ?\\ "\\" ruby-mode-syntax-table) (modify-syntax-entry ?$ "." ruby-mode-syntax-table) (modify-syntax-entry ?? "_" ruby-mode-syntax-table) (modify-syntax-entry ?_ "_" ruby-mode-syntax-table) (modify-syntax-entry ?< "." ruby-mode-syntax-table) (modify-syntax-entry ?> "." ruby-mode-syntax-table) (modify-syntax-entry ?& "." ruby-mode-syntax-table) (modify-syntax-entry ?| "." ruby-mode-syntax-table) (modify-syntax-entry ?% "." ruby-mode-syntax-table) (modify-syntax-entry ?= "." ruby-mode-syntax-table) (modify-syntax-entry ?/ "." ruby-mode-syntax-table) (modify-syntax-entry ?+ "." ruby-mode-syntax-table) (modify-syntax-entry ?* "." ruby-mode-syntax-table) (modify-syntax-entry ?- "." ruby-mode-syntax-table) (modify-syntax-entry ?\; "." ruby-mode-syntax-table) (modify-syntax-entry ?\( "()" ruby-mode-syntax-table) (modify-syntax-entry ?\) ")(" ruby-mode-syntax-table) (modify-syntax-entry ?\{ "(}" ruby-mode-syntax-table) (modify-syntax-entry ?\} "){" ruby-mode-syntax-table) (modify-syntax-entry ?\[ "(]" ruby-mode-syntax-table) (modify-syntax-entry ?\] ")[" ruby-mode-syntax-table) ) (defcustom ruby-indent-tabs-mode nil "*Indentation can insert tabs in ruby mode if this is non-nil." :type 'boolean :group 'ruby) (defcustom ruby-indent-level 2 "*Indentation of ruby statements." :type 'integer :group 'ruby) (defcustom ruby-comment-column 32 "*Indentation column of comments." :type 'integer :group 'ruby) (defcustom ruby-deep-arglist t "*Deep indent lists in parenthesis when non-nil. Also ignores spaces after parenthesis when 'space." :group 'ruby) (defcustom ruby-deep-indent-paren '(?\( t) "*Deep indent lists in parenthesis when non-nil. t means continuous line. Also ignores spaces after parenthesis when 'space." :group 'ruby) (defcustom ruby-deep-indent-paren-style 'space "Default deep indent style." :options '(t nil space) :group 'ruby) (eval-when-compile (require 'cl)) (defun ruby-imenu-create-index-in-block (prefix beg end) (let ((index-alist '()) (case-fold-search nil) name next pos decl sing) (goto-char beg) (while (re-search-forward "^\\s *\\(\\(class\\>\\(\\s *<<\\)?\\|module\\>\\)\\s *\\([^\(<\n ]+\\)\\|\\(def\\|alias\\)\\>\\s *\\([^\(\n ]+\\)\\)" end t) (setq sing (match-beginning 3)) (setq decl (match-string 5)) (setq next (match-end 0)) (setq name (or (match-string 4) (match-string 6))) (setq pos (match-beginning 0)) (cond ((string= "alias" decl) (if prefix (setq name (concat prefix name))) (push (cons name pos) index-alist)) ((string= "def" decl) (if prefix (setq name (cond ((string-match "^self\." name) (concat (substring prefix 0 -1) (substring name 4))) (t (concat prefix name))))) (push (cons name pos) index-alist) (ruby-accurate-end-of-block end)) (t (if (string= "self" name) (if prefix (setq name (substring prefix 0 -1))) (if prefix (setq name (concat (substring prefix 0 -1) "::" name))) (push (cons name pos) index-alist)) (ruby-accurate-end-of-block end) (setq beg (point)) (setq index-alist (nconc (ruby-imenu-create-index-in-block (concat name (if sing "." "#")) next beg) index-alist)) (goto-char beg)))) index-alist)) (defun ruby-imenu-create-index () (nreverse (ruby-imenu-create-index-in-block nil (point-min) nil))) (defun ruby-accurate-end-of-block (&optional end) (let (state) (or end (setq end (point-max))) (while (and (setq state (apply 'ruby-parse-partial end state)) (>= (nth 2 state) 0) (< (point) end))))) (defun ruby-mode-variables () (set-syntax-table ruby-mode-syntax-table) (setq local-abbrev-table ruby-mode-abbrev-table) (make-local-variable 'indent-line-function) (setq indent-line-function 'ruby-indent-line) (make-local-variable 'require-final-newline) (setq require-final-newline t) (make-variable-buffer-local 'comment-start) (setq comment-start "# ") (make-variable-buffer-local 'comment-end) (setq comment-end "") (make-variable-buffer-local 'comment-column) (setq comment-column ruby-comment-column) (make-variable-buffer-local 'comment-start-skip) (setq comment-start-skip "\\(^\\|\\s-\\);?#+ *") (setq indent-tabs-mode ruby-indent-tabs-mode) (make-local-variable 'parse-sexp-ignore-comments) (setq parse-sexp-ignore-comments t) (make-local-variable 'paragraph-start) (setq paragraph-start (concat "$\\|" page-delimiter)) (make-local-variable 'paragraph-separate) (setq paragraph-separate paragraph-start) (make-local-variable 'paragraph-ignore-fill-prefix) (setq paragraph-ignore-fill-prefix t)) ;;;###autoload (defun ruby-mode () "Major mode for editing ruby scripts. \\[ruby-indent-command] properly indents subexpressions of multi-line class, module, def, if, while, for, do, and case statements, taking nesting into account. The variable ruby-indent-level controls the amount of indentation. \\{ruby-mode-map}" (interactive) (kill-all-local-variables) (use-local-map ruby-mode-map) (setq mode-name "Ruby") (setq major-mode 'ruby-mode) (ruby-mode-variables) (make-local-variable 'imenu-create-index-function) (setq imenu-create-index-function 'ruby-imenu-create-index) (make-local-variable 'add-log-current-defun-function) (setq add-log-current-defun-function 'ruby-add-log-current-method) (run-hooks 'ruby-mode-hook)) (defun ruby-current-indentation () (save-excursion (beginning-of-line) (back-to-indentation) (current-column))) (defun ruby-indent-line (&optional flag) "Correct indentation of the current ruby line." (ruby-indent-to (ruby-calculate-indent))) (defun ruby-indent-command () (interactive) (ruby-indent-line t)) (defun ruby-indent-to (x) (if x (let (shift top beg) (and (< x 0) (error "invalid nest")) (setq shift (current-column)) (beginning-of-line) (setq beg (point)) (back-to-indentation) (setq top (current-column)) (skip-chars-backward " \t") (if (>= shift top) (setq shift (- shift top)) (setq shift 0)) (if (and (bolp) (= x top)) (move-to-column (+ x shift)) (move-to-column top) (delete-region beg (point)) (beginning-of-line) (indent-to x) (move-to-column (+ x shift)))))) (defun ruby-special-char-p (&optional pnt) (let ((c (char-before (or pnt (point))))) (cond ((or (eq c ??) (eq c ?$))) ((eq c ?\\) (eq (char-before (1- (or pnt (point)))) ??))))) (defun ruby-expr-beg (&optional option) (save-excursion (store-match-data nil) (let ((space (skip-chars-backward " \t"))) (cond ((bolp) t) ((progn (forward-char -1) (and (looking-at "\\?") (or (eq (char-syntax (char-before (point))) ?w) (ruby-special-char-p)))) nil) ((or (looking-at ruby-operator-re) (looking-at "[\\[({,;]") (and (or (not (eq option 'heredoc)) (< space 0)) (looking-at "[!?]") (or (not (eq option 'modifier)) (bolp) (save-excursion (forward-char -1) (looking-at "\\Sw")))) (and (looking-at ruby-symbol-re) (skip-chars-backward ruby-symbol-chars) (cond ((or (looking-at ruby-block-beg-re) (looking-at ruby-block-op-re) (looking-at ruby-block-mid-re)) (goto-char (match-end 0)) (looking-at "\\>")) ((eq option 'expr-qstr) (looking-at "[a-zA-Z][a-zA-z0-9_]* +%[^ \t]")) ((eq option 'expr-re) (looking-at "[a-zA-Z][a-zA-z0-9_]* +/[^ \t]")) (t nil))))))))) (defun ruby-forward-string (term &optional end no-error expand) (let ((n 1) (c (string-to-char term)) (re (if expand (concat "[^\\]\\(\\\\\\\\\\)*\\([" term "]\\|\\(#{\\)\\)") (concat "[^\\]\\(\\\\\\\\\\)*[" term "]")))) (while (and (re-search-forward re end no-error) (if (match-beginning 3) (ruby-forward-string "}{" end no-error nil) (> (setq n (if (eq (char-before (point)) c) (1- n) (1+ n))) 0))) (forward-char -1)) (cond ((zerop n)) (no-error nil) ((error "unterminated string"))))) (defun ruby-deep-indent-paren-p (c) (cond ((listp ruby-deep-indent-paren) (let ((deep (assoc c ruby-deep-indent-paren))) (cond (deep (or (cdr deep) ruby-deep-indent-paren-style)) ((memq c ruby-deep-indent-paren) ruby-deep-indent-paren-style)))) ((eq c ruby-deep-indent-paren) ruby-deep-indent-paren-style) ((eq c ?\( ) ruby-deep-arglist))) (defun ruby-parse-partial (&optional end in-string nest depth pcol indent) (or depth (setq depth 0)) (or indent (setq indent 0)) (when (re-search-forward ruby-delimiter end 'move) (let ((pnt (point)) w re expand) (goto-char (match-beginning 0)) (cond ((and (memq (char-before) '(?@ ?$)) (looking-at "\\sw")) (goto-char pnt)) ((looking-at "[\"`]") ;skip string (cond ((and (not (eobp)) (ruby-forward-string (buffer-substring (point) (1+ (point))) end t t)) nil) (t (setq in-string (point)) (goto-char end)))) ((looking-at "'") (cond ((and (not (eobp)) (re-search-forward "[^\\]\\(\\\\\\\\\\)*'" end t)) nil) (t (setq in-string (point)) (goto-char end)))) ((looking-at "/") (cond ((and (not (eobp)) (ruby-expr-beg 'expr-re)) (if (ruby-forward-string "/" end t t) nil (setq in-string (point)) (goto-char end))) (t (goto-char pnt)))) ((looking-at "%") (cond ((and (not (eobp)) (ruby-expr-beg 'expr-qstr) (not (looking-at "%=")) (looking-at "%[QqrxWw]?\\(.\\)")) (goto-char (match-beginning 1)) (setq expand (not (memq (char-before) '(?q ?w)))) (setq w (match-string 1)) (cond ((string= w "[") (setq re "][")) ((string= w "{") (setq re "}{")) ((string= w "(") (setq re ")(")) ((string= w "<") (setq re "><")) ((and expand (string= w "\\")) (setq w (concat "\\" w)))) (unless (cond (re (ruby-forward-string re end t expand)) (expand (ruby-forward-string w end t t)) (t (re-search-forward (if (string= w "\\") "\\\\[^\\]*\\\\" (concat "[^\\]\\(\\\\\\\\\\)*" w)) end t))) (setq in-string (point)) (goto-char end))) (t (goto-char pnt)))) ((looking-at "\\?") ;skip ?char (cond ((and (ruby-expr-beg) (looking-at "?\\(\\\\C-\\|\\\\M-\\)*\\\\?.")) (goto-char (match-end 0))) (t (goto-char pnt)))) ((looking-at "\\$") ;skip $char (goto-char pnt) (forward-char 1)) ((looking-at "#") ;skip comment (forward-line 1) (goto-char (point)) ) ((looking-at "[\\[{(]") (let ((deep (ruby-deep-indent-paren-p (char-after)))) (if (and deep (or (not (eq (char-after) ?\{)) (ruby-expr-beg))) (progn (and (eq deep 'space) (looking-at ".\\s +[^# \t\n]") (setq pnt (1- (match-end 0)))) (setq nest (cons (cons (char-after (point)) pnt) nest)) (setq pcol (cons (cons pnt depth) pcol)) (setq depth 0)) (setq nest (cons (cons (char-after (point)) pnt) nest)) (setq depth (1+ depth)))) (goto-char pnt) ) ((looking-at "[])}]") (if (ruby-deep-indent-paren-p (matching-paren (char-after))) (setq depth (cdr (car pcol)) pcol (cdr pcol)) (setq depth (1- depth))) (setq nest (cdr nest)) (goto-char pnt)) ((looking-at ruby-block-end-re) (if (or (and (not (bolp)) (progn (forward-char -1) (setq w (char-after (point))) (or (eq ?_ w) (eq ?. w)))) (progn (goto-char pnt) (setq w (char-after (point))) (or (eq ?_ w) (eq ?! w) (eq ?? w)))) nil (setq nest (cdr nest)) (setq depth (1- depth))) (goto-char pnt)) ((looking-at "def\\s +[^(\n;]*") (if (or (bolp) (progn (forward-char -1) (not (eq ?_ (char-after (point)))))) (progn (setq nest (cons (cons nil pnt) nest)) (setq depth (1+ depth)))) (goto-char (match-end 0))) ((looking-at ruby-block-beg-re) (and (save-match-data (or (not (looking-at "do\\>[^_]")) (save-excursion (back-to-indentation) (not (looking-at ruby-non-block-do-re))))) (or (bolp) (progn (forward-char -1) (setq w (char-after (point))) (not (or (eq ?_ w) (eq ?. w))))) (goto-char pnt) (setq w (char-after (point))) (not (eq ?_ w)) (not (eq ?! w)) (not (eq ?? w)) (skip-chars-forward " \t") (goto-char (match-beginning 0)) (or (not (looking-at ruby-modifier-re)) (ruby-expr-beg 'modifier)) (goto-char pnt) (setq nest (cons (cons nil pnt) nest)) (setq depth (1+ depth))) (goto-char pnt)) ((looking-at ":\\([a-zA-Z_][a-zA-Z_0-9]*\\)?") (goto-char (match-end 0))) ((or (looking-at "\\.\\.\\.?") (looking-at "\\.[0-9]+") (looking-at "\\.[a-zA-Z_0-9]+") (looking-at "\\.")) (goto-char (match-end 0))) ((looking-at "^=begin") (if (re-search-forward "^=end" end t) (forward-line 1) (setq in-string (match-end 0)) (goto-char end))) ((looking-at "<<") (cond ((and (ruby-expr-beg 'heredoc) (looking-at "<<\\(-\\)?\\(\\([\"'`]\\)\\([^\n]+?\\)\\3\\|\\sw+\\)")) (setq re (regexp-quote (or (match-string 4) (match-string 2)))) (if (match-beginning 1) (setq re (concat "\\s *" re))) (if (re-search-forward (concat "^" re "$") end 'move) (forward-line 1) (setq in-string (match-end 0)) (goto-char end))) (t (goto-char pnt)))) ((looking-at "^__END__$") (goto-char pnt)) (t (error (format "bad string %s" (buffer-substring (point) pnt) )))))) (list in-string nest depth pcol)) (defun ruby-parse-region (start end) (let (state) (save-excursion (if start (goto-char start) (ruby-beginning-of-indent)) (save-restriction (narrow-to-region (point) end) (while (and (> end (point)) (setq state (apply 'ruby-parse-partial end state)))))) (list (nth 0 state) ; in-string (car (nth 1 state)) ; nest (nth 2 state) ; depth (car (car (nth 3 state))) ; pcol ;(car (nth 5 state)) ; indent ))) (defun ruby-indent-size (pos nest) (+ pos (* (or nest 1) ruby-indent-level))) (defconst ruby-assign-re "\\s *\\(&&\\|||\\|<<\\|>>\\|[-+*/%&|^]\\)?=\\s *") (defun ruby-beginning-of-arg (start end) (save-restriction (narrow-to-region start (1+ end)) (goto-char start) (let ((beg t) arg) (while (progn (skip-chars-forward " \t\n") (and (not (eobp)) (= (ruby-forward-sexp) 0))) (skip-syntax-forward " ") (cond ((looking-at ",") (forward-char) (setq arg start beg t)) ((ruby-expr-beg) t) ((looking-at "=>\\s *") (goto-char (match-end 0)) (setq arg nil beg nil)) ((looking-at ruby-assign-re) (goto-char (match-end 0)) (if beg (setq beg nil arg (point)))) ((looking-at ruby-operator-re) (goto-char (match-end 0)) (if beg (setq beg nil arg (match-end 0)))) ((not (eq (char-syntax (char-after)) ?\()) (setq start (point))))) (goto-char (or arg start))))) (defun ruby-calculate-indent (&optional parse-start) (save-excursion (beginning-of-line) (let ((indent-point (point)) (case-fold-search nil) state bol eol begin (paren (progn (skip-syntax-forward " ") (and (char-after) (matching-paren (char-after))))) (indent 0)) (if parse-start (goto-char parse-start) (ruby-beginning-of-indent) (setq parse-start (point))) (back-to-indentation) (setq indent (current-column)) (setq state (ruby-parse-region parse-start indent-point)) (cond ((nth 0 state) ; within string (setq indent nil)) ; do nothing ((car (nth 1 state)) ; in paren (cond ((and (eq (car (nth 1 state)) ?\{) ; brace block (save-excursion (goto-char (1- (cdr (nth 1 state)))) (not (ruby-expr-beg)))) (setq paren nil) (back-to-indentation) (setq indent (ruby-indent-size (current-column) (nth 2 state)))) (t (goto-char (setq begin (cdr (nth 1 state)))) (let ((deep (ruby-deep-indent-paren-p (car (nth 1 state))))) (if deep (cond ((and (eq deep t) (eq (car (nth 1 state)) paren)) (skip-syntax-backward " ") (setq indent (1- (current-column)))) ((let ((s (ruby-parse-region (point) indent-point))) (and (nth 2 s) (> (nth 2 s) 0) (or (goto-char (cdr (nth 1 s))) t))) (forward-word -1) (setq indent (ruby-indent-size (current-column) (nth 2 state)))) (t (setq indent (current-column)) (cond ((eq deep 'space)) (paren (setq indent (1- indent))) (t (setq indent (ruby-indent-size (1- indent) 1)))))) (if (nth 3 state) (goto-char (nth 3 state)) (goto-char parse-start) (back-to-indentation)) (setq indent (ruby-indent-size (current-column) (nth 2 state)))))))) ((and (nth 2 state) (> (nth 2 state) 0)) ; in nest (if (null (cdr (nth 1 state))) (error "invalid nest")) (goto-char (cdr (nth 1 state))) (forward-word -1) ; skip back a keyword (setq begin (point)) (cond ((looking-at "do\\>[^_]") ; iter block is a special case (if (nth 3 state) (goto-char (nth 3 state)) (goto-char parse-start) (back-to-indentation)) (setq indent (ruby-indent-size (current-column) (nth 2 state)))) (t (setq indent (+ (current-column) ruby-indent-level))))) ((and (nth 2 state) (< (nth 2 state) 0)) ; in negative nest (setq indent (ruby-indent-size (current-column) (nth 2 state))))) (when indent (goto-char indent-point) (end-of-line) (setq eol (point)) (beginning-of-line) (cond ((and (not (ruby-deep-indent-paren-p paren)) (re-search-forward ruby-negative eol t)) (and (not (eq ?_ (char-after (match-end 0)))) (setq indent (- indent ruby-indent-level)))) ;;operator terminated lines ((and (save-excursion (beginning-of-line) (not (bobp))) (or (ruby-deep-indent-paren-p t) (null (car (nth 1 state))))) ;; goto beginning of non-empty no-comment line (let (end done) (while (not done) (skip-chars-backward " \t\n") (setq end (point)) (beginning-of-line) (if (re-search-forward "^\\s *#" end t) (beginning-of-line) (setq done t)))) (setq bol (point)) (end-of-line) (skip-chars-backward " \t") (let ((pos (point))) (while (and (re-search-backward "#" bol t) (ruby-special-char-p)) (forward-char -1)) (skip-chars-backward " \t") (and (setq state (ruby-parse-region parse-start (point))) (nth 0 state) (setq begin (nth 1 state)) (goto-char pos))) (or (bobp) (forward-char -1)) (and (or (and (looking-at ruby-symbol-re) (skip-chars-backward ruby-symbol-chars) (looking-at ruby-block-hanging-re) (not (eq (point) (nth 3 state))) (save-excursion (goto-char (match-end 0)) (not (looking-at "[a-z_]")))) (and (looking-at ruby-operator-re) (not (ruby-special-char-p)) (or (not (eq ?/ (char-after (point)))) (null (nth 0 (ruby-parse-region parse-start (point))))) (or (not (eq ?| (char-after (point)))) (save-excursion (or (eolp) (forward-char -1)) (cond ((search-backward "|" nil t) (skip-chars-backward " \t\n") (and (not (eolp)) (progn (forward-char -1) (not (looking-at "{"))) (progn (forward-word -1) (not (looking-at "do\\>[^_]"))))) (t t)))))) (setq indent (cond ((and (not (looking-at ruby-block-hanging-re)) (eq (ruby-deep-indent-paren-p t) 'space) (not (bobp))) (ruby-beginning-of-arg (or begin parse-start) (point)) (current-column)) (t (+ indent ruby-indent-level)))))))) indent))) (defun ruby-electric-brace (arg) (interactive "P") (insert-char last-command-char 1) (ruby-indent-line t) (delete-char -1) (self-insert-command (prefix-numeric-value arg))) (eval-when-compile (defmacro defun-region-command (func args &rest body) (let ((intr (car body))) (when (featurep 'xemacs) (if (stringp intr) (setq intr (cadr body))) (and (eq (car intr) 'interactive) (setq intr (cdr intr)) (setcar intr (concat "_" (car intr))))) (cons 'defun (cons func (cons args body)))))) (defun-region-command ruby-beginning-of-defun (&optional arg) "Move backward to next beginning-of-defun. With argument, do this that many times. Returns t unless search stops due to end of buffer." (interactive "p") (and (re-search-backward (concat "^\\(" ruby-block-beg-re "\\)\\b") nil 'move (or arg 1)) (progn (beginning-of-line) t))) (defun ruby-beginning-of-indent () (and (re-search-backward (concat "^\\(" ruby-indent-beg-re "\\)\\b") nil 'move) (progn (beginning-of-line) t))) (defun-region-command ruby-end-of-defun (&optional arg) "Move forward to next end of defun. An end of a defun is found by moving forward from the beginning of one." (interactive "p") (and (re-search-forward (concat "^\\(" ruby-block-end-re "\\)\\($\\|\\b[^_]\\)") nil 'move (or arg 1)) (progn (beginning-of-line) t)) (forward-line 1)) (defun ruby-move-to-block (n) (let (start pos done down) (setq start (ruby-calculate-indent)) (setq down (looking-at (if (< n 0) ruby-block-end-re ruby-block-beg-re))) (while (and (not done) (not (if (< n 0) (bobp) (eobp)))) (forward-line n) (cond ((looking-at "^\\s *$")) ((looking-at "^\\s *#")) ((and (> n 0) (looking-at "^=begin\\>")) (re-search-forward "^=end\\>")) ((and (< n 0) (looking-at "^=end\\>")) (re-search-backward "^=begin\\>")) (t (setq pos (current-indentation)) (cond ((< start pos) (setq down t)) ((and down (= pos start)) (setq done t)) ((> start pos) (setq done t))))) (if done (progn (back-to-indentation) (if (looking-at ruby-block-mid-re) (setq done nil)))))) (back-to-indentation)) (defun-region-command ruby-beginning-of-block (&optional arg) "Move backward to next beginning-of-block" (interactive "p") (ruby-move-to-block (- (or arg 1)))) (defun-region-command ruby-end-of-block (&optional arg) "Move forward to next beginning-of-block" (interactive "p") (ruby-move-to-block (or arg 1))) (defun-region-command ruby-forward-sexp (&optional cnt) (interactive "p") (if (and (numberp cnt) (< cnt 0)) (ruby-backward-sexp (- cnt)) (let ((i (or cnt 1))) (condition-case nil (while (> i 0) (skip-syntax-forward " ") (cond ((looking-at "\\?\\(\\\\[CM]-\\)*\\\\?\\S ") (goto-char (match-end 0))) ((progn (skip-chars-forward ",.:;|&^~=!?\\+\\-\\*") (looking-at "\\s(")) (goto-char (scan-sexps (point) 1))) ((looking-at ruby-block-beg-re) (ruby-end-of-block) (forward-word 1)) ((looking-at "\\(\\$\\|@@?\\)?\\sw") (while (progn (while (progn (forward-word 1) (looking-at "_"))) (cond ((looking-at "::") (forward-char 2) t) ((> (skip-chars-forward ".") 0)) ((looking-at "\\?\\|!\\(=[~=>]\\|[^~=]\\)") (forward-char 1) nil))))) ((let (state expr) (while (progn (setq expr (or expr (ruby-expr-beg) (looking-at "%\\sw?\\Sw\\|[\"'`/]"))) (nth 1 (setq state (apply 'ruby-parse-partial nil state)))) (setq expr t) (skip-chars-forward "<")) (not expr)))) (setq i (1- i))) ((error) (forward-word 1))) i))) (defun-region-command ruby-backward-sexp (&optional cnt) (interactive "p") (if (and (numberp cnt) (< cnt 0)) (ruby-forward-sexp (- cnt)) (let ((i (or cnt 1))) (condition-case nil (while (> i 0) (skip-chars-backward " \t\n,.:;|&^~=!?\\+\\-\\*") (forward-char -1) (cond ((looking-at "\\s)") (goto-char (scan-sexps (1+ (point)) -1)) (case (char-before) (?% (forward-char -1)) ('(?q ?Q ?w ?W ?r ?x) (if (eq (char-before (1- (point))) ?%) (forward-char -2)))) nil) ((looking-at "\\s\"\\|\\\\\\S_") (let ((c (char-to-string (char-before (match-end 0))))) (while (and (search-backward c) (oddp (skip-chars-backward "\\"))))) nil) ((looking-at "\\s.\\|\\s\\") (if (ruby-special-char-p) (forward-char -1))) ((looking-at "\\s(") nil) (t (forward-char 1) (while (progn (forward-word -1) (case (char-before) (?_ t) (?. (forward-char -1) t) ((?$ ?@) (forward-char -1) (and (eq (char-before) (char-after)) (forward-char -1))) (?: (forward-char -1) (eq (char-before) :))))) (if (looking-at ruby-block-end-re) (ruby-beginning-of-block)) nil)) (setq i (1- i))) ((error))) i))) (defun ruby-reindent-then-newline-and-indent () (interactive "*") (newline) (save-excursion (end-of-line 0) (indent-according-to-mode) (delete-region (point) (progn (skip-chars-backward " \t") (point)))) (indent-according-to-mode)) (fset 'ruby-encomment-region (symbol-function 'comment-region)) (defun ruby-decomment-region (beg end) (interactive "r") (save-excursion (goto-char beg) (while (re-search-forward "^\\([ \t]*\\)#" end t) (replace-match "\\1" nil nil) (save-excursion (ruby-indent-line))))) (defun ruby-insert-end () (interactive) (insert "end") (ruby-indent-line t) (end-of-line)) (defun ruby-mark-defun () "Put mark at end of this Ruby function, point at beginning." (interactive) (push-mark (point)) (ruby-end-of-defun) (push-mark (point) nil t) (ruby-beginning-of-defun) (re-search-backward "^\n" (- (point) 1) t)) (defun ruby-indent-exp (&optional shutup-p) "Indent each line in the balanced expression following point syntactically. If optional SHUTUP-P is non-nil, no errors are signalled if no balanced expression is found." (interactive "*P") (let ((here (point-marker)) start top column (nest t)) (set-marker-insertion-type here t) (unwind-protect (progn (beginning-of-line) (setq start (point) top (current-indentation)) (while (and (not (eobp)) (progn (setq column (ruby-calculate-indent start)) (cond ((> column top) (setq nest t)) ((and (= column top) nest) (setq nest nil) t)))) (ruby-indent-to column) (beginning-of-line 2))) (goto-char here) (set-marker here nil)))) (defun ruby-add-log-current-method () "Return current method string." (condition-case nil (save-excursion (let ((mlist nil) (indent 0)) ;; get current method (or class/module) (if (re-search-backward (concat "^[ \t]*\\(def\\|class\\|module\\)[ \t]+" "\\(" ruby-symbol-re "+\\)") nil t) (progn (setq mlist (list (match-string 2))) (goto-char (match-beginning 1)) (setq indent (current-column)) (beginning-of-line))) ;; nest class/module (while (and (> indent 0) (re-search-backward (concat "^[ \t]*\\(class\\|module\\)[ \t]+" "\\([A-Z]" ruby-symbol-re "+\\)") nil t)) (goto-char (match-beginning 1)) (if (< (current-column) indent) (progn (setq mlist (cons (match-string 2) mlist)) (setq indent (current-column)) (beginning-of-line)))) ;; generate string (if (consp mlist) (mapconcat (function identity) mlist "::") nil))))) (cond ((featurep 'font-lock) (or (boundp 'font-lock-variable-name-face) (setq font-lock-variable-name-face font-lock-type-face)) (setq ruby-font-lock-syntactic-keywords '( ;; #{ }, #$hoge, #@foo are not comments ("\\(#\\)[{$@]" 1 (1 . nil)) ;; the last $', $", $` in the respective string is not variable ;; the last ?', ?", ?` in the respective string is not ascii code ("\\(^\\|[\[ \t\n<+\(,=]\\)\\(['\"`]\\)\\(\\\\.\\|\\2\\|[^'\"`\n\\\\]\\)*\\\\?[?$]\\(\\2\\)" (2 (7 . nil)) (4 (7 . nil))) ;; $' $" $` .... are variables ;; ?' ?" ?` are ascii codes ("\\(^\\|[^\\\\]\\)\\(\\\\\\\\\\)*[?$]\\([#\"'`]\\)" 3 (1 . nil)) ;; regexps ("\\(^\\|[=(,~?:;]\\|\\(^\\|\\s \\)\\(if\\|elsif\\|unless\\|while\\|until\\|when\\|and\\|or\\|&&\\|||\\)\\|g?sub!?\\|scan\\|split!?\\)\\s *\\(/\\)[^/\n\\\\]*\\(\\\\.[^/\n\\\\]*\\)*\\(/\\)" (4 (7 . ?/)) (6 (7 . ?/))) ;; %Q!...! ("\\(^\\|[[ \t\n<+(,=]\\)%[xrqQwW]?\\([^<[{(a-zA-Z0-9 \n]\\)[^\n\\\\]*\\(\\\\.[^\n\\\\]*\\)*\\(\\2\\)" (2 (7 . nil)) (4 (7 . nil))) ("^\\(=\\)begin\\(\\s \\|$\\)" 1 (7 . nil)) ("^\\(=\\)end\\(\\s \\|$\\)" 1 (7 . nil)))) (cond ((featurep 'xemacs) (put 'ruby-mode 'font-lock-defaults '((ruby-font-lock-keywords) nil nil nil beginning-of-line (font-lock-syntactic-keywords . ruby-font-lock-syntactic-keywords)))) (t (add-hook 'ruby-mode-hook '(lambda () (make-local-variable 'font-lock-defaults) (make-local-variable 'font-lock-keywords) (make-local-variable 'font-lock-syntax-table) (make-local-variable 'font-lock-syntactic-keywords) (setq font-lock-defaults '((ruby-font-lock-keywords) nil nil)) (setq font-lock-keywords ruby-font-lock-keywords) (setq font-lock-syntax-table ruby-font-lock-syntax-table) (setq font-lock-syntactic-keywords ruby-font-lock-syntactic-keywords))))) (defun ruby-font-lock-docs (limit) (if (re-search-forward "^=begin\\(\\s \\|$\\)" limit t) (let (beg) (beginning-of-line) (setq beg (point)) (forward-line 1) (if (re-search-forward "^=end\\(\\s \\|$\\)" limit t) (progn (set-match-data (list beg (point))) t))))) (defun ruby-font-lock-maybe-docs (limit) (let (beg) (save-excursion (if (and (re-search-backward "^=\\(begin\\|end\\)\\(\\s \\|$\\)" nil t) (string= (match-string 1) "begin")) (progn (beginning-of-line) (setq beg (point))))) (if (and beg (and (re-search-forward "^=\\(begin\\|end\\)\\(\\s \\|$\\)" nil t) (string= (match-string 1) "end"))) (progn (set-match-data (list beg (point))) t) nil))) (defvar ruby-font-lock-syntax-table (let* ((tbl (copy-syntax-table ruby-mode-syntax-table))) (modify-syntax-entry ?_ "w" tbl) tbl)) (defvar ruby-font-lock-keywords (list ;; functions '("^\\s *def\\s +\\([^( \t\n]+\\)" 1 font-lock-function-name-face) ;; keywords (cons (concat "\\(^\\|[^_:.@$]\\|\\.\\.\\)\\b\\(defined\\?\\|\\(" (mapconcat 'identity '("alias" "and" "begin" "break" "case" "catch" "class" "def" "do" "elsif" "else" "fail" "ensure" "for" "end" "if" "in" "module" "next" "not" "or" "raise" "redo" "rescue" "retry" "return" "then" "throw" "super" "unless" "undef" "until" "when" "while" "yield" ) "\\|") "\\)\\>\\)") 2) ;; variables '("\\(^\\|[^_:.@$]\\|\\.\\.\\)\\b\\(nil\\|self\\|true\\|false\\)\\>" 2 font-lock-variable-name-face) ;; variables '("\\(\\$\\([^a-zA-Z0-9 \n]\\|[0-9]\\)\\)\\W" 1 font-lock-variable-name-face) '("\\(\\$\\|@\\|@@\\)\\(\\w\\|_\\)+" 0 font-lock-variable-name-face) ;; embedded document '(ruby-font-lock-docs 0 font-lock-comment-face t) '(ruby-font-lock-maybe-docs 0 font-lock-comment-face t) ;; constants '("\\(^\\|[^_]\\)\\b\\([A-Z]+\\(\\w\\|_\\)*\\)" 2 font-lock-type-face) ;; symbols '("\\(^\\|[^:]\\)\\(:\\([-+~]@?\\|[/%&|^`]\\|\\*\\*?\\|<\\(<\\|=>?\\)?\\|>[>=]?\\|===?\\|=~\\|\\[\\]=?\\|\\(\\w\\|_\\)+\\([!?=]\\|\\b_*\\)\\|#{[^}\n\\\\]*\\(\\\\.[^}\n\\\\]*\\)*}\\)\\)" 2 font-lock-reference-face) ;; expression expansion '("#\\({[^}\n\\\\]*\\(\\\\.[^}\n\\\\]*\\)*}\\|\\(\\$\\|@\\|@@\\)\\(\\w\\|_\\)+\\)" 0 font-lock-variable-name-face t) ;; warn lower camel case ;'("\\<[a-z]+[a-z0-9]*[A-Z][A-Za-z0-9]*\\([!?]?\\|\\>\\)" ; 0 font-lock-warning-face) ) "*Additional expressions to highlight in ruby mode.")) ((featurep 'hilit19) (hilit-set-mode-patterns 'ruby-mode '(("[^$\\?]\\(\"[^\\\"]*\\(\\\\\\(.\\|\n\\)[^\\\"]*\\)*\"\\)" 1 string) ("[^$\\?]\\('[^\\']*\\(\\\\\\(.\\|\n\\)[^\\']*\\)*'\\)" 1 string) ("[^$\\?]\\(`[^\\`]*\\(\\\\\\(.\\|\n\\)[^\\`]*\\)*`\\)" 1 string) ("^\\s *#.*$" nil comment) ("[^$@?\\]\\(#[^$@{\n].*$\\)" 1 comment) ("[^a-zA-Z_]\\(\\?\\(\\\\[CM]-\\)*.\\)" 1 string) ("^\\s *\\(require\\|load\\).*$" nil include) ("^\\s *\\(include\\|alias\\|undef\\).*$" nil decl) ("^\\s *\\<\\(class\\|def\\|module\\)\\>" "[)\n;]" defun) ("[^_]\\<\\(begin\\|case\\|else\\|elsif\\|end\\|ensure\\|for\\|if\\|unless\\|rescue\\|then\\|when\\|while\\|until\\|do\\|yield\\)\\>\\([^_]\\|$\\)" 1 defun) ("[^_]\\<\\(and\\|break\\|next\\|raise\\|fail\\|in\\|not\\|or\\|redo\\|retry\\|return\\|super\\|yield\\|catch\\|throw\\|self\\|nil\\)\\>\\([^_]\\|$\\)" 1 keyword) ("\\$\\(.\\|\\sw+\\)" nil type) ("[$@].[a-zA-Z_0-9]*" nil struct) ("^__END__" nil label)))) ) (provide 'ruby-mode)